From 31b576ebe71f13b9361f09c13fd3f3f3e41cceb2 Mon Sep 17 00:00:00 2001 From: moklick Date: Tue, 24 Jun 2025 19:58:10 +0200 Subject: [PATCH 1/3] refactor(panel): simplify / fix panel pointer events #5356 --- packages/react/src/components/Panel/index.tsx | 13 +------------ .../svelte/src/lib/container/Panel/Panel.svelte | 10 +--------- packages/system/src/styles/init.css | 4 ++++ 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/packages/react/src/components/Panel/index.tsx b/packages/react/src/components/Panel/index.tsx index 16fe7841..77fc1869 100644 --- a/packages/react/src/components/Panel/index.tsx +++ b/packages/react/src/components/Panel/index.tsx @@ -2,9 +2,6 @@ import { HTMLAttributes, forwardRef } from 'react'; import cc from 'classcat'; import type { PanelPosition } from '@xyflow/system'; -import { useStore } from '../../hooks/useStore'; -import type { ReactFlowState } from '../../types'; - /** * @expand */ @@ -16,8 +13,6 @@ export type PanelProps = HTMLAttributes & { position?: PanelPosition; }; -const selector = (s: ReactFlowState) => (s.userSelectionActive ? 'none' : 'all'); - /** * The `` component helps you position content above the viewport. * It is used internally by the [``](/api-reference/components/minimap) @@ -45,16 +40,10 @@ const selector = (s: ReactFlowState) => (s.userSelectionActive ? 'none' : 'all') */ export const Panel = forwardRef( ({ position = 'top-left', children, className, style, ...rest }, ref) => { - const pointerEvents = useStore(selector); const positionClasses = `${position}`.split('-'); return ( -
+
{children}
); diff --git a/packages/svelte/src/lib/container/Panel/Panel.svelte b/packages/svelte/src/lib/container/Panel/Panel.svelte index 314da233..feabcea2 100644 --- a/packages/svelte/src/lib/container/Panel/Panel.svelte +++ b/packages/svelte/src/lib/container/Panel/Panel.svelte @@ -1,19 +1,11 @@ -
+
{@render children?.()}
diff --git a/packages/system/src/styles/init.css b/packages/system/src/styles/init.css index 7b4b92be..2d342000 100644 --- a/packages/system/src/styles/init.css +++ b/packages/system/src/styles/init.css @@ -265,6 +265,10 @@ svg.xy-flow__connectionline { pointer-events: all; } +.xy-flow__pane.selection .xy-flow__panel { + pointer-events: none; +} + .xy-flow__panel { position: absolute; z-index: 5; From 72dc1d602110947e3db83c37b9a9125ee85cf4bc Mon Sep 17 00:00:00 2001 From: moklick Date: Tue, 24 Jun 2025 20:02:26 +0200 Subject: [PATCH 2/3] chore(changeset): add --- .changeset/friendly-pears-float.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/friendly-pears-float.md diff --git a/.changeset/friendly-pears-float.md b/.changeset/friendly-pears-float.md new file mode 100644 index 00000000..d12d0450 --- /dev/null +++ b/.changeset/friendly-pears-float.md @@ -0,0 +1,7 @@ +--- +'@xyflow/react': patch +'@xyflow/svelte': patch +'@xyflow/system': patch +--- + +Remove pointer events from Panel via CSS From f30c68a2cf31d4a44eb9490864807471b5d5ad20 Mon Sep 17 00:00:00 2001 From: Moritz Klack Date: Tue, 24 Jun 2025 22:06:17 +0200 Subject: [PATCH 3/3] Update friendly-pears-float.md --- .changeset/friendly-pears-float.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/friendly-pears-float.md b/.changeset/friendly-pears-float.md index d12d0450..5f99faac 100644 --- a/.changeset/friendly-pears-float.md +++ b/.changeset/friendly-pears-float.md @@ -4,4 +4,4 @@ '@xyflow/system': patch --- -Remove pointer events from Panel via CSS +Remove pointer events from Panel via CSS while a selection gets dragged