uikit 3.15.2 → 3.15.3-dev.45f4472ed
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 +11 -1
- 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 +102 -109
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +2 -4
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +2 -4
- 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 +1 -1
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +1 -1
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +4 -2
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +1 -1
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +4 -2
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +90 -96
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -3
- 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 +4 -8
- package/dist/js/uikit-core.min.js +2 -2
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +109 -118
- package/dist/js/uikit.min.js +2 -2
- package/package.json +1 -1
- package/src/js/api/state.js +1 -1
- package/src/js/components/filter.js +12 -14
- package/src/js/core/cover.js +1 -1
- package/src/js/core/scrollspy.js +0 -2
- package/src/js/mixin/internal/animate-fade.js +50 -51
- package/src/js/mixin/internal/animate-slide.js +52 -57
- package/src/js/mixin/slider-reactive.js +2 -0
- package/src/js/mixin/slider.js +1 -1
- package/src/js/mixin/togglable.js +0 -2
- package/src/less/components/nav.less +1 -1
- package/src/less/components/navbar.less +2 -1
- package/src/scss/components/nav.scss +1 -1
- package/src/scss/components/navbar.scss +2 -1
- package/src/scss/variables-theme.scss +1 -0
- package/src/scss/variables.scss +1 -0
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.15.
|
|
5
|
+
"version": "3.15.3-dev.45f4472ed",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/state.js
CHANGED
|
@@ -267,7 +267,7 @@ function normalizeData({ data = {} }, { args = [], props = {} }) {
|
|
|
267
267
|
function initChildListObserver(component) {
|
|
268
268
|
const { el } = component.$options;
|
|
269
269
|
|
|
270
|
-
const observer = new MutationObserver(() => component
|
|
270
|
+
const observer = new MutationObserver(() => component._callWatches());
|
|
271
271
|
observer.observe(el, {
|
|
272
272
|
childList: true,
|
|
273
273
|
subtree: true,
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
css,
|
|
6
6
|
data,
|
|
7
7
|
each,
|
|
8
|
-
fastdom,
|
|
9
8
|
children as getChildren,
|
|
10
9
|
hasClass,
|
|
11
10
|
includes,
|
|
@@ -43,7 +42,7 @@ export default {
|
|
|
43
42
|
},
|
|
44
43
|
|
|
45
44
|
watch() {
|
|
46
|
-
this
|
|
45
|
+
this.$emit();
|
|
47
46
|
|
|
48
47
|
if (this.selActive !== false) {
|
|
49
48
|
const actives = $$(this.selActive, this.$el);
|
|
@@ -61,7 +60,7 @@ export default {
|
|
|
61
60
|
|
|
62
61
|
watch(list, old) {
|
|
63
62
|
if (old && !isEqualList(list, old)) {
|
|
64
|
-
this
|
|
63
|
+
this.$emit();
|
|
65
64
|
}
|
|
66
65
|
},
|
|
67
66
|
|
|
@@ -69,6 +68,12 @@ export default {
|
|
|
69
68
|
},
|
|
70
69
|
},
|
|
71
70
|
|
|
71
|
+
update: {
|
|
72
|
+
write() {
|
|
73
|
+
this.setState(this.getState(), false);
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
|
|
72
77
|
events: [
|
|
73
78
|
{
|
|
74
79
|
name: 'click',
|
|
@@ -108,26 +113,19 @@ export default {
|
|
|
108
113
|
|
|
109
114
|
trigger(this.$el, 'beforeFilter', [this, state]);
|
|
110
115
|
|
|
111
|
-
this.toggles
|
|
112
|
-
toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state))
|
|
113
|
-
|
|
116
|
+
for (const el of this.toggles) {
|
|
117
|
+
toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state));
|
|
118
|
+
}
|
|
114
119
|
|
|
115
120
|
await Promise.all(
|
|
116
121
|
$$(this.target, this.$el).map((target) => {
|
|
117
|
-
const filterFn = () =>
|
|
118
|
-
applyState(state, target, getChildren(target));
|
|
119
|
-
this.$update(this.$el);
|
|
120
|
-
};
|
|
122
|
+
const filterFn = () => applyState(state, target, getChildren(target));
|
|
121
123
|
return animate ? this.animate(filterFn, target) : filterFn();
|
|
122
124
|
})
|
|
123
125
|
);
|
|
124
126
|
|
|
125
127
|
trigger(this.$el, 'afterFilter', [this]);
|
|
126
128
|
},
|
|
127
|
-
|
|
128
|
-
updateState() {
|
|
129
|
-
fastdom.write(() => this.setState(this.getState(), false));
|
|
130
|
-
},
|
|
131
129
|
},
|
|
132
130
|
};
|
|
133
131
|
|
package/src/js/core/cover.js
CHANGED
package/src/js/core/scrollspy.js
CHANGED
|
@@ -23,10 +23,10 @@ export default function fade(action, target, duration, stagger = 0) {
|
|
|
23
23
|
|
|
24
24
|
const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
|
|
25
25
|
|
|
26
|
-
const leaveFn = wrapIndexFn(() => {
|
|
26
|
+
const leaveFn = wrapIndexFn(async () => {
|
|
27
27
|
addClass(target, clsLeave);
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
await Promise.all(
|
|
30
30
|
getTransitionNodes(target).map(
|
|
31
31
|
(child, i) =>
|
|
32
32
|
new Promise((resolve) =>
|
|
@@ -39,10 +39,12 @@ export default function fade(action, target, duration, stagger = 0) {
|
|
|
39
39
|
)
|
|
40
40
|
)
|
|
41
41
|
)
|
|
42
|
-
)
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
removeClass(target, clsLeave);
|
|
43
45
|
});
|
|
44
46
|
|
|
45
|
-
const enterFn = wrapIndexFn(() => {
|
|
47
|
+
const enterFn = wrapIndexFn(async () => {
|
|
46
48
|
const oldHeight = height(target);
|
|
47
49
|
|
|
48
50
|
addClass(target, clsEnter);
|
|
@@ -51,53 +53,42 @@ export default function fade(action, target, duration, stagger = 0) {
|
|
|
51
53
|
css(children(target), { opacity: 0 });
|
|
52
54
|
|
|
53
55
|
// Ensure UIkit updates have propagated
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
Promise.all(transitions).then(() => {
|
|
91
|
-
removeClass(target, clsEnter);
|
|
92
|
-
if (index === transitionIndex(target)) {
|
|
93
|
-
css(target, { height: '', alignContent: '' });
|
|
94
|
-
css(nodes, { opacity: '' });
|
|
95
|
-
delete target.dataset.transition;
|
|
96
|
-
}
|
|
97
|
-
resolve();
|
|
98
|
-
});
|
|
99
|
-
})
|
|
100
|
-
);
|
|
56
|
+
await awaitFrame();
|
|
57
|
+
|
|
58
|
+
const nodes = children(target);
|
|
59
|
+
const newHeight = height(target);
|
|
60
|
+
|
|
61
|
+
// Ensure Grid cells do not stretch when height is applied
|
|
62
|
+
css(target, 'alignContent', 'flex-start');
|
|
63
|
+
height(target, oldHeight);
|
|
64
|
+
|
|
65
|
+
const transitionNodes = getTransitionNodes(target);
|
|
66
|
+
css(nodes, propsOut);
|
|
67
|
+
|
|
68
|
+
const transitions = transitionNodes.map(async (child, i) => {
|
|
69
|
+
await awaitTimeout(i * stagger);
|
|
70
|
+
await Transition.start(child, propsIn, duration / 2, 'ease');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
if (oldHeight !== newHeight) {
|
|
74
|
+
transitions.push(
|
|
75
|
+
Transition.start(
|
|
76
|
+
target,
|
|
77
|
+
{ height: newHeight },
|
|
78
|
+
duration / 2 + transitionNodes.length * stagger,
|
|
79
|
+
'ease'
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
await Promise.all(transitions).then(() => {
|
|
85
|
+
removeClass(target, clsEnter);
|
|
86
|
+
if (index === transitionIndex(target)) {
|
|
87
|
+
css(target, { height: '', alignContent: '' });
|
|
88
|
+
css(nodes, { opacity: '' });
|
|
89
|
+
delete target.dataset.transition;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
101
92
|
});
|
|
102
93
|
|
|
103
94
|
return hasClass(target, clsLeave)
|
|
@@ -138,3 +129,11 @@ function getTransitionNodes(target) {
|
|
|
138
129
|
[]
|
|
139
130
|
);
|
|
140
131
|
}
|
|
132
|
+
|
|
133
|
+
function awaitFrame() {
|
|
134
|
+
return new Promise((resolve) => requestAnimationFrame(resolve));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function awaitTimeout(timeout) {
|
|
138
|
+
return new Promise((resolve) => setTimeout(resolve, timeout));
|
|
139
|
+
}
|
|
@@ -12,63 +12,54 @@ import {
|
|
|
12
12
|
Transition,
|
|
13
13
|
} from 'uikit-util';
|
|
14
14
|
|
|
15
|
-
export default function (action, target, duration) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
css(el, 'display', propsTo[i].opacity === 0 ? 'none' : '')
|
|
64
|
-
);
|
|
65
|
-
reset(target);
|
|
66
|
-
}, noop)
|
|
67
|
-
.then(resolve);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
})
|
|
71
|
-
);
|
|
15
|
+
export default async function (action, target, duration) {
|
|
16
|
+
await awaitFrame();
|
|
17
|
+
|
|
18
|
+
let nodes = children(target);
|
|
19
|
+
|
|
20
|
+
// Get current state
|
|
21
|
+
const currentProps = nodes.map((el) => getProps(el, true));
|
|
22
|
+
const targetProps = css(target, ['height', 'padding']);
|
|
23
|
+
|
|
24
|
+
// Cancel previous animations
|
|
25
|
+
Transition.cancel(target);
|
|
26
|
+
nodes.forEach(Transition.cancel);
|
|
27
|
+
reset(target);
|
|
28
|
+
|
|
29
|
+
// Adding, sorting, removing nodes
|
|
30
|
+
action();
|
|
31
|
+
|
|
32
|
+
// Find new nodes
|
|
33
|
+
nodes = nodes.concat(children(target).filter((el) => !includes(nodes, el)));
|
|
34
|
+
|
|
35
|
+
// Wait for update to propagate
|
|
36
|
+
await Promise.resolve();
|
|
37
|
+
|
|
38
|
+
// Force update
|
|
39
|
+
fastdom.flush();
|
|
40
|
+
|
|
41
|
+
// Get new state
|
|
42
|
+
const targetPropsTo = css(target, ['height', 'padding']);
|
|
43
|
+
const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);
|
|
44
|
+
|
|
45
|
+
// Reset to previous state
|
|
46
|
+
nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));
|
|
47
|
+
css(target, { display: 'block', ...targetProps });
|
|
48
|
+
|
|
49
|
+
// Start transitions on next frame
|
|
50
|
+
await awaitFrame();
|
|
51
|
+
|
|
52
|
+
const transitions = nodes
|
|
53
|
+
.map((el, i) => parent(el) === target && Transition.start(el, propsTo[i], duration, 'ease'))
|
|
54
|
+
.concat(Transition.start(target, targetPropsTo, duration, 'ease'));
|
|
55
|
+
|
|
56
|
+
await Promise.all(transitions).then(() => {
|
|
57
|
+
nodes.forEach(
|
|
58
|
+
(el, i) =>
|
|
59
|
+
parent(el) === target && css(el, 'display', propsTo[i].opacity === 0 ? 'none' : '')
|
|
60
|
+
);
|
|
61
|
+
reset(target);
|
|
62
|
+
}, noop);
|
|
72
63
|
}
|
|
73
64
|
|
|
74
65
|
function getProps(el, opacity) {
|
|
@@ -146,3 +137,7 @@ function getPositionWithMargin(el) {
|
|
|
146
137
|
|
|
147
138
|
return { top, left, height, width, marginLeft, marginTop, transform: '' };
|
|
148
139
|
}
|
|
140
|
+
|
|
141
|
+
function awaitFrame() {
|
|
142
|
+
return new Promise((resolve) => requestAnimationFrame(resolve));
|
|
143
|
+
}
|
package/src/js/mixin/slider.js
CHANGED
|
@@ -82,7 +82,6 @@ export default {
|
|
|
82
82
|
const done = () => {
|
|
83
83
|
removeClass(el, cls);
|
|
84
84
|
trigger(el, show ? 'shown' : 'hidden', [this]);
|
|
85
|
-
this.$update(el);
|
|
86
85
|
};
|
|
87
86
|
|
|
88
87
|
return promise
|
|
@@ -127,7 +126,6 @@ export default {
|
|
|
127
126
|
|
|
128
127
|
if (changed) {
|
|
129
128
|
trigger(el, 'toggled', [toggled, this]);
|
|
130
|
-
this.$update(el);
|
|
131
129
|
}
|
|
132
130
|
},
|
|
133
131
|
},
|
|
@@ -454,7 +454,7 @@ ul.uk-nav-sub {
|
|
|
454
454
|
* Naming is in plural to prevent conflicts with divider sub object.
|
|
455
455
|
*/
|
|
456
456
|
|
|
457
|
-
.uk-nav.uk-nav-divider > :not(.uk-nav-divider) + :not(.uk-nav-header, .uk-nav-divider) {
|
|
457
|
+
.uk-nav.uk-nav-divider > :not(.uk-nav-header, .uk-nav-divider) + :not(.uk-nav-header, .uk-nav-divider) {
|
|
458
458
|
margin-top: @nav-dividers-margin-top;
|
|
459
459
|
padding-top: @nav-dividers-margin-top;
|
|
460
460
|
border-top: @nav-dividers-border-width solid @nav-dividers-border;
|
|
@@ -77,6 +77,7 @@
|
|
|
77
77
|
@navbar-dropdown-large-shift-margin: 0;
|
|
78
78
|
@navbar-dropdown-large-padding: 40px;
|
|
79
79
|
|
|
80
|
+
@navbar-dropdown-dropbar-margin: 0;
|
|
80
81
|
@navbar-dropdown-dropbar-shift-margin: 0;
|
|
81
82
|
@navbar-dropdown-dropbar-padding-top: @navbar-dropdown-padding;
|
|
82
83
|
@navbar-dropdown-dropbar-padding-bottom: @navbar-dropdown-dropbar-padding-top;
|
|
@@ -462,7 +463,7 @@
|
|
|
462
463
|
background: transparent;
|
|
463
464
|
/* 3 */
|
|
464
465
|
padding: @navbar-dropdown-dropbar-padding-top 0 @navbar-dropdown-dropbar-padding-bottom 0;
|
|
465
|
-
--uk-position-offset:
|
|
466
|
+
--uk-position-offset: @navbar-dropdown-dropbar-margin;
|
|
466
467
|
--uk-position-shift-offset: @navbar-dropdown-dropbar-shift-margin;
|
|
467
468
|
--uk-position-viewport-offset: @navbar-dropdown-dropbar-viewport-margin;
|
|
468
469
|
.hook-navbar-dropdown-dropbar();
|
|
@@ -454,7 +454,7 @@ ul.uk-nav-sub {
|
|
|
454
454
|
* Naming is in plural to prevent conflicts with divider sub object.
|
|
455
455
|
*/
|
|
456
456
|
|
|
457
|
-
.uk-nav.uk-nav-divider > :not(.uk-nav-divider) + :not(.uk-nav-header, .uk-nav-divider) {
|
|
457
|
+
.uk-nav.uk-nav-divider > :not(.uk-nav-header, .uk-nav-divider) + :not(.uk-nav-header, .uk-nav-divider) {
|
|
458
458
|
margin-top: $nav-dividers-margin-top;
|
|
459
459
|
padding-top: $nav-dividers-margin-top;
|
|
460
460
|
border-top: $nav-dividers-border-width solid $nav-dividers-border;
|
|
@@ -77,6 +77,7 @@ $navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-ho
|
|
|
77
77
|
$navbar-dropdown-large-shift-margin: 0 !default;
|
|
78
78
|
$navbar-dropdown-large-padding: 40px !default;
|
|
79
79
|
|
|
80
|
+
$navbar-dropdown-dropbar-margin: 0 !default;
|
|
80
81
|
$navbar-dropdown-dropbar-shift-margin: 0 !default;
|
|
81
82
|
$navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
|
|
82
83
|
$navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
|
|
@@ -462,7 +463,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
|
|
|
462
463
|
background: transparent;
|
|
463
464
|
/* 3 */
|
|
464
465
|
padding: $navbar-dropdown-dropbar-padding-top 0 $navbar-dropdown-dropbar-padding-bottom 0;
|
|
465
|
-
--uk-position-offset:
|
|
466
|
+
--uk-position-offset: #{$navbar-dropdown-dropbar-margin};
|
|
466
467
|
--uk-position-shift-offset: #{$navbar-dropdown-dropbar-shift-margin};
|
|
467
468
|
--uk-position-viewport-offset: #{$navbar-dropdown-dropbar-viewport-margin};
|
|
468
469
|
@if(mixin-exists(hook-navbar-dropdown-dropbar)) {@include hook-navbar-dropdown-dropbar();}
|
|
@@ -809,6 +809,7 @@ $navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
|
|
|
809
809
|
$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
|
|
810
810
|
$navbar-dropdown-large-shift-margin: 0 !default;
|
|
811
811
|
$navbar-dropdown-large-padding: 40px !default;
|
|
812
|
+
$navbar-dropdown-dropbar-margin: 0 !default;
|
|
812
813
|
$navbar-dropdown-dropbar-shift-margin: 0 !default;
|
|
813
814
|
$navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
|
|
814
815
|
$navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
|
package/src/scss/variables.scss
CHANGED
|
@@ -807,6 +807,7 @@ $navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
|
|
|
807
807
|
$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
|
|
808
808
|
$navbar-dropdown-large-shift-margin: 0 !default;
|
|
809
809
|
$navbar-dropdown-large-padding: 40px !default;
|
|
810
|
+
$navbar-dropdown-dropbar-margin: 0 !default;
|
|
810
811
|
$navbar-dropdown-dropbar-shift-margin: 0 !default;
|
|
811
812
|
$navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
|
|
812
813
|
$navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
|