From 4eb42952f01b947c9d36c25e6b30b7bd98224632 Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 1 Dec 2025 12:11:19 +0100 Subject: [PATCH] feat(svelte): add zIndexMode --- packages/react/src/types/component-props.ts | 6 ++++++ .../src/lib/container/SvelteFlow/Wrapper.svelte | 1 + packages/svelte/src/lib/container/SvelteFlow/types.ts | 10 +++++++++- packages/svelte/src/lib/store/index.ts | 7 +++++-- packages/svelte/src/lib/store/initial-store.svelte.ts | 11 ++++++++--- packages/svelte/src/lib/store/visibleElements.ts | 11 ++++++++--- 6 files changed, 37 insertions(+), 9 deletions(-) diff --git a/packages/react/src/types/component-props.ts b/packages/react/src/types/component-props.ts index 25c6750a..aad916a1 100644 --- a/packages/react/src/types/component-props.ts +++ b/packages/react/src/types/component-props.ts @@ -692,5 +692,11 @@ export interface ReactFlowProps; + /** + * Used to define how z-indexing is calculated for nodes and edges. + * 'auto' is for selections and sub flows, 'basic' for selections only, and 'manual' for no auto z-indexing. + * + * @default 'auto' + */ zIndexMode?: ZIndexMode; } diff --git a/packages/svelte/src/lib/container/SvelteFlow/Wrapper.svelte b/packages/svelte/src/lib/container/SvelteFlow/Wrapper.svelte index 88ba9f1a..b9314774 100644 --- a/packages/svelte/src/lib/container/SvelteFlow/Wrapper.svelte +++ b/packages/svelte/src/lib/container/SvelteFlow/Wrapper.svelte @@ -96,6 +96,7 @@ ariaLabelConfig, autoPanSpeed, panOnScrollSpeed, + zIndexMode, ...divAttributes } = $derived(rest); /* eslint-enable @typescript-eslint/no-unused-vars */ diff --git a/packages/svelte/src/lib/container/SvelteFlow/types.ts b/packages/svelte/src/lib/container/SvelteFlow/types.ts index 0fbd4b18..bcba8961 100644 --- a/packages/svelte/src/lib/container/SvelteFlow/types.ts +++ b/packages/svelte/src/lib/container/SvelteFlow/types.ts @@ -21,7 +21,8 @@ import type { OnReconnect, OnReconnectStart, OnReconnectEnd, - AriaLabelConfig + AriaLabelConfig, + ZIndexMode } from '@xyflow/system'; import type { @@ -500,4 +501,11 @@ export type SvelteFlowProps< * Allows localization, customization of ARIA descriptions, control labels, minimap labels, and other UI strings. */ ariaLabelConfig?: Partial; + /** + * Used to define how z-indexing is calculated for nodes and edges. + * 'auto' is for selections and sub flows, 'basic' for selections only, and 'manual' for no auto z-indexing. + * + * @default 'auto' + */ + zIndexMode?: ZIndexMode; }; diff --git a/packages/svelte/src/lib/store/index.ts b/packages/svelte/src/lib/store/index.ts index 798e87d8..7b108e0d 100644 --- a/packages/svelte/src/lib/store/index.ts +++ b/packages/svelte/src/lib/store/index.ts @@ -62,7 +62,9 @@ export function createStore(signals.width ?? 0); height = $state.raw(signals.height ?? 0); + zIndexMode = $state.raw(signals.props.zIndexMode ?? 'auto'); nodesInitialized: boolean = $derived.by(() => { const nodesInitialized = adoptUserNodes(signals.nodes, this.nodeLookup, this.parentLookup, { nodeExtent: this.nodeExtent, nodeOrigin: this.nodeOrigin, elevateNodesOnSelect: signals.props.elevateNodesOnSelect ?? true, - checkEquality: true + checkEquality: true, + zIndexMode: this.zIndexMode }); if (this.fitViewQueued && nodesInitialized) { @@ -226,7 +229,8 @@ export function getInitialStore>; @@ -239,6 +243,7 @@ export function getInitialStore( @@ -42,6 +43,7 @@ export interface EdgeLayoutAllOptions = @@ -70,7 +73,8 @@ export function getLayoutedEdges>(); for (const edge of edges) { @@ -134,7 +138,8 @@ export function getLayoutedEdges