uikit 3.15.18-dev.9cbbb510d → 3.15.19-dev.699ab5a7f

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 (52) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/util.js +4 -4
  3. package/dist/css/uikit-core-rtl.css +5 -2
  4. package/dist/css/uikit-core-rtl.min.css +1 -1
  5. package/dist/css/uikit-core.css +5 -2
  6. package/dist/css/uikit-core.min.css +1 -1
  7. package/dist/css/uikit-rtl.css +5 -2
  8. package/dist/css/uikit-rtl.min.css +1 -1
  9. package/dist/css/uikit.css +5 -2
  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 +2 -1
  13. package/dist/js/components/filter.js +22 -30
  14. package/dist/js/components/filter.min.js +2 -1
  15. package/dist/js/components/lightbox-panel.js +75 -96
  16. package/dist/js/components/lightbox-panel.min.js +2 -1
  17. package/dist/js/components/lightbox.js +78 -99
  18. package/dist/js/components/lightbox.min.js +2 -1
  19. package/dist/js/components/notification.js +11 -14
  20. package/dist/js/components/notification.min.js +2 -1
  21. package/dist/js/components/parallax.js +24 -26
  22. package/dist/js/components/parallax.min.js +2 -1
  23. package/dist/js/components/slider-parallax.js +19 -20
  24. package/dist/js/components/slider-parallax.min.js +2 -1
  25. package/dist/js/components/slider.js +95 -51
  26. package/dist/js/components/slider.min.js +2 -1
  27. package/dist/js/components/slideshow-parallax.js +19 -20
  28. package/dist/js/components/slideshow-parallax.min.js +2 -1
  29. package/dist/js/components/slideshow.js +35 -42
  30. package/dist/js/components/slideshow.min.js +2 -1
  31. package/dist/js/components/sortable.js +12 -18
  32. package/dist/js/components/sortable.min.js +2 -1
  33. package/dist/js/components/tooltip.js +25 -30
  34. package/dist/js/components/tooltip.min.js +2 -1
  35. package/dist/js/components/upload.js +7 -7
  36. package/dist/js/components/upload.min.js +2 -1
  37. package/dist/js/uikit-core.js +277 -330
  38. package/dist/js/uikit-core.min.js +2 -1
  39. package/dist/js/uikit-icons.js +1 -1
  40. package/dist/js/uikit-icons.min.js +2 -1
  41. package/dist/js/uikit.js +470 -503
  42. package/dist/js/uikit.min.js +2 -1
  43. package/package.json +2 -2
  44. package/src/js/components/lightbox-panel.js +3 -5
  45. package/src/js/components/slider.js +62 -7
  46. package/src/js/core/accordion.js +5 -4
  47. package/src/js/core/sticky.js +6 -7
  48. package/src/js/mixin/slider-drag.js +1 -1
  49. package/src/js/mixin/slider.js +2 -7
  50. package/src/js/util/attr.js +1 -6
  51. package/src/less/components/sticky.less +4 -1
  52. package/src/scss/components/sticky.scss +4 -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.18-dev.9cbbb510d",
5
+ "version": "3.15.19-dev.699ab5a7f",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -43,7 +43,7 @@
43
43
  "camelcase": "^7.0.0",
44
44
  "clean-css": "^5.3.1",
45
45
  "dateformat": "^5.0.3",
46
- "esbuild": "^0.15.12",
46
+ "esbuild": "^0.16.4",
47
47
  "eslint": "^8.26.0",
48
48
  "eslint-config-prettier": "^8.5.0",
49
49
  "fs-extra": "^11.1.0",
@@ -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
  }
@@ -6,6 +6,7 @@ import {
6
6
  $$,
7
7
  attr,
8
8
  css,
9
+ dimensions,
9
10
  filter,
10
11
  getIndex,
11
12
  hasClass,
@@ -169,10 +170,10 @@ async function transition(el, show, { content, duration, velocity, transition })
169
170
  await Transition.cancel(wrapper);
170
171
  hide(content, false);
171
172
 
172
- const endHeight = sumBy(
173
- ['height', 'paddingTop', 'paddingBottom', 'marginTop', 'marginBottom'],
174
- (prop) => css(content, prop)
175
- );
173
+ const endHeight =
174
+ sumBy(['marginTop', 'marginBottom'], (prop) => css(content, prop)) +
175
+ dimensions(content).height;
176
+
176
177
  const percent = currentHeight / endHeight;
177
178
  duration = (velocity * endHeight + duration) * (show ? 1 - percent : percent);
178
179
  css(wrapper, 'height', currentHeight);
@@ -235,17 +235,19 @@ export default {
235
235
  },
236
236
 
237
237
  write({ height, width, margin, offset, sticky }) {
238
- if (this.inactive) {
238
+ if (this.inactive || sticky || !this.isFixed) {
239
239
  reset(this.$el);
240
+ }
241
+
242
+ if (this.inactive) {
240
243
  return;
241
244
  }
242
245
 
243
246
  if (sticky) {
244
247
  height = width = margin = 0;
245
248
  css(this.$el, { position: 'sticky', top: offset });
246
- } else if (!this.isFixed) {
247
- reset(this.$el);
248
249
  }
250
+
249
251
  const { placeholder } = this;
250
252
 
251
253
  css(placeholder, { height, width, margin });
@@ -412,10 +414,7 @@ export default {
412
414
  position = 'absolute';
413
415
  }
414
416
 
415
- css(this.$el, {
416
- position,
417
- width,
418
- });
417
+ css(this.$el, { position, width });
419
418
  css(this.$el, 'marginTop', 0, 'important');
420
419
  }
421
420
 
@@ -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() {
@@ -30,12 +30,7 @@ export function hasAttr(element, name) {
30
30
  }
31
31
 
32
32
  export function removeAttr(element, name) {
33
- const elements = toNodes(element);
34
- for (const attribute of name.split(' ')) {
35
- for (const element of elements) {
36
- element.removeAttribute(attribute);
37
- }
38
- }
33
+ toNodes(element).forEach((element) => element.removeAttribute(name));
39
34
  }
40
35
 
41
36
  export function data(element, attribute) {
@@ -25,6 +25,8 @@
25
25
 
26
26
  /*
27
27
  * 1. Create position context so it's t the same like when fixed.
28
+ * 2. Create stacking context already when not sticky to have the same context
29
+ * for position set to `sticky` and `relative`
28
30
  * 2. More robust if padding and border are used and the sticky height is transitioned
29
31
  */
30
32
 
@@ -32,6 +34,8 @@
32
34
  /* 1 */
33
35
  position: relative;
34
36
  /* 2 */
37
+ z-index: @sticky-z-index;
38
+ /* 3 */
35
39
  box-sizing: border-box;
36
40
  }
37
41
 
@@ -40,7 +44,6 @@
40
44
  */
41
45
 
42
46
  .uk-sticky-fixed {
43
- z-index: @sticky-z-index;
44
47
  margin: 0 !important;
45
48
  /* 1 */
46
49
  -webkit-backface-visibility: hidden;
@@ -25,6 +25,8 @@ $sticky-reverse-animation-duration: 0.2s !default;
25
25
 
26
26
  /*
27
27
  * 1. Create position context so it's t the same like when fixed.
28
+ * 2. Create stacking context already when not sticky to have the same context
29
+ * for position set to `sticky` and `relative`
28
30
  * 2. More robust if padding and border are used and the sticky height is transitioned
29
31
  */
30
32
 
@@ -32,6 +34,8 @@ $sticky-reverse-animation-duration: 0.2s !default;
32
34
  /* 1 */
33
35
  position: relative;
34
36
  /* 2 */
37
+ z-index: $sticky-z-index;
38
+ /* 3 */
35
39
  box-sizing: border-box;
36
40
  }
37
41
 
@@ -40,7 +44,6 @@ $sticky-reverse-animation-duration: 0.2s !default;
40
44
  */
41
45
 
42
46
  .uk-sticky-fixed {
43
- z-index: $sticky-z-index;
44
47
  margin: 0 !important;
45
48
  /* 1 */
46
49
  -webkit-backface-visibility: hidden;