feat(react): add onDelete handler

This commit is contained in:
moklick
2023-11-16 13:32:22 +01:00
parent 05968c82a2
commit b659443507
7 changed files with 14 additions and 0 deletions
@@ -196,6 +196,7 @@ const EdgesFlow = () => {
onEdgeMouseEnter={onEdgeMouseEnter} onEdgeMouseEnter={onEdgeMouseEnter}
onEdgeMouseMove={onEdgeMouseMove} onEdgeMouseMove={onEdgeMouseMove}
onEdgeMouseLeave={onEdgeMouseLeave} onEdgeMouseLeave={onEdgeMouseLeave}
onDelete={console.log}
> >
<MiniMap /> <MiniMap />
<Controls /> <Controls />
@@ -43,6 +43,7 @@ type StoreUpdaterProps = Pick<
| 'fitViewOptions' | 'fitViewOptions'
| 'onNodesDelete' | 'onNodesDelete'
| 'onEdgesDelete' | 'onEdgesDelete'
| 'onDelete'
| 'onNodeDragStart' | 'onNodeDragStart'
| 'onNodeDrag' | 'onNodeDrag'
| 'onNodeDragStop' | 'onNodeDragStop'
@@ -128,6 +129,7 @@ const StoreUpdater = ({
fitViewOptions, fitViewOptions,
onNodesDelete, onNodesDelete,
onEdgesDelete, onEdgesDelete,
onDelete,
onNodeDrag, onNodeDrag,
onNodeDragStart, onNodeDragStart,
onNodeDragStop, onNodeDragStop,
@@ -192,6 +194,7 @@ const StoreUpdater = ({
useDirectStoreUpdater('fitViewOnInitOptions', fitViewOptions, store.setState); useDirectStoreUpdater('fitViewOnInitOptions', fitViewOptions, store.setState);
useDirectStoreUpdater('onNodesDelete', onNodesDelete, store.setState); useDirectStoreUpdater('onNodesDelete', onNodesDelete, store.setState);
useDirectStoreUpdater('onEdgesDelete', onEdgesDelete, store.setState); useDirectStoreUpdater('onEdgesDelete', onEdgesDelete, store.setState);
useDirectStoreUpdater('onDelete', onDelete, store.setState);
useDirectStoreUpdater('onNodeDrag', onNodeDrag, store.setState); useDirectStoreUpdater('onNodeDrag', onNodeDrag, store.setState);
useDirectStoreUpdater('onNodeDragStart', onNodeDragStart, store.setState); useDirectStoreUpdater('onNodeDragStart', onNodeDragStart, store.setState);
useDirectStoreUpdater('onNodeDragStop', onNodeDragStop, store.setState); useDirectStoreUpdater('onNodeDragStop', onNodeDragStop, store.setState);
@@ -82,6 +82,7 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
onNodeDragStop, onNodeDragStop,
onNodesDelete, onNodesDelete,
onEdgesDelete, onEdgesDelete,
onDelete,
onSelectionChange, onSelectionChange,
onSelectionDragStart, onSelectionDragStart,
onSelectionDrag, onSelectionDrag,
@@ -281,6 +282,7 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
fitViewOptions={fitViewOptions} fitViewOptions={fitViewOptions}
onNodesDelete={onNodesDelete} onNodesDelete={onNodesDelete}
onEdgesDelete={onEdgesDelete} onEdgesDelete={onEdgesDelete}
onDelete={onDelete}
onNodeDragStart={onNodeDragStart} onNodeDragStart={onNodeDragStart}
onNodeDrag={onNodeDrag} onNodeDrag={onNodeDrag}
onNodeDragStop={onNodeDragStop} onNodeDragStop={onNodeDragStop}
+3
View File
@@ -127,6 +127,7 @@ export default function useReactFlow<NodeData = any, EdgeData = any>(): ReactFlo
onEdgesDelete, onEdgesDelete,
onNodesChange, onNodesChange,
onEdgesChange, onEdgesChange,
onDelete,
} = store.getState(); } = store.getState();
const { matchingNodes, matchingEdges } = getElementsToRemove<Node, Edge>({ const { matchingNodes, matchingEdges } = getElementsToRemove<Node, Edge>({
nodesToRemove: nodesDeleted || [], nodesToRemove: nodesDeleted || [],
@@ -171,6 +172,8 @@ export default function useReactFlow<NodeData = any, EdgeData = any>(): ReactFlo
onNodesChange(nodeChanges); onNodesChange(nodeChanges);
} }
} }
onDelete?.({ nodes: matchingNodes, edges: matchingEdges });
} }
return { deletedNodes: matchingNodes, deletedEdges: matchingEdges }; return { deletedNodes: matchingNodes, deletedEdges: matchingEdges };
@@ -34,6 +34,7 @@ import type {
FitViewOptions, FitViewOptions,
OnNodesDelete, OnNodesDelete,
OnEdgesDelete, OnEdgesDelete,
OnDelete,
OnNodesChange, OnNodesChange,
OnEdgesChange, OnEdgesChange,
NodeDragHandler, NodeDragHandler,
@@ -70,6 +71,7 @@ export type ReactFlowProps = Omit<HTMLAttributes<HTMLDivElement>, 'onError'> & {
onEdgesChange?: OnEdgesChange; onEdgesChange?: OnEdgesChange;
onNodesDelete?: OnNodesDelete; onNodesDelete?: OnNodesDelete;
onEdgesDelete?: OnEdgesDelete; onEdgesDelete?: OnEdgesDelete;
onDelete?: OnDelete;
onSelectionDragStart?: SelectionDragHandler; onSelectionDragStart?: SelectionDragHandler;
onSelectionDrag?: SelectionDragHandler; onSelectionDrag?: SelectionDragHandler;
onSelectionDragStop?: SelectionDragHandler; onSelectionDragStop?: SelectionDragHandler;
+1
View File
@@ -21,6 +21,7 @@ export type OnEdgesChange = (changes: EdgeChange[]) => void;
export type OnNodesDelete = (nodes: Node[]) => void; export type OnNodesDelete = (nodes: Node[]) => void;
export type OnEdgesDelete = (edges: Edge[]) => void; export type OnEdgesDelete = (edges: Edge[]) => void;
export type OnDelete = (params: { nodes: Node[]; edges: Edge[] }) => void;
export type NodeTypes = { [key: string]: ComponentType<NodeProps> }; export type NodeTypes = { [key: string]: ComponentType<NodeProps> };
export type NodeTypesWrapped = { [key: string]: MemoExoticComponent<ComponentType<WrapNodeProps>> }; export type NodeTypesWrapped = { [key: string]: MemoExoticComponent<ComponentType<WrapNodeProps>> };
+2
View File
@@ -38,6 +38,7 @@ import type {
OnEdgesDelete, OnEdgesDelete,
OnSelectionChangeFunc, OnSelectionChangeFunc,
UnselectNodesAndEdgesParams, UnselectNodesAndEdgesParams,
OnDelete,
} from '.'; } from '.';
export type ReactFlowStore = { export type ReactFlowStore = {
@@ -118,6 +119,7 @@ export type ReactFlowStore = {
onNodesDelete?: OnNodesDelete; onNodesDelete?: OnNodesDelete;
onEdgesDelete?: OnEdgesDelete; onEdgesDelete?: OnEdgesDelete;
onDelete?: OnDelete;
onError?: OnError; onError?: OnError;
// event handlers // event handlers