uikit 3.11.2-dev.9433cd5fd → 3.11.2-dev.946d2efea

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 (226) 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 +46 -29
  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 +133 -201
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +133 -201
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +135 -207
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +135 -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 +1091 -1319
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1137 -1396
  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 +347 -361
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +345 -360
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +749 -843
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +345 -360
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +628 -798
  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 +156 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5323 -6536
  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 +8181 -9810
  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 +199 -187
  66. package/src/js/components/countdown.js +26 -52
  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 +9 -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 +117 -89
  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 +53 -63
  84. package/src/js/core/accordion.js +58 -48
  85. package/src/js/core/alert.js +9 -17
  86. package/src/js/core/core.js +17 -69
  87. package/src/js/core/cover.js +15 -15
  88. package/src/js/core/drop.js +109 -93
  89. package/src/js/core/form-custom.js +22 -27
  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 +30 -34
  94. package/src/js/core/icon.js +47 -52
  95. package/src/js/core/img.js +96 -83
  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 +51 -54
  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 +161 -128
  109. package/src/js/core/svg.js +68 -83
  110. package/src/js/core/switcher.js +56 -47
  111. package/src/js/core/tab.js +7 -10
  112. package/src/js/core/toggle.js +69 -68
  113. package/src/js/core/video.js +22 -21
  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/lazyload.js +20 -0
  122. package/src/js/mixin/media.js +5 -10
  123. package/src/js/mixin/modal.js +89 -66
  124. package/src/js/mixin/parallax.js +149 -107
  125. package/src/js/mixin/position.js +26 -20
  126. package/src/js/mixin/slider-autoplay.js +12 -21
  127. package/src/js/mixin/slider-drag.js +64 -65
  128. package/src/js/mixin/slider-nav.js +26 -35
  129. package/src/js/mixin/slider-reactive.js +2 -8
  130. package/src/js/mixin/slider.js +47 -60
  131. package/src/js/mixin/slideshow.js +12 -22
  132. package/src/js/mixin/swipe.js +72 -0
  133. package/src/js/mixin/togglable.js +89 -63
  134. package/src/js/uikit-core.js +2 -4
  135. package/src/js/uikit.js +2 -4
  136. package/src/js/util/ajax.js +25 -40
  137. package/src/js/util/animation.js +77 -75
  138. package/src/js/util/attr.js +17 -21
  139. package/src/js/util/class.js +14 -52
  140. package/src/js/util/dimensions.js +58 -45
  141. package/src/js/util/dom.js +39 -66
  142. package/src/js/util/env.js +7 -12
  143. package/src/js/util/event.js +60 -59
  144. package/src/js/util/fastdom.js +1 -6
  145. package/src/js/util/filter.js +17 -34
  146. package/src/js/util/index.js +1 -1
  147. package/src/js/util/lang.js +82 -121
  148. package/src/js/util/mouse.js +19 -17
  149. package/src/js/util/observer.js +36 -0
  150. package/src/js/util/options.js +32 -46
  151. package/src/js/util/player.js +41 -36
  152. package/src/js/util/position.js +54 -46
  153. package/src/js/util/selector.js +43 -58
  154. package/src/js/util/style.js +39 -49
  155. package/src/js/util/viewport.js +75 -64
  156. package/src/less/components/base.less +10 -33
  157. package/src/less/components/flex.less +0 -9
  158. package/src/less/components/form-range.less +48 -95
  159. package/src/less/components/form.less +0 -1
  160. package/src/less/components/height.less +3 -0
  161. package/src/less/components/leader.less +0 -1
  162. package/src/less/components/lightbox.less +0 -1
  163. package/src/less/components/modal.less +3 -7
  164. package/src/less/components/navbar.less +0 -7
  165. package/src/less/components/progress.less +14 -36
  166. package/src/less/components/slider.less +0 -3
  167. package/src/less/components/slideshow.less +0 -3
  168. package/src/less/components/text.less +16 -32
  169. package/src/less/components/utility.less +25 -0
  170. package/src/scss/components/base.scss +10 -33
  171. package/src/scss/components/flex.scss +0 -9
  172. package/src/scss/components/form-range.scss +48 -95
  173. package/src/scss/components/form.scss +3 -4
  174. package/src/scss/components/height.scss +3 -0
  175. package/src/scss/components/icon.scss +2 -2
  176. package/src/scss/components/leader.scss +0 -1
  177. package/src/scss/components/lightbox.scss +0 -1
  178. package/src/scss/components/modal.scss +3 -7
  179. package/src/scss/components/navbar.scss +0 -7
  180. package/src/scss/components/progress.scss +14 -36
  181. package/src/scss/components/search.scss +1 -1
  182. package/src/scss/components/slider.scss +0 -3
  183. package/src/scss/components/slideshow.scss +0 -3
  184. package/src/scss/components/text.scss +16 -32
  185. package/src/scss/components/utility.scss +25 -0
  186. package/src/scss/mixins-theme.scss +1 -1
  187. package/src/scss/mixins.scss +1 -1
  188. package/src/scss/variables-theme.scss +9 -9
  189. package/src/scss/variables.scss +9 -9
  190. package/tests/align.html +10 -10
  191. package/tests/animation.html +2 -2
  192. package/tests/article.html +2 -2
  193. package/tests/base.html +3 -3
  194. package/tests/card.html +10 -10
  195. package/tests/column.html +3 -3
  196. package/tests/comment.html +9 -9
  197. package/tests/dotnav.html +3 -3
  198. package/tests/image.html +296 -48
  199. package/tests/images/image-type.avif +0 -0
  200. package/tests/images/image-type.jpeg +0 -0
  201. package/tests/images/image-type.webp +0 -0
  202. package/tests/index.html +8 -8
  203. package/tests/js/index.js +114 -85
  204. package/tests/lightbox.html +10 -10
  205. package/tests/marker.html +2 -2
  206. package/tests/modal.html +8 -9
  207. package/tests/navbar.html +2 -2
  208. package/tests/overlay.html +7 -7
  209. package/tests/parallax.html +16 -7
  210. package/tests/position.html +12 -12
  211. package/tests/slidenav.html +12 -12
  212. package/tests/slider.html +20 -20
  213. package/tests/sortable.html +1 -1
  214. package/tests/sticky-parallax.html +56 -71
  215. package/tests/svg.html +6 -6
  216. package/tests/table.html +11 -11
  217. package/tests/thumbnav.html +12 -12
  218. package/tests/transition.html +30 -30
  219. package/tests/utility.html +50 -33
  220. package/tests/video.html +1 -1
  221. package/tests/width.html +1 -1
  222. package/src/js/mixin/flex-bug.js +0 -56
  223. package/src/js/util/promise.js +0 -191
  224. package/tests/images/animated.gif +0 -0
  225. package/tests/images/test.avif +0 -0
  226. package/tests/images/test.webp +0 -0
@@ -1,142 +1,157 @@
1
- import {append, attr, children, createEvent, css, data, escape, fragment, 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
+ hasIntersectionObserver,
12
+ includes,
13
+ isArray,
14
+ isEmpty,
15
+ isTag,
16
+ observeIntersection,
17
+ parent,
18
+ parseOptions,
19
+ queryAll,
20
+ removeAttr,
21
+ startsWith,
22
+ toFloat,
23
+ toPx,
24
+ trigger,
25
+ } from 'uikit-util';
26
+
27
+ const nativeLazyLoad = 'loading' in HTMLImageElement.prototype;
2
28
 
3
29
  export default {
4
-
5
30
  args: 'dataSrc',
6
31
 
7
32
  props: {
8
33
  dataSrc: String,
9
- dataSources: String,
34
+ sources: String,
10
35
  offsetTop: String,
11
36
  offsetLeft: String,
12
- target: String
37
+ target: String,
38
+ loading: String,
13
39
  },
14
40
 
15
41
  data: {
16
42
  dataSrc: '',
17
- dataSources: [],
43
+ sources: false,
18
44
  offsetTop: '50vh',
19
45
  offsetLeft: '50vw',
20
- target: false
46
+ target: false,
47
+ loading: 'lazy',
21
48
  },
22
49
 
23
50
  computed: {
24
-
25
51
  target: {
26
-
27
- get({target}) {
52
+ get({ target }) {
28
53
  return [this.$el, ...queryAll(target, this.$el)];
29
54
  },
30
55
 
31
56
  watch() {
32
- this.observe();
33
- }
34
-
35
- }
36
-
57
+ this.$reset();
58
+ },
59
+ },
37
60
  },
38
61
 
39
62
  connected() {
40
-
41
- if (!window.IntersectionObserver) {
42
- setSrcAttrs(this.$el, this.dataSrc);
63
+ if (this.loading !== 'lazy' || !hasIntersectionObserver) {
64
+ this.load();
43
65
  return;
44
66
  }
45
67
 
46
- const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(this.offsetLeft, 'width')}px`;
47
- this.observer = new IntersectionObserver(this.load, {rootMargin});
48
- this.observe();
68
+ if (nativeLazyLoad && isImg(this.$el)) {
69
+ this.$el.loading = 'lazy';
70
+ setSrcAttrs(this.$el);
71
+
72
+ if (this.target.length === 1) {
73
+ return;
74
+ }
75
+ }
49
76
 
77
+ ensureSrcAttribute(this.$el);
78
+
79
+ this.registerObserver(
80
+ observeIntersection(
81
+ this.target,
82
+ (entries, observer) => {
83
+ this.load();
84
+ observer.disconnect();
85
+ },
86
+ {
87
+ rootMargin: `${toPx(this.offsetTop, 'height')}px ${toPx(
88
+ this.offsetLeft,
89
+ 'width'
90
+ )}px`,
91
+ }
92
+ )
93
+ );
50
94
  },
51
95
 
52
96
  disconnected() {
53
- this.observer && this.observer.disconnect();
97
+ if (this._data.image) {
98
+ this._data.image.onload = '';
99
+ }
54
100
  },
55
101
 
56
102
  update: {
57
-
58
103
  write(store) {
59
104
  if (!this.observer || isImg(this.$el)) {
60
105
  return false;
61
106
  }
107
+
62
108
  const srcset = data(this.$el, 'data-srcset');
63
109
  if (srcset && window.devicePixelRatio !== 1) {
64
-
65
110
  const bgSize = css(this.$el, 'backgroundSize');
66
111
  if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
67
112
  store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
68
113
  css(this.$el, 'backgroundSize', `${store.bgSize}px`);
69
114
  }
70
-
71
115
  }
72
-
73
116
  },
74
117
 
75
- events: ['resize']
76
-
118
+ events: ['resize'],
77
119
  },
78
120
 
79
121
  methods: {
80
-
81
- load(entries) {
82
-
83
- // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
84
- if (!entries.some(entry => isUndefined(entry.isIntersecting) || entry.isIntersecting)) {
85
- return;
86
- }
87
-
122
+ load() {
88
123
  if (this._data.image) {
89
124
  return this._data.image;
90
125
  }
91
126
 
92
127
  const image = isImg(this.$el)
93
128
  ? this.$el
94
- : getImageFromElement(
95
- this.$el,
96
- this.dataSrc,
97
- this.dataSources
98
- );
129
+ : getImageFromElement(this.$el, this.dataSrc, this.sources);
99
130
 
100
- this._data.image = image;
131
+ removeAttr(image, 'loading');
101
132
  setSrcAttrs(this.$el, image.currentSrc);
102
-
103
- this.observer.disconnect();
133
+ return (this._data.image = image);
104
134
  },
105
-
106
- observe() {
107
- if (this._connected && !this._data.image) {
108
- this.target.forEach(el => this.observer.observe(el));
109
- }
110
- }
111
-
112
- }
113
-
135
+ },
114
136
  };
115
137
 
116
138
  function setSrcAttrs(el, src) {
117
-
118
139
  if (isImg(el)) {
119
-
120
140
  const parentNode = parent(el);
121
141
  const elements = isPicture(parentNode) ? children(parentNode) : [el];
122
- elements.forEach(el => setSourceProps(el, el));
123
- src && attr(el, 'src', src);
124
-
142
+ elements.forEach((el) => setSourceProps(el, el));
125
143
  } else if (src) {
126
-
127
144
  const change = !includes(el.style.backgroundImage, src);
128
145
  if (change) {
129
146
  css(el, 'backgroundImage', `url(${escape(src)})`);
130
147
  trigger(el, createEvent('load', false));
131
148
  }
132
-
133
149
  }
134
-
135
150
  }
136
151
 
137
152
  const srcProps = ['data-src', 'data-srcset', 'sizes'];
138
153
  function setSourceProps(sourceEl, targetEl) {
139
- srcProps.forEach(prop => {
154
+ srcProps.forEach((prop) => {
140
155
  const value = data(sourceEl, prop);
141
156
  if (value) {
142
157
  attr(targetEl, prop.replace(/^(data-)+/, ''), value);
@@ -145,31 +160,27 @@ function setSourceProps(sourceEl, targetEl) {
145
160
  }
146
161
 
147
162
  function getImageFromElement(el, src, sources) {
148
-
149
- if (!src) {
150
- return false;
151
- }
152
-
153
163
  const img = new Image();
154
164
 
155
165
  wrapInPicture(img, sources);
156
166
  setSourceProps(el, img);
157
- img.onload = () => setSrcAttrs(el, img.currentSrc);
167
+ img.onload = () => {
168
+ setSrcAttrs(el, img.currentSrc);
169
+ };
158
170
  attr(img, 'src', src);
159
171
  return img;
160
172
  }
161
173
 
162
174
  function wrapInPicture(img, sources) {
163
-
164
175
  sources = parseSources(sources);
165
176
 
166
177
  if (sources.length) {
167
178
  const picture = fragment('<picture>');
168
- sources.forEach(attrs => {
179
+ for (const attrs of sources) {
169
180
  const source = fragment('<source>');
170
181
  attr(source, attrs);
171
182
  append(picture, source);
172
- });
183
+ }
173
184
  append(picture, img);
174
185
  }
175
186
  }
@@ -193,7 +204,7 @@ function parseSources(sources) {
193
204
  sources = [sources];
194
205
  }
195
206
 
196
- return sources.filter(source => !isEmpty(source));
207
+ return sources.filter((source) => !isEmpty(source));
197
208
  }
198
209
 
199
210
  const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
@@ -217,11 +228,11 @@ const additionRe = /[+-]?(\d+)/g;
217
228
  function evaluateSize(size) {
218
229
  return startsWith(size, 'calc')
219
230
  ? size
220
- .slice(5, -1)
221
- .replace(sizeRe, size => toPx(size))
222
- .replace(/ /g, '')
223
- .match(additionRe)
224
- .reduce((a, b) => a + +b, 0)
231
+ .slice(5, -1)
232
+ .replace(sizeRe, (size) => toPx(size))
233
+ .replace(/ /g, '')
234
+ .match(additionRe)
235
+ .reduce((a, b) => a + +b, 0)
225
236
  : size;
226
237
  }
227
238
 
@@ -230,17 +241,19 @@ function getSourceSize(srcset, sizes) {
230
241
  const srcSize = toPx(sizesToPixel(sizes));
231
242
  const descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort((a, b) => a - b);
232
243
 
233
- return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
244
+ return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
234
245
  }
235
246
 
236
- function isPicture(el) {
237
- return isA(el, 'PICTURE');
247
+ function ensureSrcAttribute(el) {
248
+ if (isImg(el) && !hasAttr(el, 'src')) {
249
+ attr(el, 'src', 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"></svg>');
250
+ }
238
251
  }
239
252
 
240
- function isImg(el) {
241
- return isA(el, 'IMG');
253
+ function isPicture(el) {
254
+ return isTag(el, 'picture');
242
255
  }
243
256
 
244
- function isA(el, tagName) {
245
- return el && el.tagName === tagName;
257
+ function isImg(el) {
258
+ return isTag(el, 'img');
246
259
  }
@@ -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
  }