feat(svelte): add zIndexMode
This commit is contained in:
@@ -692,5 +692,11 @@ export interface ReactFlowProps<NodeType extends Node = Node, EdgeType extends E
|
|||||||
* Allows localization, customization of ARIA descriptions, control labels, minimap labels, and other UI strings.
|
* Allows localization, customization of ARIA descriptions, control labels, minimap labels, and other UI strings.
|
||||||
*/
|
*/
|
||||||
ariaLabelConfig?: Partial<AriaLabelConfig>;
|
ariaLabelConfig?: Partial<AriaLabelConfig>;
|
||||||
|
/**
|
||||||
|
* 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;
|
zIndexMode?: ZIndexMode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,6 +96,7 @@
|
|||||||
ariaLabelConfig,
|
ariaLabelConfig,
|
||||||
autoPanSpeed,
|
autoPanSpeed,
|
||||||
panOnScrollSpeed,
|
panOnScrollSpeed,
|
||||||
|
zIndexMode,
|
||||||
...divAttributes
|
...divAttributes
|
||||||
} = $derived(rest);
|
} = $derived(rest);
|
||||||
/* eslint-enable @typescript-eslint/no-unused-vars */
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ import type {
|
|||||||
OnReconnect,
|
OnReconnect,
|
||||||
OnReconnectStart,
|
OnReconnectStart,
|
||||||
OnReconnectEnd,
|
OnReconnectEnd,
|
||||||
AriaLabelConfig
|
AriaLabelConfig,
|
||||||
|
ZIndexMode
|
||||||
} from '@xyflow/system';
|
} from '@xyflow/system';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
@@ -500,4 +501,11 @@ export type SvelteFlowProps<
|
|||||||
* Allows localization, customization of ARIA descriptions, control labels, minimap labels, and other UI strings.
|
* Allows localization, customization of ARIA descriptions, control labels, minimap labels, and other UI strings.
|
||||||
*/
|
*/
|
||||||
ariaLabelConfig?: Partial<AriaLabelConfig>;
|
ariaLabelConfig?: Partial<AriaLabelConfig>;
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -62,7 +62,9 @@ export function createStore<NodeType extends Node = Node, EdgeType extends Edge
|
|||||||
store.nodeLookup,
|
store.nodeLookup,
|
||||||
store.parentLookup,
|
store.parentLookup,
|
||||||
store.domNode,
|
store.domNode,
|
||||||
store.nodeOrigin
|
store.nodeOrigin,
|
||||||
|
store.nodeExtent,
|
||||||
|
store.zIndexMode
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!updatedInternals) {
|
if (!updatedInternals) {
|
||||||
@@ -71,7 +73,8 @@ export function createStore<NodeType extends Node = Node, EdgeType extends Edge
|
|||||||
|
|
||||||
updateAbsolutePositions(store.nodeLookup, store.parentLookup, {
|
updateAbsolutePositions(store.nodeLookup, store.parentLookup, {
|
||||||
nodeOrigin: store.nodeOrigin,
|
nodeOrigin: store.nodeOrigin,
|
||||||
nodeExtent: store.nodeExtent
|
nodeExtent: store.nodeExtent,
|
||||||
|
zIndexMode: store.zIndexMode
|
||||||
});
|
});
|
||||||
|
|
||||||
if (store.fitViewQueued) {
|
if (store.fitViewQueued) {
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ import {
|
|||||||
type OnReconnect,
|
type OnReconnect,
|
||||||
type OnReconnectStart,
|
type OnReconnectStart,
|
||||||
type OnReconnectEnd,
|
type OnReconnectEnd,
|
||||||
type AriaLabelConfig
|
type AriaLabelConfig,
|
||||||
|
type ZIndexMode
|
||||||
} from '@xyflow/system';
|
} from '@xyflow/system';
|
||||||
|
|
||||||
import DefaultNode from '$lib/components/nodes/DefaultNode.svelte';
|
import DefaultNode from '$lib/components/nodes/DefaultNode.svelte';
|
||||||
@@ -116,13 +117,15 @@ export function getInitialStore<NodeType extends Node = Node, EdgeType extends E
|
|||||||
panZoom: PanZoomInstance | null = $state.raw(null);
|
panZoom: PanZoomInstance | null = $state.raw(null);
|
||||||
width = $state.raw<number>(signals.width ?? 0);
|
width = $state.raw<number>(signals.width ?? 0);
|
||||||
height = $state.raw<number>(signals.height ?? 0);
|
height = $state.raw<number>(signals.height ?? 0);
|
||||||
|
zIndexMode = $state.raw<ZIndexMode>(signals.props.zIndexMode ?? 'auto');
|
||||||
|
|
||||||
nodesInitialized: boolean = $derived.by(() => {
|
nodesInitialized: boolean = $derived.by(() => {
|
||||||
const nodesInitialized = adoptUserNodes(signals.nodes, this.nodeLookup, this.parentLookup, {
|
const nodesInitialized = adoptUserNodes(signals.nodes, this.nodeLookup, this.parentLookup, {
|
||||||
nodeExtent: this.nodeExtent,
|
nodeExtent: this.nodeExtent,
|
||||||
nodeOrigin: this.nodeOrigin,
|
nodeOrigin: this.nodeOrigin,
|
||||||
elevateNodesOnSelect: signals.props.elevateNodesOnSelect ?? true,
|
elevateNodesOnSelect: signals.props.elevateNodesOnSelect ?? true,
|
||||||
checkEquality: true
|
checkEquality: true,
|
||||||
|
zIndexMode: this.zIndexMode
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.fitViewQueued && nodesInitialized) {
|
if (this.fitViewQueued && nodesInitialized) {
|
||||||
@@ -226,7 +229,8 @@ export function getInitialStore<NodeType extends Node = Node, EdgeType extends E
|
|||||||
connectionMode,
|
connectionMode,
|
||||||
onerror,
|
onerror,
|
||||||
onlyRenderVisibleElements,
|
onlyRenderVisibleElements,
|
||||||
defaultEdgeOptions
|
defaultEdgeOptions,
|
||||||
|
zIndexMode
|
||||||
} = this;
|
} = this;
|
||||||
|
|
||||||
let visibleNodes: Map<string, InternalNode<NodeType>>;
|
let visibleNodes: Map<string, InternalNode<NodeType>>;
|
||||||
@@ -239,6 +243,7 @@ export function getInitialStore<NodeType extends Node = Node, EdgeType extends E
|
|||||||
nodeLookup,
|
nodeLookup,
|
||||||
connectionMode,
|
connectionMode,
|
||||||
elevateEdgesOnSelect: signals.props.elevateEdgesOnSelect ?? true,
|
elevateEdgesOnSelect: signals.props.elevateEdgesOnSelect ?? true,
|
||||||
|
zIndexMode,
|
||||||
onerror
|
onerror
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import {
|
|||||||
isEdgeVisible,
|
isEdgeVisible,
|
||||||
type NodeLookup,
|
type NodeLookup,
|
||||||
type OnError,
|
type OnError,
|
||||||
type Transform
|
type Transform,
|
||||||
|
type ZIndexMode
|
||||||
} from '@xyflow/system';
|
} from '@xyflow/system';
|
||||||
|
|
||||||
export function getVisibleNodes<NodeType extends Node = Node>(
|
export function getVisibleNodes<NodeType extends Node = Node>(
|
||||||
@@ -42,6 +43,7 @@ export interface EdgeLayoutAllOptions<NodeType extends Node = Node, EdgeType ext
|
|||||||
transform: never;
|
transform: never;
|
||||||
width: never;
|
width: never;
|
||||||
height: never;
|
height: never;
|
||||||
|
zIndexMode: never;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EdgeLayoutOnlyVisibleOptions<
|
export interface EdgeLayoutOnlyVisibleOptions<
|
||||||
@@ -53,6 +55,7 @@ export interface EdgeLayoutOnlyVisibleOptions<
|
|||||||
width: number;
|
width: number;
|
||||||
height: number;
|
height: number;
|
||||||
onlyRenderVisible: true;
|
onlyRenderVisible: true;
|
||||||
|
zIndexMode: ZIndexMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type EdgeLayoutOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> =
|
export type EdgeLayoutOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> =
|
||||||
@@ -70,7 +73,8 @@ export function getLayoutedEdges<NodeType extends Node = Node, EdgeType extends
|
|||||||
connectionMode,
|
connectionMode,
|
||||||
onerror,
|
onerror,
|
||||||
onlyRenderVisible,
|
onlyRenderVisible,
|
||||||
elevateEdgesOnSelect
|
elevateEdgesOnSelect,
|
||||||
|
zIndexMode
|
||||||
} = options;
|
} = options;
|
||||||
const layoutedEdges = new Map<string, EdgeLayouted<EdgeType>>();
|
const layoutedEdges = new Map<string, EdgeLayouted<EdgeType>>();
|
||||||
for (const edge of edges) {
|
for (const edge of edges) {
|
||||||
@@ -134,7 +138,8 @@ export function getLayoutedEdges<NodeType extends Node = Node, EdgeType extends
|
|||||||
zIndex: edge.zIndex ?? defaultEdgeOptions.zIndex,
|
zIndex: edge.zIndex ?? defaultEdgeOptions.zIndex,
|
||||||
sourceNode,
|
sourceNode,
|
||||||
targetNode,
|
targetNode,
|
||||||
elevateOnSelect: elevateEdgesOnSelect
|
elevateOnSelect: elevateEdgesOnSelect,
|
||||||
|
zIndexMode
|
||||||
}),
|
}),
|
||||||
sourceNode,
|
sourceNode,
|
||||||
targetNode,
|
targetNode,
|
||||||
|
|||||||
Reference in New Issue
Block a user