uikit 3.19.5-dev.ac3a5fd02 → 3.19.5-dev.b0b54f9e4
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 +4 -0
- package/dist/css/uikit-core-rtl.css +2 -2
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +2 -2
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +2 -2
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +2 -2
- 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 +1 -1
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1 -1
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1 -1
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +6 -4
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +7 -5
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +6 -4
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +7 -5
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +6 -4
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +1 -1
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -1
- 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 +58 -47
- 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 +64 -51
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/computed.js +24 -23
- package/src/js/api/observer.js +1 -1
- package/src/js/components/slider-parallax.js +2 -2
- package/src/js/core/drop.js +1 -2
- package/src/js/core/height-placeholder.js +5 -2
- package/src/js/core/height-viewport.js +1 -1
- package/src/js/core/icon.js +2 -3
- package/src/js/core/inverse.js +6 -2
- package/src/js/core/modal.js +5 -6
- package/src/js/core/switcher.js +5 -1
- package/src/js/core/toggle.js +7 -3
- package/src/js/mixin/parallax.js +7 -3
- package/src/js/util/filter.js +7 -14
- package/src/less/components/utility.less +1 -1
- package/src/scss/components/utility.scss +1 -1
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "uikit",
|
|
3
3
|
"title": "UIkit",
|
|
4
4
|
"description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
|
|
5
|
-
"version": "3.19.5-dev.
|
|
5
|
+
"version": "3.19.5-dev.b0b54f9e4",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/computed.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { hasOwn, isUndefined } from 'uikit-util';
|
|
2
|
-
import { callUpdate, prependUpdate } from './update';
|
|
3
|
-
import { runWatches } from './watch';
|
|
1
|
+
import { hasOwn, isUndefined, observeMutation } from 'uikit-util';
|
|
2
|
+
import { callUpdate, prependUpdate } from './update.js';
|
|
3
|
+
import { runWatches } from './watch.js';
|
|
4
4
|
|
|
5
5
|
export function initComputed(instance) {
|
|
6
6
|
const { computed } = instance.$options;
|
|
@@ -13,7 +13,7 @@ export function initComputed(instance) {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
const mutationOptions = { subtree: true, childList: true };
|
|
17
17
|
export function registerComputed(instance, key, cb) {
|
|
18
18
|
instance._hasComputed = true;
|
|
19
19
|
Object.defineProperty(instance, key, {
|
|
@@ -24,6 +24,15 @@ export function registerComputed(instance, key, cb) {
|
|
|
24
24
|
|
|
25
25
|
if (!hasOwn(_computed, key)) {
|
|
26
26
|
_computed[key] = (cb.get || cb).call(instance, $props, $el);
|
|
27
|
+
if (cb.observe && instance._computedObserver) {
|
|
28
|
+
const observeEl = cb.observe.call(instance, _computed[key]);
|
|
29
|
+
if (observeEl && observeEl !== $el) {
|
|
30
|
+
instance._computedObserver.observe(
|
|
31
|
+
findClosestCommonParent(observeEl, $el),
|
|
32
|
+
mutationOptions,
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
27
36
|
}
|
|
28
37
|
|
|
29
38
|
return _computed[key];
|
|
@@ -51,12 +60,16 @@ export function initComputedUpdates(instance) {
|
|
|
51
60
|
events: ['resize', 'computed'],
|
|
52
61
|
});
|
|
53
62
|
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
instance._computedObserver = observeMutation(
|
|
64
|
+
instance.$el,
|
|
65
|
+
() => callUpdate(instance, 'computed'),
|
|
66
|
+
mutationOptions,
|
|
67
|
+
);
|
|
56
68
|
}
|
|
57
69
|
|
|
58
70
|
export function disconnectComputedUpdates(instance) {
|
|
59
|
-
|
|
71
|
+
instance._computedObserver?.disconnect();
|
|
72
|
+
delete instance._computedObserver;
|
|
60
73
|
resetComputed(instance);
|
|
61
74
|
}
|
|
62
75
|
|
|
@@ -66,21 +79,9 @@ function resetComputed(instance) {
|
|
|
66
79
|
return values;
|
|
67
80
|
}
|
|
68
81
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (observer) {
|
|
73
|
-
return;
|
|
82
|
+
function findClosestCommonParent(el1, el2) {
|
|
83
|
+
while (el1 && !el1.contains(el2)) {
|
|
84
|
+
el1 = el1.parentNode;
|
|
74
85
|
}
|
|
75
|
-
|
|
76
|
-
instances = new Set();
|
|
77
|
-
observer = new MutationObserver(() => {
|
|
78
|
-
for (const instance of instances) {
|
|
79
|
-
callUpdate(instance, 'computed');
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
observer.observe(document, {
|
|
83
|
-
subtree: true,
|
|
84
|
-
childList: true,
|
|
85
|
-
});
|
|
86
|
+
return el1;
|
|
86
87
|
}
|
package/src/js/api/observer.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { css, endsWith, fastdom, noop, Transition } from 'uikit-util';
|
|
2
2
|
import Parallax from '../mixin/parallax';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
5
|
mixins: [Parallax],
|
|
6
6
|
|
|
7
7
|
beforeConnect() {
|
|
8
|
-
this.item =
|
|
8
|
+
this.item = this.$el.closest(`.${this.$options.id.replace('parallax', 'items')} > *`);
|
|
9
9
|
},
|
|
10
10
|
|
|
11
11
|
disconnected() {
|
package/src/js/core/drop.js
CHANGED
|
@@ -27,7 +27,6 @@ import {
|
|
|
27
27
|
pointerUp,
|
|
28
28
|
query,
|
|
29
29
|
removeClass,
|
|
30
|
-
within,
|
|
31
30
|
} from 'uikit-util';
|
|
32
31
|
import Container from '../mixin/container';
|
|
33
32
|
import Position from '../mixin/position';
|
|
@@ -513,7 +512,7 @@ function listenForBackgroundClose(drop) {
|
|
|
513
512
|
!defaultPrevented &&
|
|
514
513
|
type === pointerUp &&
|
|
515
514
|
target === newTarget &&
|
|
516
|
-
!
|
|
515
|
+
!drop.targetEl?.contains(target)
|
|
517
516
|
) {
|
|
518
517
|
drop.hide(false);
|
|
519
518
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { css, query } from 'uikit-util';
|
|
1
|
+
import { css, parent, query } from 'uikit-util';
|
|
2
2
|
import { resize } from '../api/observables';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
@@ -13,7 +13,10 @@ export default {
|
|
|
13
13
|
},
|
|
14
14
|
|
|
15
15
|
computed: {
|
|
16
|
-
target:
|
|
16
|
+
target: {
|
|
17
|
+
get: ({ target }, $el) => query(target, $el),
|
|
18
|
+
observe: (target) => parent(target),
|
|
19
|
+
},
|
|
17
20
|
},
|
|
18
21
|
|
|
19
22
|
observe: resize({ target: ({ target }) => target }),
|
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
offsetPosition(offsetTopEl)[0] - offsetPosition(scrollElement)[0];
|
|
69
69
|
minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : '';
|
|
70
70
|
} else {
|
|
71
|
-
minHeight += ` - ${css(scrollElement, '
|
|
71
|
+
minHeight += ` - ${boxModelAdjust(scrollElement, 'height', css(scrollElement, 'boxSizing'))}px`;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
package/src/js/core/icon.js
CHANGED
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
addClass,
|
|
4
4
|
apply,
|
|
5
5
|
attr,
|
|
6
|
-
closest,
|
|
7
6
|
css,
|
|
8
7
|
each,
|
|
9
8
|
hasAttr,
|
|
@@ -126,9 +125,9 @@ export const Search = {
|
|
|
126
125
|
hasClass(this.$el, 'uk-search-toggle') || hasClass(this.$el, 'uk-navbar-toggle');
|
|
127
126
|
this.icon = isToggle
|
|
128
127
|
? 'search-toggle-icon'
|
|
129
|
-
: hasClass(this.$el, 'uk-search-icon') &&
|
|
128
|
+
: hasClass(this.$el, 'uk-search-icon') && this.$el.closest('.uk-search-large')
|
|
130
129
|
? 'search-large'
|
|
131
|
-
:
|
|
130
|
+
: this.$el.closest('.uk-search-navbar')
|
|
132
131
|
? 'search-navbar'
|
|
133
132
|
: this.$props.icon;
|
|
134
133
|
|
package/src/js/core/inverse.js
CHANGED
|
@@ -18,9 +18,11 @@ export default {
|
|
|
18
18
|
|
|
19
19
|
observe: [
|
|
20
20
|
intersection({
|
|
21
|
-
handler(
|
|
22
|
-
this.isIntersecting = isIntersecting;
|
|
21
|
+
handler(entries) {
|
|
22
|
+
this.isIntersecting = entries.some(({ isIntersecting }) => isIntersecting);
|
|
23
|
+
this.$emit();
|
|
23
24
|
},
|
|
25
|
+
target: ({ target }) => target,
|
|
24
26
|
args: { intersecting: false },
|
|
25
27
|
}),
|
|
26
28
|
mutation({
|
|
@@ -50,6 +52,8 @@ export default {
|
|
|
50
52
|
];
|
|
51
53
|
|
|
52
54
|
return {
|
|
55
|
+
observe: observer.observe.bind(observer),
|
|
56
|
+
unobserve: observer.unobserve.bind(observer),
|
|
53
57
|
disconnect() {
|
|
54
58
|
observer.disconnect();
|
|
55
59
|
listener.map((off) => off());
|
package/src/js/core/modal.js
CHANGED
|
@@ -70,12 +70,11 @@ export default {
|
|
|
70
70
|
|
|
71
71
|
function install({ modal }) {
|
|
72
72
|
modal.dialog = function (content, options) {
|
|
73
|
-
const dialog = modal(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
);
|
|
73
|
+
const dialog = modal($(`<div><div class="uk-modal-dialog">${content}</div></div>`), {
|
|
74
|
+
stack: true,
|
|
75
|
+
role: 'alertdialog',
|
|
76
|
+
...options,
|
|
77
|
+
});
|
|
79
78
|
|
|
80
79
|
dialog.show();
|
|
81
80
|
|
package/src/js/core/switcher.js
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
isNode,
|
|
13
13
|
isTag,
|
|
14
14
|
matches,
|
|
15
|
+
parent,
|
|
15
16
|
queryAll,
|
|
16
17
|
toArray,
|
|
17
18
|
toggleClass,
|
|
@@ -50,7 +51,10 @@ export default {
|
|
|
50
51
|
},
|
|
51
52
|
|
|
52
53
|
computed: {
|
|
53
|
-
connects:
|
|
54
|
+
connects: {
|
|
55
|
+
get: ({ connect }, $el) => queryAll(connect, $el),
|
|
56
|
+
observe: (connects) => parent(connects[0]),
|
|
57
|
+
},
|
|
54
58
|
|
|
55
59
|
connectChildren() {
|
|
56
60
|
return this.connects.map((el) => children(el)).flat();
|
package/src/js/core/toggle.js
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
isTouch,
|
|
10
10
|
matches,
|
|
11
11
|
once,
|
|
12
|
+
parent,
|
|
12
13
|
pointerDown,
|
|
13
14
|
pointerEnter,
|
|
14
15
|
pointerLeave,
|
|
@@ -41,9 +42,12 @@ export default {
|
|
|
41
42
|
},
|
|
42
43
|
|
|
43
44
|
computed: {
|
|
44
|
-
target
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
target: {
|
|
46
|
+
get: ({ target }, $el) => {
|
|
47
|
+
target = queryAll(target || $el.hash, $el);
|
|
48
|
+
return target.length ? target : [$el];
|
|
49
|
+
},
|
|
50
|
+
observe: (target) => parent(target[0]),
|
|
47
51
|
},
|
|
48
52
|
},
|
|
49
53
|
|
package/src/js/mixin/parallax.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
isString,
|
|
8
8
|
isUndefined,
|
|
9
9
|
noop,
|
|
10
|
+
once,
|
|
10
11
|
propName,
|
|
11
12
|
toFloat,
|
|
12
13
|
toPx,
|
|
@@ -271,6 +272,7 @@ function setBackgroundPosFn(bgProps, positions, props) {
|
|
|
271
272
|
};
|
|
272
273
|
}
|
|
273
274
|
|
|
275
|
+
const loading = {};
|
|
274
276
|
const dimensions = {};
|
|
275
277
|
function getBackgroundImageDimensions(el) {
|
|
276
278
|
const src = css(el, 'backgroundImage').replace(/^none|url\(["']?(.+?)["']?\)$/, '$1');
|
|
@@ -283,11 +285,13 @@ function getBackgroundImageDimensions(el) {
|
|
|
283
285
|
if (src) {
|
|
284
286
|
image.src = src;
|
|
285
287
|
|
|
286
|
-
if (!image.naturalWidth) {
|
|
287
|
-
image
|
|
288
|
+
if (!image.naturalWidth && !loading[src]) {
|
|
289
|
+
once(image, 'error load', () => {
|
|
288
290
|
dimensions[src] = toDimensions(image);
|
|
289
291
|
trigger(el, createEvent('load', false));
|
|
290
|
-
};
|
|
292
|
+
});
|
|
293
|
+
loading[src] = true;
|
|
294
|
+
|
|
291
295
|
return toDimensions(image);
|
|
292
296
|
}
|
|
293
297
|
}
|
package/src/js/util/filter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toArray, toNode, toNodes } from './lang';
|
|
2
2
|
|
|
3
3
|
const voidElements = {
|
|
4
4
|
area: true,
|
|
@@ -21,10 +21,13 @@ export function isVoidElement(element) {
|
|
|
21
21
|
return toNodes(element).some((element) => voidElements[element.tagName.toLowerCase()]);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
const isVisibleFn =
|
|
25
|
+
Element.prototype.checkVisibility ||
|
|
26
|
+
function () {
|
|
27
|
+
return this.offsetWidth || this.offsetHeight || this.getClientRects().length;
|
|
28
|
+
};
|
|
24
29
|
export function isVisible(element) {
|
|
25
|
-
return toNodes(element).some(
|
|
26
|
-
(element) => element.offsetWidth || element.offsetHeight || element.getClientRects().length,
|
|
27
|
-
);
|
|
30
|
+
return toNodes(element).some((element) => isVisibleFn.call(element));
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
export const selInput = 'input,select,textarea,button';
|
|
@@ -49,16 +52,6 @@ export function matches(element, selector) {
|
|
|
49
52
|
return toNodes(element).some((element) => element.matches(selector));
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
export function closest(element, selector) {
|
|
53
|
-
return toNode(element)?.closest(startsWith(selector, '>') ? selector.slice(1) : selector);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function within(element, selector) {
|
|
57
|
-
return isString(selector)
|
|
58
|
-
? !!closest(element, selector)
|
|
59
|
-
: toNode(selector).contains(toNode(element));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
55
|
export function parents(element, selector) {
|
|
63
56
|
const elements = [];
|
|
64
57
|
|