From 3064e287e75efab62eaf8657173ca4cc54345f77 Mon Sep 17 00:00:00 2001 From: Braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Fri, 8 Apr 2022 21:09:26 +0200 Subject: [PATCH] fix(nodes): trigger computedPosition watcher when selected changes * z-index will not change back if selected does not trigger a change --- package/src/components/Nodes/NodeWrapper.vue | 10 ++++++++-- package/src/utils/graph.ts | 8 ++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/package/src/components/Nodes/NodeWrapper.vue b/package/src/components/Nodes/NodeWrapper.vue index 4d2159d9..236a187e 100644 --- a/package/src/components/Nodes/NodeWrapper.vue +++ b/package/src/components/Nodes/NodeWrapper.vue @@ -57,12 +57,18 @@ onMounted(() => { }) watch( - [() => node.value.position, () => store.getNode(node.value.parentNode!)], + [ + () => node.value.position, + () => store.getNode(node.value.parentNode!)?.computedPosition, + () => node.value.selected, + () => store.getNode(node.value.parentNode!)?.selected, + ], ([pos, parent]) => { const xyzPos = { ...pos, - z: node.value.dragging || node.value.selected ? 1000 : node.value.computedPosition.z, + z: node.value.dragging || node.value.selected ? 1000 : 0, } + if (parent) { node.value.computedPosition = getXYZPos(parent, xyzPos) } else { diff --git a/package/src/utils/graph.ts b/package/src/utils/graph.ts index 29fb9709..9b988b24 100644 --- a/package/src/utils/graph.ts +++ b/package/src/utils/graph.ts @@ -339,11 +339,11 @@ export const getTransformForBounds = ( return [x, y, clampedZoom] } -export const getXYZPos = (parentNode: GraphNode, computedPosition: XYZPosition): XYZPosition => { +export const getXYZPos = (parentPos: XYZPosition, computedPosition: XYZPosition): XYZPosition => { return { - x: computedPosition.x + parentNode.computedPosition.x, - y: computedPosition.y + parentNode.computedPosition.y, - z: parentNode.computedPosition.z > computedPosition.z ? parentNode.computedPosition.z : computedPosition.z, + x: computedPosition.x + parentPos.x, + y: computedPosition.y + parentPos.y, + z: parentPos.z > computedPosition.z ? parentPos.z : computedPosition.z, } }