Skip to content

Commit b85b0ec

Browse files
committedMar 17, 2025
fix(core): reset drag items on drag end (#1798)
* fix(core): reset drag items on drag end Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> * chore(changeset): add Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> --------- Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
1 parent c9fd24d commit b85b0ec

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed
 

‎.changeset/old-moose-fly.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@vue-flow/core": patch
3+
---
4+
5+
Reset drag items on drag end

‎packages/core/src/composables/useDrag.ts

+14-13
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
getEventPosition,
1313
handleNodeClick,
1414
hasSelector,
15-
isUseDragEvent,
1615
snapPosition,
1716
} from '../utils'
1817
import { useGetPointerPosition, useVueFlow } from '.'
@@ -226,8 +225,10 @@ export function useDrag(params: UseDragParams) {
226225
}
227226

228227
const eventEnd = (event: UseDragEvent) => {
229-
if (!isUseDragEvent(event) && !dragStarted && !dragging.value && !multiSelectionActive.value) {
230-
const evt = event as MouseTouchEvent
228+
let isClick = false
229+
230+
if (!dragStarted && !dragging.value && !multiSelectionActive.value) {
231+
const evt = event.sourceEvent as MouseTouchEvent
231232

232233
const pointerPos = getPointerPosition(evt)
233234

@@ -238,19 +239,11 @@ export function useDrag(params: UseDragParams) {
238239
// dispatch a click event if the node was attempted to be dragged but the threshold was not exceeded
239240
if (distance !== 0 && distance <= nodeDragThreshold.value) {
240241
onClick?.(evt)
242+
isClick = true
241243
}
242-
243-
return
244244
}
245245

246-
dragging.value = false
247-
autoPanStarted = false
248-
dragStarted = false
249-
lastPos = { x: undefined, y: undefined }
250-
251-
cancelAnimationFrame(autoPanId)
252-
253-
if (dragItems.length) {
246+
if (dragItems.length && !isClick) {
254247
updateNodePositions(dragItems, false, false)
255248

256249
const [currentNode, nodes] = getEventHandlerParams({
@@ -261,6 +254,14 @@ export function useDrag(params: UseDragParams) {
261254

262255
onStop({ event: event.sourceEvent, node: currentNode, nodes })
263256
}
257+
258+
dragItems = []
259+
dragging.value = false
260+
autoPanStarted = false
261+
dragStarted = false
262+
lastPos = { x: undefined, y: undefined }
263+
264+
cancelAnimationFrame(autoPanId)
264265
}
265266

266267
watch([() => toValue(disabled), el], ([isDisabled, nodeEl], _, onCleanup) => {

0 commit comments

Comments
 (0)
Please sign in to comment.