uikit 3.15.17 → 3.15.18-dev.014d8e608

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 (50) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/build/util.js +2 -3
  3. package/dist/css/uikit-core-rtl.css +1 -1
  4. package/dist/css/uikit-core-rtl.min.css +1 -1
  5. package/dist/css/uikit-core.css +1 -1
  6. package/dist/css/uikit-core.min.css +1 -1
  7. package/dist/css/uikit-rtl.css +1 -1
  8. package/dist/css/uikit-rtl.min.css +1 -1
  9. package/dist/css/uikit.css +1 -1
  10. package/dist/css/uikit.min.css +1 -1
  11. package/dist/js/components/countdown.js +2 -2
  12. package/dist/js/components/countdown.min.js +1 -1
  13. package/dist/js/components/filter.js +15 -15
  14. package/dist/js/components/filter.min.js +1 -1
  15. package/dist/js/components/lightbox-panel.js +77 -84
  16. package/dist/js/components/lightbox-panel.min.js +9 -1
  17. package/dist/js/components/lightbox.js +80 -87
  18. package/dist/js/components/lightbox.min.js +9 -1
  19. package/dist/js/components/notification.js +14 -14
  20. package/dist/js/components/notification.min.js +4 -1
  21. package/dist/js/components/parallax.js +22 -22
  22. package/dist/js/components/parallax.min.js +1 -1
  23. package/dist/js/components/slider-parallax.js +18 -18
  24. package/dist/js/components/slider-parallax.min.js +1 -1
  25. package/dist/js/components/slider.js +93 -45
  26. package/dist/js/components/slider.min.js +1 -1
  27. package/dist/js/components/slideshow-parallax.js +18 -18
  28. package/dist/js/components/slideshow-parallax.min.js +1 -1
  29. package/dist/js/components/slideshow.js +33 -38
  30. package/dist/js/components/slideshow.min.js +1 -1
  31. package/dist/js/components/sortable.js +7 -7
  32. package/dist/js/components/sortable.min.js +1 -1
  33. package/dist/js/components/tooltip.js +24 -24
  34. package/dist/js/components/tooltip.min.js +3 -1
  35. package/dist/js/components/upload.js +7 -7
  36. package/dist/js/components/upload.min.js +1 -1
  37. package/dist/js/uikit-core.js +303 -282
  38. package/dist/js/uikit-core.min.js +21 -1
  39. package/dist/js/uikit-icons.js +1 -1
  40. package/dist/js/uikit-icons.min.js +1 -1
  41. package/dist/js/uikit.js +499 -432
  42. package/dist/js/uikit.min.js +34 -1
  43. package/package.json +1 -1
  44. package/src/js/components/lightbox-panel.js +3 -5
  45. package/src/js/components/slider.js +62 -7
  46. package/src/js/core/sticky.js +26 -9
  47. package/src/js/mixin/slider-drag.js +1 -1
  48. package/src/js/mixin/slider.js +2 -7
  49. package/src/js/util/viewport.js +4 -0
  50. package/tests/tooltip.html +1 -1
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "uikit",
3
3
  "title": "UIkit",
4
4
  "description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
5
- "version": "3.15.17",
5
+ "version": "3.15.18-dev.014d8e608",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -84,15 +84,13 @@ export default {
84
84
  self: true,
85
85
 
86
86
  delegate() {
87
- return this.selSlides;
87
+ return `${this.selList} > *`;
88
88
  },
89
89
 
90
90
  handler(e) {
91
- if (e.defaultPrevented) {
92
- return;
91
+ if (!e.defaultPrevented) {
92
+ this.hide();
93
93
  }
94
-
95
- this.hide();
96
94
  },
97
95
  },
98
96
 
@@ -11,8 +11,10 @@ import {
11
11
  data,
12
12
  dimensions,
13
13
  findIndex,
14
+ getIndex,
14
15
  includes,
15
16
  last,
17
+ sumBy,
16
18
  toFloat,
17
19
  toggleClass,
18
20
  toNumber,
@@ -42,11 +44,7 @@ export default {
42
44
  },
43
45
 
44
46
  finite({ finite }) {
45
- return (
46
- finite ||
47
- Math.ceil(getWidth(this.list)) <
48
- Math.trunc(dimensions(this.list).width + getMaxElWidth(this.list) + this.center)
49
- );
47
+ return finite || isFinite(this.list, this.center);
50
48
  },
51
49
 
52
50
  maxIndex() {
@@ -79,7 +77,7 @@ export default {
79
77
  let left = 0;
80
78
  const sets = [];
81
79
  const width = dimensions(this.list).width;
82
- for (let i = 0; i < this.slides.length; i++) {
80
+ for (let i = 0; i < this.length; i++) {
83
81
  const slideWidth = dimensions(this.slides[i]).width;
84
82
 
85
83
  if (left + slideWidth > width) {
@@ -271,13 +269,70 @@ export default {
271
269
  const slide = this.slides[this.getIndex(this.index + i + j++ * i)];
272
270
  currentLeft += dimensions(slide).width * i;
273
271
  slides.add(slide);
274
- } while (this.slides.length > j && currentLeft > left && currentLeft < right);
272
+ } while (this.length > j && currentLeft > left && currentLeft < right);
275
273
  }
276
274
  return Array.from(slides);
277
275
  },
278
276
  },
279
277
  };
280
278
 
279
+ function isFinite(list, center) {
280
+ const { length } = list;
281
+
282
+ if (length < 2) {
283
+ return true;
284
+ }
285
+
286
+ const { width: listWidth } = dimensions(list);
287
+ if (!center) {
288
+ return Math.ceil(getWidth(list)) < Math.trunc(listWidth + getMaxElWidth(list));
289
+ }
290
+
291
+ const slides = children(list);
292
+ const listHalf = Math.trunc(listWidth / 2);
293
+ for (const index in slides) {
294
+ const slide = slides[index];
295
+ const slideWidth = dimensions(slide).width;
296
+ const slidesInView = new Set([slide]);
297
+
298
+ let diff = 0;
299
+ for (const i of [-1, 1]) {
300
+ let left = slideWidth / 2;
301
+
302
+ let j = 0;
303
+
304
+ while (left < listHalf) {
305
+ const nextSlide = slides[getIndex(+index + i + j++ * i, slides)];
306
+
307
+ if (slidesInView.has(nextSlide)) {
308
+ return true;
309
+ }
310
+
311
+ left += dimensions(nextSlide).width;
312
+ slidesInView.add(nextSlide);
313
+ }
314
+ diff = Math.max(
315
+ diff,
316
+ slideWidth / 2 +
317
+ dimensions(slides[getIndex(+index + i, slides)]).width / 2 -
318
+ (left - listHalf)
319
+ );
320
+ }
321
+
322
+ if (
323
+ diff >
324
+ sumBy(
325
+ slides.filter((slide) => !slidesInView.has(slide)),
326
+ (slide) => dimensions(slide).width
327
+ )
328
+ ) {
329
+ return true;
330
+ }
331
+ }
332
+
333
+ return false;
334
+ }
335
+
281
336
  function getMaxElWidth(list) {
282
337
  return Math.max(0, ...children(list).map((el) => dimensions(el).width));
283
338
  }
@@ -98,7 +98,7 @@ export default {
98
98
  this.hide();
99
99
  removeClass(this.selTarget, this.clsInactive);
100
100
  }
101
- css(this.$el, { position: '', top: '' });
101
+ reset(this.$el);
102
102
 
103
103
  remove(this.placeholder);
104
104
  this.placeholder = null;
@@ -156,10 +156,10 @@ export default {
156
156
  this.inactive = !this.matchMedia || !isVisible(this.$el);
157
157
 
158
158
  if (this.inactive) {
159
- return false;
159
+ return;
160
160
  }
161
161
 
162
- const hide = this.isFixed && types.has('resize');
162
+ const hide = this.isFixed && types.has('resize') && !sticky;
163
163
  if (hide) {
164
164
  css(this.selTarget, 'transition', '0s');
165
165
  this.hide();
@@ -210,6 +210,7 @@ export default {
210
210
  );
211
211
 
212
212
  sticky =
213
+ maxScrollHeight &&
213
214
  !this.showOnUp &&
214
215
  start + offset === topOffset &&
215
216
  end ===
@@ -225,6 +226,7 @@ export default {
225
226
  overflow,
226
227
  topOffset,
227
228
  height,
229
+ elHeight,
228
230
  width,
229
231
  margin,
230
232
  top: offsetPosition(referenceElement)[0],
@@ -233,10 +235,19 @@ export default {
233
235
  },
234
236
 
235
237
  write({ height, width, margin, offset, sticky }) {
238
+ if (this.inactive || sticky || !this.isFixed) {
239
+ reset(this.$el);
240
+ }
241
+
242
+ if (this.inactive) {
243
+ return;
244
+ }
245
+
236
246
  if (sticky) {
237
247
  height = width = margin = 0;
238
248
  css(this.$el, { position: 'sticky', top: offset });
239
249
  }
250
+
240
251
  const { placeholder } = this;
241
252
 
242
253
  css(placeholder, { height, width, margin });
@@ -349,7 +360,7 @@ export default {
349
360
  }
350
361
  },
351
362
 
352
- events: ['resize', 'scroll'],
363
+ events: ['resize', 'resizeViewport', 'scroll'],
353
364
  },
354
365
  ],
355
366
 
@@ -389,6 +400,7 @@ export default {
389
400
  offset,
390
401
  topOffset,
391
402
  height,
403
+ elHeight,
392
404
  offsetParentTop,
393
405
  sticky,
394
406
  } = this._data;
@@ -402,10 +414,7 @@ export default {
402
414
  position = 'absolute';
403
415
  }
404
416
 
405
- css(this.$el, {
406
- position,
407
- width,
408
- });
417
+ css(this.$el, { position, width });
409
418
  css(this.$el, 'marginTop', 0, 'important');
410
419
  }
411
420
 
@@ -416,7 +425,11 @@ export default {
416
425
  css(this.$el, 'top', offset);
417
426
 
418
427
  this.setActive(active);
419
- toggleClass(this.$el, this.clsBelow, scroll > topOffset + height);
428
+ toggleClass(
429
+ this.$el,
430
+ this.clsBelow,
431
+ scroll > topOffset + (sticky ? Math.min(height, elHeight) : height)
432
+ );
420
433
  addClass(this.$el, this.clsFixed);
421
434
  },
422
435
 
@@ -460,3 +473,7 @@ function coerce(value) {
460
473
  }
461
474
  return value;
462
475
  }
476
+
477
+ function reset(el) {
478
+ css(el, { position: '', top: '', marginTop: '', width: '' });
479
+ }
@@ -50,7 +50,7 @@ export default {
50
50
  passive: true,
51
51
 
52
52
  delegate() {
53
- return this.selSlides;
53
+ return `${this.selList} > *`;
54
54
  },
55
55
 
56
56
  handler(e) {
@@ -4,7 +4,7 @@ import SliderDrag from './slider-drag';
4
4
  import SliderNav from './slider-nav';
5
5
  import {
6
6
  $,
7
- $$,
7
+ children,
8
8
  clamp,
9
9
  getIndex,
10
10
  hasClass,
@@ -23,7 +23,6 @@ export default {
23
23
  index: Number,
24
24
  finite: Boolean,
25
25
  velocity: Number,
26
- selSlides: String,
27
26
  },
28
27
 
29
28
  data: () => ({
@@ -63,13 +62,9 @@ export default {
63
62
  return this.length - 1;
64
63
  },
65
64
 
66
- selSlides({ selList, selSlides }) {
67
- return `${selList} ${selSlides || '> *'}`;
68
- },
69
-
70
65
  slides: {
71
66
  get() {
72
- return $$(this.selSlides, this.$el);
67
+ return children(this.list);
73
68
  },
74
69
 
75
70
  watch() {
@@ -142,6 +142,10 @@ export function offsetViewport(scrollElement) {
142
142
  }
143
143
 
144
144
  let rect = offset(viewportElement);
145
+ if (css(viewportElement, 'display') === 'inline') {
146
+ return rect;
147
+ }
148
+
145
149
  for (let [prop, dir, start, end] of [
146
150
  ['width', 'x', 'left', 'right'],
147
151
  ['height', 'y', 'top', 'bottom'],
@@ -77,7 +77,7 @@
77
77
  <tr>
78
78
  <td><code>pos</code></td>
79
79
  <td>String</td>
80
- <td>'bottom-left'</td>
80
+ <td>'top-center'</td>
81
81
  <td>Tooltip position.</td>
82
82
  </tr>
83
83
  <tr>