Merge pull request #2066 from wbkd/feature/edgeUpdateWithMoreInfo-1961
Feature/edge update with more info 1961
This commit is contained in:
@@ -11,6 +11,7 @@ import ReactFlow, {
|
|||||||
Node,
|
Node,
|
||||||
NodeChange,
|
NodeChange,
|
||||||
EdgeChange,
|
EdgeChange,
|
||||||
|
HandleType,
|
||||||
} from 'react-flow-renderer';
|
} from 'react-flow-renderer';
|
||||||
|
|
||||||
const initialNodes: Node[] = [
|
const initialNodes: Node[] = [
|
||||||
@@ -54,8 +55,10 @@ const initialNodes: Node[] = [
|
|||||||
const initialEdges = [{ id: 'e1-2', source: '1', target: '2', label: 'This is a draggable edge' }];
|
const initialEdges = [{ id: 'e1-2', source: '1', target: '2', label: 'This is a draggable edge' }];
|
||||||
|
|
||||||
const onInit = (reactFlowInstance: ReactFlowInstance) => reactFlowInstance.fitView();
|
const onInit = (reactFlowInstance: ReactFlowInstance) => reactFlowInstance.fitView();
|
||||||
const onEdgeUpdateStart = (_: React.MouseEvent, edge: Edge) => console.log('start update', edge);
|
const onEdgeUpdateStart = (_: React.MouseEvent, edge: Edge, handleType: HandleType) =>
|
||||||
const onEdgeUpdateEnd = (_: MouseEvent, edge: Edge) => console.log('end update', edge);
|
console.log(`start update ${handleType} handle`, edge);
|
||||||
|
const onEdgeUpdateEnd = (_: MouseEvent, edge: Edge, handleType: HandleType) =>
|
||||||
|
console.log(`end update ${handleType} handle`, edge);
|
||||||
|
|
||||||
const UpdatableEdge = () => {
|
const UpdatableEdge = () => {
|
||||||
const [nodes, setNodes] = useState<Node[]>(initialNodes);
|
const [nodes, setNodes] = useState<Node[]>(initialNodes);
|
||||||
|
|||||||
@@ -141,13 +141,14 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
(event: React.MouseEvent<SVGGElement, MouseEvent>, isSourceHandle: boolean) => {
|
(event: React.MouseEvent<SVGGElement, MouseEvent>, isSourceHandle: boolean) => {
|
||||||
const nodeId = isSourceHandle ? target : source;
|
const nodeId = isSourceHandle ? target : source;
|
||||||
const handleId = isSourceHandle ? targetHandleId : sourceHandleId;
|
const handleId = isSourceHandle ? targetHandleId : sourceHandleId;
|
||||||
|
const handleType = isSourceHandle ? 'target' : 'source';
|
||||||
const isValidConnection = () => true;
|
const isValidConnection = () => true;
|
||||||
const isTarget = isSourceHandle;
|
const isTarget = isSourceHandle;
|
||||||
|
|
||||||
onEdgeUpdateStart?.(event, edgeElement);
|
onEdgeUpdateStart?.(event, edgeElement, handleType);
|
||||||
|
|
||||||
const _onEdgeUpdate = onEdgeUpdateEnd
|
const _onEdgeUpdate = onEdgeUpdateEnd
|
||||||
? (evt: MouseEvent): void => onEdgeUpdateEnd(evt, edgeElement)
|
? (evt: MouseEvent): void => onEdgeUpdateEnd(evt, edgeElement, handleType)
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const onConnectEdge = (connection: Connection) => {
|
const onConnectEdge = (connection: Connection) => {
|
||||||
@@ -168,7 +169,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
isTarget,
|
isTarget,
|
||||||
isValidConnection,
|
isValidConnection,
|
||||||
connectionMode,
|
connectionMode,
|
||||||
isSourceHandle ? 'target' : 'source',
|
handleType,
|
||||||
_onEdgeUpdate,
|
_onEdgeUpdate,
|
||||||
store.getState
|
store.getState
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
ConnectionLineComponent,
|
ConnectionLineComponent,
|
||||||
ConnectionMode,
|
ConnectionMode,
|
||||||
OnEdgeUpdateFunc,
|
OnEdgeUpdateFunc,
|
||||||
|
HandleType,
|
||||||
ReactFlowState,
|
ReactFlowState,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
import useVisibleEdges from '../../hooks/useVisibleEdges';
|
import useVisibleEdges from '../../hooks/useVisibleEdges';
|
||||||
@@ -31,8 +32,8 @@ interface EdgeRendererProps {
|
|||||||
onEdgeMouseEnter?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeMouseEnter?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseMove?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeMouseMove?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseLeave?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeMouseLeave?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
onEdgeUpdateStart?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeUpdateStart?: (event: React.MouseEvent, edge: Edge, handleType: HandleType) => void;
|
||||||
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge, handleType: HandleType) => void;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
noPanClassName?: string;
|
noPanClassName?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import {
|
|||||||
OnMoveStart,
|
OnMoveStart,
|
||||||
OnMoveEnd,
|
OnMoveEnd,
|
||||||
} from '.';
|
} from '.';
|
||||||
|
import { HandleType } from './handles';
|
||||||
|
|
||||||
export interface ReactFlowProps extends HTMLAttributes<HTMLDivElement> {
|
export interface ReactFlowProps extends HTMLAttributes<HTMLDivElement> {
|
||||||
nodes?: Node[];
|
nodes?: Node[];
|
||||||
@@ -106,8 +107,8 @@ export interface ReactFlowProps extends HTMLAttributes<HTMLDivElement> {
|
|||||||
onEdgeMouseMove?: (event: ReactMouseEvent, edge: Edge) => void;
|
onEdgeMouseMove?: (event: ReactMouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseLeave?: (event: ReactMouseEvent, edge: Edge) => void;
|
onEdgeMouseLeave?: (event: ReactMouseEvent, edge: Edge) => void;
|
||||||
onEdgeDoubleClick?: (event: ReactMouseEvent, edge: Edge) => void;
|
onEdgeDoubleClick?: (event: ReactMouseEvent, edge: Edge) => void;
|
||||||
onEdgeUpdateStart?: (event: ReactMouseEvent, edge: Edge) => void;
|
onEdgeUpdateStart?: (event: ReactMouseEvent, edge: Edge, handleType: HandleType) => void;
|
||||||
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge, handleType: HandleType) => void;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
noDragClassName?: string;
|
noDragClassName?: string;
|
||||||
noWheelClassName?: string;
|
noWheelClassName?: string;
|
||||||
|
|||||||
+4
-4
@@ -1,6 +1,6 @@
|
|||||||
import { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
import React, { CSSProperties, HTMLAttributes, ReactNode } from 'react';
|
||||||
import { Connection } from './general';
|
import { Connection } from './general';
|
||||||
import { HandleElement } from './handles';
|
import { HandleElement, HandleType } from './handles';
|
||||||
import { Node } from './nodes';
|
import { Node } from './nodes';
|
||||||
import { Position } from './utils';
|
import { Position } from './utils';
|
||||||
|
|
||||||
@@ -117,8 +117,8 @@ export interface WrapEdgeProps<T = any> {
|
|||||||
onMouseMove?: EdgeMouseHandler;
|
onMouseMove?: EdgeMouseHandler;
|
||||||
onMouseLeave?: EdgeMouseHandler;
|
onMouseLeave?: EdgeMouseHandler;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
onEdgeUpdateStart?: EdgeMouseHandler;
|
onEdgeUpdateStart?: (event: React.MouseEvent, edge: Edge, handleType: HandleType) => void;
|
||||||
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge, handleType: HandleType) => void;
|
||||||
markerStart?: EdgeMarkerType;
|
markerStart?: EdgeMarkerType;
|
||||||
markerEnd?: EdgeMarkerType;
|
markerEnd?: EdgeMarkerType;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user