ember-sortable 4.0.3 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -7
- package/addon-main.js +2 -0
- package/dist/_app_/modifiers/sortable-group.js +1 -0
- package/dist/_app_/modifiers/sortable-handle.js +1 -0
- package/dist/_app_/modifiers/sortable-item.js +1 -0
- package/dist/_app_/services/ember-sortable-internal-state.js +1 -0
- package/dist/_rollupPluginBabelHelpers-7ae2993d.js +63 -0
- package/dist/_rollupPluginBabelHelpers-7ae2993d.js.map +1 -0
- package/{addon → dist}/modifiers/sortable-group.js +41 -104
- package/dist/modifiers/sortable-group.js.map +1 -0
- package/{addon → dist}/modifiers/sortable-handle.js +9 -3
- package/dist/modifiers/sortable-handle.js.map +1 -0
- package/{addon → dist}/modifiers/sortable-item.js +61 -147
- package/dist/modifiers/sortable-item.js.map +1 -0
- package/{addon/services/ember-sortable.js → dist/services/ember-sortable-internal-state.js} +11 -21
- package/dist/services/ember-sortable-internal-state.js.map +1 -0
- package/{addon → dist}/system/scroll-container.js +8 -7
- package/dist/system/scroll-container.js.map +1 -0
- package/{addon → dist}/system/scroll-parent.js +9 -7
- package/dist/system/scroll-parent.js.map +1 -0
- package/{addon-test-support → dist/test-support}/helpers/drag.js +13 -21
- package/dist/test-support/helpers/drag.js.map +1 -0
- package/{addon-test-support → dist/test-support}/helpers/reorder.js +11 -6
- package/dist/test-support/helpers/reorder.js.map +1 -0
- package/dist/test-support/index.js +5 -0
- package/dist/test-support/index.js.map +1 -0
- package/dist/test-support/utils/keyboard.js +33 -0
- package/dist/test-support/utils/keyboard.js.map +1 -0
- package/{addon-test-support → dist/test-support}/utils/offset.js +5 -3
- package/dist/test-support/utils/offset.js.map +1 -0
- package/dist/utils/constant.js +12 -0
- package/dist/utils/constant.js.map +1 -0
- package/{addon → dist}/utils/coordinate.js +5 -4
- package/dist/utils/coordinate.js.map +1 -0
- package/{addon → dist}/utils/css-calculation.js +5 -3
- package/dist/utils/css-calculation.js.map +1 -0
- package/{addon → dist}/utils/defaults.js +24 -12
- package/dist/utils/defaults.js.map +1 -0
- package/dist/utils/keyboard.js +33 -0
- package/dist/utils/keyboard.js.map +1 -0
- package/package.json +56 -58
- package/.huskyrc +0 -5
- package/CHANGELOG.md +0 -755
- package/CODE_OF_CONDUCT.md +0 -6
- package/MIGRATION_GUIDE_MODIFIERS.md +0 -95
- package/MIGRATION_GUIDE_V2.md +0 -120
- package/Makefile +0 -24
- package/RELEASE.md +0 -60
- package/V2_MIGRATION_RFC.md +0 -1100
- package/addon/utils/constant.js +0 -9
- package/addon/utils/keyboard.js +0 -32
- package/addon-test-support/helpers/index.js +0 -4
- package/addon-test-support/utils/keyboard.js +0 -32
- package/app/modifiers/sortable-group.js +0 -1
- package/app/modifiers/sortable-handle.js +0 -1
- package/app/modifiers/sortable-item.js +0 -1
- package/app/services/ember-sortable-internal-state.js +0 -1
- package/config/environment.js +0 -5
- package/demo.gif +0 -0
- package/index.js +0 -5
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-7ae2993d.js';
|
|
2
2
|
import Modifier from 'ember-modifier';
|
|
3
|
-
import {
|
|
3
|
+
import { defer, Promise as Promise$1 } from 'rsvp';
|
|
4
4
|
import { action, set } from '@ember/object';
|
|
5
|
-
import { DRAG_ACTIONS,
|
|
6
|
-
import {
|
|
5
|
+
import { DRAG_ACTIONS, END_ACTIONS, ELEMENT_CLICK_ACTION } from '../utils/constant.js';
|
|
6
|
+
import { bind, scheduleOnce, throttle, later, run } from '@ember/runloop';
|
|
7
7
|
import { DEBUG } from '@glimmer/env';
|
|
8
|
-
import { getX, getY } from '../utils/coordinate';
|
|
9
|
-
import ScrollContainer from '../system/scroll-container';
|
|
10
|
-
import scrollParent from '../system/scroll-parent';
|
|
11
|
-
import { getBorderSpacing } from '../utils/css-calculation';
|
|
8
|
+
import { getX, getY } from '../utils/coordinate.js';
|
|
9
|
+
import ScrollContainer from '../system/scroll-container.js';
|
|
10
|
+
import scrollParent from '../system/scroll-parent.js';
|
|
11
|
+
import { getBorderSpacing } from '../utils/css-calculation.js';
|
|
12
12
|
import { buildWaiter } from '@ember/test-waiters';
|
|
13
|
-
import { inject
|
|
13
|
+
import { inject } from '@ember/service';
|
|
14
14
|
import { assert, deprecate } from '@ember/debug';
|
|
15
15
|
import { registerDestructor } from '@ember/destroyable';
|
|
16
16
|
import { isTesting } from '@embroider/macros';
|
|
17
17
|
|
|
18
|
+
var _dec, _class, _descriptor;
|
|
18
19
|
const sortableItemWaiter = buildWaiter('sortable-item-waiter');
|
|
19
20
|
|
|
20
21
|
/**
|
|
@@ -36,12 +37,7 @@ const sortableItemWaiter = buildWaiter('sortable-item-waiter');
|
|
|
36
37
|
* {{/each}}
|
|
37
38
|
* </ol>
|
|
38
39
|
*/
|
|
39
|
-
|
|
40
|
-
className = 'sortable-item';
|
|
41
|
-
|
|
42
|
-
@service('ember-sortable-internal-state') sortableService;
|
|
43
|
-
|
|
44
|
-
_sortableGroup;
|
|
40
|
+
let SortableItemModifier = (_dec = inject('ember-sortable-internal-state'), (_class = class SortableItemModifier extends Modifier {
|
|
45
41
|
/**
|
|
46
42
|
* The SortableGroupModifier this item belongs to. Assigned by the group
|
|
47
43
|
* when it inspects all the items in the list
|
|
@@ -51,22 +47,16 @@ export default class SortableItemModifier extends Modifier {
|
|
|
51
47
|
get sortableGroup() {
|
|
52
48
|
if (this._sortableGroup === undefined) {
|
|
53
49
|
this._sortableGroup = this.sortableService.fetchGroup(this.groupName);
|
|
54
|
-
assert(
|
|
55
|
-
`No sortable group named ${this.groupName} found. Please check that the groups and items have the same groupName`,
|
|
56
|
-
this._sortableGroup !== undefined
|
|
57
|
-
);
|
|
50
|
+
assert(`No sortable group named ${this.groupName} found. Please check that the groups and items have the same groupName`, this._sortableGroup !== undefined);
|
|
58
51
|
}
|
|
59
52
|
return this._sortableGroup.groupModifier;
|
|
60
53
|
}
|
|
61
|
-
|
|
62
54
|
get model() {
|
|
63
55
|
return this.named.model;
|
|
64
56
|
}
|
|
65
|
-
|
|
66
57
|
get direction() {
|
|
67
58
|
return this.sortableGroup?.direction;
|
|
68
59
|
}
|
|
69
|
-
|
|
70
60
|
get groupDisabled() {
|
|
71
61
|
return this.sortableGroup?.disabled;
|
|
72
62
|
}
|
|
@@ -110,21 +100,16 @@ export default class SortableItemModifier extends Modifier {
|
|
|
110
100
|
@default false
|
|
111
101
|
*/
|
|
112
102
|
get isDisabled() {
|
|
113
|
-
deprecate(
|
|
114
|
-
'
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
since: {
|
|
122
|
-
available: '2.2.6',
|
|
123
|
-
enabled: '2.2.6',
|
|
124
|
-
},
|
|
103
|
+
deprecate('"isDraggingDisabled" is deprecated. Please migrate to "disabled" named argument', !('isDraggingDisabled' in this.named), {
|
|
104
|
+
id: 'ember-sortable.is-dragging-disabled',
|
|
105
|
+
url: 'https://github.com/adopted-ember-addons/ember-sortable#readme',
|
|
106
|
+
until: '3.0.0',
|
|
107
|
+
for: 'ember-sortable',
|
|
108
|
+
since: {
|
|
109
|
+
available: '2.2.6',
|
|
110
|
+
enabled: '2.2.6'
|
|
125
111
|
}
|
|
126
|
-
);
|
|
127
|
-
|
|
112
|
+
});
|
|
128
113
|
return this.groupDisabled || this.named.disabled || this.named.isDraggingDisabled || false;
|
|
129
114
|
}
|
|
130
115
|
|
|
@@ -142,9 +127,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
142
127
|
get handle() {
|
|
143
128
|
return this.named.handle || '[data-sortable-handle]';
|
|
144
129
|
}
|
|
145
|
-
|
|
146
|
-
handleElement;
|
|
147
|
-
|
|
148
130
|
/**
|
|
149
131
|
* Tolerance, in pixels, for when sorting should start.
|
|
150
132
|
* If specified, sorting will not start until after mouse
|
|
@@ -167,7 +149,7 @@ export default class SortableItemModifier extends Modifier {
|
|
|
167
149
|
* @default false
|
|
168
150
|
* @protected
|
|
169
151
|
*/
|
|
170
|
-
|
|
152
|
+
|
|
171
153
|
get isDragging() {
|
|
172
154
|
return this._isDragging;
|
|
173
155
|
}
|
|
@@ -188,7 +170,7 @@ export default class SortableItemModifier extends Modifier {
|
|
|
188
170
|
@default null
|
|
189
171
|
*/
|
|
190
172
|
get onDragStart() {
|
|
191
|
-
return this.named.onDragStart || (
|
|
173
|
+
return this.named.onDragStart || (item => item);
|
|
192
174
|
}
|
|
193
175
|
|
|
194
176
|
/**
|
|
@@ -199,7 +181,7 @@ export default class SortableItemModifier extends Modifier {
|
|
|
199
181
|
@default null
|
|
200
182
|
*/
|
|
201
183
|
get onDragStop() {
|
|
202
|
-
return this.named.onDragStop || (
|
|
184
|
+
return this.named.onDragStop || (item => item);
|
|
203
185
|
}
|
|
204
186
|
|
|
205
187
|
/**
|
|
@@ -208,7 +190,7 @@ export default class SortableItemModifier extends Modifier {
|
|
|
208
190
|
@type Boolean
|
|
209
191
|
@default false
|
|
210
192
|
*/
|
|
211
|
-
|
|
193
|
+
|
|
212
194
|
get isDropping() {
|
|
213
195
|
return this._isDropping;
|
|
214
196
|
}
|
|
@@ -227,7 +209,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
227
209
|
@type Boolean
|
|
228
210
|
@default false
|
|
229
211
|
*/
|
|
230
|
-
wasDropped = false;
|
|
231
212
|
|
|
232
213
|
/**
|
|
233
214
|
@property isBusy
|
|
@@ -247,7 +228,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
247
228
|
/**
|
|
248
229
|
@method mouseDown
|
|
249
230
|
*/
|
|
250
|
-
@action
|
|
251
231
|
mouseDown(event) {
|
|
252
232
|
if (event.which !== 1) {
|
|
253
233
|
return;
|
|
@@ -255,16 +235,12 @@ export default class SortableItemModifier extends Modifier {
|
|
|
255
235
|
if (event.ctrlKey) {
|
|
256
236
|
return;
|
|
257
237
|
}
|
|
258
|
-
|
|
259
238
|
this._primeDrag(event);
|
|
260
239
|
}
|
|
261
|
-
|
|
262
|
-
@action
|
|
263
240
|
keyDown(event) {
|
|
264
241
|
if (this.isDisabled) {
|
|
265
242
|
return;
|
|
266
243
|
}
|
|
267
|
-
|
|
268
244
|
this.setupHandleElement();
|
|
269
245
|
|
|
270
246
|
// If the event is coming from within the item, we do not want to activate keyboard reorder mode.
|
|
@@ -278,7 +254,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
278
254
|
/**
|
|
279
255
|
@method touchStart
|
|
280
256
|
*/
|
|
281
|
-
@action
|
|
282
257
|
touchStart(event) {
|
|
283
258
|
this._primeDrag(event);
|
|
284
259
|
}
|
|
@@ -291,7 +266,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
291
266
|
if (!el) {
|
|
292
267
|
return;
|
|
293
268
|
}
|
|
294
|
-
|
|
295
269
|
el.style.transition = 'none';
|
|
296
270
|
}
|
|
297
271
|
|
|
@@ -303,10 +277,8 @@ export default class SortableItemModifier extends Modifier {
|
|
|
303
277
|
if (!el) {
|
|
304
278
|
return;
|
|
305
279
|
}
|
|
306
|
-
|
|
307
280
|
delete this._y;
|
|
308
281
|
delete this._x;
|
|
309
|
-
|
|
310
282
|
el.style.transform = '';
|
|
311
283
|
}
|
|
312
284
|
|
|
@@ -318,7 +290,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
318
290
|
if (!el) {
|
|
319
291
|
return;
|
|
320
292
|
}
|
|
321
|
-
|
|
322
293
|
el.style.transition = '';
|
|
323
294
|
}
|
|
324
295
|
|
|
@@ -333,28 +304,21 @@ export default class SortableItemModifier extends Modifier {
|
|
|
333
304
|
if (this.isDisabled) {
|
|
334
305
|
return;
|
|
335
306
|
}
|
|
336
|
-
|
|
337
307
|
if (this.handleElement && !startEvent.target.closest(this.handle)) {
|
|
338
308
|
return;
|
|
339
309
|
}
|
|
340
|
-
|
|
341
310
|
startEvent.preventDefault();
|
|
342
311
|
startEvent.stopPropagation();
|
|
343
|
-
|
|
344
312
|
this._prepareDragListener = bind(this, this._prepareDrag, startEvent);
|
|
345
|
-
|
|
346
|
-
DRAG_ACTIONS.forEach((event) => window.addEventListener(event, this._prepareDragListener));
|
|
347
|
-
|
|
313
|
+
DRAG_ACTIONS.forEach(event => window.addEventListener(event, this._prepareDragListener));
|
|
348
314
|
this._cancelStartDragListener = () => {
|
|
349
|
-
DRAG_ACTIONS.forEach(
|
|
315
|
+
DRAG_ACTIONS.forEach(event => window.removeEventListener(event, this._prepareDragListener));
|
|
350
316
|
};
|
|
351
|
-
|
|
352
317
|
const selfCancellingCallback = () => {
|
|
353
|
-
END_ACTIONS.forEach(
|
|
318
|
+
END_ACTIONS.forEach(event => window.removeEventListener(event, selfCancellingCallback));
|
|
354
319
|
this._cancelStartDragListener();
|
|
355
320
|
};
|
|
356
|
-
|
|
357
|
-
END_ACTIONS.forEach((event) => window.addEventListener(event, selfCancellingCallback));
|
|
321
|
+
END_ACTIONS.forEach(event => window.addEventListener(event, selfCancellingCallback));
|
|
358
322
|
}
|
|
359
323
|
|
|
360
324
|
/**
|
|
@@ -369,9 +333,8 @@ export default class SortableItemModifier extends Modifier {
|
|
|
369
333
|
let distance = this.distance;
|
|
370
334
|
let dx = Math.abs(getX(startEvent) - getX(event));
|
|
371
335
|
let dy = Math.abs(getY(startEvent) - getY(event));
|
|
372
|
-
|
|
373
336
|
if (distance <= dx || distance <= dy) {
|
|
374
|
-
DRAG_ACTIONS.forEach(
|
|
337
|
+
DRAG_ACTIONS.forEach(event => window.removeEventListener(event, this._prepareDragListener));
|
|
375
338
|
this._startDrag(startEvent);
|
|
376
339
|
}
|
|
377
340
|
}
|
|
@@ -387,22 +350,17 @@ export default class SortableItemModifier extends Modifier {
|
|
|
387
350
|
if (this.isBusy) {
|
|
388
351
|
return;
|
|
389
352
|
}
|
|
390
|
-
|
|
391
353
|
let drag = this._makeDragHandler(event);
|
|
392
|
-
let dragThrottled =
|
|
393
|
-
|
|
354
|
+
let dragThrottled = ev => throttle(this, drag, ev, 16, false);
|
|
394
355
|
let drop = () => {
|
|
395
|
-
DRAG_ACTIONS.forEach(
|
|
396
|
-
END_ACTIONS.forEach(
|
|
397
|
-
|
|
356
|
+
DRAG_ACTIONS.forEach(event => window.removeEventListener(event, dragThrottled));
|
|
357
|
+
END_ACTIONS.forEach(event => window.removeEventListener(event, drop));
|
|
398
358
|
run(() => {
|
|
399
359
|
this._drop();
|
|
400
360
|
});
|
|
401
361
|
};
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
END_ACTIONS.forEach((event) => window.addEventListener(event, drop));
|
|
405
|
-
|
|
362
|
+
DRAG_ACTIONS.forEach(event => window.addEventListener(event, dragThrottled));
|
|
363
|
+
END_ACTIONS.forEach(event => window.addEventListener(event, drop));
|
|
406
364
|
this.sortableGroup.prepare();
|
|
407
365
|
set(this, 'isDragging', true);
|
|
408
366
|
this.onDragStart(this.model);
|
|
@@ -414,7 +372,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
414
372
|
@property maxScrollSpeed
|
|
415
373
|
@default 20
|
|
416
374
|
*/
|
|
417
|
-
maxScrollSpeed = 20;
|
|
418
375
|
|
|
419
376
|
_scrollOnEdges(drag) {
|
|
420
377
|
let groupDirection = this.direction;
|
|
@@ -436,9 +393,8 @@ export default class SortableItemModifier extends Modifier {
|
|
|
436
393
|
},
|
|
437
394
|
get bottom() {
|
|
438
395
|
return this.top + this.height;
|
|
439
|
-
}
|
|
396
|
+
}
|
|
440
397
|
};
|
|
441
|
-
|
|
442
398
|
let leadingEdgeKey, trailingEdgeKey, scrollKey, pageKey;
|
|
443
399
|
if (groupDirection === 'x') {
|
|
444
400
|
leadingEdgeKey = 'left';
|
|
@@ -451,7 +407,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
451
407
|
scrollKey = 'scrollTop';
|
|
452
408
|
pageKey = 'pageY';
|
|
453
409
|
}
|
|
454
|
-
|
|
455
410
|
let createFakeEvent = () => {
|
|
456
411
|
if (this._pageX == null && this._pageY == null) {
|
|
457
412
|
return;
|
|
@@ -460,7 +415,7 @@ export default class SortableItemModifier extends Modifier {
|
|
|
460
415
|
pageX: this._pageX,
|
|
461
416
|
pageY: this._pageY,
|
|
462
417
|
clientX: this._pageX,
|
|
463
|
-
clientY: this._pageY
|
|
418
|
+
clientY: this._pageY
|
|
464
419
|
};
|
|
465
420
|
};
|
|
466
421
|
|
|
@@ -471,20 +426,16 @@ export default class SortableItemModifier extends Modifier {
|
|
|
471
426
|
let leadingEdge = itemContainer[leadingEdgeKey];
|
|
472
427
|
let trailingEdge = itemContainer[trailingEdgeKey];
|
|
473
428
|
let scroll = scrollContainer[scrollKey]();
|
|
474
|
-
|
|
475
429
|
let delta = 0;
|
|
476
430
|
if (trailingEdge >= scrollContainer[trailingEdgeKey]) {
|
|
477
431
|
delta = trailingEdge - scrollContainer[trailingEdgeKey];
|
|
478
432
|
} else if (leadingEdge <= scrollContainer[leadingEdgeKey]) {
|
|
479
433
|
delta = leadingEdge - scrollContainer[leadingEdgeKey];
|
|
480
434
|
}
|
|
481
|
-
|
|
482
435
|
if (delta !== 0) {
|
|
483
436
|
let speed = this.maxScrollSpeed;
|
|
484
437
|
delta = Math.min(Math.max(delta, -1 * speed), speed);
|
|
485
|
-
|
|
486
438
|
delta = scrollContainer[scrollKey](scroll + delta) - scroll;
|
|
487
|
-
|
|
488
439
|
let event = createFakeEvent();
|
|
489
440
|
if (event) {
|
|
490
441
|
if (scrollContainer.isWindow) {
|
|
@@ -497,7 +448,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
497
448
|
requestAnimationFrame(checkScrollBounds);
|
|
498
449
|
}
|
|
499
450
|
};
|
|
500
|
-
|
|
501
451
|
if (!this.disableCheckScrollBounds) {
|
|
502
452
|
requestAnimationFrame(checkScrollBounds);
|
|
503
453
|
}
|
|
@@ -515,33 +465,27 @@ export default class SortableItemModifier extends Modifier {
|
|
|
515
465
|
let elementOrigin;
|
|
516
466
|
let scrollOrigin;
|
|
517
467
|
let parentElement = this.element.parentNode;
|
|
518
|
-
|
|
519
468
|
if (groupDirection === 'x') {
|
|
520
469
|
dragOrigin = getX(startEvent);
|
|
521
470
|
elementOrigin = this.x;
|
|
522
471
|
scrollOrigin = parentElement.getBoundingClientRect().left;
|
|
523
|
-
|
|
524
|
-
return (event) => {
|
|
472
|
+
return event => {
|
|
525
473
|
this._pageX = getX(event);
|
|
526
474
|
let dx = this._pageX - dragOrigin;
|
|
527
475
|
let scrollX = parentElement.getBoundingClientRect().left;
|
|
528
476
|
let x = elementOrigin + dx + (scrollOrigin - scrollX);
|
|
529
|
-
|
|
530
477
|
this._drag(x);
|
|
531
478
|
};
|
|
532
479
|
}
|
|
533
|
-
|
|
534
480
|
if (groupDirection === 'y') {
|
|
535
481
|
dragOrigin = getY(startEvent);
|
|
536
482
|
elementOrigin = this.y;
|
|
537
483
|
scrollOrigin = parentElement.getBoundingClientRect().top;
|
|
538
|
-
|
|
539
|
-
return (event) => {
|
|
484
|
+
return event => {
|
|
540
485
|
this._pageY = getY(event);
|
|
541
486
|
let dy = this._pageY - dragOrigin;
|
|
542
487
|
let scrollY = parentElement.getBoundingClientRect().top;
|
|
543
488
|
let y = elementOrigin + dy + (scrollOrigin - scrollY);
|
|
544
|
-
|
|
545
489
|
this._drag(y);
|
|
546
490
|
};
|
|
547
491
|
}
|
|
@@ -563,19 +507,15 @@ export default class SortableItemModifier extends Modifier {
|
|
|
563
507
|
if (!this.element || !this.element) {
|
|
564
508
|
return;
|
|
565
509
|
}
|
|
566
|
-
|
|
567
510
|
const groupDirection = this.direction;
|
|
568
|
-
|
|
569
511
|
if (groupDirection === 'x') {
|
|
570
512
|
let x = this.x;
|
|
571
513
|
let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);
|
|
572
|
-
|
|
573
514
|
this.element.style.transform = `translateX(${dx}px)`;
|
|
574
515
|
}
|
|
575
516
|
if (groupDirection === 'y') {
|
|
576
517
|
let y = this.y;
|
|
577
518
|
let dy = y - this.element.offsetTop;
|
|
578
|
-
|
|
579
519
|
this.element.style.transform = `translateY(${dy}px)`;
|
|
580
520
|
}
|
|
581
521
|
}
|
|
@@ -590,14 +530,12 @@ export default class SortableItemModifier extends Modifier {
|
|
|
590
530
|
}
|
|
591
531
|
let updateInterval = this.updateInterval;
|
|
592
532
|
const groupDirection = this.direction;
|
|
593
|
-
|
|
594
533
|
if (groupDirection === 'x') {
|
|
595
534
|
this.x = dimension;
|
|
596
535
|
}
|
|
597
536
|
if (groupDirection === 'y') {
|
|
598
537
|
this.y = dimension;
|
|
599
538
|
}
|
|
600
|
-
|
|
601
539
|
throttle(this, this.sortableGroup.update, updateInterval);
|
|
602
540
|
}
|
|
603
541
|
|
|
@@ -609,14 +547,10 @@ export default class SortableItemModifier extends Modifier {
|
|
|
609
547
|
if (!this.element) {
|
|
610
548
|
return;
|
|
611
549
|
}
|
|
612
|
-
|
|
613
550
|
let transitionPromise = this._waitForTransition();
|
|
614
|
-
|
|
615
551
|
this._preventClick();
|
|
616
|
-
|
|
617
552
|
set(this, 'isDragging', false);
|
|
618
553
|
set(this, 'isDropping', true);
|
|
619
|
-
|
|
620
554
|
this.sortableGroup.update();
|
|
621
555
|
transitionPromise.then(() => this._complete());
|
|
622
556
|
}
|
|
@@ -626,11 +560,10 @@ export default class SortableItemModifier extends Modifier {
|
|
|
626
560
|
@private
|
|
627
561
|
*/
|
|
628
562
|
_preventClick() {
|
|
629
|
-
const selfCancellingCallback =
|
|
563
|
+
const selfCancellingCallback = event => {
|
|
630
564
|
this.element.removeEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);
|
|
631
565
|
this._preventClickHandler(event);
|
|
632
566
|
};
|
|
633
|
-
|
|
634
567
|
this.element.addEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);
|
|
635
568
|
}
|
|
636
569
|
|
|
@@ -651,13 +584,10 @@ export default class SortableItemModifier extends Modifier {
|
|
|
651
584
|
*/
|
|
652
585
|
_waitForTransition() {
|
|
653
586
|
let waiterToken;
|
|
654
|
-
|
|
655
587
|
if (DEBUG) {
|
|
656
588
|
waiterToken = sortableItemWaiter.beginAsync();
|
|
657
589
|
}
|
|
658
|
-
|
|
659
590
|
let transitionPromise;
|
|
660
|
-
|
|
661
591
|
if (this.isAnimated) {
|
|
662
592
|
const deferred = defer();
|
|
663
593
|
this.element.addEventListener('transitionend', deferred.resolve);
|
|
@@ -666,15 +596,13 @@ export default class SortableItemModifier extends Modifier {
|
|
|
666
596
|
});
|
|
667
597
|
} else {
|
|
668
598
|
const duration = this.isAnimated ? this.transitionDuration : 200;
|
|
669
|
-
transitionPromise = new Promise(
|
|
599
|
+
transitionPromise = new Promise$1(resolve => later(resolve, duration));
|
|
670
600
|
}
|
|
671
|
-
|
|
672
601
|
if (DEBUG) {
|
|
673
602
|
transitionPromise = transitionPromise.finally(() => {
|
|
674
603
|
sortableItemWaiter.endAsync(waiterToken);
|
|
675
604
|
});
|
|
676
605
|
}
|
|
677
|
-
|
|
678
606
|
return transitionPromise;
|
|
679
607
|
}
|
|
680
608
|
|
|
@@ -688,15 +616,12 @@ export default class SortableItemModifier extends Modifier {
|
|
|
688
616
|
set(this, 'wasDropped', true);
|
|
689
617
|
this.sortableGroup.commit();
|
|
690
618
|
}
|
|
691
|
-
|
|
692
619
|
get isAnimated() {
|
|
693
620
|
if (!this.element) {
|
|
694
621
|
return undefined;
|
|
695
622
|
}
|
|
696
|
-
|
|
697
623
|
let el = this.element;
|
|
698
624
|
let transitionProperty = getComputedStyle(el).transitionProperty;
|
|
699
|
-
|
|
700
625
|
return /all|transform/.test(transitionProperty) && this.transitionDuration > 0;
|
|
701
626
|
}
|
|
702
627
|
|
|
@@ -709,18 +634,14 @@ export default class SortableItemModifier extends Modifier {
|
|
|
709
634
|
let el = this.element;
|
|
710
635
|
let rule = getComputedStyle(el).transitionDuration;
|
|
711
636
|
let match = rule.match(/([\d.]+)([ms]*)/);
|
|
712
|
-
|
|
713
637
|
if (match) {
|
|
714
638
|
let value = parseFloat(match[1]);
|
|
715
639
|
let unit = match[2];
|
|
716
|
-
|
|
717
640
|
if (unit === 's') {
|
|
718
641
|
value = value * 1000;
|
|
719
642
|
}
|
|
720
|
-
|
|
721
643
|
return value;
|
|
722
644
|
}
|
|
723
|
-
|
|
724
645
|
return 0;
|
|
725
646
|
}
|
|
726
647
|
|
|
@@ -734,7 +655,6 @@ export default class SortableItemModifier extends Modifier {
|
|
|
734
655
|
let marginLeft = parseFloat(getComputedStyle(this.element).marginLeft);
|
|
735
656
|
this._x = this.element.scrollLeft + this.element.offsetLeft - marginLeft;
|
|
736
657
|
}
|
|
737
|
-
|
|
738
658
|
return this._x;
|
|
739
659
|
}
|
|
740
660
|
set x(value) {
|
|
@@ -753,10 +673,8 @@ export default class SortableItemModifier extends Modifier {
|
|
|
753
673
|
if (this._y === undefined) {
|
|
754
674
|
this._y = this.element.offsetTop;
|
|
755
675
|
}
|
|
756
|
-
|
|
757
676
|
return this._y;
|
|
758
677
|
}
|
|
759
|
-
|
|
760
678
|
set y(value) {
|
|
761
679
|
if (value !== this._y) {
|
|
762
680
|
this._y = value;
|
|
@@ -773,11 +691,9 @@ export default class SortableItemModifier extends Modifier {
|
|
|
773
691
|
let el = this.element;
|
|
774
692
|
let width = el.offsetWidth;
|
|
775
693
|
let elStyles = getComputedStyle(el);
|
|
776
|
-
|
|
777
694
|
width += parseInt(elStyles.marginLeft) + parseInt(elStyles.marginRight); // equal to jQuery.outerWidth(true)
|
|
778
695
|
|
|
779
696
|
width += getBorderSpacing(el).horizontal;
|
|
780
|
-
|
|
781
697
|
return width;
|
|
782
698
|
}
|
|
783
699
|
|
|
@@ -789,76 +705,71 @@ export default class SortableItemModifier extends Modifier {
|
|
|
789
705
|
get height() {
|
|
790
706
|
let el = this.element;
|
|
791
707
|
let height = el.offsetHeight;
|
|
792
|
-
|
|
793
708
|
let marginBottom = parseFloat(getComputedStyle(el).marginBottom);
|
|
794
709
|
height += marginBottom;
|
|
795
|
-
|
|
796
710
|
height += getBorderSpacing(el).vertical;
|
|
797
|
-
|
|
798
711
|
return height;
|
|
799
712
|
}
|
|
800
|
-
|
|
801
713
|
addEventListener() {
|
|
802
714
|
this.element.addEventListener('keydown', this.keyDown);
|
|
803
715
|
this.element.addEventListener('mousedown', this.mouseDown);
|
|
804
716
|
this.element.addEventListener('touchstart', this.touchStart);
|
|
805
717
|
this.listenersRegistered = true;
|
|
806
718
|
}
|
|
807
|
-
|
|
808
719
|
removeEventListener() {
|
|
809
720
|
this.element.removeEventListener('keydown', this.keyDown);
|
|
810
721
|
this.element.removeEventListener('mousedown', this.mouseDown);
|
|
811
722
|
this.element.removeEventListener('touchstart', this.touchStart);
|
|
812
723
|
this.listenersRegistered = false;
|
|
813
724
|
}
|
|
814
|
-
|
|
815
725
|
setupHandleElement() {
|
|
816
726
|
this.handleElement = this.element.querySelector(this.handle);
|
|
817
|
-
|
|
818
727
|
if (this.handleElement) {
|
|
819
728
|
this.handleElement.style['touch-action'] = 'none';
|
|
820
729
|
} else {
|
|
821
730
|
this.element.style['touch-action'] = 'none';
|
|
822
731
|
}
|
|
823
732
|
}
|
|
824
|
-
|
|
825
|
-
element;
|
|
826
|
-
didSetup = false;
|
|
827
|
-
|
|
828
|
-
/**
|
|
829
|
-
* tracks if event listeners have been registered. Registering event handlers is unnecessary if item is disabled.
|
|
830
|
-
*/
|
|
831
|
-
listenersRegistered = false;
|
|
832
|
-
|
|
833
733
|
constructor(owner, args) {
|
|
834
734
|
super(owner, args);
|
|
735
|
+
_defineProperty(this, "className", 'sortable-item');
|
|
736
|
+
_initializerDefineProperty(this, "sortableService", _descriptor, this);
|
|
737
|
+
_defineProperty(this, "_sortableGroup", void 0);
|
|
738
|
+
_defineProperty(this, "handleElement", void 0);
|
|
739
|
+
_defineProperty(this, "_isDragging", false);
|
|
740
|
+
_defineProperty(this, "_isDropping", false);
|
|
741
|
+
_defineProperty(this, "wasDropped", false);
|
|
742
|
+
_defineProperty(this, "maxScrollSpeed", 20);
|
|
743
|
+
_defineProperty(this, "element", void 0);
|
|
744
|
+
_defineProperty(this, "didSetup", false);
|
|
745
|
+
_defineProperty(this, "listenersRegistered", false);
|
|
835
746
|
registerDestructor(this, cleanup);
|
|
836
747
|
}
|
|
837
|
-
|
|
838
748
|
modify(element, _positional, named) {
|
|
839
749
|
this.element = element;
|
|
840
750
|
this.named = named;
|
|
841
|
-
|
|
842
751
|
this.element.classList.add(this.className);
|
|
843
752
|
|
|
844
753
|
// Instead of using `event.preventDefault()` in the 'primeDrag' event,
|
|
845
754
|
// (doesn't work in Chrome 56), we set touch-action: none as a workaround.
|
|
846
755
|
this.setupHandleElement();
|
|
847
|
-
|
|
848
756
|
if (!this.didSetup) {
|
|
849
757
|
this.element.dataset.sortableItem = true;
|
|
850
758
|
this.sortableService.registerItem(this.groupName, this);
|
|
851
759
|
this.didSetup = true;
|
|
852
760
|
}
|
|
853
|
-
|
|
854
761
|
if (this.named.disabled && this.listenersRegistered) {
|
|
855
762
|
this.removeEventListener();
|
|
856
763
|
} else if (!this.named.disabled && !this.listenersRegistered) {
|
|
857
764
|
this.addEventListener();
|
|
858
765
|
}
|
|
859
766
|
}
|
|
860
|
-
}
|
|
861
|
-
|
|
767
|
+
}, (_descriptor = _applyDecoratedDescriptor(_class.prototype, "sortableService", [_dec], {
|
|
768
|
+
configurable: true,
|
|
769
|
+
enumerable: true,
|
|
770
|
+
writable: true,
|
|
771
|
+
initializer: null
|
|
772
|
+
}), _applyDecoratedDescriptor(_class.prototype, "mouseDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "mouseDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "keyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "keyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "touchStart", [action], Object.getOwnPropertyDescriptor(_class.prototype, "touchStart"), _class.prototype)), _class));
|
|
862
773
|
/**
|
|
863
774
|
*
|
|
864
775
|
* @param {SortableItemModifier} instance
|
|
@@ -867,3 +778,6 @@ function cleanup(instance) {
|
|
|
867
778
|
instance.removeEventListener();
|
|
868
779
|
instance.sortableService.deregisterItem(instance.groupName, instance);
|
|
869
780
|
}
|
|
781
|
+
|
|
782
|
+
export { SortableItemModifier as default };
|
|
783
|
+
//# sourceMappingURL=sortable-item.js.map
|