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.
Files changed (60) hide show
  1. package/README.md +13 -7
  2. package/addon-main.js +2 -0
  3. package/dist/_app_/modifiers/sortable-group.js +1 -0
  4. package/dist/_app_/modifiers/sortable-handle.js +1 -0
  5. package/dist/_app_/modifiers/sortable-item.js +1 -0
  6. package/dist/_app_/services/ember-sortable-internal-state.js +1 -0
  7. package/dist/_rollupPluginBabelHelpers-7ae2993d.js +63 -0
  8. package/dist/_rollupPluginBabelHelpers-7ae2993d.js.map +1 -0
  9. package/{addon → dist}/modifiers/sortable-group.js +41 -104
  10. package/dist/modifiers/sortable-group.js.map +1 -0
  11. package/{addon → dist}/modifiers/sortable-handle.js +9 -3
  12. package/dist/modifiers/sortable-handle.js.map +1 -0
  13. package/{addon → dist}/modifiers/sortable-item.js +72 -149
  14. package/dist/modifiers/sortable-item.js.map +1 -0
  15. package/{addon/services/ember-sortable.js → dist/services/ember-sortable-internal-state.js} +11 -21
  16. package/dist/services/ember-sortable-internal-state.js.map +1 -0
  17. package/{addon → dist}/system/scroll-container.js +8 -7
  18. package/dist/system/scroll-container.js.map +1 -0
  19. package/{addon → dist}/system/scroll-parent.js +9 -7
  20. package/dist/system/scroll-parent.js.map +1 -0
  21. package/{addon-test-support → dist/test-support}/helpers/drag.js +13 -21
  22. package/dist/test-support/helpers/drag.js.map +1 -0
  23. package/{addon-test-support → dist/test-support}/helpers/reorder.js +11 -6
  24. package/dist/test-support/helpers/reorder.js.map +1 -0
  25. package/dist/test-support/index.js +5 -0
  26. package/dist/test-support/index.js.map +1 -0
  27. package/dist/test-support/utils/keyboard.js +33 -0
  28. package/dist/test-support/utils/keyboard.js.map +1 -0
  29. package/{addon-test-support → dist/test-support}/utils/offset.js +5 -3
  30. package/dist/test-support/utils/offset.js.map +1 -0
  31. package/dist/utils/constant.js +12 -0
  32. package/dist/utils/constant.js.map +1 -0
  33. package/{addon → dist}/utils/coordinate.js +5 -4
  34. package/dist/utils/coordinate.js.map +1 -0
  35. package/{addon → dist}/utils/css-calculation.js +5 -3
  36. package/dist/utils/css-calculation.js.map +1 -0
  37. package/{addon → dist}/utils/defaults.js +24 -12
  38. package/dist/utils/defaults.js.map +1 -0
  39. package/dist/utils/keyboard.js +33 -0
  40. package/dist/utils/keyboard.js.map +1 -0
  41. package/package.json +56 -60
  42. package/.huskyrc +0 -5
  43. package/CHANGELOG.md +0 -734
  44. package/CODE_OF_CONDUCT.md +0 -6
  45. package/MIGRATION_GUIDE_MODIFIERS.md +0 -95
  46. package/MIGRATION_GUIDE_V2.md +0 -120
  47. package/Makefile +0 -24
  48. package/RELEASE.md +0 -60
  49. package/V2_MIGRATION_RFC.md +0 -1100
  50. package/addon/utils/constant.js +0 -9
  51. package/addon/utils/keyboard.js +0 -32
  52. package/addon-test-support/helpers/index.js +0 -4
  53. package/addon-test-support/utils/keyboard.js +0 -32
  54. package/app/modifiers/sortable-group.js +0 -1
  55. package/app/modifiers/sortable-handle.js +0 -1
  56. package/app/modifiers/sortable-item.js +0 -1
  57. package/app/services/ember-sortable-internal-state.js +0 -1
  58. package/config/environment.js +0 -26
  59. package/demo.gif +0 -0
  60. package/index.js +0 -5
@@ -1,23 +1,21 @@
1
- /* eslint-disable ember/no-computed-properties-in-native-classes */
1
+ import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-7ae2993d.js';
2
2
  import Modifier from 'ember-modifier';
3
- import { Promise, defer } from 'rsvp';
3
+ import { defer, Promise as Promise$1 } from 'rsvp';
4
4
  import { action, set } from '@ember/object';
5
- import { DRAG_ACTIONS, ELEMENT_CLICK_ACTION, END_ACTIONS } from '../utils/constant';
6
- import { run, throttle, bind, scheduleOnce, later } from '@ember/runloop';
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 as service } from '@ember/service';
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
- const { environment } = config;
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
- export default class SortableItemModifier extends Modifier {
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.direction;
58
+ return this.sortableGroup?.direction;
71
59
  }
72
-
73
60
  get groupDisabled() {
74
- return this.sortableGroup.disabled;
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
- '"isDraggingDisabled" is deprecated. Please migrate to "disabled" named argument',
118
- !('isDraggingDisabled' in this.named),
119
- {
120
- id: 'ember-sortable.is-dragging-disabled',
121
- url: 'https://github.com/adopted-ember-addons/ember-sortable#readme',
122
- until: '3.0.0',
123
- for: 'ember-sortable',
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
- _isDragging = false;
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 || ((item) => item);
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 || ((item) => item);
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
- _isDropping = false;
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((event) => window.removeEventListener(event, this._prepareDragListener));
315
+ DRAG_ACTIONS.forEach(event => window.removeEventListener(event, this._prepareDragListener));
353
316
  };
354
-
355
317
  const selfCancellingCallback = () => {
356
- END_ACTIONS.forEach((event) => window.removeEventListener(event, selfCancellingCallback));
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((event) => window.removeEventListener(event, this._prepareDragListener));
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 = (ev) => throttle(this, drag, ev, 16, false);
396
-
354
+ let dragThrottled = ev => throttle(this, drag, ev, 16, false);
397
355
  let drop = () => {
398
- DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, dragThrottled));
399
- END_ACTIONS.forEach((event) => window.removeEventListener(event, drop));
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
- DRAG_ACTIONS.forEach((event) => window.addEventListener(event, dragThrottled));
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 = (event) => {
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((resolve) => later(resolve, duration));
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