uikit 3.20.9-dev.b50e1953b → 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 (76) hide show
  1. package/CHANGELOG.md +2 -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 +125 -214
  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 -259
  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 +5 -5
  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/inverse.js +31 -3
  60. package/src/js/core/modal.js +2 -1
  61. package/src/js/core/navbar.js +2 -6
  62. package/src/js/core/offcanvas.js +1 -3
  63. package/src/js/core/scrollspy-nav.js +2 -2
  64. package/src/js/core/scrollspy.js +1 -1
  65. package/src/js/core/sticky.js +18 -28
  66. package/src/js/core/switcher.js +7 -18
  67. package/src/js/core/toggle.js +6 -18
  68. package/src/js/core/video.js +6 -6
  69. package/src/js/mixin/internal/slideshow-transitioner.js +4 -0
  70. package/src/js/mixin/modal.js +1 -3
  71. package/src/js/mixin/slider-autoplay.js +1 -3
  72. package/src/js/mixin/slider-drag.js +2 -6
  73. package/src/js/mixin/slider-nav.js +4 -12
  74. package/src/js/mixin/slider-parallax.js +7 -3
  75. package/src/js/util/fastdom.js +24 -25
  76. package/src/js/util/viewport.js +8 -8
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.20.9-dev.b50e1953b | 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() :
@@ -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
  }
@@ -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(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
  }
@@ -1839,7 +1837,7 @@
1839
1837
  function registerEvent(instance, event, key) {
1840
1838
  let { name, el, handler, capture, passive, delegate, filter, self } = isPlainObject(event) ? event : { name: key, handler: event };
1841
1839
  el = isFunction(el) ? el.call(instance, instance) : el || instance.$el;
1842
- if (!el || isArray(el) && !el.length || filter && !filter.call(instance)) {
1840
+ if (!el || isArray(el) && !el.length || filter && !filter.call(instance, instance)) {
1843
1841
  return;
1844
1842
  }
1845
1843
  instance._events.push(
@@ -2172,7 +2170,7 @@
2172
2170
  };
2173
2171
  App.util = util;
2174
2172
  App.options = {};
2175
- App.version = "3.20.9-dev.b50e1953b";
2173
+ App.version = "3.20.9-dev.e2e1b058d";
2176
2174
 
2177
2175
  const PREFIX = "uk-";
2178
2176
  const DATA = "__uikit__";
@@ -2227,7 +2225,7 @@
2227
2225
  function detachFromElement(element, instance) {
2228
2226
  var _a;
2229
2227
  (_a = element[DATA]) == null ? true : delete _a[instance.$options.name];
2230
- if (!isEmpty(element[DATA])) {
2228
+ if (isEmpty(element[DATA])) {
2231
2229
  delete element[DATA];
2232
2230
  }
2233
2231
  }
@@ -2751,9 +2749,7 @@
2751
2749
  events: [
2752
2750
  {
2753
2751
  name: "click keydown",
2754
- delegate() {
2755
- return `${this.targets} ${this.$props.toggle}`;
2756
- },
2752
+ delegate: ({ targets, $props }) => `${targets} ${$props.toggle}`,
2757
2753
  async handler(e) {
2758
2754
  var _a;
2759
2755
  if (e.type === "keydown" && e.keyCode !== keyMap.SPACE) {
@@ -2769,9 +2765,7 @@
2769
2765
  {
2770
2766
  name: "shown hidden",
2771
2767
  self: true,
2772
- delegate() {
2773
- return this.targets;
2774
- },
2768
+ delegate: ({ targets }) => targets,
2775
2769
  handler() {
2776
2770
  this.$emit();
2777
2771
  }
@@ -2880,9 +2874,7 @@
2880
2874
  },
2881
2875
  events: {
2882
2876
  name: "click",
2883
- delegate() {
2884
- return this.selClose;
2885
- },
2877
+ delegate: ({ selClose }) => selClose,
2886
2878
  handler(e) {
2887
2879
  e.preventDefault();
2888
2880
  this.close();
@@ -2946,9 +2938,7 @@
2946
2938
  events: [
2947
2939
  {
2948
2940
  name: `${pointerEnter} focusin`,
2949
- filter() {
2950
- return includes(this.autoplay, "hover");
2951
- },
2941
+ filter: ({ autoplay }) => includes(autoplay, "hover"),
2952
2942
  handler(e) {
2953
2943
  if (!isTouch(e) || !isPlaying(this.$el)) {
2954
2944
  play(this.$el);
@@ -2959,9 +2949,7 @@
2959
2949
  },
2960
2950
  {
2961
2951
  name: `${pointerLeave} focusout`,
2962
- filter() {
2963
- return includes(this.autoplay, "hover");
2964
- },
2952
+ filter: ({ autoplay }) => includes(autoplay, "hover"),
2965
2953
  handler(e) {
2966
2954
  if (!isTouch(e)) {
2967
2955
  pause(this.$el);
@@ -2999,19 +2987,17 @@
2999
2987
  data: {
3000
2988
  automute: true
3001
2989
  },
3002
- events: {
3003
- "load loadedmetadata"() {
3004
- this.$emit("resize");
3005
- }
2990
+ created() {
2991
+ this.useObjectFit = isTag(this.$el, "img", "video");
3006
2992
  },
3007
2993
  observe: resize({
3008
- target: ({ $el }) => [getPositionedParent($el) || parent($el)],
3009
- filter: ({ $el }) => !useObjectFit($el)
2994
+ target: ({ $el }) => getPositionedParent($el) || parent($el),
2995
+ filter: ({ useObjectFit }) => !useObjectFit
3010
2996
  }),
3011
2997
  update: {
3012
2998
  read() {
3013
- if (useObjectFit(this.$el)) {
3014
- return;
2999
+ if (this.useObjectFit) {
3000
+ return false;
3015
3001
  }
3016
3002
  const { ratio, cover } = Dimensions;
3017
3003
  const { $el, width, height } = this;
@@ -3052,9 +3038,6 @@
3052
3038
  }
3053
3039
  }
3054
3040
  }
3055
- function useObjectFit(el) {
3056
- return isTag(el, "img", "video");
3057
- }
3058
3041
 
3059
3042
  var Container = {
3060
3043
  props: {
@@ -3256,7 +3239,7 @@
3256
3239
  this.tracker = new MouseTracker();
3257
3240
  },
3258
3241
  beforeConnect() {
3259
- this.clsDrop = this.$props.clsDrop || `uk-${this.$options.name}`;
3242
+ this.clsDrop = this.$props.clsDrop || this.$options.id;
3260
3243
  },
3261
3244
  connected() {
3262
3245
  addClass(this.$el, "uk-drop", this.clsDrop);
@@ -3275,9 +3258,7 @@
3275
3258
  events: [
3276
3259
  {
3277
3260
  name: "click",
3278
- delegate() {
3279
- return ".uk-drop-close";
3280
- },
3261
+ delegate: () => ".uk-drop-close",
3281
3262
  handler(e) {
3282
3263
  e.preventDefault();
3283
3264
  this.hide(false);
@@ -3285,9 +3266,7 @@
3285
3266
  },
3286
3267
  {
3287
3268
  name: "click",
3288
- delegate() {
3289
- return 'a[href*="#"]';
3290
- },
3269
+ delegate: () => 'a[href*="#"]',
3291
3270
  handler({ defaultPrevented, current }) {
3292
3271
  const { hash } = current;
3293
3272
  if (!defaultPrevented && hash && isSameSiteAnchor(current) && !this.$el.contains($(hash))) {
@@ -3333,9 +3312,7 @@
3333
3312
  },
3334
3313
  {
3335
3314
  name: `${pointerEnter} focusin`,
3336
- filter() {
3337
- return includes(this.mode, "hover");
3338
- },
3315
+ filter: ({ mode }) => includes(mode, "hover"),
3339
3316
  handler(e) {
3340
3317
  if (!isTouch(e)) {
3341
3318
  this.clearTimers();
@@ -3344,9 +3321,7 @@
3344
3321
  },
3345
3322
  {
3346
3323
  name: `${pointerLeave} focusout`,
3347
- filter() {
3348
- return includes(this.mode, "hover");
3349
- },
3324
+ filter: ({ mode }) => includes(mode, "hover"),
3350
3325
  handler(e) {
3351
3326
  if (!isTouch(e) && e.relatedTarget) {
3352
3327
  this.hide();
@@ -3657,9 +3632,7 @@
3657
3632
  events: [
3658
3633
  {
3659
3634
  name: "mouseover focusin",
3660
- delegate() {
3661
- return this.selNavItem;
3662
- },
3635
+ delegate: ({ selNavItem }) => selNavItem,
3663
3636
  handler({ current }) {
3664
3637
  const active2 = this.getActive();
3665
3638
  if (active2 && includes(active2.mode, "hover") && active2.targetEl && !current.contains(active2.targetEl) && !active2.isDelaying) {
@@ -3670,9 +3643,7 @@
3670
3643
  {
3671
3644
  name: "keydown",
3672
3645
  self: true,
3673
- delegate() {
3674
- return this.selNavItem;
3675
- },
3646
+ delegate: ({ selNavItem }) => selNavItem,
3676
3647
  handler(e) {
3677
3648
  var _a;
3678
3649
  const { current, keyCode } = e;
@@ -3686,12 +3657,8 @@
3686
3657
  },
3687
3658
  {
3688
3659
  name: "keydown",
3689
- el() {
3690
- return this.dropContainer;
3691
- },
3692
- delegate() {
3693
- return `.${this.clsDrop}`;
3694
- },
3660
+ el: ({ dropContainer }) => dropContainer,
3661
+ delegate: ({ clsDrop }) => `.${clsDrop}`,
3695
3662
  handler(e) {
3696
3663
  var _a;
3697
3664
  const { current, keyCode } = e;
@@ -3725,12 +3692,8 @@
3725
3692
  },
3726
3693
  {
3727
3694
  name: "mouseleave",
3728
- el() {
3729
- return this.dropbar;
3730
- },
3731
- filter() {
3732
- return this.dropbar;
3733
- },
3695
+ el: ({ dropbar }) => dropbar,
3696
+ filter: ({ dropbar }) => dropbar,
3734
3697
  handler() {
3735
3698
  const active2 = this.getActive();
3736
3699
  if (active2 && includes(active2.mode, "hover") && !this.dropdowns.some((el) => matches(el, ":hover"))) {
@@ -3740,12 +3703,8 @@
3740
3703
  },
3741
3704
  {
3742
3705
  name: "beforeshow",
3743
- el() {
3744
- return this.dropContainer;
3745
- },
3746
- filter() {
3747
- return this.dropbar;
3748
- },
3706
+ el: ({ dropContainer }) => dropContainer,
3707
+ filter: ({ dropbar }) => dropbar,
3749
3708
  handler({ target }) {
3750
3709
  if (!this.isDropbarDrop(target)) {
3751
3710
  return;
@@ -3758,12 +3717,8 @@
3758
3717
  },
3759
3718
  {
3760
3719
  name: "show",
3761
- el() {
3762
- return this.dropContainer;
3763
- },
3764
- filter() {
3765
- return this.dropbar;
3766
- },
3720
+ el: ({ dropContainer }) => dropContainer,
3721
+ filter: ({ dropbar }) => dropbar,
3767
3722
  handler({ target }) {
3768
3723
  if (!this.isDropbarDrop(target)) {
3769
3724
  return;
@@ -3788,12 +3743,8 @@
3788
3743
  },
3789
3744
  {
3790
3745
  name: "beforehide",
3791
- el() {
3792
- return this.dropContainer;
3793
- },
3794
- filter() {
3795
- return this.dropbar;
3796
- },
3746
+ el: ({ dropContainer }) => dropContainer,
3747
+ filter: ({ dropbar }) => dropbar,
3797
3748
  handler(e) {
3798
3749
  const active2 = this.getActive();
3799
3750
  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 +3754,8 @@
3803
3754
  },
3804
3755
  {
3805
3756
  name: "hide",
3806
- el() {
3807
- return this.dropContainer;
3808
- },
3809
- filter() {
3810
- return this.dropbar;
3811
- },
3757
+ el: ({ dropContainer }) => dropContainer,
3758
+ filter: ({ dropbar }) => dropbar,
3812
3759
  handler({ target }) {
3813
3760
  var _a;
3814
3761
  if (!this.isDropbarDrop(target)) {
@@ -3939,9 +3886,7 @@
3939
3886
  },
3940
3887
  {
3941
3888
  name: "reset",
3942
- el() {
3943
- return this.$el.closest("form");
3944
- },
3889
+ el: ({ $el }) => $el.closest("form"),
3945
3890
  handler() {
3946
3891
  this.$emit();
3947
3892
  }
@@ -4131,11 +4076,8 @@
4131
4076
  },
4132
4077
  {
4133
4078
  read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {
4134
- if (scrollColumns && positionedAbsolute(rows)) {
4135
- return false;
4136
- }
4137
4079
  return {
4138
- scrolled: scrollColumns ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
4080
+ scrolled: scrollColumns && !positionedAbsolute(rows) ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
4139
4081
  };
4140
4082
  },
4141
4083
  write({ columns, scrolled, scrollColumns, translates }) {
@@ -4223,9 +4165,7 @@
4223
4165
  events: {
4224
4166
  // Hidden elements may change height when fonts load
4225
4167
  name: "loadingdone",
4226
- el() {
4227
- return document.fonts;
4228
- },
4168
+ el: () => document.fonts,
4229
4169
  handler() {
4230
4170
  this.$emit("resize");
4231
4171
  }
@@ -4854,14 +4794,15 @@
4854
4794
  };
4855
4795
  function findTargetColor(target) {
4856
4796
  const { left, top, height, width } = dimensions(target);
4797
+ const viewport = dimensions(window);
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, Math.min(left + width * percent, viewport.width - 1)),
4802
+ Math.max(0, Math.min(top + height / 2, viewport.height - 1))
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) || !checkVisibility(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 checkVisibility(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) {
@@ -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
  }
@@ -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);
@@ -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,25 +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
- resize({ target: ({ $el }) => [$el, document.scrollingElement] })
5769
+ 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
+ })
5831
5778
  ],
5832
5779
  events: [
5833
5780
  {
5834
5781
  name: "load hashchange popstate",
5835
- el() {
5836
- return window;
5837
- },
5838
- filter() {
5839
- return this.targetOffset !== false;
5840
- },
5782
+ el: () => window,
5783
+ filter: ({ targetOffset }) => targetOffset !== false,
5841
5784
  handler() {
5842
5785
  const { scrollingElement } = document;
5843
5786
  if (!location.hash || scrollingElement.scrollTop === 0) {
@@ -5853,26 +5796,16 @@
5853
5796
  }
5854
5797
  });
5855
5798
  }
5856
- },
5857
- {
5858
- name: "transitionstart",
5859
- handler() {
5860
- this.transitionInProgress = once(
5861
- this.$el,
5862
- "transitionend transitioncancel",
5863
- () => this.transitionInProgress = null
5864
- );
5865
- }
5866
5799
  }
5867
5800
  ],
5868
5801
  update: [
5869
5802
  {
5870
- read({ height: height$1, width, margin, sticky }) {
5803
+ read({ height: height$1, width, margin, sticky }, types) {
5871
5804
  this.inactive = !this.matchMedia || !isVisible(this.$el);
5872
5805
  if (this.inactive) {
5873
5806
  return;
5874
5807
  }
5875
- const hide = this.isFixed && !this.transitionInProgress;
5808
+ const hide = this.isFixed && types.has("update");
5876
5809
  if (hide) {
5877
5810
  preventTransition(this.target);
5878
5811
  this.hide();
@@ -5922,7 +5855,8 @@
5922
5855
  margin,
5923
5856
  top: offsetPosition(referenceElement)[0],
5924
5857
  sticky,
5925
- viewport: viewport2
5858
+ viewport: viewport2,
5859
+ maxScrollHeight
5926
5860
  };
5927
5861
  },
5928
5862
  write({ height, width, margin, offset, sticky }) {
@@ -5955,9 +5889,10 @@
5955
5889
  end,
5956
5890
  elHeight,
5957
5891
  height,
5958
- sticky
5892
+ sticky,
5893
+ maxScrollHeight
5959
5894
  }) {
5960
- const scroll2 = document.scrollingElement.scrollTop;
5895
+ const scroll2 = Math.min(document.scrollingElement.scrollTop, maxScrollHeight);
5961
5896
  const dir = prevScroll <= scroll2 ? "down" : "up";
5962
5897
  const referenceElement = this.isFixed ? this.placeholder : this.$el;
5963
5898
  return {
@@ -6291,9 +6226,7 @@
6291
6226
  events: [
6292
6227
  {
6293
6228
  name: "click keydown",
6294
- delegate() {
6295
- return this.toggle;
6296
- },
6229
+ delegate: ({ toggle }) => toggle,
6297
6230
  handler(e) {
6298
6231
  if (!matches(e.current, selDisabled) && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
6299
6232
  e.preventDefault();
@@ -6303,9 +6236,7 @@
6303
6236
  },
6304
6237
  {
6305
6238
  name: "keydown",
6306
- delegate() {
6307
- return this.toggle;
6308
- },
6239
+ delegate: ({ toggle }) => toggle,
6309
6240
  handler(e) {
6310
6241
  const { current, keyCode } = e;
6311
6242
  const isVertical = matches(this.$el, this.selVertical);
@@ -6323,12 +6254,8 @@
6323
6254
  },
6324
6255
  {
6325
6256
  name: "click",
6326
- el() {
6327
- return this.connects.concat(this.itemNav ? queryAll(this.itemNav, this.$el) : []);
6328
- },
6329
- delegate() {
6330
- return `[${this.attrItem}],[data-${this.attrItem}]`;
6331
- },
6257
+ el: ({ $el, connects, itemNav }) => connects.concat(itemNav ? queryAll(itemNav, $el) : []),
6258
+ delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,
6332
6259
  handler(e) {
6333
6260
  if (e.target.closest("a,button")) {
6334
6261
  e.preventDefault();
@@ -6338,12 +6265,8 @@
6338
6265
  },
6339
6266
  {
6340
6267
  name: "swipeRight swipeLeft",
6341
- filter() {
6342
- return this.swiping;
6343
- },
6344
- el() {
6345
- return this.connects;
6346
- },
6268
+ filter: ({ swiping }) => swiping,
6269
+ el: ({ connects }) => connects,
6347
6270
  handler({ type }) {
6348
6271
  this.show(endsWith(type, "Left") ? "next" : "previous");
6349
6272
  }
@@ -6462,9 +6385,7 @@
6462
6385
  events: [
6463
6386
  {
6464
6387
  name: pointerDown,
6465
- filter() {
6466
- return includes(this.mode, "hover");
6467
- },
6388
+ filter: ({ mode }) => includes(mode, "hover"),
6468
6389
  handler(e) {
6469
6390
  this._preventClick = null;
6470
6391
  if (!isTouch(e) || isBoolean(this._showState) || this.$el.disabled) {
@@ -6487,9 +6408,7 @@
6487
6408
  // mouseenter mouseleave are added because of Firefox bug,
6488
6409
  // where pointerleave is triggered immediately after pointerenter on scroll
6489
6410
  name: `mouseenter mouseleave ${pointerEnter} ${pointerLeave} focus blur`,
6490
- filter() {
6491
- return includes(this.mode, "hover");
6492
- },
6411
+ filter: ({ mode }) => includes(mode, "hover"),
6493
6412
  handler(e) {
6494
6413
  if (isTouch(e) || this.$el.disabled) {
6495
6414
  return;
@@ -6511,9 +6430,7 @@
6511
6430
  },
6512
6431
  {
6513
6432
  name: "keydown",
6514
- filter() {
6515
- return includes(this.mode, "click") && !isTag(this.$el, "input");
6516
- },
6433
+ filter: ({ $el, mode }) => includes(mode, "click") && !isTag($el, "input"),
6517
6434
  handler(e) {
6518
6435
  if (e.keyCode === KEY_SPACE) {
6519
6436
  e.preventDefault();
@@ -6523,9 +6440,7 @@
6523
6440
  },
6524
6441
  {
6525
6442
  name: "click",
6526
- filter() {
6527
- return ["click", "hover"].some((mode) => includes(this.mode, mode));
6528
- },
6443
+ filter: ({ mode }) => ["click", "hover"].some((m) => includes(mode, m)),
6529
6444
  handler(e) {
6530
6445
  let link;
6531
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))) {
@@ -6538,12 +6453,8 @@
6538
6453
  },
6539
6454
  {
6540
6455
  name: "mediachange",
6541
- filter() {
6542
- return includes(this.mode, "media");
6543
- },
6544
- el() {
6545
- return this.target;
6546
- },
6456
+ filter: ({ mode }) => includes(mode, "media"),
6457
+ el: ({ target }) => target,
6547
6458
  handler(e, mediaObj) {
6548
6459
  if (mediaObj.matches ^ this.isToggled(this.target)) {
6549
6460
  this.toggle();