Skip to content

Commit b9dc9ee

Browse files
authored
feature/COMPASS-9629 expose onNodeClick and nodeDragThreshold component props (#101)
1 parent 1aeee83 commit b9dc9ee

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/components/canvas/canvas.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export const Canvas = ({
5454
onNodeDrag,
5555
onNodeDragStop,
5656
onEdgeClick,
57+
onNodeClick,
5758
onSelectionDragStop,
5859
onSelectionContextMenu,
5960
onSelectionChange,
@@ -110,6 +111,13 @@ export const Canvas = ({
110111
[onEdgeClick],
111112
);
112113

114+
const _onNodeClick = useCallback(
115+
(event: MouseEvent, node: InternalNode) => {
116+
onNodeClick?.(event, convertToExternalNode(node));
117+
},
118+
[onNodeClick],
119+
);
120+
113121
const _onSelectionContextMenu = useCallback(
114122
(event: MouseEvent, nodes: InternalNode[]) => {
115123
onSelectionContextMenu?.(event, convertToExternalNodes(nodes));
@@ -149,6 +157,7 @@ export const Canvas = ({
149157
onNodeDragStop={_onNodeDragStop}
150158
onSelectionDragStop={_onSelectionDragStop}
151159
onEdgeClick={_onEdgeClick}
160+
onNodeClick={_onNodeClick}
152161
onSelectionContextMenu={_onSelectionContextMenu}
153162
onSelectionChange={_onSelectionChange}
154163
{...rest}

src/types/component-props.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ export type OnPaneClickHandler = (event: ReactMouseEvent) => void;
1919
*/
2020
export type OnEdgeClickHandler = (event: ReactMouseEvent, edge: EdgeProps) => void;
2121

22+
/**
23+
* Called when a node is clicked.
24+
*/
25+
export type OnNodeClickHandler = (event: ReactMouseEvent, edge: NodeProps) => void;
26+
2227
/**
2328
* Called when a node is right-clicked.
2429
*/
@@ -103,6 +108,11 @@ export interface DiagramProps {
103108
*/
104109
onEdgeClick?: OnEdgeClickHandler;
105110

111+
/**
112+
* Callback when the user clicks on a node.
113+
*/
114+
onNodeClick?: OnNodeClickHandler;
115+
106116
/**
107117
* Callback when the user right-clicks on a node.
108118
*/
@@ -181,7 +191,15 @@ export interface DiagramProps {
181191
/**
182192
* Whether to only render elements that are currently visible in the viewport.
183193
* This can improve performance for large diagrams.
184-
* @defaults true
194+
* @default true
185195
*/
186196
onlyRenderVisibleElements?: boolean;
197+
198+
/**
199+
* With a threshold greater than zero you can delay node drag events. If
200+
* threshold equals 1, you need to drag the node 1 pixel before a drag event
201+
* is fired. 1 is the default value, so that clicks don’t trigger drag events.
202+
* @default 1
203+
*/
204+
nodeDragThreshold?: number;
187205
}

0 commit comments

Comments
 (0)