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/mixin/parallax.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
css,
|
|
5
5
|
Dimensions,
|
|
6
6
|
each,
|
|
7
|
+
findIndex,
|
|
7
8
|
isNumber,
|
|
8
9
|
isString,
|
|
9
10
|
isUndefined,
|
|
10
11
|
noop,
|
|
11
|
-
startsWith,
|
|
12
12
|
toFloat,
|
|
13
13
|
toPx,
|
|
14
14
|
trigger,
|
|
@@ -79,39 +79,35 @@ export default {
|
|
|
79
79
|
},
|
|
80
80
|
};
|
|
81
81
|
|
|
82
|
-
function transformFn(prop, el,
|
|
83
|
-
const unit = getUnit(
|
|
82
|
+
function transformFn(prop, el, stops) {
|
|
83
|
+
const unit = getUnit(stops) || { x: 'px', y: 'px', rotate: 'deg' }[prop] || '';
|
|
84
|
+
let transformFn;
|
|
84
85
|
|
|
85
86
|
if (prop === 'x' || prop === 'y') {
|
|
86
87
|
prop = `translate${ucfirst(prop)}`;
|
|
88
|
+
transformFn = (stop) => toFloat(toFloat(stop).toFixed(unit === 'px' ? 0 : 6));
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (steps.length === 1) {
|
|
92
|
-
steps.unshift(prop === 'scale' ? 1 : 0);
|
|
91
|
+
if (stops.length === 1) {
|
|
92
|
+
stops.unshift(prop === 'scale' ? 1 : 0);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
let value = getValue(steps, percent);
|
|
95
|
+
stops = parseStops(stops, transformFn);
|
|
97
96
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
css.transform += ` ${prop}(${value}${unit})`;
|
|
97
|
+
return (css, percent) => {
|
|
98
|
+
css.transform += ` ${prop}(${getValue(stops, percent)}${unit})`;
|
|
103
99
|
};
|
|
104
100
|
}
|
|
105
101
|
|
|
106
|
-
function colorFn(prop, el,
|
|
107
|
-
if (
|
|
108
|
-
|
|
102
|
+
function colorFn(prop, el, stops) {
|
|
103
|
+
if (stops.length === 1) {
|
|
104
|
+
stops.unshift(getCssValue(el, prop, ''));
|
|
109
105
|
}
|
|
110
106
|
|
|
111
|
-
|
|
107
|
+
stops = parseStops(stops, (stop) => parseColor(el, stop));
|
|
112
108
|
|
|
113
109
|
return (css, percent) => {
|
|
114
|
-
const [start, end, p] =
|
|
110
|
+
const [start, end, p] = getStop(stops, percent);
|
|
115
111
|
const value = start
|
|
116
112
|
.map((value, i) => {
|
|
117
113
|
value += p * (end[i] - value);
|
|
@@ -131,85 +127,83 @@ function parseColor(el, color) {
|
|
|
131
127
|
.map(toFloat);
|
|
132
128
|
}
|
|
133
129
|
|
|
134
|
-
function filterFn(prop, el,
|
|
135
|
-
if (
|
|
136
|
-
|
|
130
|
+
function filterFn(prop, el, stops) {
|
|
131
|
+
if (stops.length === 1) {
|
|
132
|
+
stops.unshift(0);
|
|
137
133
|
}
|
|
138
134
|
|
|
139
|
-
const unit = getUnit(
|
|
135
|
+
const unit = getUnit(stops) || { blur: 'px', hue: 'deg' }[prop] || '%';
|
|
140
136
|
prop = { fopacity: 'opacity', hue: 'hue-rotate' }[prop] || prop;
|
|
141
|
-
|
|
137
|
+
stops = parseStops(stops);
|
|
142
138
|
|
|
143
139
|
return (css, percent) => {
|
|
144
|
-
const value = getValue(
|
|
140
|
+
const value = getValue(stops, percent);
|
|
145
141
|
css.filter += ` ${prop}(${value + unit})`;
|
|
146
142
|
};
|
|
147
143
|
}
|
|
148
144
|
|
|
149
|
-
function cssPropFn(prop, el,
|
|
150
|
-
if (
|
|
151
|
-
|
|
145
|
+
function cssPropFn(prop, el, stops) {
|
|
146
|
+
if (stops.length === 1) {
|
|
147
|
+
stops.unshift(getCssValue(el, prop, ''));
|
|
152
148
|
}
|
|
153
149
|
|
|
154
|
-
|
|
150
|
+
stops = parseStops(stops);
|
|
155
151
|
|
|
156
152
|
return (css, percent) => {
|
|
157
|
-
css[prop] = getValue(
|
|
153
|
+
css[prop] = getValue(stops, percent);
|
|
158
154
|
};
|
|
159
155
|
}
|
|
160
156
|
|
|
161
|
-
function strokeFn(prop, el,
|
|
162
|
-
if (
|
|
163
|
-
|
|
157
|
+
function strokeFn(prop, el, stops) {
|
|
158
|
+
if (stops.length === 1) {
|
|
159
|
+
stops.unshift(0);
|
|
164
160
|
}
|
|
165
161
|
|
|
166
|
-
const unit = getUnit(
|
|
167
|
-
|
|
162
|
+
const unit = getUnit(stops);
|
|
163
|
+
const length = getMaxPathLength(el);
|
|
164
|
+
stops = parseStops(stops.reverse(), (stop) => {
|
|
165
|
+
stop = toFloat(stop);
|
|
166
|
+
return unit === '%' ? (stop * length) / 100 : stop;
|
|
167
|
+
});
|
|
168
168
|
|
|
169
|
-
if (!
|
|
169
|
+
if (!stops.some(([value]) => value)) {
|
|
170
170
|
return noop;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
const length = getMaxPathLength(el);
|
|
174
173
|
css(el, 'strokeDasharray', length);
|
|
175
174
|
|
|
176
|
-
if (unit === '%') {
|
|
177
|
-
steps = steps.map((step) => (step * length) / 100);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
steps = steps.reverse();
|
|
181
|
-
|
|
182
175
|
return (css, percent) => {
|
|
183
|
-
css.strokeDashoffset = getValue(
|
|
176
|
+
css.strokeDashoffset = getValue(stops, percent);
|
|
184
177
|
};
|
|
185
178
|
}
|
|
186
179
|
|
|
187
|
-
function backgroundFn(prop, el,
|
|
188
|
-
if (
|
|
189
|
-
|
|
180
|
+
function backgroundFn(prop, el, stops) {
|
|
181
|
+
if (stops.length === 1) {
|
|
182
|
+
stops.unshift(0);
|
|
190
183
|
}
|
|
191
184
|
|
|
192
185
|
prop = prop.substr(-1);
|
|
193
186
|
const attr = prop === 'y' ? 'height' : 'width';
|
|
194
|
-
|
|
187
|
+
stops = parseStops(stops, (stop) => toPx(stop, attr, el));
|
|
195
188
|
|
|
196
189
|
const bgPos = getCssValue(el, `background-position-${prop}`, '');
|
|
197
190
|
|
|
198
191
|
return getCssValue(el, 'backgroundSize', '') === 'cover'
|
|
199
|
-
? backgroundCoverFn(prop, el,
|
|
200
|
-
: setBackgroundPosFn(prop,
|
|
192
|
+
? backgroundCoverFn(prop, el, stops, bgPos, attr)
|
|
193
|
+
: setBackgroundPosFn(prop, stops, bgPos);
|
|
201
194
|
}
|
|
202
195
|
|
|
203
|
-
function backgroundCoverFn(prop, el,
|
|
196
|
+
function backgroundCoverFn(prop, el, stops, bgPos, attr) {
|
|
204
197
|
const dimImage = getBackgroundImageDimensions(el);
|
|
205
198
|
|
|
206
199
|
if (!dimImage.width) {
|
|
207
200
|
return noop;
|
|
208
201
|
}
|
|
209
202
|
|
|
210
|
-
const
|
|
211
|
-
const
|
|
212
|
-
const
|
|
203
|
+
const values = stops.map(([value]) => value);
|
|
204
|
+
const min = Math.min(...values);
|
|
205
|
+
const max = Math.max(...values);
|
|
206
|
+
const down = values.indexOf(min) < values.indexOf(max);
|
|
213
207
|
|
|
214
208
|
const diff = max - min;
|
|
215
209
|
let pos = (down ? -diff : 0) - (down ? min : max);
|
|
@@ -234,7 +228,7 @@ function backgroundCoverFn(prop, el, steps, bgPos, attr) {
|
|
|
234
228
|
|
|
235
229
|
const dim = Dimensions.cover(dimImage, dimEl);
|
|
236
230
|
|
|
237
|
-
const fn = setBackgroundPosFn(prop,
|
|
231
|
+
const fn = setBackgroundPosFn(prop, stops, `${pos}px`);
|
|
238
232
|
return (css, percent) => {
|
|
239
233
|
fn(css, percent);
|
|
240
234
|
css.backgroundSize = `${dim.width}px ${dim.height}px`;
|
|
@@ -242,9 +236,9 @@ function backgroundCoverFn(prop, el, steps, bgPos, attr) {
|
|
|
242
236
|
};
|
|
243
237
|
}
|
|
244
238
|
|
|
245
|
-
function setBackgroundPosFn(prop,
|
|
239
|
+
function setBackgroundPosFn(prop, stops, pos) {
|
|
246
240
|
return function (css, percent) {
|
|
247
|
-
css[`background-position-${prop}`] = `calc(${pos} + ${getValue(
|
|
241
|
+
css[`background-position-${prop}`] = `calc(${pos} + ${getValue(stops, percent)}px)`;
|
|
248
242
|
};
|
|
249
243
|
}
|
|
250
244
|
|
|
@@ -278,27 +272,69 @@ function toDimensions(image) {
|
|
|
278
272
|
};
|
|
279
273
|
}
|
|
280
274
|
|
|
281
|
-
function
|
|
282
|
-
const
|
|
283
|
-
const
|
|
275
|
+
function parseStops(stops, fn = toFloat) {
|
|
276
|
+
const result = [];
|
|
277
|
+
const { length } = stops;
|
|
278
|
+
for (let i = 0; i < length; i++) {
|
|
279
|
+
let [value, percent] = isString(stops[i]) ? stops[i].trim().split(' ') : [stops[i]];
|
|
280
|
+
value = fn(value);
|
|
281
|
+
percent = percent ? toFloat(percent) / 100 : null;
|
|
282
|
+
|
|
283
|
+
if (i === 0) {
|
|
284
|
+
if (percent === null) {
|
|
285
|
+
percent = 0;
|
|
286
|
+
} else if (percent) {
|
|
287
|
+
result.push([value, 0]);
|
|
288
|
+
}
|
|
289
|
+
} else if (i === length - 1) {
|
|
290
|
+
if (percent === null) {
|
|
291
|
+
percent = 1;
|
|
292
|
+
} else if (percent !== 1) {
|
|
293
|
+
result.push([value, percent]);
|
|
294
|
+
percent = 1;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
result.push([value, percent]);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
for (let i = 1; i < result.length - 1; i++) {
|
|
302
|
+
if (result[i][1] === null) {
|
|
303
|
+
const nextIndex = findIndex(result.slice(i + 1), ([, percent]) => percent !== null) + 1;
|
|
304
|
+
const percent = (result[i + nextIndex][1] - result[i - 1][1]) / (nextIndex + 1);
|
|
305
|
+
for (let j = 0; j < nextIndex; j++) {
|
|
306
|
+
result[i + j][1] = result[i - 1][1] + percent * (j + 1);
|
|
307
|
+
}
|
|
308
|
+
i += nextIndex;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
284
314
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
315
|
+
function getStop(stops, percent) {
|
|
316
|
+
const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;
|
|
317
|
+
return [
|
|
318
|
+
stops[index - 1][0],
|
|
319
|
+
stops[index][0],
|
|
320
|
+
(percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1]),
|
|
321
|
+
];
|
|
288
322
|
}
|
|
289
323
|
|
|
290
|
-
function getValue(
|
|
291
|
-
const [start, end, p] =
|
|
324
|
+
function getValue(stops, percent) {
|
|
325
|
+
const [start, end, p] = getStop(stops, percent);
|
|
292
326
|
return isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;
|
|
293
327
|
}
|
|
294
328
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
329
|
+
const unitRe = /^[\d-]+([^\s]+)/;
|
|
330
|
+
function getUnit(stops, defaultUnit) {
|
|
331
|
+
for (const stop of stops) {
|
|
332
|
+
const match = stop.match?.(unitRe);
|
|
333
|
+
if (match) {
|
|
334
|
+
return match[1];
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return defaultUnit;
|
|
302
338
|
}
|
|
303
339
|
|
|
304
340
|
function getCssValue(el, prop, value) {
|
|
@@ -26,17 +26,17 @@ export default {
|
|
|
26
26
|
},
|
|
27
27
|
|
|
28
28
|
created() {
|
|
29
|
-
['start', 'move', 'end']
|
|
29
|
+
for (const key of ['start', 'move', 'end']) {
|
|
30
30
|
const fn = this[key];
|
|
31
31
|
this[key] = (e) => {
|
|
32
32
|
const pos = getEventPos(e).x * (isRtl ? -1 : 1);
|
|
33
33
|
|
|
34
|
-
this.prevPos = pos
|
|
34
|
+
this.prevPos = pos === this.pos ? this.prevPos : this.pos;
|
|
35
35
|
this.pos = pos;
|
|
36
36
|
|
|
37
37
|
fn(e);
|
|
38
38
|
};
|
|
39
|
-
}
|
|
39
|
+
}
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
events: [
|
|
@@ -61,7 +61,7 @@ export default {
|
|
|
61
61
|
methods: {
|
|
62
62
|
updateNav() {
|
|
63
63
|
const i = this.getValidIndex();
|
|
64
|
-
this.navItems
|
|
64
|
+
for (const el of this.navItems) {
|
|
65
65
|
const cmd = data(el, this.attrItem);
|
|
66
66
|
|
|
67
67
|
toggleClass(el, this.clsActive, toNumber(cmd) === i);
|
|
@@ -71,7 +71,7 @@ export default {
|
|
|
71
71
|
this.finite &&
|
|
72
72
|
((cmd === 'previous' && i === 0) || (cmd === 'next' && i >= this.maxIndex))
|
|
73
73
|
);
|
|
74
|
-
}
|
|
74
|
+
}
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
77
|
};
|
package/src/js/mixin/slider.js
CHANGED
|
@@ -4,7 +4,6 @@ import SliderNav from './slider-nav';
|
|
|
4
4
|
import {
|
|
5
5
|
$,
|
|
6
6
|
$$,
|
|
7
|
-
assign,
|
|
8
7
|
clamp,
|
|
9
8
|
fastdom,
|
|
10
9
|
getIndex,
|
|
@@ -170,21 +169,14 @@ export default {
|
|
|
170
169
|
},
|
|
171
170
|
|
|
172
171
|
_show(prev, next, force) {
|
|
173
|
-
this._transitioner = this._getTransitioner(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */
|
|
182
|
-
: 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */
|
|
183
|
-
: this.easing,
|
|
184
|
-
},
|
|
185
|
-
this.transitionOptions
|
|
186
|
-
)
|
|
187
|
-
);
|
|
172
|
+
this._transitioner = this._getTransitioner(prev, next, this.dir, {
|
|
173
|
+
easing: force
|
|
174
|
+
? next.offsetWidth < 600
|
|
175
|
+
? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */
|
|
176
|
+
: 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */
|
|
177
|
+
: this.easing,
|
|
178
|
+
...this.transitionOptions,
|
|
179
|
+
});
|
|
188
180
|
|
|
189
181
|
if (!force && !prev) {
|
|
190
182
|
this._translate(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Animations from './internal/slideshow-animations';
|
|
2
2
|
import Transitioner from './internal/slideshow-transitioner';
|
|
3
3
|
import Slider from './slider.js';
|
|
4
|
-
import { addClass,
|
|
4
|
+
import { addClass, removeClass } from 'uikit-util';
|
|
5
5
|
|
|
6
6
|
export default {
|
|
7
7
|
mixins: [Slider],
|
|
@@ -19,7 +19,7 @@ export default {
|
|
|
19
19
|
|
|
20
20
|
computed: {
|
|
21
21
|
animation({ animation, Animations }) {
|
|
22
|
-
return
|
|
22
|
+
return { ...(Animations[animation] || Animations.slide), name: animation };
|
|
23
23
|
},
|
|
24
24
|
|
|
25
25
|
transitionOptions() {
|
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
$$,
|
|
3
3
|
addClass,
|
|
4
4
|
Animation,
|
|
5
|
-
assign,
|
|
6
5
|
css,
|
|
7
6
|
fastdom,
|
|
8
7
|
hasClass,
|
|
@@ -175,7 +174,7 @@ export function toggleHeight({ isToggled, duration, initProps, hideProps, transi
|
|
|
175
174
|
show
|
|
176
175
|
? Transition.start(
|
|
177
176
|
el,
|
|
178
|
-
|
|
177
|
+
{ ...initProps, overflow: 'hidden', height: endHeight },
|
|
179
178
|
Math.round(duration * (1 - currentHeight / endHeight)),
|
|
180
179
|
transition
|
|
181
180
|
)
|
package/src/js/util/ajax.js
CHANGED
|
@@ -2,18 +2,15 @@ import { on } from './event';
|
|
|
2
2
|
import { assign, noop } from './lang';
|
|
3
3
|
|
|
4
4
|
export function ajax(url, options) {
|
|
5
|
-
const env =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
options
|
|
15
|
-
);
|
|
16
|
-
|
|
5
|
+
const env = {
|
|
6
|
+
data: null,
|
|
7
|
+
method: 'GET',
|
|
8
|
+
headers: {},
|
|
9
|
+
xhr: new XMLHttpRequest(),
|
|
10
|
+
beforeSend: noop,
|
|
11
|
+
responseType: '',
|
|
12
|
+
...options,
|
|
13
|
+
};
|
|
17
14
|
return Promise.resolve()
|
|
18
15
|
.then(() => env.beforeSend(env))
|
|
19
16
|
.then(() => send(url, env));
|
package/src/js/util/animation.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { attr } from './attr';
|
|
2
2
|
import { once, trigger } from './event';
|
|
3
3
|
import { css, propName } from './style';
|
|
4
|
-
import {
|
|
4
|
+
import { startsWith, toNodes } from './lang';
|
|
5
5
|
import { addClass, hasClass, removeClass, removeClasses } from './class';
|
|
6
6
|
|
|
7
7
|
export function transition(element, props, duration = 400, timing = 'linear') {
|
|
@@ -35,17 +35,12 @@ export function transition(element, props, duration = 400, timing = 'linear') {
|
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
addClass(element, 'uk-transition');
|
|
38
|
-
css(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
transitionTimingFunction: timing,
|
|
45
|
-
},
|
|
46
|
-
props
|
|
47
|
-
)
|
|
48
|
-
);
|
|
38
|
+
css(element, {
|
|
39
|
+
transitionProperty: Object.keys(props).map(propName).join(','),
|
|
40
|
+
transitionDuration: `${duration}ms`,
|
|
41
|
+
transitionTimingFunction: timing,
|
|
42
|
+
...props,
|
|
43
|
+
});
|
|
49
44
|
})
|
|
50
45
|
)
|
|
51
46
|
);
|
package/src/js/util/attr.js
CHANGED
|
@@ -11,17 +11,17 @@ export function attr(element, name, value) {
|
|
|
11
11
|
if (isUndefined(value)) {
|
|
12
12
|
return toNode(element)?.getAttribute(name);
|
|
13
13
|
} else {
|
|
14
|
-
toNodes(element)
|
|
14
|
+
for (const el of toNodes(element)) {
|
|
15
15
|
if (isFunction(value)) {
|
|
16
|
-
value = value.call(
|
|
16
|
+
value = value.call(el, attr(el, name));
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
if (value === null) {
|
|
20
|
-
removeAttr(
|
|
20
|
+
removeAttr(el, name);
|
|
21
21
|
} else {
|
|
22
|
-
|
|
22
|
+
el.setAttribute(name, value);
|
|
23
23
|
}
|
|
24
|
-
}
|
|
24
|
+
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -30,10 +30,12 @@ export function hasAttr(element, name) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export function removeAttr(element, name) {
|
|
33
|
-
|
|
34
|
-
name.split(' ')
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
const elements = toNodes(element);
|
|
34
|
+
for (const attribute of name.split(' ')) {
|
|
35
|
+
for (const element of elements) {
|
|
36
|
+
element.removeAttribute(attribute);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
export function data(element, attribute) {
|
package/src/js/util/dom.js
CHANGED
|
@@ -12,6 +12,10 @@ export function ready(fn) {
|
|
|
12
12
|
once(document, 'DOMContentLoaded', fn);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
export function isTag(element, tagName) {
|
|
16
|
+
return element?.tagName?.toLowerCase() === tagName.toLowerCase();
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
export function empty(element) {
|
|
16
20
|
return replaceChildren(element, '');
|
|
17
21
|
}
|
|
@@ -20,34 +24,20 @@ export function html(parent, html) {
|
|
|
20
24
|
return isUndefined(html) ? $(parent).innerHTML : replaceChildren(parent, html);
|
|
21
25
|
}
|
|
22
26
|
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export function prepend(parent, element) {
|
|
30
|
-
const nodes = $$(element);
|
|
31
|
-
$(parent).prepend(...nodes);
|
|
32
|
-
return nodes;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function append(parent, element) {
|
|
36
|
-
const nodes = $$(element);
|
|
37
|
-
$(parent).append(...nodes);
|
|
38
|
-
return nodes;
|
|
39
|
-
}
|
|
27
|
+
export const replaceChildren = applyFn('replaceChildren');
|
|
28
|
+
export const prepend = applyFn('prepend');
|
|
29
|
+
export const append = applyFn('append');
|
|
30
|
+
export const before = applyFn('before');
|
|
31
|
+
export const after = applyFn('after');
|
|
40
32
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
$(ref).after(...nodes);
|
|
50
|
-
return nodes;
|
|
33
|
+
function applyFn(fn) {
|
|
34
|
+
return function (ref, element) {
|
|
35
|
+
const nodes = toNodes(isString(element) ? fragment(element) : element);
|
|
36
|
+
if (nodes.length) {
|
|
37
|
+
$(ref)[fn](...nodes);
|
|
38
|
+
}
|
|
39
|
+
return unwrapSingle(nodes);
|
|
40
|
+
};
|
|
51
41
|
}
|
|
52
42
|
|
|
53
43
|
export function remove(element) {
|
|
@@ -80,29 +70,21 @@ export function unwrap(element) {
|
|
|
80
70
|
toNodes(element)
|
|
81
71
|
.map(parent)
|
|
82
72
|
.filter((value, index, self) => self.indexOf(value) === index)
|
|
83
|
-
.forEach((parent) =>
|
|
84
|
-
before(parent, parent.childNodes);
|
|
85
|
-
remove(parent);
|
|
86
|
-
});
|
|
73
|
+
.forEach((parent) => parent.replaceWith(...parent.childNodes));
|
|
87
74
|
}
|
|
88
75
|
|
|
89
|
-
const fragmentRe = /^\s*<(\w+|!)[^>]*>/;
|
|
90
|
-
const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
|
|
91
|
-
|
|
92
76
|
export function fragment(html) {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const container = document.createElement('div');
|
|
99
|
-
if (fragmentRe.test(html)) {
|
|
100
|
-
container.insertAdjacentHTML('beforeend', html.trim());
|
|
101
|
-
} else {
|
|
102
|
-
container.textContent = html;
|
|
77
|
+
const template = document.createElement('template');
|
|
78
|
+
template.innerHTML = html.trim();
|
|
79
|
+
const nodes = toNodes(template.content.childNodes);
|
|
80
|
+
for (const node of nodes) {
|
|
81
|
+
document.adoptNode(node);
|
|
103
82
|
}
|
|
83
|
+
return unwrapSingle(nodes);
|
|
84
|
+
}
|
|
104
85
|
|
|
105
|
-
|
|
86
|
+
function unwrapSingle(nodes) {
|
|
87
|
+
return nodes.length > 1 ? nodes : nodes[0];
|
|
106
88
|
}
|
|
107
89
|
|
|
108
90
|
export function apply(node, fn) {
|
package/src/js/util/lang.js
CHANGED
|
@@ -21,19 +21,19 @@ function toUpper(_, c) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function startsWith(str, search) {
|
|
24
|
-
return str
|
|
24
|
+
return str?.startsWith?.(search);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export function endsWith(str, search) {
|
|
28
|
-
return str
|
|
28
|
+
return str?.endsWith?.(search);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export function includes(obj, search) {
|
|
32
|
-
return obj
|
|
32
|
+
return obj?.includes?.(search);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export function findIndex(array, predicate) {
|
|
36
|
-
return array
|
|
36
|
+
return array?.findIndex?.(predicate);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export const { isArray, from: toArray } = Array;
|
|
@@ -128,8 +128,9 @@ export function toWindow(element) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
element = toNode(element);
|
|
131
|
+
const document = isDocument(element) ? element : element?.ownerDocument;
|
|
131
132
|
|
|
132
|
-
return
|
|
133
|
+
return document?.defaultView || window;
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
export function toMs(time) {
|
|
@@ -216,7 +217,7 @@ export const Dimensions = {
|
|
|
216
217
|
},
|
|
217
218
|
|
|
218
219
|
contain(dimensions, maxDimensions) {
|
|
219
|
-
dimensions =
|
|
220
|
+
dimensions = { ...dimensions };
|
|
220
221
|
|
|
221
222
|
each(
|
|
222
223
|
dimensions,
|
package/src/js/util/options.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
assign,
|
|
3
|
-
hasOwn,
|
|
4
|
-
includes,
|
|
5
|
-
isArray,
|
|
6
|
-
isFunction,
|
|
7
|
-
isUndefined,
|
|
8
|
-
sortBy,
|
|
9
|
-
startsWith,
|
|
10
|
-
} from './lang';
|
|
1
|
+
import { hasOwn, includes, isArray, isFunction, isUndefined, sortBy, startsWith } from './lang';
|
|
11
2
|
|
|
12
3
|
const strats = {};
|
|
13
4
|
|
|
@@ -48,7 +39,7 @@ strats.props = function (parentVal, childVal) {
|
|
|
48
39
|
|
|
49
40
|
// extend strategy
|
|
50
41
|
strats.computed = strats.methods = function (parentVal, childVal) {
|
|
51
|
-
return childVal ? (parentVal ?
|
|
42
|
+
return childVal ? (parentVal ? { ...parentVal, ...childVal } : childVal) : parentVal;
|
|
52
43
|
};
|
|
53
44
|
|
|
54
45
|
// data strategy
|