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.
Files changed (44) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/css/uikit-core-rtl.css +1 -1
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +1 -1
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +1 -1
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +1 -1
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +1 -1
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +1 -1
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +1 -1
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +1 -1
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +1 -1
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +1 -1
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +1 -1
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +1 -1
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +1 -1
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +1 -1
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +33 -97
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +1 -1
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +33 -97
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/core/img.js +33 -87
  44. 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.43d9beccd",
5
+ "version": "3.9.5-dev.4839a0a03",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -1,4 +1,4 @@
1
- import {$, attr, children, createEvent, css, data, Dimensions, escape, getImage, includes, isUndefined, once, parent, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
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
- if (storage[this.cacheKey]) {
61
- setSrcAttrs(this.$el, storage[this.cacheKey]);
62
- } else if (isImg(this.$el) && this.width && this.height) {
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.then(img => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img)));
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 = getImageFromElement(this.$el, this.dataSrc).then(img => {
127
-
128
- setSrcAttrs(this.$el, currentSrc(img));
129
- storage[this.cacheKey] = currentSrc(img);
130
- return img;
100
+ if (this._data.image) {
101
+ return this._data.image;
102
+ }
131
103
 
132
- }, e => trigger(this.$el, new e.constructor(e.type, e)));
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
- (isPicture(parentNode) ? children(parentNode) : [el]).forEach(el =>
153
- srcProps.forEach(prop => {
154
- const value = data(el, prop);
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
- function getPlaceholderImage(el) {
174
- const sizes = data(el, 'sizes');
175
- let width = data(el, 'width');
176
- let height = data(el, 'height');
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 (sizes) {
179
- ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
151
+ if (!src) {
152
+ return false;
180
153
  }
181
154
 
182
- return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"></svg>`;
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 data-width="1800" data-height="1200" uk-img="target: !.uk-slideshow-items > :last-child, !* +*">
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 data-width="1800" data-height="1200" uk-img="target: !* -*, !* +*">
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 data-width="1800" data-height="1200" uk-img="target: !* -*, !* +*">
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 data-width="1800" data-height="1200" uk-img="target: !* -*, !.uk-slideshow-items > :first-child">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
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>