onEdgeDoubleClick support
This commit is contained in:
@@ -13,6 +13,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
type,
|
type,
|
||||||
data,
|
data,
|
||||||
onClick,
|
onClick,
|
||||||
|
onEdgeDoubleClick,
|
||||||
selected,
|
selected,
|
||||||
animated,
|
animated,
|
||||||
label,
|
label,
|
||||||
@@ -162,6 +163,10 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
const onEdgeUpdaterMouseEnter = useCallback(() => setUpdating(true), [setUpdating]);
|
const onEdgeUpdaterMouseEnter = useCallback(() => setUpdating(true), [setUpdating]);
|
||||||
const onEdgeUpdaterMouseOut = useCallback(() => setUpdating(false), [setUpdating]);
|
const onEdgeUpdaterMouseOut = useCallback(() => setUpdating(false), [setUpdating]);
|
||||||
|
|
||||||
|
const onEdgeDoubleClickHandler = useCallback((event: React.MouseEvent<SVGGElement, MouseEvent>) => {
|
||||||
|
onEdgeDoubleClick?.(event, edgeElement)
|
||||||
|
}, [edgeElement, onEdgeDoubleClick])
|
||||||
|
|
||||||
if (isHidden) {
|
if (isHidden) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -170,6 +175,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
<g
|
<g
|
||||||
className={edgeClasses}
|
className={edgeClasses}
|
||||||
onClick={onEdgeClick}
|
onClick={onEdgeClick}
|
||||||
|
onDoubleClick={onEdgeDoubleClickHandler}
|
||||||
onContextMenu={onEdgeContextMenu}
|
onContextMenu={onEdgeContextMenu}
|
||||||
onMouseEnter={onEdgeMouseEnter}
|
onMouseEnter={onEdgeMouseEnter}
|
||||||
onMouseMove={onEdgeMouseMove}
|
onMouseMove={onEdgeMouseMove}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ interface EdgeRendererProps {
|
|||||||
connectionLineComponent?: ConnectionLineComponent;
|
connectionLineComponent?: ConnectionLineComponent;
|
||||||
connectionMode?: ConnectionMode;
|
connectionMode?: ConnectionMode;
|
||||||
onElementClick?: (event: React.MouseEvent, element: Node | Edge) => void;
|
onElementClick?: (event: React.MouseEvent, element: Node | Edge) => void;
|
||||||
|
onEdgeDoubleClick?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
arrowHeadColor: string;
|
arrowHeadColor: string;
|
||||||
markerEndId?: string;
|
markerEndId?: string;
|
||||||
onlyRenderVisibleElements: boolean;
|
onlyRenderVisibleElements: boolean;
|
||||||
@@ -173,6 +174,7 @@ const Edge = ({
|
|||||||
onMouseMove={props.onEdgeMouseMove}
|
onMouseMove={props.onEdgeMouseMove}
|
||||||
onMouseLeave={props.onEdgeMouseLeave}
|
onMouseLeave={props.onEdgeMouseLeave}
|
||||||
edgeUpdaterRadius={props.edgeUpdaterRadius}
|
edgeUpdaterRadius={props.edgeUpdaterRadius}
|
||||||
|
onEdgeDoubleClick={props.onEdgeDoubleClick}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ const GraphView = ({
|
|||||||
onLoad,
|
onLoad,
|
||||||
onElementClick,
|
onElementClick,
|
||||||
onNodeDoubleClick,
|
onNodeDoubleClick,
|
||||||
|
onEdgeDoubleClick,
|
||||||
onNodeMouseEnter,
|
onNodeMouseEnter,
|
||||||
onNodeMouseMove,
|
onNodeMouseMove,
|
||||||
onNodeMouseLeave,
|
onNodeMouseLeave,
|
||||||
@@ -261,6 +262,7 @@ const GraphView = ({
|
|||||||
<EdgeRenderer
|
<EdgeRenderer
|
||||||
edgeTypes={edgeTypes}
|
edgeTypes={edgeTypes}
|
||||||
onElementClick={onElementClick}
|
onElementClick={onElementClick}
|
||||||
|
onEdgeDoubleClick={onEdgeDoubleClick}
|
||||||
connectionLineType={connectionLineType}
|
connectionLineType={connectionLineType}
|
||||||
connectionLineStyle={connectionLineStyle}
|
connectionLineStyle={connectionLineStyle}
|
||||||
connectionLineComponent={connectionLineComponent}
|
connectionLineComponent={connectionLineComponent}
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
|
|||||||
onEdgeMouseEnter?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeMouseEnter?: (event: MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseMove?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeMouseMove?: (event: MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseLeave?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeMouseLeave?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onEdgeDoubleClick?: (event: MouseEvent, edge: Edge) => void;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
nodeTypesId?: string;
|
nodeTypesId?: string;
|
||||||
edgeTypesId?: string;
|
edgeTypesId?: string;
|
||||||
@@ -187,6 +188,7 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
|
|||||||
children,
|
children,
|
||||||
onEdgeUpdate,
|
onEdgeUpdate,
|
||||||
onEdgeContextMenu,
|
onEdgeContextMenu,
|
||||||
|
onEdgeDoubleClick,
|
||||||
onEdgeMouseEnter,
|
onEdgeMouseEnter,
|
||||||
onEdgeMouseMove,
|
onEdgeMouseMove,
|
||||||
onEdgeMouseLeave,
|
onEdgeMouseLeave,
|
||||||
@@ -264,6 +266,7 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
|
|||||||
onSelectionContextMenu={onSelectionContextMenu}
|
onSelectionContextMenu={onSelectionContextMenu}
|
||||||
onEdgeUpdate={onEdgeUpdate}
|
onEdgeUpdate={onEdgeUpdate}
|
||||||
onEdgeContextMenu={onEdgeContextMenu}
|
onEdgeContextMenu={onEdgeContextMenu}
|
||||||
|
onEdgeDoubleClick={onEdgeDoubleClick}
|
||||||
onEdgeMouseEnter={onEdgeMouseEnter}
|
onEdgeMouseEnter={onEdgeMouseEnter}
|
||||||
onEdgeMouseMove={onEdgeMouseMove}
|
onEdgeMouseMove={onEdgeMouseMove}
|
||||||
onEdgeMouseLeave={onEdgeMouseLeave}
|
onEdgeMouseLeave={onEdgeMouseLeave}
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ const ZoomPane = ({
|
|||||||
|
|
||||||
// when the target element is a node, we still allow zooming
|
// when the target element is a node, we still allow zooming
|
||||||
if (
|
if (
|
||||||
(event.target.closest('.react-flow__node') || event.target.closest('.react-flow__edgeupdater')) &&
|
(event.target.closest('.react-flow__node') || event.target.closest('.react-flow__edge')) &&
|
||||||
event.type !== 'wheel'
|
event.type !== 'wheel'
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
import { CSSProperties, MouseEvent as ReactMouseEvent, HTMLAttributes, ReactNode } from 'react';
|
import React, { CSSProperties, MouseEvent as ReactMouseEvent, HTMLAttributes, ReactNode } from 'react';
|
||||||
import { Selection as D3Selection, ZoomBehavior } from 'd3';
|
import { Selection as D3Selection, ZoomBehavior } from 'd3';
|
||||||
|
|
||||||
export type ElementId = string;
|
export type ElementId = string;
|
||||||
@@ -100,6 +100,7 @@ export interface WrapEdgeProps<T = any> {
|
|||||||
type: string;
|
type: string;
|
||||||
data?: T;
|
data?: T;
|
||||||
onClick?: (event: React.MouseEvent, edge: Edge) => void;
|
onClick?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
|
onEdgeDoubleClick?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
selected: boolean;
|
selected: boolean;
|
||||||
animated?: boolean;
|
animated?: boolean;
|
||||||
label?: string | ReactNode;
|
label?: string | ReactNode;
|
||||||
|
|||||||
Reference in New Issue
Block a user