uikit 3.20.8 → 3.20.9-dev.2cb573699

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 (94) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/css/uikit-core-rtl.css +18 -1
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +18 -1
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +18 -1
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +18 -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 +2 -4
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +16 -29
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +17 -32
  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 +1 -1
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +4 -10
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +21 -27
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +4 -10
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +20 -26
  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 +121 -211
  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 +155 -260
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/component.js +1 -1
  44. package/src/js/api/events.js +1 -1
  45. package/src/js/components/filter.js +1 -3
  46. package/src/js/components/internal/slider-transitioner.js +4 -0
  47. package/src/js/components/lightbox-panel.js +1 -3
  48. package/src/js/components/lightbox.js +1 -3
  49. package/src/js/components/slider-parallax.js +3 -9
  50. package/src/js/components/slider.js +1 -1
  51. package/src/js/core/accordion.js +2 -6
  52. package/src/js/core/alert.js +1 -3
  53. package/src/js/core/cover.js +6 -12
  54. package/src/js/core/drop.js +5 -13
  55. package/src/js/core/dropnav.js +14 -42
  56. package/src/js/core/form-custom.js +1 -3
  57. package/src/js/core/grid.js +4 -7
  58. package/src/js/core/height-match.js +1 -3
  59. package/src/js/core/height-placeholder.js +1 -1
  60. package/src/js/core/inverse.js +30 -3
  61. package/src/js/core/modal.js +2 -1
  62. package/src/js/core/navbar.js +2 -6
  63. package/src/js/core/offcanvas.js +1 -3
  64. package/src/js/core/scrollspy-nav.js +2 -2
  65. package/src/js/core/scrollspy.js +1 -1
  66. package/src/js/core/sticky.js +23 -34
  67. package/src/js/core/switcher.js +7 -18
  68. package/src/js/core/toggle.js +6 -18
  69. package/src/js/core/video.js +6 -6
  70. package/src/js/mixin/internal/animate-slide.js +1 -1
  71. package/src/js/mixin/internal/slideshow-transitioner.js +4 -0
  72. package/src/js/mixin/modal.js +1 -3
  73. package/src/js/mixin/slider-autoplay.js +1 -3
  74. package/src/js/mixin/slider-drag.js +2 -6
  75. package/src/js/mixin/slider-nav.js +4 -12
  76. package/src/js/mixin/slider-parallax.js +7 -3
  77. package/src/js/mixin/slider.js +3 -1
  78. package/src/js/util/viewport.js +8 -8
  79. package/src/less/components/card.less +3 -0
  80. package/src/less/components/dropbar.less +1 -0
  81. package/src/less/components/dropdown.less +1 -0
  82. package/src/less/components/navbar.less +1 -0
  83. package/src/less/components/offcanvas.less +1 -0
  84. package/src/less/components/overlay.less +2 -0
  85. package/src/less/components/section.less +5 -0
  86. package/src/less/components/tile.less +4 -0
  87. package/src/scss/components/card.scss +3 -0
  88. package/src/scss/components/dropbar.scss +1 -0
  89. package/src/scss/components/dropdown.scss +1 -0
  90. package/src/scss/components/navbar.scss +1 -0
  91. package/src/scss/components/offcanvas.scss +1 -0
  92. package/src/scss/components/overlay.scss +2 -0
  93. package/src/scss/components/section.scss +5 -0
  94. package/src/scss/components/tile.scss +4 -0
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.20.8 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
1
+ /*! UIkit 3.20.9-dev.2cb573699 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -310,7 +310,7 @@
310
310
  const isVisibleFn = inBrowser && Element.prototype.checkVisibility || function() {
311
311
  return this.offsetWidth || this.offsetHeight || this.getClientRects().length;
312
312
  };
313
- function isVisible(element) {
313
+ function isVisible$1(element) {
314
314
  return toNodes(element).some((element2) => isVisibleFn.call(element2));
315
315
  }
316
316
  const selInput = "input,select,textarea,button";
@@ -1199,7 +1199,7 @@
1199
1199
  }
1200
1200
 
1201
1201
  function isInView(element, offsetTop = 0, offsetLeft = 0) {
1202
- if (!isVisible(element)) {
1202
+ if (!isVisible$1(element)) {
1203
1203
  return false;
1204
1204
  }
1205
1205
  return intersectRect(
@@ -1215,7 +1215,7 @@
1215
1215
  );
1216
1216
  }
1217
1217
  function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
1218
- const parents2 = isVisible(element) ? scrollParents(element, false, ["hidden"]) : [];
1218
+ const parents2 = isVisible$1(element) ? scrollParents(element, false, ["hidden"]) : [];
1219
1219
  return parents2.reduce(
1220
1220
  (fn, scrollElement, i) => {
1221
1221
  const { scrollTop, scrollHeight, offsetHeight } = scrollElement;
@@ -1274,7 +1274,7 @@
1274
1274
  }
1275
1275
  }
1276
1276
  function scrolledOver(element, startOffset = 0, endOffset = 0) {
1277
- if (!isVisible(element)) {
1277
+ if (!isVisible$1(element)) {
1278
1278
  return 0;
1279
1279
  }
1280
1280
  const scrollElement = scrollParent(element, true);
@@ -1324,7 +1324,7 @@
1324
1324
  ["height", "y", "top", "bottom"]
1325
1325
  ]) {
1326
1326
  if (isWindow(viewportElement)) {
1327
- viewportElement = scrollElement.ownerDocument;
1327
+ viewportElement = viewportElement.document;
1328
1328
  } else {
1329
1329
  rect[start] += toFloat(css(viewportElement, `border-${start}-width`));
1330
1330
  }
@@ -1336,17 +1336,16 @@
1336
1336
  }
1337
1337
  function getCoveringElement(target) {
1338
1338
  const { left, width, top } = dimensions(target);
1339
- for (const topPosition of [0, top]) {
1340
- const coverEl = target.ownerDocument.elementsFromPoint(left + width / 2, topPosition).find(
1341
- (el) => !el.contains(target) && // If e.g. Offcanvas is not yet closed
1339
+ for (const position of top ? [0, top] : [0]) {
1340
+ for (const el of toWindow(target).document.elementsFromPoint(left + width / 2, position)) {
1341
+ if (!el.contains(target) && // If e.g. Offcanvas is not yet closed
1342
1342
  !hasClass(el, "uk-togglable-leave") && (hasPosition(el, "fixed") && zIndex(
1343
1343
  parents(target).reverse().find(
1344
1344
  (parent2) => !parent2.contains(el) && !hasPosition(parent2, "static")
1345
1345
  )
1346
- ) < zIndex(el) || hasPosition(el, "sticky") && parent(el).contains(target))
1347
- );
1348
- if (coverEl) {
1349
- return coverEl;
1346
+ ) < zIndex(el) || hasPosition(el, "sticky") && parent(el).contains(target))) {
1347
+ return el;
1348
+ }
1350
1349
  }
1351
1350
  }
1352
1351
  }
@@ -1611,7 +1610,7 @@
1611
1610
  isTouch: isTouch,
1612
1611
  isUndefined: isUndefined,
1613
1612
  isVideo: isVideo,
1614
- isVisible: isVisible,
1613
+ isVisible: isVisible$1,
1615
1614
  isVoidElement: isVoidElement,
1616
1615
  isWindow: isWindow,
1617
1616
  last: last,
@@ -1839,7 +1838,7 @@
1839
1838
  function registerEvent(instance, event, key) {
1840
1839
  let { name, el, handler, capture, passive, delegate, filter, self } = isPlainObject(event) ? event : { name: key, handler: event };
1841
1840
  el = isFunction(el) ? el.call(instance, instance) : el || instance.$el;
1842
- if (!el || isArray(el) && !el.length || filter && !filter.call(instance)) {
1841
+ if (!el || isArray(el) && !el.length || filter && !filter.call(instance, instance)) {
1843
1842
  return;
1844
1843
  }
1845
1844
  instance._events.push(
@@ -2172,7 +2171,7 @@
2172
2171
  };
2173
2172
  App.util = util;
2174
2173
  App.options = {};
2175
- App.version = "3.20.8";
2174
+ App.version = "3.20.9-dev.2cb573699";
2176
2175
 
2177
2176
  const PREFIX = "uk-";
2178
2177
  const DATA = "__uikit__";
@@ -2227,7 +2226,7 @@
2227
2226
  function detachFromElement(element, instance) {
2228
2227
  var _a;
2229
2228
  (_a = element[DATA]) == null ? true : delete _a[instance.$options.name];
2230
- if (!isEmpty(element[DATA])) {
2229
+ if (isEmpty(element[DATA])) {
2231
2230
  delete element[DATA];
2232
2231
  }
2233
2232
  }
@@ -2550,7 +2549,7 @@
2550
2549
  },
2551
2550
  isToggled(el = this.$el) {
2552
2551
  el = toNode(el);
2553
- return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(" ")[0]) : isVisible(el);
2552
+ return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(" ")[0]) : isVisible$1(el);
2554
2553
  },
2555
2554
  _toggle(el, toggled) {
2556
2555
  if (!el) {
@@ -2565,7 +2564,7 @@
2565
2564
  changed = toggled === el.hidden;
2566
2565
  changed && (el.hidden = !toggled);
2567
2566
  }
2568
- $$("[autofocus]", el).some((el2) => isVisible(el2) ? el2.focus() || true : el2.blur());
2567
+ $$("[autofocus]", el).some((el2) => isVisible$1(el2) ? el2.focus() || true : el2.blur());
2569
2568
  if (changed) {
2570
2569
  trigger(el, "toggled", [toggled, this]);
2571
2570
  }
@@ -2751,9 +2750,7 @@
2751
2750
  events: [
2752
2751
  {
2753
2752
  name: "click keydown",
2754
- delegate() {
2755
- return `${this.targets} ${this.$props.toggle}`;
2756
- },
2753
+ delegate: ({ targets, $props }) => `${targets} ${$props.toggle}`,
2757
2754
  async handler(e) {
2758
2755
  var _a;
2759
2756
  if (e.type === "keydown" && e.keyCode !== keyMap.SPACE) {
@@ -2769,9 +2766,7 @@
2769
2766
  {
2770
2767
  name: "shown hidden",
2771
2768
  self: true,
2772
- delegate() {
2773
- return this.targets;
2774
- },
2769
+ delegate: ({ targets }) => targets,
2775
2770
  handler() {
2776
2771
  this.$emit();
2777
2772
  }
@@ -2880,9 +2875,7 @@
2880
2875
  },
2881
2876
  events: {
2882
2877
  name: "click",
2883
- delegate() {
2884
- return this.selClose;
2885
- },
2878
+ delegate: ({ selClose }) => selClose,
2886
2879
  handler(e) {
2887
2880
  e.preventDefault();
2888
2881
  this.close();
@@ -2946,9 +2939,7 @@
2946
2939
  events: [
2947
2940
  {
2948
2941
  name: `${pointerEnter} focusin`,
2949
- filter() {
2950
- return includes(this.autoplay, "hover");
2951
- },
2942
+ filter: ({ autoplay }) => includes(autoplay, "hover"),
2952
2943
  handler(e) {
2953
2944
  if (!isTouch(e) || !isPlaying(this.$el)) {
2954
2945
  play(this.$el);
@@ -2959,9 +2950,7 @@
2959
2950
  },
2960
2951
  {
2961
2952
  name: `${pointerLeave} focusout`,
2962
- filter() {
2963
- return includes(this.autoplay, "hover");
2964
- },
2953
+ filter: ({ autoplay }) => includes(autoplay, "hover"),
2965
2954
  handler(e) {
2966
2955
  if (!isTouch(e)) {
2967
2956
  pause(this.$el);
@@ -2999,19 +2988,17 @@
2999
2988
  data: {
3000
2989
  automute: true
3001
2990
  },
3002
- events: {
3003
- "load loadedmetadata"() {
3004
- this.$emit("resize");
3005
- }
2991
+ created() {
2992
+ this.useObjectFit = isTag(this.$el, "img", "video");
3006
2993
  },
3007
2994
  observe: resize({
3008
- target: ({ $el }) => [getPositionedParent($el) || parent($el)],
3009
- filter: ({ $el }) => !useObjectFit($el)
2995
+ target: ({ $el }) => getPositionedParent($el) || parent($el),
2996
+ filter: ({ useObjectFit }) => !useObjectFit
3010
2997
  }),
3011
2998
  update: {
3012
2999
  read() {
3013
- if (useObjectFit(this.$el)) {
3014
- return;
3000
+ if (this.useObjectFit) {
3001
+ return false;
3015
3002
  }
3016
3003
  const { ratio, cover } = Dimensions;
3017
3004
  const { $el, width, height } = this;
@@ -3052,9 +3039,6 @@
3052
3039
  }
3053
3040
  }
3054
3041
  }
3055
- function useObjectFit(el) {
3056
- return isTag(el, "img", "video");
3057
- }
3058
3042
 
3059
3043
  var Container = {
3060
3044
  props: {
@@ -3256,7 +3240,7 @@
3256
3240
  this.tracker = new MouseTracker();
3257
3241
  },
3258
3242
  beforeConnect() {
3259
- this.clsDrop = this.$props.clsDrop || `uk-${this.$options.name}`;
3243
+ this.clsDrop = this.$props.clsDrop || this.$options.id;
3260
3244
  },
3261
3245
  connected() {
3262
3246
  addClass(this.$el, "uk-drop", this.clsDrop);
@@ -3275,9 +3259,7 @@
3275
3259
  events: [
3276
3260
  {
3277
3261
  name: "click",
3278
- delegate() {
3279
- return ".uk-drop-close";
3280
- },
3262
+ delegate: () => ".uk-drop-close",
3281
3263
  handler(e) {
3282
3264
  e.preventDefault();
3283
3265
  this.hide(false);
@@ -3285,9 +3267,7 @@
3285
3267
  },
3286
3268
  {
3287
3269
  name: "click",
3288
- delegate() {
3289
- return 'a[href*="#"]';
3290
- },
3270
+ delegate: () => 'a[href*="#"]',
3291
3271
  handler({ defaultPrevented, current }) {
3292
3272
  const { hash } = current;
3293
3273
  if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {
@@ -3333,9 +3313,7 @@
3333
3313
  },
3334
3314
  {
3335
3315
  name: `${pointerEnter} focusin`,
3336
- filter() {
3337
- return includes(this.mode, "hover");
3338
- },
3316
+ filter: ({ mode }) => includes(mode, "hover"),
3339
3317
  handler(e) {
3340
3318
  if (!isTouch(e)) {
3341
3319
  this.clearTimers();
@@ -3344,9 +3322,7 @@
3344
3322
  },
3345
3323
  {
3346
3324
  name: `${pointerLeave} focusout`,
3347
- filter() {
3348
- return includes(this.mode, "hover");
3349
- },
3325
+ filter: ({ mode }) => includes(mode, "hover"),
3350
3326
  handler(e) {
3351
3327
  if (!isTouch(e) && e.relatedTarget) {
3352
3328
  this.hide();
@@ -3657,9 +3633,7 @@
3657
3633
  events: [
3658
3634
  {
3659
3635
  name: "mouseover focusin",
3660
- delegate() {
3661
- return this.selNavItem;
3662
- },
3636
+ delegate: ({ selNavItem }) => selNavItem,
3663
3637
  handler({ current }) {
3664
3638
  const active2 = this.getActive();
3665
3639
  if (active2 && includes(active2.mode, "hover") && active2.targetEl && !current.contains(active2.targetEl) && !active2.isDelaying) {
@@ -3670,9 +3644,7 @@
3670
3644
  {
3671
3645
  name: "keydown",
3672
3646
  self: true,
3673
- delegate() {
3674
- return this.selNavItem;
3675
- },
3647
+ delegate: ({ selNavItem }) => selNavItem,
3676
3648
  handler(e) {
3677
3649
  var _a;
3678
3650
  const { current, keyCode } = e;
@@ -3686,12 +3658,8 @@
3686
3658
  },
3687
3659
  {
3688
3660
  name: "keydown",
3689
- el() {
3690
- return this.dropContainer;
3691
- },
3692
- delegate() {
3693
- return `.${this.clsDrop}`;
3694
- },
3661
+ el: ({ dropContainer }) => dropContainer,
3662
+ delegate: ({ clsDrop }) => `.${clsDrop}`,
3695
3663
  handler(e) {
3696
3664
  var _a;
3697
3665
  const { current, keyCode } = e;
@@ -3725,12 +3693,8 @@
3725
3693
  },
3726
3694
  {
3727
3695
  name: "mouseleave",
3728
- el() {
3729
- return this.dropbar;
3730
- },
3731
- filter() {
3732
- return this.dropbar;
3733
- },
3696
+ el: ({ dropbar }) => dropbar,
3697
+ filter: ({ dropbar }) => dropbar,
3734
3698
  handler() {
3735
3699
  const active2 = this.getActive();
3736
3700
  if (active2 && includes(active2.mode, "hover") && !this.dropdowns.some((el) => matches(el, ":hover"))) {
@@ -3740,12 +3704,8 @@
3740
3704
  },
3741
3705
  {
3742
3706
  name: "beforeshow",
3743
- el() {
3744
- return this.dropContainer;
3745
- },
3746
- filter() {
3747
- return this.dropbar;
3748
- },
3707
+ el: ({ dropContainer }) => dropContainer,
3708
+ filter: ({ dropbar }) => dropbar,
3749
3709
  handler({ target }) {
3750
3710
  if (!this.isDropbarDrop(target)) {
3751
3711
  return;
@@ -3758,12 +3718,8 @@
3758
3718
  },
3759
3719
  {
3760
3720
  name: "show",
3761
- el() {
3762
- return this.dropContainer;
3763
- },
3764
- filter() {
3765
- return this.dropbar;
3766
- },
3721
+ el: ({ dropContainer }) => dropContainer,
3722
+ filter: ({ dropbar }) => dropbar,
3767
3723
  handler({ target }) {
3768
3724
  if (!this.isDropbarDrop(target)) {
3769
3725
  return;
@@ -3788,12 +3744,8 @@
3788
3744
  },
3789
3745
  {
3790
3746
  name: "beforehide",
3791
- el() {
3792
- return this.dropContainer;
3793
- },
3794
- filter() {
3795
- return this.dropbar;
3796
- },
3747
+ el: ({ dropContainer }) => dropContainer,
3748
+ filter: ({ dropbar }) => dropbar,
3797
3749
  handler(e) {
3798
3750
  const active2 = this.getActive();
3799
3751
  if (matches(this.dropbar, ":hover") && active2.$el === e.target && this.isDropbarDrop(active2.$el) && includes(active2.mode, "hover") && active2.isDelayedHide && !this.items.some((el) => active2.targetEl !== el && matches(el, ":focus"))) {
@@ -3803,12 +3755,8 @@
3803
3755
  },
3804
3756
  {
3805
3757
  name: "hide",
3806
- el() {
3807
- return this.dropContainer;
3808
- },
3809
- filter() {
3810
- return this.dropbar;
3811
- },
3758
+ el: ({ dropContainer }) => dropContainer,
3759
+ filter: ({ dropbar }) => dropbar,
3812
3760
  handler({ target }) {
3813
3761
  var _a;
3814
3762
  if (!this.isDropbarDrop(target)) {
@@ -3939,9 +3887,7 @@
3939
3887
  },
3940
3888
  {
3941
3889
  name: "reset",
3942
- el() {
3943
- return this.$el.closest("form");
3944
- },
3890
+ el: ({ $el }) => $el.closest("form"),
3945
3891
  handler() {
3946
3892
  this.$emit();
3947
3893
  }
@@ -3998,7 +3944,7 @@
3998
3944
  (el, i) => i && elements[i - 1].offsetParent !== el.offsetParent
3999
3945
  );
4000
3946
  for (const el of elements) {
4001
- if (!isVisible(el)) {
3947
+ if (!isVisible$1(el)) {
4002
3948
  continue;
4003
3949
  }
4004
3950
  const offset = getOffset(el, withOffset);
@@ -4131,11 +4077,8 @@
4131
4077
  },
4132
4078
  {
4133
4079
  read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {
4134
- if (scrollColumns && positionedAbsolute(rows)) {
4135
- return false;
4136
- }
4137
4080
  return {
4138
- scrolled: scrollColumns ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
4081
+ scrolled: scrollColumns && !positionedAbsolute(rows) ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
4139
4082
  };
4140
4083
  },
4141
4084
  write({ columns, scrolled, scrollColumns, translates }) {
@@ -4223,9 +4166,7 @@
4223
4166
  events: {
4224
4167
  // Hidden elements may change height when fonts load
4225
4168
  name: "loadingdone",
4226
- el() {
4227
- return document.fonts;
4228
- },
4169
+ el: () => document.fonts,
4229
4170
  handler() {
4230
4171
  this.$emit("resize");
4231
4172
  }
@@ -4257,7 +4198,7 @@
4257
4198
  }
4258
4199
  function getHeight(element) {
4259
4200
  const style = pick(element.style, ["display", "minHeight"]);
4260
- if (!isVisible(element)) {
4201
+ if (!isVisible$1(element)) {
4261
4202
  css(element, "display", "block", "important");
4262
4203
  }
4263
4204
  css(element, "minHeight", "");
@@ -4283,7 +4224,7 @@
4283
4224
  observe: resize({ target: ({ target }) => target }),
4284
4225
  update: {
4285
4226
  read() {
4286
- return { height: this.target.offsetHeight };
4227
+ return this.target ? { height: this.target.offsetHeight } : false;
4287
4228
  },
4288
4229
  write({ height }) {
4289
4230
  css(this.$el, { minHeight: height });
@@ -4312,7 +4253,7 @@
4312
4253
  ],
4313
4254
  update: {
4314
4255
  read() {
4315
- if (!isVisible(this.$el)) {
4256
+ if (!isVisible$1(this.$el)) {
4316
4257
  return false;
4317
4258
  }
4318
4259
  let minHeight = "";
@@ -4857,11 +4798,11 @@
4857
4798
  let last;
4858
4799
  for (const percent of [0.25, 0.5, 0.75]) {
4859
4800
  const elements = target.ownerDocument.elementsFromPoint(
4860
- Math.max(0, left) + width * percent,
4861
- Math.max(0, top) + height / 2
4801
+ Math.max(0, left + width * percent),
4802
+ Math.max(0, top + height / 2)
4862
4803
  );
4863
4804
  for (const element of elements) {
4864
- if (target.contains(element) || element.closest('[class*="-leave"]') && elements.some((el) => element !== el && matches(el, '[class*="-enter"]'))) {
4805
+ if (target.contains(element) || !isVisible(element) || element.closest('[class*="-leave"]') && elements.some((el) => element !== el && matches(el, '[class*="-enter"]'))) {
4865
4806
  continue;
4866
4807
  }
4867
4808
  const color = css(element, "--uk-inverse");
@@ -4876,6 +4817,18 @@
4876
4817
  }
4877
4818
  return last ? `uk-${last}` : "";
4878
4819
  }
4820
+ function isVisible(element) {
4821
+ if (css(element, "visibility") !== "visible") {
4822
+ return false;
4823
+ }
4824
+ while (element) {
4825
+ if (css(element, "opacity") === "0") {
4826
+ return false;
4827
+ }
4828
+ element = parent(element);
4829
+ }
4830
+ return true;
4831
+ }
4879
4832
 
4880
4833
  var Media = {
4881
4834
  props: {
@@ -4996,9 +4949,7 @@
4996
4949
  events: [
4997
4950
  {
4998
4951
  name: "click",
4999
- delegate() {
5000
- return `${this.selClose},a[href*="#"]`;
5001
- },
4952
+ delegate: ({ selClose }) => `${selClose},a[href*="#"]`,
5002
4953
  handler(e) {
5003
4954
  const { current, defaultPrevented } = e;
5004
4955
  const { hash } = current;
@@ -5241,13 +5192,14 @@
5241
5192
  };
5242
5193
  modal.prompt = function(message, value, options) {
5243
5194
  const promise = openDialog(
5244
- ({ i18n }) => `<form class="uk-form-stacked"> <div class="uk-modal-body"> <label>${isString(message) ? message : html(message)}</label> <input class="uk-input" value="${value || ""}" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">${i18n.cancel}</button> <button class="uk-button uk-button-primary">${i18n.ok}</button> </div> </form>`,
5195
+ ({ i18n }) => `<form class="uk-form-stacked"> <div class="uk-modal-body"> <label>${isString(message) ? message : html(message)}</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">${i18n.cancel}</button> <button class="uk-button uk-button-primary">${i18n.ok}</button> </div> </form>`,
5245
5196
  options,
5246
5197
  () => null,
5247
5198
  () => input.value
5248
5199
  );
5249
5200
  const { $el } = promise.dialog;
5250
5201
  const input = $("input", $el);
5202
+ input.value = value || "";
5251
5203
  on($el, "show", () => input.select());
5252
5204
  return promise;
5253
5205
  };
@@ -5315,9 +5267,7 @@
5315
5267
  events: [
5316
5268
  {
5317
5269
  name: "show",
5318
- el() {
5319
- return this.dropContainer;
5320
- },
5270
+ el: ({ dropContainer }) => dropContainer,
5321
5271
  handler({ target }) {
5322
5272
  if (this.getTransparentMode(target) === "remove" && hasClass(this.navbarContainer, clsNavbarTransparent)) {
5323
5273
  removeClass(this.navbarContainer, clsNavbarTransparent);
@@ -5327,9 +5277,7 @@
5327
5277
  },
5328
5278
  {
5329
5279
  name: "hide",
5330
- el() {
5331
- return this.dropContainer;
5332
- },
5280
+ el: ({ dropContainer }) => dropContainer,
5333
5281
  async handler() {
5334
5282
  await awaitMacroTask();
5335
5283
  if (!this.getActive() && this._transparent) {
@@ -5400,7 +5348,7 @@
5400
5348
  observe: swipe({ filter: ({ swiping }) => swiping }),
5401
5349
  update: {
5402
5350
  read() {
5403
- if (this.isToggled() && !isVisible(this.$el)) {
5351
+ if (this.isToggled() && !isVisible$1(this.$el)) {
5404
5352
  this.hide();
5405
5353
  }
5406
5354
  },
@@ -5411,9 +5359,7 @@
5411
5359
  name: "touchmove",
5412
5360
  self: true,
5413
5361
  passive: false,
5414
- filter() {
5415
- return this.overlay;
5416
- },
5362
+ filter: ({ overlay }) => overlay,
5417
5363
  handler(e) {
5418
5364
  e.cancelable && e.preventDefault();
5419
5365
  }
@@ -5507,7 +5453,7 @@
5507
5453
  }),
5508
5454
  update: {
5509
5455
  read() {
5510
- if (!this.content || !this.container || !isVisible(this.$el)) {
5456
+ if (!this.content || !this.container || !isVisible$1(this.$el)) {
5511
5457
  return false;
5512
5458
  }
5513
5459
  return {
@@ -5664,12 +5610,12 @@
5664
5610
  ],
5665
5611
  methods: {
5666
5612
  toggle(el, inview) {
5667
- var _a;
5668
- const state = this.elementData.get(el);
5613
+ var _a, _b;
5614
+ const state = (_a = this.elementData) == null ? void 0 : _a.get(el);
5669
5615
  if (!state) {
5670
5616
  return;
5671
5617
  }
5672
- (_a = state.off) == null ? void 0 : _a.call(state);
5618
+ (_b = state.off) == null ? void 0 : _b.call(state);
5673
5619
  css(el, "opacity", !inview && this.hidden ? 0 : "");
5674
5620
  toggleClass(el, this.inViewClass, inview);
5675
5621
  toggleClass(el, state.cls);
@@ -5723,7 +5669,7 @@
5723
5669
  read() {
5724
5670
  const targets = this.links.map(getTargetedElement).filter(Boolean);
5725
5671
  const { length } = targets;
5726
- if (!length || !isVisible(this.$el)) {
5672
+ if (!length || !isVisible$1(this.$el)) {
5727
5673
  return false;
5728
5674
  }
5729
5675
  const scrollElement = scrollParent(targets, true);
@@ -5734,9 +5680,8 @@
5734
5680
  if (scrollTop === max) {
5735
5681
  active = length - 1;
5736
5682
  } else {
5683
+ const offsetBy = this.offset + offset(getCoveringElement()).height;
5737
5684
  for (let i = 0; i < targets.length; i++) {
5738
- const fixedEl = getCoveringElement(targets[i]);
5739
- const offsetBy = this.offset + (fixedEl ? offset(fixedEl).height : 0);
5740
5685
  if (offset(targets[i]).top - viewport.top - offsetBy > 0) {
5741
5686
  break;
5742
5687
  }
@@ -5819,29 +5764,23 @@
5819
5764
  this.placeholder = null;
5820
5765
  },
5821
5766
  observe: [
5822
- viewport({
5823
- handler() {
5824
- if (toPx("100vh", "height") !== this._data.viewport) {
5825
- this.$emit("resize");
5826
- }
5827
- }
5828
- }),
5767
+ viewport(),
5829
5768
  scroll$1({ target: () => document.scrollingElement }),
5830
5769
  resize({
5831
- target: () => document.scrollingElement,
5832
- options: { box: "content-box" }
5833
- }),
5834
- resize()
5770
+ target: ({ $el }) => [$el, parent($el), document.scrollingElement],
5771
+ handler(entries) {
5772
+ this.$emit(
5773
+ this._data.resized && entries.some(({ target }) => target === parent(this.$el)) ? "update" : "resize"
5774
+ );
5775
+ this._data.resized = true;
5776
+ }
5777
+ })
5835
5778
  ],
5836
5779
  events: [
5837
5780
  {
5838
5781
  name: "load hashchange popstate",
5839
- el() {
5840
- return window;
5841
- },
5842
- filter() {
5843
- return this.targetOffset !== false;
5844
- },
5782
+ el: () => window,
5783
+ filter: ({ targetOffset }) => targetOffset !== false,
5845
5784
  handler() {
5846
5785
  const { scrollingElement } = document;
5847
5786
  if (!location.hash || scrollingElement.scrollTop === 0) {
@@ -5857,26 +5796,16 @@
5857
5796
  }
5858
5797
  });
5859
5798
  }
5860
- },
5861
- {
5862
- name: "transitionstart",
5863
- handler() {
5864
- this.transitionInProgress = once(
5865
- this.$el,
5866
- "transitionend transitioncancel",
5867
- () => this.transitionInProgress = null
5868
- );
5869
- }
5870
5799
  }
5871
5800
  ],
5872
5801
  update: [
5873
5802
  {
5874
- read({ height: height$1, width, margin, sticky }) {
5875
- this.inactive = !this.matchMedia || !isVisible(this.$el);
5803
+ read({ height: height$1, width, margin, sticky }, types) {
5804
+ this.inactive = !this.matchMedia || !isVisible$1(this.$el);
5876
5805
  if (this.inactive) {
5877
5806
  return;
5878
5807
  }
5879
- const hide = this.isFixed && !this.transitionInProgress;
5808
+ const hide = this.isFixed && types.has("update");
5880
5809
  if (hide) {
5881
5810
  preventTransition(this.target);
5882
5811
  this.hide();
@@ -5926,7 +5855,8 @@
5926
5855
  margin,
5927
5856
  top: offsetPosition(referenceElement)[0],
5928
5857
  sticky,
5929
- viewport: viewport2
5858
+ viewport: viewport2,
5859
+ maxScrollHeight
5930
5860
  };
5931
5861
  },
5932
5862
  write({ height, width, margin, offset, sticky }) {
@@ -5959,9 +5889,10 @@
5959
5889
  end,
5960
5890
  elHeight,
5961
5891
  height,
5962
- sticky
5892
+ sticky,
5893
+ maxScrollHeight
5963
5894
  }) {
5964
- const scroll2 = document.scrollingElement.scrollTop;
5895
+ const scroll2 = Math.min(document.scrollingElement.scrollTop, maxScrollHeight);
5965
5896
  const dir = prevScroll <= scroll2 ? "down" : "up";
5966
5897
  const referenceElement = this.isFixed ? this.placeholder : this.$el;
5967
5898
  return {
@@ -6118,13 +6049,16 @@
6118
6049
  function reset(el) {
6119
6050
  css(el, { position: "", top: "", marginTop: "", width: "" });
6120
6051
  }
6121
- function preventTransition(el) {
6122
- addClass(el, "uk-transition-disable");
6123
- requestAnimationFrame(() => removeClass(el, "uk-transition-disable"));
6052
+ const clsTransitionDisable = "uk-transition-disable";
6053
+ function preventTransition(element) {
6054
+ if (!hasClass(element, clsTransitionDisable)) {
6055
+ addClass(element, clsTransitionDisable);
6056
+ requestAnimationFrame(() => removeClass(element, clsTransitionDisable));
6057
+ }
6124
6058
  }
6125
6059
 
6126
6060
  function getMaxPathLength(el) {
6127
- return isVisible(el) ? Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => stroke.getTotalLength()))) : 0;
6061
+ return isVisible$1(el) ? Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => stroke.getTotalLength()))) : 0;
6128
6062
  }
6129
6063
 
6130
6064
  var svg = {
@@ -6292,9 +6226,7 @@
6292
6226
  events: [
6293
6227
  {
6294
6228
  name: "click keydown",
6295
- delegate() {
6296
- return this.toggle;
6297
- },
6229
+ delegate: ({ toggle }) => toggle,
6298
6230
  handler(e) {
6299
6231
  if (!matches(e.current, selDisabled) && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
6300
6232
  e.preventDefault();
@@ -6304,9 +6236,7 @@
6304
6236
  },
6305
6237
  {
6306
6238
  name: "keydown",
6307
- delegate() {
6308
- return this.toggle;
6309
- },
6239
+ delegate: ({ toggle }) => toggle,
6310
6240
  handler(e) {
6311
6241
  const { current, keyCode } = e;
6312
6242
  const isVertical = matches(this.$el, this.selVertical);
@@ -6324,12 +6254,8 @@
6324
6254
  },
6325
6255
  {
6326
6256
  name: "click",
6327
- el() {
6328
- return this.connects.concat(this.itemNav ? queryAll(this.itemNav, this.$el) : []);
6329
- },
6330
- delegate() {
6331
- return `[${this.attrItem}],[data-${this.attrItem}]`;
6332
- },
6257
+ el: ({ $el, connects, itemNav }) => connects.concat(itemNav ? queryAll(itemNav, $el) : []),
6258
+ delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,
6333
6259
  handler(e) {
6334
6260
  if (e.target.closest("a,button")) {
6335
6261
  e.preventDefault();
@@ -6339,12 +6265,8 @@
6339
6265
  },
6340
6266
  {
6341
6267
  name: "swipeRight swipeLeft",
6342
- filter() {
6343
- return this.swiping;
6344
- },
6345
- el() {
6346
- return this.connects;
6347
- },
6268
+ filter: ({ swiping }) => swiping,
6269
+ el: ({ connects }) => connects,
6348
6270
  handler({ type }) {
6349
6271
  this.show(endsWith(type, "Left") ? "next" : "previous");
6350
6272
  }
@@ -6463,9 +6385,7 @@
6463
6385
  events: [
6464
6386
  {
6465
6387
  name: pointerDown,
6466
- filter() {
6467
- return includes(this.mode, "hover");
6468
- },
6388
+ filter: ({ mode }) => includes(mode, "hover"),
6469
6389
  handler(e) {
6470
6390
  this._preventClick = null;
6471
6391
  if (!isTouch(e) || isBoolean(this._showState) || this.$el.disabled) {
@@ -6488,9 +6408,7 @@
6488
6408
  // mouseenter mouseleave are added because of Firefox bug,
6489
6409
  // where pointerleave is triggered immediately after pointerenter on scroll
6490
6410
  name: `mouseenter mouseleave ${pointerEnter} ${pointerLeave} focus blur`,
6491
- filter() {
6492
- return includes(this.mode, "hover");
6493
- },
6411
+ filter: ({ mode }) => includes(mode, "hover"),
6494
6412
  handler(e) {
6495
6413
  if (isTouch(e) || this.$el.disabled) {
6496
6414
  return;
@@ -6512,9 +6430,7 @@
6512
6430
  },
6513
6431
  {
6514
6432
  name: "keydown",
6515
- filter() {
6516
- return includes(this.mode, "click") && !isTag(this.$el, "input");
6517
- },
6433
+ filter: ({ $el, mode }) => includes(mode, "click") && !isTag($el, "input"),
6518
6434
  handler(e) {
6519
6435
  if (e.keyCode === KEY_SPACE) {
6520
6436
  e.preventDefault();
@@ -6524,9 +6440,7 @@
6524
6440
  },
6525
6441
  {
6526
6442
  name: "click",
6527
- filter() {
6528
- return ["click", "hover"].some((mode) => includes(this.mode, mode));
6529
- },
6443
+ filter: ({ mode }) => ["click", "hover"].some((m) => includes(mode, m)),
6530
6444
  handler(e) {
6531
6445
  let link;
6532
6446
  if (this._preventClick || e.target.closest('a[href="#"], a[href=""]') || (link = e.target.closest("a[href]")) && (!this.isToggled(this.target) || link.hash && matches(this.target, link.hash))) {
@@ -6539,12 +6453,8 @@
6539
6453
  },
6540
6454
  {
6541
6455
  name: "mediachange",
6542
- filter() {
6543
- return includes(this.mode, "media");
6544
- },
6545
- el() {
6546
- return this.target;
6547
- },
6456
+ filter: ({ mode }) => includes(mode, "media"),
6457
+ el: ({ target }) => target,
6548
6458
  handler(e, mediaObj) {
6549
6459
  if (mediaObj.matches ^ this.isToggled(this.target)) {
6550
6460
  this.toggle();