uikit 3.11.2-dev.31cd2ba38 → 3.11.2-dev.3dfa2c50b

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 (168) 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 +7 -11
  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 +42 -17
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +42 -17
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +42 -17
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +42 -17
  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 +409 -438
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1116 -1305
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1164 -1383
  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 +294 -345
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +292 -344
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +727 -850
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +292 -344
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +615 -799
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +588 -619
  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 +5266 -6572
  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 +8126 -9876
  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 +23 -27
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +13 -32
  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 +71 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +11 -23
  70. package/src/js/components/internal/slider-transitioner.js +66 -45
  71. package/src/js/components/internal/slideshow-animations.js +42 -61
  72. package/src/js/components/lightbox-panel.js +135 -109
  73. package/src/js/components/lightbox.js +18 -39
  74. package/src/js/components/notification.js +49 -43
  75. package/src/js/components/parallax.js +16 -30
  76. package/src/js/components/slider-parallax.js +13 -23
  77. package/src/js/components/slider.js +75 -64
  78. package/src/js/components/slideshow-parallax.js +1 -1
  79. package/src/js/components/slideshow.js +8 -13
  80. package/src/js/components/sortable.js +125 -106
  81. package/src/js/components/tooltip.js +41 -31
  82. package/src/js/components/upload.js +52 -63
  83. package/src/js/core/accordion.js +53 -48
  84. package/src/js/core/alert.js +10 -17
  85. package/src/js/core/core.js +74 -53
  86. package/src/js/core/cover.js +11 -15
  87. package/src/js/core/drop.js +106 -92
  88. package/src/js/core/form-custom.js +20 -25
  89. package/src/js/core/gif.js +3 -7
  90. package/src/js/core/grid.js +57 -58
  91. package/src/js/core/height-match.js +16 -29
  92. package/src/js/core/height-viewport.js +28 -35
  93. package/src/js/core/icon.js +38 -50
  94. package/src/js/core/img.js +130 -105
  95. package/src/js/core/index.js +39 -39
  96. package/src/js/core/leader.js +9 -18
  97. package/src/js/core/margin.js +21 -37
  98. package/src/js/core/modal.js +50 -36
  99. package/src/js/core/nav.js +2 -4
  100. package/src/js/core/navbar.js +112 -88
  101. package/src/js/core/offcanvas.js +49 -53
  102. package/src/js/core/overflow-auto.js +13 -17
  103. package/src/js/core/responsive.js +14 -12
  104. package/src/js/core/scroll.js +10 -20
  105. package/src/js/core/scrollspy-nav.js +34 -31
  106. package/src/js/core/scrollspy.js +37 -54
  107. package/src/js/core/sticky.js +130 -91
  108. package/src/js/core/svg.js +60 -79
  109. package/src/js/core/switcher.js +47 -46
  110. package/src/js/core/tab.js +7 -10
  111. package/src/js/core/toggle.js +64 -66
  112. package/src/js/core/video.js +11 -22
  113. package/src/js/mixin/animate.js +19 -20
  114. package/src/js/mixin/class.js +2 -4
  115. package/src/js/mixin/container.js +7 -11
  116. package/src/js/mixin/internal/animate-fade.js +73 -30
  117. package/src/js/mixin/internal/animate-slide.js +61 -41
  118. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  119. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  120. package/src/js/mixin/media.js +5 -10
  121. package/src/js/mixin/modal.js +89 -66
  122. package/src/js/mixin/parallax.js +53 -48
  123. package/src/js/mixin/position.js +26 -20
  124. package/src/js/mixin/slider-autoplay.js +12 -21
  125. package/src/js/mixin/slider-drag.js +64 -65
  126. package/src/js/mixin/slider-nav.js +26 -35
  127. package/src/js/mixin/slider-reactive.js +2 -8
  128. package/src/js/mixin/slider.js +51 -50
  129. package/src/js/mixin/slideshow.js +13 -19
  130. package/src/js/mixin/togglable.js +90 -63
  131. package/src/js/uikit-core.js +2 -4
  132. package/src/js/uikit.js +2 -4
  133. package/src/js/util/ajax.js +27 -43
  134. package/src/js/util/animation.js +82 -75
  135. package/src/js/util/attr.js +17 -21
  136. package/src/js/util/class.js +14 -52
  137. package/src/js/util/dimensions.js +56 -43
  138. package/src/js/util/dom.js +40 -73
  139. package/src/js/util/env.js +7 -12
  140. package/src/js/util/event.js +60 -59
  141. package/src/js/util/fastdom.js +1 -6
  142. package/src/js/util/filter.js +17 -34
  143. package/src/js/util/index.js +0 -1
  144. package/src/js/util/lang.js +79 -119
  145. package/src/js/util/mouse.js +19 -17
  146. package/src/js/util/options.js +42 -47
  147. package/src/js/util/player.js +40 -36
  148. package/src/js/util/position.js +54 -46
  149. package/src/js/util/promise.js +0 -191
  150. package/src/js/util/selector.js +39 -48
  151. package/src/js/util/style.js +36 -46
  152. package/src/js/util/viewport.js +75 -64
  153. package/src/less/components/flex.less +0 -9
  154. package/src/less/components/navbar.less +0 -7
  155. package/src/less/components/utility.less +22 -0
  156. package/src/scss/components/flex.scss +0 -9
  157. package/src/scss/components/form.scss +3 -3
  158. package/src/scss/components/icon.scss +2 -2
  159. package/src/scss/components/navbar.scss +0 -7
  160. package/src/scss/components/search.scss +1 -1
  161. package/src/scss/components/utility.scss +22 -0
  162. package/src/scss/variables-theme.scss +6 -6
  163. package/src/scss/variables.scss +6 -6
  164. package/tests/image.html +38 -22
  165. package/tests/js/index.js +114 -85
  166. package/src/js/mixin/flex-bug.js +0 -56
  167. package/tests/images/test.avif +0 -0
  168. package/tests/images/test.webp +0 -0
@@ -1,52 +1,100 @@
1
- import {append, attr, children, createEvent, css, data, escape, fragment, includes, isArray, isObject, isUndefined, parent, parseOptions, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
1
+ import {
2
+ createEvent,
3
+ css,
4
+ Dimensions,
5
+ escape,
6
+ getImage,
7
+ includes,
8
+ isUndefined,
9
+ queryAll,
10
+ startsWith,
11
+ toFloat,
12
+ toPx,
13
+ trigger,
14
+ } from 'uikit-util';
2
15
 
3
16
  export default {
4
-
5
17
  args: 'dataSrc',
6
18
 
7
19
  props: {
8
20
  dataSrc: String,
9
- dataSources: String,
21
+ dataSrcset: Boolean,
22
+ sizes: String,
23
+ width: Number,
24
+ height: Number,
10
25
  offsetTop: String,
11
26
  offsetLeft: String,
12
- target: String
27
+ target: String,
13
28
  },
14
29
 
15
30
  data: {
16
31
  dataSrc: '',
17
- dataSources: [],
32
+ dataSrcset: false,
33
+ sizes: false,
34
+ width: false,
35
+ height: false,
18
36
  offsetTop: '50vh',
19
37
  offsetLeft: '50vw',
20
- target: false
38
+ target: false,
21
39
  },
22
40
 
23
41
  computed: {
42
+ cacheKey({ dataSrc }) {
43
+ return `${this.$name}.${dataSrc}`;
44
+ },
24
45
 
25
- target: {
46
+ width({ width, dataWidth }) {
47
+ return width || dataWidth;
48
+ },
49
+
50
+ height({ height, dataHeight }) {
51
+ return height || dataHeight;
52
+ },
53
+
54
+ sizes({ sizes, dataSizes }) {
55
+ return sizes || dataSizes;
56
+ },
26
57
 
27
- get({target}) {
58
+ isImg(_, $el) {
59
+ return isImg($el);
60
+ },
61
+
62
+ target: {
63
+ get({ target }) {
28
64
  return [this.$el, ...queryAll(target, this.$el)];
29
65
  },
30
66
 
31
67
  watch() {
32
68
  this.observe();
33
- }
69
+ },
70
+ },
34
71
 
35
- }
72
+ offsetTop({ offsetTop }) {
73
+ return toPx(offsetTop, 'height');
74
+ },
36
75
 
76
+ offsetLeft({ offsetLeft }) {
77
+ return toPx(offsetLeft, 'width');
78
+ },
37
79
  },
38
80
 
39
81
  connected() {
40
-
41
82
  if (!window.IntersectionObserver) {
42
- setSrcAttrs(this.$el, this.dataSrc);
83
+ setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
43
84
  return;
44
85
  }
45
86
 
46
- const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(this.offsetLeft, 'width')}px`;
47
- this.observer = new IntersectionObserver(this.load, {rootMargin});
48
- this.observe();
87
+ if (storage[this.cacheKey]) {
88
+ setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes);
89
+ } else if (this.isImg && this.width && this.height) {
90
+ setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));
91
+ }
92
+
93
+ this.observer = new IntersectionObserver(this.load, {
94
+ rootMargin: `${this.offsetTop}px ${this.offsetLeft}px`,
95
+ });
49
96
 
97
+ requestAnimationFrame(this.observe);
50
98
  },
51
99
 
52
100
  disconnected() {
@@ -54,125 +102,94 @@ export default {
54
102
  },
55
103
 
56
104
  update: {
105
+ read({ image }) {
106
+ if (!this.observer) {
107
+ return false;
108
+ }
57
109
 
58
- read({image}) {
110
+ if (!image && document.readyState === 'complete') {
111
+ this.load(this.observer.takeRecords());
112
+ }
59
113
 
60
- if (!this.observer || isImg(this.$el)) {
114
+ if (this.isImg) {
61
115
  return false;
62
116
  }
63
117
 
64
- setSrcAttrs(this.$el, image && image.currentSrc);
65
-
118
+ image &&
119
+ image.then(
120
+ (img) => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img))
121
+ );
66
122
  },
67
123
 
68
- write(store) {
69
-
70
- const srcset = data(this.$el, 'data-srcset');
71
- if (srcset && window.devicePixelRatio !== 1) {
72
-
124
+ write(data) {
125
+ if (this.dataSrcset && window.devicePixelRatio !== 1) {
73
126
  const bgSize = css(this.$el, 'backgroundSize');
74
- if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
75
- store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
76
- css(this.$el, 'backgroundSize', `${store.bgSize}px`);
127
+ if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) {
128
+ data.bgSize = getSourceSize(this.dataSrcset, this.sizes);
129
+ css(this.$el, 'backgroundSize', `${data.bgSize}px`);
77
130
  }
78
-
79
131
  }
80
-
81
132
  },
82
133
 
83
- events: ['resize']
84
-
134
+ events: ['resize'],
85
135
  },
86
136
 
87
137
  methods: {
88
-
89
138
  load(entries) {
90
-
91
139
  // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
92
- if (!entries.some(entry => isUndefined(entry.isIntersecting) || entry.isIntersecting)) {
140
+ if (
141
+ !entries.some((entry) => isUndefined(entry.isIntersecting) || entry.isIntersecting)
142
+ ) {
93
143
  return;
94
144
  }
95
145
 
96
- if (this._data.image) {
97
- return this._data.image;
98
- }
99
-
100
- const image = isImg(this.$el)
101
- ? this.$el
102
- : getImageFromElement(this.$el, this.dataSrc, parseOptions(this.dataSources));
103
-
104
- this._data.image = image;
105
- setSrcAttrs(this.$el, image.currentSrc || this.dataSrc);
146
+ this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(
147
+ (img) => {
148
+ setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
149
+ storage[this.cacheKey] = currentSrc(img);
150
+ return img;
151
+ },
152
+ (e) => trigger(this.$el, new e.constructor(e.type, e))
153
+ );
106
154
 
107
155
  this.observer.disconnect();
108
156
  },
109
157
 
110
158
  observe() {
111
159
  if (this._connected && !this._data.image) {
112
- this.target.forEach(el => this.observer.observe(el));
160
+ for (const el of this.target) {
161
+ this.observer.observe(el);
162
+ }
113
163
  }
114
- }
115
-
116
- }
117
-
164
+ },
165
+ },
118
166
  };
119
167
 
120
- function setSrcAttrs(el, src) {
121
-
168
+ function setSrcAttrs(el, src, srcset, sizes) {
122
169
  if (isImg(el)) {
123
-
124
- const parentNode = parent(el);
125
- const elements = isPicture(parentNode) ? children(parentNode) : [el];
126
- elements.forEach(el => setSourceProps(el, el));
127
- src && attr(el, 'src', src);
128
-
170
+ const set = (prop, val) => val && val !== el[prop] && (el[prop] = val);
171
+ set('sizes', sizes);
172
+ set('srcset', srcset);
173
+ set('src', src);
129
174
  } else if (src) {
130
-
131
175
  const change = !includes(el.style.backgroundImage, src);
132
176
  if (change) {
133
177
  css(el, 'backgroundImage', `url(${escape(src)})`);
134
178
  trigger(el, createEvent('load', false));
135
179
  }
136
-
137
180
  }
138
-
139
- }
140
-
141
- const srcProps = ['data-src', 'data-srcset', 'sizes'];
142
- function setSourceProps(sourceEl, targetEl) {
143
- srcProps.forEach(prop => {
144
- const value = data(sourceEl, prop);
145
- if (value) {
146
- attr(targetEl, prop.replace(/^(data-)+/, ''), value);
147
- }
148
- });
149
181
  }
150
182
 
151
- function getImageFromElement(el, src, sources = []) {
152
-
153
- if (!src) {
154
- return false;
183
+ function getPlaceholderImage(width, height, sizes) {
184
+ if (sizes) {
185
+ ({ width, height } = Dimensions.ratio(
186
+ { width, height },
187
+ 'width',
188
+ toPx(sizesToPixel(sizes))
189
+ ));
155
190
  }
156
191
 
157
- const img = new Image();
158
-
159
- if (!isArray(sources) && isObject(sources)) {
160
- sources = [sources];
161
- }
162
-
163
- if (sources.length) {
164
- const picture = fragment('<picture>');
165
- sources.forEach(attrs => {
166
- const source = fragment('<source>');
167
- attr(source, attrs);
168
- append(picture, source);
169
- });
170
- append(picture, img);
171
- }
172
-
173
- setSourceProps(el, img);
174
- attr(img, 'src', src);
175
- return img;
192
+ return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"></svg>`;
176
193
  }
177
194
 
178
195
  const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
@@ -196,11 +213,11 @@ const additionRe = /[+-]?(\d+)/g;
196
213
  function evaluateSize(size) {
197
214
  return startsWith(size, 'calc')
198
215
  ? size
199
- .slice(5, -1)
200
- .replace(sizeRe, size => toPx(size))
201
- .replace(/ /g, '')
202
- .match(additionRe)
203
- .reduce((a, b) => a + +b, 0)
216
+ .slice(5, -1)
217
+ .replace(sizeRe, (size) => toPx(size))
218
+ .replace(/ /g, '')
219
+ .match(additionRe)
220
+ .reduce((a, b) => a + +b, 0)
204
221
  : size;
205
222
  }
206
223
 
@@ -209,17 +226,25 @@ function getSourceSize(srcset, sizes) {
209
226
  const srcSize = toPx(sizesToPixel(sizes));
210
227
  const descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort((a, b) => a - b);
211
228
 
212
- return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
229
+ return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
213
230
  }
214
231
 
215
- function isPicture(el) {
216
- return isA(el, 'PICTURE');
232
+ function isImg(el) {
233
+ return el.tagName === 'IMG';
217
234
  }
218
235
 
219
- function isImg(el) {
220
- return isA(el, 'IMG');
236
+ function currentSrc(el) {
237
+ return el.currentSrc || el.src;
221
238
  }
222
239
 
223
- function isA(el, tagName) {
224
- return el && el.tagName === tagName;
240
+ const key = '__test__';
241
+ let storage;
242
+
243
+ // workaround for Safari's private browsing mode and accessing sessionStorage in Blink
244
+ try {
245
+ storage = window.sessionStorage || {};
246
+ storage[key] = 1;
247
+ delete storage[key];
248
+ } catch (e) {
249
+ storage = {};
225
250
  }
@@ -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
  }