Skip to content

Commit 012b74c

Browse files
authored
fix: Draggable shouldn't trigger dragEnd without first dragging (#921)
- the `onDragEnd` was called every time a cell was clicked even when user was not even dragging, we should make sure to only trigger `onDragEnd` if a drag actually started to avoid triggering too many events for no reasons
1 parent 1a93a64 commit 012b74c

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/slick.interactions.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,19 @@ export function Draggable(options: DraggableOption) {
107107
}
108108

109109
function userReleased(event: MouseEvent | TouchEvent) {
110-
const { target } = event;
111-
originaldd = Object.assign(originaldd, { target });
112-
executeDragCallbackWhenDefined(onDragEnd, event, originaldd as DragItem);
113110
document.body.removeEventListener('mousemove', userMoved);
114111
document.body.removeEventListener('touchmove', userMoved);
115112
document.body.removeEventListener('mouseup', userReleased);
116113
document.body.removeEventListener('touchend', userReleased);
117114
document.body.removeEventListener('touchcancel', userReleased);
118-
dragStarted = false;
115+
116+
// trigger a dragEnd event only after dragging started and stopped
117+
if (dragStarted) {
118+
const { target } = event;
119+
originaldd = Object.assign(originaldd, { target });
120+
executeDragCallbackWhenDefined(onDragEnd, event, originaldd as DragItem);
121+
dragStarted = false;
122+
}
119123
}
120124

121125
// initialize Slick.MouseWheel by attaching mousewheel event

0 commit comments

Comments
 (0)