uikit 3.25.23-dev.2ad20f7 → 3.25.23-dev.9ebc131

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 (62) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/build.js +1 -2
  3. package/build/scss.js +83 -54
  4. package/dist/css/uikit-core-rtl.css +1 -1
  5. package/dist/css/uikit-core-rtl.min.css +1 -1
  6. package/dist/css/uikit-core.css +1 -1
  7. package/dist/css/uikit-core.min.css +1 -1
  8. package/dist/css/uikit-rtl.css +1 -1
  9. package/dist/css/uikit-rtl.min.css +1 -1
  10. package/dist/css/uikit.css +1 -1
  11. package/dist/css/uikit.min.css +1 -1
  12. package/dist/js/components/countdown.js +2 -2
  13. package/dist/js/components/countdown.min.js +1 -1
  14. package/dist/js/components/filter.js +4 -4
  15. package/dist/js/components/filter.min.js +1 -1
  16. package/dist/js/components/lightbox-panel.js +326 -37
  17. package/dist/js/components/lightbox-panel.min.js +1 -1
  18. package/dist/js/components/lightbox.js +326 -37
  19. package/dist/js/components/lightbox.min.js +1 -1
  20. package/dist/js/components/notification.js +1 -1
  21. package/dist/js/components/notification.min.js +1 -1
  22. package/dist/js/components/parallax.js +1 -1
  23. package/dist/js/components/parallax.min.js +1 -1
  24. package/dist/js/components/slider-parallax.js +1 -1
  25. package/dist/js/components/slider-parallax.min.js +1 -1
  26. package/dist/js/components/slider.js +195 -195
  27. package/dist/js/components/slider.min.js +1 -1
  28. package/dist/js/components/slideshow-parallax.js +1 -1
  29. package/dist/js/components/slideshow-parallax.min.js +1 -1
  30. package/dist/js/components/slideshow.js +4 -9
  31. package/dist/js/components/slideshow.min.js +1 -1
  32. package/dist/js/components/sortable.js +1 -1
  33. package/dist/js/components/sortable.min.js +1 -1
  34. package/dist/js/components/tooltip.js +6 -4
  35. package/dist/js/components/tooltip.min.js +1 -1
  36. package/dist/js/components/upload.js +1 -1
  37. package/dist/js/components/upload.min.js +1 -1
  38. package/dist/js/uikit-core.js +110 -102
  39. package/dist/js/uikit-core.min.js +1 -1
  40. package/dist/js/uikit-icons.js +1 -1
  41. package/dist/js/uikit-icons.min.js +1 -1
  42. package/dist/js/uikit.js +109 -104
  43. package/dist/js/uikit.min.js +1 -1
  44. package/package.json +1 -1
  45. package/src/js/api/app.js +2 -4
  46. package/src/js/api/component.js +12 -8
  47. package/src/js/api/observables.js +2 -4
  48. package/src/js/api/props.js +1 -2
  49. package/src/js/components/countdown.js +1 -1
  50. package/src/js/components/slider.js +1 -1
  51. package/src/js/components/slideshow.js +0 -5
  52. package/src/js/components/tooltip.js +4 -2
  53. package/src/js/core/accordion.js +11 -7
  54. package/src/js/core/drop.js +10 -32
  55. package/src/js/core/dropnav.js +1 -1
  56. package/src/js/core/form-custom.js +1 -1
  57. package/src/js/core/img.js +2 -7
  58. package/src/js/core/overflow-fade.js +6 -5
  59. package/src/js/mixin/event.js +31 -0
  60. package/src/js/mixin/modal.js +26 -34
  61. package/src/js/mixin/svg.js +1 -1
  62. package/src/js/util/event.js +1 -5
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.25.23-dev.2ad20f7 | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
1
+ /*! UIkit 3.25.23-dev.9ebc131 | 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() :
@@ -516,10 +516,7 @@
516
516
  return toEventTargets(targets).map((target) => target.dispatchEvent(createEvent(event, true, true, detail2))).every((result) => result);
517
517
  }
518
518
  function createEvent(e, bubbles = true, cancelable = false, detail2) {
519
- if (isString(e)) {
520
- e = new CustomEvent(e, { bubbles, cancelable, detail: detail2 });
521
- }
522
- return e;
519
+ return isString(e) ? new CustomEvent(e, { bubbles, cancelable, detail: detail2 }) : e;
523
520
  }
524
521
  function getArgs(args) {
525
522
  args[0] = toEventTargets(args[0]);
@@ -1765,7 +1762,7 @@
1765
1762
  if (el.textContent !== digits) {
1766
1763
  digits = digits.split("");
1767
1764
  if (digits.length !== el.children.length) {
1768
- html(el, digits.map(() => "<span></span>").join(""));
1765
+ html(el, "<span></span>".repeat(digits.length));
1769
1766
  }
1770
1767
  digits.forEach((digit, i) => el.children[i].textContent = digit);
1771
1768
  }
@@ -1958,8 +1955,8 @@
1958
1955
  for (const el of toNodes(isFunction(targets) ? targets(this) : targets)) {
1959
1956
  $$('[loading="lazy"]', el).slice(0, preload - 1).forEach((el2) => removeAttr(el2, "loading"));
1960
1957
  }
1961
- for (const el of entries.filter(({ isIntersecting }) => isIntersecting).map(({ target }) => target)) {
1962
- observer.unobserve(el);
1958
+ for (const { isIntersecting, target } of entries) {
1959
+ isIntersecting && observer.unobserve(target);
1963
1960
  }
1964
1961
  },
1965
1962
  ...options
@@ -2332,12 +2329,6 @@
2332
2329
  }
2333
2330
  };
2334
2331
 
2335
- function maybeDefaultPreventClick(e) {
2336
- if (e.target.closest('a[href="#"],a[href=""]')) {
2337
- e.preventDefault();
2338
- }
2339
- }
2340
-
2341
2332
  const keyMap = {
2342
2333
  TAB: 9,
2343
2334
  ENTER: 13,
@@ -2351,6 +2342,36 @@
2351
2342
  DOWN: 40
2352
2343
  };
2353
2344
 
2345
+ function maybeDefaultPreventClick(e) {
2346
+ if (e.target.closest('a[href="#"],a[href=""]')) {
2347
+ e.preventDefault();
2348
+ }
2349
+ }
2350
+ function onEscape(handler, isEligible = () => true) {
2351
+ return on(document, "keydown", (e) => {
2352
+ if (e.keyCode === keyMap.ESC && isEligible()) {
2353
+ handler(e);
2354
+ }
2355
+ });
2356
+ }
2357
+ function onOutsidePointer(handler, isOutside, isEligible) {
2358
+ return on(document, pointerDown$1, ({ target }) => {
2359
+ if (!isOutside(target) || isEligible && !isEligible()) {
2360
+ return;
2361
+ }
2362
+ once(
2363
+ document,
2364
+ `${pointerUp$1} ${pointerCancel} scroll`,
2365
+ ({ defaultPrevented, type, target: newTarget }) => {
2366
+ if (!defaultPrevented && type === pointerUp$1 && target === newTarget) {
2367
+ handler(target);
2368
+ }
2369
+ },
2370
+ true
2371
+ );
2372
+ });
2373
+ }
2374
+
2354
2375
  var filter = {
2355
2376
  mixins: [Animate],
2356
2377
  args: "target",
@@ -2561,8 +2582,7 @@
2561
2582
  const elements = isTag(parentNode, "picture") ? children(parentNode) : [el];
2562
2583
  elements.forEach((el2) => setSourceProps(el2, el2));
2563
2584
  } else if (src) {
2564
- const change = !includes(el.style.backgroundImage, src);
2565
- if (change) {
2585
+ if (!includes(el.style.backgroundImage, src)) {
2566
2586
  css(el, "backgroundImage", `url(${escape(src)})`);
2567
2587
  trigger(el, createEvent("load", false));
2568
2588
  }
@@ -2610,10 +2630,7 @@
2610
2630
  } else {
2611
2631
  sources = parseOptions(sources);
2612
2632
  }
2613
- if (!isArray(sources)) {
2614
- sources = [sources];
2615
- }
2616
- return sources.filter((source) => !isEmpty(source));
2633
+ return (isArray(sources) ? sources : [sources]).filter((source) => !isEmpty(source));
2617
2634
  }
2618
2635
  function isImg(el) {
2619
2636
  return isTag(el, "img");
@@ -2865,6 +2882,7 @@
2865
2882
  }
2866
2883
 
2867
2884
  const active$1 = [];
2885
+ const pendingReject = /* @__PURE__ */ new WeakMap();
2868
2886
  var Modal = {
2869
2887
  mixins: [Class, Container, Togglable],
2870
2888
  props: {
@@ -3019,11 +3037,13 @@
3019
3037
  }
3020
3038
  };
3021
3039
  function animate$1(el, show, { transitionElement, _toggle }) {
3040
+ let rejectAnimation;
3022
3041
  return new Promise(
3023
3042
  (resolve, reject) => once(el, "show hide", () => {
3024
3043
  var _a;
3025
- (_a = el._reject) == null ? void 0 : _a.call(el);
3026
- el._reject = reject;
3044
+ (_a = pendingReject.get(el)) == null ? void 0 : _a();
3045
+ rejectAnimation = reject;
3046
+ pendingReject.set(el, reject);
3027
3047
  _toggle(el, show);
3028
3048
  const off = once(
3029
3049
  transitionElement,
@@ -3044,10 +3064,14 @@
3044
3064
  toMs(css(transitionElement, "transitionDuration"))
3045
3065
  );
3046
3066
  })
3047
- ).then(() => delete el._reject);
3067
+ ).then(() => {
3068
+ if (pendingReject.get(el) === rejectAnimation) {
3069
+ pendingReject.delete(el);
3070
+ }
3071
+ });
3048
3072
  }
3049
3073
  function toMs(time) {
3050
- return time ? endsWith(time, "ms") ? toFloat(time) : toFloat(time) * 1e3 : 0;
3074
+ return toFloat(time) * (endsWith(time, "ms") ? 1 : 1e3);
3051
3075
  }
3052
3076
  function preventBackgroundFocus(modal) {
3053
3077
  return on(document, "focusin", (e) => {
@@ -3063,28 +3087,17 @@
3063
3087
  });
3064
3088
  }
3065
3089
  function listenForBackgroundClose$1(modal) {
3066
- return on(document, pointerDown$1, ({ target }) => {
3067
- if (last(active$1) !== modal || modal.overlay && !modal.$el.contains(target) || !modal.panel || modal.panel.contains(target)) {
3068
- return;
3069
- }
3070
- once(
3071
- document,
3072
- `${pointerUp$1} ${pointerCancel} scroll`,
3073
- ({ defaultPrevented, type, target: newTarget }) => {
3074
- if (!defaultPrevented && type === pointerUp$1 && target === newTarget) {
3075
- modal.hide();
3076
- }
3077
- },
3078
- true
3079
- );
3080
- });
3090
+ return onOutsidePointer(
3091
+ () => modal.hide(),
3092
+ (target) => (!modal.overlay || modal.$el.contains(target)) && Boolean(modal.panel) && !modal.panel.contains(target),
3093
+ () => last(active$1) === modal
3094
+ );
3081
3095
  }
3082
3096
  function listenForEscClose$1(modal) {
3083
- return on(document, "keydown", (e) => {
3084
- if (e.keyCode === 27 && last(active$1) === modal) {
3085
- modal.hide();
3086
- }
3087
- });
3097
+ return onEscape(
3098
+ () => modal.hide(),
3099
+ () => last(active$1) === modal
3100
+ );
3088
3101
  }
3089
3102
  function setAriaExpanded(el, toggled) {
3090
3103
  if (el == null ? void 0 : el.ariaExpanded) {
@@ -3398,7 +3411,7 @@
3398
3411
  return Math.atan2(Math.abs(pos2.y - pos1.y), Math.abs(pos2.x - pos1.x)) * 180 / Math.PI;
3399
3412
  }
3400
3413
 
3401
- var VERSION = '3.25.23-dev.2ad20f7';
3414
+ var VERSION = '3.25.23-dev.9ebc131';
3402
3415
 
3403
3416
  function initWatches(instance) {
3404
3417
  instance._watches = [];
@@ -3607,7 +3620,7 @@
3607
3620
  }
3608
3621
  const getAttributes = memoize((id, props) => {
3609
3622
  const attributes = Object.keys(props);
3610
- const filter = attributes.concat(id).map((key) => [hyphenate(key), `data-${hyphenate(key)}`]).flat();
3623
+ const filter = attributes.concat(id).flatMap((key) => [hyphenate(key), `data-${hyphenate(key)}`]);
3611
3624
  return { attributes, filter };
3612
3625
  });
3613
3626
  function initPropsObserver(instance) {
@@ -3716,15 +3729,15 @@
3716
3729
  return data;
3717
3730
  }
3718
3731
 
3719
- const App = function(options) {
3732
+ function App(options) {
3720
3733
  init$1(this, options);
3721
- };
3734
+ }
3722
3735
  App.util = util;
3723
3736
  App.options = {};
3724
3737
  App.version = VERSION;
3725
3738
 
3726
3739
  const PREFIX = "uk-";
3727
- const DATA = "__uikit__";
3740
+ const elementComponents = /* @__PURE__ */ new WeakMap();
3728
3741
  const components$2 = {};
3729
3742
  function component(name, options) {
3730
3743
  var _a, _b;
@@ -3762,22 +3775,24 @@
3762
3775
  }
3763
3776
  }
3764
3777
  function getComponents(element) {
3765
- return (element == null ? void 0 : element[DATA]) || {};
3778
+ return elementComponents.get(element) || {};
3766
3779
  }
3767
3780
  function getComponent(element, name) {
3768
3781
  return getComponents(element)[name];
3769
3782
  }
3770
3783
  function attachToElement(element, instance) {
3771
- if (!element[DATA]) {
3772
- element[DATA] = {};
3784
+ let components2 = elementComponents.get(element);
3785
+ if (!components2) {
3786
+ components2 = {};
3787
+ elementComponents.set(element, components2);
3773
3788
  }
3774
- element[DATA][instance.$options.name] = instance;
3789
+ components2[instance.$options.name] = instance;
3775
3790
  }
3776
3791
  function detachFromElement(element, instance) {
3777
- var _a;
3778
- (_a = element[DATA]) == null ? true : delete _a[instance.$options.name];
3779
- if (isEmpty(element[DATA])) {
3780
- delete element[DATA];
3792
+ const components2 = elementComponents.get(element);
3793
+ components2 == null ? true : delete components2[instance.$options.name];
3794
+ if (isEmpty(components2)) {
3795
+ elementComponents.delete(element);
3781
3796
  }
3782
3797
  }
3783
3798
 
@@ -5764,7 +5779,7 @@
5764
5779
  slides.add(slide);
5765
5780
  } while (this.length > j && currentLeft > left && currentLeft < right);
5766
5781
  }
5767
- return Array.from(slides);
5782
+ return [...slides];
5768
5783
  },
5769
5784
  getIndexAt(percent) {
5770
5785
  let index = -1;
@@ -5910,11 +5925,6 @@
5910
5925
  width: "100%"
5911
5926
  });
5912
5927
  }
5913
- },
5914
- methods: {
5915
- getAdjacentSlides() {
5916
- return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);
5917
- }
5918
5928
  }
5919
5929
  };
5920
5930
 
@@ -6423,10 +6433,12 @@
6423
6433
  }
6424
6434
  function parseProps(options) {
6425
6435
  const { el, id, data: data$1 } = options;
6426
- return ["delay", "title"].reduce((obj, key) => ({ [key]: data(el, key), ...obj }), {
6436
+ return {
6437
+ title: data(el, "title"),
6438
+ delay: data(el, "delay"),
6427
6439
  ...parseOptions(data(el, id), ["title"]),
6428
6440
  ...data$1
6429
- });
6441
+ };
6430
6442
  }
6431
6443
 
6432
6444
  var upload = {
@@ -6728,6 +6740,7 @@
6728
6740
  globalApi(App);
6729
6741
  instanceApi(App);
6730
6742
 
6743
+ const wrappers = /* @__PURE__ */ new WeakMap();
6731
6744
  var Accordion = {
6732
6745
  mixins: [Class, Togglable],
6733
6746
  props: {
@@ -6757,10 +6770,12 @@
6757
6770
  return this.items.map((item) => $(toggle, item));
6758
6771
  },
6759
6772
  contents({ content }) {
6760
- return this.items.map((item) => {
6761
- var _a;
6762
- return ((_a = item._wrapper) == null ? void 0 : _a.firstElementChild) || $(content, item);
6763
- });
6773
+ return this.items.map(
6774
+ (item) => {
6775
+ var _a;
6776
+ return ((_a = wrappers.get(item)) == null ? void 0 : _a.firstElementChild) || $(content, item);
6777
+ }
6778
+ );
6764
6779
  }
6765
6780
  },
6766
6781
  watch: {
@@ -6867,12 +6882,12 @@
6867
6882
  el && (el.hidden = hide2);
6868
6883
  }
6869
6884
  async function transition(el, show, { content, duration, velocity, transition: transition2 }) {
6870
- var _a;
6871
- content = ((_a = el._wrapper) == null ? void 0 : _a.firstElementChild) || $(content, el);
6872
- if (!el._wrapper) {
6873
- el._wrapper = wrapAll(content, "<div>");
6885
+ let wrapper = wrappers.get(el);
6886
+ content = (wrapper == null ? void 0 : wrapper.firstElementChild) || $(content, el);
6887
+ if (!wrapper) {
6888
+ wrapper = wrapAll(content, "<div>");
6889
+ wrappers.set(el, wrapper);
6874
6890
  }
6875
- const wrapper = el._wrapper;
6876
6891
  css(wrapper, "overflow", "hidden");
6877
6892
  const currentHeight = toFloat(css(wrapper, "height"));
6878
6893
  await Transition.cancel(wrapper);
@@ -6883,7 +6898,7 @@
6883
6898
  css(wrapper, "height", currentHeight);
6884
6899
  await Transition.start(wrapper, { height: show ? endHeight : 0 }, duration, transition2);
6885
6900
  unwrap(content);
6886
- delete el._wrapper;
6901
+ wrappers.delete(el);
6887
6902
  if (!show) {
6888
6903
  hide(content, true);
6889
6904
  }
@@ -7444,32 +7459,21 @@
7444
7459
  });
7445
7460
  }
7446
7461
  function listenForEscClose(drop) {
7447
- return on(document, "keydown", (e) => {
7448
- if (e.keyCode === keyMap.ESC) {
7449
- drop.hide(false);
7450
- }
7451
- });
7462
+ return onEscape(() => drop.hide(false));
7452
7463
  }
7453
7464
  function listenForScrollClose(drop) {
7454
7465
  return listenForScroll(drop, () => drop.hide(false));
7455
7466
  }
7456
7467
  function listenForBackgroundClose(drop) {
7457
- return on(document, pointerDown$1, ({ target }) => {
7458
- if (drop.$el.contains(target)) {
7459
- return;
7460
- }
7461
- once(
7462
- document,
7463
- `${pointerUp$1} ${pointerCancel} scroll`,
7464
- ({ defaultPrevented, type, target: newTarget }) => {
7465
- var _a;
7466
- if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {
7467
- drop.hide(false);
7468
- }
7469
- },
7470
- true
7471
- );
7472
- });
7468
+ return onOutsidePointer(
7469
+ (target) => {
7470
+ var _a;
7471
+ if (!((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {
7472
+ drop.hide(false);
7473
+ }
7474
+ },
7475
+ (target) => !drop.$el.contains(target)
7476
+ );
7473
7477
  }
7474
7478
 
7475
7479
  var Dropnav = {
@@ -7512,7 +7516,7 @@
7512
7516
  return null;
7513
7517
  }
7514
7518
  dropbar = this._dropbar || query(dropbar, this.$el) || $(`+ .${this.clsDropbar}`, this.$el);
7515
- return dropbar ? dropbar : this._dropbar = $("<div>");
7519
+ return dropbar || (this._dropbar = $("<div>"));
7516
7520
  },
7517
7521
  dropContainer(_, $el) {
7518
7522
  return this.container || $el;
@@ -7826,7 +7830,7 @@
7826
7830
  let option;
7827
7831
  const prop = isInput(target) ? "value" : "textContent";
7828
7832
  const prev = target[prop];
7829
- const value = ((_a = input.files) == null ? void 0 : _a[0]) ? input.files[0].name : matches(input, "select") && (option = $$("option", input).filter((el) => el.selected)[0]) ? option.textContent : input.value;
7833
+ const value = ((_a = input.files) == null ? void 0 : _a[0]) ? input.files[0].name : matches(input, "select") && (option = $$("option", input).find((el) => el.selected)) ? option.textContent : input.value;
7830
7834
  if (prev !== value) {
7831
7835
  target[prop] = value;
7832
7836
  }
@@ -8273,7 +8277,7 @@
8273
8277
  if (icon && includes(svg, "<symbol")) {
8274
8278
  svg = parseSymbols(svg)[icon] || svg;
8275
8279
  }
8276
- return toNodes(fragment(svg)).filter(isElement)[0];
8280
+ return toNodes(fragment(svg)).find(isElement);
8277
8281
  }
8278
8282
  const symbolRe = /<symbol([^]*?id=(['"])(.+?)\2[^]*?<\/)symbol>/g;
8279
8283
  const parseSymbols = memoize(function(svg) {
@@ -9025,11 +9029,12 @@
9025
9029
  ],
9026
9030
  update: {
9027
9031
  read() {
9028
- const overflow = [];
9029
- for (const prop of ["Width", "Height"]) {
9030
- overflow.push(this.$el[`scroll${prop}`] - this.$el[`client${prop}`]);
9031
- }
9032
- return { overflow };
9032
+ return {
9033
+ overflow: [
9034
+ this.$el.scrollWidth - this.$el.clientWidth,
9035
+ this.$el.scrollHeight - this.$el.clientHeight
9036
+ ]
9037
+ };
9033
9038
  },
9034
9039
  write({ overflow }) {
9035
9040
  for (let i = 0; i < 2; i++) {