diff --git a/src/components/Nodes/wrapNode.tsx b/src/components/Nodes/wrapNode.tsx index 77f4b5fb..b8f103ab 100644 --- a/src/components/Nodes/wrapNode.tsx +++ b/src/components/Nodes/wrapNode.tsx @@ -20,6 +20,7 @@ export default (NodeComponent: ComponentType) => { onMouseMove, onMouseLeave, onContextMenu, + onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, @@ -169,6 +170,10 @@ export default (NodeComponent: ComponentType) => { [node, isSelectable, selectNodesOnDrag, onClick, onNodeDragStop, isDragging, selected] ); + const onNodeDoubleClickHandler = useCallback((event: MouseEvent) => { + onNodeDoubleClick?.(event, node) + }, [node, onNodeDoubleClick]) + useEffect(() => { if (nodeElement.current && !isHidden) { updateNodeDimensions([{ id, nodeElement: nodeElement.current, forceUpdate: true }]); @@ -220,6 +225,7 @@ export default (NodeComponent: ComponentType) => { onMouseLeave={onMouseLeaveHandler} onContextMenu={onContextMenuHandler} onClick={onSelectNodeHandler} + onDoubleClick={onNodeDoubleClickHandler} data-id={id} > diff --git a/src/container/GraphView/index.tsx b/src/container/GraphView/index.tsx index bd31e6a8..7408d54d 100644 --- a/src/container/GraphView/index.tsx +++ b/src/container/GraphView/index.tsx @@ -35,6 +35,7 @@ const GraphView = ({ onMoveEnd, onLoad, onElementClick, + onNodeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, @@ -244,6 +245,7 @@ const GraphView = ({ void; + onNodeDoubleClick?: (event: MouseEvent, element: Node) => void; onNodeMouseEnter?: (event: MouseEvent, node: Node) => void; onNodeMouseMove?: (event: MouseEvent, node: Node) => void; onNodeMouseLeave?: (event: MouseEvent, node: Node) => void; @@ -93,6 +94,7 @@ const NodeRenderer = (props: NodeRendererProps) => { onMouseMove={props.onNodeMouseMove} onMouseLeave={props.onNodeMouseLeave} onContextMenu={props.onNodeContextMenu} + onNodeDoubleClick={props.onNodeDoubleClick} onNodeDragStart={props.onNodeDragStart} onNodeDrag={props.onNodeDrag} onNodeDragStop={props.onNodeDragStop} diff --git a/src/container/ReactFlow/index.tsx b/src/container/ReactFlow/index.tsx index fd2790c0..1aa1aea9 100644 --- a/src/container/ReactFlow/index.tsx +++ b/src/container/ReactFlow/index.tsx @@ -53,6 +53,7 @@ export interface ReactFlowProps extends Omit, 'on elements: Elements; onElementClick?: (event: MouseEvent, element: Node | Edge) => void; onElementsRemove?: (elements: Elements) => void; + onNodeDoubleClick?: (event: MouseEvent, node: Node) => void; onNodeMouseEnter?: (event: MouseEvent, node: Node) => void; onNodeMouseMove?: (event: MouseEvent, node: Node) => void; onNodeMouseLeave?: (event: MouseEvent, node: Node) => void; diff --git a/src/types/index.ts b/src/types/index.ts index 7786503f..cbf38518 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -197,6 +197,7 @@ export interface NodeComponentProps { targetPosition?: Position; sourcePosition?: Position; onClick?: (node: Node) => void; + onNodeDoubleClick?: (node: Node) => void; onMouseEnter?: (node: Node) => void; onMouseMove?: (node: Node) => void; onMouseLeave?: (node: Node) => void; @@ -221,6 +222,7 @@ export interface WrapNodeProps { isConnectable: boolean; selectNodesOnDrag: boolean; onClick?: (event: ReactMouseEvent, node: Node) => void; + onNodeDoubleClick?: (event: ReactMouseEvent, node: Node) => void; onMouseEnter?: (event: ReactMouseEvent, node: Node) => void; onMouseMove?: (event: ReactMouseEvent, node: Node) => void; onMouseLeave?: (event: ReactMouseEvent, node: Node) => void;