uikit 3.25.29-dev.7b0f736 → 3.25.29-dev.f3e1c53

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 (57) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/css/uikit-core-rtl.css +1 -1
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +1 -1
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +1 -1
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +1 -1
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +1 -1
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +3 -3
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +14 -10
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +14 -10
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +5 -2
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +1 -1
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +1 -1
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +2 -2
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +1 -1
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +2 -2
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +2 -2
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +1 -1
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +51 -58
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +1 -1
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +51 -58
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/core/alert.js +6 -3
  44. package/src/js/core/dropnav.js +1 -1
  45. package/src/js/core/grid.js +1 -1
  46. package/src/js/core/icon.js +6 -12
  47. package/src/js/core/img.js +3 -3
  48. package/src/js/core/inverse.js +4 -2
  49. package/src/js/core/margin.js +1 -1
  50. package/src/js/core/modal.js +1 -1
  51. package/src/js/core/overflow-fade.js +6 -2
  52. package/src/js/core/switcher.js +1 -0
  53. package/src/js/mixin/event.js +4 -1
  54. package/src/js/util/lang.js +8 -33
  55. package/src/js/util/scroll.js +14 -9
  56. package/tests/alert.html +2 -2
  57. package/tests/overflow-fade.test.mjs +69 -0
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.25.29-dev.7b0f736 | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
1
+ /*! UIkit 3.25.29-dev.f3e1c53 | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -156,28 +156,17 @@
156
156
  function pointInRect(point, rect) {
157
157
  return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top;
158
158
  }
159
- function ratio(dimensions, prop, value) {
160
- const aProp = prop === "width" ? "height" : "width";
159
+ function cover$1(dimensions, maxDimensions) {
160
+ const scale = Math.max(
161
+ dimensions.width ? maxDimensions.width / dimensions.width : 0,
162
+ dimensions.height ? maxDimensions.height / dimensions.height : 0
163
+ );
161
164
  return {
162
- [aProp]: dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp],
163
- [prop]: value
165
+ width: Math.round(dimensions.width * scale),
166
+ height: Math.round(dimensions.height * scale)
164
167
  };
165
168
  }
166
- function contain(dimensions, maxDimensions) {
167
- dimensions = { ...dimensions };
168
- for (const prop in dimensions) {
169
- dimensions = dimensions[prop] > maxDimensions[prop] ? ratio(dimensions, prop, maxDimensions[prop]) : dimensions;
170
- }
171
- return dimensions;
172
- }
173
- function cover$1(dimensions, maxDimensions) {
174
- dimensions = contain(dimensions, maxDimensions);
175
- for (const prop in dimensions) {
176
- dimensions = dimensions[prop] < maxDimensions[prop] ? ratio(dimensions, prop, maxDimensions[prop]) : dimensions;
177
- }
178
- return dimensions;
179
- }
180
- const Dimensions = { ratio, contain, cover: cover$1 };
169
+ const Dimensions = { cover: cover$1 };
181
170
  function getIndex(i, elements, current = 0, finite = false) {
182
171
  elements = toNodes(elements);
183
172
  const { length } = elements;
@@ -2109,7 +2098,7 @@
2109
2098
  }
2110
2099
  const offsetCurrent = getOffset(current[0], withOffset);
2111
2100
  if (offset.top >= offsetCurrent.bottom - 1 && offset.top !== offsetCurrent.top) {
2112
- sorted.push([el]);
2101
+ sorted.splice(i + 1, 0, [el]);
2113
2102
  break;
2114
2103
  }
2115
2104
  if (offset.bottom - 1 > offsetCurrent.top || offset.top === offsetCurrent.top) {
@@ -2373,7 +2362,7 @@
2373
2362
  }
2374
2363
 
2375
2364
  function maybeDefaultPreventClick(e) {
2376
- if (e.target.closest('a[href="#"],a[href=""]')) {
2365
+ if (e.type === "keydown" && e.keyCode === keyMap.SPACE || e.target.closest('a[href="#"],a[href=""]')) {
2377
2366
  e.preventDefault();
2378
2367
  }
2379
2368
  }
@@ -2612,8 +2601,9 @@
2612
2601
  const elements = isTag(parentNode, "picture") ? children(parentNode) : [el];
2613
2602
  elements.forEach((el2) => setSourceProps(el2, el2));
2614
2603
  } else if (src) {
2615
- if (!includes(el.style.backgroundImage, src)) {
2616
- css(el, "backgroundImage", `url(${escape(src)})`);
2604
+ const previousBackground = el.style.backgroundImage;
2605
+ css(el, "backgroundImage", `url(${escape(src)})`);
2606
+ if (el.style.backgroundImage !== previousBackground) {
2617
2607
  trigger(el, createEvent("load", false));
2618
2608
  }
2619
2609
  }
@@ -2666,7 +2656,7 @@
2666
2656
  return isTag(el, "img");
2667
2657
  }
2668
2658
 
2669
- let prevented;
2659
+ let scrollLocks = 0;
2670
2660
  function preventBackgroundScroll(el) {
2671
2661
  const off = on(
2672
2662
  el,
@@ -2701,21 +2691,25 @@
2701
2691
  },
2702
2692
  { passive: true }
2703
2693
  );
2704
- if (prevented) {
2705
- return off;
2706
- }
2707
- prevented = true;
2708
2694
  const { scrollingElement } = document;
2709
2695
  const props = {
2710
2696
  overflowY: CSS.supports("overflow", "clip") ? "clip" : "hidden",
2711
2697
  touchAction: "none",
2712
2698
  scrollbarGutter: width(window) - scrollingElement.clientWidth ? "stable" : ""
2713
2699
  };
2714
- css(scrollingElement, props);
2700
+ if (!scrollLocks++) {
2701
+ css(scrollingElement, props);
2702
+ }
2703
+ let released = false;
2715
2704
  return () => {
2716
- prevented = false;
2705
+ if (released) {
2706
+ return;
2707
+ }
2708
+ released = true;
2717
2709
  off();
2718
- resetProps(scrollingElement, props);
2710
+ if (!--scrollLocks) {
2711
+ resetProps(scrollingElement, props);
2712
+ }
2719
2713
  };
2720
2714
  }
2721
2715
 
@@ -3423,7 +3417,7 @@
3423
3417
  return Math.atan2(Math.abs(pos2.y - pos1.y), Math.abs(pos2.x - pos1.x)) * 180 / Math.PI;
3424
3418
  }
3425
3419
 
3426
- var VERSION = '3.25.29-dev.7b0f736';
3420
+ var VERSION = '3.25.29-dev.f3e1c53';
3427
3421
 
3428
3422
  function initWatches(instance) {
3429
3423
  instance._watches = [];
@@ -6913,11 +6907,10 @@
6913
6907
  mixins: [Class, Togglable],
6914
6908
  args: "animation",
6915
6909
  props: {
6916
- animation: Boolean,
6917
6910
  close: String
6918
6911
  },
6919
6912
  data: {
6920
- animation: true,
6913
+ animation: [true],
6921
6914
  selClose: ".uk-alert-close",
6922
6915
  duration: 150
6923
6916
  },
@@ -6931,7 +6924,11 @@
6931
6924
  },
6932
6925
  methods: {
6933
6926
  async close() {
6934
- await this.toggleElement(this.$el, false, this.animation ? animate : false);
6927
+ await this.toggleElement(
6928
+ this.$el,
6929
+ false,
6930
+ this.animation[0] === true || this.animation[0] === 1 ? animate : true
6931
+ );
6935
6932
  this.$destroy(true);
6936
6933
  }
6937
6934
  }
@@ -7595,7 +7592,7 @@
7595
7592
  el: ({ dropContainer }) => dropContainer,
7596
7593
  delegate: ({ clsDrop }) => `.${clsDrop}`,
7597
7594
  handler(e) {
7598
- var _a;
7595
+ var _a, _b;
7599
7596
  const { current, keyCode, target } = e;
7600
7597
  if (isInput(target) || !includes(this.dropdowns, current)) {
7601
7598
  return;
@@ -7605,15 +7602,15 @@
7605
7602
  if (~next) {
7606
7603
  e.preventDefault();
7607
7604
  const elements = $$(selFocusable, current);
7608
- elements[getIndex(
7605
+ (_a = elements[getIndex(
7609
7606
  next,
7610
7607
  elements,
7611
7608
  findIndex(elements, (el) => matches(el, ":focus"))
7612
- )].focus();
7609
+ )]) == null ? void 0 : _a.focus();
7613
7610
  return;
7614
7611
  }
7615
7612
  if (keyCode === keyMap.ESC) {
7616
- (_a = active2.targetEl) == null ? void 0 : _a.focus();
7613
+ (_b = active2.targetEl) == null ? void 0 : _b.focus();
7617
7614
  }
7618
7615
  handleNavItemNavigation(e, this.items, active2);
7619
7616
  }
@@ -7912,7 +7909,7 @@
7912
7909
  };
7913
7910
  },
7914
7911
  write({ columns, scrolled, scrollColumns, translates }) {
7915
- if (!scrolled && !translates) {
7912
+ if (scrolled === false && !translates) {
7916
7913
  return;
7917
7914
  }
7918
7915
  columns.forEach(
@@ -8331,16 +8328,9 @@
8331
8328
  beforeConnect() {
8332
8329
  const isToggle = hasClass(this.$el, "uk-search-toggle") || hasClass(this.$el, "uk-navbar-toggle");
8333
8330
  this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") && this.$el.closest(".uk-search-large") ? "search-large" : this.$el.closest(".uk-search-medium") ? "search-medium" : this.$props.icon;
8334
- if (hasAttr(this.$el, "aria-label")) {
8335
- return;
8336
- }
8337
- if (isToggle) {
8338
- this.$el.ariaLabel = this.t("toggle");
8339
- } else {
8340
- const button = this.$el.closest("a,button");
8341
- if (button) {
8342
- button.ariaLabel = this.t("submit");
8343
- }
8331
+ const target = isToggle ? this.$el : this.$el.closest("a,button");
8332
+ if (target && !hasAttr(target, "aria-label")) {
8333
+ target.ariaLabel = this.t(isToggle ? "toggle" : "submit");
8344
8334
  }
8345
8335
  }
8346
8336
  };
@@ -8426,7 +8416,7 @@
8426
8416
  apply(
8427
8417
  document.body,
8428
8418
  (el) => each(UIkit.getComponents(el), (cmp) => {
8429
- cmp.$options.isIcon && cmp.icon in added && cmp.$reset();
8419
+ cmp.$options.isIcon && (aliases[cmp.icon] || cmp.icon) in added && cmp.$reset();
8430
8420
  })
8431
8421
  );
8432
8422
  }
@@ -8493,6 +8483,7 @@
8493
8483
  [...toNodes(target), document.documentElement],
8494
8484
  handler
8495
8485
  );
8486
+ const transitionObserver = observeResize([], handler);
8496
8487
  const listener = [
8497
8488
  on(document, "scroll itemshown itemhidden", handler, {
8498
8489
  passive: true,
@@ -8500,11 +8491,11 @@
8500
8491
  }),
8501
8492
  on(document, "show hide transitionstart", (e) => {
8502
8493
  handler();
8503
- return observer.observe(e.target);
8494
+ return transitionObserver.observe(e.target);
8504
8495
  }),
8505
8496
  on(document, "shown hidden transitionend transitioncancel", (e) => {
8506
8497
  handler();
8507
- return observer.unobserve(e.target);
8498
+ return transitionObserver.unobserve(e.target);
8508
8499
  })
8509
8500
  ];
8510
8501
  return {
@@ -8512,6 +8503,7 @@
8512
8503
  unobserve: observer.unobserve.bind(observer),
8513
8504
  disconnect() {
8514
8505
  observer.disconnect();
8506
+ transitionObserver.disconnect();
8515
8507
  listener.forEach((off) => off());
8516
8508
  }
8517
8509
  };
@@ -8714,7 +8706,7 @@
8714
8706
  const dialog = modal.dialog(tmpl(options), options);
8715
8707
  return assign(
8716
8708
  new Promise((resolve) => {
8717
- const off = on(dialog.$el, "hide", () => resolve(hideFn()));
8709
+ const off = on(dialog.$el, "hide", () => resolve(hideFn()), { self: true });
8718
8710
  on(dialog.$el, "submit", "form", (e) => {
8719
8711
  e.preventDefault();
8720
8712
  resolve(submitFn(dialog));
@@ -9017,7 +9009,8 @@
9017
9009
  );
9018
9010
  if (!overflow[i - 1]) {
9019
9011
  const dir = i ? "Top" : "Left";
9020
- const percent = overflow[i] ? this.$el[`scroll${dir}`] / overflow[i] : 0;
9012
+ const position = this.$el[`scroll${dir}`] + (!i && isRtl ? overflow[i] : 0);
9013
+ const percent = overflow[i] ? position / overflow[i] : 0;
9021
9014
  const toValue = (value) => overflow[i] ? clamp((this.fadeDuration - value) / this.fadeDuration) : 1;
9022
9015
  css(this.$el, {
9023
9016
  "--uk-overflow-fade-start-opacity": toValue(percent),
@@ -9039,7 +9032,7 @@
9039
9032
  const { $el: el, threshold, $options } = this;
9040
9033
  let started;
9041
9034
  const off = on(document, pointerMove$1, move(e), pointerOptions);
9042
- on(document, [pointerUp$1, pointerCancel], end, { capture: true, once: true });
9035
+ once(document, [pointerUp$1, pointerCancel], end, true);
9043
9036
  function move(e2) {
9044
9037
  let origin = getEventPos(e2);
9045
9038
  let pos = origin;
@@ -9821,7 +9814,7 @@
9821
9814
  name: "click keydown",
9822
9815
  delegate: ({ toggle }) => toggle,
9823
9816
  handler(e) {
9824
- if (!matches(e.current, selDisabled) && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
9817
+ if (!e.defaultPrevented && !matches(e.current, selDisabled) && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
9825
9818
  maybeDefaultPreventClick(e);
9826
9819
  this.show(e.current);
9827
9820
  }