uikit 3.14.4-dev.e3664d0d2 → 3.14.4-dev.fea9fd466
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 +13 -0
- package/dist/css/uikit-core-rtl.css +108 -61
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +108 -61
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +108 -62
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +108 -62
- 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 +7 -5
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +6 -14
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +6 -14
- 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 +4 -5
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +4 -5
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +1 -1
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +4 -5
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +1 -1
- 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 +19 -19
- 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 +100 -61
- 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 +106 -65
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/images/{backgrounds/nav-parent-open.svg → components/nav-parent-icon-large.svg} +0 -0
- package/src/images/components/nav-parent-icon.svg +3 -0
- package/src/images/components/navbar-parent-icon.svg +3 -0
- package/src/js/components/filter.js +5 -3
- package/src/js/core/height-viewport.js +6 -2
- package/src/js/core/icon.js +16 -0
- package/src/js/core/index.js +2 -0
- package/src/js/core/leader.js +2 -2
- package/src/js/core/navbar.js +44 -15
- package/src/js/mixin/media.js +4 -5
- package/src/js/mixin/position.js +19 -11
- package/src/js/mixin/togglable.js +8 -17
- package/src/js/util/style.js +4 -13
- package/src/js/util/viewport.js +2 -4
- package/src/less/components/dropdown.less +14 -0
- package/src/less/components/leader.less +1 -1
- package/src/less/components/nav.less +7 -37
- package/src/less/components/navbar.less +101 -13
- package/src/less/components/utility.less +10 -2
- package/src/less/theme/nav.less +0 -8
- package/src/less/theme/navbar.less +4 -6
- package/src/scss/components/dropdown.scss +14 -0
- package/src/scss/components/leader.scss +1 -1
- package/src/scss/components/nav.scss +7 -26
- package/src/scss/components/navbar.scss +89 -13
- package/src/scss/components/utility.scss +8 -1
- package/src/scss/mixins-theme.scss +15 -18
- package/src/scss/mixins.scss +14 -14
- package/src/scss/theme/nav.scss +0 -8
- package/src/scss/theme/navbar.scss +3 -2
- package/src/scss/variables-theme.scss +17 -11
- package/src/scss/variables.scss +17 -10
- package/tests/drop.html +66 -16
- package/tests/dropdown.html +103 -16
- package/tests/index.html +3 -3
- package/tests/nav.html +20 -87
- package/tests/navbar.html +283 -62
- package/tests/offcanvas.html +8 -8
- package/tests/utility.html +19 -0
- package/src/images/backgrounds/nav-parent-close.svg +0 -3
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.14.4-dev.
|
|
5
|
+
"version": "3.14.4-dev.fea9fd466",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
|
File without changes
|
|
@@ -103,7 +103,7 @@ export default {
|
|
|
103
103
|
});
|
|
104
104
|
},
|
|
105
105
|
|
|
106
|
-
setState(state, animate = true) {
|
|
106
|
+
async setState(state, animate = true) {
|
|
107
107
|
state = { filter: { '': '' }, sort: [], ...state };
|
|
108
108
|
|
|
109
109
|
trigger(this.$el, 'beforeFilter', [this, state]);
|
|
@@ -112,7 +112,7 @@ export default {
|
|
|
112
112
|
toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state))
|
|
113
113
|
);
|
|
114
114
|
|
|
115
|
-
Promise.all(
|
|
115
|
+
await Promise.all(
|
|
116
116
|
$$(this.target, this.$el).map((target) => {
|
|
117
117
|
const filterFn = () => {
|
|
118
118
|
applyState(state, target, getChildren(target));
|
|
@@ -120,7 +120,9 @@ export default {
|
|
|
120
120
|
};
|
|
121
121
|
return animate ? this.animate(filterFn, target) : filterFn();
|
|
122
122
|
})
|
|
123
|
-
)
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
trigger(this.$el, 'afterFilter', [this]);
|
|
124
126
|
},
|
|
125
127
|
|
|
126
128
|
updateState() {
|
|
@@ -45,8 +45,11 @@ export default {
|
|
|
45
45
|
let minHeight = '';
|
|
46
46
|
const box = boxModelAdjust(this.$el, 'height', 'content-box');
|
|
47
47
|
|
|
48
|
+
const { body, scrollingElement } = document;
|
|
48
49
|
const [scrollElement] = scrollParents(this.$el, /auto|scroll/);
|
|
49
|
-
const { height: viewportHeight } = offsetViewport(
|
|
50
|
+
const { height: viewportHeight } = offsetViewport(
|
|
51
|
+
scrollElement === body ? scrollingElement : scrollElement
|
|
52
|
+
);
|
|
50
53
|
|
|
51
54
|
if (this.expand) {
|
|
52
55
|
minHeight = Math.max(
|
|
@@ -56,7 +59,8 @@ export default {
|
|
|
56
59
|
0
|
|
57
60
|
);
|
|
58
61
|
} else {
|
|
59
|
-
const isScrollingElement =
|
|
62
|
+
const isScrollingElement =
|
|
63
|
+
scrollingElement === scrollElement || body === scrollElement;
|
|
60
64
|
|
|
61
65
|
// on mobile devices (iOS and Android) window.innerHeight !== 100vh
|
|
62
66
|
minHeight = `calc(${isScrollingElement ? '100vh' : `${viewportHeight}px`}`;
|
package/src/js/core/icon.js
CHANGED
|
@@ -2,6 +2,9 @@ import SVG from './svg';
|
|
|
2
2
|
import closeIcon from '../../images/components/close-icon.svg';
|
|
3
3
|
import closeLarge from '../../images/components/close-large.svg';
|
|
4
4
|
import marker from '../../images/components/marker.svg';
|
|
5
|
+
import navParentIcon from '../../images/components/nav-parent-icon.svg';
|
|
6
|
+
import navParentIconLarge from '../../images/components/nav-parent-icon-large.svg';
|
|
7
|
+
import navbarParentIcon from '../../images/components/navbar-parent-icon.svg';
|
|
5
8
|
import navbarToggleIcon from '../../images/components/navbar-toggle-icon.svg';
|
|
6
9
|
import overlayIcon from '../../images/components/overlay-icon.svg';
|
|
7
10
|
import paginationNext from '../../images/components/pagination-next.svg';
|
|
@@ -19,6 +22,7 @@ import {
|
|
|
19
22
|
$,
|
|
20
23
|
addClass,
|
|
21
24
|
apply,
|
|
25
|
+
closest,
|
|
22
26
|
css,
|
|
23
27
|
each,
|
|
24
28
|
hasClass,
|
|
@@ -35,6 +39,9 @@ const icons = {
|
|
|
35
39
|
marker,
|
|
36
40
|
'close-icon': closeIcon,
|
|
37
41
|
'close-large': closeLarge,
|
|
42
|
+
'nav-parent-icon': navParentIcon,
|
|
43
|
+
'nav-parent-icon-large': navParentIconLarge,
|
|
44
|
+
'navbar-parent-icon': navbarParentIcon,
|
|
38
45
|
'navbar-toggle-icon': navbarToggleIcon,
|
|
39
46
|
'overlay-icon': overlayIcon,
|
|
40
47
|
'pagination-next': paginationNext,
|
|
@@ -96,6 +103,15 @@ export const IconComponent = {
|
|
|
96
103
|
},
|
|
97
104
|
};
|
|
98
105
|
|
|
106
|
+
export const NavParentIcon = {
|
|
107
|
+
extends: IconComponent,
|
|
108
|
+
|
|
109
|
+
beforeConnect() {
|
|
110
|
+
const icon = this.$props.icon;
|
|
111
|
+
this.icon = closest(this.$el, '.uk-nav-primary') ? `${icon}-large` : icon;
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
|
|
99
115
|
export const Slidenav = {
|
|
100
116
|
extends: IconComponent,
|
|
101
117
|
|
package/src/js/core/index.js
CHANGED
|
@@ -29,10 +29,12 @@ export { default as Video } from './video';
|
|
|
29
29
|
// Icon components
|
|
30
30
|
export { Close } from './icon';
|
|
31
31
|
export { Spinner } from './icon';
|
|
32
|
+
export { NavParentIcon } from './icon';
|
|
32
33
|
export { Slidenav as SlidenavNext } from './icon';
|
|
33
34
|
export { Slidenav as SlidenavPrevious } from './icon';
|
|
34
35
|
export { Search as SearchIcon } from './icon';
|
|
35
36
|
export { IconComponent as Marker } from './icon';
|
|
37
|
+
export { IconComponent as NavbarParentIcon } from './icon';
|
|
36
38
|
export { IconComponent as NavbarToggleIcon } from './icon';
|
|
37
39
|
export { IconComponent as OverlayIcon } from './icon';
|
|
38
40
|
export { IconComponent as PaginationNext } from './icon';
|
package/src/js/core/leader.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Class from '../mixin/class';
|
|
2
2
|
import Media from '../mixin/media';
|
|
3
|
-
import { attr,
|
|
3
|
+
import { attr, css, toggleClass, unwrap, wrapInner } from 'uikit-util';
|
|
4
4
|
import Resize from '../mixin/resize';
|
|
5
5
|
|
|
6
6
|
export default {
|
|
@@ -19,7 +19,7 @@ export default {
|
|
|
19
19
|
|
|
20
20
|
computed: {
|
|
21
21
|
fill({ fill }) {
|
|
22
|
-
return fill ||
|
|
22
|
+
return fill || css(this.$el, '--uk-leader-fill-content');
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
25
|
|
package/src/js/core/navbar.js
CHANGED
|
@@ -124,7 +124,6 @@ export default {
|
|
|
124
124
|
...this.$props,
|
|
125
125
|
boundary: this.boundary,
|
|
126
126
|
pos: this.pos,
|
|
127
|
-
offset: this.dropbar || this.offset,
|
|
128
127
|
}
|
|
129
128
|
);
|
|
130
129
|
},
|
|
@@ -285,8 +284,8 @@ export default {
|
|
|
285
284
|
return this.dropbar;
|
|
286
285
|
},
|
|
287
286
|
|
|
288
|
-
handler(
|
|
289
|
-
if (!
|
|
287
|
+
handler({ target }) {
|
|
288
|
+
if (!this.isDropbarDrop(target)) {
|
|
290
289
|
return;
|
|
291
290
|
}
|
|
292
291
|
|
|
@@ -294,7 +293,7 @@ export default {
|
|
|
294
293
|
after(this.dropbarAnchor || this.$el, this.dropbar);
|
|
295
294
|
}
|
|
296
295
|
|
|
297
|
-
addClass(
|
|
296
|
+
addClass(target, `${this.clsDrop}-dropbar`);
|
|
298
297
|
},
|
|
299
298
|
},
|
|
300
299
|
|
|
@@ -309,22 +308,47 @@ export default {
|
|
|
309
308
|
return this.dropbar;
|
|
310
309
|
},
|
|
311
310
|
|
|
312
|
-
handler(
|
|
313
|
-
if (!
|
|
311
|
+
handler({ target }) {
|
|
312
|
+
if (!this.isDropbarDrop(target)) {
|
|
314
313
|
return;
|
|
315
314
|
}
|
|
316
315
|
|
|
317
|
-
this._observer = observeResize(
|
|
316
|
+
this._observer = observeResize(target, () =>
|
|
318
317
|
this.transitionTo(
|
|
319
|
-
offset(
|
|
318
|
+
offset(target).bottom -
|
|
320
319
|
offset(this.dropbar).top +
|
|
321
|
-
toFloat(css(
|
|
322
|
-
|
|
320
|
+
toFloat(css(target, 'marginBottom')),
|
|
321
|
+
target
|
|
323
322
|
)
|
|
324
323
|
);
|
|
325
324
|
},
|
|
326
325
|
},
|
|
327
326
|
|
|
327
|
+
{
|
|
328
|
+
name: 'beforeposition',
|
|
329
|
+
|
|
330
|
+
el() {
|
|
331
|
+
return this.dropContainer;
|
|
332
|
+
},
|
|
333
|
+
|
|
334
|
+
filter() {
|
|
335
|
+
return this.dropbar;
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
handler(e, element, target, options) {
|
|
339
|
+
if (!this.isDropbarDrop(element)) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const dropbarOffset = offset(this.dropbar);
|
|
344
|
+
|
|
345
|
+
css(element, 'maxWidth', dropbarOffset.width - options.viewportOffset * 2);
|
|
346
|
+
|
|
347
|
+
options.offset[1] = dropbarOffset.top - offset(target).bottom;
|
|
348
|
+
options.viewportOffset += dropbarOffset.left;
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
|
|
328
352
|
{
|
|
329
353
|
name: 'beforehide',
|
|
330
354
|
|
|
@@ -336,12 +360,12 @@ export default {
|
|
|
336
360
|
return this.dropbar;
|
|
337
361
|
},
|
|
338
362
|
|
|
339
|
-
handler(e
|
|
363
|
+
handler(e) {
|
|
340
364
|
const active = this.getActive();
|
|
341
365
|
|
|
342
366
|
if (
|
|
343
367
|
matches(this.dropbar, ':hover') &&
|
|
344
|
-
active?.$el ===
|
|
368
|
+
active?.$el === e.target &&
|
|
345
369
|
!this.toggles.some((el) => active.target !== el && matches(el, ':focus'))
|
|
346
370
|
) {
|
|
347
371
|
e.preventDefault();
|
|
@@ -360,8 +384,8 @@ export default {
|
|
|
360
384
|
return this.dropbar;
|
|
361
385
|
},
|
|
362
386
|
|
|
363
|
-
handler(
|
|
364
|
-
if (!
|
|
387
|
+
handler({ target }) {
|
|
388
|
+
if (!this.isDropbarDrop(target)) {
|
|
365
389
|
return;
|
|
366
390
|
}
|
|
367
391
|
|
|
@@ -369,7 +393,7 @@ export default {
|
|
|
369
393
|
|
|
370
394
|
const active = this.getActive();
|
|
371
395
|
|
|
372
|
-
if (!active || active?.$el ===
|
|
396
|
+
if (!active || active?.$el === target) {
|
|
373
397
|
this.transitionTo(0);
|
|
374
398
|
}
|
|
375
399
|
},
|
|
@@ -409,6 +433,11 @@ export default {
|
|
|
409
433
|
getDropdown(el) {
|
|
410
434
|
return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');
|
|
411
435
|
},
|
|
436
|
+
|
|
437
|
+
isDropbarDrop(el) {
|
|
438
|
+
const drop = this.getDropdown(el);
|
|
439
|
+
return drop && hasClass(el, this.clsDrop) && drop.align !== 'stretch';
|
|
440
|
+
},
|
|
412
441
|
},
|
|
413
442
|
};
|
|
414
443
|
|
package/src/js/mixin/media.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createEvent,
|
|
3
|
-
|
|
3
|
+
css,
|
|
4
4
|
isNumeric,
|
|
5
5
|
isString,
|
|
6
6
|
on,
|
|
@@ -19,7 +19,7 @@ export default {
|
|
|
19
19
|
},
|
|
20
20
|
|
|
21
21
|
connected() {
|
|
22
|
-
const media = toMedia(this.media);
|
|
22
|
+
const media = toMedia(this.media, this.$el);
|
|
23
23
|
this.matchMedia = true;
|
|
24
24
|
if (media) {
|
|
25
25
|
this.mediaObj = window.matchMedia(media);
|
|
@@ -40,11 +40,10 @@ export default {
|
|
|
40
40
|
},
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
function toMedia(value) {
|
|
43
|
+
function toMedia(value, element) {
|
|
44
44
|
if (isString(value)) {
|
|
45
45
|
if (startsWith(value, '@')) {
|
|
46
|
-
|
|
47
|
-
value = toFloat(getCssVar(name));
|
|
46
|
+
value = toFloat(css(element, `--uk-breakpoint-${value.substr(1)}`));
|
|
48
47
|
} else if (isNaN(value)) {
|
|
49
48
|
return value;
|
|
50
49
|
}
|
package/src/js/mixin/position.js
CHANGED
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
css,
|
|
3
3
|
dimensions,
|
|
4
4
|
flipPosition,
|
|
5
|
-
getCssVar,
|
|
6
5
|
includes,
|
|
7
6
|
isRtl,
|
|
8
7
|
positionAt,
|
|
9
8
|
scrollParents,
|
|
10
9
|
toPx,
|
|
10
|
+
trigger,
|
|
11
11
|
} from 'uikit-util';
|
|
12
12
|
|
|
13
13
|
export default {
|
|
@@ -52,13 +52,21 @@ export default {
|
|
|
52
52
|
const elDim = dimensions(element);
|
|
53
53
|
css(element, { top: -elDim.height, left: -elDim.width });
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
const args = [
|
|
56
|
+
element,
|
|
57
|
+
target,
|
|
58
|
+
{
|
|
59
|
+
attach,
|
|
60
|
+
offset,
|
|
61
|
+
boundary,
|
|
62
|
+
flip: this.flip,
|
|
63
|
+
viewportOffset: this.getViewportOffset(element),
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
trigger(element, 'beforeposition', args);
|
|
68
|
+
|
|
69
|
+
positionAt(...args);
|
|
62
70
|
|
|
63
71
|
// Restore scroll position
|
|
64
72
|
scrollElement.scrollTop = scrollTop;
|
|
@@ -68,7 +76,7 @@ export default {
|
|
|
68
76
|
getPositionOffset(element) {
|
|
69
77
|
return (
|
|
70
78
|
toPx(
|
|
71
|
-
this.offset === false ?
|
|
79
|
+
this.offset === false ? css(element, '--uk-position-offset') : this.offset,
|
|
72
80
|
this.axis === 'x' ? 'width' : 'height',
|
|
73
81
|
element
|
|
74
82
|
) * (includes(['left', 'top'], this.dir) ? -1 : 1)
|
|
@@ -79,14 +87,14 @@ export default {
|
|
|
79
87
|
return includes(['center', 'justify', 'stretch'], this.align)
|
|
80
88
|
? 0
|
|
81
89
|
: toPx(
|
|
82
|
-
|
|
90
|
+
css(element, '--uk-position-shift-offset'),
|
|
83
91
|
this.axis === 'y' ? 'width' : 'height',
|
|
84
92
|
element
|
|
85
93
|
) * (includes(['left', 'top'], this.align) ? 1 : -1);
|
|
86
94
|
},
|
|
87
95
|
|
|
88
96
|
getViewportOffset(element) {
|
|
89
|
-
return toPx(
|
|
97
|
+
return toPx(css(element, '--uk-position-viewport-offset'));
|
|
90
98
|
},
|
|
91
99
|
},
|
|
92
100
|
};
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
isFunction,
|
|
11
11
|
isVisible,
|
|
12
12
|
noop,
|
|
13
|
-
offset,
|
|
14
13
|
removeClass,
|
|
15
14
|
scrollParents,
|
|
16
15
|
startsWith,
|
|
@@ -232,7 +231,7 @@ function slideHorizontal({ isToggled, duration, velocity, transition, _toggle },
|
|
|
232
231
|
|
|
233
232
|
Transition.cancel(el);
|
|
234
233
|
|
|
235
|
-
const [scrollElement] = scrollParents(el);
|
|
234
|
+
const [scrollElement] = scrollParents(el.offsetParent);
|
|
236
235
|
css(scrollElement, 'overflowX', 'hidden');
|
|
237
236
|
|
|
238
237
|
if (!isToggled(el)) {
|
|
@@ -243,17 +242,11 @@ function slideHorizontal({ isToggled, duration, velocity, transition, _toggle },
|
|
|
243
242
|
duration = velocity * width + duration;
|
|
244
243
|
|
|
245
244
|
const percent = visible ? ((width + marginLeft * (right ? -1 : 1)) / width) * 100 : 0;
|
|
246
|
-
const offsetEl = offset(el);
|
|
247
|
-
const useClipPath = right
|
|
248
|
-
? offsetEl.right < scrollElement.clientWidth
|
|
249
|
-
: Math.round(offsetEl.left) > 0;
|
|
250
245
|
|
|
251
246
|
css(el, {
|
|
252
|
-
clipPath:
|
|
253
|
-
?
|
|
254
|
-
|
|
255
|
-
: `polygon(${100 - percent}% 0,100% 0,100% 100%,${100 - percent}% 100%)`
|
|
256
|
-
: '',
|
|
247
|
+
clipPath: right
|
|
248
|
+
? `polygon(0 0,${percent}% 0,${percent}% 100%,0 100%)`
|
|
249
|
+
: `polygon(${100 - percent}% 0,100% 0,100% 100%,${100 - percent}% 100%)`,
|
|
257
250
|
marginLeft: (((100 - percent) * (right ? 1 : -1)) / 100) * width,
|
|
258
251
|
});
|
|
259
252
|
|
|
@@ -262,7 +255,7 @@ function slideHorizontal({ isToggled, duration, velocity, transition, _toggle },
|
|
|
262
255
|
? Transition.start(
|
|
263
256
|
el,
|
|
264
257
|
{
|
|
265
|
-
clipPath:
|
|
258
|
+
clipPath: `polygon(0 0,100% 0,100% 100%,0 100%)`,
|
|
266
259
|
marginLeft: 0,
|
|
267
260
|
},
|
|
268
261
|
duration * (1 - percent / 100),
|
|
@@ -271,11 +264,9 @@ function slideHorizontal({ isToggled, duration, velocity, transition, _toggle },
|
|
|
271
264
|
: Transition.start(
|
|
272
265
|
el,
|
|
273
266
|
{
|
|
274
|
-
clipPath:
|
|
275
|
-
?
|
|
276
|
-
|
|
277
|
-
: `polygon(100% 0,100% 0,100% 100%,100% 100%)`
|
|
278
|
-
: '',
|
|
267
|
+
clipPath: right
|
|
268
|
+
? `polygon(0 0,0 0,0 100%,0 100%)`
|
|
269
|
+
: `polygon(100% 0,100% 0,100% 100%,100% 100%)`,
|
|
279
270
|
marginLeft: (right ? 1 : -1) * width,
|
|
280
271
|
},
|
|
281
272
|
duration * (percent / 100),
|
package/src/js/util/style.js
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
isString,
|
|
9
9
|
isUndefined,
|
|
10
10
|
memoize,
|
|
11
|
+
startsWith,
|
|
11
12
|
toNodes,
|
|
12
13
|
} from './lang';
|
|
13
14
|
|
|
@@ -62,18 +63,11 @@ export function css(element, property, value, priority = '') {
|
|
|
62
63
|
return elements[0];
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
const propertyRe = /^\s*(["'])?(.*?)\1\s*$/;
|
|
66
|
-
export function getCssVar(name, element = document.documentElement) {
|
|
67
|
-
return css(element, `--uk-${name}`).replace(propertyRe, '$2');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
66
|
// https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty
|
|
71
67
|
export const propName = memoize((name) => vendorPropName(name));
|
|
72
68
|
|
|
73
|
-
const cssPrefixes = ['webkit', 'moz'];
|
|
74
|
-
|
|
75
69
|
function vendorPropName(name) {
|
|
76
|
-
if (name
|
|
70
|
+
if (startsWith(name, '--')) {
|
|
77
71
|
return name;
|
|
78
72
|
}
|
|
79
73
|
|
|
@@ -85,11 +79,8 @@ function vendorPropName(name) {
|
|
|
85
79
|
return name;
|
|
86
80
|
}
|
|
87
81
|
|
|
88
|
-
|
|
89
|
-
prefixedName
|
|
90
|
-
|
|
91
|
-
while (i--) {
|
|
92
|
-
prefixedName = `-${cssPrefixes[i]}-${name}`;
|
|
82
|
+
for (const prefix of ['webkit', 'moz']) {
|
|
83
|
+
const prefixedName = `-${prefix}-${name}`;
|
|
93
84
|
if (prefixedName in style) {
|
|
94
85
|
return prefixedName;
|
|
95
86
|
}
|
package/src/js/util/viewport.js
CHANGED
|
@@ -128,12 +128,10 @@ export function scrollParents(element, overflowRe = /auto|scroll|hidden|clip/, s
|
|
|
128
128
|
export function offsetViewport(scrollElement) {
|
|
129
129
|
const window = toWindow(scrollElement);
|
|
130
130
|
const {
|
|
131
|
-
document: {
|
|
131
|
+
document: { documentElement },
|
|
132
132
|
} = window;
|
|
133
133
|
let viewportElement =
|
|
134
|
-
scrollElement === scrollingElement(scrollElement)
|
|
135
|
-
? window
|
|
136
|
-
: scrollElement;
|
|
134
|
+
scrollElement === scrollingElement(scrollElement) ? window : scrollElement;
|
|
137
135
|
|
|
138
136
|
const { visualViewport } = window;
|
|
139
137
|
if (isWindow(viewportElement) && visualViewport) {
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
@dropdown-background: @global-muted-background;
|
|
26
26
|
@dropdown-color: @global-color;
|
|
27
27
|
|
|
28
|
+
@dropdown-large-padding: 40px;
|
|
29
|
+
|
|
28
30
|
@dropdown-nav-item-color: @global-muted-color;
|
|
29
31
|
@dropdown-nav-item-hover-color: @global-color;
|
|
30
32
|
@dropdown-nav-subtitle-font-size: @global-small-font-size;
|
|
@@ -68,6 +70,18 @@
|
|
|
68
70
|
/* Show */
|
|
69
71
|
.uk-dropdown.uk-open { display: block; }
|
|
70
72
|
|
|
73
|
+
/*
|
|
74
|
+
* Remove margin from the last-child
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
.uk-dropdown > :last-child { margin-bottom: 0; }
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
/* Size modifier
|
|
81
|
+
========================================================================== */
|
|
82
|
+
|
|
83
|
+
.uk-dropdown-large { padding: @dropdown-large-padding; }
|
|
84
|
+
|
|
71
85
|
|
|
72
86
|
/* Stretch modifier
|
|
73
87
|
========================================================================== */
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
//
|
|
4
4
|
// Component: `uk-nav`
|
|
5
5
|
//
|
|
6
|
-
// Sub-objects: `uk-nav-
|
|
6
|
+
// Sub-objects: `uk-nav-parent-icon`
|
|
7
|
+
// `uk-nav-header`
|
|
7
8
|
// `uk-nav-divider`
|
|
8
9
|
// `uk-nav-subtitle`
|
|
9
10
|
// `uk-nav-sub`
|
|
10
11
|
//
|
|
11
|
-
// Modifiers: `uk-nav-
|
|
12
|
-
// `uk-nav-default`
|
|
12
|
+
// Modifiers: `uk-nav-default`
|
|
13
13
|
// `uk-nav-primary`
|
|
14
14
|
// `uk-nav-center`,
|
|
15
15
|
// `uk-nav-divider`
|
|
@@ -33,10 +33,6 @@
|
|
|
33
33
|
@nav-sublist-deeper-padding-left: 15px;
|
|
34
34
|
@nav-sublist-item-padding-vertical: 2px;
|
|
35
35
|
|
|
36
|
-
@nav-parent-icon-width: (@global-line-height * 1em);
|
|
37
|
-
@nav-parent-icon-height: @nav-parent-icon-width;
|
|
38
|
-
@nav-parent-icon-color: @global-color;
|
|
39
|
-
|
|
40
36
|
@nav-header-padding-vertical: @nav-item-padding-vertical;
|
|
41
37
|
@nav-header-padding-horizontal: @nav-item-padding-horizontal;
|
|
42
38
|
@nav-header-font-size: @global-small-font-size;
|
|
@@ -76,13 +72,10 @@
|
|
|
76
72
|
@nav-primary-sublist-item-hover-color: @global-color;
|
|
77
73
|
@nav-primary-sublist-item-active-color: @global-emphasis-color;
|
|
78
74
|
|
|
79
|
-
@nav-dividers-margin-top:
|
|
75
|
+
@nav-dividers-margin-top: 5px;
|
|
80
76
|
@nav-dividers-border-width: @global-border-width;
|
|
81
77
|
@nav-dividers-border: @global-border;
|
|
82
78
|
|
|
83
|
-
@internal-nav-parent-close-image: "../../images/backgrounds/nav-parent-close.svg";
|
|
84
|
-
@internal-nav-parent-open-image: "../../images/backgrounds/nav-parent-open.svg";
|
|
85
|
-
|
|
86
79
|
|
|
87
80
|
/* ========================================================================
|
|
88
81
|
Component: Nav
|
|
@@ -152,18 +145,9 @@ ul.uk-nav-sub {
|
|
|
152
145
|
/* Parent icon modifier
|
|
153
146
|
========================================================================== */
|
|
154
147
|
|
|
155
|
-
.uk-nav-parent-icon
|
|
156
|
-
content: "";
|
|
157
|
-
width: @nav-parent-icon-width;
|
|
158
|
-
height: @nav-parent-icon-height;
|
|
159
|
-
margin-left: auto;
|
|
160
|
-
.svg-fill(@internal-nav-parent-close-image, "#000", @nav-parent-icon-color);
|
|
161
|
-
background-repeat: no-repeat;
|
|
162
|
-
background-position: 50% 50%;
|
|
163
|
-
.hook-nav-parent-icon();
|
|
164
|
-
}
|
|
148
|
+
.uk-nav-parent-icon { margin-left: auto; }
|
|
165
149
|
|
|
166
|
-
.uk-nav
|
|
150
|
+
.uk-nav > li > a[aria-expanded="true"] .uk-nav-parent-icon { transform: rotate(180deg); }
|
|
167
151
|
|
|
168
152
|
|
|
169
153
|
/* Header
|
|
@@ -352,7 +336,7 @@ ul.uk-nav-sub {
|
|
|
352
336
|
.uk-nav-center .uk-nav-sub ul { padding-left: 0; }
|
|
353
337
|
|
|
354
338
|
/* Parent icon modifier */
|
|
355
|
-
.uk-nav-center.uk-nav-parent-icon
|
|
339
|
+
.uk-nav-center .uk-nav-parent-icon { margin-left: 0; }
|
|
356
340
|
|
|
357
341
|
|
|
358
342
|
/* Style modifier
|
|
@@ -372,7 +356,6 @@ ul.uk-nav-sub {
|
|
|
372
356
|
.hook-nav-misc();
|
|
373
357
|
|
|
374
358
|
.hook-nav-sub() {}
|
|
375
|
-
.hook-nav-parent-icon() {}
|
|
376
359
|
.hook-nav-header() {}
|
|
377
360
|
.hook-nav-divider() {}
|
|
378
361
|
.hook-nav-default() {}
|
|
@@ -396,7 +379,6 @@ ul.uk-nav-sub {
|
|
|
396
379
|
// Inverse
|
|
397
380
|
// ========================================================================
|
|
398
381
|
|
|
399
|
-
@inverse-nav-parent-icon-color: @inverse-global-color;
|
|
400
382
|
@inverse-nav-default-item-color: @inverse-global-muted-color;
|
|
401
383
|
@inverse-nav-default-item-hover-color: @inverse-global-color;
|
|
402
384
|
@inverse-nav-default-item-active-color: @inverse-global-emphasis-color;
|
|
@@ -419,17 +401,6 @@ ul.uk-nav-sub {
|
|
|
419
401
|
|
|
420
402
|
.hook-inverse() {
|
|
421
403
|
|
|
422
|
-
//
|
|
423
|
-
// Parent icon modifier
|
|
424
|
-
//
|
|
425
|
-
|
|
426
|
-
.uk-nav-parent-icon > .uk-parent > a::after {
|
|
427
|
-
.svg-fill(@internal-nav-parent-close-image, "#000", @inverse-nav-parent-icon-color);
|
|
428
|
-
.hook-inverse-nav-parent-icon();
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
.uk-nav-parent-icon > .uk-parent.uk-open > a::after { .svg-fill(@internal-nav-parent-open-image, "#000", @inverse-nav-parent-icon-color); }
|
|
432
|
-
|
|
433
404
|
//
|
|
434
405
|
// Default
|
|
435
406
|
//
|
|
@@ -511,7 +482,6 @@ ul.uk-nav-sub {
|
|
|
511
482
|
|
|
512
483
|
}
|
|
513
484
|
|
|
514
|
-
.hook-inverse-nav-parent-icon() {}
|
|
515
485
|
.hook-inverse-nav-default-item() {}
|
|
516
486
|
.hook-inverse-nav-default-item-hover() {}
|
|
517
487
|
.hook-inverse-nav-default-item-active() {}
|