diff --git a/.changeset/rotten-moons-roll.md b/.changeset/rotten-moons-roll.md new file mode 100644 index 00000000..66e6cdd3 --- /dev/null +++ b/.changeset/rotten-moons-roll.md @@ -0,0 +1,7 @@ +--- +'@xyflow/react': patch +'@xyflow/svelte': patch +'@xyflow/system': patch +--- + +Narrow properties selected, selectable, deletable, draggable of NodeProps type to be required. diff --git a/packages/react/src/components/NodeWrapper/index.tsx b/packages/react/src/components/NodeWrapper/index.tsx index a54a4993..4b0295e9 100644 --- a/packages/react/src/components/NodeWrapper/index.tsx +++ b/packages/react/src/components/NodeWrapper/index.tsx @@ -202,7 +202,7 @@ export function NodeWrapper({ type={nodeType} positionAbsoluteX={internals.positionAbsolute.x} positionAbsoluteY={internals.positionAbsolute.y} - selected={node.selected} + selected={node.selected ?? false} selectable={isSelectable} draggable={isDraggable} deletable={node.deletable ?? true} diff --git a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte index dc571ec2..ed30d5b2 100644 --- a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte +++ b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte @@ -54,7 +54,9 @@ nodeDragThreshold, selectNodesOnDrag, handleNodeSelection, - updateNodeInternals + updateNodeInternals, + elementsSelectable, + nodesDraggable } = store; let nodeRef: HTMLDivElement; @@ -194,14 +196,14 @@ this={nodeComponent} {data} {id} - {selected} - {selectable} - {deletable} + selected={selected ?? false} + selectable={selectable ?? $elementsSelectable ?? true} + deletable={deletable ?? true} {sourcePosition} {targetPosition} {zIndex} {dragging} - {draggable} + draggable={draggable ?? $nodesDraggable ?? true} {dragHandle} {parentId} type={nodeType} diff --git a/packages/system/src/types/nodes.ts b/packages/system/src/types/nodes.ts index b405b5ba..92261205 100644 --- a/packages/system/src/types/nodes.ts +++ b/packages/system/src/types/nodes.ts @@ -88,20 +88,9 @@ export type InternalNodeBase = NodeType & */ export type NodeProps = Pick< NodeType, - | 'id' - | 'data' - | 'width' - | 'height' - | 'sourcePosition' - | 'targetPosition' - | 'selected' - | 'dragHandle' - | 'selectable' - | 'deletable' - | 'draggable' - | 'parentId' + 'id' | 'data' | 'width' | 'height' | 'sourcePosition' | 'targetPosition' | 'dragHandle' | 'parentId' > & - Required> & { + Required> & { /** whether a node is connectable or not */ isConnectable: boolean; /** position absolute x value */