uikit 3.17.12-dev.f1425d280 → 3.18.1-dev.0856bd8a6
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 +31 -0
- package/dist/css/uikit-core-rtl.css +577 -504
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +577 -504
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +600 -527
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +600 -527
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +2 -4
- 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 +96 -60
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +96 -60
- 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 +11 -6
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +8 -3
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +735 -37
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +8 -3
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +792 -129
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +7 -7
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +2 -8
- 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 +299 -273
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +9 -4
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +505 -365
- package/dist/js/uikit.min.js +1 -1
- package/package.json +3 -3
- package/src/images/components/navbar-toggle-icon.svg +1 -1
- package/src/images/icons/arrow-up-right.svg +4 -0
- package/src/images/icons/git-branch.svg +4 -4
- package/src/images/icons/git-fork.svg +4 -4
- package/src/images/icons/link-external.svg +5 -0
- package/src/images/icons/signal.svg +3 -0
- package/src/images/icons/telegram.svg +3 -0
- package/src/images/icons/threads.svg +3 -0
- package/src/images/icons/x.svg +3 -0
- package/src/js/components/countdown.js +1 -3
- package/src/js/components/internal/slider-preload.js +6 -0
- package/src/js/components/lightbox-panel.js +2 -6
- package/src/js/components/parallax.js +1 -20
- package/src/js/components/slider.js +38 -18
- package/src/js/components/slideshow.js +14 -46
- package/src/js/components/sortable.js +7 -6
- package/src/js/components/tooltip.js +1 -7
- package/src/js/core/accordion.js +1 -1
- package/src/js/core/drop.js +3 -5
- package/src/js/core/dropnav.js +24 -20
- package/src/js/core/height-match.js +7 -3
- package/src/js/core/height-placeholder.js +32 -0
- package/src/js/core/icon.js +12 -5
- package/src/js/core/index.js +2 -0
- package/src/js/core/inverse.js +103 -0
- package/src/js/core/modal.js +13 -0
- package/src/js/core/navbar.js +32 -172
- package/src/js/core/responsive.js +2 -29
- package/src/js/core/sticky.js +45 -29
- package/src/js/core/video.js +5 -1
- package/src/js/mixin/modal.js +1 -1
- package/src/js/mixin/parallax.js +19 -0
- package/src/js/mixin/slider-autoplay.js +1 -3
- package/src/js/mixin/slider-drag.js +22 -19
- package/src/js/mixin/slider-nav.js +10 -1
- package/src/js/mixin/slider-parallax.js +138 -0
- package/src/js/mixin/slider-reactive.js +1 -1
- package/src/js/mixin/slider.js +25 -3
- package/src/js/util/animation.js +14 -14
- package/src/js/util/dom.js +2 -2
- package/src/js/util/mouse.js +8 -11
- package/src/js/util/scroll.js +58 -0
- package/src/js/util/selector.js +4 -2
- package/src/js/util/style.js +3 -3
- package/src/js/util/viewport.js +8 -4
- package/src/less/components/align.less +2 -2
- package/src/less/components/animation.less +2 -2
- package/src/less/components/article.less +2 -2
- package/src/less/components/base.less +3 -3
- package/src/less/components/card.less +13 -6
- package/src/less/components/column.less +3 -3
- package/src/less/components/container.less +3 -3
- package/src/less/components/divider.less +2 -2
- package/src/less/components/dropbar.less +1 -1
- package/src/less/components/dropdown.less +1 -1
- package/src/less/components/dropnav.less +1 -1
- package/src/less/components/form.less +1 -1
- package/src/less/components/grid.less +3 -3
- package/src/less/components/height.less +1 -1
- package/src/less/components/icon.less +3 -3
- package/src/less/components/inverse.less +12 -0
- package/src/less/components/link.less +1 -1
- package/src/less/components/modal.less +3 -3
- package/src/less/components/nav.less +66 -0
- package/src/less/components/navbar.less +7 -11
- package/src/less/components/overlay.less +5 -0
- package/src/less/components/position.less +7 -7
- package/src/less/components/section.less +6 -5
- package/src/less/components/sticky.less +1 -1
- package/src/less/components/svg.less +3 -3
- package/src/less/components/tile.less +10 -0
- package/src/less/components/transition.less +9 -9
- package/src/less/components/utility.less +4 -4
- package/src/less/components/width.less +7 -7
- package/src/less/theme/alert.less +1 -1
- package/src/less/theme/align.less +1 -1
- package/src/less/theme/animation.less +1 -1
- package/src/less/theme/article.less +1 -1
- package/src/less/theme/background.less +1 -1
- package/src/less/theme/badge.less +1 -1
- package/src/less/theme/base.less +1 -1
- package/src/less/theme/breadcrumb.less +1 -1
- package/src/less/theme/button.less +1 -1
- package/src/less/theme/card.less +1 -1
- package/src/less/theme/close.less +1 -1
- package/src/less/theme/column.less +1 -1
- package/src/less/theme/comment.less +1 -1
- package/src/less/theme/container.less +1 -1
- package/src/less/theme/description-list.less +1 -1
- package/src/less/theme/divider.less +1 -1
- package/src/less/theme/dotnav.less +1 -1
- package/src/less/theme/drop.less +1 -1
- package/src/less/theme/dropbar.less +1 -1
- package/src/less/theme/dropdown.less +1 -1
- package/src/less/theme/form-range.less +1 -1
- package/src/less/theme/height.less +1 -1
- package/src/less/theme/icon.less +1 -1
- package/src/less/theme/iconnav.less +1 -1
- package/src/less/theme/inverse.less +1 -1
- package/src/less/theme/label.less +1 -1
- package/src/less/theme/leader.less +1 -1
- package/src/less/theme/lightbox.less +1 -1
- package/src/less/theme/margin.less +1 -1
- package/src/less/theme/modal.less +1 -1
- package/src/less/theme/nav.less +1 -1
- package/src/less/theme/navbar.less +3 -3
- package/src/less/theme/notification.less +1 -1
- package/src/less/theme/offcanvas.less +1 -1
- package/src/less/theme/overlay.less +1 -1
- package/src/less/theme/padding.less +1 -1
- package/src/less/theme/pagination.less +1 -1
- package/src/less/theme/position.less +1 -1
- package/src/less/theme/search.less +1 -1
- package/src/less/theme/spinner.less +1 -1
- package/src/less/theme/sticky.less +1 -1
- package/src/less/theme/tab.less +2 -2
- package/src/less/theme/table.less +1 -1
- package/src/less/theme/thumbnav.less +1 -1
- package/src/less/theme/tile.less +1 -1
- package/src/less/theme/tooltip.less +1 -1
- package/src/less/theme/totop.less +1 -1
- package/src/less/theme/transition.less +1 -1
- package/src/less/theme/utility.less +1 -1
- package/src/less/theme/variables.less +1 -1
- package/src/less/theme/width.less +1 -1
- package/src/less/uikit.less +1 -1
- package/src/scss/components/align.scss +2 -2
- package/src/scss/components/animation.scss +2 -2
- package/src/scss/components/base.scss +2 -2
- package/src/scss/components/card.scss +12 -6
- package/src/scss/components/column.scss +3 -3
- package/src/scss/components/container.scss +3 -3
- package/src/scss/components/divider.scss +2 -2
- package/src/scss/components/dropnav.scss +1 -1
- package/src/scss/components/form.scss +1 -1
- package/src/scss/components/grid.scss +3 -3
- package/src/scss/components/height.scss +1 -1
- package/src/scss/components/icon.scss +3 -3
- package/src/scss/components/inverse.scss +12 -0
- package/src/scss/components/modal.scss +3 -3
- package/src/scss/components/nav.scss +63 -0
- package/src/scss/components/navbar.scss +5 -8
- package/src/scss/components/overlay.scss +4 -0
- package/src/scss/components/position.scss +7 -7
- package/src/scss/components/section.scss +6 -5
- package/src/scss/components/sticky.scss +1 -1
- package/src/scss/components/svg.scss +3 -3
- package/src/scss/components/tile.scss +8 -0
- package/src/scss/components/transition.scss +9 -9
- package/src/scss/components/utility.scss +4 -4
- package/src/scss/components/width.scss +7 -7
- package/src/scss/mixins-theme.scss +10 -7
- package/src/scss/mixins.scss +7 -4
- package/src/scss/theme/alert.scss +1 -0
- package/src/scss/theme/align.scss +1 -1
- package/src/scss/theme/animation.scss +1 -1
- package/src/scss/theme/article.scss +1 -1
- package/src/scss/theme/background.scss +1 -1
- package/src/scss/theme/badge.scss +1 -1
- package/src/scss/theme/base.scss +1 -1
- package/src/scss/theme/breadcrumb.scss +1 -1
- package/src/scss/theme/button.scss +1 -1
- package/src/scss/theme/card.scss +1 -0
- package/src/scss/theme/close.scss +1 -1
- package/src/scss/theme/column.scss +1 -1
- package/src/scss/theme/comment.scss +1 -1
- package/src/scss/theme/container.scss +1 -1
- package/src/scss/theme/description-list.scss +1 -1
- package/src/scss/theme/divider.scss +1 -1
- package/src/scss/theme/dotnav.scss +1 -0
- package/src/scss/theme/drop.scss +1 -1
- package/src/scss/theme/dropbar.scss +1 -1
- package/src/scss/theme/dropdown.scss +1 -1
- package/src/scss/theme/form-range.scss +1 -1
- package/src/scss/theme/height.scss +1 -1
- package/src/scss/theme/icon.scss +1 -1
- package/src/scss/theme/iconnav.scss +1 -1
- package/src/scss/theme/inverse.scss +1 -1
- package/src/scss/theme/label.scss +1 -1
- package/src/scss/theme/leader.scss +1 -1
- package/src/scss/theme/lightbox.scss +1 -1
- package/src/scss/theme/margin.scss +1 -1
- package/src/scss/theme/modal.scss +1 -0
- package/src/scss/theme/nav.scss +1 -1
- package/src/scss/theme/navbar.scss +1 -1
- package/src/scss/theme/notification.scss +1 -1
- package/src/scss/theme/offcanvas.scss +1 -1
- package/src/scss/theme/overlay.scss +1 -1
- package/src/scss/theme/padding.scss +1 -1
- package/src/scss/theme/pagination.scss +1 -1
- package/src/scss/theme/position.scss +1 -1
- package/src/scss/theme/search.scss +1 -1
- package/src/scss/theme/spinner.scss +1 -1
- package/src/scss/theme/sticky.scss +1 -1
- package/src/scss/theme/tab.scss +1 -1
- package/src/scss/theme/table.scss +1 -0
- package/src/scss/theme/thumbnav.scss +1 -1
- package/src/scss/theme/tile.scss +1 -1
- package/src/scss/theme/tooltip.scss +1 -1
- package/src/scss/theme/totop.scss +1 -1
- package/src/scss/theme/transition.scss +1 -1
- package/src/scss/theme/utility.scss +1 -1
- package/src/scss/theme/variables.scss +1 -1
- package/src/scss/theme/width.scss +1 -1
- package/src/scss/uikit.scss +1 -1
- package/src/scss/variables-theme.scss +20 -5
- package/src/scss/variables.scss +20 -5
- package/tests/height.html +58 -1
- package/tests/icon.html +38 -10
- package/tests/nav.html +42 -0
- package/tests/navbar.html +1 -1
- package/tests/offcanvas.html +8 -8
- package/tests/search.html +300 -202
- package/tests/slider.html +58 -0
- package/tests/slideshow.html +66 -0
- package/tests/sticky-navbar.html +381 -23
- package/src/images/icons/pagekit.svg +0 -3
- package/src/js/mixin/internal/scroll.js +0 -39
package/src/js/core/icon.js
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
addClass,
|
|
4
4
|
apply,
|
|
5
5
|
attr,
|
|
6
|
+
closest,
|
|
6
7
|
css,
|
|
7
8
|
each,
|
|
8
9
|
hasAttr,
|
|
@@ -11,7 +12,6 @@ import {
|
|
|
11
12
|
isRtl,
|
|
12
13
|
isString,
|
|
13
14
|
isTag,
|
|
14
|
-
parents,
|
|
15
15
|
swap,
|
|
16
16
|
} from 'uikit-util';
|
|
17
17
|
import closeIcon from '../../images/components/close-icon.svg';
|
|
@@ -54,6 +54,7 @@ const icons = {
|
|
|
54
54
|
'search-icon': searchIcon,
|
|
55
55
|
'search-large': searchLarge,
|
|
56
56
|
'search-navbar': searchNavbar,
|
|
57
|
+
'search-toggle-icon': searchIcon,
|
|
57
58
|
'slidenav-next': slidenavNext,
|
|
58
59
|
'slidenav-next-large': slidenavNextLarge,
|
|
59
60
|
'slidenav-previous': slidenavPrevious,
|
|
@@ -121,10 +122,12 @@ export const Search = {
|
|
|
121
122
|
i18n: { toggle: 'Open Search', submit: 'Submit Search' },
|
|
122
123
|
|
|
123
124
|
beforeConnect() {
|
|
124
|
-
this
|
|
125
|
-
|
|
125
|
+
const isToggle = hasClass(this.$el, 'uk-search-toggle') || hasClass(this.$el, 'uk-navbar-toggle');
|
|
126
|
+
this.icon = isToggle
|
|
127
|
+
? 'search-toggle-icon'
|
|
128
|
+
: hasClass(this.$el, 'uk-search-icon') && closest(this.$el, '.uk-search-large')
|
|
126
129
|
? 'search-large'
|
|
127
|
-
:
|
|
130
|
+
: closest(this.$el, '.uk-search-navbar')
|
|
128
131
|
? 'search-navbar'
|
|
129
132
|
: this.$props.icon;
|
|
130
133
|
|
|
@@ -132,7 +135,7 @@ export const Search = {
|
|
|
132
135
|
return;
|
|
133
136
|
}
|
|
134
137
|
|
|
135
|
-
if (
|
|
138
|
+
if (isToggle) {
|
|
136
139
|
const label = this.t('toggle');
|
|
137
140
|
attr(this.$el, 'aria-label', label);
|
|
138
141
|
} else {
|
|
@@ -248,7 +251,11 @@ function install(UIkit) {
|
|
|
248
251
|
};
|
|
249
252
|
}
|
|
250
253
|
|
|
254
|
+
const aliases = { twitter: 'x' };
|
|
255
|
+
|
|
251
256
|
function getIcon(icon) {
|
|
257
|
+
icon = aliases[icon] || icon;
|
|
258
|
+
|
|
252
259
|
if (!icons[icon]) {
|
|
253
260
|
return null;
|
|
254
261
|
}
|
package/src/js/core/index.js
CHANGED
|
@@ -6,9 +6,11 @@ export { default as Dropnav } from './dropnav';
|
|
|
6
6
|
export { default as FormCustom } from './form-custom';
|
|
7
7
|
export { default as Grid } from './grid';
|
|
8
8
|
export { default as HeightMatch } from './height-match';
|
|
9
|
+
export { default as HeightPlaceholder } from './height-placeholder';
|
|
9
10
|
export { default as HeightViewport } from './height-viewport';
|
|
10
11
|
export { default as Icon } from './icon';
|
|
11
12
|
export { default as Img } from './img';
|
|
13
|
+
export { default as Inverse } from './inverse';
|
|
12
14
|
export { default as Leader } from './leader';
|
|
13
15
|
export { default as Margin } from './margin';
|
|
14
16
|
export { default as Modal } from './modal';
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { $$, css, dimensions, matches, observeResize, on, replaceClass } from 'uikit-util';
|
|
2
|
+
import { mutation } from '../api/observables';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
props: {
|
|
6
|
+
target: String,
|
|
7
|
+
selActive: String,
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
data: {
|
|
11
|
+
target: false,
|
|
12
|
+
selActive: false,
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
computed: {
|
|
16
|
+
target: ({ target }, $el) => (target ? $$(target, $el) : [$el]),
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
observe: [
|
|
20
|
+
mutation({
|
|
21
|
+
target: ({ target }) => target,
|
|
22
|
+
options: { attributes: true, attributeFilter: ['class'], attributeOldValue: true },
|
|
23
|
+
}),
|
|
24
|
+
{
|
|
25
|
+
target: ({ target }) => target,
|
|
26
|
+
observe: (target, handler) => {
|
|
27
|
+
const observer = observeResize([...target, document.documentElement], handler);
|
|
28
|
+
const listener = [
|
|
29
|
+
on(document, 'scroll itemshown itemhidden', handler, {
|
|
30
|
+
passive: true,
|
|
31
|
+
capture: true,
|
|
32
|
+
}),
|
|
33
|
+
on(document, 'show hide transitionstart', (e) => {
|
|
34
|
+
handler();
|
|
35
|
+
return observer.observe(e.target);
|
|
36
|
+
}),
|
|
37
|
+
on(document, 'shown hidden transitionend transitioncancel', (e) => {
|
|
38
|
+
handler();
|
|
39
|
+
return observer.unobserve(e.target);
|
|
40
|
+
}),
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
disconnect() {
|
|
45
|
+
observer.disconnect();
|
|
46
|
+
listener.map((off) => off());
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
handler() {
|
|
51
|
+
this.$emit();
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
|
|
56
|
+
update: {
|
|
57
|
+
read() {
|
|
58
|
+
for (const target of this.target) {
|
|
59
|
+
replaceClass(
|
|
60
|
+
target,
|
|
61
|
+
'uk-light,uk-dark',
|
|
62
|
+
!this.selActive || matches(target, this.selActive)
|
|
63
|
+
? findTargetColor(target)
|
|
64
|
+
: '',
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
function findTargetColor(target) {
|
|
72
|
+
const { left, top, height, width } = dimensions(target);
|
|
73
|
+
|
|
74
|
+
let last;
|
|
75
|
+
for (const percent of [0.25, 0.5, 0.75]) {
|
|
76
|
+
const elements = target.ownerDocument.elementsFromPoint(
|
|
77
|
+
Math.max(0, left) + width * percent,
|
|
78
|
+
Math.max(0, top) + height / 2,
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
for (const element of elements) {
|
|
82
|
+
if (
|
|
83
|
+
target.contains(element) ||
|
|
84
|
+
(element.closest('[class*="-leave"]') &&
|
|
85
|
+
elements.some((el) => element !== el && matches(el, '[class*="-enter"]')))
|
|
86
|
+
) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const color = css(element, '--uk-inverse');
|
|
91
|
+
if (color) {
|
|
92
|
+
if (color === last) {
|
|
93
|
+
return `uk-${color}`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
last = color;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return last ? `uk-${last}` : '';
|
|
103
|
+
}
|
package/src/js/core/modal.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
height,
|
|
8
8
|
html,
|
|
9
9
|
isString,
|
|
10
|
+
isTag,
|
|
10
11
|
noop,
|
|
11
12
|
on,
|
|
12
13
|
removeClass,
|
|
@@ -26,6 +27,18 @@ export default {
|
|
|
26
27
|
},
|
|
27
28
|
|
|
28
29
|
events: [
|
|
30
|
+
{
|
|
31
|
+
name: 'fullscreenchange webkitendfullscreen',
|
|
32
|
+
|
|
33
|
+
capture: true,
|
|
34
|
+
|
|
35
|
+
handler(e) {
|
|
36
|
+
if (isTag(e.target, 'video') && this.isToggled() && !document.fullscreenElement) {
|
|
37
|
+
this.hide();
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
|
|
29
42
|
{
|
|
30
43
|
name: 'show',
|
|
31
44
|
|
package/src/js/core/navbar.js
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
$$,
|
|
3
|
-
addClass,
|
|
4
|
-
css,
|
|
5
|
-
hasClass,
|
|
6
|
-
observeResize,
|
|
7
|
-
offset,
|
|
8
|
-
on,
|
|
9
|
-
parent,
|
|
10
|
-
pointInRect,
|
|
11
|
-
removeClass,
|
|
12
|
-
replaceClass,
|
|
13
|
-
scrollParent,
|
|
14
|
-
} from 'uikit-util';
|
|
15
|
-
import { intersection, mutation } from '../api/observables';
|
|
1
|
+
import { $$, addClass, css, hasClass, removeClass } from 'uikit-util';
|
|
16
2
|
import Dropnav from './dropnav';
|
|
17
3
|
|
|
4
|
+
const clsNavbarTransparent = 'uk-navbar-transparent';
|
|
5
|
+
|
|
18
6
|
export default {
|
|
19
7
|
extends: Dropnav,
|
|
20
8
|
|
|
@@ -26,57 +14,37 @@ export default {
|
|
|
26
14
|
clsDrop: 'uk-navbar-dropdown',
|
|
27
15
|
selNavItem:
|
|
28
16
|
'.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+
|
|
29
|
-
selTransparentTarget: '[class*="uk-section"]',
|
|
30
17
|
dropbarTransparentMode: false,
|
|
31
18
|
},
|
|
32
19
|
|
|
33
20
|
computed: {
|
|
34
21
|
navbarContainer: (_, $el) => $el.closest('.uk-navbar-container'),
|
|
35
22
|
|
|
36
|
-
dropbarOffset
|
|
37
|
-
|
|
23
|
+
dropbarOffset({ dropbarTransparentMode }) {
|
|
24
|
+
const { offsetTop, offsetHeight } = this.navbarContainer;
|
|
25
|
+
return (
|
|
26
|
+
offsetTop +
|
|
27
|
+
(dropbarTransparentMode === 'behind'
|
|
28
|
+
? 0
|
|
29
|
+
: offsetHeight + this.dropbarPositionOffset)
|
|
30
|
+
);
|
|
31
|
+
},
|
|
38
32
|
},
|
|
39
33
|
|
|
40
34
|
watch: {
|
|
41
35
|
items() {
|
|
42
36
|
const justify = hasClass(this.$el, 'uk-navbar-justify');
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
justify
|
|
51
|
-
? $$(
|
|
52
|
-
'.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle',
|
|
53
|
-
container,
|
|
54
|
-
).length
|
|
55
|
-
: '',
|
|
56
|
-
);
|
|
37
|
+
const containers = $$('.uk-navbar-nav, .uk-navbar-left, .uk-navbar-right', this.$el);
|
|
38
|
+
for (const container of containers) {
|
|
39
|
+
const items = justify
|
|
40
|
+
? $$('.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle', container)
|
|
41
|
+
.length
|
|
42
|
+
: '';
|
|
43
|
+
css(container, 'flexGrow', items);
|
|
57
44
|
}
|
|
58
45
|
},
|
|
59
46
|
},
|
|
60
47
|
|
|
61
|
-
disconnect() {
|
|
62
|
-
this._colorListener?.();
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
observe: [
|
|
66
|
-
mutation({
|
|
67
|
-
target: ({ navbarContainer }) => navbarContainer,
|
|
68
|
-
handler: 'registerColorListener',
|
|
69
|
-
options: { attributes: true, attributeFilter: ['class'], attributeOldValue: true },
|
|
70
|
-
}),
|
|
71
|
-
intersection({
|
|
72
|
-
handler(records) {
|
|
73
|
-
this._isIntersecting = records[0].isIntersecting;
|
|
74
|
-
this.registerColorListener();
|
|
75
|
-
},
|
|
76
|
-
args: { intersecting: false },
|
|
77
|
-
}),
|
|
78
|
-
],
|
|
79
|
-
|
|
80
48
|
events: [
|
|
81
49
|
{
|
|
82
50
|
name: 'show',
|
|
@@ -86,26 +54,12 @@ export default {
|
|
|
86
54
|
},
|
|
87
55
|
|
|
88
56
|
handler({ target }) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const storePrevColor = () =>
|
|
96
|
-
(this._mode = removeClasses(this.navbarContainer, 'uk-light', 'uk-dark'));
|
|
97
|
-
|
|
98
|
-
if (transparentMode === 'behind') {
|
|
99
|
-
const mode = getDropbarBehindColor(this.$el);
|
|
100
|
-
if (mode) {
|
|
101
|
-
storePrevColor();
|
|
102
|
-
addClass(this.navbarContainer, `uk-${mode}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (transparentMode === 'remove') {
|
|
107
|
-
storePrevColor();
|
|
108
|
-
removeClass(this.navbarContainer, 'uk-navbar-transparent');
|
|
57
|
+
if (
|
|
58
|
+
this.getTransparentMode(target) === 'remove' &&
|
|
59
|
+
hasClass(this.navbarContainer, clsNavbarTransparent)
|
|
60
|
+
) {
|
|
61
|
+
removeClass(this.navbarContainer, clsNavbarTransparent);
|
|
62
|
+
this._transparent = true;
|
|
109
63
|
}
|
|
110
64
|
},
|
|
111
65
|
},
|
|
@@ -116,33 +70,13 @@ export default {
|
|
|
116
70
|
return this.dropContainer;
|
|
117
71
|
},
|
|
118
72
|
|
|
119
|
-
async handler(
|
|
120
|
-
const transparentMode = this.getTransparentMode(target);
|
|
121
|
-
|
|
122
|
-
if (!transparentMode || !this._mode) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
|
|
73
|
+
async handler() {
|
|
126
74
|
await awaitMacroTask();
|
|
127
75
|
|
|
128
|
-
if (this.getActive()) {
|
|
129
|
-
|
|
76
|
+
if (!this.getActive() && this._transparent) {
|
|
77
|
+
addClass(this.navbarContainer, clsNavbarTransparent);
|
|
78
|
+
this._transparent = null;
|
|
130
79
|
}
|
|
131
|
-
|
|
132
|
-
if (transparentMode === 'behind') {
|
|
133
|
-
const mode = getDropbarBehindColor(this.$el);
|
|
134
|
-
if (mode) {
|
|
135
|
-
removeClass(this.navbarContainer, `uk-${mode}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
addClass(this.navbarContainer, this._mode);
|
|
140
|
-
|
|
141
|
-
if (transparentMode === 'remove') {
|
|
142
|
-
addClass(this.navbarContainer, 'uk-navbar-transparent');
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
this._mode = null;
|
|
146
80
|
},
|
|
147
81
|
},
|
|
148
82
|
],
|
|
@@ -159,87 +93,13 @@ export default {
|
|
|
159
93
|
|
|
160
94
|
const drop = this.getDropdown(el);
|
|
161
95
|
|
|
162
|
-
if (
|
|
163
|
-
return;
|
|
96
|
+
if (drop && hasClass(el, 'uk-dropbar')) {
|
|
97
|
+
return drop.inset ? 'behind' : 'remove';
|
|
164
98
|
}
|
|
165
|
-
|
|
166
|
-
return drop.inset ? 'behind' : 'remove';
|
|
167
|
-
},
|
|
168
|
-
|
|
169
|
-
registerColorListener() {
|
|
170
|
-
const active =
|
|
171
|
-
this._isIntersecting &&
|
|
172
|
-
hasClass(this.navbarContainer, 'uk-navbar-transparent') &&
|
|
173
|
-
!isWithinMixBlendMode(this.navbarContainer) &&
|
|
174
|
-
!$$('.uk-drop', this.dropContainer)
|
|
175
|
-
.map(this.getDropdown)
|
|
176
|
-
.some(
|
|
177
|
-
(drop) =>
|
|
178
|
-
drop.isToggled() &&
|
|
179
|
-
(drop.inset || this.getTransparentMode(drop.$el) === 'behind'),
|
|
180
|
-
);
|
|
181
|
-
|
|
182
|
-
if (this._colorListener) {
|
|
183
|
-
if (!active) {
|
|
184
|
-
this._colorListener();
|
|
185
|
-
this._colorListener = null;
|
|
186
|
-
}
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (!active) {
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
this._colorListener = listenForPositionChange(this.navbarContainer, () => {
|
|
195
|
-
const { left, top, height } = offset(this.navbarContainer);
|
|
196
|
-
const startPoint = { x: left, y: Math.max(0, top) + height / 2 };
|
|
197
|
-
const target = $$(this.selTransparentTarget).find((target) =>
|
|
198
|
-
pointInRect(startPoint, offset(target)),
|
|
199
|
-
);
|
|
200
|
-
const color = css(target, '--uk-navbar-color');
|
|
201
|
-
if (color) {
|
|
202
|
-
replaceClass(this.navbarContainer, 'uk-light,uk-dark', `uk-${color}`);
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
99
|
},
|
|
206
100
|
},
|
|
207
101
|
};
|
|
208
102
|
|
|
209
|
-
function
|
|
210
|
-
for (const cls of classes) {
|
|
211
|
-
if (hasClass(el, cls)) {
|
|
212
|
-
removeClass(el, cls);
|
|
213
|
-
return cls;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
async function awaitMacroTask() {
|
|
103
|
+
function awaitMacroTask() {
|
|
219
104
|
return new Promise((resolve) => setTimeout(resolve));
|
|
220
105
|
}
|
|
221
|
-
|
|
222
|
-
function getDropbarBehindColor(el) {
|
|
223
|
-
return css(el, '--uk-navbar-dropbar-behind-color');
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
function listenForPositionChange(el, handler) {
|
|
227
|
-
const parent = scrollParent(el, true);
|
|
228
|
-
const scrollEl = parent === document.documentElement ? document : parent;
|
|
229
|
-
|
|
230
|
-
const off = on(scrollEl, 'scroll', handler, { passive: true });
|
|
231
|
-
const observer = observeResize([el, parent], handler);
|
|
232
|
-
|
|
233
|
-
return () => {
|
|
234
|
-
off();
|
|
235
|
-
observer.disconnect();
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
function isWithinMixBlendMode(el) {
|
|
240
|
-
do {
|
|
241
|
-
if (css(el, 'mixBlendMode') !== 'normal') {
|
|
242
|
-
return true;
|
|
243
|
-
}
|
|
244
|
-
} while ((el = parent(el)));
|
|
245
|
-
}
|
|
@@ -1,37 +1,10 @@
|
|
|
1
|
-
import { addClass,
|
|
2
|
-
import { resize } from '../api/observables';
|
|
1
|
+
import { addClass, css } from 'uikit-util';
|
|
3
2
|
|
|
4
3
|
export default {
|
|
5
4
|
props: ['width', 'height'],
|
|
6
5
|
|
|
7
6
|
connected() {
|
|
8
7
|
addClass(this.$el, 'uk-responsive-width');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
observe: resize({
|
|
12
|
-
target: ({ $el }) => [$el, parent($el)],
|
|
13
|
-
}),
|
|
14
|
-
|
|
15
|
-
update: {
|
|
16
|
-
read() {
|
|
17
|
-
return isVisible(this.$el) && this.width && this.height
|
|
18
|
-
? { width: width(parent(this.$el)), height: this.height }
|
|
19
|
-
: false;
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
write(dim) {
|
|
23
|
-
height(
|
|
24
|
-
this.$el,
|
|
25
|
-
Dimensions.contain(
|
|
26
|
-
{
|
|
27
|
-
height: this.height,
|
|
28
|
-
width: this.width,
|
|
29
|
-
},
|
|
30
|
-
dim,
|
|
31
|
-
).height,
|
|
32
|
-
);
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
events: ['resize'],
|
|
8
|
+
css(this.$el, 'aspectRatio', `${this.width}/${this.height}`);
|
|
36
9
|
},
|
|
37
10
|
};
|