From 7c026f084ae5a35eb8972e1d8b77dd40c0359141 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Sat, 25 Feb 2023 00:13:53 +0100 Subject: [PATCH] fix(core): prevent selecting nodes on drag when selectable disabled Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> --- packages/core/src/components/Nodes/NodeWrapper.vue | 1 + packages/core/src/composables/useDrag.ts | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/core/src/components/Nodes/NodeWrapper.vue b/packages/core/src/components/Nodes/NodeWrapper.vue index 4d17c5bb..a2b08b6f 100644 --- a/packages/core/src/components/Nodes/NodeWrapper.vue +++ b/packages/core/src/components/Nodes/NodeWrapper.vue @@ -68,6 +68,7 @@ const dragging = useDrag({ id, el: nodeElement, disabled: computed(() => !draggable), + selectable: $$(selectable), onStart(event, node, nodes) { emit.dragStart({ event, node, nodes, intersections }) }, diff --git a/packages/core/src/composables/useDrag.ts b/packages/core/src/composables/useDrag.ts index db6704e0..dadb22fe 100644 --- a/packages/core/src/composables/useDrag.ts +++ b/packages/core/src/composables/useDrag.ts @@ -1,8 +1,7 @@ import type { D3DragEvent, DragBehavior, SubjectPosition } from 'd3-drag' import { drag } from 'd3-drag' import { select } from 'd3-selection' -import type { Ref } from 'vue' -import type { MaybeRef } from '@vueuse/core' +import type { ComputedRef, Ref } from 'vue' import type { NodeDragEvent, NodeDragItem, XYPosition } from '~/types' export type UseDragEvent = D3DragEvent @@ -12,7 +11,8 @@ interface UseDragParams { onDrag: (event: NodeDragEvent['event'], currentNode: NodeDragEvent['node'], nodes: NodeDragEvent['nodes']) => void onStop: (event: NodeDragEvent['event'], currentNode: NodeDragEvent['node'], nodes: NodeDragEvent['nodes']) => void el: Ref - disabled?: MaybeRef + disabled?: ComputedRef + selectable: ComputedRef id?: string } @@ -42,7 +42,7 @@ function useDrag(params: UseDragParams) { updateNodePositions, } = $(useVueFlow()) - const { onStart, onDrag, onStop, el, disabled = false, id } = $(params) + const { onStart, onDrag, onStop, el, disabled, id, selectable } = $(params) const dragging = ref(false) @@ -141,7 +141,7 @@ function useDrag(params: UseDragParams) { } } - if (node && selectNodesOnDrag) { + if (node && selectable && selectNodesOnDrag) { handleNodeClick(node, multiSelectionActive, addSelectedNodes, removeSelectedElements, $$(nodesSelectionActive)) }