From 9168d7bd751e400aa395dcd32e19d6187d9f6e27 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Sat, 8 Oct 2022 02:01:03 +0200 Subject: [PATCH] fix(store): remove action not properly removing elements --- e2e/cypress/utils/elements.ts | 15 ++++++++------- packages/vue-flow/src/store/actions.ts | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/e2e/cypress/utils/elements.ts b/e2e/cypress/utils/elements.ts index 91584d48..cec58088 100644 --- a/e2e/cypress/utils/elements.ts +++ b/e2e/cypress/utils/elements.ts @@ -8,18 +8,19 @@ export function getElements(xElements = 10, yElements = 10) { for (let y = 0; y < yElements; y++) { for (let x = 0; x < xElements; x++) { - const position = { x: x * 100, y: y * 50 } - const node = { + initialNodes.push({ id: nodeId.toString(), - style: { width: 50, fontSize: 11 }, label: `Node ${nodeId}`, - type: '', - position, + style: (node) => { + const style: Record = { width: `50px`, fontSize: `11px`, zIndex: 1 } + if (node.selected) style.border = '1px solid red' + return style + }, + position: { x: x * 100, y: y * 50 }, data: { randomData: Math.floor(Math.random() * 1e3), }, - } - initialNodes.push(node) + }) if (recentNodeId && nodeId <= xElements * yElements) { initialEdges.push({ diff --git a/packages/vue-flow/src/store/actions.ts b/packages/vue-flow/src/store/actions.ts index 5eca2176..a91311e5 100644 --- a/packages/vue-flow/src/store/actions.ts +++ b/packages/vue-flow/src/store/actions.ts @@ -169,11 +169,23 @@ export default (state: State, getters: ComputedGetters): Actions => { } const removeSelectedNodes: Actions['removeSelectedNodes'] = (nodes) => { - nodeSelectionHandler(nodes, false) + if (!nodes.length) return nodeSelectionHandler(nodes, false) + + const nodeIds = nodes.map((n) => n.id) + + const changedNodes = nodeIds.map((nodeId) => createSelectionChange(nodeId, false)) + + if (changedNodes.length) state.hooks.nodesChange.trigger(changedNodes) } const removeSelectedEdges: Actions['removeSelectedEdges'] = (edges) => { - edgeSelectionHandler(edges, false) + if (!edges.length) edgeSelectionHandler(edges, false) + + const edgeIds = edges.map((e) => e.id) + + const changedEdges = edgeIds.map((edgeId) => createSelectionChange(edgeId, false)) + + if (changedEdges.length) state.hooks.edgesChange.trigger(changedEdges) } const removeSelectedElements: Actions['removeSelectedElements'] = (elements) => {