Fix: Couldn't drag edge after creating of FlowRenderer

This commit is contained in:
Long Nguyen
2020-10-13 12:06:55 +09:00
parent 57528851ff
commit 8ea54a6574
+19 -12
View File
@@ -12,15 +12,15 @@ import NodesSelection from '../../components/NodesSelection';
interface FlowRendererProps interface FlowRendererProps
extends Omit< extends Omit<
GraphViewProps, GraphViewProps,
| 'elements' | 'elements'
| 'snapToGrid' | 'snapToGrid'
| 'nodeTypes' | 'nodeTypes'
| 'edgeTypes' | 'edgeTypes'
| 'snapGrid' | 'snapGrid'
| 'connectionLineType' | 'connectionLineType'
| 'arrowHeadColor' | 'arrowHeadColor'
| 'onlyRenderVisibleNodes' | 'onlyRenderVisibleNodes'
> { > {
children: ReactNode; children: ReactNode;
} }
@@ -48,11 +48,12 @@ const FlowRenderer = ({
onSelectionContextMenu, onSelectionContextMenu,
}: FlowRendererProps) => { }: FlowRendererProps) => {
const zoomPane = useRef<HTMLDivElement>(null); const zoomPane = useRef<HTMLDivElement>(null);
const rendererNode = useRef<HTMLDivElement>(null);
const unsetNodesSelection = useStoreActions((actions) => actions.unsetNodesSelection); const unsetNodesSelection = useStoreActions((actions) => actions.unsetNodesSelection);
const nodesSelectionActive = useStoreState((state) => state.nodesSelectionActive); const nodesSelectionActive = useStoreState((state) => state.nodesSelectionActive);
const selectionKeyPressed = useKeyPress(selectionKeyCode); const selectionKeyPressed = useKeyPress(selectionKeyCode);
useResizeHandler(zoomPane); useResizeHandler(rendererNode);
useGlobalKeyHandler({ onElementsRemove, deleteKeyCode }); useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });
useD3Zoom({ useD3Zoom({
@@ -92,7 +93,7 @@ const FlowRenderer = ({
); );
return ( return (
<div className="react-flow__renderer" ref={zoomPane}> <div className="react-flow__renderer" ref={rendererNode}>
{children} {children}
<UserSelection selectionKeyPressed={selectionKeyPressed} /> <UserSelection selectionKeyPressed={selectionKeyPressed} />
{nodesSelectionActive && ( {nodesSelectionActive && (
@@ -103,7 +104,13 @@ const FlowRenderer = ({
onSelectionContextMenu={onSelectionContextMenu} onSelectionContextMenu={onSelectionContextMenu}
/> />
)} )}
<div className="react-flow__pane" onClick={onClick} onContextMenu={onContextMenu} onWheel={onWheel} /> <div
className="react-flow__pane"
onClick={onClick}
onContextMenu={onContextMenu}
onWheel={onWheel}
ref={zoomPane}
/>
</div> </div>
); );
}; };