uikit 3.20.9-dev.a82d76e5b → 3.20.9-dev.e2e1b058d

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 (74) hide show
  1. package/CHANGELOG.md +1 -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 +2 -4
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +13 -28
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +18 -33
  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 +18 -26
  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 +17 -25
  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 +126 -228
  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 +161 -278
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/events.js +1 -1
  44. package/src/js/components/filter.js +1 -3
  45. package/src/js/components/internal/slider-transitioner.js +4 -0
  46. package/src/js/components/lightbox-panel.js +1 -3
  47. package/src/js/components/lightbox.js +5 -5
  48. package/src/js/components/slider-parallax.js +3 -9
  49. package/src/js/components/slider.js +1 -1
  50. package/src/js/core/accordion.js +2 -6
  51. package/src/js/core/alert.js +1 -3
  52. package/src/js/core/cover.js +6 -12
  53. package/src/js/core/drop.js +5 -13
  54. package/src/js/core/dropnav.js +14 -42
  55. package/src/js/core/form-custom.js +1 -3
  56. package/src/js/core/grid.js +4 -7
  57. package/src/js/core/height-match.js +1 -3
  58. package/src/js/core/inverse.js +5 -4
  59. package/src/js/core/navbar.js +2 -6
  60. package/src/js/core/offcanvas.js +1 -3
  61. package/src/js/core/scrollspy-nav.js +2 -2
  62. package/src/js/core/scrollspy.js +1 -1
  63. package/src/js/core/sticky.js +18 -28
  64. package/src/js/core/switcher.js +7 -18
  65. package/src/js/core/toggle.js +6 -18
  66. package/src/js/core/video.js +6 -6
  67. package/src/js/mixin/internal/slideshow-transitioner.js +4 -0
  68. package/src/js/mixin/modal.js +1 -3
  69. package/src/js/mixin/slider-autoplay.js +1 -3
  70. package/src/js/mixin/slider-drag.js +2 -6
  71. package/src/js/mixin/slider-nav.js +4 -12
  72. package/src/js/mixin/slider-parallax.js +7 -3
  73. package/src/js/util/fastdom.js +24 -25
  74. package/src/js/util/viewport.js +8 -8
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.20.9-dev.a82d76e5b | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
1
+ /*! UIkit 3.20.9-dev.e2e1b058d | 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$1(element) {
313
+ function isVisible(element) {
314
314
  return toNodes(element).some((element2) => isVisibleFn.call(element2));
315
315
  }
316
316
  const selInput = "input,select,textarea,button";
@@ -979,36 +979,35 @@
979
979
  return vh;
980
980
  }
981
981
 
982
- const fastdom = {
983
- reads: [],
984
- writes: [],
985
- read(task) {
986
- this.reads.push(task);
987
- scheduleFlush();
988
- return task;
989
- },
990
- write(task) {
991
- this.writes.push(task);
992
- scheduleFlush();
993
- return task;
994
- },
995
- clear(task) {
996
- remove(this.reads, task);
997
- remove(this.writes, task);
998
- },
999
- flush
1000
- };
982
+ const fastdom = { read, write, clear, flush };
983
+ const reads = [];
984
+ const writes = [];
985
+ function read(task) {
986
+ reads.push(task);
987
+ scheduleFlush();
988
+ return task;
989
+ }
990
+ function write(task) {
991
+ writes.push(task);
992
+ scheduleFlush();
993
+ return task;
994
+ }
995
+ function clear(task) {
996
+ remove(reads, task);
997
+ remove(writes, task);
998
+ }
999
+ let scheduled = false;
1001
1000
  function flush() {
1002
- runTasks(fastdom.reads);
1003
- runTasks(fastdom.writes.splice(0));
1004
- fastdom.scheduled = false;
1005
- if (fastdom.reads.length || fastdom.writes.length) {
1001
+ runTasks(reads);
1002
+ runTasks(writes.splice(0));
1003
+ scheduled = false;
1004
+ if (reads.length || writes.length) {
1006
1005
  scheduleFlush();
1007
1006
  }
1008
1007
  }
1009
1008
  function scheduleFlush() {
1010
- if (!fastdom.scheduled) {
1011
- fastdom.scheduled = true;
1009
+ if (!scheduled) {
1010
+ scheduled = true;
1012
1011
  queueMicrotask(flush);
1013
1012
  }
1014
1013
  }
@@ -1199,7 +1198,7 @@
1199
1198
  }
1200
1199
 
1201
1200
  function isInView(element, offsetTop = 0, offsetLeft = 0) {
1202
- if (!isVisible$1(element)) {
1201
+ if (!isVisible(element)) {
1203
1202
  return false;
1204
1203
  }
1205
1204
  return intersectRect(
@@ -1215,7 +1214,7 @@
1215
1214
  );
1216
1215
  }
1217
1216
  function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
1218
- const parents2 = isVisible$1(element) ? scrollParents(element, false, ["hidden"]) : [];
1217
+ const parents2 = isVisible(element) ? scrollParents(element, false, ["hidden"]) : [];
1219
1218
  return parents2.reduce(
1220
1219
  (fn, scrollElement, i) => {
1221
1220
  const { scrollTop, scrollHeight, offsetHeight } = scrollElement;
@@ -1274,7 +1273,7 @@
1274
1273
  }
1275
1274
  }
1276
1275
  function scrolledOver(element, startOffset = 0, endOffset = 0) {
1277
- if (!isVisible$1(element)) {
1276
+ if (!isVisible(element)) {
1278
1277
  return 0;
1279
1278
  }
1280
1279
  const scrollElement = scrollParent(element, true);
@@ -1324,7 +1323,7 @@
1324
1323
  ["height", "y", "top", "bottom"]
1325
1324
  ]) {
1326
1325
  if (isWindow(viewportElement)) {
1327
- viewportElement = scrollElement.ownerDocument;
1326
+ viewportElement = viewportElement.document;
1328
1327
  } else {
1329
1328
  rect[start] += toFloat(css(viewportElement, `border-${start}-width`));
1330
1329
  }
@@ -1336,17 +1335,16 @@
1336
1335
  }
1337
1336
  function getCoveringElement(target) {
1338
1337
  const { left, width, top } = dimensions$1(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
1338
+ for (const position of top ? [0, top] : [0]) {
1339
+ for (const el of toWindow(target).document.elementsFromPoint(left + width / 2, position)) {
1340
+ if (!el.contains(target) && // If e.g. Offcanvas is not yet closed
1342
1341
  !hasClass(el, "uk-togglable-leave") && (hasPosition(el, "fixed") && zIndex(
1343
1342
  parents(target).reverse().find(
1344
1343
  (parent2) => !parent2.contains(el) && !hasPosition(parent2, "static")
1345
1344
  )
1346
- ) < zIndex(el) || hasPosition(el, "sticky") && parent(el).contains(target))
1347
- );
1348
- if (coverEl) {
1349
- return coverEl;
1345
+ ) < zIndex(el) || hasPosition(el, "sticky") && parent(el).contains(target))) {
1346
+ return el;
1347
+ }
1350
1348
  }
1351
1349
  }
1352
1350
  }
@@ -1611,7 +1609,7 @@
1611
1609
  isTouch: isTouch,
1612
1610
  isUndefined: isUndefined,
1613
1611
  isVideo: isVideo,
1614
- isVisible: isVisible$1,
1612
+ isVisible: isVisible,
1615
1613
  isVoidElement: isVoidElement,
1616
1614
  isWindow: isWindow,
1617
1615
  last: last,
@@ -2065,7 +2063,7 @@
2065
2063
  (el, i) => i && elements[i - 1].offsetParent !== el.offsetParent
2066
2064
  );
2067
2065
  for (const el of elements) {
2068
- if (!isVisible$1(el)) {
2066
+ if (!isVisible(el)) {
2069
2067
  continue;
2070
2068
  }
2071
2069
  const offset = getOffset(el, withOffset);
@@ -2149,7 +2147,7 @@
2149
2147
  }
2150
2148
  function getProps$1(el, opacity) {
2151
2149
  const zIndex = css(el, "zIndex");
2152
- return isVisible$1(el) ? {
2150
+ return isVisible(el) ? {
2153
2151
  display: "",
2154
2152
  opacity: opacity ? css(el, "opacity") : "0",
2155
2153
  pointerEvents: "none",
@@ -2160,7 +2158,7 @@
2160
2158
  }
2161
2159
  function getTransitionProps(target, nodes, currentProps) {
2162
2160
  const propsTo = nodes.map(
2163
- (el, i) => parent(el) && i in currentProps ? currentProps[i] ? isVisible$1(el) ? getPositionWithMargin(el) : { opacity: 0 } : { opacity: isVisible$1(el) ? 1 : 0 } : false
2161
+ (el, i) => parent(el) && i in currentProps ? currentProps[i] ? isVisible(el) ? getPositionWithMargin(el) : { opacity: 0 } : { opacity: isVisible(el) ? 1 : 0 } : false
2164
2162
  );
2165
2163
  const propsFrom = propsTo.map((props, i) => {
2166
2164
  const from = parent(nodes[i]) === target && (currentProps[i] || getProps$1(nodes[i]));
@@ -2274,7 +2272,7 @@
2274
2272
  );
2275
2273
  }
2276
2274
  function getTransitionNodes(target) {
2277
- return getRows(children(target)).flat().filter(isVisible$1);
2275
+ return getRows(children(target)).flat().filter(isVisible);
2278
2276
  }
2279
2277
  function awaitTimeout(timeout) {
2280
2278
  return new Promise((resolve) => setTimeout(resolve, timeout));
@@ -2353,9 +2351,7 @@
2353
2351
  },
2354
2352
  events: {
2355
2353
  name: "click keydown",
2356
- delegate() {
2357
- return `[${this.attrItem}],[data-${this.attrItem}]`;
2358
- },
2354
+ delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,
2359
2355
  handler(e) {
2360
2356
  if (e.type === "keydown" && e.keyCode !== keyMap.SPACE) {
2361
2357
  return;
@@ -2572,7 +2568,7 @@
2572
2568
  },
2573
2569
  isToggled(el = this.$el) {
2574
2570
  el = toNode(el);
2575
- return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(" ")[0]) : isVisible$1(el);
2571
+ return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(" ")[0]) : isVisible(el);
2576
2572
  },
2577
2573
  _toggle(el, toggled) {
2578
2574
  if (!el) {
@@ -2587,7 +2583,7 @@
2587
2583
  changed = toggled === el.hidden;
2588
2584
  changed && (el.hidden = !toggled);
2589
2585
  }
2590
- $$("[autofocus]", el).some((el2) => isVisible$1(el2) ? el2.focus() || true : el2.blur());
2586
+ $$("[autofocus]", el).some((el2) => isVisible(el2) ? el2.focus() || true : el2.blur());
2591
2587
  if (changed) {
2592
2588
  trigger(el, "toggled", [toggled, this]);
2593
2589
  }
@@ -2740,9 +2736,7 @@
2740
2736
  events: [
2741
2737
  {
2742
2738
  name: "click",
2743
- delegate() {
2744
- return `${this.selClose},a[href*="#"]`;
2745
- },
2739
+ delegate: ({ selClose }) => `${selClose},a[href*="#"]`,
2746
2740
  handler(e) {
2747
2741
  const { current, defaultPrevented } = e;
2748
2742
  const { hash } = current;
@@ -2974,6 +2968,9 @@
2974
2968
  return this.show(duration, percent2, true);
2975
2969
  },
2976
2970
  translate(percent2) {
2971
+ if (percent2 === this.percent()) {
2972
+ return;
2973
+ }
2977
2974
  this.reset();
2978
2975
  const props2 = translate(percent2, dir);
2979
2976
  css(next, props2[1]);
@@ -3037,9 +3034,7 @@
3037
3034
  {
3038
3035
  name: "visibilitychange",
3039
3036
  el: () => document,
3040
- filter() {
3041
- return this.autoplay;
3042
- },
3037
+ filter: ({ autoplay }) => autoplay,
3043
3038
  handler() {
3044
3039
  if (document.hidden) {
3045
3040
  this.stopAutoplay();
@@ -3093,9 +3088,7 @@
3093
3088
  {
3094
3089
  name: pointerDown,
3095
3090
  passive: true,
3096
- delegate() {
3097
- return `${this.selList} > *`;
3098
- },
3091
+ delegate: ({ selList }) => `${selList} > *`,
3099
3092
  handler(e) {
3100
3093
  if (!this.draggable || this.parallax || !isTouch(e) && hasSelectableText(e.target) || e.target.closest(selInput) || e.button > 0 || this.length < 2) {
3101
3094
  return;
@@ -3112,9 +3105,7 @@
3112
3105
  {
3113
3106
  // iOS workaround for slider stopping if swiping fast
3114
3107
  name: pointerMove,
3115
- el() {
3116
- return this.list;
3117
- },
3108
+ el: ({ list }) => list,
3118
3109
  handler: noop,
3119
3110
  ...pointerOptions
3120
3111
  }
@@ -3329,7 +3320,7 @@
3329
3320
  function registerEvent(instance, event, key) {
3330
3321
  let { name, el, handler, capture, passive, delegate, filter, self } = isPlainObject(event) ? event : { name: key, handler: event };
3331
3322
  el = isFunction(el) ? el.call(instance, instance) : el || instance.$el;
3332
- if (!el || isArray(el) && !el.length || filter && !filter.call(instance)) {
3323
+ if (!el || isArray(el) && !el.length || filter && !filter.call(instance, instance)) {
3333
3324
  return;
3334
3325
  }
3335
3326
  instance._events.push(
@@ -3555,7 +3546,7 @@
3555
3546
  };
3556
3547
  App.util = util;
3557
3548
  App.options = {};
3558
- App.version = "3.20.9-dev.a82d76e5b";
3549
+ App.version = "3.20.9-dev.e2e1b058d";
3559
3550
 
3560
3551
  const PREFIX = "uk-";
3561
3552
  const DATA = "__uikit__";
@@ -3822,12 +3813,8 @@
3822
3813
  events: [
3823
3814
  {
3824
3815
  name: "click keydown",
3825
- delegate() {
3826
- return this.selNavItem;
3827
- },
3828
- filter() {
3829
- return !this.parallax;
3830
- },
3816
+ delegate: ({ selNavItem }) => selNavItem,
3817
+ filter: ({ parallax }) => !parallax,
3831
3818
  handler(e) {
3832
3819
  if (e.target.closest("a,button") && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
3833
3820
  e.preventDefault();
@@ -3841,12 +3828,8 @@
3841
3828
  },
3842
3829
  {
3843
3830
  name: "keydown",
3844
- delegate() {
3845
- return this.selNavItem;
3846
- },
3847
- filter() {
3848
- return !this.parallax;
3849
- },
3831
+ delegate: ({ selNavItem }) => selNavItem,
3832
+ filter: ({ parallax }) => !parallax,
3850
3833
  handler(e) {
3851
3834
  const { current, keyCode } = e;
3852
3835
  const cmd = data(current, this.attrItem);
@@ -4167,9 +4150,7 @@
4167
4150
  {
4168
4151
  name: "click",
4169
4152
  self: true,
4170
- delegate() {
4171
- return `${this.selList} > *`;
4172
- },
4153
+ delegate: ({ selList }) => `${selList} > *`,
4173
4154
  handler(e) {
4174
4155
  if (!e.defaultPrevented) {
4175
4156
  this.hide();
@@ -4383,12 +4364,12 @@
4383
4364
  },
4384
4365
  events: {
4385
4366
  name: "click",
4386
- delegate() {
4387
- return `${this.toggle}:not(.uk-disabled)`;
4388
- },
4367
+ delegate: ({ toggle }) => `${toggle}:not(.uk-disabled)`,
4389
4368
  handler(e) {
4390
- e.preventDefault();
4391
- this.show(e.current);
4369
+ if (!e.defaultPrevented) {
4370
+ e.preventDefault();
4371
+ this.show(e.current);
4372
+ }
4392
4373
  }
4393
4374
  },
4394
4375
  methods: {
@@ -4557,7 +4538,7 @@
4557
4538
  }
4558
4539
 
4559
4540
  function getMaxPathLength(el) {
4560
- return isVisible$1(el) ? Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => stroke.getTotalLength()))) : 0;
4541
+ return isVisible(el) ? Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => stroke.getTotalLength()))) : 0;
4561
4542
  }
4562
4543
 
4563
4544
  const props = {
@@ -4904,7 +4885,7 @@
4904
4885
  if (!types.has("scroll")) {
4905
4886
  percent = false;
4906
4887
  }
4907
- if (!isVisible$1(this.$el)) {
4888
+ if (!isVisible(this.$el)) {
4908
4889
  return false;
4909
4890
  }
4910
4891
  if (!this.matchMedia) {
@@ -4959,15 +4940,18 @@
4959
4940
  }
4960
4941
  },
4961
4942
  update: {
4962
- write() {
4943
+ read() {
4963
4944
  if (!this.parallax) {
4964
- return;
4945
+ return false;
4965
4946
  }
4966
4947
  const target = this.parallaxTarget;
4967
4948
  const start = toPx(this.parallaxStart, "height", target, true);
4968
4949
  const end = toPx(this.parallaxEnd, "height", target, true);
4969
4950
  const percent = ease(scrolledOver(target, start, end), this.parallaxEasing);
4970
- const [prevIndex, slidePercent] = this.getIndexAt(percent);
4951
+ return { parallax: this.getIndexAt(percent) };
4952
+ },
4953
+ write({ parallax }) {
4954
+ const [prevIndex, slidePercent] = parallax;
4971
4955
  const nextIndex = this.getValidIndex(prevIndex + Math.ceil(slidePercent));
4972
4956
  const prev = this.slides[prevIndex];
4973
4957
  const next = this.slides[nextIndex];
@@ -5107,6 +5091,9 @@
5107
5091
  return this.show(duration, percent, true);
5108
5092
  },
5109
5093
  translate(percent) {
5094
+ if (percent === this.percent()) {
5095
+ return;
5096
+ }
5110
5097
  const distance = this.getDistance() * dir * (isRtl ? -1 : 1);
5111
5098
  css(
5112
5099
  list,
@@ -5259,7 +5246,7 @@
5259
5246
  };
5260
5247
  },
5261
5248
  slides() {
5262
- return children(this.list).filter(isVisible$1);
5249
+ return children(this.list).filter(isVisible);
5263
5250
  }
5264
5251
  },
5265
5252
  connected() {
@@ -5325,7 +5312,7 @@
5325
5312
  this.dir > 0 && i < index ? 1 : this.dir < 0 && i >= this.index ? -1 : ""
5326
5313
  )
5327
5314
  );
5328
- if (!this.center) {
5315
+ if (!this.center || !this.length) {
5329
5316
  return;
5330
5317
  }
5331
5318
  const next = this.slides[index];
@@ -5463,9 +5450,7 @@
5463
5450
  {
5464
5451
  name: "itemin itemout",
5465
5452
  self: true,
5466
- el() {
5467
- return this.item;
5468
- },
5453
+ el: ({ item }) => item,
5469
5454
  handler({ type, detail: { percent, duration, timing, dir } }) {
5470
5455
  fastdom.read(() => {
5471
5456
  if (!this.matchMedia) {
@@ -5483,9 +5468,7 @@
5483
5468
  {
5484
5469
  name: "transitioncanceled transitionend",
5485
5470
  self: true,
5486
- el() {
5487
- return this.item;
5488
- },
5471
+ el: ({ item }) => item,
5489
5472
  handler() {
5490
5473
  Transition.cancel(this.$el);
5491
5474
  }
@@ -5493,9 +5476,7 @@
5493
5476
  {
5494
5477
  name: "itemtranslatein itemtranslateout",
5495
5478
  self: true,
5496
- el() {
5497
- return this.item;
5498
- },
5479
+ el: ({ item }) => item,
5499
5480
  handler({ type, detail: { percent, dir } }) {
5500
5481
  fastdom.read(() => {
5501
5482
  if (!this.matchMedia) {
@@ -6493,9 +6474,7 @@
6493
6474
  events: [
6494
6475
  {
6495
6476
  name: "click keydown",
6496
- delegate() {
6497
- return `${this.targets} ${this.$props.toggle}`;
6498
- },
6477
+ delegate: ({ targets, $props }) => `${targets} ${$props.toggle}`,
6499
6478
  async handler(e) {
6500
6479
  var _a;
6501
6480
  if (e.type === "keydown" && e.keyCode !== keyMap.SPACE) {
@@ -6511,9 +6490,7 @@
6511
6490
  {
6512
6491
  name: "shown hidden",
6513
6492
  self: true,
6514
- delegate() {
6515
- return this.targets;
6516
- },
6493
+ delegate: ({ targets }) => targets,
6517
6494
  handler() {
6518
6495
  this.$emit();
6519
6496
  }
@@ -6622,9 +6599,7 @@
6622
6599
  },
6623
6600
  events: {
6624
6601
  name: "click",
6625
- delegate() {
6626
- return this.selClose;
6627
- },
6602
+ delegate: ({ selClose }) => selClose,
6628
6603
  handler(e) {
6629
6604
  e.preventDefault();
6630
6605
  this.close();
@@ -6688,9 +6663,7 @@
6688
6663
  events: [
6689
6664
  {
6690
6665
  name: `${pointerEnter} focusin`,
6691
- filter() {
6692
- return includes(this.autoplay, "hover");
6693
- },
6666
+ filter: ({ autoplay }) => includes(autoplay, "hover"),
6694
6667
  handler(e) {
6695
6668
  if (!isTouch(e) || !isPlaying(this.$el)) {
6696
6669
  play(this.$el);
@@ -6701,9 +6674,7 @@
6701
6674
  },
6702
6675
  {
6703
6676
  name: `${pointerLeave} focusout`,
6704
- filter() {
6705
- return includes(this.autoplay, "hover");
6706
- },
6677
+ filter: ({ autoplay }) => includes(autoplay, "hover"),
6707
6678
  handler(e) {
6708
6679
  if (!isTouch(e)) {
6709
6680
  pause(this.$el);
@@ -6741,19 +6712,17 @@
6741
6712
  data: {
6742
6713
  automute: true
6743
6714
  },
6744
- events: {
6745
- "load loadedmetadata"() {
6746
- this.$emit("resize");
6747
- }
6715
+ created() {
6716
+ this.useObjectFit = isTag(this.$el, "img", "video");
6748
6717
  },
6749
6718
  observe: resize({
6750
- target: ({ $el }) => [getPositionedParent($el) || parent($el)],
6751
- filter: ({ $el }) => !useObjectFit($el)
6719
+ target: ({ $el }) => getPositionedParent($el) || parent($el),
6720
+ filter: ({ useObjectFit }) => !useObjectFit
6752
6721
  }),
6753
6722
  update: {
6754
6723
  read() {
6755
- if (useObjectFit(this.$el)) {
6756
- return;
6724
+ if (this.useObjectFit) {
6725
+ return false;
6757
6726
  }
6758
6727
  const { ratio, cover } = Dimensions;
6759
6728
  const { $el, width, height } = this;
@@ -6794,9 +6763,6 @@
6794
6763
  }
6795
6764
  }
6796
6765
  }
6797
- function useObjectFit(el) {
6798
- return isTag(el, "img", "video");
6799
- }
6800
6766
 
6801
6767
  let active;
6802
6768
  var drop = {
@@ -6861,7 +6827,7 @@
6861
6827
  this.tracker = new MouseTracker();
6862
6828
  },
6863
6829
  beforeConnect() {
6864
- this.clsDrop = this.$props.clsDrop || `uk-${this.$options.name}`;
6830
+ this.clsDrop = this.$props.clsDrop || this.$options.id;
6865
6831
  },
6866
6832
  connected() {
6867
6833
  addClass(this.$el, "uk-drop", this.clsDrop);
@@ -6880,9 +6846,7 @@
6880
6846
  events: [
6881
6847
  {
6882
6848
  name: "click",
6883
- delegate() {
6884
- return ".uk-drop-close";
6885
- },
6849
+ delegate: () => ".uk-drop-close",
6886
6850
  handler(e) {
6887
6851
  e.preventDefault();
6888
6852
  this.hide(false);
@@ -6890,9 +6854,7 @@
6890
6854
  },
6891
6855
  {
6892
6856
  name: "click",
6893
- delegate() {
6894
- return 'a[href*="#"]';
6895
- },
6857
+ delegate: () => 'a[href*="#"]',
6896
6858
  handler({ defaultPrevented, current }) {
6897
6859
  const { hash } = current;
6898
6860
  if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {
@@ -6938,9 +6900,7 @@
6938
6900
  },
6939
6901
  {
6940
6902
  name: `${pointerEnter} focusin`,
6941
- filter() {
6942
- return includes(this.mode, "hover");
6943
- },
6903
+ filter: ({ mode }) => includes(mode, "hover"),
6944
6904
  handler(e) {
6945
6905
  if (!isTouch(e)) {
6946
6906
  this.clearTimers();
@@ -6949,9 +6909,7 @@
6949
6909
  },
6950
6910
  {
6951
6911
  name: `${pointerLeave} focusout`,
6952
- filter() {
6953
- return includes(this.mode, "hover");
6954
- },
6912
+ filter: ({ mode }) => includes(mode, "hover"),
6955
6913
  handler(e) {
6956
6914
  if (!isTouch(e) && e.relatedTarget) {
6957
6915
  this.hide();
@@ -7262,9 +7220,7 @@
7262
7220
  events: [
7263
7221
  {
7264
7222
  name: "mouseover focusin",
7265
- delegate() {
7266
- return this.selNavItem;
7267
- },
7223
+ delegate: ({ selNavItem }) => selNavItem,
7268
7224
  handler({ current }) {
7269
7225
  const active2 = this.getActive();
7270
7226
  if (active2 && includes(active2.mode, "hover") && active2.targetEl && !current.contains(active2.targetEl) && !active2.isDelaying) {
@@ -7275,9 +7231,7 @@
7275
7231
  {
7276
7232
  name: "keydown",
7277
7233
  self: true,
7278
- delegate() {
7279
- return this.selNavItem;
7280
- },
7234
+ delegate: ({ selNavItem }) => selNavItem,
7281
7235
  handler(e) {
7282
7236
  var _a;
7283
7237
  const { current, keyCode } = e;
@@ -7291,12 +7245,8 @@
7291
7245
  },
7292
7246
  {
7293
7247
  name: "keydown",
7294
- el() {
7295
- return this.dropContainer;
7296
- },
7297
- delegate() {
7298
- return `.${this.clsDrop}`;
7299
- },
7248
+ el: ({ dropContainer }) => dropContainer,
7249
+ delegate: ({ clsDrop }) => `.${clsDrop}`,
7300
7250
  handler(e) {
7301
7251
  var _a;
7302
7252
  const { current, keyCode } = e;
@@ -7330,12 +7280,8 @@
7330
7280
  },
7331
7281
  {
7332
7282
  name: "mouseleave",
7333
- el() {
7334
- return this.dropbar;
7335
- },
7336
- filter() {
7337
- return this.dropbar;
7338
- },
7283
+ el: ({ dropbar }) => dropbar,
7284
+ filter: ({ dropbar }) => dropbar,
7339
7285
  handler() {
7340
7286
  const active2 = this.getActive();
7341
7287
  if (active2 && includes(active2.mode, "hover") && !this.dropdowns.some((el) => matches(el, ":hover"))) {
@@ -7345,12 +7291,8 @@
7345
7291
  },
7346
7292
  {
7347
7293
  name: "beforeshow",
7348
- el() {
7349
- return this.dropContainer;
7350
- },
7351
- filter() {
7352
- return this.dropbar;
7353
- },
7294
+ el: ({ dropContainer }) => dropContainer,
7295
+ filter: ({ dropbar }) => dropbar,
7354
7296
  handler({ target }) {
7355
7297
  if (!this.isDropbarDrop(target)) {
7356
7298
  return;
@@ -7363,12 +7305,8 @@
7363
7305
  },
7364
7306
  {
7365
7307
  name: "show",
7366
- el() {
7367
- return this.dropContainer;
7368
- },
7369
- filter() {
7370
- return this.dropbar;
7371
- },
7308
+ el: ({ dropContainer }) => dropContainer,
7309
+ filter: ({ dropbar }) => dropbar,
7372
7310
  handler({ target }) {
7373
7311
  if (!this.isDropbarDrop(target)) {
7374
7312
  return;
@@ -7393,12 +7331,8 @@
7393
7331
  },
7394
7332
  {
7395
7333
  name: "beforehide",
7396
- el() {
7397
- return this.dropContainer;
7398
- },
7399
- filter() {
7400
- return this.dropbar;
7401
- },
7334
+ el: ({ dropContainer }) => dropContainer,
7335
+ filter: ({ dropbar }) => dropbar,
7402
7336
  handler(e) {
7403
7337
  const active2 = this.getActive();
7404
7338
  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"))) {
@@ -7408,12 +7342,8 @@
7408
7342
  },
7409
7343
  {
7410
7344
  name: "hide",
7411
- el() {
7412
- return this.dropContainer;
7413
- },
7414
- filter() {
7415
- return this.dropbar;
7416
- },
7345
+ el: ({ dropContainer }) => dropContainer,
7346
+ filter: ({ dropbar }) => dropbar,
7417
7347
  handler({ target }) {
7418
7348
  var _a;
7419
7349
  if (!this.isDropbarDrop(target)) {
@@ -7544,9 +7474,7 @@
7544
7474
  },
7545
7475
  {
7546
7476
  name: "reset",
7547
- el() {
7548
- return this.$el.closest("form");
7549
- },
7477
+ el: ({ $el }) => $el.closest("form"),
7550
7478
  handler() {
7551
7479
  this.$emit();
7552
7480
  }
@@ -7640,11 +7568,8 @@
7640
7568
  },
7641
7569
  {
7642
7570
  read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {
7643
- if (scrollColumns && positionedAbsolute(rows)) {
7644
- return false;
7645
- }
7646
7571
  return {
7647
- scrolled: scrollColumns ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
7572
+ scrolled: scrollColumns && !positionedAbsolute(rows) ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
7648
7573
  };
7649
7574
  },
7650
7575
  write({ columns, scrolled, scrollColumns, translates }) {
@@ -7732,9 +7657,7 @@
7732
7657
  events: {
7733
7658
  // Hidden elements may change height when fonts load
7734
7659
  name: "loadingdone",
7735
- el() {
7736
- return document.fonts;
7737
- },
7660
+ el: () => document.fonts,
7738
7661
  handler() {
7739
7662
  this.$emit("resize");
7740
7663
  }
@@ -7766,7 +7689,7 @@
7766
7689
  }
7767
7690
  function getHeight(element) {
7768
7691
  const style = pick(element.style, ["display", "minHeight"]);
7769
- if (!isVisible$1(element)) {
7692
+ if (!isVisible(element)) {
7770
7693
  css(element, "display", "block", "important");
7771
7694
  }
7772
7695
  css(element, "minHeight", "");
@@ -7821,7 +7744,7 @@
7821
7744
  ],
7822
7745
  update: {
7823
7746
  read() {
7824
- if (!isVisible$1(this.$el)) {
7747
+ if (!isVisible(this.$el)) {
7825
7748
  return false;
7826
7749
  }
7827
7750
  let minHeight = "";
@@ -8344,14 +8267,15 @@
8344
8267
  };
8345
8268
  function findTargetColor(target) {
8346
8269
  const { left, top, height, width } = dimensions$1(target);
8270
+ const viewport = dimensions$1(window);
8347
8271
  let last;
8348
8272
  for (const percent of [0.25, 0.5, 0.75]) {
8349
8273
  const elements = target.ownerDocument.elementsFromPoint(
8350
- Math.max(0, left + width * percent),
8351
- Math.max(0, top + height / 2)
8274
+ Math.max(0, Math.min(left + width * percent, viewport.width - 1)),
8275
+ Math.max(0, Math.min(top + height / 2, viewport.height - 1))
8352
8276
  );
8353
8277
  for (const element of elements) {
8354
- if (target.contains(element) || !isVisible(element) || element.closest('[class*="-leave"]') && elements.some((el) => element !== el && matches(el, '[class*="-enter"]'))) {
8278
+ if (target.contains(element) || !checkVisibility(element) || element.closest('[class*="-leave"]') && elements.some((el) => element !== el && matches(el, '[class*="-enter"]'))) {
8355
8279
  continue;
8356
8280
  }
8357
8281
  const color = css(element, "--uk-inverse");
@@ -8366,7 +8290,7 @@
8366
8290
  }
8367
8291
  return last ? `uk-${last}` : "";
8368
8292
  }
8369
- function isVisible(element) {
8293
+ function checkVisibility(element) {
8370
8294
  if (css(element, "visibility") !== "visible") {
8371
8295
  return false;
8372
8296
  }
@@ -8566,9 +8490,7 @@
8566
8490
  events: [
8567
8491
  {
8568
8492
  name: "show",
8569
- el() {
8570
- return this.dropContainer;
8571
- },
8493
+ el: ({ dropContainer }) => dropContainer,
8572
8494
  handler({ target }) {
8573
8495
  if (this.getTransparentMode(target) === "remove" && hasClass(this.navbarContainer, clsNavbarTransparent)) {
8574
8496
  removeClass(this.navbarContainer, clsNavbarTransparent);
@@ -8578,9 +8500,7 @@
8578
8500
  },
8579
8501
  {
8580
8502
  name: "hide",
8581
- el() {
8582
- return this.dropContainer;
8583
- },
8503
+ el: ({ dropContainer }) => dropContainer,
8584
8504
  async handler() {
8585
8505
  await awaitMacroTask();
8586
8506
  if (!this.getActive() && this._transparent) {
@@ -8651,7 +8571,7 @@
8651
8571
  observe: swipe({ filter: ({ swiping }) => swiping }),
8652
8572
  update: {
8653
8573
  read() {
8654
- if (this.isToggled() && !isVisible$1(this.$el)) {
8574
+ if (this.isToggled() && !isVisible(this.$el)) {
8655
8575
  this.hide();
8656
8576
  }
8657
8577
  },
@@ -8662,9 +8582,7 @@
8662
8582
  name: "touchmove",
8663
8583
  self: true,
8664
8584
  passive: false,
8665
- filter() {
8666
- return this.overlay;
8667
- },
8585
+ filter: ({ overlay }) => overlay,
8668
8586
  handler(e) {
8669
8587
  e.cancelable && e.preventDefault();
8670
8588
  }
@@ -8758,7 +8676,7 @@
8758
8676
  }),
8759
8677
  update: {
8760
8678
  read() {
8761
- if (!this.content || !this.container || !isVisible$1(this.$el)) {
8679
+ if (!this.content || !this.container || !isVisible(this.$el)) {
8762
8680
  return false;
8763
8681
  }
8764
8682
  return {
@@ -8915,12 +8833,12 @@
8915
8833
  ],
8916
8834
  methods: {
8917
8835
  toggle(el, inview) {
8918
- var _a;
8919
- const state = this.elementData.get(el);
8836
+ var _a, _b;
8837
+ const state = (_a = this.elementData) == null ? void 0 : _a.get(el);
8920
8838
  if (!state) {
8921
8839
  return;
8922
8840
  }
8923
- (_a = state.off) == null ? void 0 : _a.call(state);
8841
+ (_b = state.off) == null ? void 0 : _b.call(state);
8924
8842
  css(el, "opacity", !inview && this.hidden ? 0 : "");
8925
8843
  toggleClass(el, this.inViewClass, inview);
8926
8844
  toggleClass(el, state.cls);
@@ -8974,7 +8892,7 @@
8974
8892
  read() {
8975
8893
  const targets = this.links.map(getTargetedElement).filter(Boolean);
8976
8894
  const { length } = targets;
8977
- if (!length || !isVisible$1(this.$el)) {
8895
+ if (!length || !isVisible(this.$el)) {
8978
8896
  return false;
8979
8897
  }
8980
8898
  const scrollElement = scrollParent(targets, true);
@@ -8985,9 +8903,8 @@
8985
8903
  if (scrollTop === max) {
8986
8904
  active = length - 1;
8987
8905
  } else {
8906
+ const offsetBy = this.offset + offset(getCoveringElement()).height;
8988
8907
  for (let i = 0; i < targets.length; i++) {
8989
- const fixedEl = getCoveringElement(targets[i]);
8990
- const offsetBy = this.offset + (fixedEl ? offset(fixedEl).height : 0);
8991
8908
  if (offset(targets[i]).top - viewport.top - offsetBy > 0) {
8992
8909
  break;
8993
8910
  }
@@ -9070,25 +8987,23 @@
9070
8987
  this.placeholder = null;
9071
8988
  },
9072
8989
  observe: [
9073
- viewport({
9074
- handler() {
9075
- if (toPx("100vh", "height") !== this._data.viewport) {
9076
- this.$emit("resize");
9077
- }
9078
- }
9079
- }),
8990
+ viewport(),
9080
8991
  scroll$1({ target: () => document.scrollingElement }),
9081
- resize({ target: ({ $el }) => [$el, document.scrollingElement] })
8992
+ resize({
8993
+ target: ({ $el }) => [$el, parent($el), document.scrollingElement],
8994
+ handler(entries) {
8995
+ this.$emit(
8996
+ this._data.resized && entries.some(({ target }) => target === parent(this.$el)) ? "update" : "resize"
8997
+ );
8998
+ this._data.resized = true;
8999
+ }
9000
+ })
9082
9001
  ],
9083
9002
  events: [
9084
9003
  {
9085
9004
  name: "load hashchange popstate",
9086
- el() {
9087
- return window;
9088
- },
9089
- filter() {
9090
- return this.targetOffset !== false;
9091
- },
9005
+ el: () => window,
9006
+ filter: ({ targetOffset }) => targetOffset !== false,
9092
9007
  handler() {
9093
9008
  const { scrollingElement } = document;
9094
9009
  if (!location.hash || scrollingElement.scrollTop === 0) {
@@ -9104,26 +9019,16 @@
9104
9019
  }
9105
9020
  });
9106
9021
  }
9107
- },
9108
- {
9109
- name: "transitionstart",
9110
- handler() {
9111
- this.transitionInProgress = once(
9112
- this.$el,
9113
- "transitionend transitioncancel",
9114
- () => this.transitionInProgress = null
9115
- );
9116
- }
9117
9022
  }
9118
9023
  ],
9119
9024
  update: [
9120
9025
  {
9121
- read({ height: height$1, width, margin, sticky }) {
9122
- this.inactive = !this.matchMedia || !isVisible$1(this.$el);
9026
+ read({ height: height$1, width, margin, sticky }, types) {
9027
+ this.inactive = !this.matchMedia || !isVisible(this.$el);
9123
9028
  if (this.inactive) {
9124
9029
  return;
9125
9030
  }
9126
- const hide = this.isFixed && !this.transitionInProgress;
9031
+ const hide = this.isFixed && types.has("update");
9127
9032
  if (hide) {
9128
9033
  preventTransition(this.target);
9129
9034
  this.hide();
@@ -9173,7 +9078,8 @@
9173
9078
  margin,
9174
9079
  top: offsetPosition(referenceElement)[0],
9175
9080
  sticky,
9176
- viewport: viewport2
9081
+ viewport: viewport2,
9082
+ maxScrollHeight
9177
9083
  };
9178
9084
  },
9179
9085
  write({ height, width, margin, offset, sticky }) {
@@ -9206,9 +9112,10 @@
9206
9112
  end,
9207
9113
  elHeight,
9208
9114
  height,
9209
- sticky
9115
+ sticky,
9116
+ maxScrollHeight
9210
9117
  }) {
9211
- const scroll2 = document.scrollingElement.scrollTop;
9118
+ const scroll2 = Math.min(document.scrollingElement.scrollTop, maxScrollHeight);
9212
9119
  const dir = prevScroll <= scroll2 ? "down" : "up";
9213
9120
  const referenceElement = this.isFixed ? this.placeholder : this.$el;
9214
9121
  return {
@@ -9538,9 +9445,7 @@
9538
9445
  events: [
9539
9446
  {
9540
9447
  name: "click keydown",
9541
- delegate() {
9542
- return this.toggle;
9543
- },
9448
+ delegate: ({ toggle }) => toggle,
9544
9449
  handler(e) {
9545
9450
  if (!matches(e.current, selDisabled) && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
9546
9451
  e.preventDefault();
@@ -9550,9 +9455,7 @@
9550
9455
  },
9551
9456
  {
9552
9457
  name: "keydown",
9553
- delegate() {
9554
- return this.toggle;
9555
- },
9458
+ delegate: ({ toggle }) => toggle,
9556
9459
  handler(e) {
9557
9460
  const { current, keyCode } = e;
9558
9461
  const isVertical = matches(this.$el, this.selVertical);
@@ -9570,12 +9473,8 @@
9570
9473
  },
9571
9474
  {
9572
9475
  name: "click",
9573
- el() {
9574
- return this.connects.concat(this.itemNav ? queryAll(this.itemNav, this.$el) : []);
9575
- },
9576
- delegate() {
9577
- return `[${this.attrItem}],[data-${this.attrItem}]`;
9578
- },
9476
+ el: ({ $el, connects, itemNav }) => connects.concat(itemNav ? queryAll(itemNav, $el) : []),
9477
+ delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,
9579
9478
  handler(e) {
9580
9479
  if (e.target.closest("a,button")) {
9581
9480
  e.preventDefault();
@@ -9585,12 +9484,8 @@
9585
9484
  },
9586
9485
  {
9587
9486
  name: "swipeRight swipeLeft",
9588
- filter() {
9589
- return this.swiping;
9590
- },
9591
- el() {
9592
- return this.connects;
9593
- },
9487
+ filter: ({ swiping }) => swiping,
9488
+ el: ({ connects }) => connects,
9594
9489
  handler({ type }) {
9595
9490
  this.show(endsWith(type, "Left") ? "next" : "previous");
9596
9491
  }
@@ -9709,9 +9604,7 @@
9709
9604
  events: [
9710
9605
  {
9711
9606
  name: pointerDown$1,
9712
- filter() {
9713
- return includes(this.mode, "hover");
9714
- },
9607
+ filter: ({ mode }) => includes(mode, "hover"),
9715
9608
  handler(e) {
9716
9609
  this._preventClick = null;
9717
9610
  if (!isTouch(e) || isBoolean(this._showState) || this.$el.disabled) {
@@ -9734,9 +9627,7 @@
9734
9627
  // mouseenter mouseleave are added because of Firefox bug,
9735
9628
  // where pointerleave is triggered immediately after pointerenter on scroll
9736
9629
  name: `mouseenter mouseleave ${pointerEnter} ${pointerLeave} focus blur`,
9737
- filter() {
9738
- return includes(this.mode, "hover");
9739
- },
9630
+ filter: ({ mode }) => includes(mode, "hover"),
9740
9631
  handler(e) {
9741
9632
  if (isTouch(e) || this.$el.disabled) {
9742
9633
  return;
@@ -9758,9 +9649,7 @@
9758
9649
  },
9759
9650
  {
9760
9651
  name: "keydown",
9761
- filter() {
9762
- return includes(this.mode, "click") && !isTag(this.$el, "input");
9763
- },
9652
+ filter: ({ $el, mode }) => includes(mode, "click") && !isTag($el, "input"),
9764
9653
  handler(e) {
9765
9654
  if (e.keyCode === KEY_SPACE) {
9766
9655
  e.preventDefault();
@@ -9770,9 +9659,7 @@
9770
9659
  },
9771
9660
  {
9772
9661
  name: "click",
9773
- filter() {
9774
- return ["click", "hover"].some((mode) => includes(this.mode, mode));
9775
- },
9662
+ filter: ({ mode }) => ["click", "hover"].some((m) => includes(mode, m)),
9776
9663
  handler(e) {
9777
9664
  let link;
9778
9665
  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))) {
@@ -9785,12 +9672,8 @@
9785
9672
  },
9786
9673
  {
9787
9674
  name: "mediachange",
9788
- filter() {
9789
- return includes(this.mode, "media");
9790
- },
9791
- el() {
9792
- return this.target;
9793
- },
9675
+ filter: ({ mode }) => includes(mode, "media"),
9676
+ el: ({ target }) => target,
9794
9677
  handler(e, mediaObj) {
9795
9678
  if (mediaObj.matches ^ this.isToggled(this.target)) {
9796
9679
  this.toggle();