uikit 3.11.2-dev.31cd2ba38 → 3.11.2-dev.4274bc35b

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 +38 -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 +121 -202
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +121 -202
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +123 -208
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +123 -208
  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 +326 -358
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +324 -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 +324 -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 +5405 -6716
  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 +7997 -9703
  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 +38 -50
  95. package/src/js/core/img.js +127 -87
  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 +130 -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 +33 -47
  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 +52 -97
  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 +52 -97
  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,11 +1,27 @@
1
1
  import Media from '../mixin/media';
2
2
  import Togglable from '../mixin/togglable';
3
- import {attr, closest, hasClass, includes, isBoolean, isFocusable, isTouch, matches, once, pointerDown, pointerEnter, pointerLeave, queryAll, trigger, within} from 'uikit-util';
3
+ import {
4
+ attr,
5
+ closest,
6
+ hasClass,
7
+ includes,
8
+ isBoolean,
9
+ isFocusable,
10
+ isTag,
11
+ isTouch,
12
+ matches,
13
+ once,
14
+ pointerDown,
15
+ pointerEnter,
16
+ pointerLeave,
17
+ queryAll,
18
+ trigger,
19
+ within,
20
+ } from 'uikit-util';
4
21
 
5
22
  const KEY_SPACE = 32;
6
23
 
7
24
  export default {
8
-
9
25
  mixins: [Media, Togglable],
10
26
 
11
27
  args: 'target',
@@ -14,14 +30,14 @@ export default {
14
30
  href: String,
15
31
  target: null,
16
32
  mode: 'list',
17
- queued: Boolean
33
+ queued: Boolean,
18
34
  },
19
35
 
20
36
  data: {
21
37
  href: false,
22
38
  target: false,
23
39
  mode: 'click',
24
- queued: true
40
+ queued: true,
25
41
  },
26
42
 
27
43
  connected() {
@@ -31,26 +47,21 @@ export default {
31
47
  },
32
48
 
33
49
  computed: {
34
-
35
50
  target: {
36
-
37
- get({href, target}, $el) {
51
+ get({ href, target }, $el) {
38
52
  target = queryAll(target || href, $el);
39
- return target.length && target || [$el];
53
+ return (target.length && target) || [$el];
40
54
  },
41
55
 
42
56
  watch() {
43
57
  this.updateAria();
44
58
  },
45
59
 
46
- immediate: true
47
-
48
- }
49
-
60
+ immediate: true,
61
+ },
50
62
  },
51
63
 
52
64
  events: [
53
-
54
65
  {
55
66
  name: pointerDown,
56
67
 
@@ -59,7 +70,6 @@ export default {
59
70
  },
60
71
 
61
72
  handler(e) {
62
-
63
73
  if (!isTouch(e) || this._showState) {
64
74
  return;
65
75
  }
@@ -67,17 +77,22 @@ export default {
67
77
  // Clicking a button does not give it focus on all browsers and platforms
68
78
  // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus
69
79
  trigger(this.$el, 'focus');
70
- once(document, pointerDown, () => trigger(this.$el, 'blur'), true, e => !within(e.target, this.$el));
80
+ once(
81
+ document,
82
+ pointerDown,
83
+ () => trigger(this.$el, 'blur'),
84
+ true,
85
+ (e) => !within(e.target, this.$el)
86
+ );
71
87
 
72
88
  // Prevent initial click to prevent double toggle through focus + click
73
89
  if (includes(this.mode, 'click')) {
74
90
  this._preventClick = true;
75
91
  }
76
- }
92
+ },
77
93
  },
78
94
 
79
95
  {
80
-
81
96
  name: `${pointerEnter} ${pointerLeave} focus blur`,
82
97
 
83
98
  filter() {
@@ -93,16 +108,16 @@ export default {
93
108
  const expanded = attr(this.$el, 'aria-expanded');
94
109
 
95
110
  // Skip hide if still hovered or focused
96
- if (!show && (
97
- e.type === pointerLeave && matches(this.$el, ':focus')
98
- || e.type === 'blur' && matches(this.$el, ':hover')
99
- )) {
111
+ if (
112
+ !show &&
113
+ ((e.type === pointerLeave && matches(this.$el, ':focus')) ||
114
+ (e.type === 'blur' && matches(this.$el, ':hover')))
115
+ ) {
100
116
  return;
101
117
  }
102
118
 
103
119
  // Skip if state does not change e.g. hover + focus received
104
120
  if (this._showState && show === (expanded !== this._showState)) {
105
-
106
121
  // Ensure reset if state has changed through click
107
122
  if (!show) {
108
123
  this._showState = null;
@@ -113,15 +128,14 @@ export default {
113
128
  this._showState = show ? expanded : null;
114
129
 
115
130
  this.toggle(`toggle${show ? 'show' : 'hide'}`);
116
- }
117
-
131
+ },
118
132
  },
119
133
 
120
134
  {
121
135
  name: 'keydown',
122
136
 
123
137
  filter() {
124
- return includes(this.mode, 'click') && this.$el.tagName !== 'INPUT';
138
+ return includes(this.mode, 'click') && isTag(this.$el, 'input');
125
139
  },
126
140
 
127
141
  handler(e) {
@@ -129,11 +143,10 @@ export default {
129
143
  e.preventDefault();
130
144
  this.$el.click();
131
145
  }
132
- }
146
+ },
133
147
  },
134
148
 
135
149
  {
136
-
137
150
  name: 'click',
138
151
 
139
152
  filter() {
@@ -141,28 +154,25 @@ export default {
141
154
  },
142
155
 
143
156
  handler(e) {
144
-
145
157
  if (this._preventClick) {
146
- return this._preventClick = null;
158
+ return (this._preventClick = null);
147
159
  }
148
160
 
149
161
  let link;
150
- if (closest(e.target, 'a[href="#"], a[href=""]')
151
- || (link = closest(e.target, 'a[href]')) && (
152
- attr(this.$el, 'aria-expanded') !== 'true'
153
- || link.hash && matches(this.target, link.hash)
154
- )
162
+ if (
163
+ closest(e.target, 'a[href="#"], a[href=""]') ||
164
+ ((link = closest(e.target, 'a[href]')) &&
165
+ (attr(this.$el, 'aria-expanded') !== 'true' ||
166
+ (link.hash && matches(this.target, link.hash))))
155
167
  ) {
156
168
  e.preventDefault();
157
169
  }
158
170
 
159
171
  this.toggle();
160
- }
161
-
172
+ },
162
173
  },
163
174
 
164
175
  {
165
-
166
176
  name: 'toggled',
167
177
 
168
178
  self: true,
@@ -175,36 +185,27 @@ export default {
175
185
  if (e.target === this.target[0]) {
176
186
  this.updateAria(toggled);
177
187
  }
178
- }
179
- }
180
-
188
+ },
189
+ },
181
190
  ],
182
191
 
183
192
  update: {
184
-
185
193
  read() {
186
- return includes(this.mode, 'media') && this.media
187
- ? {match: this.matchMedia}
188
- : false;
194
+ return includes(this.mode, 'media') && this.media ? { match: this.matchMedia } : false;
189
195
  },
190
196
 
191
- write({match}) {
192
-
197
+ write({ match }) {
193
198
  const toggled = this.isToggled(this.target);
194
199
  if (match ? !toggled : toggled) {
195
200
  this.toggle();
196
201
  }
197
-
198
202
  },
199
203
 
200
- events: ['resize']
201
-
204
+ events: ['resize'],
202
205
  },
203
206
 
204
207
  methods: {
205
-
206
- toggle(type) {
207
-
208
+ async toggle(type) {
208
209
  if (!trigger(this.target, type || 'toggle', [this])) {
209
210
  return;
210
211
  }
@@ -213,23 +214,22 @@ export default {
213
214
  return this.toggleElement(this.target);
214
215
  }
215
216
 
216
- const leaving = this.target.filter(el => hasClass(el, this.clsLeave));
217
+ const leaving = this.target.filter((el) => hasClass(el, this.clsLeave));
217
218
 
218
219
  if (leaving.length) {
219
- this.target.forEach(el => {
220
+ for (const el of this.target) {
220
221
  const isLeaving = includes(leaving, el);
221
222
  this.toggleElement(el, isLeaving, isLeaving);
222
- });
223
+ }
223
224
  return;
224
225
  }
225
226
 
226
227
  const toggled = this.target.filter(this.isToggled);
227
- this.toggleElement(toggled, false).then(() =>
228
- this.toggleElement(this.target.filter(el =>
229
- !includes(toggled, el)
230
- ), true)
228
+ await this.toggleElement(toggled, false);
229
+ await this.toggleElement(
230
+ this.target.filter((el) => !includes(toggled, el)),
231
+ true
231
232
  );
232
-
233
233
  },
234
234
 
235
235
  updateAria(toggled) {
@@ -237,12 +237,11 @@ export default {
237
237
  return;
238
238
  }
239
239
 
240
- attr(this.$el, 'aria-expanded', isBoolean(toggled)
241
- ? toggled
242
- : this.isToggled(this.target)
240
+ attr(
241
+ this.$el,
242
+ 'aria-expanded',
243
+ isBoolean(toggled) ? toggled : this.isToggled(this.target)
243
244
  );
244
- }
245
-
246
- }
247
-
245
+ },
246
+ },
248
247
  };
@@ -1,29 +1,25 @@
1
- import {css, hasAttr, isInView, isVideo, isVisible, mute, pause, play} from 'uikit-util';
1
+ import { css, hasAttr, isInView, isVideo, isVisible, mute, pause, play } from 'uikit-util';
2
2
 
3
3
  export default {
4
-
5
4
  args: 'autoplay',
6
5
 
7
6
  props: {
8
7
  automute: Boolean,
9
- autoplay: Boolean
8
+ autoplay: Boolean,
10
9
  },
11
10
 
12
11
  data: {
13
12
  automute: false,
14
- autoplay: true
13
+ autoplay: true,
15
14
  },
16
15
 
17
16
  computed: {
18
-
19
- inView({autoplay}) {
17
+ inView({ autoplay }) {
20
18
  return autoplay === 'inview';
21
- }
22
-
19
+ },
23
20
  },
24
21
 
25
22
  connected() {
26
-
27
23
  if (this.inView && !hasAttr(this.$el, 'preload')) {
28
24
  this.$el.preload = 'none';
29
25
  }
@@ -31,35 +27,28 @@ export default {
31
27
  if (this.automute) {
32
28
  mute(this.$el);
33
29
  }
34
-
35
30
  },
36
31
 
37
32
  update: {
38
-
39
33
  read() {
40
-
41
34
  if (!isVideo(this.$el)) {
42
35
  return false;
43
36
  }
44
37
 
45
38
  return {
46
39
  visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',
47
- inView: this.inView && isInView(this.$el)
40
+ inView: this.inView && isInView(this.$el),
48
41
  };
49
42
  },
50
43
 
51
- write({visible, inView}) {
52
-
53
- if (!visible || this.inView && !inView) {
44
+ write({ visible, inView }) {
45
+ if (!visible || (this.inView && !inView)) {
54
46
  pause(this.$el);
55
- } else if (this.autoplay === true || this.inView && inView) {
47
+ } else if (this.autoplay === true || (this.inView && inView)) {
56
48
  play(this.$el);
57
49
  }
58
-
59
50
  },
60
51
 
61
- events: ['resize', 'scroll']
62
-
63
- }
64
-
52
+ events: ['resize', 'scroll'],
53
+ },
65
54
  };
@@ -1,38 +1,37 @@
1
1
  import fade from './internal/animate-fade';
2
2
  import slide from './internal/animate-slide';
3
- import {noop, Promise} from 'uikit-util';
3
+ import { noop } from 'uikit-util';
4
4
 
5
5
  export default {
6
-
7
6
  props: {
8
7
  duration: Number,
9
- animation: Boolean
8
+ animation: Boolean,
10
9
  },
11
10
 
12
11
  data: {
13
12
  duration: 150,
14
- animation: 'slide'
13
+ animation: 'slide',
15
14
  },
16
15
 
17
16
  methods: {
18
-
19
17
  animate(action, target = this.$el) {
20
-
21
18
  const name = this.animation;
22
- const animationFn = name === 'fade'
23
- ? fade
24
- : name === 'delayed-fade'
19
+ const animationFn =
20
+ name === 'fade'
21
+ ? fade
22
+ : name === 'delayed-fade'
25
23
  ? (...args) => fade(...args, 40)
26
24
  : name
27
- ? slide
28
- : () => {
29
- action();
30
- return Promise.resolve();
31
- };
32
-
33
- return animationFn(action, target, this.duration)
34
- .then(() => this.$update(target, 'resize'), noop);
35
- }
36
-
37
- }
25
+ ? slide
26
+ : () => {
27
+ action();
28
+ return Promise.resolve();
29
+ };
30
+
31
+ return animationFn(action, target, this.duration).then(
32
+ () => this.$update(target, 'resize'),
33
+ noop
34
+ );
35
+ },
36
+ },
38
37
  };
@@ -1,9 +1,7 @@
1
- import {addClass, hasClass} from 'uikit-util';
1
+ import { addClass, hasClass } from 'uikit-util';
2
2
 
3
3
  export default {
4
-
5
4
  connected() {
6
5
  !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);
7
- }
8
-
6
+ },
9
7
  };
@@ -1,21 +1,17 @@
1
- import {$} from 'uikit-util';
1
+ import { $ } from 'uikit-util';
2
2
 
3
3
  export default {
4
-
5
4
  props: {
6
- container: Boolean
5
+ container: Boolean,
7
6
  },
8
7
 
9
8
  data: {
10
- container: true
9
+ container: true,
11
10
  },
12
11
 
13
12
  computed: {
14
-
15
- container({container}) {
16
- return container === true && this.$container || container && $(container);
17
- }
18
-
19
- }
20
-
13
+ container({ container }) {
14
+ return (container === true && this.$container) || (container && $(container));
15
+ },
16
+ },
21
17
  };
@@ -1,43 +1,58 @@
1
- import {getRows} from '../../core/margin';
2
- import {addClass, children, css, hasClass, height, isInView, once, Promise, removeClass, sortBy, toNumber, Transition} from 'uikit-util';
1
+ import { getRows } from '../../core/margin';
2
+ import {
3
+ addClass,
4
+ children,
5
+ css,
6
+ hasClass,
7
+ height,
8
+ isInView,
9
+ once,
10
+ removeClass,
11
+ sortBy,
12
+ toNumber,
13
+ Transition,
14
+ } from 'uikit-util';
3
15
 
4
16
  const clsLeave = 'uk-transition-leave';
5
17
  const clsEnter = 'uk-transition-enter';
6
18
 
7
19
  export default function fade(action, target, duration, stagger = 0) {
8
-
9
20
  const index = transitionIndex(target, true);
10
- const propsIn = {opacity: 1};
11
- const propsOut = {opacity: 0};
21
+ const propsIn = { opacity: 1 };
22
+ const propsOut = { opacity: 0 };
12
23
 
13
- const wrapIndexFn = fn =>
14
- () => index === transitionIndex(target) ? fn() : Promise.reject();
24
+ const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
15
25
 
16
26
  const leaveFn = wrapIndexFn(() => {
17
-
18
27
  addClass(target, clsLeave);
19
28
 
20
- return Promise.all(getTransitionNodes(target).map((child, i) =>
21
- new Promise(resolve =>
22
- setTimeout(() => Transition.start(child, propsOut, duration / 2, 'ease').then(resolve), i * stagger)
29
+ return Promise.all(
30
+ getTransitionNodes(target).map(
31
+ (child, i) =>
32
+ new Promise((resolve) =>
33
+ setTimeout(
34
+ () =>
35
+ Transition.start(child, propsOut, duration / 2, 'ease').then(
36
+ resolve
37
+ ),
38
+ i * stagger
39
+ )
40
+ )
23
41
  )
24
- )).then(() => removeClass(target, clsLeave));
25
-
42
+ ).then(() => removeClass(target, clsLeave));
26
43
  });
27
44
 
28
45
  const enterFn = wrapIndexFn(() => {
29
-
30
46
  const oldHeight = height(target);
31
47
 
32
48
  addClass(target, clsEnter);
33
49
  action();
34
50
 
35
- css(children(target), {opacity: 0});
51
+ css(children(target), { opacity: 0 });
36
52
 
37
53
  // Ensure UIkit updates have propagated
38
- return new Promise(resolve =>
54
+ return new Promise((resolve) =>
39
55
  requestAnimationFrame(() => {
40
-
41
56
  const nodes = children(target);
42
57
  const newHeight = height(target);
43
58
 
@@ -48,21 +63,35 @@ export default function fade(action, target, duration, stagger = 0) {
48
63
  const transitionNodes = getTransitionNodes(target);
49
64
  css(nodes, propsOut);
50
65
 
51
- const transitions = transitionNodes.map((child, i) =>
52
- new Promise(resolve =>
53
- setTimeout(() => Transition.start(child, propsIn, duration / 2, 'ease').then(resolve), i * stagger)
54
- )
66
+ const transitions = transitionNodes.map(
67
+ (child, i) =>
68
+ new Promise((resolve) =>
69
+ setTimeout(
70
+ () =>
71
+ Transition.start(child, propsIn, duration / 2, 'ease').then(
72
+ resolve
73
+ ),
74
+ i * stagger
75
+ )
76
+ )
55
77
  );
56
78
 
57
79
  if (oldHeight !== newHeight) {
58
- transitions.push(Transition.start(target, {height: newHeight}, duration / 2 + transitionNodes.length * stagger, 'ease'));
80
+ transitions.push(
81
+ Transition.start(
82
+ target,
83
+ { height: newHeight },
84
+ duration / 2 + transitionNodes.length * stagger,
85
+ 'ease'
86
+ )
87
+ );
59
88
  }
60
89
 
61
90
  Promise.all(transitions).then(() => {
62
91
  removeClass(target, clsEnter);
63
92
  if (index === transitionIndex(target)) {
64
- css(target, {height: '', alignContent: ''});
65
- css(nodes, {opacity: ''});
93
+ css(target, { height: '', alignContent: '' });
94
+ css(nodes, { opacity: '' });
66
95
  delete target.dataset.transition;
67
96
  }
68
97
  resolve();
@@ -74,8 +103,8 @@ export default function fade(action, target, duration, stagger = 0) {
74
103
  return hasClass(target, clsLeave)
75
104
  ? waitTransitionend(target).then(enterFn)
76
105
  : hasClass(target, clsEnter)
77
- ? waitTransitionend(target).then(leaveFn).then(enterFn)
78
- : leaveFn().then(enterFn);
106
+ ? waitTransitionend(target).then(leaveFn).then(enterFn)
107
+ : leaveFn().then(enterFn);
79
108
  }
80
109
 
81
110
  function transitionIndex(target, next) {
@@ -87,11 +116,25 @@ function transitionIndex(target, next) {
87
116
  }
88
117
 
89
118
  function waitTransitionend(target) {
90
- return Promise.all(children(target).filter(Transition.inProgress).map(el =>
91
- new Promise(resolve => once(el, 'transitionend transitioncanceled', resolve))
92
- ));
119
+ return Promise.all(
120
+ children(target)
121
+ .filter(Transition.inProgress)
122
+ .map(
123
+ (el) =>
124
+ new Promise((resolve) => once(el, 'transitionend transitioncanceled', resolve))
125
+ )
126
+ );
93
127
  }
94
128
 
95
129
  function getTransitionNodes(target) {
96
- return getRows(children(target)).reduce((nodes, row) => nodes.concat(sortBy(row.filter(el => isInView(el)), 'offsetLeft')), []);
130
+ return getRows(children(target)).reduce(
131
+ (nodes, row) =>
132
+ nodes.concat(
133
+ sortBy(
134
+ row.filter((el) => isInView(el)),
135
+ 'offsetLeft'
136
+ )
137
+ ),
138
+ []
139
+ );
97
140
  }