onEdgeDoubleClick support

This commit is contained in:
Анна Кузнецова
2021-04-13 20:29:39 +05:00
parent c748b79e09
commit f565676233
6 changed files with 16 additions and 2 deletions
+6
View File
@@ -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}
+2
View File
@@ -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}
/> />
); );
}; };
+2
View File
@@ -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}
+3
View File
@@ -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}
+1 -1
View File
@@ -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
View File
@@ -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;