Skip to content

Commit 9e9010e

Browse files
Forkestgajus
authored andcommitted
feat: add dragend event (#90)
* Trigger dragend manually if Hammer panning was not initiated yet. * Check for isDraging because Chrome may fire mouseup without mousedown when clicking multiple times in a row.
1 parent 910813e commit 9e9010e

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/Card.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ const Card = (stack, targetElement) => {
4444
let doMove;
4545
let eventEmitter;
4646
let isDraging;
47+
let isPanning;
4748
let lastThrow;
4849
let lastTranslate;
4950
let lastX;
@@ -159,6 +160,14 @@ const Card = (stack, targetElement) => {
159160
eventEmitter.trigger('panstart');
160161
});
161162

163+
targetElement.addEventListener('touchend', () => {
164+
if (isDraging && !isPanning) {
165+
eventEmitter.trigger('dragend', {
166+
target: targetElement
167+
});
168+
}
169+
});
170+
162171
// Disable scrolling while dragging the element on the touch enabled devices.
163172
// @see http://stackoverflow.com/a/12090055/368691
164173
(() => {
@@ -182,13 +191,26 @@ const Card = (stack, targetElement) => {
182191
targetElement.addEventListener('mousedown', () => {
183192
eventEmitter.trigger('panstart');
184193
});
194+
195+
targetElement.addEventListener('mouseup', () => {
196+
if (isDraging && !isPanning) {
197+
eventEmitter.trigger('dragend', {
198+
target: targetElement
199+
});
200+
}
201+
});
185202
}
186203

204+
mc.on('panstart', (event) => {
205+
isPanning = true;
206+
});
207+
187208
mc.on('panmove', (event) => {
188209
eventEmitter.trigger('panmove', event);
189210
});
190211

191212
mc.on('panend', (event) => {
213+
isPanning = false;
192214
eventEmitter.trigger('panend', event);
193215
});
194216

0 commit comments

Comments
 (0)