uikit 3.16.7-dev.fcb5a4616 → 3.16.8-dev.dc18e16fb
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 +22 -0
- package/dist/css/uikit-core-rtl.css +33 -19
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +33 -19
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +33 -19
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +33 -19
- 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 +16 -37
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +16 -37
- 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 +1 -1
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +15 -36
- 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 +15 -36
- 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 +45 -22
- 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 +59 -57
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/boot.js +10 -1
- package/src/js/api/observables.js +1 -1
- package/src/js/api/watch.js +1 -1
- package/src/js/core/accordion.js +4 -0
- package/src/js/core/dropnav.js +5 -6
- package/src/js/core/navbar.js +14 -4
- package/src/js/core/sticky.js +7 -2
- package/src/js/mixin/slider-autoplay.js +13 -42
- package/src/js/mixin/slider-nav.js +6 -1
- package/src/js/util/fastdom.js +2 -2
- package/src/js/util/scroll.js +2 -1
- package/src/less/components/base.less +0 -1
- package/src/less/components/dropbar.less +6 -0
- package/src/less/components/dropdown.less +5 -0
- package/src/less/components/navbar.less +5 -0
- package/src/less/components/visibility.less +25 -5
- package/src/scss/components/dropbar.scss +6 -0
- package/src/scss/components/dropdown.scss +5 -0
- package/src/scss/components/navbar.scss +5 -0
- package/src/scss/components/visibility.scss +25 -5
- package/src/scss/mixins-theme.scss +0 -1
- package/src/scss/mixins.scss +0 -1
- package/src/scss/variables-theme.scss +3 -0
- package/src/scss/variables.scss +3 -0
- package/tests/js/index.js +4 -3
- package/tests/navbar.html +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.16.
|
|
5
|
+
"version": "3.16.8-dev.dc18e16fb",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/boot.js
CHANGED
|
@@ -4,7 +4,16 @@ import { apply, hasAttr, inBrowser, isPlainObject, startsWith, trigger } from 'u
|
|
|
4
4
|
|
|
5
5
|
export default function (App) {
|
|
6
6
|
if (inBrowser && window.MutationObserver) {
|
|
7
|
-
|
|
7
|
+
if (document.readyState === 'interactive') {
|
|
8
|
+
requestAnimationFrame(() => init(App));
|
|
9
|
+
} else {
|
|
10
|
+
new MutationObserver((records, observer) => {
|
|
11
|
+
if (document.body) {
|
|
12
|
+
init(App);
|
|
13
|
+
observer.disconnect();
|
|
14
|
+
}
|
|
15
|
+
}).observe(document.documentElement, { childList: true });
|
|
16
|
+
}
|
|
8
17
|
}
|
|
9
18
|
}
|
|
10
19
|
|
package/src/js/api/watch.js
CHANGED
package/src/js/core/accordion.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
$,
|
|
8
8
|
$$,
|
|
9
9
|
attr,
|
|
10
|
+
children,
|
|
10
11
|
css,
|
|
11
12
|
dimensions,
|
|
12
13
|
filter,
|
|
@@ -171,6 +172,9 @@ export default {
|
|
|
171
172
|
});
|
|
172
173
|
|
|
173
174
|
attr(content, { role: 'region', 'aria-labelledby': toggle.id });
|
|
175
|
+
if (isTag(content, 'ul')) {
|
|
176
|
+
attr(children(content), 'role', 'presentation');
|
|
177
|
+
}
|
|
174
178
|
}
|
|
175
179
|
},
|
|
176
180
|
|
package/src/js/core/dropnav.js
CHANGED
|
@@ -35,7 +35,6 @@ export default {
|
|
|
35
35
|
mixins: [Class, Container],
|
|
36
36
|
|
|
37
37
|
props: {
|
|
38
|
-
dropdown: String,
|
|
39
38
|
align: String,
|
|
40
39
|
clsDrop: String,
|
|
41
40
|
boundary: Boolean,
|
|
@@ -55,7 +54,6 @@ export default {
|
|
|
55
54
|
},
|
|
56
55
|
|
|
57
56
|
data: {
|
|
58
|
-
dropdown: '> li > a, > ul > li > a',
|
|
59
57
|
align: isRtl ? 'right' : 'left',
|
|
60
58
|
clsDrop: 'uk-dropdown',
|
|
61
59
|
clsDropbar: 'uk-dropnav-dropbar',
|
|
@@ -64,6 +62,7 @@ export default {
|
|
|
64
62
|
dropbarAnchor: false,
|
|
65
63
|
duration: 200,
|
|
66
64
|
container: false,
|
|
65
|
+
selNavItem: '> li > a, > ul > li > a',
|
|
67
66
|
},
|
|
68
67
|
|
|
69
68
|
computed: {
|
|
@@ -136,8 +135,8 @@ export default {
|
|
|
136
135
|
},
|
|
137
136
|
|
|
138
137
|
items: {
|
|
139
|
-
get({
|
|
140
|
-
return $$(
|
|
138
|
+
get({ selNavItem }, $el) {
|
|
139
|
+
return $$(selNavItem, $el);
|
|
141
140
|
},
|
|
142
141
|
|
|
143
142
|
watch(items) {
|
|
@@ -164,7 +163,7 @@ export default {
|
|
|
164
163
|
name: 'mouseover focusin',
|
|
165
164
|
|
|
166
165
|
delegate() {
|
|
167
|
-
return this.
|
|
166
|
+
return this.selNavItem;
|
|
168
167
|
},
|
|
169
168
|
|
|
170
169
|
handler({ current, type }) {
|
|
@@ -191,7 +190,7 @@ export default {
|
|
|
191
190
|
name: 'keydown',
|
|
192
191
|
|
|
193
192
|
delegate() {
|
|
194
|
-
return this.
|
|
193
|
+
return this.selNavItem;
|
|
195
194
|
},
|
|
196
195
|
|
|
197
196
|
handler(e) {
|
package/src/js/core/navbar.js
CHANGED
|
@@ -5,14 +5,15 @@ export default {
|
|
|
5
5
|
extends: Dropnav,
|
|
6
6
|
|
|
7
7
|
data: {
|
|
8
|
-
dropdown: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle',
|
|
9
8
|
clsDrop: 'uk-navbar-dropdown',
|
|
9
|
+
selNavItem:
|
|
10
|
+
'.uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle', // Simplify with :where() selector once browser target is Safari 14+
|
|
10
11
|
},
|
|
11
12
|
|
|
12
13
|
computed: {
|
|
13
14
|
items: {
|
|
14
|
-
get({
|
|
15
|
-
return $$(
|
|
15
|
+
get({ selNavItem }, $el) {
|
|
16
|
+
return $$(selNavItem, $el);
|
|
16
17
|
},
|
|
17
18
|
|
|
18
19
|
watch(items) {
|
|
@@ -21,7 +22,16 @@ export default {
|
|
|
21
22
|
'.uk-navbar-nav, .uk-navbar-left, .uk-navbar-right',
|
|
22
23
|
this.$el
|
|
23
24
|
)) {
|
|
24
|
-
css(
|
|
25
|
+
css(
|
|
26
|
+
container,
|
|
27
|
+
'flexGrow',
|
|
28
|
+
justify
|
|
29
|
+
? $$(
|
|
30
|
+
'.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle',
|
|
31
|
+
container
|
|
32
|
+
).length
|
|
33
|
+
: ''
|
|
34
|
+
);
|
|
25
35
|
}
|
|
26
36
|
|
|
27
37
|
attr($$('.uk-navbar-nav', this.$el), 'role', 'group');
|
package/src/js/core/sticky.js
CHANGED
|
@@ -163,7 +163,7 @@ export default {
|
|
|
163
163
|
|
|
164
164
|
const hide = this.isFixed && types.has('resize') && !sticky;
|
|
165
165
|
if (hide) {
|
|
166
|
-
|
|
166
|
+
preventTransition(this.selTarget);
|
|
167
167
|
this.hide();
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -174,7 +174,6 @@ export default {
|
|
|
174
174
|
|
|
175
175
|
if (hide) {
|
|
176
176
|
this.show();
|
|
177
|
-
requestAnimationFrame(() => css(this.selTarget, 'transition', ''));
|
|
178
177
|
}
|
|
179
178
|
|
|
180
179
|
const viewport = toPx('100vh', 'height');
|
|
@@ -359,6 +358,7 @@ export default {
|
|
|
359
358
|
this.show();
|
|
360
359
|
Animation.in(this.$el, this.animation).catch(noop);
|
|
361
360
|
} else {
|
|
361
|
+
preventTransition(this.selTarget);
|
|
362
362
|
this.show();
|
|
363
363
|
}
|
|
364
364
|
},
|
|
@@ -480,3 +480,8 @@ function coerce(value) {
|
|
|
480
480
|
function reset(el) {
|
|
481
481
|
css(el, { position: '', top: '', marginTop: '', width: '' });
|
|
482
482
|
}
|
|
483
|
+
|
|
484
|
+
function preventTransition(el) {
|
|
485
|
+
css(el, 'transition', '0s');
|
|
486
|
+
requestAnimationFrame(() => css(el, 'transition', ''));
|
|
487
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { attr, matches
|
|
1
|
+
import { attr, matches } from 'uikit-util';
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
props: {
|
|
@@ -14,7 +14,7 @@ export default {
|
|
|
14
14
|
},
|
|
15
15
|
|
|
16
16
|
connected() {
|
|
17
|
-
attr(this.list, 'aria-live', 'polite');
|
|
17
|
+
attr(this.list, 'aria-live', this.autoplay ? 'off' : 'polite');
|
|
18
18
|
this.autoplay && this.startAutoplay();
|
|
19
19
|
},
|
|
20
20
|
|
|
@@ -46,56 +46,27 @@ export default {
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
|
-
{
|
|
50
|
-
name: `${pointerEnter} focusin`,
|
|
51
|
-
|
|
52
|
-
filter() {
|
|
53
|
-
return this.autoplay;
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
handler(e) {
|
|
57
|
-
if (e.type !== pointerEnter || this.pauseOnHover) {
|
|
58
|
-
this.stopAutoplay();
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: `${pointerLeave} focusout`,
|
|
64
|
-
|
|
65
|
-
filter() {
|
|
66
|
-
return this.autoplay;
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
handler(e) {
|
|
70
|
-
if (e.type !== pointerLeave || this.pauseOnHover) {
|
|
71
|
-
this.startAutoplay();
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
49
|
],
|
|
76
50
|
|
|
77
51
|
methods: {
|
|
78
52
|
startAutoplay() {
|
|
79
|
-
if (
|
|
80
|
-
(this.draggable && matches(this.$el, ':focus-within')) ||
|
|
81
|
-
(this.pauseOnHover && matches(this.$el, ':hover'))
|
|
82
|
-
) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
53
|
this.stopAutoplay();
|
|
87
54
|
|
|
88
|
-
this.interval = setInterval(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
55
|
+
this.interval = setInterval(() => {
|
|
56
|
+
if (
|
|
57
|
+
!(
|
|
58
|
+
this.stack.length ||
|
|
59
|
+
(this.draggable && matches(this.$el, ':focus-within')) ||
|
|
60
|
+
(this.pauseOnHover && matches(this.$el, ':hover'))
|
|
61
|
+
)
|
|
62
|
+
) {
|
|
63
|
+
this.show('next');
|
|
64
|
+
}
|
|
65
|
+
}, this.autoplayInterval);
|
|
94
66
|
},
|
|
95
67
|
|
|
96
68
|
stopAutoplay() {
|
|
97
69
|
clearInterval(this.interval);
|
|
98
|
-
attr(this.list, 'aria-live', 'polite');
|
|
99
70
|
},
|
|
100
71
|
},
|
|
101
72
|
};
|
|
@@ -21,10 +21,12 @@ export default {
|
|
|
21
21
|
previous: 'Previous slide',
|
|
22
22
|
slideX: 'Slide %s',
|
|
23
23
|
slideLabel: '%s of %s',
|
|
24
|
+
role: 'String',
|
|
24
25
|
},
|
|
25
26
|
|
|
26
27
|
data: {
|
|
27
28
|
selNav: false,
|
|
29
|
+
role: 'region',
|
|
28
30
|
},
|
|
29
31
|
|
|
30
32
|
computed: {
|
|
@@ -60,7 +62,10 @@ export default {
|
|
|
60
62
|
},
|
|
61
63
|
|
|
62
64
|
connected() {
|
|
63
|
-
attr(this.$el,
|
|
65
|
+
attr(this.$el, {
|
|
66
|
+
role: this.role,
|
|
67
|
+
ariaRoleDescription: 'carousel',
|
|
68
|
+
});
|
|
64
69
|
},
|
|
65
70
|
|
|
66
71
|
update: [
|
package/src/js/util/fastdom.js
CHANGED
package/src/js/util/scroll.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { width } from './dimensions';
|
|
2
2
|
import { on } from './event';
|
|
3
|
+
import { matches } from './filter';
|
|
3
4
|
import { css } from './style';
|
|
4
5
|
import { scrollParents } from './viewport';
|
|
5
6
|
|
|
@@ -10,7 +11,7 @@ export function preventBackgroundScroll(el) {
|
|
|
10
11
|
el,
|
|
11
12
|
'touchmove',
|
|
12
13
|
(e) => {
|
|
13
|
-
if (e.targetTouches.length !== 1) {
|
|
14
|
+
if (e.targetTouches.length !== 1 || matches(e.target, 'input[type="range"')) {
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
@dropbar-background: @global-muted-background;
|
|
25
25
|
@dropbar-color: @global-color;
|
|
26
26
|
@dropbar-color-mode: none;
|
|
27
|
+
@dropbar-focus-outline: @base-focus-outline;
|
|
27
28
|
|
|
28
29
|
@dropbar-large-padding-top: 40px;
|
|
29
30
|
@dropbar-large-padding-bottom: @dropbar-large-padding-top;
|
|
@@ -82,6 +83,11 @@
|
|
|
82
83
|
.uk-dropbar:extend(.uk-light all) when (@dropbar-color-mode = light) {}
|
|
83
84
|
.uk-dropbar:extend(.uk-dark all) when (@dropbar-color-mode = dark) {}
|
|
84
85
|
|
|
86
|
+
.uk-dropbar :focus-visible {
|
|
87
|
+
outline-color: @dropbar-focus-outline !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
85
91
|
/* Size modifier
|
|
86
92
|
========================================================================== */
|
|
87
93
|
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
@dropdown-background: @global-muted-background;
|
|
23
23
|
@dropdown-color: @global-color;
|
|
24
24
|
@dropdown-color-mode: none;
|
|
25
|
+
@dropdown-focus-outline: @base-focus-outline;
|
|
25
26
|
|
|
26
27
|
@dropdown-large-padding: 40px;
|
|
27
28
|
|
|
@@ -79,6 +80,10 @@
|
|
|
79
80
|
.uk-dropdown:extend(.uk-light all) when (@dropdown-color-mode = light) {}
|
|
80
81
|
.uk-dropdown:extend(.uk-dark all) when (@dropdown-color-mode = dark) {}
|
|
81
82
|
|
|
83
|
+
.uk-dropdown :focus-visible {
|
|
84
|
+
outline-color: @dropdown-focus-outline !important;
|
|
85
|
+
}
|
|
86
|
+
|
|
82
87
|
|
|
83
88
|
/* Size modifier
|
|
84
89
|
========================================================================== */
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
@navbar-dropdown-background: @global-muted-background;
|
|
68
68
|
@navbar-dropdown-color: @global-color;
|
|
69
69
|
@navbar-dropdown-color-mode: none;
|
|
70
|
+
@navbar-dropdown-focus-outline: @base-focus-outline;
|
|
70
71
|
@navbar-dropdown-grid-gutter-horizontal: @global-gutter;
|
|
71
72
|
@navbar-dropdown-grid-gutter-vertical: @navbar-dropdown-grid-gutter-horizontal;
|
|
72
73
|
|
|
@@ -401,6 +402,10 @@
|
|
|
401
402
|
.uk-navbar-dropdown:extend(.uk-light all) when (@navbar-dropdown-color-mode = light) {}
|
|
402
403
|
.uk-navbar-dropdown:extend(.uk-dark all) when (@navbar-dropdown-color-mode = dark) {}
|
|
403
404
|
|
|
405
|
+
.uk-navbar-dropdown :focus-visible {
|
|
406
|
+
outline-color: @navbar-dropdown-focus-outline !important;
|
|
407
|
+
}
|
|
408
|
+
|
|
404
409
|
/*
|
|
405
410
|
* Grid
|
|
406
411
|
* Adopts `uk-grid`
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// Component: `uk-hidden-*`
|
|
5
5
|
// `uk-visible-*`
|
|
6
6
|
// `uk-invisible`
|
|
7
|
+
// `uk-hidden-visually`
|
|
7
8
|
// `uk-visible-toggle`
|
|
8
9
|
// `uk-hidden-hover`
|
|
9
10
|
// `uk-invisible-hover`
|
|
@@ -96,28 +97,47 @@
|
|
|
96
97
|
========================================================================== */
|
|
97
98
|
|
|
98
99
|
/*
|
|
99
|
-
*
|
|
100
|
+
* Mind that `display: none`, `visibility: hidden` and `opacity: 0`
|
|
101
|
+
* remove the element from the accessibility tree and that
|
|
102
|
+
* `display: none` and `visibility: hidden` are not focusable.
|
|
103
|
+
*
|
|
100
104
|
* The target stays visible if any element within receives focus through keyboard.
|
|
101
105
|
*/
|
|
102
106
|
|
|
103
107
|
/*
|
|
104
|
-
*
|
|
108
|
+
* Remove space when hidden.
|
|
109
|
+
* 1. Remove from document flow.
|
|
110
|
+
* 2. Hide element and shrink its dimension. Can't use zero dimensions together
|
|
111
|
+
* with `overflow: hidden` it would remove it from the accessibility tree.
|
|
112
|
+
* 3. Hide the single rendered pixel.
|
|
113
|
+
* 4. Prevent text wrapping caused by `width: 1px` because it has side effects on vocalisation
|
|
114
|
+
* by screen readers and the visual tracking indicator of other assistive technologies.
|
|
105
115
|
*/
|
|
106
116
|
|
|
117
|
+
.uk-hidden-visually:not(:focus):not(:active):not(:focus-within),
|
|
107
118
|
.uk-visible-toggle:not(:hover):not(:focus) .uk-hidden-hover:not(:focus-within) {
|
|
119
|
+
/* 1 */
|
|
108
120
|
position: absolute !important;
|
|
109
|
-
|
|
110
|
-
|
|
121
|
+
/* 2 */
|
|
122
|
+
width: 1px !important;
|
|
123
|
+
height: 1px !important;
|
|
111
124
|
padding: 0 !important;
|
|
125
|
+
border: 0 !important;
|
|
112
126
|
margin: 0 !important;
|
|
113
127
|
overflow: hidden !important;
|
|
128
|
+
/* 3 */
|
|
129
|
+
clip-path: inset(50%) !important;
|
|
130
|
+
/* 4 */
|
|
131
|
+
white-space: nowrap !important;
|
|
132
|
+
|
|
114
133
|
}
|
|
115
134
|
|
|
116
135
|
/*
|
|
117
136
|
* Keep space when hidden.
|
|
137
|
+
* Hide element without shrinking its dimension.
|
|
118
138
|
*/
|
|
119
139
|
|
|
120
|
-
.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within) {
|
|
140
|
+
.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within) { clip-path: inset(50%) !important; }
|
|
121
141
|
|
|
122
142
|
|
|
123
143
|
/* Based on Hover Capability of the Pointing Device
|
|
@@ -24,6 +24,7 @@ $dropbar-padding-horizontal-m: $global-medium-gutter !default;
|
|
|
24
24
|
$dropbar-background: $global-muted-background !default;
|
|
25
25
|
$dropbar-color: $global-color !default;
|
|
26
26
|
$dropbar-color-mode: none !default;
|
|
27
|
+
$dropbar-focus-outline: $base-focus-outline !default;
|
|
27
28
|
|
|
28
29
|
$dropbar-large-padding-top: 40px !default;
|
|
29
30
|
$dropbar-large-padding-bottom: $dropbar-large-padding-top !default;
|
|
@@ -82,6 +83,11 @@ $dropbar-large-padding-bottom: $dropbar-large-padding-top !def
|
|
|
82
83
|
@if ( $dropbar-color-mode == light ) { .uk-dropbar { @extend .uk-light !optional;} }
|
|
83
84
|
@if ( $dropbar-color-mode == dark ) { .uk-dropbar { @extend .uk-dark !optional;} }
|
|
84
85
|
|
|
86
|
+
.uk-dropbar :focus-visible {
|
|
87
|
+
outline-color: $dropbar-focus-outline !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
85
91
|
/* Size modifier
|
|
86
92
|
========================================================================== */
|
|
87
93
|
|
|
@@ -22,6 +22,7 @@ $dropdown-padding: 15px !default;
|
|
|
22
22
|
$dropdown-background: $global-muted-background !default;
|
|
23
23
|
$dropdown-color: $global-color !default;
|
|
24
24
|
$dropdown-color-mode: none !default;
|
|
25
|
+
$dropdown-focus-outline: $base-focus-outline !default;
|
|
25
26
|
|
|
26
27
|
$dropdown-large-padding: 40px !default;
|
|
27
28
|
|
|
@@ -79,6 +80,10 @@ $dropdown-nav-sublist-item-hover-color: $global-color !default;
|
|
|
79
80
|
@if ( $dropdown-color-mode == light ) { .uk-dropdown { @extend .uk-light !optional;} }
|
|
80
81
|
@if ( $dropdown-color-mode == dark ) { .uk-dropdown { @extend .uk-dark !optional;} }
|
|
81
82
|
|
|
83
|
+
.uk-dropdown :focus-visible {
|
|
84
|
+
outline-color: $dropdown-focus-outline !important;
|
|
85
|
+
}
|
|
86
|
+
|
|
82
87
|
|
|
83
88
|
/* Size modifier
|
|
84
89
|
========================================================================== */
|
|
@@ -67,6 +67,7 @@ $navbar-dropdown-padding: 15px !default;
|
|
|
67
67
|
$navbar-dropdown-background: $global-muted-background !default;
|
|
68
68
|
$navbar-dropdown-color: $global-color !default;
|
|
69
69
|
$navbar-dropdown-color-mode: none !default;
|
|
70
|
+
$navbar-dropdown-focus-outline: $base-focus-outline !default;
|
|
70
71
|
$navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
|
|
71
72
|
$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
|
|
72
73
|
|
|
@@ -401,6 +402,10 @@ $navbar-dropdown-nav-sublist-item-active-color: $global-emphasis-color !default
|
|
|
401
402
|
@if ( $navbar-dropdown-color-mode == light ) { .uk-navbar-dropdown { @extend .uk-light !optional;} }
|
|
402
403
|
@if ( $navbar-dropdown-color-mode == dark ) { .uk-navbar-dropdown { @extend .uk-dark !optional;} }
|
|
403
404
|
|
|
405
|
+
.uk-navbar-dropdown :focus-visible {
|
|
406
|
+
outline-color: $navbar-dropdown-focus-outline !important;
|
|
407
|
+
}
|
|
408
|
+
|
|
404
409
|
/*
|
|
405
410
|
* Grid
|
|
406
411
|
* Adopts `uk-grid`
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// Component: `uk-hidden-*`
|
|
5
5
|
// `uk-visible-*`
|
|
6
6
|
// `uk-invisible`
|
|
7
|
+
// `uk-hidden-visually`
|
|
7
8
|
// `uk-visible-toggle`
|
|
8
9
|
// `uk-hidden-hover`
|
|
9
10
|
// `uk-invisible-hover`
|
|
@@ -96,28 +97,47 @@
|
|
|
96
97
|
========================================================================== */
|
|
97
98
|
|
|
98
99
|
/*
|
|
99
|
-
*
|
|
100
|
+
* Mind that `display: none`, `visibility: hidden` and `opacity: 0`
|
|
101
|
+
* remove the element from the accessibility tree and that
|
|
102
|
+
* `display: none` and `visibility: hidden` are not focusable.
|
|
103
|
+
*
|
|
100
104
|
* The target stays visible if any element within receives focus through keyboard.
|
|
101
105
|
*/
|
|
102
106
|
|
|
103
107
|
/*
|
|
104
|
-
*
|
|
108
|
+
* Remove space when hidden.
|
|
109
|
+
* 1. Remove from document flow.
|
|
110
|
+
* 2. Hide element and shrink its dimension. Can't use zero dimensions together
|
|
111
|
+
* with `overflow: hidden` it would remove it from the accessibility tree.
|
|
112
|
+
* 3. Hide the single rendered pixel.
|
|
113
|
+
* 4. Prevent text wrapping caused by `width: 1px` because it has side effects on vocalisation
|
|
114
|
+
* by screen readers and the visual tracking indicator of other assistive technologies.
|
|
105
115
|
*/
|
|
106
116
|
|
|
117
|
+
.uk-hidden-visually:not(:focus):not(:active):not(:focus-within),
|
|
107
118
|
.uk-visible-toggle:not(:hover):not(:focus) .uk-hidden-hover:not(:focus-within) {
|
|
119
|
+
/* 1 */
|
|
108
120
|
position: absolute !important;
|
|
109
|
-
|
|
110
|
-
|
|
121
|
+
/* 2 */
|
|
122
|
+
width: 1px !important;
|
|
123
|
+
height: 1px !important;
|
|
111
124
|
padding: 0 !important;
|
|
125
|
+
border: 0 !important;
|
|
112
126
|
margin: 0 !important;
|
|
113
127
|
overflow: hidden !important;
|
|
128
|
+
/* 3 */
|
|
129
|
+
clip-path: inset(50%) !important;
|
|
130
|
+
/* 4 */
|
|
131
|
+
white-space: nowrap !important;
|
|
132
|
+
|
|
114
133
|
}
|
|
115
134
|
|
|
116
135
|
/*
|
|
117
136
|
* Keep space when hidden.
|
|
137
|
+
* Hide element without shrinking its dimension.
|
|
118
138
|
*/
|
|
119
139
|
|
|
120
|
-
.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within) {
|
|
140
|
+
.uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within) { clip-path: inset(50%) !important; }
|
|
121
141
|
|
|
122
142
|
|
|
123
143
|
/* Based on Hover Capability of the Pointing Device
|
package/src/scss/mixins.scss
CHANGED
|
@@ -379,6 +379,7 @@ $dropbar-padding-horizontal-m: $global-medium-gutter !default;
|
|
|
379
379
|
$dropbar-background: $global-background !default;
|
|
380
380
|
$dropbar-color: $global-color !default;
|
|
381
381
|
$dropbar-color-mode: none !default;
|
|
382
|
+
$dropbar-focus-outline: $base-focus-outline !default;
|
|
382
383
|
$dropbar-large-padding-top: 40px !default;
|
|
383
384
|
$dropbar-large-padding-bottom: $dropbar-large-padding-top !default;
|
|
384
385
|
$dropdown-margin: $global-small-margin !default;
|
|
@@ -388,6 +389,7 @@ $dropdown-padding: 25px !default;
|
|
|
388
389
|
$dropdown-background: $global-background !default;
|
|
389
390
|
$dropdown-color: $global-color !default;
|
|
390
391
|
$dropdown-color-mode: none !default;
|
|
392
|
+
$dropdown-focus-outline: $base-focus-outline !default;
|
|
391
393
|
$dropdown-large-padding: 40px !default;
|
|
392
394
|
$dropdown-dropbar-padding-top: 5px !default;
|
|
393
395
|
$dropdown-dropbar-padding-bottom: $dropdown-padding !default;
|
|
@@ -811,6 +813,7 @@ $navbar-dropdown-padding: 25px !default;
|
|
|
811
813
|
$navbar-dropdown-background: $global-background !default;
|
|
812
814
|
$navbar-dropdown-color: $global-color !default;
|
|
813
815
|
$navbar-dropdown-color-mode: none !default;
|
|
816
|
+
$navbar-dropdown-focus-outline: $base-focus-outline !default;
|
|
814
817
|
$navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
|
|
815
818
|
$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
|
|
816
819
|
$navbar-dropdown-large-shift-margin: 0 !default;
|
package/src/scss/variables.scss
CHANGED
|
@@ -378,6 +378,7 @@ $dropbar-padding-horizontal-m: $global-medium-gutter !default;
|
|
|
378
378
|
$dropbar-background: $global-muted-background !default;
|
|
379
379
|
$dropbar-color: $global-color !default;
|
|
380
380
|
$dropbar-color-mode: none !default;
|
|
381
|
+
$dropbar-focus-outline: $base-focus-outline !default;
|
|
381
382
|
$dropbar-large-padding-top: 40px !default;
|
|
382
383
|
$dropbar-large-padding-bottom: $dropbar-large-padding-top !default;
|
|
383
384
|
$dropdown-margin: $global-small-margin !default;
|
|
@@ -387,6 +388,7 @@ $dropdown-padding: 15px !default;
|
|
|
387
388
|
$dropdown-background: $global-muted-background !default;
|
|
388
389
|
$dropdown-color: $global-color !default;
|
|
389
390
|
$dropdown-color-mode: none !default;
|
|
391
|
+
$dropdown-focus-outline: $base-focus-outline !default;
|
|
390
392
|
$dropdown-large-padding: 40px !default;
|
|
391
393
|
$dropdown-dropbar-padding-top: $dropdown-padding !default;
|
|
392
394
|
$dropdown-dropbar-padding-bottom: $dropdown-padding !default;
|
|
@@ -809,6 +811,7 @@ $navbar-dropdown-padding: 15px !default;
|
|
|
809
811
|
$navbar-dropdown-background: $global-muted-background !default;
|
|
810
812
|
$navbar-dropdown-color: $global-color !default;
|
|
811
813
|
$navbar-dropdown-color-mode: none !default;
|
|
814
|
+
$navbar-dropdown-focus-outline: $base-focus-outline !default;
|
|
812
815
|
$navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
|
|
813
816
|
$navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
|
|
814
817
|
$navbar-dropdown-large-shift-margin: 0 !default;
|
package/tests/js/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* global TESTS */
|
|
2
|
-
import { addClass, css, on, prepend, removeClass, ucfirst } from 'uikit-util';
|
|
2
|
+
import { $$, addClass, css, on, prepend, removeClass, ucfirst } from 'uikit-util';
|
|
3
3
|
|
|
4
4
|
const tests = TESTS;
|
|
5
5
|
const storage = window.sessionStorage;
|
|
@@ -125,8 +125,7 @@ on(window, 'load', () =>
|
|
|
125
125
|
|
|
126
126
|
if ($inverse.value) {
|
|
127
127
|
removeClass(
|
|
128
|
-
|
|
129
|
-
'uk-navbar-container',
|
|
128
|
+
$$('*'),
|
|
130
129
|
'uk-card-default',
|
|
131
130
|
'uk-card-muted',
|
|
132
131
|
'uk-card-primary',
|
|
@@ -143,6 +142,8 @@ on(window, 'load', () =>
|
|
|
143
142
|
'uk-overlay-primary'
|
|
144
143
|
);
|
|
145
144
|
|
|
145
|
+
addClass($$('.uk-navbar-container'), 'uk-navbar-transparent');
|
|
146
|
+
|
|
146
147
|
css(docEl, 'background', $inverse.value === 'dark' ? '#fff' : '#222');
|
|
147
148
|
addClass($body, `uk-${$inverse.value}`);
|
|
148
149
|
}
|