uikit 3.11.2-dev.a08b20474 → 3.11.2-dev.a1707d2db

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 +5410 -6746
  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 +8152 -9864
  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 +65 -82
  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 +78 -78
  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 -54
  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,47 +1,66 @@
1
- import {append, attr, children, createEvent, css, data, escape, fragment, hasAttr, includes, isArray, isEmpty, isUndefined, parent, parseOptions, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
1
+ import {
2
+ append,
3
+ attr,
4
+ children,
5
+ createEvent,
6
+ css,
7
+ data,
8
+ escape,
9
+ fragment,
10
+ hasAttr,
11
+ includes,
12
+ isArray,
13
+ isEmpty,
14
+ isTag,
15
+ parent,
16
+ parseOptions,
17
+ queryAll,
18
+ removeAttr,
19
+ startsWith,
20
+ toFloat,
21
+ toPx,
22
+ trigger,
23
+ } from 'uikit-util';
2
24
 
3
25
  const nativeLazyLoad = 'loading' in HTMLImageElement.prototype;
26
+ const nativeIsIntersecting = 'isIntersecting' in IntersectionObserverEntry.prototype; // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
4
27
 
5
28
  export default {
6
-
7
29
  args: 'dataSrc',
8
30
 
9
31
  props: {
10
32
  dataSrc: String,
11
- dataSources: String,
33
+ sources: String,
12
34
  offsetTop: String,
13
35
  offsetLeft: String,
14
- target: String
36
+ target: String,
37
+ loading: String,
15
38
  },
16
39
 
17
40
  data: {
18
41
  dataSrc: '',
19
- dataSources: [],
42
+ sources: false,
20
43
  offsetTop: '50vh',
21
44
  offsetLeft: '50vw',
22
- target: false
45
+ target: false,
46
+ loading: 'lazy',
23
47
  },
24
48
 
25
49
  computed: {
26
-
27
50
  target: {
28
-
29
- get({target}) {
51
+ get({ target }) {
30
52
  return [this.$el, ...queryAll(target, this.$el)];
31
53
  },
32
54
 
33
55
  watch() {
34
56
  this.observe();
35
- }
36
-
37
- }
38
-
57
+ },
58
+ },
39
59
  },
40
60
 
41
61
  connected() {
42
-
43
- if (!window.IntersectionObserver) {
44
- setSrcAttrs(this.$el, this.dataSrc);
62
+ if (this.loading !== 'lazy' || !window.IntersectionObserver || !nativeIsIntersecting) {
63
+ this.load();
45
64
  return;
46
65
  }
47
66
 
@@ -56,100 +75,91 @@ export default {
56
75
 
57
76
  ensureSrcAttribute(this.$el);
58
77
 
59
- const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(this.offsetLeft, 'width')}px`;
60
- this.observer = new IntersectionObserver(this.load, {rootMargin});
78
+ const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(
79
+ this.offsetLeft,
80
+ 'width'
81
+ )}px`;
82
+ this.observer = new IntersectionObserver(
83
+ (entries) => {
84
+ if (entries.some((entry) => entry.isIntersecting)) {
85
+ this.load();
86
+ this.observer.disconnect();
87
+ }
88
+ },
89
+ { rootMargin }
90
+ );
61
91
  this.observe();
62
-
63
92
  },
64
93
 
65
94
  disconnected() {
66
- this.observer && this.observer.disconnect();
95
+ if (this._data.image) {
96
+ this._data.image.onload = '';
97
+ }
98
+
99
+ this.observer?.disconnect();
67
100
  },
68
101
 
69
102
  update: {
70
-
71
103
  write(store) {
72
104
  if (!this.observer || isImg(this.$el)) {
73
105
  return false;
74
106
  }
107
+
75
108
  const srcset = data(this.$el, 'data-srcset');
76
109
  if (srcset && window.devicePixelRatio !== 1) {
77
-
78
110
  const bgSize = css(this.$el, 'backgroundSize');
79
111
  if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
80
112
  store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
81
113
  css(this.$el, 'backgroundSize', `${store.bgSize}px`);
82
114
  }
83
-
84
115
  }
85
-
86
116
  },
87
117
 
88
- events: ['resize']
89
-
118
+ events: ['resize'],
90
119
  },
91
120
 
92
121
  methods: {
93
-
94
- load(entries) {
95
-
96
- // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
97
- if (!entries.some(entry => isUndefined(entry.isIntersecting) || entry.isIntersecting)) {
98
- return;
99
- }
100
-
122
+ load() {
101
123
  if (this._data.image) {
102
124
  return this._data.image;
103
125
  }
104
126
 
105
127
  const image = isImg(this.$el)
106
128
  ? this.$el
107
- : getImageFromElement(
108
- this.$el,
109
- this.dataSrc,
110
- this.dataSources
111
- );
112
-
113
- this._data.image = image;
114
- image.loading = 'eager';
115
- setSrcAttrs(this.$el, image.currentSrc);
129
+ : getImageFromElement(this.$el, this.dataSrc, this.sources);
116
130
 
117
- this.observer.disconnect();
131
+ removeAttr(image, 'loading');
132
+ setSrcAttrs(this.$el, image.currentSrc);
133
+ return (this._data.image = image);
118
134
  },
119
135
 
120
136
  observe() {
121
137
  if (this._connected && !this._data.image) {
122
- this.target.forEach(el => this.observer.observe(el));
138
+ for (const el of this.target) {
139
+ this.observer.observe(el);
140
+ }
123
141
  }
124
- }
125
-
126
- }
127
-
142
+ },
143
+ },
128
144
  };
129
145
 
130
146
  function setSrcAttrs(el, src) {
131
-
132
147
  if (isImg(el)) {
133
-
134
148
  const parentNode = parent(el);
135
149
  const elements = isPicture(parentNode) ? children(parentNode) : [el];
136
- elements.forEach(el => setSourceProps(el, el));
137
-
150
+ elements.forEach((el) => setSourceProps(el, el));
138
151
  } else if (src) {
139
-
140
152
  const change = !includes(el.style.backgroundImage, src);
141
153
  if (change) {
142
154
  css(el, 'backgroundImage', `url(${escape(src)})`);
143
155
  trigger(el, createEvent('load', false));
144
156
  }
145
-
146
157
  }
147
-
148
158
  }
149
159
 
150
160
  const srcProps = ['data-src', 'data-srcset', 'sizes'];
151
161
  function setSourceProps(sourceEl, targetEl) {
152
- srcProps.forEach(prop => {
162
+ srcProps.forEach((prop) => {
153
163
  const value = data(sourceEl, prop);
154
164
  if (value) {
155
165
  attr(targetEl, prop.replace(/^(data-)+/, ''), value);
@@ -158,11 +168,6 @@ function setSourceProps(sourceEl, targetEl) {
158
168
  }
159
169
 
160
170
  function getImageFromElement(el, src, sources) {
161
-
162
- if (!src) {
163
- return false;
164
- }
165
-
166
171
  const img = new Image();
167
172
 
168
173
  wrapInPicture(img, sources);
@@ -173,16 +178,15 @@ function getImageFromElement(el, src, sources) {
173
178
  }
174
179
 
175
180
  function wrapInPicture(img, sources) {
176
-
177
181
  sources = parseSources(sources);
178
182
 
179
183
  if (sources.length) {
180
184
  const picture = fragment('<picture>');
181
- sources.forEach(attrs => {
185
+ for (const attrs of sources) {
182
186
  const source = fragment('<source>');
183
187
  attr(source, attrs);
184
188
  append(picture, source);
185
- });
189
+ }
186
190
  append(picture, img);
187
191
  }
188
192
  }
@@ -206,7 +210,7 @@ function parseSources(sources) {
206
210
  sources = [sources];
207
211
  }
208
212
 
209
- return sources.filter(source => !isEmpty(source));
213
+ return sources.filter((source) => !isEmpty(source));
210
214
  }
211
215
 
212
216
  const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
@@ -230,11 +234,11 @@ const additionRe = /[+-]?(\d+)/g;
230
234
  function evaluateSize(size) {
231
235
  return startsWith(size, 'calc')
232
236
  ? size
233
- .slice(5, -1)
234
- .replace(sizeRe, size => toPx(size))
235
- .replace(/ /g, '')
236
- .match(additionRe)
237
- .reduce((a, b) => a + +b, 0)
237
+ .slice(5, -1)
238
+ .replace(sizeRe, (size) => toPx(size))
239
+ .replace(/ /g, '')
240
+ .match(additionRe)
241
+ .reduce((a, b) => a + +b, 0)
238
242
  : size;
239
243
  }
240
244
 
@@ -243,7 +247,7 @@ function getSourceSize(srcset, sizes) {
243
247
  const srcSize = toPx(sizesToPixel(sizes));
244
248
  const descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort((a, b) => a - b);
245
249
 
246
- return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
250
+ return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
247
251
  }
248
252
 
249
253
  function ensureSrcAttribute(el) {
@@ -253,13 +257,9 @@ function ensureSrcAttribute(el) {
253
257
  }
254
258
 
255
259
  function isPicture(el) {
256
- return isA(el, 'PICTURE');
260
+ return isTag(el, 'picture');
257
261
  }
258
262
 
259
263
  function isImg(el) {
260
- return isA(el, 'IMG');
261
- }
262
-
263
- function isA(el, tagName) {
264
- return el && el.tagName === tagName;
264
+ return isTag(el, 'img');
265
265
  }
@@ -1,41 +1,41 @@
1
- export {default as Accordion} from './accordion';
2
- export {default as Alert} from './alert';
3
- export {default as Cover} from './cover';
4
- export {default as Drop, default as Dropdown} from './drop';
5
- export {default as FormCustom} from './form-custom';
6
- export {default as Gif} from './gif';
7
- export {default as Grid} from './grid';
8
- export {default as HeightMatch} from './height-match';
9
- export {default as HeightViewport} from './height-viewport';
10
- export {default as Icon} from './icon';
11
- export {default as Img} from './img';
12
- export {default as Leader} from './leader';
13
- export {default as Margin} from './margin';
14
- export {default as Modal} from './modal';
15
- export {default as Nav} from './nav';
16
- export {default as Navbar} from './navbar';
17
- export {default as Offcanvas} from './offcanvas';
18
- export {default as OverflowAuto} from './overflow-auto';
19
- export {default as Responsive} from './responsive';
20
- export {default as Scroll} from './scroll';
21
- export {default as Scrollspy} from './scrollspy';
22
- export {default as ScrollspyNav} from './scrollspy-nav';
23
- export {default as Sticky} from './sticky';
24
- export {default as Svg} from './svg';
25
- export {default as Switcher} from './switcher';
26
- export {default as Tab} from './tab';
27
- export {default as Toggle} from './toggle';
28
- export {default as Video} from './video';
1
+ export { default as Accordion } from './accordion';
2
+ export { default as Alert } from './alert';
3
+ export { default as Cover } from './cover';
4
+ export { default as Drop, default as Dropdown } from './drop';
5
+ export { default as FormCustom } from './form-custom';
6
+ export { default as Gif } from './gif';
7
+ export { default as Grid } from './grid';
8
+ export { default as HeightMatch } from './height-match';
9
+ export { default as HeightViewport } from './height-viewport';
10
+ export { default as Icon } from './icon';
11
+ export { default as Img } from './img';
12
+ export { default as Leader } from './leader';
13
+ export { default as Margin } from './margin';
14
+ export { default as Modal } from './modal';
15
+ export { default as Nav } from './nav';
16
+ export { default as Navbar } from './navbar';
17
+ export { default as Offcanvas } from './offcanvas';
18
+ export { default as OverflowAuto } from './overflow-auto';
19
+ export { default as Responsive } from './responsive';
20
+ export { default as Scroll } from './scroll';
21
+ export { default as Scrollspy } from './scrollspy';
22
+ export { default as ScrollspyNav } from './scrollspy-nav';
23
+ export { default as Sticky } from './sticky';
24
+ export { default as Svg } from './svg';
25
+ export { default as Switcher } from './switcher';
26
+ export { default as Tab } from './tab';
27
+ export { default as Toggle } from './toggle';
28
+ export { default as Video } from './video';
29
29
 
30
30
  // Icon components
31
- export {Close} from './icon';
32
- export {Spinner} from './icon';
33
- export {Slidenav as SlidenavNext} from './icon';
34
- export {Slidenav as SlidenavPrevious} from './icon';
35
- export {Search as SearchIcon} from './icon';
36
- export {IconComponent as Marker} from './icon';
37
- export {IconComponent as NavbarToggleIcon} from './icon';
38
- export {IconComponent as OverlayIcon} from './icon';
39
- export {IconComponent as PaginationNext} from './icon';
40
- export {IconComponent as PaginationPrevious} from './icon';
41
- export {IconComponent as Totop} from './icon';
31
+ export { Close } from './icon';
32
+ export { Spinner } from './icon';
33
+ export { Slidenav as SlidenavNext } from './icon';
34
+ export { Slidenav as SlidenavPrevious } from './icon';
35
+ export { Search as SearchIcon } from './icon';
36
+ export { IconComponent as Marker } from './icon';
37
+ export { IconComponent as NavbarToggleIcon } from './icon';
38
+ export { IconComponent as OverlayIcon } from './icon';
39
+ export { IconComponent as PaginationNext } from './icon';
40
+ export { IconComponent as PaginationPrevious } from './icon';
41
+ export { IconComponent as Totop } from './icon';
@@ -1,28 +1,25 @@
1
1
  import Class from '../mixin/class';
2
2
  import Media from '../mixin/media';
3
- import {attr, getCssVar, toggleClass, unwrap, wrapInner} from 'uikit-util';
3
+ import { attr, getCssVar, toggleClass, unwrap, wrapInner } from 'uikit-util';
4
4
 
5
5
  export default {
6
-
7
6
  mixins: [Class, Media],
8
7
 
9
8
  props: {
10
- fill: String
9
+ fill: String,
11
10
  },
12
11
 
13
12
  data: {
14
13
  fill: '',
15
14
  clsWrapper: 'uk-leader-fill',
16
15
  clsHide: 'uk-leader-hide',
17
- attrFill: 'data-fill'
16
+ attrFill: 'data-fill',
18
17
  },
19
18
 
20
19
  computed: {
21
-
22
- fill({fill}) {
20
+ fill({ fill }) {
23
21
  return fill || getCssVar('leader-fill-content');
24
- }
25
-
22
+ },
26
23
  },
27
24
 
28
25
  connected() {
@@ -34,9 +31,7 @@ export default {
34
31
  },
35
32
 
36
33
  update: {
37
-
38
- read({changed, width}) {
39
-
34
+ read({ changed, width }) {
40
35
  const prev = width;
41
36
 
42
37
  width = Math.floor(this.$el.offsetWidth / 2);
@@ -45,23 +40,19 @@ export default {
45
40
  width,
46
41
  fill: this.fill,
47
42
  changed: changed || prev !== width,
48
- hide: !this.matchMedia
43
+ hide: !this.matchMedia,
49
44
  };
50
45
  },
51
46
 
52
47
  write(data) {
53
-
54
48
  toggleClass(this.wrapper, this.clsHide, data.hide);
55
49
 
56
50
  if (data.changed) {
57
51
  data.changed = false;
58
52
  attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));
59
53
  }
60
-
61
54
  },
62
55
 
63
- events: ['resize']
64
-
65
- }
66
-
56
+ events: ['resize'],
57
+ },
67
58
  };
@@ -1,42 +1,37 @@
1
- import {isRtl, isVisible, offsetPosition, toggleClass} from 'uikit-util';
1
+ import { isRtl, isVisible, offsetPosition, toggleClass } from 'uikit-util';
2
2
 
3
3
  export default {
4
-
5
4
  props: {
6
5
  margin: String,
7
- firstColumn: Boolean
6
+ firstColumn: Boolean,
8
7
  },
9
8
 
10
9
  data: {
11
10
  margin: 'uk-margin-small-top',
12
- firstColumn: 'uk-first-column'
11
+ firstColumn: 'uk-first-column',
13
12
  },
14
13
 
15
14
  update: {
16
-
17
15
  read() {
18
-
19
16
  const rows = getRows(this.$el.children);
20
17
 
21
18
  return {
22
19
  rows,
23
- columns: getColumns(rows)
20
+ columns: getColumns(rows),
24
21
  };
25
22
  },
26
23
 
27
- write({columns, rows}) {
28
- for (let i = 0; i < rows.length; i++) {
29
- for (let j = 0; j < rows[i].length; j++) {
30
- toggleClass(rows[i][j], this.margin, i !== 0);
31
- toggleClass(rows[i][j], this.firstColumn, !!~columns[0].indexOf(rows[i][j]));
24
+ write({ columns, rows }) {
25
+ for (const row of rows) {
26
+ for (const column of row) {
27
+ toggleClass(column, this.margin, rows[0] !== row);
28
+ toggleClass(column, this.firstColumn, !!~columns[0].indexOf(column));
32
29
  }
33
30
  }
34
31
  },
35
32
 
36
- events: ['resize']
37
-
38
- }
39
-
33
+ events: ['resize'],
34
+ },
40
35
  };
41
36
 
42
37
  export function getRows(items) {
@@ -44,38 +39,30 @@ export function getRows(items) {
44
39
  }
45
40
 
46
41
  function getColumns(rows) {
47
-
48
42
  const columns = [];
49
43
 
50
- for (let i = 0; i < rows.length; i++) {
51
- const sorted = sortBy(rows[i], 'left', 'right');
44
+ for (const row of rows) {
45
+ const sorted = sortBy(row, 'left', 'right');
52
46
  for (let j = 0; j < sorted.length; j++) {
53
- columns[j] = !columns[j] ? sorted[j] : columns[j].concat(sorted[j]);
47
+ columns[j] = columns[j] ? columns[j].concat(sorted[j]) : sorted[j];
54
48
  }
55
49
  }
56
50
 
57
- return isRtl
58
- ? columns.reverse()
59
- : columns;
51
+ return isRtl ? columns.reverse() : columns;
60
52
  }
61
53
 
62
54
  function sortBy(items, startProp, endProp) {
63
-
64
55
  const sorted = [[]];
65
56
 
66
- for (let i = 0; i < items.length; i++) {
67
-
68
- const el = items[i];
69
-
57
+ for (const el of items) {
70
58
  if (!isVisible(el)) {
71
59
  continue;
72
60
  }
73
61
 
74
62
  let dim = getOffset(el);
75
63
 
76
- for (let j = sorted.length - 1; j >= 0; j--) {
77
-
78
- const current = sorted[j];
64
+ for (let i = sorted.length - 1; i >= 0; i--) {
65
+ const current = sorted[i];
79
66
 
80
67
  if (!current[0]) {
81
68
  current.push(el);
@@ -100,21 +87,18 @@ function sortBy(items, startProp, endProp) {
100
87
  break;
101
88
  }
102
89
 
103
- if (j === 0) {
90
+ if (i === 0) {
104
91
  sorted.unshift([el]);
105
92
  break;
106
93
  }
107
-
108
94
  }
109
-
110
95
  }
111
96
 
112
97
  return sorted;
113
98
  }
114
99
 
115
100
  function getOffset(element, offset = false) {
116
-
117
- let {offsetTop, offsetLeft, offsetHeight, offsetWidth} = element;
101
+ let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;
118
102
 
119
103
  if (offset) {
120
104
  [offsetTop, offsetLeft] = offsetPosition(element);
@@ -124,6 +108,6 @@ function getOffset(element, offset = false) {
124
108
  top: offsetTop,
125
109
  left: offsetLeft,
126
110
  bottom: offsetTop + offsetHeight,
127
- right: offsetLeft + offsetWidth
111
+ right: offsetLeft + offsetWidth,
128
112
  };
129
113
  }