@@ -12,7 +12,6 @@ import {
12
12
getEventPosition ,
13
13
handleNodeClick ,
14
14
hasSelector ,
15
- isUseDragEvent ,
16
15
snapPosition ,
17
16
} from '../utils'
18
17
import { useGetPointerPosition , useVueFlow } from '.'
@@ -226,8 +225,10 @@ export function useDrag(params: UseDragParams) {
226
225
}
227
226
228
227
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
231
232
232
233
const pointerPos = getPointerPosition ( evt )
233
234
@@ -238,19 +239,11 @@ export function useDrag(params: UseDragParams) {
238
239
// dispatch a click event if the node was attempted to be dragged but the threshold was not exceeded
239
240
if ( distance !== 0 && distance <= nodeDragThreshold . value ) {
240
241
onClick ?.( evt )
242
+ isClick = true
241
243
}
242
-
243
- return
244
244
}
245
245
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 ) {
254
247
updateNodePositions ( dragItems , false , false )
255
248
256
249
const [ currentNode , nodes ] = getEventHandlerParams ( {
@@ -261,6 +254,14 @@ export function useDrag(params: UseDragParams) {
261
254
262
255
onStop ( { event : event . sourceEvent , node : currentNode , nodes } )
263
256
}
257
+
258
+ dragItems = [ ]
259
+ dragging . value = false
260
+ autoPanStarted = false
261
+ dragStarted = false
262
+ lastPos = { x : undefined , y : undefined }
263
+
264
+ cancelAnimationFrame ( autoPanId )
264
265
}
265
266
266
267
watch ( [ ( ) => toValue ( disabled ) , el ] , ( [ isDisabled , nodeEl ] , _ , onCleanup ) => {
0 commit comments