uikit 3.16.27 → 3.17.1-dev.7c0766a6f
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.
- package/CHANGELOG.md +25 -0
- package/build/less.js +5 -4
- package/build/util.js +7 -9
- package/dist/css/uikit-core-rtl.css +53 -18
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +53 -18
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +56 -17
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +56 -17
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +1 -1
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +24 -43
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +2 -3
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +2 -3
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +2 -2
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +7 -17
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +6 -13
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +2 -2
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +6 -13
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +19 -4
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +24 -43
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -2
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +1 -1
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +455 -185
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +483 -240
- package/dist/js/uikit.min.js +1 -9502
- package/package.json +1 -1
- package/src/js/api/boot.js +2 -2
- package/src/js/api/computed.js +1 -1
- package/src/js/api/observables.js +1 -4
- package/src/js/components/notification.js +1 -1
- package/src/js/components/slideshow.js +19 -2
- package/src/js/core/cover.js +30 -1
- package/src/js/core/drop.js +15 -9
- package/src/js/core/dropnav.js +16 -2
- package/src/js/core/grid.js +119 -64
- package/src/js/core/height-viewport.js +4 -1
- package/src/js/core/margin.js +23 -39
- package/src/js/core/navbar.js +219 -1
- package/src/js/core/scrollspy-nav.js +13 -4
- package/src/js/core/scrollspy.js +1 -1
- package/src/js/core/sticky.js +10 -11
- package/src/js/mixin/internal/animate-fade.js +1 -11
- package/src/js/mixin/internal/slideshow-animations.js +1 -1
- package/src/js/mixin/slider-reactive.js +1 -1
- package/src/js/mixin/togglable.js +0 -2
- package/src/js/util/animation.js +19 -13
- package/src/js/util/class.js +30 -26
- package/src/js/util/dom.js +3 -8
- package/src/js/util/filter.js +2 -6
- package/src/js/util/viewport.js +26 -4
- package/src/less/components/base.less +6 -3
- package/src/less/components/form.less +3 -0
- package/src/less/components/heading.less +18 -0
- package/src/less/components/navbar.less +6 -12
- package/src/less/components/pagination.less +13 -6
- package/src/less/components/position.less +1 -0
- package/src/less/components/section.less +6 -0
- package/src/less/theme/heading.less +4 -0
- package/src/less/theme/navbar.less +5 -0
- package/src/scss/components/base.scss +4 -2
- package/src/scss/components/form.scss +3 -0
- package/src/scss/components/heading.scss +13 -0
- package/src/scss/components/navbar.scss +5 -12
- package/src/scss/components/pagination.scss +13 -6
- package/src/scss/components/position.scss +1 -0
- package/src/scss/components/section.scss +4 -0
- package/src/scss/mixins-theme.scss +13 -1
- package/src/scss/mixins.scss +8 -1
- package/src/scss/theme/heading.scss +4 -0
- package/src/scss/variables-theme.scss +7 -0
- package/src/scss/variables.scss +7 -0
- package/tests/cover.html +2 -2
- package/tests/drop.html +13 -7
- package/tests/dropnav.html +22 -10
- package/tests/filter.html +5 -5
- package/tests/form.html +1 -1
- package/tests/grid-masonry.html +49 -73
- package/tests/grid-parallax.html +82 -40
- package/tests/grid.html +21 -3
- package/tests/heading.html +33 -4
- package/tests/height-viewport.html +3 -3
- package/tests/height.html +2 -2
- package/tests/icon.html +1 -1
- package/tests/image.html +6 -6
- package/tests/leader.html +3 -3
- package/tests/nav.html +1 -1
- package/tests/navbar.html +28 -10
- package/tests/notification.html +1 -1
- package/tests/offcanvas.html +2 -2
- package/tests/parallax.html +1 -1
- package/tests/scrollspy.html +3 -3
- package/tests/sortable.html +3 -3
- package/tests/sticky-navbar.html +233 -14
- package/tests/sticky.html +8 -8
- package/tests/svg.html +1 -1
- package/tests/tab.html +1 -1
- package/tests/toggle.html +2 -2
- package/tests/tooltip.html +2 -2
- package/tests/upload.html +16 -16
- package/tests/utility.html +2 -2
- package/tests/video.html +3 -3
package/dist/js/uikit-core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.
|
|
1
|
+
/*! UIkit 3.17.1-dev.7c0766a6f | 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() :
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
}
|
|
119
119
|
return true;
|
|
120
120
|
}
|
|
121
|
-
function sortBy
|
|
121
|
+
function sortBy(array, prop) {
|
|
122
122
|
return array.slice().sort(
|
|
123
123
|
({ [prop]: propA = 0 }, { [prop]: propB = 0 }) => propA > propB ? 1 : propB > propA ? -1 : 0
|
|
124
124
|
);
|
|
@@ -229,29 +229,40 @@
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
function addClass(element, ...
|
|
233
|
-
|
|
232
|
+
function addClass(element, ...classes) {
|
|
233
|
+
for (const node of toNodes(element)) {
|
|
234
|
+
const add = toClasses(classes).filter((cls) => !hasClass(node, cls));
|
|
235
|
+
if (add.length) {
|
|
236
|
+
node.classList.add(...add);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
234
239
|
}
|
|
235
|
-
function removeClass(element, ...
|
|
236
|
-
|
|
240
|
+
function removeClass(element, ...classes) {
|
|
241
|
+
for (const node of toNodes(element)) {
|
|
242
|
+
const remove = toClasses(classes).filter((cls) => hasClass(node, cls));
|
|
243
|
+
if (remove.length) {
|
|
244
|
+
node.classList.remove(...remove);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
237
247
|
}
|
|
238
|
-
function removeClasses(element,
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
);
|
|
248
|
+
function removeClasses$1(element, clsRegex) {
|
|
249
|
+
clsRegex = new RegExp(clsRegex);
|
|
250
|
+
for (const node of toNodes(element)) {
|
|
251
|
+
node.classList.remove(...toArray(node.classList).filter((cls) => cls.match(clsRegex)));
|
|
252
|
+
}
|
|
244
253
|
}
|
|
245
|
-
function replaceClass(element,
|
|
246
|
-
|
|
247
|
-
|
|
254
|
+
function replaceClass(element, oldClass, newClass) {
|
|
255
|
+
newClass = toClasses(newClass);
|
|
256
|
+
oldClass = toClasses(oldClass).filter((cls) => !includes(newClass, cls));
|
|
257
|
+
removeClass(element, oldClass);
|
|
258
|
+
addClass(element, newClass);
|
|
248
259
|
}
|
|
249
260
|
function hasClass(element, cls) {
|
|
250
|
-
[cls] =
|
|
251
|
-
return
|
|
261
|
+
[cls] = toClasses(cls);
|
|
262
|
+
return toNodes(element).some((node) => node.classList.contains(cls));
|
|
252
263
|
}
|
|
253
264
|
function toggleClass(element, cls, force) {
|
|
254
|
-
const classes =
|
|
265
|
+
const classes = toClasses(cls);
|
|
255
266
|
if (!isUndefined(force)) {
|
|
256
267
|
force = !!force;
|
|
257
268
|
}
|
|
@@ -261,14 +272,8 @@
|
|
|
261
272
|
}
|
|
262
273
|
}
|
|
263
274
|
}
|
|
264
|
-
function
|
|
265
|
-
|
|
266
|
-
for (const node of toNodes(element)) {
|
|
267
|
-
node.classList[fn](...args);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
function getClasses(str) {
|
|
271
|
-
return String(str).split(/[ ,]/).filter(Boolean);
|
|
275
|
+
function toClasses(str) {
|
|
276
|
+
return isArray(str) ? str.map(toClasses).flat() : String(str).split(/[ ,]/).filter(Boolean);
|
|
272
277
|
}
|
|
273
278
|
|
|
274
279
|
const voidElements = {
|
|
@@ -315,7 +320,8 @@
|
|
|
315
320
|
return toNodes(element).some((element2) => element2.matches(selector));
|
|
316
321
|
}
|
|
317
322
|
function closest(element, selector) {
|
|
318
|
-
|
|
323
|
+
var _a;
|
|
324
|
+
return (_a = toNode(element)) == null ? void 0 : _a.closest(startsWith(selector, ">") ? selector.slice(1) : selector);
|
|
319
325
|
}
|
|
320
326
|
function within(element, selector) {
|
|
321
327
|
return isString(selector) ? !!closest(element, selector) : toNode(selector).contains(toNode(element));
|
|
@@ -594,6 +600,9 @@
|
|
|
594
600
|
}
|
|
595
601
|
}
|
|
596
602
|
|
|
603
|
+
const clsTransition = "uk-transition";
|
|
604
|
+
const clsTransitionEnd = "transitionend";
|
|
605
|
+
const clsTransitionCanceled = "transitioncanceled";
|
|
597
606
|
function transition$1(element, props, duration = 400, timing = "linear") {
|
|
598
607
|
duration = Math.round(duration);
|
|
599
608
|
return Promise.all(
|
|
@@ -605,23 +614,23 @@
|
|
|
605
614
|
css(element2, name, value);
|
|
606
615
|
}
|
|
607
616
|
}
|
|
608
|
-
const timer = setTimeout(() => trigger(element2,
|
|
617
|
+
const timer = setTimeout(() => trigger(element2, clsTransitionEnd), duration);
|
|
609
618
|
once(
|
|
610
619
|
element2,
|
|
611
|
-
|
|
620
|
+
[clsTransitionEnd, clsTransitionCanceled],
|
|
612
621
|
({ type }) => {
|
|
613
622
|
clearTimeout(timer);
|
|
614
|
-
removeClass(element2,
|
|
623
|
+
removeClass(element2, clsTransition);
|
|
615
624
|
css(element2, {
|
|
616
625
|
transitionProperty: "",
|
|
617
626
|
transitionDuration: "",
|
|
618
627
|
transitionTimingFunction: ""
|
|
619
628
|
});
|
|
620
|
-
type ===
|
|
629
|
+
type === clsTransitionCanceled ? reject() : resolve(element2);
|
|
621
630
|
},
|
|
622
631
|
{ self: true }
|
|
623
632
|
);
|
|
624
|
-
addClass(element2,
|
|
633
|
+
addClass(element2, clsTransition);
|
|
625
634
|
css(element2, {
|
|
626
635
|
transitionProperty: Object.keys(props).map(propName).join(","),
|
|
627
636
|
transitionDuration: `${duration}ms`,
|
|
@@ -635,32 +644,34 @@
|
|
|
635
644
|
const Transition = {
|
|
636
645
|
start: transition$1,
|
|
637
646
|
async stop(element) {
|
|
638
|
-
trigger(element,
|
|
647
|
+
trigger(element, clsTransitionEnd);
|
|
639
648
|
await Promise.resolve();
|
|
640
649
|
},
|
|
641
650
|
async cancel(element) {
|
|
642
|
-
trigger(element,
|
|
651
|
+
trigger(element, clsTransitionCanceled);
|
|
643
652
|
await Promise.resolve();
|
|
644
653
|
},
|
|
645
654
|
inProgress(element) {
|
|
646
|
-
return hasClass(element,
|
|
655
|
+
return hasClass(element, clsTransition);
|
|
647
656
|
}
|
|
648
657
|
};
|
|
649
658
|
const animationPrefix = "uk-animation-";
|
|
659
|
+
const clsAnimationEnd = "animationend";
|
|
660
|
+
const clsAnimationCanceled = "animationcanceled";
|
|
650
661
|
function animate$2(element, animation, duration = 200, origin, out) {
|
|
651
662
|
return Promise.all(
|
|
652
663
|
toNodes(element).map(
|
|
653
664
|
(element2) => new Promise((resolve, reject) => {
|
|
654
|
-
trigger(element2,
|
|
655
|
-
const timer = setTimeout(() => trigger(element2,
|
|
665
|
+
trigger(element2, clsAnimationCanceled);
|
|
666
|
+
const timer = setTimeout(() => trigger(element2, clsAnimationEnd), duration);
|
|
656
667
|
once(
|
|
657
668
|
element2,
|
|
658
|
-
|
|
669
|
+
[clsAnimationEnd, clsAnimationCanceled],
|
|
659
670
|
({ type }) => {
|
|
660
671
|
clearTimeout(timer);
|
|
661
|
-
type ===
|
|
672
|
+
type === clsAnimationCanceled ? reject() : resolve(element2);
|
|
662
673
|
css(element2, "animationDuration", "");
|
|
663
|
-
removeClasses(element2, `${animationPrefix}\\S*`);
|
|
674
|
+
removeClasses$1(element2, `${animationPrefix}\\S*`);
|
|
664
675
|
},
|
|
665
676
|
{ self: true }
|
|
666
677
|
);
|
|
@@ -684,7 +695,7 @@
|
|
|
684
695
|
return inProgressRe.test(attr(element, "class"));
|
|
685
696
|
},
|
|
686
697
|
cancel(element) {
|
|
687
|
-
trigger(element,
|
|
698
|
+
trigger(element, clsAnimationCanceled);
|
|
688
699
|
}
|
|
689
700
|
};
|
|
690
701
|
|
|
@@ -742,20 +753,15 @@
|
|
|
742
753
|
function unwrap(element) {
|
|
743
754
|
toNodes(element).map(parent).filter((value, index, self) => self.indexOf(value) === index).forEach((parent2) => parent2.replaceWith(...parent2.childNodes));
|
|
744
755
|
}
|
|
745
|
-
const fragmentRe = /^\s*<(\w+|!)[^>]*>/;
|
|
746
756
|
const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
|
|
747
757
|
function fragment(html2) {
|
|
748
758
|
const matches = singleTagRe.exec(html2);
|
|
749
759
|
if (matches) {
|
|
750
760
|
return document.createElement(matches[1]);
|
|
751
761
|
}
|
|
752
|
-
const container = document.createElement("
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
} else {
|
|
756
|
-
container.textContent = html2;
|
|
757
|
-
}
|
|
758
|
-
return unwrapSingle(container.childNodes);
|
|
762
|
+
const container = document.createElement("template");
|
|
763
|
+
container.innerHTML = html2.trim();
|
|
764
|
+
return unwrapSingle(container.content.childNodes);
|
|
759
765
|
}
|
|
760
766
|
function unwrapSingle(nodes) {
|
|
761
767
|
return nodes.length > 1 ? nodes : nodes[0];
|
|
@@ -1210,21 +1216,34 @@
|
|
|
1210
1216
|
offsetBy -= top;
|
|
1211
1217
|
top = 0;
|
|
1212
1218
|
}
|
|
1213
|
-
return () => scrollTo(scrollElement, top - scrollTop).then(fn);
|
|
1219
|
+
return () => scrollTo(scrollElement, top - scrollTop, element, maxScroll).then(fn);
|
|
1214
1220
|
},
|
|
1215
1221
|
() => Promise.resolve()
|
|
1216
1222
|
)();
|
|
1217
|
-
function scrollTo(element2, top) {
|
|
1223
|
+
function scrollTo(element2, top, targetEl, maxScroll) {
|
|
1218
1224
|
return new Promise((resolve) => {
|
|
1219
1225
|
const scroll = element2.scrollTop;
|
|
1220
1226
|
const duration = getDuration(Math.abs(top));
|
|
1221
1227
|
const start = Date.now();
|
|
1228
|
+
const targetTop = offset(targetEl).top;
|
|
1229
|
+
let prev = 0;
|
|
1230
|
+
let frames = 15;
|
|
1222
1231
|
(function step() {
|
|
1223
1232
|
const percent = ease(clamp((Date.now() - start) / duration));
|
|
1224
|
-
|
|
1225
|
-
if (
|
|
1233
|
+
let diff = 0;
|
|
1234
|
+
if (parents2[0] === element2 && scroll + top < maxScroll) {
|
|
1235
|
+
diff = offset(targetEl).top - targetTop;
|
|
1236
|
+
const fixedEl = findFixedElement(targetEl);
|
|
1237
|
+
diff -= fixedEl ? offset(fixedEl).height : 0;
|
|
1238
|
+
}
|
|
1239
|
+
element2.scrollTop = Math[top + diff > 0 ? "max" : "min"](
|
|
1240
|
+
element2.scrollTop,
|
|
1241
|
+
scroll + (top + diff) * percent
|
|
1242
|
+
);
|
|
1243
|
+
if (percent === 1 && (prev === diff || !frames--)) {
|
|
1226
1244
|
resolve();
|
|
1227
1245
|
} else {
|
|
1246
|
+
prev = diff;
|
|
1228
1247
|
requestAnimationFrame(step);
|
|
1229
1248
|
}
|
|
1230
1249
|
})();
|
|
@@ -1236,6 +1255,11 @@
|
|
|
1236
1255
|
function ease(k) {
|
|
1237
1256
|
return 0.5 * (1 - Math.cos(Math.PI * k));
|
|
1238
1257
|
}
|
|
1258
|
+
function findFixedElement(target) {
|
|
1259
|
+
return target.ownerDocument.elementsFromPoint(0, 0).find(
|
|
1260
|
+
(el) => ["fixed", "sticky"].includes(css(el, "position")) && !el.contains(target)
|
|
1261
|
+
);
|
|
1262
|
+
}
|
|
1239
1263
|
}
|
|
1240
1264
|
function scrolledOver(element, startOffset = 0, endOffset = 0) {
|
|
1241
1265
|
if (!isVisible(element)) {
|
|
@@ -1598,7 +1622,7 @@
|
|
|
1598
1622
|
remove: remove$1,
|
|
1599
1623
|
removeAttr: removeAttr,
|
|
1600
1624
|
removeClass: removeClass,
|
|
1601
|
-
removeClasses: removeClasses,
|
|
1625
|
+
removeClasses: removeClasses$1,
|
|
1602
1626
|
replaceClass: replaceClass,
|
|
1603
1627
|
scrollIntoView: scrollIntoView,
|
|
1604
1628
|
scrollParent: scrollParent,
|
|
@@ -1606,7 +1630,7 @@
|
|
|
1606
1630
|
scrolledOver: scrolledOver,
|
|
1607
1631
|
selFocusable: selFocusable,
|
|
1608
1632
|
selInput: selInput,
|
|
1609
|
-
sortBy: sortBy
|
|
1633
|
+
sortBy: sortBy,
|
|
1610
1634
|
startsWith: startsWith,
|
|
1611
1635
|
sumBy: sumBy,
|
|
1612
1636
|
swap: swap,
|
|
@@ -1766,8 +1790,8 @@
|
|
|
1766
1790
|
}
|
|
1767
1791
|
});
|
|
1768
1792
|
observer.observe(document, {
|
|
1769
|
-
|
|
1770
|
-
|
|
1793
|
+
subtree: true,
|
|
1794
|
+
childList: true
|
|
1771
1795
|
});
|
|
1772
1796
|
}
|
|
1773
1797
|
|
|
@@ -1865,7 +1889,7 @@
|
|
|
1865
1889
|
return childVal !== false && concatStrat(childVal || parentVal);
|
|
1866
1890
|
};
|
|
1867
1891
|
strats.update = function(parentVal, childVal) {
|
|
1868
|
-
return sortBy
|
|
1892
|
+
return sortBy(
|
|
1869
1893
|
concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal),
|
|
1870
1894
|
"order"
|
|
1871
1895
|
);
|
|
@@ -2122,7 +2146,7 @@
|
|
|
2122
2146
|
};
|
|
2123
2147
|
App.util = util;
|
|
2124
2148
|
App.options = {};
|
|
2125
|
-
App.version = "3.
|
|
2149
|
+
App.version = "3.17.1-dev.7c0766a6f";
|
|
2126
2150
|
|
|
2127
2151
|
const PREFIX = "uk-";
|
|
2128
2152
|
const DATA = "__uikit__";
|
|
@@ -2202,12 +2226,12 @@
|
|
|
2202
2226
|
apply(document.body, connect);
|
|
2203
2227
|
}
|
|
2204
2228
|
new MutationObserver((records) => records.forEach(applyChildListMutation)).observe(document, {
|
|
2205
|
-
|
|
2206
|
-
|
|
2229
|
+
subtree: true,
|
|
2230
|
+
childList: true
|
|
2207
2231
|
});
|
|
2208
2232
|
new MutationObserver((records) => records.forEach(applyAttributeMutation)).observe(document, {
|
|
2209
|
-
|
|
2210
|
-
|
|
2233
|
+
subtree: true,
|
|
2234
|
+
attributes: true
|
|
2211
2235
|
});
|
|
2212
2236
|
App._initialized = true;
|
|
2213
2237
|
}
|
|
@@ -2393,10 +2417,7 @@
|
|
|
2393
2417
|
function scroll$1(options) {
|
|
2394
2418
|
return observe(
|
|
2395
2419
|
(target, handler) => ({
|
|
2396
|
-
disconnect: on(toScrollTargets(target), "scroll", handler, {
|
|
2397
|
-
passive: true,
|
|
2398
|
-
capture: true
|
|
2399
|
-
})
|
|
2420
|
+
disconnect: on(toScrollTargets(target), "scroll", handler, { passive: true })
|
|
2400
2421
|
}),
|
|
2401
2422
|
options,
|
|
2402
2423
|
"scroll"
|
|
@@ -2629,7 +2650,6 @@
|
|
|
2629
2650
|
}
|
|
2630
2651
|
}
|
|
2631
2652
|
function toggleAnimation(el, show, cmp) {
|
|
2632
|
-
Animation.cancel(el);
|
|
2633
2653
|
const { animation, duration, _toggle } = cmp;
|
|
2634
2654
|
if (show) {
|
|
2635
2655
|
_toggle(el, true);
|
|
@@ -2926,6 +2946,17 @@
|
|
|
2926
2946
|
}
|
|
2927
2947
|
};
|
|
2928
2948
|
|
|
2949
|
+
const coverProps = {
|
|
2950
|
+
top: 0,
|
|
2951
|
+
// resets the css from [uk-cover]
|
|
2952
|
+
left: 0,
|
|
2953
|
+
// resets the css from [uk-cover]
|
|
2954
|
+
width: "100%",
|
|
2955
|
+
height: "100%",
|
|
2956
|
+
transform: "none",
|
|
2957
|
+
objectFit: "cover",
|
|
2958
|
+
objectPosition: "center"
|
|
2959
|
+
};
|
|
2929
2960
|
var cover = {
|
|
2930
2961
|
mixins: [Video],
|
|
2931
2962
|
props: {
|
|
@@ -2941,10 +2972,25 @@
|
|
|
2941
2972
|
}
|
|
2942
2973
|
},
|
|
2943
2974
|
observe: resize({
|
|
2944
|
-
target: ({ $el }) => [getPositionedParent($el) || parent($el)]
|
|
2975
|
+
target: ({ $el }) => [getPositionedParent($el) || parent($el)],
|
|
2976
|
+
filter: ({ _useObjectFit }) => !_useObjectFit
|
|
2945
2977
|
}),
|
|
2978
|
+
connected() {
|
|
2979
|
+
this._useObjectFit = isTag(this.$el, "img", "video");
|
|
2980
|
+
if (this._useObjectFit) {
|
|
2981
|
+
css(this.$el, coverProps);
|
|
2982
|
+
}
|
|
2983
|
+
},
|
|
2984
|
+
disconnected() {
|
|
2985
|
+
if (this._useObjectFit) {
|
|
2986
|
+
attr(this.$el, "style", "");
|
|
2987
|
+
}
|
|
2988
|
+
},
|
|
2946
2989
|
update: {
|
|
2947
2990
|
read() {
|
|
2991
|
+
if (this._useObjectFit) {
|
|
2992
|
+
return;
|
|
2993
|
+
}
|
|
2948
2994
|
const { ratio, cover } = Dimensions;
|
|
2949
2995
|
const { $el, width, height } = this;
|
|
2950
2996
|
let dim = { width, height };
|
|
@@ -3127,7 +3173,8 @@
|
|
|
3127
3173
|
autoUpdate: Boolean,
|
|
3128
3174
|
clsDrop: String,
|
|
3129
3175
|
animateOut: Boolean,
|
|
3130
|
-
bgScroll: Boolean
|
|
3176
|
+
bgScroll: Boolean,
|
|
3177
|
+
closeOnScroll: Boolean
|
|
3131
3178
|
},
|
|
3132
3179
|
data: {
|
|
3133
3180
|
mode: ["click", "hover"],
|
|
@@ -3147,7 +3194,8 @@
|
|
|
3147
3194
|
bgScroll: true,
|
|
3148
3195
|
animation: ["uk-animation-fade"],
|
|
3149
3196
|
cls: "uk-open",
|
|
3150
|
-
container: false
|
|
3197
|
+
container: false,
|
|
3198
|
+
closeOnScroll: false
|
|
3151
3199
|
},
|
|
3152
3200
|
computed: {
|
|
3153
3201
|
boundary({ boundary, boundaryX, boundaryY }, $el) {
|
|
@@ -3274,12 +3322,10 @@
|
|
|
3274
3322
|
name: "toggled",
|
|
3275
3323
|
self: true,
|
|
3276
3324
|
handler(e, toggled) {
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3325
|
+
if (toggled) {
|
|
3326
|
+
this.clearTimers();
|
|
3327
|
+
this.position();
|
|
3280
3328
|
}
|
|
3281
|
-
this.clearTimers();
|
|
3282
|
-
this.position();
|
|
3283
3329
|
}
|
|
3284
3330
|
},
|
|
3285
3331
|
{
|
|
@@ -3288,11 +3334,13 @@
|
|
|
3288
3334
|
handler() {
|
|
3289
3335
|
active$1 = this;
|
|
3290
3336
|
this.tracker.init();
|
|
3337
|
+
attr(this.targetEl, "aria-expanded", true);
|
|
3291
3338
|
const handlers = [
|
|
3292
3339
|
listenForResize(this),
|
|
3293
3340
|
listenForEscClose$1(this),
|
|
3294
3341
|
listenForBackgroundClose$1(this),
|
|
3295
3342
|
this.autoUpdate && listenForScroll(this),
|
|
3343
|
+
this.closeOnScroll && listenForScrollClose(this),
|
|
3296
3344
|
!this.bgScroll && preventBackgroundScroll(this.$el)
|
|
3297
3345
|
];
|
|
3298
3346
|
once(this.$el, "hide", () => handlers.forEach((handler) => handler && handler()), {
|
|
@@ -3316,6 +3364,7 @@
|
|
|
3316
3364
|
}
|
|
3317
3365
|
active$1 = this.isActive() ? null : active$1;
|
|
3318
3366
|
this.tracker.cancel();
|
|
3367
|
+
attr(this.targetEl, "aria-expanded", null);
|
|
3319
3368
|
}
|
|
3320
3369
|
}
|
|
3321
3370
|
],
|
|
@@ -3358,6 +3407,7 @@
|
|
|
3358
3407
|
hide(delay = true, animate = true) {
|
|
3359
3408
|
const hide = () => this.toggleElement(this.$el, false, this.animateOut && animate);
|
|
3360
3409
|
this.clearTimers();
|
|
3410
|
+
this.isDelayedHide = delay;
|
|
3361
3411
|
this.isDelaying = getPositionedElements(this.$el).some(
|
|
3362
3412
|
(el) => this.tracker.movesTo(el)
|
|
3363
3413
|
);
|
|
@@ -3453,8 +3503,8 @@
|
|
|
3453
3503
|
];
|
|
3454
3504
|
return () => off.map((observer) => observer.disconnect());
|
|
3455
3505
|
}
|
|
3456
|
-
function listenForScroll(drop) {
|
|
3457
|
-
return on([document, ...overflowParents(drop.$el)], "scroll",
|
|
3506
|
+
function listenForScroll(drop, fn = () => drop.$emit()) {
|
|
3507
|
+
return on([document, ...overflowParents(drop.$el)], "scroll", fn, {
|
|
3458
3508
|
passive: true
|
|
3459
3509
|
});
|
|
3460
3510
|
}
|
|
@@ -3465,6 +3515,9 @@
|
|
|
3465
3515
|
}
|
|
3466
3516
|
});
|
|
3467
3517
|
}
|
|
3518
|
+
function listenForScrollClose(drop) {
|
|
3519
|
+
return listenForScroll(drop, () => drop.hide(false));
|
|
3520
|
+
}
|
|
3468
3521
|
function listenForBackgroundClose$1(drop) {
|
|
3469
3522
|
return on(document, pointerDown, ({ target }) => {
|
|
3470
3523
|
if (!within(target, drop.$el)) {
|
|
@@ -3500,7 +3553,8 @@
|
|
|
3500
3553
|
targetX: Boolean,
|
|
3501
3554
|
targetY: Boolean,
|
|
3502
3555
|
animation: Boolean,
|
|
3503
|
-
animateOut: Boolean
|
|
3556
|
+
animateOut: Boolean,
|
|
3557
|
+
closeOnScroll: Boolean
|
|
3504
3558
|
},
|
|
3505
3559
|
data: {
|
|
3506
3560
|
align: isRtl ? "right" : "left",
|
|
@@ -3524,6 +3578,9 @@
|
|
|
3524
3578
|
dropbar = this._dropbar || query(dropbar, this.$el) || $(`+ .${this.clsDropbar}`, this.$el);
|
|
3525
3579
|
return dropbar ? dropbar : this._dropbar = $("<div></div>");
|
|
3526
3580
|
},
|
|
3581
|
+
dropbarOffset() {
|
|
3582
|
+
return 0;
|
|
3583
|
+
},
|
|
3527
3584
|
dropContainer(_, $el) {
|
|
3528
3585
|
return this.container || $el;
|
|
3529
3586
|
},
|
|
@@ -3685,9 +3742,13 @@
|
|
|
3685
3742
|
const minTop = Math.min(...targetOffsets.map(({ top }) => top));
|
|
3686
3743
|
const maxBottom = Math.max(...targetOffsets.map(({ bottom }) => bottom));
|
|
3687
3744
|
const dropbarOffset = offset(this.dropbar);
|
|
3688
|
-
css(
|
|
3745
|
+
css(
|
|
3746
|
+
this.dropbar,
|
|
3747
|
+
"top",
|
|
3748
|
+
this.dropbar.offsetTop - (dropbarOffset.top - minTop) - this.dropbarOffset
|
|
3749
|
+
);
|
|
3689
3750
|
this.transitionTo(
|
|
3690
|
-
maxBottom - minTop + toFloat(css(target, "marginBottom")),
|
|
3751
|
+
maxBottom - minTop + toFloat(css(target, "marginBottom")) + this.dropbarOffset,
|
|
3691
3752
|
target
|
|
3692
3753
|
);
|
|
3693
3754
|
};
|
|
@@ -3705,7 +3766,7 @@
|
|
|
3705
3766
|
},
|
|
3706
3767
|
handler(e) {
|
|
3707
3768
|
const active2 = this.getActive();
|
|
3708
|
-
if (matches(this.dropbar, ":hover") && active2.$el === e.target && !this.items.some((el) => active2.targetEl !== el && matches(el, ":focus"))) {
|
|
3769
|
+
if (matches(this.dropbar, ":hover") && active2.$el === e.target && includes(active2.mode, "hover") && active2.isDelayedHide && !this.items.some((el) => active2.targetEl !== el && matches(el, ":focus"))) {
|
|
3709
3770
|
e.preventDefault();
|
|
3710
3771
|
}
|
|
3711
3772
|
}
|
|
@@ -3874,62 +3935,51 @@
|
|
|
3874
3935
|
],
|
|
3875
3936
|
update: {
|
|
3876
3937
|
read() {
|
|
3877
|
-
const rows = getRows(this.$el.children);
|
|
3878
3938
|
return {
|
|
3879
|
-
rows
|
|
3880
|
-
columns: getColumns(rows)
|
|
3939
|
+
rows: getRows(toArray(this.$el.children))
|
|
3881
3940
|
};
|
|
3882
3941
|
},
|
|
3883
|
-
write({
|
|
3942
|
+
write({ rows }) {
|
|
3884
3943
|
for (const row of rows) {
|
|
3885
|
-
for (const
|
|
3886
|
-
toggleClass(
|
|
3887
|
-
toggleClass(
|
|
3944
|
+
for (const el of row) {
|
|
3945
|
+
toggleClass(el, this.margin, rows[0] !== row);
|
|
3946
|
+
toggleClass(el, this.firstColumn, row[isRtl ? row.length - 1 : 0] === el);
|
|
3888
3947
|
}
|
|
3889
3948
|
}
|
|
3890
3949
|
},
|
|
3891
3950
|
events: ["resize"]
|
|
3892
3951
|
}
|
|
3893
3952
|
};
|
|
3894
|
-
function getRows(
|
|
3895
|
-
return sortBy(items, "top", "bottom");
|
|
3896
|
-
}
|
|
3897
|
-
function getColumns(rows) {
|
|
3898
|
-
const columns = [];
|
|
3899
|
-
for (const row of rows) {
|
|
3900
|
-
const sorted = sortBy(row, "left", "right");
|
|
3901
|
-
for (let j = 0; j < sorted.length; j++) {
|
|
3902
|
-
columns[j] = columns[j] ? columns[j].concat(sorted[j]) : sorted[j];
|
|
3903
|
-
}
|
|
3904
|
-
}
|
|
3905
|
-
return isRtl ? columns.reverse() : columns;
|
|
3906
|
-
}
|
|
3907
|
-
function sortBy(items, startProp, endProp) {
|
|
3953
|
+
function getRows(elements) {
|
|
3908
3954
|
const sorted = [[]];
|
|
3909
|
-
|
|
3955
|
+
const withOffset = elements.some(
|
|
3956
|
+
(el, i) => i && elements[i - 1].offsetParent !== el.offsetParent
|
|
3957
|
+
);
|
|
3958
|
+
for (const el of elements) {
|
|
3910
3959
|
if (!isVisible(el)) {
|
|
3911
3960
|
continue;
|
|
3912
3961
|
}
|
|
3913
|
-
|
|
3962
|
+
const offset = getOffset(el, withOffset);
|
|
3914
3963
|
for (let i = sorted.length - 1; i >= 0; i--) {
|
|
3915
3964
|
const current = sorted[i];
|
|
3916
3965
|
if (!current[0]) {
|
|
3917
3966
|
current.push(el);
|
|
3918
3967
|
break;
|
|
3919
3968
|
}
|
|
3920
|
-
|
|
3921
|
-
if (
|
|
3922
|
-
startDim = getOffset(current[0]);
|
|
3923
|
-
} else {
|
|
3924
|
-
dim = getOffset(el, true);
|
|
3925
|
-
startDim = getOffset(current[0], true);
|
|
3926
|
-
}
|
|
3927
|
-
if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {
|
|
3969
|
+
const offsetCurrent = getOffset(current[0], withOffset);
|
|
3970
|
+
if (offset.top >= offsetCurrent.bottom - 1 && offset.top !== offsetCurrent.top) {
|
|
3928
3971
|
sorted.push([el]);
|
|
3929
3972
|
break;
|
|
3930
3973
|
}
|
|
3931
|
-
if (
|
|
3932
|
-
current.
|
|
3974
|
+
if (offset.bottom - 1 > offsetCurrent.top || offset.top === offsetCurrent.top) {
|
|
3975
|
+
let j = current.length - 1;
|
|
3976
|
+
for (; j >= 0; j--) {
|
|
3977
|
+
const offsetCurrent2 = getOffset(current[j], withOffset);
|
|
3978
|
+
if (offset.left >= offsetCurrent2.left) {
|
|
3979
|
+
break;
|
|
3980
|
+
}
|
|
3981
|
+
}
|
|
3982
|
+
current.splice(j + 1, 0, el);
|
|
3933
3983
|
break;
|
|
3934
3984
|
}
|
|
3935
3985
|
if (i === 0) {
|
|
@@ -3959,52 +4009,77 @@
|
|
|
3959
4009
|
name: "grid",
|
|
3960
4010
|
props: {
|
|
3961
4011
|
masonry: Boolean,
|
|
3962
|
-
parallax:
|
|
4012
|
+
parallax: String,
|
|
4013
|
+
parallaxStart: String,
|
|
4014
|
+
parallaxEnd: String,
|
|
4015
|
+
parallaxJustify: Boolean
|
|
3963
4016
|
},
|
|
3964
4017
|
data: {
|
|
3965
4018
|
margin: "uk-grid-margin",
|
|
3966
4019
|
clsStack: "uk-grid-stack",
|
|
3967
4020
|
masonry: false,
|
|
3968
|
-
parallax: 0
|
|
4021
|
+
parallax: 0,
|
|
4022
|
+
parallaxStart: 0,
|
|
4023
|
+
parallaxEnd: 0,
|
|
4024
|
+
parallaxJustify: false
|
|
3969
4025
|
},
|
|
3970
4026
|
connected() {
|
|
3971
|
-
this.masonry && addClass(this.$el, "uk-flex-top uk-flex-wrap-top");
|
|
4027
|
+
this.masonry && addClass(this.$el, "uk-flex-top", "uk-flex-wrap-top");
|
|
3972
4028
|
},
|
|
3973
|
-
observe: scroll$1({ filter: ({ parallax }) => parallax }),
|
|
4029
|
+
observe: scroll$1({ filter: ({ parallax, parallaxJustify }) => parallax || parallaxJustify }),
|
|
3974
4030
|
update: [
|
|
3975
4031
|
{
|
|
3976
|
-
write({
|
|
3977
|
-
toggleClass(this.$el, this.clsStack,
|
|
4032
|
+
write({ rows }) {
|
|
4033
|
+
toggleClass(this.$el, this.clsStack, !rows[0][1]);
|
|
3978
4034
|
},
|
|
3979
4035
|
events: ["resize"]
|
|
3980
4036
|
},
|
|
3981
4037
|
{
|
|
3982
4038
|
read(data) {
|
|
3983
|
-
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
4039
|
+
const { rows } = data;
|
|
4040
|
+
let { masonry, parallax, parallaxJustify, margin } = this;
|
|
4041
|
+
parallax = Math.max(0, toPx(parallax));
|
|
4042
|
+
if (!(masonry || parallax || parallaxJustify) || positionedAbsolute(rows) || rows[0].some(
|
|
4043
|
+
(el, i) => rows.some((row) => row[i] && row[i].offsetWidth !== el.offsetWidth)
|
|
4044
|
+
)) {
|
|
4045
|
+
return data.translates = data.scrollColumns = false;
|
|
3987
4046
|
}
|
|
3988
|
-
let
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
columns =
|
|
3995
|
-
translates = getTranslates(rows, columns);
|
|
4047
|
+
let gutter = getGutter(rows, margin);
|
|
4048
|
+
let columns;
|
|
4049
|
+
let translates;
|
|
4050
|
+
if (masonry) {
|
|
4051
|
+
[columns, translates] = applyMasonry(rows, gutter, masonry === "next");
|
|
4052
|
+
} else {
|
|
4053
|
+
columns = transpose(rows);
|
|
3996
4054
|
}
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4055
|
+
const columnHeights = columns.map(
|
|
4056
|
+
(column) => sumBy(column, "offsetHeight") + gutter * (column.length - 1)
|
|
4057
|
+
);
|
|
4058
|
+
const height = Math.max(0, ...columnHeights);
|
|
4059
|
+
let scrollColumns;
|
|
4060
|
+
let parallaxStart;
|
|
4061
|
+
let parallaxEnd;
|
|
4062
|
+
if (parallax || parallaxJustify) {
|
|
4063
|
+
scrollColumns = columnHeights.map(
|
|
4064
|
+
(hgt, i) => parallaxJustify ? height - hgt + parallax : parallax / (i % 2 || 8)
|
|
4005
4065
|
);
|
|
4066
|
+
if (!parallaxJustify) {
|
|
4067
|
+
parallax = Math.max(
|
|
4068
|
+
...columnHeights.map((hgt, i) => hgt + scrollColumns[i] - height)
|
|
4069
|
+
);
|
|
4070
|
+
}
|
|
4071
|
+
parallaxStart = toPx(this.parallaxStart, "height", this.$el, true);
|
|
4072
|
+
parallaxEnd = toPx(this.parallaxEnd, "height", this.$el, true);
|
|
4006
4073
|
}
|
|
4007
|
-
return {
|
|
4074
|
+
return {
|
|
4075
|
+
columns,
|
|
4076
|
+
translates,
|
|
4077
|
+
scrollColumns,
|
|
4078
|
+
parallaxStart,
|
|
4079
|
+
parallaxEnd,
|
|
4080
|
+
padding: parallax,
|
|
4081
|
+
height: translates ? height : ""
|
|
4082
|
+
};
|
|
4008
4083
|
},
|
|
4009
4084
|
write({ height, padding }) {
|
|
4010
4085
|
css(this.$el, "paddingBottom", padding || "");
|
|
@@ -4013,47 +4088,78 @@
|
|
|
4013
4088
|
events: ["resize"]
|
|
4014
4089
|
},
|
|
4015
4090
|
{
|
|
4016
|
-
read() {
|
|
4017
|
-
if (
|
|
4091
|
+
read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {
|
|
4092
|
+
if (scrollColumns && positionedAbsolute(rows)) {
|
|
4018
4093
|
return false;
|
|
4019
4094
|
}
|
|
4020
4095
|
return {
|
|
4021
|
-
scrolled:
|
|
4096
|
+
scrolled: scrollColumns ? scrolledOver(this.$el, parallaxStart, parallaxEnd) : false
|
|
4022
4097
|
};
|
|
4023
4098
|
},
|
|
4024
|
-
write({ columns, scrolled, translates }) {
|
|
4025
|
-
if (scrolled
|
|
4099
|
+
write({ columns, scrolled, scrollColumns, translates }) {
|
|
4100
|
+
if (!scrolled && !translates) {
|
|
4026
4101
|
return;
|
|
4027
4102
|
}
|
|
4028
4103
|
columns.forEach(
|
|
4029
|
-
(column, i) => column.forEach(
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
)
|
|
4035
|
-
)
|
|
4104
|
+
(column, i) => column.forEach((el, j) => {
|
|
4105
|
+
let [x, y] = translates && translates[i][j] || [0, 0];
|
|
4106
|
+
if (scrolled) {
|
|
4107
|
+
y += scrolled * scrollColumns[i];
|
|
4108
|
+
}
|
|
4109
|
+
css(el, "transform", `translate(${x}px, ${y}px)`);
|
|
4110
|
+
})
|
|
4036
4111
|
);
|
|
4037
4112
|
},
|
|
4038
4113
|
events: ["scroll", "resize"]
|
|
4039
4114
|
}
|
|
4040
4115
|
]
|
|
4041
4116
|
};
|
|
4042
|
-
function positionedAbsolute(
|
|
4043
|
-
return
|
|
4044
|
-
}
|
|
4045
|
-
function getTranslates(rows, columns) {
|
|
4046
|
-
const rowHeights = rows.map((row) => Math.max(...row.map((el) => el.offsetHeight)));
|
|
4047
|
-
return columns.map((elements) => {
|
|
4048
|
-
let prev = 0;
|
|
4049
|
-
return elements.map(
|
|
4050
|
-
(element, row) => prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0
|
|
4051
|
-
);
|
|
4052
|
-
});
|
|
4117
|
+
function positionedAbsolute(rows) {
|
|
4118
|
+
return rows.flat().some((el) => css(el, "position") === "absolute");
|
|
4053
4119
|
}
|
|
4054
|
-
function
|
|
4055
|
-
const
|
|
4056
|
-
|
|
4120
|
+
function applyMasonry(rows, gutter, next) {
|
|
4121
|
+
const columns = [];
|
|
4122
|
+
const translates = [];
|
|
4123
|
+
const columnHeights = Array(rows[0].length).fill(0);
|
|
4124
|
+
let rowHeights = 0;
|
|
4125
|
+
for (let row of rows) {
|
|
4126
|
+
if (isRtl) {
|
|
4127
|
+
row = row.reverse();
|
|
4128
|
+
}
|
|
4129
|
+
let height = 0;
|
|
4130
|
+
for (const j in row) {
|
|
4131
|
+
const { offsetWidth, offsetHeight } = row[j];
|
|
4132
|
+
const index = next ? j : columnHeights.indexOf(Math.min(...columnHeights));
|
|
4133
|
+
push(columns, index, row[j]);
|
|
4134
|
+
push(translates, index, [
|
|
4135
|
+
(index - j) * offsetWidth * (isRtl ? -1 : 1),
|
|
4136
|
+
columnHeights[index] - rowHeights
|
|
4137
|
+
]);
|
|
4138
|
+
columnHeights[index] += offsetHeight + gutter;
|
|
4139
|
+
height = Math.max(height, offsetHeight);
|
|
4140
|
+
}
|
|
4141
|
+
rowHeights += height + gutter;
|
|
4142
|
+
}
|
|
4143
|
+
return [columns, translates];
|
|
4144
|
+
}
|
|
4145
|
+
function getGutter(rows, cls) {
|
|
4146
|
+
const node = rows.flat().find((el) => hasClass(el, cls));
|
|
4147
|
+
return toFloat(node ? css(node, "marginTop") : css(rows[0][0], "paddingLeft"));
|
|
4148
|
+
}
|
|
4149
|
+
function transpose(rows) {
|
|
4150
|
+
const columns = [];
|
|
4151
|
+
for (const row of rows) {
|
|
4152
|
+
for (const i in row) {
|
|
4153
|
+
push(columns, i, row[i]);
|
|
4154
|
+
}
|
|
4155
|
+
}
|
|
4156
|
+
return columns;
|
|
4157
|
+
}
|
|
4158
|
+
function push(array, index, value) {
|
|
4159
|
+
if (!array[index]) {
|
|
4160
|
+
array[index] = [];
|
|
4161
|
+
}
|
|
4162
|
+
array[index].push(value);
|
|
4057
4163
|
}
|
|
4058
4164
|
|
|
4059
4165
|
var heightMatch = {
|
|
@@ -4148,7 +4254,8 @@
|
|
|
4148
4254
|
} else {
|
|
4149
4255
|
if (this.offsetTop) {
|
|
4150
4256
|
if (isScrollingElement) {
|
|
4151
|
-
const
|
|
4257
|
+
const offsetTopEl = this.offsetTop === true ? this.$el : query(this.offsetTop, this.$el);
|
|
4258
|
+
const top = offsetPosition(offsetTopEl)[0] - offsetPosition(scrollElement)[0];
|
|
4152
4259
|
minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : "";
|
|
4153
4260
|
} else {
|
|
4154
4261
|
minHeight += ` - ${css(scrollElement, "paddingTop")}`;
|
|
@@ -5005,10 +5112,23 @@
|
|
|
5005
5112
|
|
|
5006
5113
|
var navbar = {
|
|
5007
5114
|
extends: Dropnav,
|
|
5115
|
+
props: {
|
|
5116
|
+
dropbarTransparentMode: Boolean
|
|
5117
|
+
},
|
|
5008
5118
|
data: {
|
|
5009
5119
|
clsDrop: "uk-navbar-dropdown",
|
|
5010
|
-
selNavItem: ".uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle"
|
|
5120
|
+
selNavItem: ".uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle",
|
|
5011
5121
|
// Simplify with :where() selector once browser target is Safari 14+
|
|
5122
|
+
selTransparentTarget: '[class*="uk-section"]',
|
|
5123
|
+
dropbarTransparentMode: false
|
|
5124
|
+
},
|
|
5125
|
+
computed: {
|
|
5126
|
+
dropbarOffset() {
|
|
5127
|
+
return this.dropbarTransparentMode === "behind" ? this.$el.offsetHeight : 0;
|
|
5128
|
+
},
|
|
5129
|
+
navbarContainer() {
|
|
5130
|
+
return closest(this.$el, ".uk-navbar-container");
|
|
5131
|
+
}
|
|
5012
5132
|
},
|
|
5013
5133
|
watch: {
|
|
5014
5134
|
items() {
|
|
@@ -5027,8 +5147,153 @@
|
|
|
5027
5147
|
);
|
|
5028
5148
|
}
|
|
5029
5149
|
}
|
|
5150
|
+
},
|
|
5151
|
+
disconnect() {
|
|
5152
|
+
var _a;
|
|
5153
|
+
(_a = this._colorListener) == null ? void 0 : _a.call(this);
|
|
5154
|
+
},
|
|
5155
|
+
observe: [
|
|
5156
|
+
mutation({
|
|
5157
|
+
target: ({ navbarContainer }) => navbarContainer,
|
|
5158
|
+
handler() {
|
|
5159
|
+
this.registerColorListener();
|
|
5160
|
+
},
|
|
5161
|
+
options: { attributes: true, attributeFilter: ["class"], attributeOldValue: true }
|
|
5162
|
+
}),
|
|
5163
|
+
intersection({
|
|
5164
|
+
handler(records) {
|
|
5165
|
+
this._isIntersecting = records[0].isIntersecting;
|
|
5166
|
+
this.registerColorListener();
|
|
5167
|
+
},
|
|
5168
|
+
args: { intersecting: false }
|
|
5169
|
+
})
|
|
5170
|
+
],
|
|
5171
|
+
events: [
|
|
5172
|
+
{
|
|
5173
|
+
name: "show",
|
|
5174
|
+
el() {
|
|
5175
|
+
return this.dropContainer;
|
|
5176
|
+
},
|
|
5177
|
+
handler({ target }) {
|
|
5178
|
+
const transparentMode = this.getTransparentMode(target);
|
|
5179
|
+
if (!transparentMode || this._mode) {
|
|
5180
|
+
return;
|
|
5181
|
+
}
|
|
5182
|
+
const storePrevColor = () => this._mode = removeClasses(this.navbarContainer, "uk-light", "uk-dark");
|
|
5183
|
+
if (transparentMode === "behind") {
|
|
5184
|
+
const mode = getDropbarBehindColor(this.$el);
|
|
5185
|
+
if (mode) {
|
|
5186
|
+
storePrevColor();
|
|
5187
|
+
addClass(this.navbarContainer, `uk-${mode}`);
|
|
5188
|
+
}
|
|
5189
|
+
}
|
|
5190
|
+
if (transparentMode === "remove") {
|
|
5191
|
+
storePrevColor();
|
|
5192
|
+
removeClass(this.navbarContainer, "uk-navbar-transparent");
|
|
5193
|
+
}
|
|
5194
|
+
}
|
|
5195
|
+
},
|
|
5196
|
+
{
|
|
5197
|
+
name: "hide",
|
|
5198
|
+
el() {
|
|
5199
|
+
return this.dropContainer;
|
|
5200
|
+
},
|
|
5201
|
+
async handler({ target }) {
|
|
5202
|
+
const transparentMode = this.getTransparentMode(target);
|
|
5203
|
+
if (!transparentMode || !this._mode) {
|
|
5204
|
+
return;
|
|
5205
|
+
}
|
|
5206
|
+
await awaitMacroTask();
|
|
5207
|
+
if (this.getActive()) {
|
|
5208
|
+
return;
|
|
5209
|
+
}
|
|
5210
|
+
if (transparentMode === "behind") {
|
|
5211
|
+
const mode = getDropbarBehindColor(this.$el);
|
|
5212
|
+
if (mode) {
|
|
5213
|
+
removeClass(this.navbarContainer, `uk-${mode}`);
|
|
5214
|
+
}
|
|
5215
|
+
}
|
|
5216
|
+
addClass(this.navbarContainer, this._mode);
|
|
5217
|
+
if (transparentMode === "remove") {
|
|
5218
|
+
addClass(this.navbarContainer, "uk-navbar-transparent");
|
|
5219
|
+
}
|
|
5220
|
+
this._mode = null;
|
|
5221
|
+
}
|
|
5222
|
+
}
|
|
5223
|
+
],
|
|
5224
|
+
methods: {
|
|
5225
|
+
getTransparentMode(el) {
|
|
5226
|
+
if (!this.navbarContainer) {
|
|
5227
|
+
return;
|
|
5228
|
+
}
|
|
5229
|
+
if (this.dropbar && this.isDropbarDrop(el)) {
|
|
5230
|
+
return this.dropbarTransparentMode;
|
|
5231
|
+
}
|
|
5232
|
+
const drop = this.getDropdown(el);
|
|
5233
|
+
if (!drop || !hasClass(el, "uk-dropbar")) {
|
|
5234
|
+
return;
|
|
5235
|
+
}
|
|
5236
|
+
return drop.inset ? "behind" : "remove";
|
|
5237
|
+
},
|
|
5238
|
+
registerColorListener() {
|
|
5239
|
+
const active = this._isIntersecting && hasClass(this.navbarContainer, "uk-navbar-transparent") && !isWithinMixBlendMode(this.navbarContainer) && !$$(".uk-drop", this.dropContainer).map(this.getDropdown).some(
|
|
5240
|
+
(drop) => drop.isToggled() && (drop.inset || this.getTransparentMode(drop.$el) === "behind")
|
|
5241
|
+
);
|
|
5242
|
+
if (this._colorListener) {
|
|
5243
|
+
if (!active) {
|
|
5244
|
+
this._colorListener();
|
|
5245
|
+
this._colorListener = null;
|
|
5246
|
+
}
|
|
5247
|
+
return;
|
|
5248
|
+
}
|
|
5249
|
+
if (!active) {
|
|
5250
|
+
return;
|
|
5251
|
+
}
|
|
5252
|
+
this._colorListener = listenForPositionChange(this.navbarContainer, () => {
|
|
5253
|
+
const { left, top, height } = offset(this.navbarContainer);
|
|
5254
|
+
const startPoint = { x: left, y: Math.max(0, top) + height / 2 };
|
|
5255
|
+
const target = $$(this.selTransparentTarget).find(
|
|
5256
|
+
(target2) => pointInRect(startPoint, offset(target2))
|
|
5257
|
+
);
|
|
5258
|
+
const color = css(target, "--uk-navbar-color");
|
|
5259
|
+
if (color) {
|
|
5260
|
+
replaceClass(this.navbarContainer, "uk-light,uk-dark", `uk-${color}`);
|
|
5261
|
+
}
|
|
5262
|
+
});
|
|
5263
|
+
}
|
|
5030
5264
|
}
|
|
5031
5265
|
};
|
|
5266
|
+
function removeClasses(el, ...classes) {
|
|
5267
|
+
for (const cls of classes) {
|
|
5268
|
+
if (hasClass(el, cls)) {
|
|
5269
|
+
removeClass(el, cls);
|
|
5270
|
+
return cls;
|
|
5271
|
+
}
|
|
5272
|
+
}
|
|
5273
|
+
}
|
|
5274
|
+
async function awaitMacroTask() {
|
|
5275
|
+
return new Promise((resolve) => setTimeout(resolve));
|
|
5276
|
+
}
|
|
5277
|
+
function getDropbarBehindColor(el) {
|
|
5278
|
+
return css(el, "--uk-navbar-dropbar-behind-color");
|
|
5279
|
+
}
|
|
5280
|
+
function listenForPositionChange(el, handler) {
|
|
5281
|
+
const parent2 = scrollParent(el, true);
|
|
5282
|
+
const scrollEl = parent2 === document.documentElement ? document : parent2;
|
|
5283
|
+
const off = on(scrollEl, "scroll", handler, { passive: true });
|
|
5284
|
+
const observer = observeResize([el, parent2], handler);
|
|
5285
|
+
return () => {
|
|
5286
|
+
off();
|
|
5287
|
+
observer.disconnect();
|
|
5288
|
+
};
|
|
5289
|
+
}
|
|
5290
|
+
function isWithinMixBlendMode(el) {
|
|
5291
|
+
do {
|
|
5292
|
+
if (css(el, "mixBlendMode") !== "normal") {
|
|
5293
|
+
return true;
|
|
5294
|
+
}
|
|
5295
|
+
} while (el = parent(el));
|
|
5296
|
+
}
|
|
5032
5297
|
|
|
5033
5298
|
var offcanvas = {
|
|
5034
5299
|
mixins: [Modal],
|
|
@@ -5343,7 +5608,7 @@
|
|
|
5343
5608
|
}
|
|
5344
5609
|
this.$emit();
|
|
5345
5610
|
},
|
|
5346
|
-
options: (
|
|
5611
|
+
options: ({ margin }) => ({ rootMargin: margin }),
|
|
5347
5612
|
args: { intersecting: false }
|
|
5348
5613
|
}),
|
|
5349
5614
|
update: [
|
|
@@ -5378,7 +5643,7 @@
|
|
|
5378
5643
|
toggleClass(el, this.inViewClass, inview);
|
|
5379
5644
|
toggleClass(el, state.cls);
|
|
5380
5645
|
if (/\buk-animation-/.test(state.cls)) {
|
|
5381
|
-
const removeAnimationClasses = () => removeClasses(el, "uk-animation-[\\w-]+");
|
|
5646
|
+
const removeAnimationClasses = () => removeClasses$1(el, "uk-animation-[\\w-]+");
|
|
5382
5647
|
if (inview) {
|
|
5383
5648
|
state.off = once(el, "animationcancel animationend", removeAnimationClasses);
|
|
5384
5649
|
} else {
|
|
@@ -5395,7 +5660,7 @@
|
|
|
5395
5660
|
var scrollspyNav = {
|
|
5396
5661
|
props: {
|
|
5397
5662
|
cls: String,
|
|
5398
|
-
closest:
|
|
5663
|
+
closest: Boolean,
|
|
5399
5664
|
scroll: Boolean,
|
|
5400
5665
|
overflow: Boolean,
|
|
5401
5666
|
offset: Number
|
|
@@ -5412,13 +5677,13 @@
|
|
|
5412
5677
|
return $$('a[href*="#"]', $el).filter((el) => el.hash && isSameSiteAnchor(el));
|
|
5413
5678
|
},
|
|
5414
5679
|
elements({ closest: selector }) {
|
|
5415
|
-
return
|
|
5680
|
+
return this.links.map((el) => closest(el, selector || "*"));
|
|
5416
5681
|
}
|
|
5417
5682
|
},
|
|
5418
5683
|
watch: {
|
|
5419
5684
|
links(links) {
|
|
5420
5685
|
if (this.scroll) {
|
|
5421
|
-
this.$create("scroll", links, { offset: this.offset
|
|
5686
|
+
this.$create("scroll", links, { offset: this.offset });
|
|
5422
5687
|
}
|
|
5423
5688
|
}
|
|
5424
5689
|
},
|
|
@@ -5440,7 +5705,9 @@
|
|
|
5440
5705
|
active = length - 1;
|
|
5441
5706
|
} else {
|
|
5442
5707
|
for (let i = 0; i < targets.length; i++) {
|
|
5443
|
-
|
|
5708
|
+
const fixedEl = findFixedElement(targets[i]);
|
|
5709
|
+
const offsetBy = this.offset + (fixedEl ? offset(fixedEl).height : 0);
|
|
5710
|
+
if (offset(targets[i]).top - viewport.top - offsetBy > 0) {
|
|
5444
5711
|
break;
|
|
5445
5712
|
}
|
|
5446
5713
|
active = +i;
|
|
@@ -5465,6 +5732,9 @@
|
|
|
5465
5732
|
}
|
|
5466
5733
|
]
|
|
5467
5734
|
};
|
|
5735
|
+
function findFixedElement(target) {
|
|
5736
|
+
return target.ownerDocument.elementsFromPoint(1, 1).find((el) => ["fixed", "sticky"].includes(css(el, "position")) && !el.contains(target));
|
|
5737
|
+
}
|
|
5468
5738
|
|
|
5469
5739
|
var sticky = {
|
|
5470
5740
|
mixins: [Class, Media],
|
|
@@ -5553,7 +5823,6 @@
|
|
|
5553
5823
|
},
|
|
5554
5824
|
{
|
|
5555
5825
|
name: "transitionstart",
|
|
5556
|
-
capture: true,
|
|
5557
5826
|
handler() {
|
|
5558
5827
|
this.transitionInProgress = once(
|
|
5559
5828
|
this.$el,
|
|
@@ -5584,7 +5853,10 @@
|
|
|
5584
5853
|
}
|
|
5585
5854
|
const viewport2 = toPx("100vh", "height");
|
|
5586
5855
|
const dynamicViewport = height(window);
|
|
5587
|
-
const maxScrollHeight =
|
|
5856
|
+
const maxScrollHeight = Math.max(
|
|
5857
|
+
0,
|
|
5858
|
+
document.scrollingElement.scrollHeight - viewport2
|
|
5859
|
+
);
|
|
5588
5860
|
let position = this.position;
|
|
5589
5861
|
if (this.overflowFlip && height$1 > viewport2) {
|
|
5590
5862
|
position = position === "top" ? "bottom" : "top";
|
|
@@ -5699,7 +5971,9 @@
|
|
|
5699
5971
|
return;
|
|
5700
5972
|
}
|
|
5701
5973
|
if (this.animation && scroll2 > topOffset) {
|
|
5702
|
-
|
|
5974
|
+
if (hasClass(this.$el, "uk-animation-leave")) {
|
|
5975
|
+
return;
|
|
5976
|
+
}
|
|
5703
5977
|
Animation.out(this.$el, this.animation).then(() => this.hide(), noop);
|
|
5704
5978
|
} else {
|
|
5705
5979
|
this.hide();
|
|
@@ -5707,7 +5981,6 @@
|
|
|
5707
5981
|
} else if (this.isFixed) {
|
|
5708
5982
|
this.update();
|
|
5709
5983
|
} else if (this.animation && scroll2 > topOffset) {
|
|
5710
|
-
Animation.cancel(this.$el);
|
|
5711
5984
|
this.show();
|
|
5712
5985
|
Animation.in(this.$el, this.animation).catch(noop);
|
|
5713
5986
|
} else {
|
|
@@ -5760,15 +6033,12 @@
|
|
|
5760
6033
|
if (!sticky) {
|
|
5761
6034
|
let position = "fixed";
|
|
5762
6035
|
if (scroll2 > end) {
|
|
5763
|
-
offset += end - offsetParentTop;
|
|
6036
|
+
offset += end - offsetParentTop + overflowScroll - overflow;
|
|
5764
6037
|
position = "absolute";
|
|
5765
6038
|
}
|
|
5766
6039
|
css(this.$el, { position, width, marginTop: 0 }, "important");
|
|
5767
6040
|
}
|
|
5768
|
-
|
|
5769
|
-
offset -= overflowScroll;
|
|
5770
|
-
}
|
|
5771
|
-
css(this.$el, "top", offset);
|
|
6041
|
+
css(this.$el, "top", offset - overflowScroll);
|
|
5772
6042
|
this.setActive(active);
|
|
5773
6043
|
toggleClass(
|
|
5774
6044
|
this.$el,
|