Merge branch 'EmielW-feature/add-onpagescroll-event-handler' into develop
This commit is contained in:
@@ -15,6 +15,7 @@ const onNodeDragStart = (event, node) => console.log('drag start', node);
|
|||||||
const onNodeDragStop = (event, node) => console.log('drag stop', node);
|
const onNodeDragStop = (event, node) => console.log('drag stop', node);
|
||||||
const onElementClick = (event, element) => console.log('click', element);
|
const onElementClick = (event, element) => console.log('click', element);
|
||||||
const onPaneClick = (event) => console.log('onPaneClick', event);
|
const onPaneClick = (event) => console.log('onPaneClick', event);
|
||||||
|
const onPaneScroll = (event) => console.log('onPaneScroll', event);
|
||||||
const onPaneContextMenu = (event) => console.log('onPaneContextMenu', event);
|
const onPaneContextMenu = (event) => console.log('onPaneContextMenu', event);
|
||||||
|
|
||||||
const InteractionFlow = () => {
|
const InteractionFlow = () => {
|
||||||
@@ -28,6 +29,7 @@ const InteractionFlow = () => {
|
|||||||
const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false);
|
const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false);
|
||||||
const [paneMoveable, setPaneMoveable] = useState(true);
|
const [paneMoveable, setPaneMoveable] = useState(true);
|
||||||
const [captureZoomClick, setCaptureZoomClick] = useState(false);
|
const [captureZoomClick, setCaptureZoomClick] = useState(false);
|
||||||
|
const [captureZoomScroll, setCaptureZoomScroll] = useState(false);
|
||||||
const [captureElementClick, setCaptureElementClick] = useState(false);
|
const [captureElementClick, setCaptureElementClick] = useState(false);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -44,6 +46,7 @@ const InteractionFlow = () => {
|
|||||||
onNodeDragStop={onNodeDragStop}
|
onNodeDragStop={onNodeDragStop}
|
||||||
paneMoveable={paneMoveable}
|
paneMoveable={paneMoveable}
|
||||||
onPaneClick={captureZoomClick ? onPaneClick : undefined}
|
onPaneClick={captureZoomClick ? onPaneClick : undefined}
|
||||||
|
onPaneScroll={captureZoomScroll ? onPaneScroll : undefined}
|
||||||
onPaneContextMenu={captureZoomClick ? onPaneContextMenu : undefined}
|
onPaneContextMenu={captureZoomClick ? onPaneContextMenu : undefined}
|
||||||
>
|
>
|
||||||
<MiniMap />
|
<MiniMap />
|
||||||
@@ -134,6 +137,18 @@ const InteractionFlow = () => {
|
|||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<label htmlFor="capturezoompanescroll">
|
||||||
|
capture zoom pane scroll
|
||||||
|
<input
|
||||||
|
id="capturezoompanescroll"
|
||||||
|
type="checkbox"
|
||||||
|
checked={captureZoomScroll}
|
||||||
|
onChange={(event) => setCaptureZoomScroll(event.target.checked)}
|
||||||
|
className="react-flow__capturezoompanescroll"
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="captureelementclick">
|
<label htmlFor="captureelementclick">
|
||||||
capture element click
|
capture element click
|
||||||
|
|||||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "react-flow-renderer",
|
"name": "react-flow-renderer",
|
||||||
"version": "5.5.0",
|
"version": "5.6.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "react-flow-renderer",
|
"name": "react-flow-renderer",
|
||||||
"version": "5.5.0",
|
"version": "5.6.0",
|
||||||
"main": "dist/ReactFlow.js",
|
"main": "dist/ReactFlow.js",
|
||||||
"module": "dist/ReactFlow.esm.js",
|
"module": "dist/ReactFlow.esm.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useRef, useCallback, memo, CSSProperties, MouseEvent } from 'react';
|
import React, { useEffect, useRef, useCallback, memo, CSSProperties, MouseEvent, WheelEvent } from 'react';
|
||||||
|
|
||||||
import { useStoreState, useStoreActions, useStore } from '../../store/hooks';
|
import { useStoreState, useStoreActions, useStore } from '../../store/hooks';
|
||||||
import NodeRenderer from '../NodeRenderer';
|
import NodeRenderer from '../NodeRenderer';
|
||||||
@@ -44,6 +44,7 @@ export interface GraphViewProps {
|
|||||||
onMove?: (flowTransform?: FlowTransform) => void;
|
onMove?: (flowTransform?: FlowTransform) => void;
|
||||||
onMoveStart?: (flowTransform?: FlowTransform) => void;
|
onMoveStart?: (flowTransform?: FlowTransform) => void;
|
||||||
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
||||||
|
onPaneScroll?: (event?: WheelEvent) => void;
|
||||||
onPaneClick?: (event: MouseEvent) => void;
|
onPaneClick?: (event: MouseEvent) => void;
|
||||||
onPaneContextMenu?: (event: MouseEvent) => void;
|
onPaneContextMenu?: (event: MouseEvent) => void;
|
||||||
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
|
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
|
||||||
@@ -117,6 +118,7 @@ const GraphView = ({
|
|||||||
zoomOnDoubleClick,
|
zoomOnDoubleClick,
|
||||||
paneMoveable,
|
paneMoveable,
|
||||||
onPaneClick,
|
onPaneClick,
|
||||||
|
onPaneScroll,
|
||||||
onPaneContextMenu,
|
onPaneContextMenu,
|
||||||
}: GraphViewProps) => {
|
}: GraphViewProps) => {
|
||||||
const isInitialised = useRef<boolean>(false);
|
const isInitialised = useRef<boolean>(false);
|
||||||
@@ -155,6 +157,13 @@ const GraphView = ({
|
|||||||
[onPaneContextMenu]
|
[onPaneContextMenu]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const onZoomPaneScroll = useCallback(
|
||||||
|
(event: WheelEvent) => {
|
||||||
|
onPaneScroll?.(event);
|
||||||
|
},
|
||||||
|
[onPaneScroll]
|
||||||
|
);
|
||||||
|
|
||||||
useResizeHandler(rendererNode);
|
useResizeHandler(rendererNode);
|
||||||
useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });
|
useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });
|
||||||
useElementUpdater(elements);
|
useElementUpdater(elements);
|
||||||
@@ -279,6 +288,7 @@ const GraphView = ({
|
|||||||
className="react-flow__zoompane"
|
className="react-flow__zoompane"
|
||||||
onClick={onZoomPaneClick}
|
onClick={onZoomPaneClick}
|
||||||
onContextMenu={onZoomPaneContextMenu}
|
onContextMenu={onZoomPaneContextMenu}
|
||||||
|
onWheel={onZoomPaneScroll}
|
||||||
ref={zoomPane}
|
ref={zoomPane}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent } from 'react';
|
import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent, WheelEvent } from 'react';
|
||||||
import cc from 'classcat';
|
import cc from 'classcat';
|
||||||
|
|
||||||
const nodeEnv: string = process.env.NODE_ENV as string;
|
const nodeEnv: string = process.env.NODE_ENV as string;
|
||||||
@@ -56,6 +56,7 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
|
|||||||
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
|
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
|
||||||
onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void;
|
onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void;
|
||||||
onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void;
|
onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void;
|
||||||
|
onPaneScroll?: (event?: WheelEvent) => void;
|
||||||
onPaneClick?: (event: MouseEvent) => void;
|
onPaneClick?: (event: MouseEvent) => void;
|
||||||
onPaneContextMenu?: (event: MouseEvent) => void;
|
onPaneContextMenu?: (event: MouseEvent) => void;
|
||||||
nodeTypes: NodeTypesType;
|
nodeTypes: NodeTypesType;
|
||||||
@@ -130,6 +131,7 @@ const ReactFlow = ({
|
|||||||
zoomOnDoubleClick,
|
zoomOnDoubleClick,
|
||||||
paneMoveable,
|
paneMoveable,
|
||||||
onPaneClick,
|
onPaneClick,
|
||||||
|
onPaneScroll,
|
||||||
onPaneContextMenu,
|
onPaneContextMenu,
|
||||||
}: ReactFlowProps) => {
|
}: ReactFlowProps) => {
|
||||||
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);
|
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);
|
||||||
@@ -180,6 +182,7 @@ const ReactFlow = ({
|
|||||||
zoomOnDoubleClick={zoomOnDoubleClick}
|
zoomOnDoubleClick={zoomOnDoubleClick}
|
||||||
paneMoveable={paneMoveable}
|
paneMoveable={paneMoveable}
|
||||||
onPaneClick={onPaneClick}
|
onPaneClick={onPaneClick}
|
||||||
|
onPaneScroll={onPaneScroll}
|
||||||
onPaneContextMenu={onPaneContextMenu}
|
onPaneContextMenu={onPaneContextMenu}
|
||||||
onSelectionDragStart={onSelectionDragStart}
|
onSelectionDragStart={onSelectionDragStart}
|
||||||
onSelectionDrag={onSelectionDrag}
|
onSelectionDrag={onSelectionDrag}
|
||||||
|
|||||||
Reference in New Issue
Block a user