@@ -18,9 +18,10 @@ import { useGetPointerPosition, useVueFlow } from '.'
18
18
export type UseDragEvent = D3DragEvent < HTMLDivElement , null , SubjectPosition >
19
19
20
20
interface UseDragParams {
21
- onStart : ( args : Omit < NodeDragEvent , 'intersections' > ) => void
22
- onDrag : ( event : Omit < NodeDragEvent , 'intersections' > ) => void
23
- onStop : ( event : Omit < NodeDragEvent , 'intersections' > ) => void
21
+ onStart : ( event : NodeDragEvent ) => void
22
+ onDrag : ( event : NodeDragEvent ) => void
23
+ onStop : ( event : NodeDragEvent ) => void
24
+ onClick ?: ( event : MouseEvent ) => void
24
25
el : Ref < Element | null >
25
26
disabled ?: MaybeRefOrGetter < boolean >
26
27
selectable ?: MaybeRefOrGetter < boolean >
@@ -57,7 +58,7 @@ export function useDrag(params: UseDragParams) {
57
58
emits,
58
59
} = useVueFlow ( )
59
60
60
- const { onStart, onDrag, onStop, el, disabled, id, selectable, dragHandle } = params
61
+ const { onStart, onDrag, onStop, onClick , el, disabled, id, selectable, dragHandle } = params
61
62
62
63
const dragging = ref ( false )
63
64
@@ -71,6 +72,7 @@ export function useDrag(params: UseDragParams) {
71
72
let mousePosition : XYPosition = { x : 0 , y : 0 }
72
73
let dragEvent : MouseEvent | null = null
73
74
let dragStarted = false
75
+ let dragAborted = false
74
76
75
77
let autoPanId = 0
76
78
let autoPanStarted = false
@@ -223,15 +225,17 @@ export function useDrag(params: UseDragParams) {
223
225
mousePosition = getEventPosition ( event . sourceEvent , containerBounds ! )
224
226
225
227
updateNodes ( pointerPos )
228
+ } else {
229
+ dragAborted = true
226
230
}
227
231
}
228
232
229
233
const eventEnd = ( event : UseDragEvent ) => {
230
234
if ( ! dragStarted ) {
231
- const node = findNode ( id )
232
-
233
- if ( node ) {
234
- emits . nodeClick ( { node , event : event . sourceEvent } )
235
+ // if the node was dragged without any movement, and we're not dragging a selection, we want to emit the node-click event
236
+ if ( dragAborted && onClick ) {
237
+ onClick ?. ( event . sourceEvent )
238
+ dragAborted = false
235
239
}
236
240
237
241
return
@@ -240,6 +244,8 @@ export function useDrag(params: UseDragParams) {
240
244
dragging . value = false
241
245
autoPanStarted = false
242
246
dragStarted = false
247
+ dragAborted = false
248
+
243
249
cancelAnimationFrame ( autoPanId )
244
250
245
251
if ( dragItems . length ) {
0 commit comments