From ec0f3ef0e428cceafc63da9523128f34aeb46d48 Mon Sep 17 00:00:00 2001 From: Braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Wed, 6 Apr 2022 10:59:50 +0200 Subject: [PATCH] fix: Selection not working twice in a row --- .../NodesSelection/NodesSelection.vue | 41 ++++++++++--------- .../UserSelection/UserSelection.vue | 29 +++++++++---- .../container/SelectionPane/SelectionPane.vue | 4 +- package/src/store/actions.ts | 36 +++++++++------- 4 files changed, 67 insertions(+), 43 deletions(-) diff --git a/package/src/components/NodesSelection/NodesSelection.vue b/package/src/components/NodesSelection/NodesSelection.vue index ebda4ca9..121292e1 100644 --- a/package/src/components/NodesSelection/NodesSelection.vue +++ b/package/src/components/NodesSelection/NodesSelection.vue @@ -3,40 +3,41 @@ import { DraggableCore, DraggableEventListener } from '@braks/revue-draggable' import { useVueFlow } from '../../composables' import { getRectOfNodes } from '../../utils' -const { id, store } = useVueFlow() +const { store } = useVueFlow() + const selectedNodesBBox = computed(() => getRectOfNodes(store.getSelectedNodes)) + const innerStyle = computed(() => ({ width: `${selectedNodesBBox.value.width}px`, height: `${selectedNodesBBox.value.height}px`, top: `${selectedNodesBBox.value.y}px`, left: `${selectedNodesBBox.value.x}px`, })) -watch(selectedNodesBBox, (v) => (store.selectedNodesBbox = v)) -const onStart: DraggableEventListener = ({ event }) => - store.hooks.selectionDragStart.trigger({ event, nodes: store.getSelectedNodes }) -const onDrag: DraggableEventListener = ({ event, data: { deltaX, deltaY } }) => { - nextTick(() => { - store.hooks.selectionDrag.trigger({ event, nodes: store.getSelectedNodes }) - store.updateNodePosition({ diff: { x: deltaX, y: deltaY }, dragging: true }) - }) -} -const onStop: DraggableEventListener = ({ event }) => { - store.hooks.selectionDragStop.trigger({ event, nodes: store.getSelectedNodes }) - store.getSelectedNodes.forEach((node) => (node.dragging = false)) -} -const onContextMenu = (event: MouseEvent) => store.hooks.selectionContextMenu.trigger({ event, nodes: store.getSelectedNodes }) const transform = computed(() => `translate(${store.transform[0]}px,${store.transform[1]}px) scale(${store.transform[2]})`) + const scale = controlledComputed( () => store.transform[2], () => store.transform[2], ) const scaleDebounced = debouncedRef(scale, 5) -const el = templateRef('el', null) -onMounted(() => { - el.value.click() -}) +watch(selectedNodesBBox, (v) => (store.selectedNodesBbox = v)) + +const onStart: DraggableEventListener = ({ event }) => + store.hooks.selectionDragStart.trigger({ event, nodes: store.getSelectedNodes }) + +const onDrag: DraggableEventListener = ({ event, data: { deltaX, deltaY } }) => { + store.hooks.selectionDrag.trigger({ event, nodes: store.getSelectedNodes }) + store.updateNodePosition({ diff: { x: deltaX, y: deltaY }, dragging: true }) +} + +const onStop: DraggableEventListener = ({ event }) => { + store.hooks.selectionDragStop.trigger({ event, nodes: store.getSelectedNodes }) + store.getSelectedNodes.forEach((node) => (node.dragging = false)) +} + +const onContextMenu = (event: MouseEvent) => store.hooks.selectionContextMenu.trigger({ event, nodes: store.getSelectedNodes })