uikit 3.13.8-dev.f030a8b39 → 3.13.8-dev.fd15ccb29
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 +5 -0
- package/dist/css/uikit-core-rtl.css +4 -7
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +4 -7
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +7 -10
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +7 -10
- 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 +5 -2
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +5 -2
- 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 +13 -10
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +13 -10
- 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 +13 -10
- 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 +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 +69 -56
- 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 +73 -57
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/hooks.js +1 -1
- package/src/js/components/lightbox-panel.js +4 -1
- package/src/js/core/accordion.js +1 -1
- package/src/js/core/height-match.js +7 -15
- package/src/js/core/scrollspy.js +45 -26
- package/src/js/core/sticky.js +2 -2
- package/src/js/core/toggle.js +1 -1
- package/src/js/mixin/media.js +12 -9
- package/src/less/components/icon.less +3 -0
- package/src/less/components/navbar.less +0 -7
- package/src/less/theme/dropdown.less +2 -0
- package/src/less/theme/nav.less +2 -0
- package/src/less/theme/navbar.less +2 -0
- package/src/scss/components/icon.scss +3 -0
- package/src/scss/components/navbar.scss +0 -7
- package/src/scss/theme/dropdown.scss +2 -0
- package/src/scss/theme/nav.scss +2 -0
- package/src/scss/theme/navbar.scss +2 -0
- package/src/scss/variables-theme.scss +3 -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.13.8-dev.
|
|
5
|
+
"version": "3.13.8-dev.fd15ccb29",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/hooks.js
CHANGED
|
@@ -215,7 +215,10 @@ export default {
|
|
|
215
215
|
};
|
|
216
216
|
|
|
217
217
|
// Image
|
|
218
|
-
if (
|
|
218
|
+
if (
|
|
219
|
+
type === 'image' ||
|
|
220
|
+
src.match(/\.(avif|jpe?g|jfif|a?png|gif|svg|webp)($|\?)/i)
|
|
221
|
+
) {
|
|
219
222
|
try {
|
|
220
223
|
const { width, height } = await getImage(src, attrs.srcset, attrs.size);
|
|
221
224
|
this.setItem(item, createEl('img', { src, width, height, alt, ...attrs }));
|
package/src/js/core/accordion.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Resize from '../mixin/resize';
|
|
2
2
|
import { getRows } from './margin';
|
|
3
|
-
import { $$, boxModelAdjust, css, dimensions, isVisible
|
|
3
|
+
import { $$, boxModelAdjust, css, dimensions, isVisible } from 'uikit-util';
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
6
|
mixins: [Resize],
|
|
@@ -56,22 +56,14 @@ function match(elements) {
|
|
|
56
56
|
return { heights: [''], elements };
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
css(elements, 'minHeight', '');
|
|
59
60
|
let heights = elements.map(getHeight);
|
|
60
|
-
|
|
61
|
-
const hasMinHeight = elements.some((el) => el.style.minHeight);
|
|
62
|
-
const hasShrunk = elements.some((el, i) => !el.style.minHeight && heights[i] < max);
|
|
63
|
-
|
|
64
|
-
if (hasMinHeight && hasShrunk) {
|
|
65
|
-
css(elements, 'minHeight', '');
|
|
66
|
-
heights = elements.map(getHeight);
|
|
67
|
-
max = Math.max(...heights);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
heights = elements.map((el, i) =>
|
|
71
|
-
heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max
|
|
72
|
-
);
|
|
61
|
+
const max = Math.max(...heights);
|
|
73
62
|
|
|
74
|
-
return {
|
|
63
|
+
return {
|
|
64
|
+
heights: elements.map((el, i) => (heights[i].toFixed(2) === max.toFixed(2) ? '' : max)),
|
|
65
|
+
elements,
|
|
66
|
+
};
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
function getHeight(element) {
|
package/src/js/core/scrollspy.js
CHANGED
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
css,
|
|
5
5
|
filter,
|
|
6
6
|
data as getData,
|
|
7
|
-
|
|
7
|
+
observeIntersection,
|
|
8
8
|
once,
|
|
9
9
|
removeClass,
|
|
10
10
|
removeClasses,
|
|
11
11
|
toggleClass,
|
|
12
|
+
toPx,
|
|
12
13
|
trigger,
|
|
13
14
|
} from 'uikit-util';
|
|
14
15
|
|
|
15
|
-
const stateKey = '_ukScrollspy';
|
|
16
16
|
export default {
|
|
17
17
|
mixins: [Scroll],
|
|
18
18
|
|
|
@@ -45,43 +45,64 @@ export default {
|
|
|
45
45
|
return target ? $$(target, $el) : [$el];
|
|
46
46
|
},
|
|
47
47
|
|
|
48
|
-
watch(elements) {
|
|
48
|
+
watch(elements, prev) {
|
|
49
49
|
if (this.hidden) {
|
|
50
50
|
css(filter(elements, `:not(.${this.inViewClass})`), 'visibility', 'hidden');
|
|
51
51
|
}
|
|
52
|
+
|
|
53
|
+
if (prev) {
|
|
54
|
+
this.$reset();
|
|
55
|
+
}
|
|
52
56
|
},
|
|
53
57
|
|
|
54
58
|
immediate: true,
|
|
55
59
|
},
|
|
56
60
|
},
|
|
57
61
|
|
|
62
|
+
connected() {
|
|
63
|
+
this._data.elements = new Map();
|
|
64
|
+
this.registerObserver(
|
|
65
|
+
observeIntersection(
|
|
66
|
+
this.elements,
|
|
67
|
+
(records) => {
|
|
68
|
+
const elements = this._data.elements;
|
|
69
|
+
for (const { target: el, isIntersecting } of records) {
|
|
70
|
+
if (!elements.has(el)) {
|
|
71
|
+
elements.set(el, {
|
|
72
|
+
cls: getData(el, 'uk-scrollspy-class') || this.cls,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const state = elements.get(el);
|
|
77
|
+
if (!this.repeat && state.show) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
state.show = isIntersecting;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
this.$emit();
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
rootMargin: `${toPx(this.offsetTop, 'height') - 1}px ${
|
|
88
|
+
toPx(this.offsetLeft, 'width') - 1
|
|
89
|
+
}px`,
|
|
90
|
+
},
|
|
91
|
+
false
|
|
92
|
+
)
|
|
93
|
+
);
|
|
94
|
+
},
|
|
95
|
+
|
|
58
96
|
disconnected() {
|
|
59
|
-
for (const el of this.elements) {
|
|
60
|
-
removeClass(el, this.inViewClass,
|
|
61
|
-
delete el[stateKey];
|
|
97
|
+
for (const [el, state] of this._data.elements.entries()) {
|
|
98
|
+
removeClass(el, this.inViewClass, state?.cls || '');
|
|
62
99
|
}
|
|
63
100
|
},
|
|
64
101
|
|
|
65
102
|
update: [
|
|
66
103
|
{
|
|
67
|
-
read() {
|
|
68
|
-
for (const el of this.elements) {
|
|
69
|
-
if (!el[stateKey]) {
|
|
70
|
-
el[stateKey] = { cls: getData(el, 'uk-scrollspy-class') || this.cls };
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (!this.repeat && el[stateKey].show) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
el[stateKey].show = isInView(el, this.offsetTop, this.offsetLeft);
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
|
|
81
104
|
write(data) {
|
|
82
|
-
for (const el of
|
|
83
|
-
const state = el[stateKey];
|
|
84
|
-
|
|
105
|
+
for (const [el, state] of data.elements.entries()) {
|
|
85
106
|
if (state.show && !state.inview && !state.queued) {
|
|
86
107
|
state.queued = true;
|
|
87
108
|
|
|
@@ -99,14 +120,12 @@ export default {
|
|
|
99
120
|
}
|
|
100
121
|
}
|
|
101
122
|
},
|
|
102
|
-
|
|
103
|
-
events: ['scroll', 'resize'],
|
|
104
123
|
},
|
|
105
124
|
],
|
|
106
125
|
|
|
107
126
|
methods: {
|
|
108
127
|
toggle(el, inview) {
|
|
109
|
-
const state = el
|
|
128
|
+
const state = this._data.elements.get(el);
|
|
110
129
|
|
|
111
130
|
state.off?.();
|
|
112
131
|
|
package/src/js/core/sticky.js
CHANGED
|
@@ -137,13 +137,13 @@ export default {
|
|
|
137
137
|
return false;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
const hide = this.
|
|
140
|
+
const hide = this.active && types.has('resize');
|
|
141
141
|
if (hide) {
|
|
142
142
|
css(this.selTarget, 'transition', '0s');
|
|
143
143
|
this.hide();
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
if (!this.
|
|
146
|
+
if (!this.active) {
|
|
147
147
|
height = getOffset(this.$el).height;
|
|
148
148
|
margin = css(this.$el, 'margin');
|
|
149
149
|
}
|
package/src/js/core/toggle.js
CHANGED
|
@@ -124,7 +124,7 @@ export default {
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
// Skip if state does not change e.g. hover + focus received
|
|
127
|
-
if (this._showState && show
|
|
127
|
+
if (this._showState && show && expanded !== this._showState) {
|
|
128
128
|
// Ensure reset if state has changed through click
|
|
129
129
|
if (!show) {
|
|
130
130
|
this._showState = null;
|
package/src/js/mixin/media.js
CHANGED
|
@@ -20,16 +20,19 @@ export default {
|
|
|
20
20
|
|
|
21
21
|
connected() {
|
|
22
22
|
const media = toMedia(this.media);
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
this.matchMedia = true;
|
|
24
|
+
if (media) {
|
|
25
|
+
this.mediaObj = window.matchMedia(media);
|
|
26
|
+
const handler = () => {
|
|
27
|
+
this.matchMedia = this.mediaObj.matches;
|
|
28
|
+
trigger(this.$el, createEvent('mediachange', false, true, [this.mediaObj]));
|
|
29
|
+
};
|
|
30
|
+
this.offMediaObj = on(this.mediaObj, 'change', () => {
|
|
31
|
+
handler();
|
|
32
|
+
this.$emit('resize');
|
|
33
|
+
});
|
|
29
34
|
handler();
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
handler();
|
|
35
|
+
}
|
|
33
36
|
},
|
|
34
37
|
|
|
35
38
|
disconnected() {
|
|
@@ -130,10 +130,13 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
|
|
|
130
130
|
|
|
131
131
|
/*
|
|
132
132
|
* Link
|
|
133
|
+
* 1. Allow text within link
|
|
133
134
|
*/
|
|
134
135
|
|
|
135
136
|
.uk-icon-link {
|
|
136
137
|
color: @icon-link-color;
|
|
138
|
+
/* 1 */
|
|
139
|
+
text-decoration: none !important;
|
|
137
140
|
.hook-icon-link();
|
|
138
141
|
}
|
|
139
142
|
|
|
@@ -394,7 +394,6 @@
|
|
|
394
394
|
* 1. Set position
|
|
395
395
|
* 2. Bottom padding for dropbar
|
|
396
396
|
* 3. Horizontal padding
|
|
397
|
-
* 4. Reset padding if aligned to boundary
|
|
398
397
|
*/
|
|
399
398
|
|
|
400
399
|
.uk-navbar-dropdown-dropbar {
|
|
@@ -408,12 +407,6 @@
|
|
|
408
407
|
.hook-navbar-dropdown-dropbar();
|
|
409
408
|
}
|
|
410
409
|
|
|
411
|
-
/* 4 */
|
|
412
|
-
.uk-navbar-dropdown-dropbar.uk-navbar-dropdown-boundary {
|
|
413
|
-
padding-left: 0;
|
|
414
|
-
padding-right: 0;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
410
|
|
|
418
411
|
/* Dropdown Nav
|
|
419
412
|
* Adopts `uk-nav`
|
package/src/less/theme/nav.less
CHANGED
|
@@ -130,10 +130,13 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
|
|
|
130
130
|
|
|
131
131
|
/*
|
|
132
132
|
* Link
|
|
133
|
+
* 1. Allow text within link
|
|
133
134
|
*/
|
|
134
135
|
|
|
135
136
|
.uk-icon-link {
|
|
136
137
|
color: $icon-link-color;
|
|
138
|
+
/* 1 */
|
|
139
|
+
text-decoration: none !important;
|
|
137
140
|
@if(mixin-exists(hook-icon-link)) {@include hook-icon-link();}
|
|
138
141
|
}
|
|
139
142
|
|
|
@@ -394,7 +394,6 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
|
|
|
394
394
|
* 1. Set position
|
|
395
395
|
* 2. Bottom padding for dropbar
|
|
396
396
|
* 3. Horizontal padding
|
|
397
|
-
* 4. Reset padding if aligned to boundary
|
|
398
397
|
*/
|
|
399
398
|
|
|
400
399
|
.uk-navbar-dropdown-dropbar {
|
|
@@ -408,12 +407,6 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
|
|
|
408
407
|
@if(mixin-exists(hook-navbar-dropdown-dropbar)) {@include hook-navbar-dropdown-dropbar();}
|
|
409
408
|
}
|
|
410
409
|
|
|
411
|
-
/* 4 */
|
|
412
|
-
.uk-navbar-dropdown-dropbar.uk-navbar-dropdown-boundary {
|
|
413
|
-
padding-left: 0;
|
|
414
|
-
padding-right: 0;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
410
|
|
|
418
411
|
/* Dropdown Nav
|
|
419
412
|
* Adopts `uk-nav`
|
package/src/scss/theme/nav.scss
CHANGED
|
@@ -14,6 +14,8 @@ $navbar-dropdown-padding: 25px !default;
|
|
|
14
14
|
$navbar-dropdown-background: $global-background !default;
|
|
15
15
|
$navbar-dropdown-grid-gutter-horizontal: ($navbar-dropdown-padding * 2) !default;
|
|
16
16
|
|
|
17
|
+
$navbar-dropdown-nav-subtitle-font-size: 12px !default;
|
|
18
|
+
|
|
17
19
|
//
|
|
18
20
|
// New
|
|
19
21
|
//
|
|
@@ -376,7 +376,7 @@ $dropdown-background: $global-background !default;
|
|
|
376
376
|
$dropdown-color: $global-color !default;
|
|
377
377
|
$dropdown-nav-item-color: $global-muted-color !default;
|
|
378
378
|
$dropdown-nav-item-hover-color: $global-color !default;
|
|
379
|
-
$dropdown-nav-subtitle-font-size:
|
|
379
|
+
$dropdown-nav-subtitle-font-size: 12px !default;
|
|
380
380
|
$dropdown-nav-header-color: $global-emphasis-color !default;
|
|
381
381
|
$dropdown-nav-divider-border-width: $global-border-width !default;
|
|
382
382
|
$dropdown-nav-divider-border: $global-border !default;
|
|
@@ -685,7 +685,7 @@ $nav-divider-margin-horizontal: 0 !default;
|
|
|
685
685
|
$nav-default-item-color: $global-muted-color !default;
|
|
686
686
|
$nav-default-item-hover-color: $global-color !default;
|
|
687
687
|
$nav-default-item-active-color: $global-emphasis-color !default;
|
|
688
|
-
$nav-default-subtitle-font-size:
|
|
688
|
+
$nav-default-subtitle-font-size: 12px !default;
|
|
689
689
|
$nav-default-header-color: $global-emphasis-color !default;
|
|
690
690
|
$nav-default-divider-border-width: $global-border-width !default;
|
|
691
691
|
$nav-default-divider-border: $global-border !default;
|
|
@@ -755,7 +755,7 @@ $navbar-dropdown-dropbar-padding-horizontal: $navbar-nav-item-padding-horizontal
|
|
|
755
755
|
$navbar-dropdown-nav-item-color: $global-muted-color !default;
|
|
756
756
|
$navbar-dropdown-nav-item-hover-color: $global-color !default;
|
|
757
757
|
$navbar-dropdown-nav-item-active-color: $global-emphasis-color !default;
|
|
758
|
-
$navbar-dropdown-nav-subtitle-font-size:
|
|
758
|
+
$navbar-dropdown-nav-subtitle-font-size: 12px !default;
|
|
759
759
|
$navbar-dropdown-nav-header-color: $global-emphasis-color !default;
|
|
760
760
|
$navbar-dropdown-nav-divider-border-width: $global-border-width !default;
|
|
761
761
|
$navbar-dropdown-nav-divider-border: $global-border !default;
|