diff --git a/packages/system/src/types/nodes.ts b/packages/system/src/types/nodes.ts index 52731a07..9d2359f3 100644 --- a/packages/system/src/types/nodes.ts +++ b/packages/system/src/types/nodes.ts @@ -81,6 +81,7 @@ export type NodeDragItem = { parentNode?: string; dragging?: boolean; origin?: NodeOrigin; + expandParent?: boolean; }; export type NodeOrigin = [number, number]; diff --git a/packages/system/src/utils/graph.ts b/packages/system/src/utils/graph.ts index 3da50ebc..fb7d74c2 100644 --- a/packages/system/src/utils/graph.ts +++ b/packages/system/src/utils/graph.ts @@ -227,7 +227,7 @@ export function calcNextPosition( : parentPos; } - if (node.extent === 'parent') { + if (node.extent === 'parent' && !node.expandParent) { if (node.parentNode && node.width && node.height) { const currNodeOrigin = node.origin || nodeOrigin; @@ -245,7 +245,7 @@ export function calcNextPosition( onError?.('005', errorMessages['error005']()); currentExtent = clampedNodeExtent; } - } else if (node.extent && node.parentNode) { + } else if (node.extent && node.parentNode && node.extent !== 'parent') { currentExtent = [ [node.extent[0][0] + parentPos.x, node.extent[0][1] + parentPos.y], [node.extent[1][0] + parentPos.x, node.extent[1][1] + parentPos.y], diff --git a/packages/system/src/xydrag/utils.ts b/packages/system/src/xydrag/utils.ts index 05d49f74..fbf0e8f9 100644 --- a/packages/system/src/xydrag/utils.ts +++ b/packages/system/src/xydrag/utils.ts @@ -65,6 +65,7 @@ export function getDragItems( width: n.width, height: n.height, origin: n.origin, + expandParent: n.expandParent, })); }