diff --git a/examples/react/src/App/routes.ts b/examples/react/src/App/routes.ts index 886eecbd..812f2e9f 100644 --- a/examples/react/src/App/routes.ts +++ b/examples/react/src/App/routes.ts @@ -60,6 +60,7 @@ import DevTools from '../examples/DevTools'; import Redux from '../examples/Redux'; import MovingHandles from '../examples/MovingHandles'; import DetachedHandle from '../examples/DetachedHandle'; +import ZIndexMode from '../examples/ZIndexMode'; export interface IRoute { name: string; @@ -378,6 +379,11 @@ const routes: IRoute[] = [ path: 'use-key-press', component: UseKeyPress, }, + { + name: 'zIndexMode', + path: 'z-index-mode', + component: ZIndexMode, + }, ]; export default routes; diff --git a/examples/react/src/examples/ColorMode/index.tsx b/examples/react/src/examples/ColorMode/index.tsx index eae8ad86..f867c650 100644 --- a/examples/react/src/examples/ColorMode/index.tsx +++ b/examples/react/src/examples/ColorMode/index.tsx @@ -15,8 +15,6 @@ import { Position, } from '@xyflow/react'; -import './style.css'; - const nodeDefaults = { sourcePosition: Position.Right, targetPosition: Position.Left, diff --git a/examples/react/src/examples/ColorMode/style.css b/examples/react/src/examples/ColorMode/style.css deleted file mode 100644 index e69de29b..00000000 diff --git a/examples/react/src/examples/ZIndexMode/index.tsx b/examples/react/src/examples/ZIndexMode/index.tsx new file mode 100644 index 00000000..5b5477d9 --- /dev/null +++ b/examples/react/src/examples/ZIndexMode/index.tsx @@ -0,0 +1,88 @@ +import { ChangeEventHandler, useCallback, useState } from 'react'; +import { + ReactFlow, + addEdge, + Node, + useNodesState, + useEdgesState, + OnConnect, + Edge, + MiniMap, + Background, + Controls, + Position, + ZIndexMode, + Panel, +} from '@xyflow/react'; + +const nodeDefaults = { + sourcePosition: Position.Right, + targetPosition: Position.Left, +}; + +const initialNodes: Node[] = [ + { id: 'A', type: 'input', position: { x: 0, y: 150 }, data: { label: 'A' }, ...nodeDefaults }, + { id: 'B', position: { x: 250, y: 0 }, data: { label: 'B' }, ...nodeDefaults }, + { id: 'C', position: { x: 250, y: 150 }, data: { label: 'C' }, ...nodeDefaults }, + + // group 1 + { id: 'D', position: { x: 0, y: 300 }, width: 200, height: 200, data: { label: 'D' }, ...nodeDefaults }, + { id: 'E', parentId: 'D', position: { x: 10, y: 10 }, data: { label: 'E' }, ...nodeDefaults }, + + // group 2 + { id: 'F', position: { x: 250, y: 300 }, width: 200, height: 200, data: { label: 'F' }, ...nodeDefaults }, + { id: 'G', parentId: 'F', position: { x: 10, y: 10 }, data: { label: 'G' }, ...nodeDefaults }, + + // group 3 + { id: 'H', position: { x: 500, y: 300 }, width: 200, height: 200, data: { label: 'H' }, ...nodeDefaults }, + { id: 'I', parentId: 'H', position: { x: 10, y: 10 }, data: { label: 'I' }, ...nodeDefaults }, +]; + +const initialEdges: Edge[] = [ + { + id: 'A-B', + source: 'A', + target: 'B', + }, + { + id: 'A-C', + source: 'A', + target: 'C', + }, +]; + +function ZIndexModeFlow() { + const [zIndexMode, setZIndexMode] = useState('auto'); + const [nodes, , onNodesChange] = useNodesState(initialNodes); + const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + + const onConnect: OnConnect = useCallback((params) => setEdges((eds) => addEdge(params, eds)), [setEdges]); + + const onChange: ChangeEventHandler = (evt) => setZIndexMode(evt.target.value as ZIndexMode); + + return ( + + + + + + + + + + ); +} + +export default ZIndexModeFlow; diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index b4a67f2e..03fe4c6c 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -113,6 +113,7 @@ export { type SetViewport, type FitBounds, type HandleConnection, + type ZIndexMode, } from '@xyflow/system'; // we need this workaround to prevent a duplicate identifier error diff --git a/packages/svelte/src/lib/index.ts b/packages/svelte/src/lib/index.ts index 815803f7..9665f211 100644 --- a/packages/svelte/src/lib/index.ts +++ b/packages/svelte/src/lib/index.ts @@ -122,7 +122,8 @@ export { type SetCenter, type SetViewport, type FitBounds, - type HandleConnection + type HandleConnection, + type ZIndexMode } from '@xyflow/system'; // system utils