diff --git a/examples/svelte/src/routes/overview/+page.svelte b/examples/svelte/src/routes/overview/+page.svelte index d11381d3..36027a67 100644 --- a/examples/svelte/src/routes/overview/+page.svelte +++ b/examples/svelte/src/routes/overview/+page.svelte @@ -9,7 +9,9 @@ Panel, SelectionMode, type NodeTypes, - type EdgeTypes + type EdgeTypes, + type Node, + type Edge } from '@xyflow/svelte'; import CustomNode from './CustomNode.svelte'; @@ -25,7 +27,7 @@ custom: CustomEdge }; - const nodes = writable([ + const nodes = writable([ { id: '1', type: 'input', @@ -74,7 +76,7 @@ } ]); - const edges = writable([ + const edges = writable([ { id: '1-2', type: 'default', diff --git a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte index 39c8a73d..c7390408 100644 --- a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte +++ b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte @@ -4,7 +4,7 @@ import { useStore } from '$lib/store'; import BezierEdge from '$lib/components/edges/BezierEdge.svelte'; - import type { EdgeLayouted, EdgeProps } from '$lib/types'; + import type { EdgeLayouted } from '$lib/types'; type $$Props = EdgeLayouted; @@ -18,6 +18,7 @@ export let animated: $$Props['animated'] = false; export let selected: $$Props['selected'] = false; export let selectable: $$Props['selectable'] = true; + export let hidden: $$Props['hidden'] = false; export let label: $$Props['label'] = undefined; export let labelStyle: $$Props['labelStyle'] = undefined; export let markerStart: $$Props['markerStart'] = undefined; @@ -52,39 +53,41 @@ - - - +{#if !hidden} + + + +{/if} diff --git a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte index a3b66963..a629c107 100644 --- a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte +++ b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte @@ -23,6 +23,7 @@ export let draggable: NodeWrapperProps['draggable'] = undefined; export let selectable: NodeWrapperProps['selectable'] = undefined; export let connectable: NodeWrapperProps['connectable'] = true; + export let hidden: NodeWrapperProps['hidden'] = false; export let dragging: boolean = false; export let resizeObserver: NodeWrapperProps['resizeObserver'] = null; export let style: NodeWrapperProps['style'] = undefined; @@ -79,6 +80,8 @@ addSelectedNodes([id]); } + // @todo: support multiselection + dispatchEvent('nodeclick'); } // @todo: add selectable state @@ -86,48 +89,50 @@ -
dispatchEvent('nodemouseenter')} - on:mouseleave={() => dispatchEvent('nodemouseleave')} - on:mousemove={() => dispatchEvent('nodemousemove')} -> - -
+{#if !hidden} +
dispatchEvent('nodemouseenter')} + on:mouseleave={() => dispatchEvent('nodemouseleave')} + on:mousemove={() => dispatchEvent('nodemousemove')} + > + +
+{/if} diff --git a/packages/svelte/src/lib/components/NodeWrapper/types.ts b/packages/svelte/src/lib/components/NodeWrapper/types.ts index 6bb3759e..02788d7a 100644 --- a/packages/svelte/src/lib/components/NodeWrapper/types.ts +++ b/packages/svelte/src/lib/components/NodeWrapper/types.ts @@ -19,6 +19,7 @@ export type NodeWrapperProps = Pick< | 'sourcePosition' | 'targetPosition' | 'dragHandle' + | 'hidden' > & { positionOrigin?: XYPosition; 'on:nodeclick'?: (event: MouseEvent) => void; diff --git a/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte b/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte index 3d212dba..bc30ea1a 100644 --- a/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte +++ b/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte @@ -43,6 +43,7 @@ id={node.id} data={node.data} selected={!!node.selected} + hidden={!!node.hidden} draggable={!!(node.draggable || ($nodesDraggable && typeof node.draggable === 'undefined'))} selectable={!!( node.selectable || diff --git a/packages/svelte/src/lib/types/edges.ts b/packages/svelte/src/lib/types/edges.ts index 3f68b509..19e7e47f 100644 --- a/packages/svelte/src/lib/types/edges.ts +++ b/packages/svelte/src/lib/types/edges.ts @@ -68,6 +68,7 @@ export type EdgeLayouted = Pick< | 'sourceHandle' | 'targetHandle' | 'ariaLabel' + | 'hidden' > & EdgePosition & { sourceHandleId?: string | null;