Merge pull request #1008 from kid-icarus/ki/support-element-double-click

Support element double click handler.
This commit is contained in:
Moritz Klack
2021-03-17 21:30:12 +01:00
committed by GitHub
5 changed files with 13 additions and 0 deletions
+6
View File
@@ -20,6 +20,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
onMouseMove, onMouseMove,
onMouseLeave, onMouseLeave,
onContextMenu, onContextMenu,
onNodeDoubleClick,
onNodeDragStart, onNodeDragStart,
onNodeDrag, onNodeDrag,
onNodeDragStop, onNodeDragStop,
@@ -169,6 +170,10 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
[node, isSelectable, selectNodesOnDrag, onClick, onNodeDragStop, isDragging, selected] [node, isSelectable, selectNodesOnDrag, onClick, onNodeDragStop, isDragging, selected]
); );
const onNodeDoubleClickHandler = useCallback((event: MouseEvent) => {
onNodeDoubleClick?.(event, node)
}, [node, onNodeDoubleClick])
useEffect(() => { useEffect(() => {
if (nodeElement.current && !isHidden) { if (nodeElement.current && !isHidden) {
updateNodeDimensions([{ id, nodeElement: nodeElement.current, forceUpdate: true }]); updateNodeDimensions([{ id, nodeElement: nodeElement.current, forceUpdate: true }]);
@@ -220,6 +225,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
onMouseLeave={onMouseLeaveHandler} onMouseLeave={onMouseLeaveHandler}
onContextMenu={onContextMenuHandler} onContextMenu={onContextMenuHandler}
onClick={onSelectNodeHandler} onClick={onSelectNodeHandler}
onDoubleClick={onNodeDoubleClickHandler}
data-id={id} data-id={id}
> >
<Provider value={id}> <Provider value={id}>
+2
View File
@@ -35,6 +35,7 @@ const GraphView = ({
onMoveEnd, onMoveEnd,
onLoad, onLoad,
onElementClick, onElementClick,
onNodeDoubleClick,
onNodeMouseEnter, onNodeMouseEnter,
onNodeMouseMove, onNodeMouseMove,
onNodeMouseLeave, onNodeMouseLeave,
@@ -244,6 +245,7 @@ const GraphView = ({
<NodeRenderer <NodeRenderer
nodeTypes={nodeTypes} nodeTypes={nodeTypes}
onElementClick={onElementClick} onElementClick={onElementClick}
onNodeDoubleClick={onNodeDoubleClick}
onNodeMouseEnter={onNodeMouseEnter} onNodeMouseEnter={onNodeMouseEnter}
onNodeMouseMove={onNodeMouseMove} onNodeMouseMove={onNodeMouseMove}
onNodeMouseLeave={onNodeMouseLeave} onNodeMouseLeave={onNodeMouseLeave}
+2
View File
@@ -7,6 +7,7 @@ interface NodeRendererProps {
nodeTypes: NodeTypesType; nodeTypes: NodeTypesType;
selectNodesOnDrag: boolean; selectNodesOnDrag: boolean;
onElementClick?: (event: MouseEvent, element: Node | Edge) => void; onElementClick?: (event: MouseEvent, element: Node | Edge) => void;
onNodeDoubleClick?: (event: MouseEvent, element: Node) => void;
onNodeMouseEnter?: (event: MouseEvent, node: Node) => void; onNodeMouseEnter?: (event: MouseEvent, node: Node) => void;
onNodeMouseMove?: (event: MouseEvent, node: Node) => void; onNodeMouseMove?: (event: MouseEvent, node: Node) => void;
onNodeMouseLeave?: (event: MouseEvent, node: Node) => void; onNodeMouseLeave?: (event: MouseEvent, node: Node) => void;
@@ -93,6 +94,7 @@ const NodeRenderer = (props: NodeRendererProps) => {
onMouseMove={props.onNodeMouseMove} onMouseMove={props.onNodeMouseMove}
onMouseLeave={props.onNodeMouseLeave} onMouseLeave={props.onNodeMouseLeave}
onContextMenu={props.onNodeContextMenu} onContextMenu={props.onNodeContextMenu}
onNodeDoubleClick={props.onNodeDoubleClick}
onNodeDragStart={props.onNodeDragStart} onNodeDragStart={props.onNodeDragStart}
onNodeDrag={props.onNodeDrag} onNodeDrag={props.onNodeDrag}
onNodeDragStop={props.onNodeDragStop} onNodeDragStop={props.onNodeDragStop}
+1
View File
@@ -53,6 +53,7 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
elements: Elements; elements: Elements;
onElementClick?: (event: MouseEvent, element: Node | Edge) => void; onElementClick?: (event: MouseEvent, element: Node | Edge) => void;
onElementsRemove?: (elements: Elements) => void; onElementsRemove?: (elements: Elements) => void;
onNodeDoubleClick?: (event: MouseEvent, node: Node) => void;
onNodeMouseEnter?: (event: MouseEvent, node: Node) => void; onNodeMouseEnter?: (event: MouseEvent, node: Node) => void;
onNodeMouseMove?: (event: MouseEvent, node: Node) => void; onNodeMouseMove?: (event: MouseEvent, node: Node) => void;
onNodeMouseLeave?: (event: MouseEvent, node: Node) => void; onNodeMouseLeave?: (event: MouseEvent, node: Node) => void;
+2
View File
@@ -197,6 +197,7 @@ export interface NodeComponentProps<T = any> {
targetPosition?: Position; targetPosition?: Position;
sourcePosition?: Position; sourcePosition?: Position;
onClick?: (node: Node) => void; onClick?: (node: Node) => void;
onNodeDoubleClick?: (node: Node) => void;
onMouseEnter?: (node: Node) => void; onMouseEnter?: (node: Node) => void;
onMouseMove?: (node: Node) => void; onMouseMove?: (node: Node) => void;
onMouseLeave?: (node: Node) => void; onMouseLeave?: (node: Node) => void;
@@ -221,6 +222,7 @@ export interface WrapNodeProps<T = any> {
isConnectable: boolean; isConnectable: boolean;
selectNodesOnDrag: boolean; selectNodesOnDrag: boolean;
onClick?: (event: ReactMouseEvent, node: Node) => void; onClick?: (event: ReactMouseEvent, node: Node) => void;
onNodeDoubleClick?: (event: ReactMouseEvent, node: Node) => void;
onMouseEnter?: (event: ReactMouseEvent, node: Node) => void; onMouseEnter?: (event: ReactMouseEvent, node: Node) => void;
onMouseMove?: (event: ReactMouseEvent, node: Node) => void; onMouseMove?: (event: ReactMouseEvent, node: Node) => void;
onMouseLeave?: (event: ReactMouseEvent, node: Node) => void; onMouseLeave?: (event: ReactMouseEvent, node: Node) => void;