uikit 3.9.5-dev.43d9beccd → 3.9.5-dev.4839a0a03
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 +1 -0
- package/dist/css/uikit-core-rtl.css +1 -1
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +1 -1
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +1 -1
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +1 -1
- 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 +1 -1
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1 -1
- 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 +1 -1
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +1 -1
- 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 +1 -1
- 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 +33 -97
- 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 +33 -97
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/core/img.js +33 -87
- package/tests/image.html +14 -40
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.9.5-dev.
|
|
5
|
+
"version": "3.9.5-dev.4839a0a03",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/core/img.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {attr, children, createEvent, css, data, escape, includes, isUndefined, parent, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
|
|
@@ -6,8 +6,6 @@ export default {
|
|
|
6
6
|
|
|
7
7
|
props: {
|
|
8
8
|
dataSrc: String,
|
|
9
|
-
width: Number,
|
|
10
|
-
height: Number,
|
|
11
9
|
offsetTop: String,
|
|
12
10
|
offsetLeft: String,
|
|
13
11
|
target: String
|
|
@@ -15,8 +13,6 @@ export default {
|
|
|
15
13
|
|
|
16
14
|
data: {
|
|
17
15
|
dataSrc: '',
|
|
18
|
-
width: false,
|
|
19
|
-
height: false,
|
|
20
16
|
offsetTop: '50vh',
|
|
21
17
|
offsetLeft: '50vw',
|
|
22
18
|
target: false
|
|
@@ -24,10 +20,6 @@ export default {
|
|
|
24
20
|
|
|
25
21
|
computed: {
|
|
26
22
|
|
|
27
|
-
cacheKey({dataSrc}) {
|
|
28
|
-
return `${this.$name}.${dataSrc}`;
|
|
29
|
-
},
|
|
30
|
-
|
|
31
23
|
target: {
|
|
32
24
|
|
|
33
25
|
get({target}) {
|
|
@@ -38,36 +30,20 @@ export default {
|
|
|
38
30
|
this.observe();
|
|
39
31
|
}
|
|
40
32
|
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
offsetTop({offsetTop}) {
|
|
44
|
-
return toPx(offsetTop, 'height');
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
offsetLeft({offsetLeft}) {
|
|
48
|
-
return toPx(offsetLeft, 'width');
|
|
49
33
|
}
|
|
50
34
|
|
|
51
35
|
},
|
|
52
36
|
|
|
53
37
|
connected() {
|
|
54
38
|
|
|
55
|
-
if (window.IntersectionObserver) {
|
|
39
|
+
if (!window.IntersectionObserver) {
|
|
56
40
|
setSrcAttrs(this.$el, this.dataSrc);
|
|
57
41
|
return;
|
|
58
42
|
}
|
|
59
43
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
attr(this.$el, 'src', getPlaceholderImage(this.$el));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
this.observer = new IntersectionObserver(this.load, {
|
|
67
|
-
rootMargin: `${this.offsetTop}px ${this.offsetLeft}px`
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
requestAnimationFrame(this.observe);
|
|
44
|
+
const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(this.offsetLeft, 'width')}px`;
|
|
45
|
+
this.observer = new IntersectionObserver(this.load, {rootMargin});
|
|
46
|
+
this.observe();
|
|
71
47
|
|
|
72
48
|
},
|
|
73
49
|
|
|
@@ -83,15 +59,13 @@ export default {
|
|
|
83
59
|
return false;
|
|
84
60
|
}
|
|
85
61
|
|
|
86
|
-
if (!image && document.readyState === 'complete') {
|
|
87
|
-
this.load(this.observer.takeRecords());
|
|
88
|
-
}
|
|
89
|
-
|
|
90
62
|
if (isImg(this.$el)) {
|
|
91
63
|
return false;
|
|
92
64
|
}
|
|
93
65
|
|
|
94
|
-
image && image.
|
|
66
|
+
if (image && image.currentSrc !== '') {
|
|
67
|
+
setSrcAttrs(this.$el, currentSrc(image));
|
|
68
|
+
}
|
|
95
69
|
|
|
96
70
|
},
|
|
97
71
|
|
|
@@ -123,13 +97,12 @@ export default {
|
|
|
123
97
|
return;
|
|
124
98
|
}
|
|
125
99
|
|
|
126
|
-
this._data.image
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
storage[this.cacheKey] = currentSrc(img);
|
|
130
|
-
return img;
|
|
100
|
+
if (this._data.image) {
|
|
101
|
+
return this._data.image;
|
|
102
|
+
}
|
|
131
103
|
|
|
132
|
-
|
|
104
|
+
this._data.image = isImg(this.$el) ? this.$el : getImageFromElement(this.$el, this.dataSrc);
|
|
105
|
+
setSrcAttrs(this.$el, currentSrc(this._data.image));
|
|
133
106
|
|
|
134
107
|
this.observer.disconnect();
|
|
135
108
|
},
|
|
@@ -144,19 +117,12 @@ export default {
|
|
|
144
117
|
|
|
145
118
|
};
|
|
146
119
|
|
|
147
|
-
const srcProps = ['data-src', 'data-srcset', 'sizes'];
|
|
148
120
|
function setSrcAttrs(el, src) {
|
|
149
121
|
|
|
150
|
-
const parentNode = parent(el);
|
|
151
122
|
if (isImg(el)) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (value) {
|
|
156
|
-
attr(el, prop.replace(/^(data-)+/, ''), value);
|
|
157
|
-
}
|
|
158
|
-
})
|
|
159
|
-
);
|
|
123
|
+
const parentNode = parent(el);
|
|
124
|
+
const elements = isPicture(parentNode) ? children(parentNode) : [el];
|
|
125
|
+
elements.forEach(setSourceProps);
|
|
160
126
|
src && attr(el, 'src', src);
|
|
161
127
|
} else if (src) {
|
|
162
128
|
|
|
@@ -170,16 +136,26 @@ function setSrcAttrs(el, src) {
|
|
|
170
136
|
|
|
171
137
|
}
|
|
172
138
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
139
|
+
const srcProps = ['data-src', 'data-srcset', 'sizes'];
|
|
140
|
+
function setSourceProps(sourceEl, targetEl) {
|
|
141
|
+
srcProps.forEach(prop => {
|
|
142
|
+
const value = data(sourceEl, prop);
|
|
143
|
+
if (value) {
|
|
144
|
+
attr(targetEl || sourceEl, prop.replace(/^(data-)+/, ''), value);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function getImageFromElement(el, src) {
|
|
177
150
|
|
|
178
|
-
if (
|
|
179
|
-
|
|
151
|
+
if (!src) {
|
|
152
|
+
return false;
|
|
180
153
|
}
|
|
181
154
|
|
|
182
|
-
|
|
155
|
+
const img = new Image();
|
|
156
|
+
setSourceProps(el, img);
|
|
157
|
+
attr(img, 'src', src);
|
|
158
|
+
return img;
|
|
183
159
|
}
|
|
184
160
|
|
|
185
161
|
const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
|
|
@@ -198,24 +174,6 @@ function sizesToPixel(sizes) {
|
|
|
198
174
|
return matches || '100vw';
|
|
199
175
|
}
|
|
200
176
|
|
|
201
|
-
function getImageFromElement(el, src) {
|
|
202
|
-
const parentNode = parent(el);
|
|
203
|
-
|
|
204
|
-
if (!src) {
|
|
205
|
-
return Promise.reject(createEvent('error', false));
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if (!isPicture(parentNode)) {
|
|
209
|
-
return getImage(src, ...srcProps.slice(1).map(prop => data(el, prop)));
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return new Promise((resolve, reject) => {
|
|
213
|
-
const picture = parentNode.cloneNode(true);
|
|
214
|
-
once(picture, 'load error', e => e.type === 'error' ? reject(e) : resolve(e.target), true);
|
|
215
|
-
setSrcAttrs($('img', picture));
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
|
|
219
177
|
const sizeRe = /\d+(?:\w+|%)/g;
|
|
220
178
|
const additionRe = /[+-]?(\d+)/g;
|
|
221
179
|
function evaluateSize(size) {
|
|
@@ -252,15 +210,3 @@ function isA(el, tagName) {
|
|
|
252
210
|
function currentSrc(el) {
|
|
253
211
|
return el.currentSrc || el.src;
|
|
254
212
|
}
|
|
255
|
-
|
|
256
|
-
const key = '__test__';
|
|
257
|
-
let storage;
|
|
258
|
-
|
|
259
|
-
// workaround for Safari's private browsing mode and accessing sessionStorage in Blink
|
|
260
|
-
try {
|
|
261
|
-
storage = window.sessionStorage || {};
|
|
262
|
-
storage[key] = 1;
|
|
263
|
-
delete storage[key];
|
|
264
|
-
} catch (e) {
|
|
265
|
-
storage = {};
|
|
266
|
-
}
|
package/tests/image.html
CHANGED
|
@@ -14,8 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
<h1>Image</h1>
|
|
16
16
|
|
|
17
|
-
<p><button class="uk-button uk-button-default" onclick="sessionStorage.clear()">Clear Session Storage</button></p>
|
|
18
|
-
|
|
19
17
|
<div class="uk-child-width-1-2@m" uk-grid>
|
|
20
18
|
<div>
|
|
21
19
|
<img data-src="https://images.unsplash.com/photo-1522201949034-507737bce479?fit=crop&w=900&h=600&q=80" width="900" height="600" alt="" uk-img>
|
|
@@ -255,28 +253,28 @@
|
|
|
255
253
|
|
|
256
254
|
<ul class="uk-slideshow-items">
|
|
257
255
|
<li>
|
|
258
|
-
<img data-src="images/photo.jpg" alt="" uk-cover
|
|
256
|
+
<img data-src="images/photo.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !.uk-slideshow-items > :last-child, !* +*">
|
|
259
257
|
<div class="uk-position-center uk-position-small uk-text-center">
|
|
260
258
|
<h2 uk-slideshow-parallax="x: 100,-100">Heading</h2>
|
|
261
259
|
<p uk-slideshow-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
|
|
262
260
|
</div>
|
|
263
261
|
</li>
|
|
264
262
|
<li>
|
|
265
|
-
<img data-src="images/dark.jpg" alt="" uk-cover
|
|
263
|
+
<img data-src="images/dark.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !* -*, !* +*">
|
|
266
264
|
<div class="uk-position-center uk-position-small uk-text-center">
|
|
267
265
|
<h2 uk-slideshow-parallax="x: 100,-100">Heading</h2>
|
|
268
266
|
<p uk-slideshow-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
|
|
269
267
|
</div>
|
|
270
268
|
</li>
|
|
271
269
|
<li>
|
|
272
|
-
<img data-src="images/light.jpg" alt="" uk-cover
|
|
270
|
+
<img data-src="images/light.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !* -*, !* +*">
|
|
273
271
|
<div class="uk-position-center uk-position-small uk-text-center">
|
|
274
272
|
<h2 uk-slideshow-parallax="y: -50,0,0; opacity: 1,1,0">Heading</h2>
|
|
275
273
|
<p uk-slideshow-parallax="y: 50,0,0; opacity: 1,1,0">Lorem ipsum dolor sit amet.</p>
|
|
276
274
|
</div>
|
|
277
275
|
</li>
|
|
278
276
|
<li>
|
|
279
|
-
<img data-src="images/photo2.jpg" alt="" uk-cover
|
|
277
|
+
<img data-src="images/photo2.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !* -*, !.uk-slideshow-items > :first-child">
|
|
280
278
|
<div class="uk-position-center uk-position-small uk-text-center">
|
|
281
279
|
<h2 uk-slideshow-parallax="x: 200,0,0">Heading</h2>
|
|
282
280
|
<p uk-slideshow-parallax="x: 0,0,-200">Lorem ipsum dolor sit amet.</p>
|
|
@@ -296,43 +294,43 @@
|
|
|
296
294
|
|
|
297
295
|
<ul class="uk-slider-items uk-child-width-1-2@s uk-child-width-1-3@m">
|
|
298
296
|
<li>
|
|
299
|
-
<img data-src="images/slider1.jpg" alt=""
|
|
297
|
+
<img data-src="images/slider1.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
300
298
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">1</h1></div>
|
|
301
299
|
</li>
|
|
302
300
|
<li>
|
|
303
|
-
<img data-src="images/slider2.jpg" alt=""
|
|
301
|
+
<img data-src="images/slider2.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
304
302
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">2</h1></div>
|
|
305
303
|
</li>
|
|
306
304
|
<li>
|
|
307
|
-
<img data-src="images/slider3.jpg" alt=""
|
|
305
|
+
<img data-src="images/slider3.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
308
306
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">3</h1></div>
|
|
309
307
|
</li>
|
|
310
308
|
<li>
|
|
311
|
-
<img data-src="images/slider4.jpg" alt=""
|
|
309
|
+
<img data-src="images/slider4.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
312
310
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">4</h1></div>
|
|
313
311
|
</li>
|
|
314
312
|
<li>
|
|
315
|
-
<img data-src="images/slider5.jpg" alt=""
|
|
313
|
+
<img data-src="images/slider5.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
316
314
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">5</h1></div>
|
|
317
315
|
</li>
|
|
318
316
|
<li>
|
|
319
|
-
<img data-src="images/slider1.jpg" alt=""
|
|
317
|
+
<img data-src="images/slider1.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
320
318
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">6</h1></div>
|
|
321
319
|
</li>
|
|
322
320
|
<li>
|
|
323
|
-
<img data-src="images/slider2.jpg" alt=""
|
|
321
|
+
<img data-src="images/slider2.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
324
322
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">7</h1></div>
|
|
325
323
|
</li>
|
|
326
324
|
<li>
|
|
327
|
-
<img data-src="images/slider3.jpg" alt=""
|
|
325
|
+
<img data-src="images/slider3.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
328
326
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">8</h1></div>
|
|
329
327
|
</li>
|
|
330
328
|
<li>
|
|
331
|
-
<img data-src="images/slider4.jpg" alt=""
|
|
329
|
+
<img data-src="images/slider4.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
332
330
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">9</h1></div>
|
|
333
331
|
</li>
|
|
334
332
|
<li>
|
|
335
|
-
<img data-src="images/slider5.jpg" alt=""
|
|
333
|
+
<img data-src="images/slider5.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
|
|
336
334
|
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">10</h1></div>
|
|
337
335
|
</li>
|
|
338
336
|
</ul>
|
|
@@ -364,30 +362,6 @@
|
|
|
364
362
|
<td>''</td>
|
|
365
363
|
<td>The image's `src` attribute.</td>
|
|
366
364
|
</tr>
|
|
367
|
-
<tr>
|
|
368
|
-
<td><code>dataSrcset</code></td>
|
|
369
|
-
<td>String</td>
|
|
370
|
-
<td>false</td>
|
|
371
|
-
<td>The image's `srcset` attribute.</td>
|
|
372
|
-
</tr>
|
|
373
|
-
<tr>
|
|
374
|
-
<td><code>sizes</code></td>
|
|
375
|
-
<td>String</td>
|
|
376
|
-
<td>false</td>
|
|
377
|
-
<td>The image's `sizes` attribute.</td>
|
|
378
|
-
</tr>
|
|
379
|
-
<tr>
|
|
380
|
-
<td><code>width</code></td>
|
|
381
|
-
<td>String</td>
|
|
382
|
-
<td>false</td>
|
|
383
|
-
<td>The image's `width` attribute. It will be used to determine the placeholder's width and the images position in the document.</td>
|
|
384
|
-
</tr>
|
|
385
|
-
<tr>
|
|
386
|
-
<td><code>height</code></td>
|
|
387
|
-
<td>String</td>
|
|
388
|
-
<td>false</td>
|
|
389
|
-
<td>The image's `height` attribute. It will be used to determine the placeholder's height and the images position in the document.</td>
|
|
390
|
-
</tr>
|
|
391
365
|
<tr>
|
|
392
366
|
<td><code>offsetTop</code></td>
|
|
393
367
|
<td>String</td>
|