From 0044a14ac1e96cc8598a2af9caf6803efdacb205 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Thu, 13 Oct 2022 10:38:16 +0200 Subject: [PATCH] feat(core): add dragging class to pane --- .../src/container/SelectionPane/SelectionPane.vue | 1 + packages/core/src/container/Viewport/Viewport.vue | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/core/src/container/SelectionPane/SelectionPane.vue b/packages/core/src/container/SelectionPane/SelectionPane.vue index 781229c7..02c9b3f5 100644 --- a/packages/core/src/container/SelectionPane/SelectionPane.vue +++ b/packages/core/src/container/SelectionPane/SelectionPane.vue @@ -88,6 +88,7 @@ export default {
('viewport', null) let isZoomingOrPanning = $ref(false) +let isDragging = $ref(false) + const viewChanged = (prevTransform: ViewpaneTransform, eventTransform: ZoomTransform): boolean => (prevTransform.x !== eventTransform.x && !isNaN(eventTransform.x)) || (prevTransform.y !== eventTransform.y && !isNaN(eventTransform.y)) || @@ -114,12 +116,19 @@ onMounted(() => { isZoomingOrPanning = true const flowTransform = eventToFlowTransform(event.transform) + + if (event.sourceEvent?.type === 'mousedown') { + isDragging = true + } + transform = flowTransform + emits.moveStart({ event, flowTransform }) }) d3Zoom.on('end', (event: D3ZoomEvent) => { isZoomingOrPanning = false + isDragging = false if (viewChanged(transform, event.transform)) { const flowTransform = eventToFlowTransform(event.transform) @@ -177,6 +186,8 @@ onMounted(() => { const zoomScroll = zoomKeyPressed.value || zoomOnScroll const pinchZoom = zoomOnPinch && event.ctrlKey + if (event.button === 1 && event.type === 'mousedown' && (event.target as HTMLElement)?.closest(`.vue-flow__node`)) return true + // if all interactions are disabled, we prevent all zoom events if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) return false @@ -201,7 +212,7 @@ onMounted(() => { if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) return false // default filter for d3-zoom - return (!event.ctrlKey || event.type === 'wheel') && !event.button + return (!event.ctrlKey || event.type === 'wheel') && (!event.button || event.button <= 1) }) }) @@ -217,6 +228,6 @@ export default { - +