uikit 3.25.29-dev.f3e1c53 → 3.25.30-dev.188f79c

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 (51) hide show
  1. package/CHANGELOG.md +10 -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 +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +8 -13
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +9 -14
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +11 -15
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +11 -15
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +15 -24
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +11 -15
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +15 -24
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +1 -1
  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 +39 -21
  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 +47 -34
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +2 -2
  43. package/src/js/components/lightbox-panel.js +3 -3
  44. package/src/js/components/lightbox.js +1 -1
  45. package/src/js/core/grid.js +1 -3
  46. package/src/js/core/icon.js +2 -6
  47. package/src/js/core/svg.js +30 -6
  48. package/src/js/mixin/slider-nav.js +6 -11
  49. package/src/js/util/filter.js +6 -1
  50. package/src/js/util/svg.js +7 -6
  51. package/src/js/util/viewport.js +1 -1
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.25.29-dev.f3e1c53 | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
1
+ /*! UIkit 3.25.30-dev.188f79c | 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() :
@@ -339,7 +339,11 @@
339
339
  function getTargetedElement(el) {
340
340
  if (isSameSiteAnchor(el)) {
341
341
  const { hash, ownerDocument } = toNode(el);
342
- const id = decodeURIComponent(hash).slice(1);
342
+ let id = hash.slice(1);
343
+ try {
344
+ id = decodeURIComponent(id);
345
+ } catch {
346
+ }
343
347
  return id ? ownerDocument.getElementById(id) || ownerDocument.getElementsByName(id)[0] : ownerDocument.documentElement;
344
348
  }
345
349
  }
@@ -1328,7 +1332,7 @@
1328
1332
  }
1329
1333
  function getCoveringElement(target) {
1330
1334
  const { document } = toWindow(target);
1331
- target = target || document.body;
1335
+ target || (target = document.body);
1332
1336
  const { left, width, top } = dimensions$1(target);
1333
1337
  for (const position of top ? [0, top] : [0]) {
1334
1338
  let coverEl;
@@ -3417,7 +3421,7 @@
3417
3421
  return Math.atan2(Math.abs(pos2.y - pos1.y), Math.abs(pos2.x - pos1.x)) * 180 / Math.PI;
3418
3422
  }
3419
3423
 
3420
- var VERSION = '3.25.29-dev.f3e1c53';
3424
+ var VERSION = '3.25.30-dev.188f79c';
3421
3425
 
3422
3426
  function initWatches(instance) {
3423
3427
  instance._watches = [];
@@ -3944,6 +3948,7 @@
3944
3948
  this.updateNav();
3945
3949
  },
3946
3950
  navItems(items) {
3951
+ var _a;
3947
3952
  for (const el of items) {
3948
3953
  const cmd = data(el, this.attrItem);
3949
3954
  const button = $("a,button", el) || el;
@@ -3953,24 +3958,18 @@
3953
3958
  const item = toNumber(cmd);
3954
3959
  const slide = this.slides[item];
3955
3960
  if (slide) {
3956
- if (!slide.id) {
3957
- slide.id = generateId(this, slide);
3958
- }
3959
- ariaControls = slide.id;
3961
+ ariaControls = slide.id || (slide.id = generateId(this, slide));
3960
3962
  }
3961
3963
  ariaLabel = this.t("slideX", toFloat(cmd) + 1);
3962
3964
  button.role = "tab";
3963
3965
  } else {
3964
3966
  if (this.list) {
3965
- if (!this.list.id) {
3966
- this.list.id = generateId(this, this.list);
3967
- }
3968
- ariaControls = this.list.id;
3967
+ ariaControls = (_a = this.list).id || (_a.id = generateId(this, this.list));
3969
3968
  }
3970
3969
  ariaLabel = this.t(cmd);
3971
3970
  }
3972
3971
  attr(button, "aria-controls", ariaControls);
3973
- button.ariaLabel = button.ariaLabel || ariaLabel;
3972
+ button.ariaLabel || (button.ariaLabel = ariaLabel);
3974
3973
  }
3975
3974
  },
3976
3975
  slides(slides) {
@@ -4609,7 +4608,7 @@
4609
4608
  } else if (matches2 = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/)) {
4610
4609
  try {
4611
4610
  const { height, width } = await (await fetch(
4612
- `https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(
4611
+ `https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURIComponent(
4613
4612
  src
4614
4613
  )}`,
4615
4614
  { credentials: "omit" }
@@ -4700,10 +4699,10 @@
4700
4699
  return el;
4701
4700
  }
4702
4701
  function isImage(src) {
4703
- return src == null ? void 0 : src.match(/\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\?)/i);
4702
+ return src == null ? void 0 : src.match(/\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|[?#])/i);
4704
4703
  }
4705
4704
  function isVideo(src) {
4706
- return src == null ? void 0 : src.match(/\.(mp4|webm|ogv)($|\?)/i);
4705
+ return src == null ? void 0 : src.match(/\.(mp4|webm|ogv)($|[?#])/i);
4707
4706
  }
4708
4707
 
4709
4708
  const selDisabled$1 = ".uk-disabled *, .uk-disabled, [disabled]";
@@ -4750,7 +4749,7 @@
4750
4749
  const { source } = toItem(index);
4751
4750
  index = findIndex(items, ({ source: src }) => source === src);
4752
4751
  }
4753
- this.panel = this.panel || this.$create("lightboxPanel", { ...this.$props, items });
4752
+ this.panel || (this.panel = this.$create("lightboxPanel", { ...this.$props, items }));
4754
4753
  on(this.panel.$el, "hidden", () => this.panel = null);
4755
4754
  return this.panel.show(index);
4756
4755
  },
@@ -4926,12 +4925,16 @@
4926
4925
  }
4927
4926
 
4928
4927
  function getMaxPathLength(el) {
4929
- return isVisible(el) ? Math.ceil(
4930
- Math.max(0, ...$$("[stroke]", el).map((stroke) => {
4931
- var _a;
4932
- return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;
4933
- }))
4934
- ) : 0;
4928
+ try {
4929
+ return Math.ceil(
4930
+ Math.max(0, ...$$("[stroke]", el).map((stroke) => {
4931
+ var _a;
4932
+ return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;
4933
+ }))
4934
+ );
4935
+ } catch {
4936
+ return 0;
4937
+ }
4935
4938
  }
4936
4939
 
4937
4940
  const props = {
@@ -7966,9 +7969,7 @@
7966
7969
  return columns;
7967
7970
  }
7968
7971
  function push(array, index, value) {
7969
- if (!array[index]) {
7970
- array[index] = [];
7971
- }
7972
+ array[index] || (array[index] = []);
7972
7973
  array[index].push(value);
7973
7974
  }
7974
7975
 
@@ -8428,9 +8429,7 @@
8428
8429
  if (!icons[icon]) {
8429
8430
  return null;
8430
8431
  }
8431
- if (!parsed[icon]) {
8432
- parsed[icon] = parseSVG(icons[applyRtl(icon)] || icons[icon]);
8433
- }
8432
+ parsed[icon] || (parsed[icon] = parseSVG(icons[applyRtl(icon)] || icons[icon]));
8434
8433
  return parsed[icon].cloneNode(true);
8435
8434
  }
8436
8435
  function applyRtl(icon) {
@@ -9706,24 +9705,38 @@
9706
9705
  methods: {
9707
9706
  async getSvg() {
9708
9707
  if (isTag(this.$el, "img") && !this.$el.complete && this.$el.loading === "lazy") {
9709
- await new Promise((resolve) => once(this.$el, "load", resolve));
9708
+ await new Promise(
9709
+ (resolve, reject) => once(
9710
+ this.$el,
9711
+ "load error",
9712
+ (event) => event.type === "load" ? resolve() : reject(event)
9713
+ )
9714
+ );
9710
9715
  }
9711
9716
  return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject("SVG not found.");
9712
9717
  }
9713
9718
  }
9714
9719
  };
9715
9720
  function applyAttributes(el) {
9716
- const { $el } = this;
9721
+ const { $el, attributes } = this;
9717
9722
  addClass(el, attr($el, "class"), "uk-svg");
9718
9723
  for (let i = 0; i < $el.style.length; i++) {
9719
9724
  const prop = $el.style[i];
9720
9725
  css(el, prop, css($el, prop));
9721
9726
  }
9722
- for (const attribute in this.attributes) {
9723
- const [prop, value] = this.attributes[attribute].split(":", 2);
9727
+ for (const attribute in attributes) {
9728
+ const [prop, value] = attributes[attribute].split(":", 2);
9724
9729
  attr(el, prop, value);
9725
9730
  }
9726
- el.ariaHidden = this.$el.ariaHidden;
9731
+ el.ariaHidden || (el.ariaHidden = $el.ariaHidden);
9732
+ if (!el.ariaHidden) {
9733
+ el.ariaLabel || (el.ariaLabel = $el.ariaLabel || $el.alt || null);
9734
+ if (el.ariaLabel) {
9735
+ el.role || (el.role = "img");
9736
+ } else if (hasAttr($el, "alt")) {
9737
+ el.ariaHidden = true;
9738
+ }
9739
+ }
9727
9740
  if (!this.$el.id) {
9728
9741
  removeAttr(el, "id");
9729
9742
  }