feat(props): add nodeClickDistance

This commit is contained in:
moklick
2024-07-15 15:28:27 +02:00
parent edf7a8eec0
commit da35b9d7fb
16 changed files with 49 additions and 2 deletions
@@ -39,6 +39,7 @@ export function NodeWrapper<NodeType extends Node>({
rfId,
nodeTypes,
nodeExtent,
nodeClickDistance,
onError,
}: NodeWrapperProps<NodeType>) {
const { node, internals, isParent } = useStore((s) => {
@@ -76,6 +77,7 @@ export function NodeWrapper<NodeType extends Node>({
handleSelector: node.dragHandle,
nodeId: id,
isSelectable,
nodeClickDistance,
});
const moveSelectedNodes = useMoveSelectedNodes();
@@ -22,6 +22,7 @@ export type FlowRendererProps<NodeType extends Node = Node> = Omit<
| 'selectNodesOnDrag'
| 'defaultMarkerColor'
| 'rfId'
| 'nodeClickDistance'
> & {
isControlledViewport: boolean;
children: ReactNode;
@@ -33,6 +33,7 @@ export type GraphViewProps<NodeType extends Node = Node, EdgeType extends Edge =
| 'defaultViewport'
| 'disableKeyboardA11y'
| 'paneClickDistance'
| 'nodeClickDistance'
>
> & {
rfId: string;
@@ -86,6 +87,7 @@ function GraphViewComponent<NodeType extends Node = Node, EdgeType extends Edge
onPaneScroll,
onPaneContextMenu,
paneClickDistance,
nodeClickDistance,
onEdgeContextMenu,
onEdgeMouseEnter,
onEdgeMouseMove,
@@ -183,6 +185,7 @@ function GraphViewComponent<NodeType extends Node = Node, EdgeType extends Edge
onNodeMouseMove={onNodeMouseMove}
onNodeMouseLeave={onNodeMouseLeave}
onNodeContextMenu={onNodeContextMenu}
nodeClickDistance={nodeClickDistance}
onlyRenderVisibleElements={onlyRenderVisibleElements}
noPanClassName={noPanClassName}
noDragClassName={noDragClassName}
@@ -24,6 +24,7 @@ export type NodeRendererProps<NodeType extends Node> = Pick<
| 'disableKeyboardA11y'
| 'nodeExtent'
| 'nodeTypes'
| 'nodeClickDistance'
>;
const selector = (s: ReactFlowState) => ({
@@ -86,6 +87,7 @@ function NodeRendererComponent<NodeType extends Node>(props: NodeRendererProps<N
nodesConnectable={nodesConnectable}
nodesFocusable={nodesFocusable}
elementsSelectable={elementsSelectable}
nodeClickDistance={props.nodeClickDistance}
onError={onError}
/>
);
@@ -104,6 +104,7 @@ function ReactFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(
onPaneScroll,
onPaneContextMenu,
paneClickDistance = 0,
nodeClickDistance = 0,
children,
onReconnect,
onReconnectStart,
@@ -202,6 +203,7 @@ function ReactFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(
onPaneScroll={onPaneScroll}
onPaneContextMenu={onPaneContextMenu}
paneClickDistance={paneClickDistance}
nodeClickDistance={nodeClickDistance}
onSelectionContextMenu={onSelectionContextMenu}
onSelectionStart={onSelectionStart}
onSelectionEnd={onSelectionEnd}
+3
View File
@@ -11,6 +11,7 @@ type UseDragParams = {
handleSelector?: string;
nodeId?: string;
isSelectable?: boolean;
nodeClickDistance?: number;
};
/**
@@ -25,6 +26,7 @@ export function useDrag({
handleSelector,
nodeId,
isSelectable,
nodeClickDistance,
}: UseDragParams) {
const store = useStoreApi();
const [dragging, setDragging] = useState<boolean>(false);
@@ -59,6 +61,7 @@ export function useDrag({
domNode: nodeRef.current,
isSelectable,
nodeId,
nodeClickDistance,
});
return () => {
xyDrag.current?.destroy();
@@ -227,6 +227,10 @@ export interface ReactFlowProps<NodeType extends Node = Node, EdgeType extends E
* @default 0
*/
paneClickDistance?: number;
/** Distance that the mouse can move between mousedown/up that will trigger a click
* @default 0
*/
nodeClickDistance?: number;
/** This handler gets called before the user deletes nodes or edges and provides a way to abort the deletion by returning false. */
onBeforeDelete?: OnBeforeDelete<NodeType, EdgeType>;
/** Custom node types to be available in a flow.
+1
View File
@@ -53,6 +53,7 @@ export type NodeWrapperProps<NodeType extends Node> = {
nodeTypes?: NodeTypes;
nodeExtent?: CoordinateExtent;
onError?: OnError;
nodeClickDistance?: number;
};
export type BuiltInNode = Node<{ label: string }, 'input' | 'output' | 'default'>;