uikit 3.16.24 → 3.16.25-dev.931f07bf4

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 (144) hide show
  1. package/.eslintrc.json +0 -9
  2. package/.prettierrc.json +3 -4
  3. package/CHANGELOG.md +6 -0
  4. package/build/build.js +2 -2
  5. package/build/less.js +2 -2
  6. package/build/prefix.js +8 -7
  7. package/build/release.js +7 -7
  8. package/build/scope.js +3 -3
  9. package/build/scss.js +26 -16
  10. package/build/util.js +11 -11
  11. package/dist/css/uikit-core-rtl.css +6 -2
  12. package/dist/css/uikit-core-rtl.min.css +1 -1
  13. package/dist/css/uikit-core.css +6 -2
  14. package/dist/css/uikit-core.min.css +1 -1
  15. package/dist/css/uikit-rtl.css +6 -2
  16. package/dist/css/uikit-rtl.min.css +1 -1
  17. package/dist/css/uikit.css +6 -2
  18. package/dist/css/uikit.min.css +1 -1
  19. package/dist/js/components/countdown.js +2 -2
  20. package/dist/js/components/countdown.min.js +1 -1
  21. package/dist/js/components/filter.js +18 -18
  22. package/dist/js/components/filter.min.js +1 -1
  23. package/dist/js/components/lightbox-panel.js +347 -350
  24. package/dist/js/components/lightbox-panel.min.js +1 -1
  25. package/dist/js/components/lightbox.js +349 -352
  26. package/dist/js/components/lightbox.min.js +1 -1
  27. package/dist/js/components/notification.js +6 -6
  28. package/dist/js/components/notification.min.js +1 -1
  29. package/dist/js/components/parallax.js +76 -72
  30. package/dist/js/components/parallax.min.js +1 -1
  31. package/dist/js/components/slider-parallax.js +37 -37
  32. package/dist/js/components/slider-parallax.min.js +1 -1
  33. package/dist/js/components/slider.js +218 -224
  34. package/dist/js/components/slider.min.js +1 -1
  35. package/dist/js/components/slideshow-parallax.js +37 -37
  36. package/dist/js/components/slideshow-parallax.min.js +1 -1
  37. package/dist/js/components/slideshow.js +265 -271
  38. package/dist/js/components/slideshow.min.js +1 -1
  39. package/dist/js/components/sortable.js +2 -2
  40. package/dist/js/components/sortable.min.js +1 -1
  41. package/dist/js/components/tooltip.js +95 -95
  42. package/dist/js/components/tooltip.min.js +1 -1
  43. package/dist/js/components/upload.js +2 -2
  44. package/dist/js/components/upload.min.js +1 -1
  45. package/dist/js/uikit-core.js +459 -452
  46. package/dist/js/uikit-core.min.js +1 -1
  47. package/dist/js/uikit-icons.js +1 -1
  48. package/dist/js/uikit-icons.min.js +1 -1
  49. package/dist/js/uikit.js +6832 -6831
  50. package/dist/js/uikit.min.js +1 -1
  51. package/package.json +8 -7
  52. package/src/js/api/app.js +1 -1
  53. package/src/js/api/boot.js +2 -2
  54. package/src/js/api/component.js +1 -1
  55. package/src/js/api/computed.js +2 -2
  56. package/src/js/api/events.js +2 -2
  57. package/src/js/api/global.js +3 -3
  58. package/src/js/api/hooks.js +4 -4
  59. package/src/js/api/instance.js +3 -3
  60. package/src/js/api/log.js +1 -1
  61. package/src/js/api/observables.js +12 -6
  62. package/src/js/api/observer.js +2 -2
  63. package/src/js/api/options.js +2 -2
  64. package/src/js/api/props.js +2 -2
  65. package/src/js/api/state.js +2 -2
  66. package/src/js/components/countdown.js +1 -1
  67. package/src/js/components/filter.js +5 -5
  68. package/src/js/components/internal/lightbox-animations.js +1 -1
  69. package/src/js/components/internal/slider-transitioner.js +6 -6
  70. package/src/js/components/internal/slideshow-animations.js +1 -1
  71. package/src/js/components/lightbox-panel.js +10 -10
  72. package/src/js/components/lightbox.js +2 -2
  73. package/src/js/components/notification.js +4 -4
  74. package/src/js/components/parallax.js +5 -5
  75. package/src/js/components/slider-parallax.js +1 -1
  76. package/src/js/components/slider.js +12 -12
  77. package/src/js/components/slideshow.js +3 -3
  78. package/src/js/components/sortable.js +4 -4
  79. package/src/js/components/tooltip.js +6 -6
  80. package/src/js/components/upload.js +4 -4
  81. package/src/js/core/accordion.js +8 -8
  82. package/src/js/core/alert.js +2 -2
  83. package/src/js/core/cover.js +1 -1
  84. package/src/js/core/drop.js +12 -12
  85. package/src/js/core/dropnav.js +7 -7
  86. package/src/js/core/form-custom.js +1 -1
  87. package/src/js/core/grid.js +9 -9
  88. package/src/js/core/height-match.js +2 -2
  89. package/src/js/core/height-viewport.js +1 -1
  90. package/src/js/core/icon.js +23 -23
  91. package/src/js/core/img.js +2 -2
  92. package/src/js/core/index.js +16 -14
  93. package/src/js/core/leader.js +2 -2
  94. package/src/js/core/modal.js +7 -7
  95. package/src/js/core/navbar.js +4 -4
  96. package/src/js/core/offcanvas.js +3 -3
  97. package/src/js/core/overflow-auto.js +3 -3
  98. package/src/js/core/responsive.js +3 -3
  99. package/src/js/core/scrollspy-nav.js +1 -1
  100. package/src/js/core/scrollspy.js +1 -1
  101. package/src/js/core/sticky.js +13 -13
  102. package/src/js/core/svg.js +4 -4
  103. package/src/js/core/switcher.js +7 -7
  104. package/src/js/core/tab.js +2 -2
  105. package/src/js/core/toggle.js +5 -5
  106. package/src/js/core/video.js +1 -1
  107. package/src/js/mixin/animate.js +1 -1
  108. package/src/js/mixin/i18n.js +1 -1
  109. package/src/js/mixin/internal/animate-fade.js +14 -14
  110. package/src/js/mixin/internal/animate-slide.js +1 -1
  111. package/src/js/mixin/internal/scroll.js +1 -1
  112. package/src/js/mixin/modal.js +15 -12
  113. package/src/js/mixin/parallax.js +2 -2
  114. package/src/js/mixin/position.js +2 -2
  115. package/src/js/mixin/slider-drag.js +1 -1
  116. package/src/js/mixin/slider-nav.js +8 -14
  117. package/src/js/mixin/slider.js +9 -9
  118. package/src/js/mixin/slideshow.js +1 -1
  119. package/src/js/mixin/togglable.js +4 -4
  120. package/src/js/uikit-core.js +2 -2
  121. package/src/js/uikit.js +2 -2
  122. package/src/js/util/animation.js +8 -8
  123. package/src/js/util/class.js +1 -1
  124. package/src/js/util/dimensions.js +5 -5
  125. package/src/js/util/dom.js +3 -3
  126. package/src/js/util/event.js +3 -3
  127. package/src/js/util/filter.js +1 -1
  128. package/src/js/util/lang.js +4 -4
  129. package/src/js/util/observer.js +2 -2
  130. package/src/js/util/player.js +1 -1
  131. package/src/js/util/position.js +5 -5
  132. package/src/js/util/selector.js +1 -1
  133. package/src/js/util/style.js +1 -1
  134. package/src/js/util/svg.js +2 -2
  135. package/src/js/util/viewport.js +6 -6
  136. package/src/less/components/slider.less +8 -2
  137. package/src/scss/components/inverse.scss +0 -1
  138. package/src/scss/components/slider.scss +8 -2
  139. package/src/scss/mixins-theme.scss +560 -552
  140. package/src/scss/mixins.scss +456 -448
  141. package/src/scss/variables-theme.scss +2 -2
  142. package/src/scss/variables.scss +2 -2
  143. package/tests/js/index.js +7 -7
  144. package/build/scss/inverse.scss +0 -30
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.16.24 | https://www.getuikit.com | (c) 2014 - 2023 YOOtheme | MIT License */
1
+ /*! UIkit 3.16.25-dev.931f07bf4 | https://www.getuikit.com | (c) 2014 - 2023 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('uikit-util')) :
@@ -12,6 +12,23 @@
12
12
  }
13
13
  };
14
14
 
15
+ var SliderReactive = {
16
+ update: {
17
+ write() {
18
+ if (this.stack.length || this.dragging) {
19
+ return;
20
+ }
21
+ const index = this.getValidIndex(this.index);
22
+ if (!~this.prevIndex || this.index !== index) {
23
+ this.show(index);
24
+ } else {
25
+ this._translate(1, this.prevIndex, this.index);
26
+ }
27
+ },
28
+ events: ["resize"]
29
+ }
30
+ };
31
+
15
32
  var Animations$1 = {
16
33
  slide: {
17
34
  show(dir) {
@@ -33,10 +50,10 @@
33
50
  }
34
51
  function translate(value = 0, unit = "%") {
35
52
  value += value ? unit : "";
36
- return `translate3d(${value}, 0, 0)`;
53
+ return "translate3d(".concat(value, ", 0, 0)");
37
54
  }
38
55
  function scale3d(value) {
39
- return `scale3d(${value}, ${value}, 1)`;
56
+ return "scale3d(".concat(value, ", ").concat(value, ", 1)");
40
57
  }
41
58
 
42
59
  function Transitioner(prev, next, dir, { animation, easing }) {
@@ -94,6 +111,36 @@
94
111
  util.trigger(el, util.createEvent(type, false, false, data));
95
112
  }
96
113
 
114
+ function resize(options) {
115
+ return observe(util.observeResize, options, "resize");
116
+ }
117
+ function intersection(options) {
118
+ return observe(util.observeIntersection, options);
119
+ }
120
+ function lazyload(options = {}) {
121
+ return intersection({
122
+ handler: function(entries, observer) {
123
+ const { targets = this.$el, preload = 5 } = options;
124
+ for (const el of util.toNodes(util.isFunction(targets) ? targets(this) : targets)) {
125
+ util.$$('[loading="lazy"]', el).slice(0, preload - 1).forEach((el2) => util.removeAttr(el2, "loading"));
126
+ }
127
+ for (const el of entries.filter(({ isIntersecting }) => isIntersecting).map(({ target }) => target)) {
128
+ observer.unobserve(el);
129
+ }
130
+ },
131
+ ...options
132
+ });
133
+ }
134
+ function observe(observe2, options, emit) {
135
+ return {
136
+ observe: observe2,
137
+ handler() {
138
+ this.$emit(emit);
139
+ },
140
+ ...options
141
+ };
142
+ }
143
+
97
144
  var I18n = {
98
145
  props: {
99
146
  i18n: Object
@@ -113,201 +160,56 @@
113
160
  }
114
161
  };
115
162
 
116
- const keyMap = {
117
- TAB: 9,
118
- ESC: 27,
119
- SPACE: 32,
120
- END: 35,
121
- HOME: 36,
122
- LEFT: 37,
123
- UP: 38,
124
- RIGHT: 39,
125
- DOWN: 40
126
- };
127
-
128
- function generateId(instance, el = instance.$el, postfix = "") {
129
- if (el.id) {
130
- return el.id;
131
- }
132
- let id = `${instance.$options.id}-${instance._uid}${postfix}`;
133
- if (util.$(`#${id}`)) {
134
- id = generateId(instance, el, `${postfix}-2`);
135
- }
136
- return id;
137
- }
138
-
139
- var SliderNav = {
140
- i18n: {
141
- next: "Next slide",
142
- previous: "Previous slide",
143
- slideX: "Slide %s",
144
- slideLabel: "%s of %s",
145
- role: "String"
163
+ var SliderAutoplay = {
164
+ props: {
165
+ autoplay: Boolean,
166
+ autoplayInterval: Number,
167
+ pauseOnHover: Boolean
146
168
  },
147
169
  data: {
148
- selNav: false,
149
- role: "region"
170
+ autoplay: false,
171
+ autoplayInterval: 7e3,
172
+ pauseOnHover: true
150
173
  },
151
- computed: {
152
- nav({ selNav }, $el) {
153
- return util.$(selNav, $el);
154
- },
155
- navChildren() {
156
- return util.children(this.nav);
157
- },
158
- selNavItem({ attrItem }) {
159
- return `[${attrItem}],[data-${attrItem}]`;
160
- },
161
- navItems(_, $el) {
162
- return util.$$(this.selNavItem, $el);
163
- }
174
+ connected() {
175
+ util.attr(this.list, "aria-live", this.autoplay ? "off" : "polite");
176
+ this.autoplay && this.startAutoplay();
164
177
  },
165
- watch: {
166
- nav(nav, prev) {
167
- util.attr(nav, "role", "tablist");
168
- if (prev) {
169
- this.$emit();
170
- }
171
- },
172
- list(list) {
173
- util.attr(list, "role", "presentation");
174
- },
175
- navChildren(children2) {
176
- util.attr(children2, "role", "presentation");
177
- },
178
- navItems(items) {
179
- for (const el of items) {
180
- const cmd = util.data(el, this.attrItem);
181
- const button = util.$("a,button", el) || el;
182
- let ariaLabel;
183
- let ariaControls = null;
184
- if (util.isNumeric(cmd)) {
185
- const item = util.toNumber(cmd);
186
- const slide = this.slides[item];
187
- if (slide) {
188
- if (!slide.id) {
189
- slide.id = generateId(this, slide, `-item-${cmd}`);
190
- }
191
- ariaControls = slide.id;
192
- }
193
- ariaLabel = this.t("slideX", util.toFloat(cmd) + 1);
194
- util.attr(button, "role", "tab");
195
- } else {
196
- if (this.list) {
197
- if (!this.list.id) {
198
- this.list.id = generateId(this, this.list, "-items");
199
- }
200
- ariaControls = this.list.id;
201
- }
202
- ariaLabel = this.t(cmd);
203
- }
204
- util.attr(button, {
205
- "aria-controls": ariaControls,
206
- "aria-label": util.attr(button, "aria-label") || ariaLabel
207
- });
208
- }
209
- },
210
- slides(slides) {
211
- slides.forEach(
212
- (slide, i) => util.attr(slide, {
213
- role: this.nav ? "tabpanel" : "group",
214
- "aria-label": this.t("slideLabel", i + 1, this.length),
215
- "aria-roledescription": this.nav ? null : "slide"
216
- })
217
- );
218
- },
219
- length(length) {
220
- const navLength = this.navChildren.length;
221
- if (this.nav && length !== navLength) {
222
- util.empty(this.nav);
223
- for (let i = 0; i < length; i++) {
224
- util.append(this.nav, `<li ${this.attrItem}="${i}"><a href></a></li>`);
225
- }
226
- }
227
- }
178
+ disconnected() {
179
+ this.stopAutoplay();
228
180
  },
229
- connected() {
230
- util.attr(this.$el, {
231
- role: this.role,
232
- "aria-roledescription": "carousel"
233
- });
181
+ update() {
182
+ util.attr(this.slides, "tabindex", "-1");
234
183
  },
235
- update: [
236
- {
237
- write() {
238
- this.navItems.concat(this.nav).forEach((el) => el && (el.hidden = !this.maxIndex));
239
- this.updateNav();
240
- },
241
- events: ["resize"]
242
- }
243
- ],
244
184
  events: [
245
185
  {
246
- name: "click keydown",
247
- delegate() {
248
- return this.selNavItem;
186
+ name: "visibilitychange",
187
+ el() {
188
+ return document;
249
189
  },
250
- handler(e) {
251
- if (util.closest(e.target, "a,button") && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
252
- e.preventDefault();
253
- this.show(util.data(e.current, this.attrItem));
254
- }
255
- }
256
- },
257
- {
258
- name: "itemshow",
259
- handler: "updateNav"
260
- },
261
- {
262
- name: "keydown",
263
- delegate() {
264
- return this.selNavItem;
190
+ filter() {
191
+ return this.autoplay;
265
192
  },
266
- handler(e) {
267
- const { current, keyCode } = e;
268
- const cmd = util.data(current, this.attrItem);
269
- if (!util.isNumeric(cmd)) {
270
- return;
271
- }
272
- let i = keyCode === keyMap.HOME ? 0 : keyCode === keyMap.END ? "last" : keyCode === keyMap.LEFT ? "previous" : keyCode === keyMap.RIGHT ? "next" : -1;
273
- if (~i) {
274
- e.preventDefault();
275
- this.show(i);
193
+ handler() {
194
+ if (document.hidden) {
195
+ this.stopAutoplay();
196
+ } else {
197
+ this.startAutoplay();
276
198
  }
277
199
  }
278
200
  }
279
201
  ],
280
202
  methods: {
281
- updateNav() {
282
- const index = this.getValidIndex();
283
- let focus;
284
- let focusEl;
285
- for (const el of this.navItems) {
286
- const cmd = util.data(el, this.attrItem);
287
- const button = util.$("a,button", el) || el;
288
- if (util.isNumeric(cmd)) {
289
- const item = util.toNumber(cmd);
290
- const active = item === index;
291
- util.toggleClass(el, this.clsActive, active);
292
- util.attr(button, {
293
- "aria-selected": active,
294
- tabindex: active ? null : -1
295
- });
296
- if (active) {
297
- focusEl = button;
298
- }
299
- focus || (focus = util.matches(button, ":focus"));
300
- } else {
301
- util.toggleClass(
302
- el,
303
- "uk-invisible",
304
- this.finite && (cmd === "previous" && index === 0 || cmd === "next" && index >= this.maxIndex)
305
- );
306
- }
307
- if (focus && focusEl) {
308
- focusEl.focus();
203
+ startAutoplay() {
204
+ this.stopAutoplay();
205
+ this.interval = setInterval(() => {
206
+ if (!(this.stack.length || this.draggable && util.matches(this.$el, ":focus-within") || this.pauseOnHover && util.matches(this.$el, ":hover"))) {
207
+ this.show("next");
309
208
  }
310
- }
209
+ }, this.autoplayInterval);
210
+ },
211
+ stopAutoplay() {
212
+ clearInterval(this.interval);
311
213
  }
312
214
  }
313
215
  };
@@ -341,7 +243,7 @@
341
243
  name: pointerDown,
342
244
  passive: true,
343
245
  delegate() {
344
- return `${this.selList} > *`;
246
+ return "".concat(this.selList, " > *");
345
247
  },
346
248
  handler(e) {
347
249
  if (!this.draggable || !util.isTouch(e) && hasSelectableText(e.target) || util.closest(e.target, util.selInput) || e.button > 0 || this.length < 2) {
@@ -467,90 +369,199 @@
467
369
  return util.css(el, "userSelect") !== "none" && util.toArray(el.childNodes).some((el2) => el2.nodeType === 3 && el2.textContent.trim());
468
370
  }
469
371
 
470
- var SliderAutoplay = {
471
- props: {
472
- autoplay: Boolean,
473
- autoplayInterval: Number,
474
- pauseOnHover: Boolean
372
+ function generateId(instance, el = instance.$el, postfix = "") {
373
+ if (el.id) {
374
+ return el.id;
375
+ }
376
+ let id = "".concat(instance.$options.id, "-").concat(instance._uid).concat(postfix);
377
+ if (util.$("#".concat(id))) {
378
+ id = generateId(instance, el, "".concat(postfix, "-2"));
379
+ }
380
+ return id;
381
+ }
382
+
383
+ const keyMap = {
384
+ TAB: 9,
385
+ ESC: 27,
386
+ SPACE: 32,
387
+ END: 35,
388
+ HOME: 36,
389
+ LEFT: 37,
390
+ UP: 38,
391
+ RIGHT: 39,
392
+ DOWN: 40
393
+ };
394
+
395
+ var SliderNav = {
396
+ i18n: {
397
+ next: "Next slide",
398
+ previous: "Previous slide",
399
+ slideX: "Slide %s",
400
+ slideLabel: "%s of %s",
401
+ role: "String"
475
402
  },
476
403
  data: {
477
- autoplay: false,
478
- autoplayInterval: 7e3,
479
- pauseOnHover: true
404
+ selNav: false,
405
+ role: "region"
480
406
  },
481
- connected() {
482
- util.attr(this.list, "aria-live", this.autoplay ? "off" : "polite");
483
- this.autoplay && this.startAutoplay();
407
+ computed: {
408
+ nav({ selNav }, $el) {
409
+ return util.$(selNav, $el);
410
+ },
411
+ navChildren() {
412
+ return util.children(this.nav);
413
+ },
414
+ selNavItem({ attrItem }) {
415
+ return "[".concat(attrItem, "],[data-").concat(attrItem, "]");
416
+ },
417
+ navItems(_, $el) {
418
+ return util.$$(this.selNavItem, $el);
419
+ }
484
420
  },
485
- disconnected() {
486
- this.stopAutoplay();
421
+ watch: {
422
+ nav(nav, prev) {
423
+ util.attr(nav, "role", "tablist");
424
+ if (prev) {
425
+ this.$emit();
426
+ }
427
+ },
428
+ list(list) {
429
+ util.attr(list, "role", "presentation");
430
+ },
431
+ navChildren(children2) {
432
+ util.attr(children2, "role", "presentation");
433
+ },
434
+ navItems(items) {
435
+ for (const el of items) {
436
+ const cmd = util.data(el, this.attrItem);
437
+ const button = util.$("a,button", el) || el;
438
+ let ariaLabel;
439
+ let ariaControls = null;
440
+ if (util.isNumeric(cmd)) {
441
+ const item = util.toNumber(cmd);
442
+ const slide = this.slides[item];
443
+ if (slide) {
444
+ if (!slide.id) {
445
+ slide.id = generateId(this, slide, "-item-".concat(cmd));
446
+ }
447
+ ariaControls = slide.id;
448
+ }
449
+ ariaLabel = this.t("slideX", util.toFloat(cmd) + 1);
450
+ util.attr(button, "role", "tab");
451
+ } else {
452
+ if (this.list) {
453
+ if (!this.list.id) {
454
+ this.list.id = generateId(this, this.list, "-items");
455
+ }
456
+ ariaControls = this.list.id;
457
+ }
458
+ ariaLabel = this.t(cmd);
459
+ }
460
+ util.attr(button, {
461
+ "aria-controls": ariaControls,
462
+ "aria-label": util.attr(button, "aria-label") || ariaLabel
463
+ });
464
+ }
465
+ },
466
+ slides(slides) {
467
+ slides.forEach(
468
+ (slide, i) => util.attr(slide, {
469
+ role: this.nav ? "tabpanel" : "group",
470
+ "aria-label": this.t("slideLabel", i + 1, this.length),
471
+ "aria-roledescription": this.nav ? null : "slide"
472
+ })
473
+ );
474
+ },
475
+ length(length) {
476
+ const navLength = this.navChildren.length;
477
+ if (this.nav && length !== navLength) {
478
+ util.empty(this.nav);
479
+ for (let i = 0; i < length; i++) {
480
+ util.append(this.nav, "<li ".concat(this.attrItem, '="').concat(i, '"><a href></a></li>'));
481
+ }
482
+ }
483
+ }
487
484
  },
488
- update() {
489
- util.attr(this.slides, "tabindex", "-1");
485
+ connected() {
486
+ util.attr(this.$el, {
487
+ role: this.role,
488
+ "aria-roledescription": "carousel"
489
+ });
490
490
  },
491
+ update: [
492
+ {
493
+ write() {
494
+ this.navItems.concat(this.nav).forEach((el) => el && (el.hidden = !this.maxIndex));
495
+ this.updateNav();
496
+ },
497
+ events: ["resize"]
498
+ }
499
+ ],
491
500
  events: [
492
501
  {
493
- name: "visibilitychange",
494
- el() {
495
- return document;
502
+ name: "click keydown",
503
+ delegate() {
504
+ return this.selNavItem;
496
505
  },
497
- filter() {
498
- return this.autoplay;
506
+ handler(e) {
507
+ if (util.closest(e.target, "a,button") && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
508
+ e.preventDefault();
509
+ this.show(util.data(e.current, this.attrItem));
510
+ }
511
+ }
512
+ },
513
+ {
514
+ name: "itemshow",
515
+ handler: "updateNav"
516
+ },
517
+ {
518
+ name: "keydown",
519
+ delegate() {
520
+ return this.selNavItem;
499
521
  },
500
- handler() {
501
- if (document.hidden) {
502
- this.stopAutoplay();
503
- } else {
504
- this.startAutoplay();
522
+ handler(e) {
523
+ const { current, keyCode } = e;
524
+ const cmd = util.data(current, this.attrItem);
525
+ if (!util.isNumeric(cmd)) {
526
+ return;
527
+ }
528
+ let i = keyCode === keyMap.HOME ? 0 : keyCode === keyMap.END ? "last" : keyCode === keyMap.LEFT ? "previous" : keyCode === keyMap.RIGHT ? "next" : -1;
529
+ if (~i) {
530
+ e.preventDefault();
531
+ this.show(i);
505
532
  }
506
533
  }
507
534
  }
508
535
  ],
509
536
  methods: {
510
- startAutoplay() {
511
- this.stopAutoplay();
512
- this.interval = setInterval(() => {
513
- if (!(this.stack.length || this.draggable && util.matches(this.$el, ":focus-within") || this.pauseOnHover && util.matches(this.$el, ":hover"))) {
514
- this.show("next");
537
+ updateNav() {
538
+ const index = this.getValidIndex();
539
+ for (const el of this.navItems) {
540
+ const cmd = util.data(el, this.attrItem);
541
+ const button = util.$("a,button", el) || el;
542
+ if (util.isNumeric(cmd)) {
543
+ const item = util.toNumber(cmd);
544
+ const active = item === index;
545
+ util.toggleClass(el, this.clsActive, active);
546
+ util.attr(button, {
547
+ "aria-selected": active,
548
+ tabindex: active ? null : -1
549
+ });
550
+ if (active && button && util.matches(util.parent(el), ":focus-within")) {
551
+ button.focus();
552
+ }
553
+ } else {
554
+ util.toggleClass(
555
+ el,
556
+ "uk-invisible",
557
+ this.finite && (cmd === "previous" && index === 0 || cmd === "next" && index >= this.maxIndex)
558
+ );
515
559
  }
516
- }, this.autoplayInterval);
517
- },
518
- stopAutoplay() {
519
- clearInterval(this.interval);
560
+ }
520
561
  }
521
562
  }
522
563
  };
523
564
 
524
- function resize(options) {
525
- return observe(util.observeResize, options, "resize");
526
- }
527
- function intersection(options) {
528
- return observe(util.observeIntersection, options);
529
- }
530
- function lazyload(options = {}) {
531
- return intersection({
532
- handler: function(entries, observer) {
533
- const { targets = this.$el, preload = 5 } = options;
534
- for (const el of util.toNodes(util.isFunction(targets) ? targets(this) : targets)) {
535
- util.$$('[loading="lazy"]', el).slice(0, preload - 1).forEach((el2) => util.removeAttr(el2, "loading"));
536
- }
537
- for (const el of entries.filter(({ isIntersecting }) => isIntersecting).map(({ target }) => target)) {
538
- observer.unobserve(el);
539
- }
540
- },
541
- ...options
542
- });
543
- }
544
- function observe(observe2, options, emit) {
545
- return {
546
- observe: observe2,
547
- handler() {
548
- this.$emit(emit);
549
- },
550
- ...options
551
- };
552
- }
553
-
554
565
  var Slider = {
555
566
  mixins: [SliderAutoplay, SliderDrag, SliderNav, I18n],
556
567
  props: {
@@ -733,6 +744,13 @@
733
744
  }
734
745
  };
735
746
 
747
+ var SliderPreload = {
748
+ observe: lazyload({
749
+ target: ({ slides }) => slides,
750
+ targets: (instance) => instance.getAdjacentSlides()
751
+ })
752
+ };
753
+
736
754
  var Animations = {
737
755
  ...Animations$1,
738
756
  fade: {
@@ -808,30 +826,6 @@
808
826
  }
809
827
  };
810
828
 
811
- var SliderReactive = {
812
- update: {
813
- write() {
814
- if (this.stack.length || this.dragging) {
815
- return;
816
- }
817
- const index = this.getValidIndex(this.index);
818
- if (!~this.prevIndex || this.index !== index) {
819
- this.show(index);
820
- } else {
821
- this._translate(1, this.prevIndex, this.index);
822
- }
823
- },
824
- events: ["resize"]
825
- }
826
- };
827
-
828
- var SliderPreload = {
829
- observe: lazyload({
830
- target: ({ slides }) => slides,
831
- targets: (instance) => instance.getAdjacentSlides()
832
- })
833
- };
834
-
835
829
  var Component = {
836
830
  mixins: [Class, Slideshow, SliderReactive, SliderPreload],
837
831
  props: {