uikit 3.11.2-dev.7dd548556 → 3.11.2-dev.93483bd3e
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 +32 -18
- package/dist/css/uikit-core-rtl.css +80 -186
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +80 -186
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +82 -192
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +82 -192
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +3 -3
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +6 -8
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +31 -60
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +34 -64
- 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 +108 -72
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +108 -72
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +75 -28
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +108 -72
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +57 -21
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +12 -14
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +2 -2
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +4 -4
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +271 -287
- 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 +507 -458
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/component.js +2 -11
- package/src/js/api/hooks.js +1 -1
- package/src/js/api/state.js +3 -3
- package/src/js/components/countdown.js +2 -2
- package/src/js/components/filter.js +2 -3
- package/src/js/components/internal/lightbox-animations.js +4 -3
- package/src/js/components/internal/slider-preload.js +37 -0
- package/src/js/components/internal/slider-transitioner.js +2 -2
- package/src/js/components/internal/slideshow-animations.js +4 -3
- package/src/js/components/lightbox-panel.js +34 -58
- package/src/js/components/lightbox.js +3 -4
- package/src/js/components/slider.js +30 -11
- package/src/js/components/slideshow.js +8 -1
- package/src/js/components/sortable.js +8 -8
- package/src/js/components/upload.js +3 -3
- package/src/js/core/accordion.js +3 -3
- package/src/js/core/alert.js +1 -2
- package/src/js/core/height-match.js +3 -3
- package/src/js/core/img.js +132 -115
- package/src/js/core/modal.js +1 -2
- package/src/js/core/navbar.js +5 -5
- package/src/js/core/scrollspy.js +6 -6
- package/src/js/core/sticky.js +1 -1
- package/src/js/core/svg.js +10 -6
- package/src/js/core/toggle.js +4 -3
- package/src/js/mixin/internal/animate-slide.js +9 -12
- package/src/js/mixin/parallax.js +108 -72
- package/src/js/mixin/slider-drag.js +3 -3
- package/src/js/mixin/slider-nav.js +2 -2
- package/src/js/mixin/slider.js +8 -16
- package/src/js/mixin/slideshow.js +2 -2
- package/src/js/mixin/togglable.js +1 -2
- package/src/js/util/ajax.js +9 -12
- package/src/js/util/animation.js +7 -12
- package/src/js/util/attr.js +11 -9
- package/src/js/util/dom.js +27 -45
- package/src/js/util/lang.js +7 -6
- package/src/js/util/options.js +2 -11
- package/src/js/util/player.js +5 -4
- package/src/js/util/position.js +2 -2
- package/src/js/util/selector.js +12 -18
- package/src/js/util/style.js +4 -4
- package/src/less/components/base.less +10 -33
- package/src/less/components/form-range.less +52 -97
- package/src/less/components/form.less +0 -1
- package/src/less/components/leader.less +0 -1
- package/src/less/components/lightbox.less +0 -1
- package/src/less/components/modal.less +3 -7
- package/src/less/components/progress.less +14 -36
- package/src/less/components/slider.less +0 -3
- package/src/less/components/slideshow.less +0 -3
- package/src/less/components/text.less +16 -32
- package/src/scss/components/base.scss +10 -33
- package/src/scss/components/form-range.scss +52 -97
- package/src/scss/components/form.scss +0 -1
- package/src/scss/components/leader.scss +0 -1
- package/src/scss/components/lightbox.scss +0 -1
- package/src/scss/components/modal.scss +3 -7
- package/src/scss/components/progress.scss +14 -36
- package/src/scss/components/slider.scss +0 -3
- package/src/scss/components/slideshow.scss +0 -3
- package/src/scss/components/text.scss +16 -32
- package/src/scss/mixins-theme.scss +1 -1
- package/src/scss/mixins.scss +1 -1
- package/src/scss/variables-theme.scss +3 -3
- package/src/scss/variables.scss +3 -3
- package/tests/align.html +10 -10
- package/tests/animation.html +2 -2
- package/tests/article.html +2 -2
- package/tests/base.html +3 -3
- package/tests/card.html +10 -10
- package/tests/column.html +3 -3
- package/tests/comment.html +9 -9
- package/tests/dotnav.html +3 -3
- package/tests/image.html +296 -64
- package/tests/images/image-type.avif +0 -0
- package/tests/images/image-type.jpeg +0 -0
- package/tests/images/image-type.webp +0 -0
- package/tests/index.html +8 -8
- package/tests/lightbox.html +10 -10
- package/tests/marker.html +2 -2
- package/tests/modal.html +8 -9
- package/tests/navbar.html +2 -2
- package/tests/overlay.html +7 -7
- package/tests/parallax.html +14 -5
- package/tests/position.html +12 -12
- package/tests/slidenav.html +12 -12
- package/tests/slider.html +20 -20
- package/tests/sortable.html +1 -1
- package/tests/sticky-parallax.html +47 -62
- package/tests/svg.html +6 -6
- package/tests/table.html +11 -11
- package/tests/thumbnav.html +12 -12
- package/tests/transition.html +30 -30
- package/tests/utility.html +33 -33
- package/tests/video.html +1 -1
- package/tests/width.html +1 -1
- package/src/js/util/promise.js +0 -0
- package/tests/images/animated.gif +0 -0
package/src/js/core/img.js
CHANGED
|
@@ -1,64 +1,52 @@
|
|
|
1
1
|
import {
|
|
2
|
+
append,
|
|
3
|
+
attr,
|
|
4
|
+
children,
|
|
2
5
|
createEvent,
|
|
3
6
|
css,
|
|
4
|
-
|
|
7
|
+
data,
|
|
5
8
|
escape,
|
|
6
|
-
|
|
9
|
+
fragment,
|
|
10
|
+
hasAttr,
|
|
7
11
|
includes,
|
|
8
|
-
|
|
12
|
+
isArray,
|
|
13
|
+
isEmpty,
|
|
14
|
+
isTag,
|
|
15
|
+
parent,
|
|
16
|
+
parseOptions,
|
|
9
17
|
queryAll,
|
|
18
|
+
removeAttr,
|
|
10
19
|
startsWith,
|
|
11
20
|
toFloat,
|
|
12
21
|
toPx,
|
|
13
22
|
trigger,
|
|
14
23
|
} from 'uikit-util';
|
|
15
24
|
|
|
25
|
+
const nativeLazyLoad = 'loading' in HTMLImageElement.prototype;
|
|
26
|
+
const nativeIsIntersecting = 'isIntersecting' in IntersectionObserverEntry.prototype; // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
|
|
27
|
+
|
|
16
28
|
export default {
|
|
17
29
|
args: 'dataSrc',
|
|
18
30
|
|
|
19
31
|
props: {
|
|
20
32
|
dataSrc: String,
|
|
21
|
-
|
|
22
|
-
sizes: String,
|
|
23
|
-
width: Number,
|
|
24
|
-
height: Number,
|
|
33
|
+
sources: String,
|
|
25
34
|
offsetTop: String,
|
|
26
35
|
offsetLeft: String,
|
|
27
36
|
target: String,
|
|
37
|
+
loading: String,
|
|
28
38
|
},
|
|
29
39
|
|
|
30
40
|
data: {
|
|
31
41
|
dataSrc: '',
|
|
32
|
-
|
|
33
|
-
sizes: false,
|
|
34
|
-
width: false,
|
|
35
|
-
height: false,
|
|
42
|
+
sources: false,
|
|
36
43
|
offsetTop: '50vh',
|
|
37
44
|
offsetLeft: '50vw',
|
|
38
45
|
target: false,
|
|
46
|
+
loading: 'lazy',
|
|
39
47
|
},
|
|
40
48
|
|
|
41
49
|
computed: {
|
|
42
|
-
cacheKey({ dataSrc }) {
|
|
43
|
-
return `${this.$name}.${dataSrc}`;
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
width({ width, dataWidth }) {
|
|
47
|
-
return width || dataWidth;
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
height({ height, dataHeight }) {
|
|
51
|
-
return height || dataHeight;
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
sizes({ sizes, dataSizes }) {
|
|
55
|
-
return sizes || dataSizes;
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
isImg(_, $el) {
|
|
59
|
-
return isImg($el);
|
|
60
|
-
},
|
|
61
|
-
|
|
62
50
|
target: {
|
|
63
51
|
get({ target }) {
|
|
64
52
|
return [this.$el, ...queryAll(target, this.$el)];
|
|
@@ -68,65 +56,61 @@ export default {
|
|
|
68
56
|
this.observe();
|
|
69
57
|
},
|
|
70
58
|
},
|
|
71
|
-
|
|
72
|
-
offsetTop({ offsetTop }) {
|
|
73
|
-
return toPx(offsetTop, 'height');
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
offsetLeft({ offsetLeft }) {
|
|
77
|
-
return toPx(offsetLeft, 'width');
|
|
78
|
-
},
|
|
79
59
|
},
|
|
80
60
|
|
|
81
61
|
connected() {
|
|
82
|
-
if (!window.IntersectionObserver) {
|
|
83
|
-
|
|
62
|
+
if (this.loading !== 'lazy' || !window.IntersectionObserver || !nativeIsIntersecting) {
|
|
63
|
+
this.load();
|
|
84
64
|
return;
|
|
85
65
|
}
|
|
86
66
|
|
|
87
|
-
if (
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));
|
|
91
|
-
}
|
|
67
|
+
if (nativeLazyLoad && isImg(this.$el)) {
|
|
68
|
+
this.$el.loading = 'lazy';
|
|
69
|
+
setSrcAttrs(this.$el);
|
|
92
70
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
71
|
+
if (this.target.length === 1) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
96
75
|
|
|
97
|
-
|
|
76
|
+
ensureSrcAttribute(this.$el);
|
|
77
|
+
|
|
78
|
+
const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(
|
|
79
|
+
this.offsetLeft,
|
|
80
|
+
'width'
|
|
81
|
+
)}px`;
|
|
82
|
+
this.observer = new IntersectionObserver(
|
|
83
|
+
(entries) => {
|
|
84
|
+
if (entries.some((entry) => entry.isIntersecting)) {
|
|
85
|
+
this.load();
|
|
86
|
+
this.observer.disconnect();
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{ rootMargin }
|
|
90
|
+
);
|
|
91
|
+
this.observe();
|
|
98
92
|
},
|
|
99
93
|
|
|
100
94
|
disconnected() {
|
|
101
|
-
|
|
95
|
+
if (this._data.image) {
|
|
96
|
+
this._data.image.onload = '';
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
this.observer?.disconnect();
|
|
102
100
|
},
|
|
103
101
|
|
|
104
102
|
update: {
|
|
105
|
-
|
|
106
|
-
if (!this.observer) {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (!image && document.readyState === 'complete') {
|
|
111
|
-
this.load(this.observer.takeRecords());
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (this.isImg) {
|
|
103
|
+
write(store) {
|
|
104
|
+
if (!this.observer || isImg(this.$el)) {
|
|
115
105
|
return false;
|
|
116
106
|
}
|
|
117
107
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
(img) => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img))
|
|
121
|
-
);
|
|
122
|
-
},
|
|
123
|
-
|
|
124
|
-
write(data) {
|
|
125
|
-
if (this.dataSrcset && window.devicePixelRatio !== 1) {
|
|
108
|
+
const srcset = data(this.$el, 'data-srcset');
|
|
109
|
+
if (srcset && window.devicePixelRatio !== 1) {
|
|
126
110
|
const bgSize = css(this.$el, 'backgroundSize');
|
|
127
|
-
if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) ===
|
|
128
|
-
|
|
129
|
-
css(this.$el, 'backgroundSize', `${
|
|
111
|
+
if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
|
|
112
|
+
store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
|
|
113
|
+
css(this.$el, 'backgroundSize', `${store.bgSize}px`);
|
|
130
114
|
}
|
|
131
115
|
}
|
|
132
116
|
},
|
|
@@ -135,40 +119,35 @@ export default {
|
|
|
135
119
|
},
|
|
136
120
|
|
|
137
121
|
methods: {
|
|
138
|
-
load(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
!entries.some((entry) => isUndefined(entry.isIntersecting) || entry.isIntersecting)
|
|
142
|
-
) {
|
|
143
|
-
return;
|
|
122
|
+
load() {
|
|
123
|
+
if (this._data.image) {
|
|
124
|
+
return this._data.image;
|
|
144
125
|
}
|
|
145
126
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
storage[this.cacheKey] = currentSrc(img);
|
|
150
|
-
return img;
|
|
151
|
-
},
|
|
152
|
-
(e) => trigger(this.$el, new e.constructor(e.type, e))
|
|
153
|
-
);
|
|
127
|
+
const image = isImg(this.$el)
|
|
128
|
+
? this.$el
|
|
129
|
+
: getImageFromElement(this.$el, this.dataSrc, this.sources);
|
|
154
130
|
|
|
155
|
-
|
|
131
|
+
removeAttr(image, 'loading');
|
|
132
|
+
setSrcAttrs(this.$el, image.currentSrc);
|
|
133
|
+
return (this._data.image = image);
|
|
156
134
|
},
|
|
157
135
|
|
|
158
136
|
observe() {
|
|
159
137
|
if (this._connected && !this._data.image) {
|
|
160
|
-
|
|
138
|
+
for (const el of this.target) {
|
|
139
|
+
this.observer.observe(el);
|
|
140
|
+
}
|
|
161
141
|
}
|
|
162
142
|
},
|
|
163
143
|
},
|
|
164
144
|
};
|
|
165
145
|
|
|
166
|
-
function setSrcAttrs(el, src
|
|
146
|
+
function setSrcAttrs(el, src) {
|
|
167
147
|
if (isImg(el)) {
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
set('src', src);
|
|
148
|
+
const parentNode = parent(el);
|
|
149
|
+
const elements = isPicture(parentNode) ? children(parentNode) : [el];
|
|
150
|
+
elements.forEach((el) => setSourceProps(el, el));
|
|
172
151
|
} else if (src) {
|
|
173
152
|
const change = !includes(el.style.backgroundImage, src);
|
|
174
153
|
if (change) {
|
|
@@ -178,16 +157,60 @@ function setSrcAttrs(el, src, srcset, sizes) {
|
|
|
178
157
|
}
|
|
179
158
|
}
|
|
180
159
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
160
|
+
const srcProps = ['data-src', 'data-srcset', 'sizes'];
|
|
161
|
+
function setSourceProps(sourceEl, targetEl) {
|
|
162
|
+
srcProps.forEach((prop) => {
|
|
163
|
+
const value = data(sourceEl, prop);
|
|
164
|
+
if (value) {
|
|
165
|
+
attr(targetEl, prop.replace(/^(data-)+/, ''), value);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function getImageFromElement(el, src, sources) {
|
|
171
|
+
const img = new Image();
|
|
172
|
+
|
|
173
|
+
wrapInPicture(img, sources);
|
|
174
|
+
setSourceProps(el, img);
|
|
175
|
+
img.onload = () => setSrcAttrs(el, img.currentSrc);
|
|
176
|
+
attr(img, 'src', src);
|
|
177
|
+
return img;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function wrapInPicture(img, sources) {
|
|
181
|
+
sources = parseSources(sources);
|
|
182
|
+
|
|
183
|
+
if (sources.length) {
|
|
184
|
+
const picture = fragment('<picture>');
|
|
185
|
+
for (const attrs of sources) {
|
|
186
|
+
const source = fragment('<source>');
|
|
187
|
+
attr(source, attrs);
|
|
188
|
+
append(picture, source);
|
|
189
|
+
}
|
|
190
|
+
append(picture, img);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function parseSources(sources) {
|
|
195
|
+
if (!sources) {
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (startsWith(sources, '[')) {
|
|
200
|
+
try {
|
|
201
|
+
sources = JSON.parse(sources);
|
|
202
|
+
} catch (e) {
|
|
203
|
+
sources = [];
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
sources = parseOptions(sources);
|
|
188
207
|
}
|
|
189
208
|
|
|
190
|
-
|
|
209
|
+
if (!isArray(sources)) {
|
|
210
|
+
sources = [sources];
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return sources.filter((source) => !isEmpty(source));
|
|
191
214
|
}
|
|
192
215
|
|
|
193
216
|
const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
|
|
@@ -227,22 +250,16 @@ function getSourceSize(srcset, sizes) {
|
|
|
227
250
|
return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
|
|
228
251
|
}
|
|
229
252
|
|
|
230
|
-
function
|
|
231
|
-
|
|
253
|
+
function ensureSrcAttribute(el) {
|
|
254
|
+
if (isImg(el) && !hasAttr(el, 'src')) {
|
|
255
|
+
attr(el, 'src', 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"></svg>');
|
|
256
|
+
}
|
|
232
257
|
}
|
|
233
258
|
|
|
234
|
-
function
|
|
235
|
-
return el
|
|
259
|
+
function isPicture(el) {
|
|
260
|
+
return isTag(el, 'picture');
|
|
236
261
|
}
|
|
237
262
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
// workaround for Safari's private browsing mode and accessing sessionStorage in Blink
|
|
242
|
-
try {
|
|
243
|
-
storage = window.sessionStorage || {};
|
|
244
|
-
storage[key] = 1;
|
|
245
|
-
delete storage[key];
|
|
246
|
-
} catch (e) {
|
|
247
|
-
storage = {};
|
|
263
|
+
function isImg(el) {
|
|
264
|
+
return isTag(el, 'img');
|
|
248
265
|
}
|
package/src/js/core/modal.js
CHANGED
|
@@ -2,7 +2,6 @@ import Modal from '../mixin/modal';
|
|
|
2
2
|
import {
|
|
3
3
|
$,
|
|
4
4
|
addClass,
|
|
5
|
-
assign,
|
|
6
5
|
css,
|
|
7
6
|
Deferred,
|
|
8
7
|
hasClass,
|
|
@@ -136,7 +135,7 @@ function install({ modal }) {
|
|
|
136
135
|
};
|
|
137
136
|
|
|
138
137
|
function openDialog(tmpl, options, hideFn, submitFn) {
|
|
139
|
-
options =
|
|
138
|
+
options = { bgClose: false, escClose: true, labels: modal.labels, ...options };
|
|
140
139
|
|
|
141
140
|
const dialog = modal.dialog(tmpl(options), options);
|
|
142
141
|
const deferred = new Deferred();
|
package/src/js/core/navbar.js
CHANGED
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
$$,
|
|
7
7
|
addClass,
|
|
8
8
|
after,
|
|
9
|
-
assign,
|
|
10
9
|
css,
|
|
11
10
|
findIndex,
|
|
12
11
|
hasAttr,
|
|
@@ -111,12 +110,12 @@ export default {
|
|
|
111
110
|
const dropdowns = $$(`.${clsDrop}`, $el);
|
|
112
111
|
|
|
113
112
|
if (this.dropContainer !== $el) {
|
|
114
|
-
$$(`.${clsDrop}`, this.dropContainer)
|
|
113
|
+
for (const el of $$(`.${clsDrop}`, this.dropContainer)) {
|
|
115
114
|
const target = this.getDropdown(el)?.target;
|
|
116
115
|
if (!includes(dropdowns, el) && target && within(target, this.$el)) {
|
|
117
116
|
dropdowns.push(el);
|
|
118
117
|
}
|
|
119
|
-
}
|
|
118
|
+
}
|
|
120
119
|
}
|
|
121
120
|
|
|
122
121
|
return dropdowns;
|
|
@@ -126,11 +125,12 @@ export default {
|
|
|
126
125
|
this.$create(
|
|
127
126
|
'drop',
|
|
128
127
|
dropdowns.filter((el) => !this.getDropdown(el)),
|
|
129
|
-
|
|
128
|
+
{
|
|
129
|
+
...this.$props,
|
|
130
130
|
boundary: this.boundary,
|
|
131
131
|
pos: this.pos,
|
|
132
132
|
offset: this.dropbar || this.offset,
|
|
133
|
-
}
|
|
133
|
+
}
|
|
134
134
|
);
|
|
135
135
|
},
|
|
136
136
|
|
package/src/js/core/scrollspy.js
CHANGED
|
@@ -53,10 +53,10 @@ export default {
|
|
|
53
53
|
},
|
|
54
54
|
|
|
55
55
|
disconnected() {
|
|
56
|
-
this.elements
|
|
56
|
+
for (const el of this.elements) {
|
|
57
57
|
removeClass(el, this.inViewClass, el[stateKey] ? el[stateKey].cls : '');
|
|
58
58
|
delete el[stateKey];
|
|
59
|
-
}
|
|
59
|
+
}
|
|
60
60
|
},
|
|
61
61
|
|
|
62
62
|
update: [
|
|
@@ -71,17 +71,17 @@ export default {
|
|
|
71
71
|
return false;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
this.elements
|
|
74
|
+
for (const el of this.elements) {
|
|
75
75
|
if (!el[stateKey]) {
|
|
76
76
|
el[stateKey] = { cls: getData(el, 'uk-scrollspy-class') || this.cls };
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
el[stateKey].show = isInView(el, this.offsetTop, this.offsetLeft);
|
|
80
|
-
}
|
|
80
|
+
}
|
|
81
81
|
},
|
|
82
82
|
|
|
83
83
|
write(data) {
|
|
84
|
-
this.elements
|
|
84
|
+
for (const el of this.elements) {
|
|
85
85
|
const state = el[stateKey];
|
|
86
86
|
|
|
87
87
|
if (state.show && !state.inview && !state.queued) {
|
|
@@ -99,7 +99,7 @@ export default {
|
|
|
99
99
|
} else if (!state.show && state.inview && !state.queued && this.repeat) {
|
|
100
100
|
this.toggle(el, false);
|
|
101
101
|
}
|
|
102
|
-
}
|
|
102
|
+
}
|
|
103
103
|
},
|
|
104
104
|
|
|
105
105
|
events: ['scroll', 'resize'],
|
package/src/js/core/sticky.js
CHANGED
package/src/js/core/svg.js
CHANGED
|
@@ -5,10 +5,12 @@ import {
|
|
|
5
5
|
append,
|
|
6
6
|
attr,
|
|
7
7
|
includes,
|
|
8
|
+
isTag,
|
|
8
9
|
isVisible,
|
|
9
10
|
isVoidElement,
|
|
10
11
|
memoize,
|
|
11
12
|
noop,
|
|
13
|
+
once,
|
|
12
14
|
remove,
|
|
13
15
|
removeAttr,
|
|
14
16
|
startsWith,
|
|
@@ -94,6 +96,12 @@ export default {
|
|
|
94
96
|
|
|
95
97
|
methods: {
|
|
96
98
|
async getSvg() {
|
|
99
|
+
if (isTag(this.$el, 'img') && !this.$el.complete && this.$el.loading === 'lazy') {
|
|
100
|
+
return new Promise((resolve) =>
|
|
101
|
+
once(this.$el, 'load', () => resolve(this.getSvg()))
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
97
105
|
return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject('SVG not found.');
|
|
98
106
|
},
|
|
99
107
|
|
|
@@ -193,7 +201,7 @@ export function getMaxPathLength(el) {
|
|
|
193
201
|
}
|
|
194
202
|
|
|
195
203
|
function insertSVG(el, root) {
|
|
196
|
-
if (isVoidElement(root) || root
|
|
204
|
+
if (isVoidElement(root) || isTag(root, 'canvas')) {
|
|
197
205
|
root.hidden = true;
|
|
198
206
|
|
|
199
207
|
const next = root.nextElementSibling;
|
|
@@ -205,11 +213,7 @@ function insertSVG(el, root) {
|
|
|
205
213
|
}
|
|
206
214
|
|
|
207
215
|
function equals(el, other) {
|
|
208
|
-
return
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
function isSVG(el) {
|
|
212
|
-
return el?.tagName === 'svg';
|
|
216
|
+
return isTag(el, 'svg') && isTag(other, 'svg') && innerHTML(el) === innerHTML(other);
|
|
213
217
|
}
|
|
214
218
|
|
|
215
219
|
function innerHTML(el) {
|
package/src/js/core/toggle.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
includes,
|
|
8
8
|
isBoolean,
|
|
9
9
|
isFocusable,
|
|
10
|
+
isTag,
|
|
10
11
|
isTouch,
|
|
11
12
|
matches,
|
|
12
13
|
once,
|
|
@@ -134,7 +135,7 @@ export default {
|
|
|
134
135
|
name: 'keydown',
|
|
135
136
|
|
|
136
137
|
filter() {
|
|
137
|
-
return includes(this.mode, 'click') && this.$el
|
|
138
|
+
return includes(this.mode, 'click') && isTag(this.$el, 'input');
|
|
138
139
|
},
|
|
139
140
|
|
|
140
141
|
handler(e) {
|
|
@@ -216,10 +217,10 @@ export default {
|
|
|
216
217
|
const leaving = this.target.filter((el) => hasClass(el, this.clsLeave));
|
|
217
218
|
|
|
218
219
|
if (leaving.length) {
|
|
219
|
-
this.target
|
|
220
|
+
for (const el of this.target) {
|
|
220
221
|
const isLeaving = includes(leaving, el);
|
|
221
222
|
this.toggleElement(el, isLeaving, isLeaving);
|
|
222
|
-
}
|
|
223
|
+
}
|
|
223
224
|
return;
|
|
224
225
|
}
|
|
225
226
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
assign,
|
|
3
2
|
children,
|
|
4
3
|
css,
|
|
5
4
|
fastdom,
|
|
@@ -44,7 +43,7 @@ export default function (action, target, duration) {
|
|
|
44
43
|
|
|
45
44
|
// Reset to previous state
|
|
46
45
|
nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));
|
|
47
|
-
css(target,
|
|
46
|
+
css(target, { display: 'block', ...targetProps });
|
|
48
47
|
|
|
49
48
|
// Start transitions on next frame
|
|
50
49
|
requestAnimationFrame(() => {
|
|
@@ -76,16 +75,14 @@ function getProps(el, opacity) {
|
|
|
76
75
|
const zIndex = css(el, 'zIndex');
|
|
77
76
|
|
|
78
77
|
return isVisible(el)
|
|
79
|
-
?
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
getPositionWithMargin(el)
|
|
88
|
-
)
|
|
78
|
+
? {
|
|
79
|
+
display: '',
|
|
80
|
+
opacity: opacity ? css(el, 'opacity') : '0',
|
|
81
|
+
pointerEvents: 'none',
|
|
82
|
+
position: 'absolute',
|
|
83
|
+
zIndex: zIndex === 'auto' ? index(el) : zIndex,
|
|
84
|
+
...getPositionWithMargin(el),
|
|
85
|
+
}
|
|
89
86
|
: false;
|
|
90
87
|
}
|
|
91
88
|
|