Merge pull request #402 from namack/expose-pane-context-click
Add onPaneContextMenu
This commit is contained in:
@@ -15,6 +15,7 @@ const onNodeDragStart = (evt, node) => console.log('drag start', node);
|
|||||||
const onNodeDragStop = (evt, node) => console.log('drag stop', node);
|
const onNodeDragStop = (evt, node) => console.log('drag stop', node);
|
||||||
const onElementClick = (evt, element) => console.log('click', evt, element);
|
const onElementClick = (evt, element) => console.log('click', evt, element);
|
||||||
const onPaneClick = (evt) => console.log('onPaneClick', evt);
|
const onPaneClick = (evt) => console.log('onPaneClick', evt);
|
||||||
|
const onPaneContextMenu = (evt) => console.log('onPaneContextMenu', evt);
|
||||||
|
|
||||||
const InteractionFlow = () => {
|
const InteractionFlow = () => {
|
||||||
const [elements, setElements] = useState(initialElements);
|
const [elements, setElements] = useState(initialElements);
|
||||||
@@ -42,6 +43,7 @@ const InteractionFlow = () => {
|
|||||||
onNodeDragStop={onNodeDragStop}
|
onNodeDragStop={onNodeDragStop}
|
||||||
paneMoveable={paneMoveable}
|
paneMoveable={paneMoveable}
|
||||||
onPaneClick={captureZoomClick ? onPaneClick : undefined}
|
onPaneClick={captureZoomClick ? onPaneClick : undefined}
|
||||||
|
onPaneContextMenu={captureZoomClick ? onPaneContextMenu : undefined}
|
||||||
>
|
>
|
||||||
<MiniMap />
|
<MiniMap />
|
||||||
<Controls />
|
<Controls />
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ export interface GraphViewProps {
|
|||||||
onMoveStart?: (flowTransform?: FlowTransform) => void;
|
onMoveStart?: (flowTransform?: FlowTransform) => void;
|
||||||
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
||||||
onPaneClick?: (evt: MouseEvent) => void;
|
onPaneClick?: (evt: MouseEvent) => void;
|
||||||
|
onPaneContextMenu?: (evt: MouseEvent) => void;
|
||||||
selectionKeyCode: number;
|
selectionKeyCode: number;
|
||||||
nodeTypes: NodeTypesType;
|
nodeTypes: NodeTypesType;
|
||||||
edgeTypes: EdgeTypesType;
|
edgeTypes: EdgeTypesType;
|
||||||
@@ -106,6 +107,7 @@ const GraphView = ({
|
|||||||
zoomOnDoubleClick,
|
zoomOnDoubleClick,
|
||||||
paneMoveable,
|
paneMoveable,
|
||||||
onPaneClick,
|
onPaneClick,
|
||||||
|
onPaneContextMenu,
|
||||||
}: GraphViewProps) => {
|
}: GraphViewProps) => {
|
||||||
const isInitialised = useRef<boolean>(false);
|
const isInitialised = useRef<boolean>(false);
|
||||||
const zoomPane = useRef<HTMLDivElement>(null);
|
const zoomPane = useRef<HTMLDivElement>(null);
|
||||||
@@ -130,6 +132,10 @@ const GraphView = ({
|
|||||||
unsetNodesSelection();
|
unsetNodesSelection();
|
||||||
}, [onPaneClick]);
|
}, [onPaneClick]);
|
||||||
|
|
||||||
|
const onZoomPaneContextMenu = useCallback((evt: React.MouseEvent) => {
|
||||||
|
onPaneContextMenu?.(evt);
|
||||||
|
}, [onPaneContextMenu]);
|
||||||
|
|
||||||
useResizeHandler(rendererNode);
|
useResizeHandler(rendererNode);
|
||||||
useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });
|
useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });
|
||||||
useElementUpdater(elements);
|
useElementUpdater(elements);
|
||||||
@@ -237,7 +243,7 @@ const GraphView = ({
|
|||||||
/>
|
/>
|
||||||
<UserSelection selectionKeyPressed={selectionKeyPressed} />
|
<UserSelection selectionKeyPressed={selectionKeyPressed} />
|
||||||
{nodesSelectionActive && <NodesSelection />}
|
{nodesSelectionActive && <NodesSelection />}
|
||||||
<div className="react-flow__zoompane" onClick={onZoomPaneClick} ref={zoomPane} />
|
<div className="react-flow__zoompane" onClick={onZoomPaneClick} onContextMenu={onZoomPaneContextMenu} ref={zoomPane} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
|
|||||||
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
||||||
onSelectionChange?: (elements: Elements | null) => void;
|
onSelectionChange?: (elements: Elements | null) => void;
|
||||||
onPaneClick?: (evt: MouseEvent) => void;
|
onPaneClick?: (evt: MouseEvent) => void;
|
||||||
|
onPaneContextMenu?: (evt: MouseEvent) => void;
|
||||||
nodeTypes: NodeTypesType;
|
nodeTypes: NodeTypesType;
|
||||||
edgeTypes: EdgeTypesType;
|
edgeTypes: EdgeTypesType;
|
||||||
connectionLineType: ConnectionLineType;
|
connectionLineType: ConnectionLineType;
|
||||||
@@ -119,6 +120,7 @@ const ReactFlow = ({
|
|||||||
zoomOnDoubleClick,
|
zoomOnDoubleClick,
|
||||||
paneMoveable,
|
paneMoveable,
|
||||||
onPaneClick,
|
onPaneClick,
|
||||||
|
onPaneContextMenu,
|
||||||
}: ReactFlowProps) => {
|
}: ReactFlowProps) => {
|
||||||
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);
|
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);
|
||||||
const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []);
|
const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []);
|
||||||
@@ -167,6 +169,7 @@ const ReactFlow = ({
|
|||||||
zoomOnDoubleClick={zoomOnDoubleClick}
|
zoomOnDoubleClick={zoomOnDoubleClick}
|
||||||
paneMoveable={paneMoveable}
|
paneMoveable={paneMoveable}
|
||||||
onPaneClick={onPaneClick}
|
onPaneClick={onPaneClick}
|
||||||
|
onPaneContextMenu={onPaneContextMenu}
|
||||||
/>
|
/>
|
||||||
{onSelectionChange && <SelectionListener onSelectionChange={onSelectionChange} />}
|
{onSelectionChange && <SelectionListener onSelectionChange={onSelectionChange} />}
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
Reference in New Issue
Block a user