Merge pull request #4957 from xyflow/enhance/node-props

Enhance/node props
This commit is contained in:
Moritz Klack
2025-01-21 15:49:09 +01:00
committed by GitHub
4 changed files with 17 additions and 19 deletions

View File

@@ -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.

View File

@@ -202,7 +202,7 @@ export function NodeWrapper<NodeType extends Node>({
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}

View File

@@ -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}

View File

@@ -88,20 +88,9 @@ export type InternalNodeBase<NodeType extends NodeBase = NodeBase> = NodeType &
*/
export type NodeProps<NodeType extends NodeBase> = Pick<
NodeType,
| 'id'
| 'data'
| 'width'
| 'height'
| 'sourcePosition'
| 'targetPosition'
| 'selected'
| 'dragHandle'
| 'selectable'
| 'deletable'
| 'draggable'
| 'parentId'
'id' | 'data' | 'width' | 'height' | 'sourcePosition' | 'targetPosition' | 'dragHandle' | 'parentId'
> &
Required<Pick<NodeType, 'type' | 'dragging' | 'zIndex'>> & {
Required<Pick<NodeType, 'type' | 'dragging' | 'zIndex' | 'selectable' | 'deletable' | 'selected' | 'draggable'>> & {
/** whether a node is connectable or not */
isConnectable: boolean;
/** position absolute x value */