uikit 3.19.5-dev.57ec46163 → 3.19.5-dev.5db24934f

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 (70) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/css/uikit-core-rtl.css +2 -2
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +2 -2
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +2 -2
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +2 -2
  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 -2
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +55 -55
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +55 -55
  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 +73 -48
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +74 -49
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +75 -51
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +74 -49
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +74 -49
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +2 -2
  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 +170 -112
  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 +179 -119
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/boot.js +6 -7
  44. package/src/js/api/component.js +4 -4
  45. package/src/js/api/computed.js +24 -23
  46. package/src/js/api/observer.js +17 -5
  47. package/src/js/components/slider-parallax.js +2 -2
  48. package/src/js/components/slider.js +1 -1
  49. package/src/js/core/drop.js +1 -2
  50. package/src/js/core/height-placeholder.js +5 -2
  51. package/src/js/core/height-viewport.js +1 -1
  52. package/src/js/core/icon.js +2 -3
  53. package/src/js/core/img.js +1 -1
  54. package/src/js/core/inverse.js +22 -5
  55. package/src/js/core/modal.js +5 -6
  56. package/src/js/core/sticky.js +1 -1
  57. package/src/js/core/switcher.js +5 -1
  58. package/src/js/core/toggle.js +7 -3
  59. package/src/js/mixin/internal/animate-fade.js +1 -3
  60. package/src/js/mixin/parallax.js +7 -3
  61. package/src/js/mixin/slider.js +0 -3
  62. package/src/js/mixin/slideshow.js +3 -0
  63. package/src/js/util/filter.js +7 -14
  64. package/src/js/util/lang.js +1 -1
  65. package/src/js/util/selector.js +71 -38
  66. package/src/js/util/svg.js +1 -12
  67. package/src/less/components/utility.less +1 -1
  68. package/src/scss/components/utility.scss +1 -1
  69. package/tests/js/index.js +12 -10
  70. package/tests/modal.html +2 -2
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.19.5-dev.57ec46163 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
1
+ /*! UIkit 3.19.5-dev.5db24934f | 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() :
@@ -88,7 +88,7 @@
88
88
  return parseFloat(value) || 0;
89
89
  }
90
90
  function toNode(element) {
91
- return toNodes(element)[0];
91
+ return element && toNodes(element)[0];
92
92
  }
93
93
  function toNodes(element) {
94
94
  return isNode(element) ? [element] : Array.from(element || []).filter(isNode);
@@ -296,10 +296,11 @@
296
296
  function isVoidElement(element) {
297
297
  return toNodes(element).some((element2) => voidElements[element2.tagName.toLowerCase()]);
298
298
  }
299
+ const isVisibleFn = Element.prototype.checkVisibility || function() {
300
+ return this.offsetWidth || this.offsetHeight || this.getClientRects().length;
301
+ };
299
302
  function isVisible(element) {
300
- return toNodes(element).some(
301
- (element2) => element2.offsetWidth || element2.offsetHeight || element2.getClientRects().length
302
- );
303
+ return toNodes(element).some((element2) => isVisibleFn.call(element2));
303
304
  }
304
305
  const selInput = "input,select,textarea,button";
305
306
  function isInput(element) {
@@ -319,13 +320,6 @@
319
320
  function matches(element, selector) {
320
321
  return toNodes(element).some((element2) => element2.matches(selector));
321
322
  }
322
- function closest(element, selector) {
323
- var _a;
324
- return (_a = toNode(element)) == null ? void 0 : _a.closest(startsWith(selector, ">") ? selector.slice(1) : selector);
325
- }
326
- function within(element, selector) {
327
- return isString(selector) ? !!closest(element, selector) : toNode(selector).contains(toNode(element));
328
- }
329
323
  function parents(element, selector) {
330
324
  const elements = [];
331
325
  while (element = parent(element)) {
@@ -367,55 +361,86 @@
367
361
  function findAll(selector, context) {
368
362
  return toNodes(_query(selector, toNode(context), "querySelectorAll"));
369
363
  }
370
- const contextSelectorRe = /(^|[^\\],)\s*[!>+~-]/;
371
- const isContextSelector = memoize((selector) => selector.match(contextSelectorRe));
372
364
  function getContext(selector, context = document) {
373
- return isString(selector) && isContextSelector(selector) || isDocument(context) ? context : context.ownerDocument;
365
+ return isString(selector) && parseSelector(selector).isContextSelector || isDocument(context) ? context : context.ownerDocument;
374
366
  }
375
- const contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g;
376
- const sanatize = memoize((selector) => selector.replace(contextSanitizeRe, "$1 *"));
367
+ const addStarRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g;
368
+ const splitSelectorRe = /.*?[^\\](?![^(]*\))(?:,|$)/g;
369
+ const trailingCommaRe = /\s*,$/;
370
+ const parseSelector = memoize((selector) => {
371
+ var _a;
372
+ selector = selector.replace(addStarRe, "$1 *");
373
+ let isContextSelector = false;
374
+ const selectors = [];
375
+ for (let sel of (_a = selector.match(splitSelectorRe)) != null ? _a : []) {
376
+ sel = sel.replace(trailingCommaRe, "").trim();
377
+ if (sel[0] === ">") {
378
+ sel = `:scope ${sel}`;
379
+ }
380
+ isContextSelector || (isContextSelector = ["!", "+", "~", "-"].includes(sel[0]));
381
+ selectors.push(sel);
382
+ }
383
+ return {
384
+ selector: selectors.join(","),
385
+ selectors,
386
+ isContextSelector
387
+ };
388
+ });
389
+ const parsePositionSelector = memoize((selector) => {
390
+ selector = selector.substr(1).trim();
391
+ const index2 = selector.indexOf(" ");
392
+ return ~index2 ? [selector.substring(0, index2), selector.substring(index2 + 1)] : [selector, ""];
393
+ });
377
394
  function _query(selector, context = document, queryFn) {
378
395
  if (!selector || !isString(selector)) {
379
396
  return selector;
380
397
  }
381
- selector = sanatize(selector);
382
- if (isContextSelector(selector)) {
383
- const split = splitSelector(selector);
384
- selector = "";
385
- for (let sel of split) {
386
- let ctx = context;
387
- if (sel[0] === "!") {
388
- const selectors = sel.substr(1).trim().split(" ");
389
- ctx = parent(context).closest(selectors[0]);
390
- sel = selectors.slice(1).join(" ").trim();
391
- if (!sel.length && split.length === 1) {
392
- return ctx;
393
- }
394
- }
395
- if (sel[0] === "-") {
396
- const selectors = sel.substr(1).trim().split(" ");
397
- const prev = (ctx || context).previousElementSibling;
398
- ctx = matches(prev, sel.substr(1)) ? prev : null;
399
- sel = selectors.slice(1).join(" ");
400
- }
401
- if (ctx) {
402
- selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
403
- }
398
+ const parsed = parseSelector(selector);
399
+ if (!parsed.isContextSelector) {
400
+ return _doQuery(context, queryFn, parsed.selector);
401
+ }
402
+ selector = "";
403
+ const isSingle = parsed.selectors.length === 1;
404
+ for (let sel of parsed.selectors) {
405
+ let positionSel;
406
+ let ctx = context;
407
+ if (sel[0] === "!") {
408
+ [positionSel, sel] = parsePositionSelector(sel);
409
+ ctx = context.parentElement.closest(positionSel);
410
+ if (!sel && isSingle) {
411
+ return ctx;
412
+ }
413
+ }
414
+ if (ctx && sel[0] === "-") {
415
+ [positionSel, sel] = parsePositionSelector(sel);
416
+ ctx = ctx.previousElementSibling;
417
+ ctx = matches(ctx, positionSel) ? ctx : null;
418
+ if (!sel && isSingle) {
419
+ return ctx;
420
+ }
421
+ } else if (sel[0] === "~" || sel[0] === "+" && isSingle) {
422
+ return _doQuery(
423
+ ctx.parentElement,
424
+ queryFn,
425
+ `:scope :nth-child(${index(ctx) + 1}) ${sel}`
426
+ );
404
427
  }
405
- if (!isDocument(context)) {
406
- context = context.ownerDocument;
428
+ if (ctx) {
429
+ selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
407
430
  }
408
431
  }
432
+ if (!isDocument(context)) {
433
+ context = context.ownerDocument;
434
+ }
435
+ return _doQuery(context, queryFn, selector);
436
+ }
437
+ function _doQuery(context, queryFn, selector) {
409
438
  try {
410
439
  return context[queryFn](selector);
411
440
  } catch (e) {
412
441
  return null;
413
442
  }
414
443
  }
415
- const selectorRe = /.*?[^\\](?![^(]*\))(?:,|$)/g;
416
- const splitSelector = memoize(
417
- (selector) => selector.match(selectorRe).map((selector2) => selector2.replace(/,$/, "").trim())
418
- );
419
444
  function domPath(element) {
420
445
  const names = [];
421
446
  while (element.parentNode) {
@@ -1540,7 +1565,6 @@
1540
1565
  camelize: camelize,
1541
1566
  children: children,
1542
1567
  clamp: clamp,
1543
- closest: closest,
1544
1568
  createEvent: createEvent,
1545
1569
  css: css,
1546
1570
  data: data,
@@ -1661,7 +1685,6 @@
1661
1685
  uniqueBy: uniqueBy,
1662
1686
  unwrap: unwrap,
1663
1687
  width: width,
1664
- within: within,
1665
1688
  wrapAll: wrapAll,
1666
1689
  wrapInner: wrapInner
1667
1690
  });
@@ -2164,7 +2187,7 @@
2164
2187
  );
2165
2188
  }
2166
2189
  function getTransitionNodes(target) {
2167
- return getRows(children(target)).flat().filter((node) => isVisible(node));
2190
+ return getRows(children(target)).flat().filter(isVisible);
2168
2191
  }
2169
2192
  function awaitFrame$1() {
2170
2193
  return new Promise((resolve) => requestAnimationFrame(resolve));
@@ -3236,6 +3259,7 @@
3236
3259
  }
3237
3260
  }
3238
3261
  }
3262
+ const mutationOptions = { subtree: true, childList: true };
3239
3263
  function registerComputed(instance, key, cb) {
3240
3264
  instance._hasComputed = true;
3241
3265
  Object.defineProperty(instance, key, {
@@ -3244,6 +3268,15 @@
3244
3268
  const { _computed, $props, $el } = instance;
3245
3269
  if (!hasOwn(_computed, key)) {
3246
3270
  _computed[key] = (cb.get || cb).call(instance, $props, $el);
3271
+ if (cb.observe && instance._computedObserver) {
3272
+ const observeEl = cb.observe.call(instance, _computed[key]);
3273
+ if (observeEl && observeEl !== $el) {
3274
+ instance._computedObserver.observe(
3275
+ commonAncestor(observeEl, $el),
3276
+ mutationOptions
3277
+ );
3278
+ }
3279
+ }
3247
3280
  }
3248
3281
  return _computed[key];
3249
3282
  },
@@ -3264,11 +3297,16 @@
3264
3297
  read: () => runWatches(instance, resetComputed(instance)),
3265
3298
  events: ["resize", "computed"]
3266
3299
  });
3267
- registerComputedObserver();
3268
- instances$1.add(instance);
3300
+ instance._computedObserver = observeMutation(
3301
+ instance.$el,
3302
+ () => callUpdate(instance, "computed"),
3303
+ mutationOptions
3304
+ );
3269
3305
  }
3270
3306
  function disconnectComputedUpdates(instance) {
3271
- instances$1 == null ? void 0 : instances$1.delete(instance);
3307
+ var _a;
3308
+ (_a = instance._computedObserver) == null ? void 0 : _a.disconnect();
3309
+ delete instance._computedObserver;
3272
3310
  resetComputed(instance);
3273
3311
  }
3274
3312
  function resetComputed(instance) {
@@ -3276,22 +3314,11 @@
3276
3314
  instance._computed = {};
3277
3315
  return values;
3278
3316
  }
3279
- let observer;
3280
- let instances$1;
3281
- function registerComputedObserver() {
3282
- if (observer) {
3283
- return;
3317
+ function commonAncestor(element1, element2) {
3318
+ while (element1 && !element1.contains(element2)) {
3319
+ element1 = element1.parentNode;
3284
3320
  }
3285
- instances$1 = /* @__PURE__ */ new Set();
3286
- observer = new MutationObserver(() => {
3287
- for (const instance of instances$1) {
3288
- callUpdate(instance, "computed");
3289
- }
3290
- });
3291
- observer.observe(document, {
3292
- subtree: true,
3293
- childList: true
3294
- });
3321
+ return element1;
3295
3322
  }
3296
3323
 
3297
3324
  function initEvents(instance) {
@@ -3362,18 +3389,30 @@
3362
3389
  }
3363
3390
  const targets = hasOwn(instance, key) ? instance[key] : target;
3364
3391
  const observer = observe(targets, handler, options, args);
3365
- if (isFunction(target) && isArray(instance[key]) && observer.unobserve) {
3366
- registerWatch(instance, { handler: updateTargets(observer), immediate: false }, key);
3392
+ if (isFunction(target) && isArray(instance[key])) {
3393
+ registerWatch(
3394
+ instance,
3395
+ { handler: updateTargets(observer, options), immediate: false },
3396
+ key
3397
+ );
3367
3398
  }
3368
3399
  registerObserver(instance, observer);
3369
3400
  }
3370
- function updateTargets(observer) {
3401
+ function updateTargets(observer, options) {
3371
3402
  return (targets, prev) => {
3372
3403
  for (const target of prev) {
3373
- !includes(targets, target) && observer.unobserve(target);
3404
+ if (!includes(targets, target)) {
3405
+ if (observer.unobserve) {
3406
+ observer.unobserve(target);
3407
+ } else if (observer.observe) {
3408
+ observer.disconnect();
3409
+ }
3410
+ }
3374
3411
  }
3375
3412
  for (const target of targets) {
3376
- !includes(prev, target) && observer.observe(target);
3413
+ if (!includes(prev, target) || !observer.unobserve) {
3414
+ observer.observe(target, options);
3415
+ }
3377
3416
  }
3378
3417
  };
3379
3418
  }
@@ -3533,26 +3572,26 @@
3533
3572
  };
3534
3573
  App.util = util;
3535
3574
  App.options = {};
3536
- App.version = "3.19.5-dev.57ec46163";
3575
+ App.version = "3.19.5-dev.5db24934f";
3537
3576
 
3538
3577
  const PREFIX = "uk-";
3539
3578
  const DATA = "__uikit__";
3540
3579
  const components$2 = {};
3541
3580
  function component(name, options) {
3542
- var _a;
3581
+ var _a, _b;
3543
3582
  const id = PREFIX + hyphenate(name);
3544
3583
  if (!options) {
3545
- if (isPlainObject(components$2[id])) {
3584
+ if (!components$2[id].options) {
3546
3585
  components$2[id] = App.extend(components$2[id]);
3547
3586
  }
3548
3587
  return components$2[id];
3549
3588
  }
3550
3589
  name = camelize(name);
3551
3590
  App[name] = (element, data) => createComponent(name, element, data);
3552
- const opt = isPlainObject(options) ? { ...options } : options.options;
3591
+ const opt = (_a = options.options) != null ? _a : { ...options };
3553
3592
  opt.id = id;
3554
3593
  opt.name = name;
3555
- (_a = opt.install) == null ? void 0 : _a.call(opt, App, opt, name);
3594
+ (_b = opt.install) == null ? void 0 : _b.call(opt, App, opt, name);
3556
3595
  if (App._initialized && !opt.functional) {
3557
3596
  requestAnimationFrame(() => createComponent(name, `[${id}],[data-${id}]`));
3558
3597
  }
@@ -3560,7 +3599,7 @@
3560
3599
  }
3561
3600
  function createComponent(name, element, data, ...args) {
3562
3601
  const Component = component(name);
3563
- return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? $$(element).map(init)[0] : init();
3602
+ return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? findAll(element).map(init)[0] : init();
3564
3603
  function init(element2) {
3565
3604
  const instance = getComponent(element2, name);
3566
3605
  if (instance) {
@@ -3922,7 +3961,6 @@
3922
3961
  }
3923
3962
  }
3924
3963
  },
3925
- observe: resize(),
3926
3964
  events: {
3927
3965
  itemshow({ target }) {
3928
3966
  addClass(target, this.clsEnter, this.clsSlideActive);
@@ -4051,6 +4089,7 @@
4051
4089
  return { animation: this.animation };
4052
4090
  }
4053
4091
  },
4092
+ observe: resize(),
4054
4093
  events: {
4055
4094
  beforeitemshow({ target }) {
4056
4095
  addClass(target, this.clsActive);
@@ -4533,18 +4572,10 @@
4533
4572
  }
4534
4573
 
4535
4574
  function getMaxPathLength(el) {
4536
- return Math.ceil(
4537
- Math.max(
4538
- 0,
4539
- ...$$("[stroke]", el).map((stroke) => {
4540
- try {
4541
- return stroke.getTotalLength();
4542
- } catch (e) {
4543
- return 0;
4544
- }
4545
- })
4546
- )
4547
- );
4575
+ return Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => {
4576
+ var _a;
4577
+ return (_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke);
4578
+ })));
4548
4579
  }
4549
4580
 
4550
4581
  const props = {
@@ -4748,6 +4779,7 @@
4748
4779
  }
4749
4780
  };
4750
4781
  }
4782
+ const loading = {};
4751
4783
  const dimensions = {};
4752
4784
  function getBackgroundImageDimensions(el) {
4753
4785
  const src = css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
@@ -4757,11 +4789,12 @@
4757
4789
  const image = new Image();
4758
4790
  if (src) {
4759
4791
  image.src = src;
4760
- if (!image.naturalWidth) {
4761
- image.onload = () => {
4792
+ if (!image.naturalWidth && !loading[src]) {
4793
+ once(image, "error load", () => {
4762
4794
  dimensions[src] = toDimensions(image);
4763
4795
  trigger(el, createEvent("load", false));
4764
- };
4796
+ });
4797
+ loading[src] = true;
4765
4798
  return toDimensions(image);
4766
4799
  }
4767
4800
  }
@@ -5251,7 +5284,7 @@
5251
5284
  toggleClass(this.$el, this.clsContainer, !$(`.${this.clsContainer}`, this.$el));
5252
5285
  },
5253
5286
  observe: resize({
5254
- target: ({ slides }) => slides
5287
+ target: ({ slides, $el }) => [$el, ...slides]
5255
5288
  }),
5256
5289
  update: {
5257
5290
  write() {
@@ -5439,7 +5472,7 @@
5439
5472
  var sliderParallax = {
5440
5473
  mixins: [Parallax],
5441
5474
  beforeConnect() {
5442
- this.item = closest(this.$el, `.${this.$options.id.replace("parallax", "items")} > *`);
5475
+ this.item = this.$el.closest(`.${this.$options.id.replace("parallax", "items")} > *`);
5443
5476
  },
5444
5477
  disconnected() {
5445
5478
  this.item = null;
@@ -6376,14 +6409,14 @@
6376
6409
  if (name) {
6377
6410
  if (hasAttr(target, attributeName)) {
6378
6411
  createComponent(name, target);
6379
- return;
6412
+ } else {
6413
+ (_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();
6380
6414
  }
6381
- (_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();
6382
6415
  }
6383
6416
  }
6384
6417
  function connect(node) {
6385
6418
  const components2 = getComponents(node);
6386
- for (const name in getComponents(node)) {
6419
+ for (const name in components2) {
6387
6420
  callConnected(components2[name]);
6388
6421
  }
6389
6422
  for (const attributeName of node.getAttributeNames()) {
@@ -6393,7 +6426,7 @@
6393
6426
  }
6394
6427
  function disconnect(node) {
6395
6428
  const components2 = getComponents(node);
6396
- for (const name in getComponents(node)) {
6429
+ for (const name in components2) {
6397
6430
  callDisconnected(components2[name]);
6398
6431
  }
6399
6432
  }
@@ -6402,7 +6435,7 @@
6402
6435
  attribute = attribute.slice(5);
6403
6436
  }
6404
6437
  const cmp = components$2[attribute];
6405
- return cmp && (isPlainObject(cmp) ? cmp : cmp.options).name;
6438
+ return cmp && (cmp.options || cmp).name;
6406
6439
  }
6407
6440
 
6408
6441
  globalApi(App);
@@ -7145,7 +7178,8 @@
7145
7178
  document,
7146
7179
  `${pointerUp$1} ${pointerCancel} scroll`,
7147
7180
  ({ defaultPrevented, type, target: newTarget }) => {
7148
- if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !(drop.targetEl && within(target, drop.targetEl))) {
7181
+ var _a;
7182
+ if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {
7149
7183
  drop.hide(false);
7150
7184
  }
7151
7185
  },
@@ -7761,7 +7795,10 @@
7761
7795
  target: ""
7762
7796
  },
7763
7797
  computed: {
7764
- target: ({ target }, $el) => query(target, $el)
7798
+ target: {
7799
+ get: ({ target }, $el) => query(target, $el),
7800
+ observe: (target) => parent(target)
7801
+ }
7765
7802
  },
7766
7803
  observe: resize({ target: ({ target }) => target }),
7767
7804
  update: {
@@ -7817,7 +7854,7 @@
7817
7854
  const top = offsetPosition(offsetTopEl)[0] - offsetPosition(scrollElement)[0];
7818
7855
  minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : "";
7819
7856
  } else {
7820
- minHeight += ` - ${css(scrollElement, "paddingTop")}`;
7857
+ minHeight += ` - ${boxModelAdjust(scrollElement, "height", css(scrollElement, "boxSizing"))}px`;
7821
7858
  }
7822
7859
  }
7823
7860
  if (this.offsetBottom === true) {
@@ -8011,7 +8048,7 @@
8011
8048
  i18n: { toggle: "Open Search", submit: "Submit Search" },
8012
8049
  beforeConnect() {
8013
8050
  const isToggle = hasClass(this.$el, "uk-search-toggle") || hasClass(this.$el, "uk-navbar-toggle");
8014
- this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") && closest(this.$el, ".uk-search-large") ? "search-large" : closest(this.$el, ".uk-search-navbar") ? "search-navbar" : this.$props.icon;
8051
+ this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") && this.$el.closest(".uk-search-large") ? "search-large" : this.$el.closest(".uk-search-navbar") ? "search-navbar" : this.$props.icon;
8015
8052
  if (hasAttr(this.$el, "aria-label")) {
8016
8053
  return;
8017
8054
  }
@@ -8155,13 +8192,13 @@
8155
8192
  delete this.img;
8156
8193
  },
8157
8194
  observe: intersection({
8158
- target: ({ $el, $props }) => [$el, ...queryAll($props.target, $el)],
8159
8195
  handler(entries, observer) {
8160
8196
  this.load();
8161
8197
  observer.disconnect();
8162
8198
  },
8163
8199
  options: ({ margin }) => ({ rootMargin: margin }),
8164
- filter: ({ loading }) => loading === "lazy"
8200
+ filter: ({ loading }) => loading === "lazy",
8201
+ target: ({ $el, $props }) => $props.target ? [$el, ...queryAll($props.target, $el)] : $el
8165
8202
  }),
8166
8203
  methods: {
8167
8204
  load() {
@@ -8251,9 +8288,17 @@
8251
8288
  selActive: false
8252
8289
  },
8253
8290
  computed: {
8254
- target: ({ target }, $el) => target ? $$(target, $el) : [$el]
8291
+ target: ({ target }, $el) => target ? $$(target, $el) : $el
8255
8292
  },
8256
8293
  observe: [
8294
+ intersection({
8295
+ handler(entries) {
8296
+ this.isIntersecting = entries.some(({ isIntersecting }) => isIntersecting);
8297
+ this.$emit();
8298
+ },
8299
+ target: ({ target }) => target,
8300
+ args: { intersecting: false }
8301
+ }),
8257
8302
  mutation({
8258
8303
  target: ({ target }) => target,
8259
8304
  options: { attributes: true, attributeFilter: ["class"], attributeOldValue: true }
@@ -8261,7 +8306,10 @@
8261
8306
  {
8262
8307
  target: ({ target }) => target,
8263
8308
  observe: (target, handler) => {
8264
- const observer = observeResize([...target, document.documentElement], handler);
8309
+ const observer = observeResize(
8310
+ [...toNodes(target), document.documentElement],
8311
+ handler
8312
+ );
8265
8313
  const listener = [
8266
8314
  on(document, "scroll itemshown itemhidden", handler, {
8267
8315
  passive: true,
@@ -8277,6 +8325,8 @@
8277
8325
  })
8278
8326
  ];
8279
8327
  return {
8328
+ observe: observer.observe.bind(observer),
8329
+ unobserve: observer.unobserve.bind(observer),
8280
8330
  disconnect() {
8281
8331
  observer.disconnect();
8282
8332
  listener.map((off) => off());
@@ -8290,7 +8340,10 @@
8290
8340
  ],
8291
8341
  update: {
8292
8342
  read() {
8293
- for (const target of this.target) {
8343
+ if (!this.isIntersecting) {
8344
+ return false;
8345
+ }
8346
+ for (const target of toNodes(this.target)) {
8294
8347
  replaceClass(
8295
8348
  target,
8296
8349
  "uk-light,uk-dark",
@@ -8405,10 +8458,11 @@
8405
8458
  };
8406
8459
  function install({ modal }) {
8407
8460
  modal.dialog = function(content, options) {
8408
- const dialog = modal(
8409
- `<div class="uk-modal"> <div class="uk-modal-dialog">${content}</div> </div>`,
8410
- { stack: true, role: "alertdialog", ...options }
8411
- );
8461
+ const dialog = modal($(`<div><div class="uk-modal-dialog">${content}</div></div>`), {
8462
+ stack: true,
8463
+ role: "alertdialog",
8464
+ ...options
8465
+ });
8412
8466
  dialog.show();
8413
8467
  on(
8414
8468
  dialog.$el,
@@ -9027,7 +9081,7 @@
9027
9081
  target: () => document.scrollingElement,
9028
9082
  options: { box: "content-box" }
9029
9083
  }),
9030
- resize({ target: ({ $el }) => $el })
9084
+ resize()
9031
9085
  ],
9032
9086
  events: [
9033
9087
  {
@@ -9440,7 +9494,10 @@
9440
9494
  swiping: true
9441
9495
  },
9442
9496
  computed: {
9443
- connects: ({ connect }, $el) => queryAll(connect, $el),
9497
+ connects: {
9498
+ get: ({ connect }, $el) => queryAll(connect, $el),
9499
+ observe: (connects) => parent(connects[0])
9500
+ },
9444
9501
  connectChildren() {
9445
9502
  return this.connects.map((el) => children(el)).flat();
9446
9503
  },
@@ -9629,9 +9686,12 @@
9629
9686
  queued: true
9630
9687
  },
9631
9688
  computed: {
9632
- target({ target }, $el) {
9633
- target = queryAll(target || $el.hash, $el);
9634
- return target.length ? target : [$el];
9689
+ target: {
9690
+ get: ({ target }, $el) => {
9691
+ target = queryAll(target || $el.hash, $el);
9692
+ return target.length ? target : [$el];
9693
+ },
9694
+ observe: (target) => parent(target[0])
9635
9695
  }
9636
9696
  },
9637
9697
  connected() {