uikit 3.11.2-dev.9433cd5fd → 3.11.2-dev.a87448e52

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 (221) hide show
  1. package/.eslintrc.json +4 -49
  2. package/.prettierignore +14 -0
  3. package/.prettierrc.json +13 -0
  4. package/.webstorm.js +3 -3
  5. package/CHANGELOG.md +37 -28
  6. package/build/.eslintrc.json +1 -3
  7. package/build/build.js +26 -28
  8. package/build/icons.js +7 -11
  9. package/build/less.js +48 -36
  10. package/build/package.json +2 -2
  11. package/build/prefix.js +21 -18
  12. package/build/publishDev.js +6 -8
  13. package/build/release.js +20 -17
  14. package/build/scope.js +21 -11
  15. package/build/scss.js +72 -39
  16. package/build/util.js +71 -62
  17. package/build/wrapper/icons.js +0 -2
  18. package/dist/css/uikit-core-rtl.css +118 -201
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +118 -201
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +120 -207
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +120 -207
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +88 -133
  27. package/dist/js/components/countdown.min.js +1 -1
  28. package/dist/js/components/filter.js +408 -439
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1098 -1316
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1144 -1393
  33. package/dist/js/components/lightbox.min.js +1 -1
  34. package/dist/js/components/notification.js +94 -114
  35. package/dist/js/components/notification.min.js +1 -1
  36. package/dist/js/components/parallax.js +345 -358
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +343 -357
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +768 -843
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +343 -357
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +645 -793
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +587 -620
  47. package/dist/js/components/sortable.min.js +1 -1
  48. package/dist/js/components/tooltip.js +324 -356
  49. package/dist/js/components/tooltip.min.js +1 -1
  50. package/dist/js/components/upload.js +155 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5412 -6733
  53. package/dist/js/uikit-core.min.js +1 -1
  54. package/dist/js/uikit-icons.js +7 -9
  55. package/dist/js/uikit-icons.min.js +1 -1
  56. package/dist/js/uikit.js +8008 -9705
  57. package/dist/js/uikit.min.js +1 -1
  58. package/jsconfig.json +1 -1
  59. package/package.json +64 -60
  60. package/src/js/api/boot.js +25 -32
  61. package/src/js/api/component.js +15 -28
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +14 -33
  64. package/src/js/api/instance.js +7 -15
  65. package/src/js/api/state.js +79 -100
  66. package/src/js/components/countdown.js +24 -50
  67. package/src/js/components/filter.js +70 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +14 -25
  70. package/src/js/components/internal/slider-preload.js +37 -0
  71. package/src/js/components/internal/slider-transitioner.js +66 -45
  72. package/src/js/components/internal/slideshow-animations.js +46 -64
  73. package/src/js/components/lightbox-panel.js +107 -105
  74. package/src/js/components/lightbox.js +17 -39
  75. package/src/js/components/notification.js +49 -43
  76. package/src/js/components/parallax.js +16 -30
  77. package/src/js/components/slider-parallax.js +13 -23
  78. package/src/js/components/slider.js +95 -64
  79. package/src/js/components/slideshow-parallax.js +1 -1
  80. package/src/js/components/slideshow.js +15 -13
  81. package/src/js/components/sortable.js +125 -106
  82. package/src/js/components/tooltip.js +41 -31
  83. package/src/js/components/upload.js +52 -63
  84. package/src/js/core/accordion.js +53 -48
  85. package/src/js/core/alert.js +9 -17
  86. package/src/js/core/core.js +74 -53
  87. package/src/js/core/cover.js +11 -15
  88. package/src/js/core/drop.js +106 -92
  89. package/src/js/core/form-custom.js +20 -25
  90. package/src/js/core/gif.js +3 -7
  91. package/src/js/core/grid.js +57 -58
  92. package/src/js/core/height-match.js +16 -29
  93. package/src/js/core/height-viewport.js +28 -35
  94. package/src/js/core/icon.js +47 -52
  95. package/src/js/core/img.js +96 -77
  96. package/src/js/core/index.js +39 -39
  97. package/src/js/core/leader.js +9 -18
  98. package/src/js/core/margin.js +21 -37
  99. package/src/js/core/modal.js +49 -36
  100. package/src/js/core/nav.js +2 -4
  101. package/src/js/core/navbar.js +112 -88
  102. package/src/js/core/offcanvas.js +49 -53
  103. package/src/js/core/overflow-auto.js +13 -17
  104. package/src/js/core/responsive.js +14 -12
  105. package/src/js/core/scroll.js +10 -20
  106. package/src/js/core/scrollspy-nav.js +34 -31
  107. package/src/js/core/scrollspy.js +37 -54
  108. package/src/js/core/sticky.js +130 -91
  109. package/src/js/core/svg.js +68 -83
  110. package/src/js/core/switcher.js +47 -46
  111. package/src/js/core/tab.js +7 -10
  112. package/src/js/core/toggle.js +66 -67
  113. package/src/js/core/video.js +11 -22
  114. package/src/js/mixin/animate.js +19 -20
  115. package/src/js/mixin/class.js +2 -4
  116. package/src/js/mixin/container.js +7 -11
  117. package/src/js/mixin/internal/animate-fade.js +73 -30
  118. package/src/js/mixin/internal/animate-slide.js +58 -41
  119. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  120. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  121. package/src/js/mixin/media.js +5 -10
  122. package/src/js/mixin/modal.js +89 -66
  123. package/src/js/mixin/parallax.js +149 -106
  124. package/src/js/mixin/position.js +26 -20
  125. package/src/js/mixin/slider-autoplay.js +12 -21
  126. package/src/js/mixin/slider-drag.js +64 -65
  127. package/src/js/mixin/slider-nav.js +26 -35
  128. package/src/js/mixin/slider-reactive.js +2 -8
  129. package/src/js/mixin/slider.js +48 -55
  130. package/src/js/mixin/slideshow.js +13 -19
  131. package/src/js/mixin/togglable.js +89 -63
  132. package/src/js/uikit-core.js +2 -4
  133. package/src/js/uikit.js +2 -4
  134. package/src/js/util/ajax.js +20 -39
  135. package/src/js/util/animation.js +77 -75
  136. package/src/js/util/attr.js +17 -21
  137. package/src/js/util/class.js +14 -52
  138. package/src/js/util/dimensions.js +56 -43
  139. package/src/js/util/dom.js +44 -80
  140. package/src/js/util/env.js +7 -12
  141. package/src/js/util/event.js +60 -59
  142. package/src/js/util/fastdom.js +1 -6
  143. package/src/js/util/filter.js +17 -34
  144. package/src/js/util/index.js +0 -1
  145. package/src/js/util/lang.js +82 -121
  146. package/src/js/util/mouse.js +19 -17
  147. package/src/js/util/options.js +32 -46
  148. package/src/js/util/player.js +41 -36
  149. package/src/js/util/position.js +54 -46
  150. package/src/js/util/selector.js +43 -58
  151. package/src/js/util/style.js +39 -49
  152. package/src/js/util/viewport.js +75 -64
  153. package/src/less/components/base.less +10 -33
  154. package/src/less/components/flex.less +0 -9
  155. package/src/less/components/form-range.less +48 -95
  156. package/src/less/components/form.less +0 -1
  157. package/src/less/components/leader.less +0 -1
  158. package/src/less/components/lightbox.less +0 -1
  159. package/src/less/components/modal.less +3 -7
  160. package/src/less/components/navbar.less +0 -7
  161. package/src/less/components/progress.less +14 -36
  162. package/src/less/components/slider.less +0 -3
  163. package/src/less/components/slideshow.less +0 -3
  164. package/src/less/components/text.less +16 -32
  165. package/src/less/components/utility.less +22 -0
  166. package/src/scss/components/base.scss +10 -33
  167. package/src/scss/components/flex.scss +0 -9
  168. package/src/scss/components/form-range.scss +48 -95
  169. package/src/scss/components/form.scss +3 -4
  170. package/src/scss/components/icon.scss +2 -2
  171. package/src/scss/components/leader.scss +0 -1
  172. package/src/scss/components/lightbox.scss +0 -1
  173. package/src/scss/components/modal.scss +3 -7
  174. package/src/scss/components/navbar.scss +0 -7
  175. package/src/scss/components/progress.scss +14 -36
  176. package/src/scss/components/search.scss +1 -1
  177. package/src/scss/components/slider.scss +0 -3
  178. package/src/scss/components/slideshow.scss +0 -3
  179. package/src/scss/components/text.scss +16 -32
  180. package/src/scss/components/utility.scss +22 -0
  181. package/src/scss/mixins-theme.scss +1 -1
  182. package/src/scss/mixins.scss +1 -1
  183. package/src/scss/variables-theme.scss +9 -9
  184. package/src/scss/variables.scss +9 -9
  185. package/tests/align.html +10 -10
  186. package/tests/animation.html +2 -2
  187. package/tests/article.html +2 -2
  188. package/tests/base.html +3 -3
  189. package/tests/card.html +10 -10
  190. package/tests/column.html +3 -3
  191. package/tests/comment.html +9 -9
  192. package/tests/dotnav.html +3 -3
  193. package/tests/image.html +296 -48
  194. package/tests/images/image-type.avif +0 -0
  195. package/tests/images/image-type.jpeg +0 -0
  196. package/tests/images/image-type.webp +0 -0
  197. package/tests/index.html +8 -8
  198. package/tests/js/index.js +114 -85
  199. package/tests/lightbox.html +10 -10
  200. package/tests/marker.html +2 -2
  201. package/tests/modal.html +8 -9
  202. package/tests/navbar.html +2 -2
  203. package/tests/overlay.html +7 -7
  204. package/tests/parallax.html +14 -5
  205. package/tests/position.html +12 -12
  206. package/tests/slidenav.html +12 -12
  207. package/tests/slider.html +20 -20
  208. package/tests/sortable.html +1 -1
  209. package/tests/sticky-parallax.html +47 -62
  210. package/tests/svg.html +6 -6
  211. package/tests/table.html +11 -11
  212. package/tests/thumbnav.html +12 -12
  213. package/tests/transition.html +30 -30
  214. package/tests/utility.html +33 -33
  215. package/tests/video.html +1 -1
  216. package/tests/width.html +1 -1
  217. package/src/js/mixin/flex-bug.js +0 -56
  218. package/src/js/util/promise.js +0 -191
  219. package/tests/images/animated.gif +0 -0
  220. package/tests/images/test.avif +0 -0
  221. package/tests/images/test.webp +0 -0
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.11.2-dev.9433cd5fd | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
1
+ /*! UIkit 3.11.2-dev.a87448e52 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('uikit-util')) :
@@ -7,810 +7,777 @@
7
7
  })(this, (function (uikitUtil) { 'use strict';
8
8
 
9
9
  function getRows(items) {
10
- return sortBy(items, 'top', 'bottom');
10
+ return sortBy(items, 'top', 'bottom');
11
11
  }
12
12
 
13
13
  function sortBy(items, startProp, endProp) {
14
+ const sorted = [[]];
14
15
 
15
- var sorted = [[]];
16
-
17
- for (var i = 0; i < items.length; i++) {
18
-
19
- var el = items[i];
20
-
21
- if (!uikitUtil.isVisible(el)) {
22
- continue;
23
- }
24
-
25
- var dim = getOffset(el);
26
-
27
- for (var j = sorted.length - 1; j >= 0; j--) {
28
-
29
- var current = sorted[j];
30
-
31
- if (!current[0]) {
32
- current.push(el);
33
- break;
34
- }
35
-
36
- var startDim = (void 0);
37
- if (current[0].offsetParent === el.offsetParent) {
38
- startDim = getOffset(current[0]);
39
- } else {
40
- dim = getOffset(el, true);
41
- startDim = getOffset(current[0], true);
42
- }
16
+ for (const el of items) {
17
+ if (!uikitUtil.isVisible(el)) {
18
+ continue;
19
+ }
43
20
 
44
- if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {
45
- sorted.push([el]);
46
- break;
47
- }
21
+ let dim = getOffset(el);
22
+
23
+ for (let i = sorted.length - 1; i >= 0; i--) {
24
+ const current = sorted[i];
25
+
26
+ if (!current[0]) {
27
+ current.push(el);
28
+ break;
29
+ }
30
+
31
+ let startDim;
32
+ if (current[0].offsetParent === el.offsetParent) {
33
+ startDim = getOffset(current[0]);
34
+ } else {
35
+ dim = getOffset(el, true);
36
+ startDim = getOffset(current[0], true);
37
+ }
38
+
39
+ if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {
40
+ sorted.push([el]);
41
+ break;
42
+ }
43
+
44
+ if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {
45
+ current.push(el);
46
+ break;
47
+ }
48
+
49
+ if (i === 0) {
50
+ sorted.unshift([el]);
51
+ break;
52
+ }
53
+ }
54
+ }
48
55
 
49
- if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {
50
- current.push(el);
51
- break;
52
- }
56
+ return sorted;
57
+ }
53
58
 
54
- if (j === 0) {
55
- sorted.unshift([el]);
56
- break;
57
- }
59
+ function getOffset(element, offset) {if (offset === void 0) {offset = false;}
60
+ let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;
58
61
 
59
- }
62
+ if (offset) {
63
+ [offsetTop, offsetLeft] = uikitUtil.offsetPosition(element);
64
+ }
60
65
 
61
- }
66
+ return {
67
+ top: offsetTop,
68
+ left: offsetLeft,
69
+ bottom: offsetTop + offsetHeight,
70
+ right: offsetLeft + offsetWidth };
62
71
 
63
- return sorted;
64
72
  }
65
73
 
66
- function getOffset(element, offset) {
67
- var assign;
74
+ const clsLeave = 'uk-transition-leave';
75
+ const clsEnter = 'uk-transition-enter';
68
76
 
69
- if ( offset === void 0 ) offset = false;
77
+ function fade(action, target, duration, stagger) {if (stagger === void 0) {stagger = 0;}
78
+ const index = transitionIndex(target, true);
79
+ const propsIn = { opacity: 1 };
80
+ const propsOut = { opacity: 0 };
70
81
 
71
- var offsetTop = element.offsetTop;
72
- var offsetLeft = element.offsetLeft;
73
- var offsetHeight = element.offsetHeight;
74
- var offsetWidth = element.offsetWidth;
82
+ const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
75
83
 
76
- if (offset) {
77
- (assign = uikitUtil.offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1]);
78
- }
84
+ const leaveFn = wrapIndexFn(() => {
85
+ uikitUtil.addClass(target, clsLeave);
79
86
 
80
- return {
81
- top: offsetTop,
82
- left: offsetLeft,
83
- bottom: offsetTop + offsetHeight,
84
- right: offsetLeft + offsetWidth
85
- };
86
- }
87
+ return Promise.all(
88
+ getTransitionNodes(target).map(
89
+ (child, i) =>
90
+ new Promise((resolve) =>
91
+ setTimeout(
92
+ () =>
93
+ uikitUtil.Transition.start(child, propsOut, duration / 2, 'ease').then(
94
+ resolve),
87
95
 
88
- var clsLeave = 'uk-transition-leave';
89
- var clsEnter = 'uk-transition-enter';
96
+ i * stagger)))).
90
97
 
91
- function fade(action, target, duration, stagger) {
92
- if ( stagger === void 0 ) stagger = 0;
93
98
 
94
99
 
95
- var index = transitionIndex(target, true);
96
- var propsIn = {opacity: 1};
97
- var propsOut = {opacity: 0};
100
+ then(() => uikitUtil.removeClass(target, clsLeave));
101
+ });
98
102
 
99
- var wrapIndexFn = function (fn) { return function () { return index === transitionIndex(target) ? fn() : uikitUtil.Promise.reject(); }; };
103
+ const enterFn = wrapIndexFn(() => {
104
+ const oldHeight = uikitUtil.height(target);
100
105
 
101
- var leaveFn = wrapIndexFn(function () {
106
+ uikitUtil.addClass(target, clsEnter);
107
+ action();
102
108
 
103
- uikitUtil.addClass(target, clsLeave);
109
+ uikitUtil.css(uikitUtil.children(target), { opacity: 0 });
104
110
 
105
- return uikitUtil.Promise.all(getTransitionNodes(target).map(function (child, i) { return new uikitUtil.Promise(function (resolve) { return setTimeout(function () { return uikitUtil.Transition.start(child, propsOut, duration / 2, 'ease').then(resolve); }, i * stagger); }
106
- ); }
107
- )).then(function () { return uikitUtil.removeClass(target, clsLeave); });
111
+ // Ensure UIkit updates have propagated
112
+ return new Promise((resolve) =>
113
+ requestAnimationFrame(() => {
114
+ const nodes = uikitUtil.children(target);
115
+ const newHeight = uikitUtil.height(target);
108
116
 
109
- });
117
+ // Ensure Grid cells do not stretch when height is applied
118
+ uikitUtil.css(target, 'alignContent', 'flex-start');
119
+ uikitUtil.height(target, oldHeight);
110
120
 
111
- var enterFn = wrapIndexFn(function () {
121
+ const transitionNodes = getTransitionNodes(target);
122
+ uikitUtil.css(nodes, propsOut);
112
123
 
113
- var oldHeight = uikitUtil.height(target);
124
+ const transitions = transitionNodes.map(
125
+ (child, i) =>
126
+ new Promise((resolve) =>
127
+ setTimeout(
128
+ () =>
129
+ uikitUtil.Transition.start(child, propsIn, duration / 2, 'ease').then(
130
+ resolve),
114
131
 
115
- uikitUtil.addClass(target, clsEnter);
116
- action();
132
+ i * stagger)));
117
133
 
118
- uikitUtil.css(uikitUtil.children(target), {opacity: 0});
119
134
 
120
- // Ensure UIkit updates have propagated
121
- return new uikitUtil.Promise(function (resolve) { return requestAnimationFrame(function () {
122
135
 
123
- var nodes = uikitUtil.children(target);
124
- var newHeight = uikitUtil.height(target);
125
136
 
126
- // Ensure Grid cells do not stretch when height is applied
127
- uikitUtil.css(target, 'alignContent', 'flex-start');
128
- uikitUtil.height(target, oldHeight);
137
+ if (oldHeight !== newHeight) {
138
+ transitions.push(
139
+ uikitUtil.Transition.start(
140
+ target,
141
+ { height: newHeight },
142
+ duration / 2 + transitionNodes.length * stagger,
143
+ 'ease'));
129
144
 
130
- var transitionNodes = getTransitionNodes(target);
131
- uikitUtil.css(nodes, propsOut);
132
145
 
133
- var transitions = transitionNodes.map(function (child, i) { return new uikitUtil.Promise(function (resolve) { return setTimeout(function () { return uikitUtil.Transition.start(child, propsIn, duration / 2, 'ease').then(resolve); }, i * stagger); }
134
- ); }
135
- );
146
+ }
136
147
 
137
- if (oldHeight !== newHeight) {
138
- transitions.push(uikitUtil.Transition.start(target, {height: newHeight}, duration / 2 + transitionNodes.length * stagger, 'ease'));
139
- }
148
+ Promise.all(transitions).then(() => {
149
+ uikitUtil.removeClass(target, clsEnter);
150
+ if (index === transitionIndex(target)) {
151
+ uikitUtil.css(target, { height: '', alignContent: '' });
152
+ uikitUtil.css(nodes, { opacity: '' });
153
+ delete target.dataset.transition;
154
+ }
155
+ resolve();
156
+ });
157
+ }));
140
158
 
141
- uikitUtil.Promise.all(transitions).then(function () {
142
- uikitUtil.removeClass(target, clsEnter);
143
- if (index === transitionIndex(target)) {
144
- uikitUtil.css(target, {height: '', alignContent: ''});
145
- uikitUtil.css(nodes, {opacity: ''});
146
- delete target.dataset.transition;
147
- }
148
- resolve();
149
- });
150
- }); }
151
- );
152
- });
159
+ });
153
160
 
154
- return uikitUtil.hasClass(target, clsLeave)
155
- ? waitTransitionend(target).then(enterFn)
156
- : uikitUtil.hasClass(target, clsEnter)
157
- ? waitTransitionend(target).then(leaveFn).then(enterFn)
158
- : leaveFn().then(enterFn);
161
+ return uikitUtil.hasClass(target, clsLeave) ?
162
+ waitTransitionend(target).then(enterFn) :
163
+ uikitUtil.hasClass(target, clsEnter) ?
164
+ waitTransitionend(target).then(leaveFn).then(enterFn) :
165
+ leaveFn().then(enterFn);
159
166
  }
160
167
 
161
168
  function transitionIndex(target, next) {
162
- if (next) {
163
- target.dataset.transition = 1 + transitionIndex(target);
164
- }
169
+ if (next) {
170
+ target.dataset.transition = 1 + transitionIndex(target);
171
+ }
165
172
 
166
- return uikitUtil.toNumber(target.dataset.transition) || 0;
173
+ return uikitUtil.toNumber(target.dataset.transition) || 0;
167
174
  }
168
175
 
169
176
  function waitTransitionend(target) {
170
- return uikitUtil.Promise.all(uikitUtil.children(target).filter(uikitUtil.Transition.inProgress).map(function (el) { return new uikitUtil.Promise(function (resolve) { return uikitUtil.once(el, 'transitionend transitioncanceled', resolve); }); }
171
- ));
172
- }
173
-
174
- function getTransitionNodes(target) {
175
- return getRows(uikitUtil.children(target)).reduce(function (nodes, row) { return nodes.concat(uikitUtil.sortBy(row.filter(function (el) { return uikitUtil.isInView(el); }), 'offsetLeft')); }, []);
176
- }
177
-
178
- function slide (action, target, duration) {
177
+ return Promise.all(
178
+ uikitUtil.children(target).
179
+ filter(uikitUtil.Transition.inProgress).
180
+ map(
181
+ (el) =>
182
+ new Promise((resolve) => uikitUtil.once(el, 'transitionend transitioncanceled', resolve))));
179
183
 
180
- return new uikitUtil.Promise(function (resolve) { return requestAnimationFrame(function () {
181
184
 
182
- var nodes = uikitUtil.children(target);
183
-
184
- // Get current state
185
- var currentProps = nodes.map(function (el) { return getProps(el, true); });
186
- var targetProps = uikitUtil.css(target, ['height', 'padding']);
187
-
188
- // Cancel previous animations
189
- uikitUtil.Transition.cancel(target);
190
- nodes.forEach(uikitUtil.Transition.cancel);
191
- reset(target);
192
-
193
- // Adding, sorting, removing nodes
194
- action();
195
-
196
- // Find new nodes
197
- nodes = nodes.concat(uikitUtil.children(target).filter(function (el) { return !uikitUtil.includes(nodes, el); }));
198
-
199
- // Wait for update to propagate
200
- uikitUtil.Promise.resolve().then(function () {
201
-
202
- // Force update
203
- uikitUtil.fastdom.flush();
185
+ }
204
186
 
205
- // Get new state
206
- var targetPropsTo = uikitUtil.css(target, ['height', 'padding']);
207
- var ref = getTransitionProps(target, nodes, currentProps);
208
- var propsTo = ref[0];
209
- var propsFrom = ref[1];
187
+ function getTransitionNodes(target) {
188
+ return getRows(uikitUtil.children(target)).reduce(
189
+ (nodes, row) =>
190
+ nodes.concat(
191
+ uikitUtil.sortBy(
192
+ row.filter((el) => uikitUtil.isInView(el)),
193
+ 'offsetLeft')),
210
194
 
211
- // Reset to previous state
212
- nodes.forEach(function (el, i) { return propsFrom[i] && uikitUtil.css(el, propsFrom[i]); });
213
- uikitUtil.css(target, uikitUtil.assign({display: 'block'}, targetProps));
214
195
 
215
- // Start transitions on next frame
216
- requestAnimationFrame(function () {
196
+ []);
217
197
 
218
- var transitions = nodes.map(function (el, i) { return uikitUtil.parent(el) === target && uikitUtil.Transition.start(el, propsTo[i], duration, 'ease'); }
219
- ).concat(uikitUtil.Transition.start(target, targetPropsTo, duration, 'ease'));
198
+ }
220
199
 
221
- uikitUtil.Promise.all(transitions).then(function () {
222
- nodes.forEach(function (el, i) { return uikitUtil.parent(el) === target && uikitUtil.css(el, 'display', propsTo[i].opacity === 0 ? 'none' : ''); });
223
- reset(target);
224
- }, uikitUtil.noop).then(resolve);
200
+ function slide (action, target, duration) {
201
+ return new Promise((resolve) =>
202
+ requestAnimationFrame(() => {
203
+ let nodes = uikitUtil.children(target);
204
+
205
+ // Get current state
206
+ const currentProps = nodes.map((el) => getProps(el, true));
207
+ const targetProps = uikitUtil.css(target, ['height', 'padding']);
208
+
209
+ // Cancel previous animations
210
+ uikitUtil.Transition.cancel(target);
211
+ nodes.forEach(uikitUtil.Transition.cancel);
212
+ reset(target);
213
+
214
+ // Adding, sorting, removing nodes
215
+ action();
216
+
217
+ // Find new nodes
218
+ nodes = nodes.concat(uikitUtil.children(target).filter((el) => !uikitUtil.includes(nodes, el)));
219
+
220
+ // Wait for update to propagate
221
+ Promise.resolve().then(() => {
222
+ // Force update
223
+ uikitUtil.fastdom.flush();
224
+
225
+ // Get new state
226
+ const targetPropsTo = uikitUtil.css(target, ['height', 'padding']);
227
+ const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);
228
+
229
+ // Reset to previous state
230
+ nodes.forEach((el, i) => propsFrom[i] && uikitUtil.css(el, propsFrom[i]));
231
+ uikitUtil.css(target, { display: 'block', ...targetProps });
232
+
233
+ // Start transitions on next frame
234
+ requestAnimationFrame(() => {
235
+ const transitions = nodes.
236
+ map(
237
+ (el, i) =>
238
+ uikitUtil.parent(el) === target &&
239
+ uikitUtil.Transition.start(el, propsTo[i], duration, 'ease')).
240
+
241
+ concat(uikitUtil.Transition.start(target, targetPropsTo, duration, 'ease'));
242
+
243
+ Promise.all(transitions).
244
+ then(() => {
245
+ nodes.forEach(
246
+ (el, i) =>
247
+ uikitUtil.parent(el) === target &&
248
+ uikitUtil.css(el, 'display', propsTo[i].opacity === 0 ? 'none' : ''));
249
+
250
+ reset(target);
251
+ }, uikitUtil.noop).
252
+ then(resolve);
253
+ });
254
+ });
255
+ }));
225
256
 
226
- });
227
- });
228
- }); });
229
257
  }
230
258
 
231
259
  function getProps(el, opacity) {
232
-
233
- var zIndex = uikitUtil.css(el, 'zIndex');
234
-
235
- return uikitUtil.isVisible(el)
236
- ? uikitUtil.assign({
237
- display: '',
238
- opacity: opacity ? uikitUtil.css(el, 'opacity') : '0',
239
- pointerEvents: 'none',
240
- position: 'absolute',
241
- zIndex: zIndex === 'auto' ? uikitUtil.index(el) : zIndex
242
- }, getPositionWithMargin(el))
243
- : false;
260
+ const zIndex = uikitUtil.css(el, 'zIndex');
261
+
262
+ return uikitUtil.isVisible(el) ?
263
+ {
264
+ display: '',
265
+ opacity: opacity ? uikitUtil.css(el, 'opacity') : '0',
266
+ pointerEvents: 'none',
267
+ position: 'absolute',
268
+ zIndex: zIndex === 'auto' ? uikitUtil.index(el) : zIndex,
269
+ ...getPositionWithMargin(el) } :
270
+
271
+ false;
244
272
  }
245
273
 
246
274
  function getTransitionProps(target, nodes, currentProps) {
275
+ const propsTo = nodes.map((el, i) =>
276
+ uikitUtil.parent(el) && i in currentProps ?
277
+ currentProps[i] ?
278
+ uikitUtil.isVisible(el) ?
279
+ getPositionWithMargin(el) :
280
+ { opacity: 0 } :
281
+ { opacity: uikitUtil.isVisible(el) ? 1 : 0 } :
282
+ false);
247
283
 
248
- var propsTo = nodes.map(function (el, i) { return uikitUtil.parent(el) && i in currentProps
249
- ? currentProps[i]
250
- ? uikitUtil.isVisible(el)
251
- ? getPositionWithMargin(el)
252
- : {opacity: 0}
253
- : {opacity: uikitUtil.isVisible(el) ? 1 : 0}
254
- : false; });
255
-
256
- var propsFrom = propsTo.map(function (props, i) {
257
284
 
258
- var from = uikitUtil.parent(nodes[i]) === target && (currentProps[i] || getProps(nodes[i]));
285
+ const propsFrom = propsTo.map((props, i) => {
286
+ const from = uikitUtil.parent(nodes[i]) === target && (currentProps[i] || getProps(nodes[i]));
259
287
 
260
- if (!from) {
261
- return false;
262
- }
288
+ if (!from) {
289
+ return false;
290
+ }
263
291
 
264
- if (!props) {
265
- delete from.opacity;
266
- } else if (!('opacity' in props)) {
267
- var opacity = from.opacity;
292
+ if (!props) {
293
+ delete from.opacity;
294
+ } else if (!('opacity' in props)) {
295
+ const { opacity } = from;
268
296
 
269
- if (opacity % 1) {
270
- props.opacity = 1;
271
- } else {
272
- delete from.opacity;
273
- }
274
- }
297
+ if (opacity % 1) {
298
+ props.opacity = 1;
299
+ } else {
300
+ delete from.opacity;
301
+ }
302
+ }
275
303
 
276
- return from;
277
- });
304
+ return from;
305
+ });
278
306
 
279
- return [propsTo, propsFrom];
307
+ return [propsTo, propsFrom];
280
308
  }
281
309
 
282
310
  function reset(el) {
283
- uikitUtil.css(el.children, {
284
- height: '',
285
- left: '',
286
- opacity: '',
287
- pointerEvents: '',
288
- position: '',
289
- top: '',
290
- marginTop: '',
291
- marginLeft: '',
292
- transform: '',
293
- width: '',
294
- zIndex: ''
295
- });
296
- uikitUtil.css(el, {height: '', display: '', padding: ''});
311
+ uikitUtil.css(el.children, {
312
+ height: '',
313
+ left: '',
314
+ opacity: '',
315
+ pointerEvents: '',
316
+ position: '',
317
+ top: '',
318
+ marginTop: '',
319
+ marginLeft: '',
320
+ transform: '',
321
+ width: '',
322
+ zIndex: '' });
323
+
324
+ uikitUtil.css(el, { height: '', display: '', padding: '' });
297
325
  }
298
326
 
299
327
  function getPositionWithMargin(el) {
300
- var ref = uikitUtil.offset(el);
301
- var height = ref.height;
302
- var width = ref.width;
303
- var ref$1 = uikitUtil.position(el);
304
- var top = ref$1.top;
305
- var left = ref$1.left;
306
- var ref$2 = uikitUtil.css(el, ['marginTop', 'marginLeft']);
307
- var marginLeft = ref$2.marginLeft;
308
- var marginTop = ref$2.marginTop;
309
-
310
- return {top: top, left: left, height: height, width: width, marginLeft: marginLeft, marginTop: marginTop, transform: ''};
328
+ const { height, width } = uikitUtil.offset(el);
329
+ const { top, left } = uikitUtil.position(el);
330
+ const { marginLeft, marginTop } = uikitUtil.css(el, ['marginTop', 'marginLeft']);
331
+
332
+ return { top, left, height, width, marginLeft, marginTop, transform: '' };
311
333
  }
312
334
 
313
335
  var Animate = {
336
+ props: {
337
+ duration: Number,
338
+ animation: Boolean },
339
+
340
+
341
+ data: {
342
+ duration: 150,
343
+ animation: 'slide' },
344
+
345
+
346
+ methods: {
347
+ animate(action, target) {if (target === void 0) {target = this.$el;}
348
+ const name = this.animation;
349
+ const animationFn =
350
+ name === 'fade' ?
351
+ fade :
352
+ name === 'delayed-fade' ?
353
+ function () {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}return fade(...args, 40);} :
354
+ name ?
355
+ slide :
356
+ () => {
357
+ action();
358
+ return Promise.resolve();
359
+ };
314
360
 
315
- props: {
316
- duration: Number,
317
- animation: Boolean
318
- },
319
-
320
- data: {
321
- duration: 150,
322
- animation: 'slide'
323
- },
324
-
325
- methods: {
326
-
327
- animate: function(action, target) {
328
- var this$1$1 = this;
329
- if ( target === void 0 ) target = this.$el;
330
-
331
-
332
- var name = this.animation;
333
- var animationFn = name === 'fade'
334
- ? fade
335
- : name === 'delayed-fade'
336
- ? function () {
337
- var args = [], len = arguments.length;
338
- while ( len-- ) args[ len ] = arguments[ len ];
361
+ return animationFn(action, target, this.duration).then(
362
+ () => this.$update(target, 'resize'),
363
+ uikitUtil.noop);
339
364
 
340
- return fade.apply(void 0, args.concat( [40] ));
341
- }
342
- : name
343
- ? slide
344
- : function () {
345
- action();
346
- return uikitUtil.Promise.resolve();
347
- };
348
-
349
- return animationFn(action, target, this.duration)
350
- .then(function () { return this$1$1.$update(target, 'resize'); }, uikitUtil.noop);
351
- }
352
-
353
- }
354
- };
365
+ } } };
355
366
 
356
367
  var Class = {
357
-
358
- connected: function() {
359
- !uikitUtil.hasClass(this.$el, this.$name) && uikitUtil.addClass(this.$el, this.$name);
360
- }
361
-
362
- };
368
+ connected() {
369
+ !uikitUtil.hasClass(this.$el, this.$name) && uikitUtil.addClass(this.$el, this.$name);
370
+ } };
363
371
 
364
372
  var Component = {
373
+ mixins: [Class, Animate],
374
+
375
+ props: {
376
+ group: String,
377
+ threshold: Number,
378
+ clsItem: String,
379
+ clsPlaceholder: String,
380
+ clsDrag: String,
381
+ clsDragState: String,
382
+ clsBase: String,
383
+ clsNoDrag: String,
384
+ clsEmpty: String,
385
+ clsCustom: String,
386
+ handle: String },
387
+
388
+
389
+ data: {
390
+ group: false,
391
+ threshold: 5,
392
+ clsItem: 'uk-sortable-item',
393
+ clsPlaceholder: 'uk-sortable-placeholder',
394
+ clsDrag: 'uk-sortable-drag',
395
+ clsDragState: 'uk-drag',
396
+ clsBase: 'uk-sortable',
397
+ clsNoDrag: 'uk-sortable-nodrag',
398
+ clsEmpty: 'uk-sortable-empty',
399
+ clsCustom: '',
400
+ handle: false,
401
+ pos: {} },
402
+
403
+
404
+ created() {
405
+ for (const key of ['init', 'start', 'move', 'end']) {
406
+ const fn = this[key];
407
+ this[key] = (e) => {
408
+ uikitUtil.assign(this.pos, uikitUtil.getEventPos(e));
409
+ fn(e);
410
+ };
411
+ }
412
+ },
365
413
 
366
- mixins: [Class, Animate],
367
-
368
- props: {
369
- group: String,
370
- threshold: Number,
371
- clsItem: String,
372
- clsPlaceholder: String,
373
- clsDrag: String,
374
- clsDragState: String,
375
- clsBase: String,
376
- clsNoDrag: String,
377
- clsEmpty: String,
378
- clsCustom: String,
379
- handle: String
380
- },
381
-
382
- data: {
383
- group: false,
384
- threshold: 5,
385
- clsItem: 'uk-sortable-item',
386
- clsPlaceholder: 'uk-sortable-placeholder',
387
- clsDrag: 'uk-sortable-drag',
388
- clsDragState: 'uk-drag',
389
- clsBase: 'uk-sortable',
390
- clsNoDrag: 'uk-sortable-nodrag',
391
- clsEmpty: 'uk-sortable-empty',
392
- clsCustom: '',
393
- handle: false,
394
- pos: {}
395
- },
414
+ events: {
415
+ name: uikitUtil.pointerDown,
416
+ passive: false,
417
+ handler: 'init' },
396
418
 
397
- created: function() {
398
- var this$1$1 = this;
399
419
 
400
- ['init', 'start', 'move', 'end'].forEach(function (key) {
401
- var fn = this$1$1[key];
402
- this$1$1[key] = function (e) {
403
- uikitUtil.assign(this$1$1.pos, uikitUtil.getEventPos(e));
404
- fn(e);
405
- };
406
- });
420
+ computed: {
421
+ target() {
422
+ return (this.$el.tBodies || [this.$el])[0];
407
423
  },
408
424
 
409
- events: {
410
-
411
- name: uikitUtil.pointerDown,
412
- passive: false,
413
- handler: 'init'
414
-
425
+ items() {
426
+ return uikitUtil.children(this.target);
415
427
  },
416
428
 
417
- computed: {
418
-
419
- target: function() {
420
- return (this.$el.tBodies || [this.$el])[0];
421
- },
422
-
423
- items: function() {
424
- return uikitUtil.children(this.target);
425
- },
429
+ isEmpty: {
430
+ get() {
431
+ return uikitUtil.isEmpty(this.items);
432
+ },
426
433
 
427
- isEmpty: {
434
+ watch(empty) {
435
+ uikitUtil.toggleClass(this.target, this.clsEmpty, empty);
436
+ },
428
437
 
429
- get: function() {
430
- return uikitUtil.isEmpty(this.items);
431
- },
438
+ immediate: true },
432
439
 
433
- watch: function(empty) {
434
- uikitUtil.toggleClass(this.target, this.clsEmpty, empty);
435
- },
436
440
 
437
- immediate: true
441
+ handles: {
442
+ get(_ref, el) {let { handle } = _ref;
443
+ return handle ? uikitUtil.$$(handle, el) : this.items;
444
+ },
438
445
 
439
- },
446
+ watch(handles, prev) {
447
+ uikitUtil.css(prev, { touchAction: '', userSelect: '' });
448
+ uikitUtil.css(handles, { touchAction: uikitUtil.hasTouch ? 'none' : '', userSelect: 'none' }); // touchAction set to 'none' causes a performance drop in Chrome 80
449
+ },
440
450
 
441
- handles: {
451
+ immediate: true } },
442
452
 
443
- get: function(ref, el) {
444
- var handle = ref.handle;
445
453
 
446
- return handle ? uikitUtil.$$(handle, el) : this.items;
447
- },
448
454
 
449
- watch: function(handles, prev) {
450
- uikitUtil.css(prev, {touchAction: '', userSelect: ''});
451
- uikitUtil.css(handles, {touchAction: uikitUtil.hasTouch ? 'none' : '', userSelect: 'none'}); // touchAction set to 'none' causes a performance drop in Chrome 80
452
- },
453
-
454
- immediate: true
455
-
456
- }
457
-
458
- },
459
-
460
- update: {
461
-
462
- write: function(data) {
463
-
464
- if (!this.drag || !uikitUtil.parent(this.placeholder)) {
465
- return;
466
- }
455
+ update: {
456
+ write(data) {
457
+ if (!this.drag || !uikitUtil.parent(this.placeholder)) {
458
+ return;
459
+ }
467
460
 
468
- var ref = this;
469
- var ref_pos = ref.pos;
470
- var x = ref_pos.x;
471
- var y = ref_pos.y;
472
- var ref_origin = ref.origin;
473
- var offsetTop = ref_origin.offsetTop;
474
- var offsetLeft = ref_origin.offsetLeft;
475
- var placeholder = ref.placeholder;
461
+ const {
462
+ pos: { x, y },
463
+ origin: { offsetTop, offsetLeft },
464
+ placeholder } =
465
+ this;
476
466
 
477
- uikitUtil.css(this.drag, {
478
- top: y - offsetTop,
479
- left: x - offsetLeft
480
- });
467
+ uikitUtil.css(this.drag, {
468
+ top: y - offsetTop,
469
+ left: x - offsetLeft });
481
470
 
482
- var sortable = this.getSortable(document.elementFromPoint(x, y));
483
471
 
484
- if (!sortable) {
485
- return;
486
- }
472
+ const sortable = this.getSortable(document.elementFromPoint(x, y));
487
473
 
488
- var items = sortable.items;
474
+ if (!sortable) {
475
+ return;
476
+ }
489
477
 
490
- if (items.some(uikitUtil.Transition.inProgress)) {
491
- return;
492
- }
478
+ const { items } = sortable;
493
479
 
494
- var target = findTarget(items, {x: x, y: y});
480
+ if (items.some(uikitUtil.Transition.inProgress)) {
481
+ return;
482
+ }
495
483
 
496
- if (items.length && (!target || target === placeholder)) {
497
- return;
498
- }
484
+ const target = findTarget(items, { x, y });
499
485
 
500
- var previous = this.getSortable(placeholder);
501
- var insertTarget = findInsertTarget(sortable.target, target, placeholder, x, y, sortable === previous && data.moved !== target);
486
+ if (items.length && (!target || target === placeholder)) {
487
+ return;
488
+ }
502
489
 
503
- if (insertTarget === false) {
504
- return;
505
- }
490
+ const previous = this.getSortable(placeholder);
491
+ const insertTarget = findInsertTarget(
492
+ sortable.target,
493
+ target,
494
+ placeholder,
495
+ x,
496
+ y,
497
+ sortable === previous && data.moved !== target);
506
498
 
507
- if (insertTarget && placeholder === insertTarget) {
508
- return;
509
- }
510
499
 
511
- if (sortable !== previous) {
512
- previous.remove(placeholder);
513
- data.moved = target;
514
- } else {
515
- delete data.moved;
516
- }
500
+ if (insertTarget === false) {
501
+ return;
502
+ }
517
503
 
518
- sortable.insert(placeholder, insertTarget);
504
+ if (insertTarget && placeholder === insertTarget) {
505
+ return;
506
+ }
519
507
 
520
- this.touched.add(sortable);
521
- },
508
+ if (sortable !== previous) {
509
+ previous.remove(placeholder);
510
+ data.moved = target;
511
+ } else {
512
+ delete data.moved;
513
+ }
522
514
 
523
- events: ['move']
515
+ sortable.insert(placeholder, insertTarget);
524
516
 
517
+ this.touched.add(sortable);
525
518
  },
526
519
 
527
- methods: {
528
-
529
- init: function(e) {
530
-
531
- var target = e.target;
532
- var button = e.button;
533
- var defaultPrevented = e.defaultPrevented;
534
- var ref = this.items.filter(function (el) { return uikitUtil.within(target, el); });
535
- var placeholder = ref[0];
536
-
537
- if (!placeholder
538
- || defaultPrevented
539
- || button > 0
540
- || uikitUtil.isInput(target)
541
- || uikitUtil.within(target, ("." + (this.clsNoDrag)))
542
- || this.handle && !uikitUtil.within(target, this.handle)
543
- ) {
544
- return;
545
- }
546
-
547
- e.preventDefault();
520
+ events: ['move'] },
548
521
 
549
- this.touched = new Set([this]);
550
- this.placeholder = placeholder;
551
- this.origin = uikitUtil.assign({target: target, index: uikitUtil.index(placeholder)}, this.pos);
552
522
 
553
- uikitUtil.on(document, uikitUtil.pointerMove, this.move);
554
- uikitUtil.on(document, uikitUtil.pointerUp, this.end);
523
+ methods: {
524
+ init(e) {
525
+ const { target, button, defaultPrevented } = e;
526
+ const [placeholder] = this.items.filter((el) => uikitUtil.within(target, el));
555
527
 
556
- if (!this.threshold) {
557
- this.start(e);
558
- }
559
-
560
- },
561
-
562
- start: function(e) {
563
-
564
- this.drag = appendDrag(this.$container, this.placeholder);
565
- var ref = this.placeholder.getBoundingClientRect();
566
- var left = ref.left;
567
- var top = ref.top;
568
- uikitUtil.assign(this.origin, {offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top});
569
-
570
- uikitUtil.addClass(this.drag, this.clsDrag, this.clsCustom);
571
- uikitUtil.addClass(this.placeholder, this.clsPlaceholder);
572
- uikitUtil.addClass(this.items, this.clsItem);
573
- uikitUtil.addClass(document.documentElement, this.clsDragState);
574
-
575
- uikitUtil.trigger(this.$el, 'start', [this, this.placeholder]);
576
-
577
- trackScroll(this.pos);
578
-
579
- this.move(e);
580
- },
581
-
582
- move: function(e) {
583
-
584
- if (this.drag) {
585
- this.$emit('move');
586
- } else if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {
587
- this.start(e);
588
- }
528
+ if (
529
+ !placeholder ||
530
+ defaultPrevented ||
531
+ button > 0 ||
532
+ uikitUtil.isInput(target) ||
533
+ uikitUtil.within(target, "." + this.clsNoDrag) ||
534
+ this.handle && !uikitUtil.within(target, this.handle))
535
+ {
536
+ return;
537
+ }
589
538
 
590
- },
539
+ e.preventDefault();
591
540
 
592
- end: function() {
593
- var this$1$1 = this;
541
+ this.touched = new Set([this]);
542
+ this.placeholder = placeholder;
543
+ this.origin = { target, index: uikitUtil.index(placeholder), ...this.pos };
594
544
 
545
+ uikitUtil.on(document, uikitUtil.pointerMove, this.move);
546
+ uikitUtil.on(document, uikitUtil.pointerUp, this.end);
595
547
 
596
- uikitUtil.off(document, uikitUtil.pointerMove, this.move);
597
- uikitUtil.off(document, uikitUtil.pointerUp, this.end);
548
+ if (!this.threshold) {
549
+ this.start(e);
550
+ }
551
+ },
598
552
 
599
- if (!this.drag) {
600
- return;
601
- }
553
+ start(e) {
554
+ this.drag = appendDrag(this.$container, this.placeholder);
555
+ const { left, top } = this.placeholder.getBoundingClientRect();
556
+ uikitUtil.assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top });
602
557
 
603
- untrackScroll();
558
+ uikitUtil.addClass(this.drag, this.clsDrag, this.clsCustom);
559
+ uikitUtil.addClass(this.placeholder, this.clsPlaceholder);
560
+ uikitUtil.addClass(this.items, this.clsItem);
561
+ uikitUtil.addClass(document.documentElement, this.clsDragState);
604
562
 
605
- var sortable = this.getSortable(this.placeholder);
563
+ uikitUtil.trigger(this.$el, 'start', [this, this.placeholder]);
606
564
 
607
- if (this === sortable) {
608
- if (this.origin.index !== uikitUtil.index(this.placeholder)) {
609
- uikitUtil.trigger(this.$el, 'moved', [this, this.placeholder]);
610
- }
611
- } else {
612
- uikitUtil.trigger(sortable.$el, 'added', [sortable, this.placeholder]);
613
- uikitUtil.trigger(this.$el, 'removed', [this, this.placeholder]);
614
- }
565
+ trackScroll(this.pos);
615
566
 
616
- uikitUtil.trigger(this.$el, 'stop', [this, this.placeholder]);
567
+ this.move(e);
568
+ },
617
569
 
618
- uikitUtil.remove(this.drag);
619
- this.drag = null;
570
+ move(e) {
571
+ if (this.drag) {
572
+ this.$emit('move');
573
+ } else if (
574
+ Math.abs(this.pos.x - this.origin.x) > this.threshold ||
575
+ Math.abs(this.pos.y - this.origin.y) > this.threshold)
576
+ {
577
+ this.start(e);
578
+ }
579
+ },
620
580
 
621
- this.touched.forEach(function (ref) {
622
- var clsPlaceholder = ref.clsPlaceholder;
623
- var clsItem = ref.clsItem;
581
+ end() {
582
+ uikitUtil.off(document, uikitUtil.pointerMove, this.move);
583
+ uikitUtil.off(document, uikitUtil.pointerUp, this.end);
624
584
 
625
- return this$1$1.touched.forEach(function (sortable) { return uikitUtil.removeClass(sortable.items, clsPlaceholder, clsItem); }
626
- );
627
- }
628
- );
629
- this.touched = null;
630
- uikitUtil.removeClass(document.documentElement, this.clsDragState);
585
+ if (!this.drag) {
586
+ return;
587
+ }
631
588
 
632
- },
589
+ untrackScroll();
633
590
 
634
- insert: function(element, target) {
635
- var this$1$1 = this;
591
+ const sortable = this.getSortable(this.placeholder);
636
592
 
593
+ if (this === sortable) {
594
+ if (this.origin.index !== uikitUtil.index(this.placeholder)) {
595
+ uikitUtil.trigger(this.$el, 'moved', [this, this.placeholder]);
596
+ }
597
+ } else {
598
+ uikitUtil.trigger(sortable.$el, 'added', [sortable, this.placeholder]);
599
+ uikitUtil.trigger(this.$el, 'removed', [this, this.placeholder]);
600
+ }
637
601
 
638
- uikitUtil.addClass(this.items, this.clsItem);
602
+ uikitUtil.trigger(this.$el, 'stop', [this, this.placeholder]);
639
603
 
640
- var insert = function () { return target
641
- ? uikitUtil.before(target, element)
642
- : uikitUtil.append(this$1$1.target, element); };
604
+ uikitUtil.remove(this.drag);
605
+ this.drag = null;
643
606
 
644
- this.animate(insert);
607
+ for (const { clsPlaceholder, clsItem } of this.touched) {
608
+ for (const sortable of this.touched) {
609
+ uikitUtil.removeClass(sortable.items, clsPlaceholder, clsItem);
610
+ }
611
+ }
612
+ this.touched = null;
613
+ uikitUtil.removeClass(document.documentElement, this.clsDragState);
614
+ },
645
615
 
646
- },
616
+ insert(element, target) {
617
+ uikitUtil.addClass(this.items, this.clsItem);
647
618
 
648
- remove: function(element) {
619
+ const insert = () => target ? uikitUtil.before(target, element) : uikitUtil.append(this.target, element);
649
620
 
650
- if (!uikitUtil.within(element, this.target)) {
651
- return;
652
- }
621
+ this.animate(insert);
622
+ },
653
623
 
654
- this.animate(function () { return uikitUtil.remove(element); });
624
+ remove(element) {
625
+ if (!uikitUtil.within(element, this.target)) {
626
+ return;
627
+ }
655
628
 
656
- },
629
+ this.animate(() => uikitUtil.remove(element));
630
+ },
657
631
 
658
- getSortable: function(element) {
659
- do {
660
- var sortable = this.$getComponent(element, 'sortable');
632
+ getSortable(element) {
633
+ do {
634
+ const sortable = this.$getComponent(element, 'sortable');
661
635
 
662
- if (sortable && (sortable === this || this.group !== false && sortable.group === this.group)) {
663
- return sortable;
664
- }
665
- } while ((element = uikitUtil.parent(element)));
636
+ if (
637
+ sortable && (
638
+ sortable === this || this.group !== false && sortable.group === this.group))
639
+ {
640
+ return sortable;
666
641
  }
642
+ } while (element = uikitUtil.parent(element));
643
+ } } };
667
644
 
668
- }
669
645
 
670
- };
671
646
 
672
- var trackTimer;
647
+ let trackTimer;
673
648
  function trackScroll(pos) {
649
+ let last = Date.now();
650
+ trackTimer = setInterval(() => {
651
+ let { x, y } = pos;
652
+ y += uikitUtil.scrollTop(window);
653
+
654
+ const dist = (Date.now() - last) * 0.3;
655
+ last = Date.now();
656
+
657
+ uikitUtil.scrollParents(document.elementFromPoint(x, pos.y), /auto|scroll/).
658
+ reverse().
659
+ some((scrollEl) => {
660
+ let { scrollTop: scroll, scrollHeight } = scrollEl;
661
+
662
+ const { top, bottom, height } = uikitUtil.offset(uikitUtil.getViewport(scrollEl));
663
+
664
+ if (top < y && top + 35 > y) {
665
+ scroll -= dist;
666
+ } else if (bottom > y && bottom - 35 < y) {
667
+ scroll += dist;
668
+ } else {
669
+ return;
670
+ }
674
671
 
675
- var last = Date.now();
676
- trackTimer = setInterval(function () {
677
-
678
- var x = pos.x;
679
- var y = pos.y;
680
- y += uikitUtil.scrollTop(window);
681
-
682
- var dist = (Date.now() - last) * .3;
683
- last = Date.now();
684
-
685
- uikitUtil.scrollParents(document.elementFromPoint(x, pos.y), /auto|scroll/).reverse().some(function (scrollEl) {
686
-
687
- var scroll = scrollEl.scrollTop;
688
- var scrollHeight = scrollEl.scrollHeight;
689
-
690
- var ref = uikitUtil.offset(uikitUtil.getViewport(scrollEl));
691
- var top = ref.top;
692
- var bottom = ref.bottom;
693
- var height = ref.height;
694
-
695
- if (top < y && top + 35 > y) {
696
- scroll -= dist;
697
- } else if (bottom > y && bottom - 35 < y) {
698
- scroll += dist;
699
- } else {
700
- return;
701
- }
702
-
703
- if (scroll > 0 && scroll < scrollHeight - height) {
704
- uikitUtil.scrollTop(scrollEl, scroll);
705
- return true;
706
- }
707
-
708
- });
709
-
710
- }, 15);
711
-
672
+ if (scroll > 0 && scroll < scrollHeight - height) {
673
+ uikitUtil.scrollTop(scrollEl, scroll);
674
+ return true;
675
+ }
676
+ });
677
+ }, 15);
712
678
  }
713
679
 
714
680
  function untrackScroll() {
715
- clearInterval(trackTimer);
681
+ clearInterval(trackTimer);
716
682
  }
717
683
 
718
684
  function appendDrag(container, element) {
719
- var clone = uikitUtil.append(container, element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\/>$)/g, '$1div$2'));
685
+ const clone = uikitUtil.append(
686
+ container,
687
+ element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\/>$)/g, '$1div$2'));
688
+
689
+
690
+ uikitUtil.css(clone, 'margin', '0', 'important');
691
+ uikitUtil.css(clone, {
692
+ boxSizing: 'border-box',
693
+ width: element.offsetWidth,
694
+ height: element.offsetHeight,
695
+ padding: uikitUtil.css(element, 'padding') });
720
696
 
721
- uikitUtil.css(clone, 'margin', '0', 'important');
722
- uikitUtil.css(clone, uikitUtil.assign({
723
- boxSizing: 'border-box',
724
- width: element.offsetWidth,
725
- height: element.offsetHeight
726
- }, uikitUtil.css(element, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));
727
697
 
728
- uikitUtil.height(clone.firstElementChild, uikitUtil.height(element.firstElementChild));
698
+ uikitUtil.height(clone.firstElementChild, uikitUtil.height(element.firstElementChild));
729
699
 
730
- return clone;
700
+ return clone;
731
701
  }
732
702
 
733
703
  function findTarget(items, point) {
734
- return items[uikitUtil.findIndex(items, function (item) { return uikitUtil.pointInRect(point, item.getBoundingClientRect()); })];
704
+ return items[uikitUtil.findIndex(items, (item) => uikitUtil.pointInRect(point, item.getBoundingClientRect()))];
735
705
  }
736
706
 
737
707
  function findInsertTarget(list, target, placeholder, x, y, sameList) {
738
-
739
- if (!uikitUtil.children(list).length) {
740
- return;
708
+ if (!uikitUtil.children(list).length) {
709
+ return;
710
+ }
711
+
712
+ const rect = target.getBoundingClientRect();
713
+ if (!sameList) {
714
+ if (!isHorizontal(list, placeholder)) {
715
+ return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;
741
716
  }
742
717
 
743
- var rect = target.getBoundingClientRect();
744
- if (!sameList) {
745
-
746
- if (!isHorizontal(list, placeholder)) {
747
- return y < rect.top + rect.height / 2
748
- ? target
749
- : target.nextElementSibling;
750
- }
751
-
752
- return target;
753
- }
754
-
755
- var placeholderRect = placeholder.getBoundingClientRect();
756
- var sameRow = linesIntersect(
757
- [rect.top, rect.bottom],
758
- [placeholderRect.top, placeholderRect.bottom]
759
- );
718
+ return target;
719
+ }
760
720
 
761
- var pointerPos = sameRow ? x : y;
762
- var lengthProp = sameRow ? 'width' : 'height';
763
- var startProp = sameRow ? 'left' : 'top';
764
- var endProp = sameRow ? 'right' : 'bottom';
721
+ const placeholderRect = placeholder.getBoundingClientRect();
722
+ const sameRow = linesIntersect(
723
+ [rect.top, rect.bottom],
724
+ [placeholderRect.top, placeholderRect.bottom]);
765
725
 
766
- var diff = placeholderRect[lengthProp] < rect[lengthProp] ? rect[lengthProp] - placeholderRect[lengthProp] : 0;
767
726
 
768
- if (placeholderRect[startProp] < rect[startProp]) {
727
+ const pointerPos = sameRow ? x : y;
728
+ const lengthProp = sameRow ? 'width' : 'height';
729
+ const startProp = sameRow ? 'left' : 'top';
730
+ const endProp = sameRow ? 'right' : 'bottom';
769
731
 
770
- if (diff && pointerPos < rect[startProp] + diff) {
771
- return false;
772
- }
732
+ const diff =
733
+ placeholderRect[lengthProp] < rect[lengthProp] ?
734
+ rect[lengthProp] - placeholderRect[lengthProp] :
735
+ 0;
773
736
 
774
- return target.nextElementSibling;
737
+ if (placeholderRect[startProp] < rect[startProp]) {
738
+ if (diff && pointerPos < rect[startProp] + diff) {
739
+ return false;
775
740
  }
776
741
 
777
- if (diff && pointerPos > rect[endProp] - diff) {
778
- return false;
779
- }
742
+ return target.nextElementSibling;
743
+ }
780
744
 
781
- return target;
745
+ if (diff && pointerPos > rect[endProp] - diff) {
746
+ return false;
747
+ }
748
+
749
+ return target;
782
750
  }
783
751
 
784
752
  function isHorizontal(list, placeholder) {
785
-
786
- var single = uikitUtil.children(list).length === 1;
787
-
788
- if (single) {
789
- uikitUtil.append(list, placeholder);
790
- }
791
-
792
- var items = uikitUtil.children(list);
793
- var isHorizontal = items.some(function (el, i) {
794
- var rectA = el.getBoundingClientRect();
795
- return items.slice(i + 1).some(function (el) {
796
- var rectB = el.getBoundingClientRect();
797
- return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);
798
- });
753
+ const single = uikitUtil.children(list).length === 1;
754
+
755
+ if (single) {
756
+ uikitUtil.append(list, placeholder);
757
+ }
758
+
759
+ const items = uikitUtil.children(list);
760
+ const isHorizontal = items.some((el, i) => {
761
+ const rectA = el.getBoundingClientRect();
762
+ return items.slice(i + 1).some((el) => {
763
+ const rectB = el.getBoundingClientRect();
764
+ return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);
799
765
  });
766
+ });
800
767
 
801
- if (single) {
802
- uikitUtil.remove(placeholder);
803
- }
768
+ if (single) {
769
+ uikitUtil.remove(placeholder);
770
+ }
804
771
 
805
- return isHorizontal;
772
+ return isHorizontal;
806
773
  }
807
774
 
808
775
  function linesIntersect(lineA, lineB) {
809
- return lineA[1] > lineB[0] && lineB[1] > lineA[0];
776
+ return lineA[1] > lineB[0] && lineB[1] > lineA[0];
810
777
  }
811
778
 
812
779
  if (typeof window !== 'undefined' && window.UIkit) {
813
- window.UIkit.component('sortable', Component);
780
+ window.UIkit.component('sortable', Component);
814
781
  }
815
782
 
816
783
  return Component;