uikit 3.11.2-dev.3dfa2c50b → 3.11.2-dev.45194f70c
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 +40 -19
- package/dist/css/uikit-core-rtl.css +86 -185
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +86 -185
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +88 -191
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +88 -191
- 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 +29 -68
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +30 -70
- 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 +115 -78
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +115 -78
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +79 -58
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +115 -78
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +35 -29
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +5 -7
- 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 +1 -1
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +408 -326
- 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 +646 -528
- 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 +3 -3
- package/src/js/api/state.js +34 -1
- 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 +18 -0
- 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 +1 -2
- package/src/js/components/slider.js +60 -43
- package/src/js/components/slideshow.js +8 -1
- package/src/js/components/sortable.js +1 -1
- package/src/js/core/accordion.js +6 -1
- package/src/js/core/alert.js +1 -2
- package/src/js/core/core.js +2 -21
- package/src/js/core/cover.js +5 -1
- package/src/js/core/drop.js +3 -1
- package/src/js/core/form-custom.js +2 -2
- package/src/js/core/height-viewport.js +3 -0
- package/src/js/core/icon.js +13 -6
- package/src/js/core/img.js +131 -122
- package/src/js/core/modal.js +1 -2
- package/src/js/core/navbar.js +3 -3
- package/src/js/core/sticky.js +51 -57
- package/src/js/core/svg.js +10 -6
- package/src/js/core/switcher.js +6 -1
- package/src/js/core/toggle.js +5 -2
- package/src/js/core/video.js +13 -1
- package/src/js/mixin/internal/animate-slide.js +9 -12
- package/src/js/mixin/lazyload.js +16 -0
- package/src/js/mixin/parallax.js +116 -79
- package/src/js/mixin/slider.js +8 -22
- package/src/js/mixin/slideshow.js +2 -6
- package/src/js/mixin/togglable.js +1 -2
- package/src/js/util/ajax.js +15 -14
- package/src/js/util/animation.js +7 -12
- package/src/js/util/dimensions.js +4 -4
- package/src/js/util/dom.js +37 -31
- package/src/js/util/index.js +1 -0
- package/src/js/util/lang.js +7 -6
- package/src/js/util/observer.js +36 -0
- package/src/js/util/options.js +2 -11
- package/src/js/util/player.js +5 -4
- 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 +48 -95
- package/src/less/components/form.less +0 -1
- package/src/less/components/height.less +3 -0
- 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 +48 -95
- package/src/scss/components/form.scss +0 -1
- package/src/scss/components/height.scss +3 -0
- 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 +16 -7
- 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 +56 -71
- 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 +50 -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,
|
|
@@ -68,50 +68,44 @@ export default {
|
|
|
68
68
|
},
|
|
69
69
|
|
|
70
70
|
getCss(percent) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
{ transform: '', filter: '' }
|
|
77
|
-
);
|
|
71
|
+
const css = { transform: '', filter: '' };
|
|
72
|
+
for (const prop in this.props) {
|
|
73
|
+
this.props[prop](css, percent);
|
|
74
|
+
}
|
|
75
|
+
return css;
|
|
78
76
|
},
|
|
79
77
|
},
|
|
80
78
|
};
|
|
81
79
|
|
|
82
|
-
function transformFn(prop, el,
|
|
83
|
-
const unit = getUnit(
|
|
80
|
+
function transformFn(prop, el, stops) {
|
|
81
|
+
const unit = getUnit(stops) || { x: 'px', y: 'px', rotate: 'deg' }[prop] || '';
|
|
82
|
+
let transformFn;
|
|
84
83
|
|
|
85
84
|
if (prop === 'x' || prop === 'y') {
|
|
86
85
|
prop = `translate${ucfirst(prop)}`;
|
|
86
|
+
transformFn = (stop) => toFloat(toFloat(stop).toFixed(unit === 'px' ? 0 : 6));
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (steps.length === 1) {
|
|
92
|
-
steps.unshift(prop === 'scale' ? 1 : 0);
|
|
89
|
+
if (stops.length === 1) {
|
|
90
|
+
stops.unshift(prop === 'scale' ? 1 : 0);
|
|
93
91
|
}
|
|
94
92
|
|
|
95
|
-
|
|
96
|
-
let value = getValue(steps, percent);
|
|
93
|
+
stops = parseStops(stops, transformFn);
|
|
97
94
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
css.transform += ` ${prop}(${value}${unit})`;
|
|
95
|
+
return (css, percent) => {
|
|
96
|
+
css.transform += ` ${prop}(${getValue(stops, percent)}${unit})`;
|
|
103
97
|
};
|
|
104
98
|
}
|
|
105
99
|
|
|
106
|
-
function colorFn(prop, el,
|
|
107
|
-
if (
|
|
108
|
-
|
|
100
|
+
function colorFn(prop, el, stops) {
|
|
101
|
+
if (stops.length === 1) {
|
|
102
|
+
stops.unshift(getCssValue(el, prop, ''));
|
|
109
103
|
}
|
|
110
104
|
|
|
111
|
-
|
|
105
|
+
stops = parseStops(stops, (stop) => parseColor(el, stop));
|
|
112
106
|
|
|
113
107
|
return (css, percent) => {
|
|
114
|
-
const [start, end, p] =
|
|
108
|
+
const [start, end, p] = getStop(stops, percent);
|
|
115
109
|
const value = start
|
|
116
110
|
.map((value, i) => {
|
|
117
111
|
value += p * (end[i] - value);
|
|
@@ -131,85 +125,83 @@ function parseColor(el, color) {
|
|
|
131
125
|
.map(toFloat);
|
|
132
126
|
}
|
|
133
127
|
|
|
134
|
-
function filterFn(prop, el,
|
|
135
|
-
if (
|
|
136
|
-
|
|
128
|
+
function filterFn(prop, el, stops) {
|
|
129
|
+
if (stops.length === 1) {
|
|
130
|
+
stops.unshift(0);
|
|
137
131
|
}
|
|
138
132
|
|
|
139
|
-
const unit = getUnit(
|
|
133
|
+
const unit = getUnit(stops) || { blur: 'px', hue: 'deg' }[prop] || '%';
|
|
140
134
|
prop = { fopacity: 'opacity', hue: 'hue-rotate' }[prop] || prop;
|
|
141
|
-
|
|
135
|
+
stops = parseStops(stops);
|
|
142
136
|
|
|
143
137
|
return (css, percent) => {
|
|
144
|
-
const value = getValue(
|
|
138
|
+
const value = getValue(stops, percent);
|
|
145
139
|
css.filter += ` ${prop}(${value + unit})`;
|
|
146
140
|
};
|
|
147
141
|
}
|
|
148
142
|
|
|
149
|
-
function cssPropFn(prop, el,
|
|
150
|
-
if (
|
|
151
|
-
|
|
143
|
+
function cssPropFn(prop, el, stops) {
|
|
144
|
+
if (stops.length === 1) {
|
|
145
|
+
stops.unshift(getCssValue(el, prop, ''));
|
|
152
146
|
}
|
|
153
147
|
|
|
154
|
-
|
|
148
|
+
stops = parseStops(stops);
|
|
155
149
|
|
|
156
150
|
return (css, percent) => {
|
|
157
|
-
css[prop] = getValue(
|
|
151
|
+
css[prop] = getValue(stops, percent);
|
|
158
152
|
};
|
|
159
153
|
}
|
|
160
154
|
|
|
161
|
-
function strokeFn(prop, el,
|
|
162
|
-
if (
|
|
163
|
-
|
|
155
|
+
function strokeFn(prop, el, stops) {
|
|
156
|
+
if (stops.length === 1) {
|
|
157
|
+
stops.unshift(0);
|
|
164
158
|
}
|
|
165
159
|
|
|
166
|
-
const unit = getUnit(
|
|
167
|
-
|
|
160
|
+
const unit = getUnit(stops);
|
|
161
|
+
const length = getMaxPathLength(el);
|
|
162
|
+
stops = parseStops(stops.reverse(), (stop) => {
|
|
163
|
+
stop = toFloat(stop);
|
|
164
|
+
return unit === '%' ? (stop * length) / 100 : stop;
|
|
165
|
+
});
|
|
168
166
|
|
|
169
|
-
if (!
|
|
167
|
+
if (!stops.some(([value]) => value)) {
|
|
170
168
|
return noop;
|
|
171
169
|
}
|
|
172
170
|
|
|
173
|
-
const length = getMaxPathLength(el);
|
|
174
171
|
css(el, 'strokeDasharray', length);
|
|
175
172
|
|
|
176
|
-
if (unit === '%') {
|
|
177
|
-
steps = steps.map((step) => (step * length) / 100);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
steps = steps.reverse();
|
|
181
|
-
|
|
182
173
|
return (css, percent) => {
|
|
183
|
-
css.strokeDashoffset = getValue(
|
|
174
|
+
css.strokeDashoffset = getValue(stops, percent);
|
|
184
175
|
};
|
|
185
176
|
}
|
|
186
177
|
|
|
187
|
-
function backgroundFn(prop, el,
|
|
188
|
-
if (
|
|
189
|
-
|
|
178
|
+
function backgroundFn(prop, el, stops) {
|
|
179
|
+
if (stops.length === 1) {
|
|
180
|
+
stops.unshift(0);
|
|
190
181
|
}
|
|
191
182
|
|
|
192
183
|
prop = prop.substr(-1);
|
|
193
184
|
const attr = prop === 'y' ? 'height' : 'width';
|
|
194
|
-
|
|
185
|
+
stops = parseStops(stops, (stop) => toPx(stop, attr, el));
|
|
195
186
|
|
|
196
187
|
const bgPos = getCssValue(el, `background-position-${prop}`, '');
|
|
197
188
|
|
|
198
189
|
return getCssValue(el, 'backgroundSize', '') === 'cover'
|
|
199
|
-
? backgroundCoverFn(prop, el,
|
|
200
|
-
: setBackgroundPosFn(prop,
|
|
190
|
+
? backgroundCoverFn(prop, el, stops, bgPos, attr)
|
|
191
|
+
: setBackgroundPosFn(prop, stops, bgPos);
|
|
201
192
|
}
|
|
202
193
|
|
|
203
|
-
function backgroundCoverFn(prop, el,
|
|
194
|
+
function backgroundCoverFn(prop, el, stops, bgPos, attr) {
|
|
204
195
|
const dimImage = getBackgroundImageDimensions(el);
|
|
205
196
|
|
|
206
197
|
if (!dimImage.width) {
|
|
207
198
|
return noop;
|
|
208
199
|
}
|
|
209
200
|
|
|
210
|
-
const
|
|
211
|
-
const
|
|
212
|
-
const
|
|
201
|
+
const values = stops.map(([value]) => value);
|
|
202
|
+
const min = Math.min(...values);
|
|
203
|
+
const max = Math.max(...values);
|
|
204
|
+
const down = values.indexOf(min) < values.indexOf(max);
|
|
213
205
|
|
|
214
206
|
const diff = max - min;
|
|
215
207
|
let pos = (down ? -diff : 0) - (down ? min : max);
|
|
@@ -234,7 +226,7 @@ function backgroundCoverFn(prop, el, steps, bgPos, attr) {
|
|
|
234
226
|
|
|
235
227
|
const dim = Dimensions.cover(dimImage, dimEl);
|
|
236
228
|
|
|
237
|
-
const fn = setBackgroundPosFn(prop,
|
|
229
|
+
const fn = setBackgroundPosFn(prop, stops, `${pos}px`);
|
|
238
230
|
return (css, percent) => {
|
|
239
231
|
fn(css, percent);
|
|
240
232
|
css.backgroundSize = `${dim.width}px ${dim.height}px`;
|
|
@@ -242,9 +234,9 @@ function backgroundCoverFn(prop, el, steps, bgPos, attr) {
|
|
|
242
234
|
};
|
|
243
235
|
}
|
|
244
236
|
|
|
245
|
-
function setBackgroundPosFn(prop,
|
|
237
|
+
function setBackgroundPosFn(prop, stops, pos) {
|
|
246
238
|
return function (css, percent) {
|
|
247
|
-
css[`background-position-${prop}`] = `calc(${pos} + ${getValue(
|
|
239
|
+
css[`background-position-${prop}`] = `calc(${pos} + ${getValue(stops, percent)}px)`;
|
|
248
240
|
};
|
|
249
241
|
}
|
|
250
242
|
|
|
@@ -265,6 +257,7 @@ function getBackgroundImageDimensions(el) {
|
|
|
265
257
|
dimensions[src] = toDimensions(image);
|
|
266
258
|
trigger(el, 'bgimageload');
|
|
267
259
|
};
|
|
260
|
+
return toDimensions(image);
|
|
268
261
|
}
|
|
269
262
|
}
|
|
270
263
|
|
|
@@ -278,27 +271,71 @@ function toDimensions(image) {
|
|
|
278
271
|
};
|
|
279
272
|
}
|
|
280
273
|
|
|
281
|
-
function
|
|
282
|
-
const
|
|
283
|
-
const
|
|
274
|
+
function parseStops(stops, fn = toFloat) {
|
|
275
|
+
const result = [];
|
|
276
|
+
const { length } = stops;
|
|
277
|
+
let nullIndex = 0;
|
|
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
|
+
if (percent === null) {
|
|
301
|
+
nullIndex++;
|
|
302
|
+
} else if (nullIndex) {
|
|
303
|
+
const leftPercent = result[i - nullIndex - 1][1];
|
|
304
|
+
const p = (percent - leftPercent) / (nullIndex + 1);
|
|
305
|
+
for (let j = nullIndex; j > 0; j--) {
|
|
306
|
+
result[i - j][1] = leftPercent + p * (nullIndex - j + 1);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
nullIndex = 0;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return result;
|
|
314
|
+
}
|
|
284
315
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
316
|
+
function getStop(stops, percent) {
|
|
317
|
+
const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;
|
|
318
|
+
return [
|
|
319
|
+
stops[index - 1][0],
|
|
320
|
+
stops[index][0],
|
|
321
|
+
(percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1]),
|
|
322
|
+
];
|
|
288
323
|
}
|
|
289
324
|
|
|
290
|
-
function getValue(
|
|
291
|
-
const [start, end, p] =
|
|
325
|
+
function getValue(stops, percent) {
|
|
326
|
+
const [start, end, p] = getStop(stops, percent);
|
|
292
327
|
return isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;
|
|
293
328
|
}
|
|
294
329
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
330
|
+
const unitRe = /^-?\d+([^\s]*)/;
|
|
331
|
+
function getUnit(stops, defaultUnit) {
|
|
332
|
+
for (const stop of stops) {
|
|
333
|
+
const match = stop.match?.(unitRe);
|
|
334
|
+
if (match) {
|
|
335
|
+
return match[1];
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return defaultUnit;
|
|
302
339
|
}
|
|
303
340
|
|
|
304
341
|
function getCssValue(el, prop, value) {
|
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,
|
|
@@ -83,12 +82,6 @@ export default {
|
|
|
83
82
|
},
|
|
84
83
|
},
|
|
85
84
|
|
|
86
|
-
events: {
|
|
87
|
-
itemshown() {
|
|
88
|
-
this.$update(this.list);
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
|
|
92
85
|
methods: {
|
|
93
86
|
show(index, force = false) {
|
|
94
87
|
if (this.dragging || !this.length) {
|
|
@@ -170,21 +163,14 @@ export default {
|
|
|
170
163
|
},
|
|
171
164
|
|
|
172
165
|
_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
|
-
);
|
|
166
|
+
this._transitioner = this._getTransitioner(prev, next, this.dir, {
|
|
167
|
+
easing: force
|
|
168
|
+
? next.offsetWidth < 600
|
|
169
|
+
? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */
|
|
170
|
+
: 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */
|
|
171
|
+
: this.easing,
|
|
172
|
+
...this.transitionOptions,
|
|
173
|
+
});
|
|
188
174
|
|
|
189
175
|
if (!force && !prev) {
|
|
190
176
|
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() {
|
|
@@ -28,10 +28,6 @@ export default {
|
|
|
28
28
|
},
|
|
29
29
|
|
|
30
30
|
events: {
|
|
31
|
-
'itemshow itemhide itemshown itemhidden'({ target }) {
|
|
32
|
-
this.$update(target);
|
|
33
|
-
},
|
|
34
|
-
|
|
35
31
|
beforeitemshow({ target }) {
|
|
36
32
|
addClass(target, this.clsActive);
|
|
37
33
|
},
|
|
@@ -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));
|
|
@@ -63,8 +60,12 @@ export function getImage(src, srcset, sizes) {
|
|
|
63
60
|
return new Promise((resolve, reject) => {
|
|
64
61
|
const img = new Image();
|
|
65
62
|
|
|
66
|
-
img.onerror = (e) =>
|
|
67
|
-
|
|
63
|
+
img.onerror = (e) => {
|
|
64
|
+
reject(e);
|
|
65
|
+
};
|
|
66
|
+
img.onload = () => {
|
|
67
|
+
resolve(img);
|
|
68
|
+
};
|
|
68
69
|
|
|
69
70
|
sizes && (img.sizes = sizes);
|
|
70
71
|
srcset && (img.srcset = srcset);
|
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
|
);
|
|
@@ -37,8 +37,8 @@ export function offset(element, coordinates) {
|
|
|
37
37
|
const currentOffset = dimensions(element);
|
|
38
38
|
|
|
39
39
|
if (element) {
|
|
40
|
-
const {
|
|
41
|
-
const offsetBy = { height:
|
|
40
|
+
const { scrollY, scrollX } = toWindow(element);
|
|
41
|
+
const offsetBy = { height: scrollY, width: scrollX };
|
|
42
42
|
|
|
43
43
|
for (const dir in dirs) {
|
|
44
44
|
for (const i in dirs[dir]) {
|
|
@@ -104,8 +104,8 @@ export function offsetPosition(element) {
|
|
|
104
104
|
|
|
105
105
|
if (css(element, 'position') === 'fixed') {
|
|
106
106
|
const win = toWindow(element);
|
|
107
|
-
offset[0] += win.
|
|
108
|
-
offset[1] += win.
|
|
107
|
+
offset[0] += win.scrollY;
|
|
108
|
+
offset[1] += win.scrollX;
|
|
109
109
|
return offset;
|
|
110
110
|
}
|
|
111
111
|
} while ((element = element.offsetParent));
|
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
|
-
}
|
|
40
|
-
|
|
41
|
-
export function before(ref, element) {
|
|
42
|
-
const nodes = $$(element);
|
|
43
|
-
$(ref).before(...nodes);
|
|
44
|
-
return nodes;
|
|
45
|
-
}
|
|
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');
|
|
46
32
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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) {
|
|
@@ -83,11 +73,27 @@ export function unwrap(element) {
|
|
|
83
73
|
.forEach((parent) => parent.replaceWith(...parent.childNodes));
|
|
84
74
|
}
|
|
85
75
|
|
|
76
|
+
const fragmentRe = /^\s*<(\w+|!)[^>]*>/;
|
|
77
|
+
const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
|
|
78
|
+
|
|
86
79
|
export function fragment(html) {
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
const matches = singleTagRe.exec(html);
|
|
81
|
+
if (matches) {
|
|
82
|
+
return document.createElement(matches[1]);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const container = document.createElement('div');
|
|
86
|
+
if (fragmentRe.test(html)) {
|
|
87
|
+
container.insertAdjacentHTML('beforeend', html.trim());
|
|
88
|
+
} else {
|
|
89
|
+
container.textContent = html;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return unwrapSingle(container.childNodes);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function unwrapSingle(nodes) {
|
|
96
|
+
return nodes.length > 1 ? nodes : nodes[0];
|
|
91
97
|
}
|
|
92
98
|
|
|
93
99
|
export function apply(node, fn) {
|
package/src/js/util/index.js
CHANGED
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,
|