uikit 3.15.3-dev.e9711b588 → 3.15.4-dev.c21737f52
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 +10 -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 +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 +2 -2
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +2 -2
- 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 +2 -2
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +2 -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 +13 -12
- 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 +117 -123
- package/dist/js/uikit.min.js +2 -2
- package/package.json +1 -1
- package/src/js/api/boot.js +2 -2
- package/src/js/api/component.js +2 -2
- package/src/js/api/state.js +1 -1
- package/src/js/components/filter.js +12 -14
- package/src/js/core/accordion.js +1 -2
- package/src/js/core/grid.js +7 -2
- 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/parallax.js +1 -1
- package/src/js/mixin/scroll.js +2 -2
- package/src/js/mixin/slider.js +1 -2
- package/src/js/mixin/togglable.js +0 -2
- package/src/js/util/observer.js +1 -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/tests/js/index.js +2 -2
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.4-dev.c21737f52",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/boot.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getComponentName } from './component';
|
|
2
|
-
import { apply,
|
|
2
|
+
import { apply, hasAttr, inBrowser } from 'uikit-util';
|
|
3
3
|
|
|
4
4
|
export default function (UIkit) {
|
|
5
5
|
const { connect, disconnect } = UIkit;
|
|
@@ -8,7 +8,7 @@ export default function (UIkit) {
|
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
requestAnimationFrame(function () {
|
|
12
12
|
if (document.body) {
|
|
13
13
|
apply(document.body, connect);
|
|
14
14
|
}
|
package/src/js/api/component.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $$, camelize,
|
|
1
|
+
import { $$, camelize, hyphenate, isPlainObject, memoize, startsWith } from 'uikit-util';
|
|
2
2
|
|
|
3
3
|
export default function (UIkit) {
|
|
4
4
|
const DATA = UIkit.data;
|
|
@@ -49,7 +49,7 @@ export default function (UIkit) {
|
|
|
49
49
|
opt.install?.(UIkit, opt, name);
|
|
50
50
|
|
|
51
51
|
if (UIkit._initialized && !opt.functional) {
|
|
52
|
-
|
|
52
|
+
requestAnimationFrame(() => UIkit[name](`[uk-${id}],[data-uk-${id}]`));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
return (components[name] = isPlainObject(options) ? opt : options);
|
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/accordion.js
CHANGED
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
$,
|
|
6
6
|
$$,
|
|
7
7
|
attr,
|
|
8
|
-
fastdom,
|
|
9
8
|
filter,
|
|
10
9
|
getIndex,
|
|
11
10
|
hasClass,
|
|
@@ -144,7 +143,7 @@ export default {
|
|
|
144
143
|
|
|
145
144
|
if (show) {
|
|
146
145
|
const toggle = $(this.$props.toggle, el);
|
|
147
|
-
|
|
146
|
+
requestAnimationFrame(() => {
|
|
148
147
|
if (!isInView(toggle)) {
|
|
149
148
|
scrollIntoView(toggle, { offset: this.offset });
|
|
150
149
|
}
|
package/src/js/core/grid.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Margin from './margin';
|
|
2
2
|
import Class from '../mixin/class';
|
|
3
|
-
import
|
|
3
|
+
import { registerScrollListener, unregisterScrollListener } from '../mixin/scroll';
|
|
4
4
|
import {
|
|
5
5
|
addClass,
|
|
6
6
|
children,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
export default {
|
|
16
16
|
extends: Margin,
|
|
17
17
|
|
|
18
|
-
mixins: [Class
|
|
18
|
+
mixins: [Class],
|
|
19
19
|
|
|
20
20
|
name: 'grid',
|
|
21
21
|
|
|
@@ -33,6 +33,11 @@ export default {
|
|
|
33
33
|
|
|
34
34
|
connected() {
|
|
35
35
|
this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');
|
|
36
|
+
this.parallax && registerScrollListener(this._uid, () => this.$emit('scroll'));
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
disconnected() {
|
|
40
|
+
unregisterScrollListener(this._uid);
|
|
36
41
|
},
|
|
37
42
|
|
|
38
43
|
update: [
|
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/parallax.js
CHANGED
|
@@ -353,7 +353,7 @@ function getValue(stops, percent) {
|
|
|
353
353
|
return isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;
|
|
354
354
|
}
|
|
355
355
|
|
|
356
|
-
const unitRe = /^-?\d+(\S
|
|
356
|
+
const unitRe = /^-?\d+(\S+)/;
|
|
357
357
|
function getUnit(stops, defaultUnit) {
|
|
358
358
|
for (const stop of stops) {
|
|
359
359
|
const match = stop.match?.(unitRe);
|
package/src/js/mixin/scroll.js
CHANGED
|
@@ -12,7 +12,7 @@ export default {
|
|
|
12
12
|
|
|
13
13
|
const scrollListeners = new Map();
|
|
14
14
|
let unbindScrollListener;
|
|
15
|
-
function registerScrollListener(id, listener) {
|
|
15
|
+
export function registerScrollListener(id, listener) {
|
|
16
16
|
unbindScrollListener =
|
|
17
17
|
unbindScrollListener ||
|
|
18
18
|
on(window, 'scroll', () => scrollListeners.forEach((listener) => listener()), {
|
|
@@ -23,7 +23,7 @@ function registerScrollListener(id, listener) {
|
|
|
23
23
|
scrollListeners.set(id, listener);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
function unregisterScrollListener(id) {
|
|
26
|
+
export function unregisterScrollListener(id) {
|
|
27
27
|
scrollListeners.delete(id);
|
|
28
28
|
if (unbindScrollListener && !scrollListeners.size) {
|
|
29
29
|
unbindScrollListener();
|
package/src/js/mixin/slider.js
CHANGED
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
$,
|
|
7
7
|
$$,
|
|
8
8
|
clamp,
|
|
9
|
-
fastdom,
|
|
10
9
|
getIndex,
|
|
11
10
|
hasClass,
|
|
12
11
|
isNumber,
|
|
@@ -137,7 +136,7 @@ export default {
|
|
|
137
136
|
trigger(next, 'itemshown', [this]);
|
|
138
137
|
|
|
139
138
|
return new Promise((resolve) => {
|
|
140
|
-
|
|
139
|
+
requestAnimationFrame(() => {
|
|
141
140
|
stack.shift();
|
|
142
141
|
if (stack.length) {
|
|
143
142
|
this.show(stack.shift(), true);
|
|
@@ -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
|
},
|
package/src/js/util/observer.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { on } from './event';
|
|
2
2
|
import { toNodes } from './lang';
|
|
3
|
-
import { fastdom } from './fastdom';
|
|
4
3
|
import { inBrowser } from './env';
|
|
5
4
|
|
|
6
5
|
export function observeIntersection(targets, cb, options, intersecting = true) {
|
|
@@ -53,7 +52,7 @@ function initResizeListener() {
|
|
|
53
52
|
return;
|
|
54
53
|
}
|
|
55
54
|
pendingResize = true;
|
|
56
|
-
|
|
55
|
+
requestAnimationFrame(() => (pendingResize = false));
|
|
57
56
|
for (const listener of listeners) {
|
|
58
57
|
listener();
|
|
59
58
|
}
|
|
@@ -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;
|
package/tests/js/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* global TESTS */
|
|
2
|
-
import { addClass, css,
|
|
2
|
+
import { addClass, css, on, prepend, removeClass, ucfirst } from 'uikit-util';
|
|
3
3
|
|
|
4
4
|
const tests = TESTS;
|
|
5
5
|
const storage = window.sessionStorage;
|
|
@@ -59,7 +59,7 @@ document.writeln(
|
|
|
59
59
|
on(window, 'load', () =>
|
|
60
60
|
setTimeout(
|
|
61
61
|
() =>
|
|
62
|
-
|
|
62
|
+
requestAnimationFrame(() => {
|
|
63
63
|
const $body = document.body;
|
|
64
64
|
const $container = prepend(
|
|
65
65
|
$body,
|