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