uikit 3.11.2-dev.c08a5b5f0 → 3.11.2-dev.d8c101f07

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 (157) hide show
  1. package/.eslintrc.json +4 -49
  2. package/.prettierignore +14 -0
  3. package/.prettierrc.json +13 -0
  4. package/.webstorm.js +3 -3
  5. package/CHANGELOG.md +5 -15
  6. package/build/.eslintrc.json +1 -3
  7. package/build/build.js +26 -28
  8. package/build/icons.js +7 -11
  9. package/build/less.js +48 -36
  10. package/build/package.json +2 -2
  11. package/build/prefix.js +21 -18
  12. package/build/publishDev.js +6 -8
  13. package/build/release.js +20 -17
  14. package/build/scope.js +21 -11
  15. package/build/scss.js +72 -39
  16. package/build/util.js +71 -62
  17. package/build/wrapper/icons.js +0 -2
  18. package/dist/css/uikit-core-rtl.css +1 -1
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +1 -1
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +1 -1
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +1 -1
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +88 -133
  27. package/dist/js/components/countdown.min.js +1 -1
  28. package/dist/js/components/filter.js +408 -439
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1098 -1316
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1144 -1393
  33. package/dist/js/components/lightbox.min.js +1 -1
  34. package/dist/js/components/notification.js +94 -114
  35. package/dist/js/components/notification.min.js +1 -1
  36. package/dist/js/components/parallax.js +294 -345
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +292 -344
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +722 -852
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +292 -344
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +609 -834
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +587 -620
  47. package/dist/js/components/sortable.min.js +1 -1
  48. package/dist/js/components/tooltip.js +324 -356
  49. package/dist/js/components/tooltip.min.js +1 -1
  50. package/dist/js/components/upload.js +155 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5244 -6600
  53. package/dist/js/uikit-core.min.js +1 -1
  54. package/dist/js/uikit-icons.js +7 -9
  55. package/dist/js/uikit-icons.min.js +1 -1
  56. package/dist/js/uikit.js +8041 -9907
  57. package/dist/js/uikit.min.js +1 -1
  58. package/jsconfig.json +1 -1
  59. package/package.json +64 -60
  60. package/src/js/api/boot.js +25 -32
  61. package/src/js/api/component.js +15 -28
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +14 -33
  64. package/src/js/api/instance.js +7 -15
  65. package/src/js/api/state.js +65 -82
  66. package/src/js/components/countdown.js +24 -50
  67. package/src/js/components/filter.js +70 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +14 -25
  70. package/src/js/components/internal/slider-transitioner.js +66 -45
  71. package/src/js/components/internal/slideshow-animations.js +46 -64
  72. package/src/js/components/lightbox-panel.js +107 -105
  73. package/src/js/components/lightbox.js +17 -39
  74. package/src/js/components/notification.js +49 -43
  75. package/src/js/components/parallax.js +16 -30
  76. package/src/js/components/slider-parallax.js +13 -23
  77. package/src/js/components/slider.js +75 -64
  78. package/src/js/components/slideshow-parallax.js +1 -1
  79. package/src/js/components/slideshow.js +8 -44
  80. package/src/js/components/sortable.js +125 -106
  81. package/src/js/components/tooltip.js +41 -31
  82. package/src/js/components/upload.js +52 -63
  83. package/src/js/core/accordion.js +53 -48
  84. package/src/js/core/alert.js +9 -17
  85. package/src/js/core/core.js +74 -53
  86. package/src/js/core/cover.js +11 -15
  87. package/src/js/core/drop.js +106 -92
  88. package/src/js/core/form-custom.js +20 -25
  89. package/src/js/core/gif.js +3 -7
  90. package/src/js/core/grid.js +57 -58
  91. package/src/js/core/height-match.js +16 -29
  92. package/src/js/core/height-viewport.js +28 -35
  93. package/src/js/core/icon.js +38 -50
  94. package/src/js/core/img.js +133 -152
  95. package/src/js/core/index.js +39 -39
  96. package/src/js/core/leader.js +9 -18
  97. package/src/js/core/margin.js +21 -37
  98. package/src/js/core/modal.js +49 -36
  99. package/src/js/core/nav.js +2 -4
  100. package/src/js/core/navbar.js +112 -88
  101. package/src/js/core/offcanvas.js +49 -53
  102. package/src/js/core/overflow-auto.js +13 -17
  103. package/src/js/core/responsive.js +14 -12
  104. package/src/js/core/scroll.js +10 -20
  105. package/src/js/core/scrollspy-nav.js +34 -31
  106. package/src/js/core/scrollspy.js +37 -54
  107. package/src/js/core/sticky.js +130 -91
  108. package/src/js/core/svg.js +60 -79
  109. package/src/js/core/switcher.js +47 -46
  110. package/src/js/core/tab.js +7 -10
  111. package/src/js/core/toggle.js +64 -66
  112. package/src/js/core/video.js +11 -22
  113. package/src/js/mixin/animate.js +19 -20
  114. package/src/js/mixin/class.js +2 -4
  115. package/src/js/mixin/container.js +7 -11
  116. package/src/js/mixin/internal/animate-fade.js +73 -30
  117. package/src/js/mixin/internal/animate-slide.js +58 -41
  118. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  119. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  120. package/src/js/mixin/media.js +5 -10
  121. package/src/js/mixin/modal.js +89 -66
  122. package/src/js/mixin/parallax.js +53 -48
  123. package/src/js/mixin/position.js +26 -20
  124. package/src/js/mixin/slider-autoplay.js +12 -21
  125. package/src/js/mixin/slider-drag.js +64 -65
  126. package/src/js/mixin/slider-nav.js +26 -35
  127. package/src/js/mixin/slider-reactive.js +2 -8
  128. package/src/js/mixin/slider.js +48 -55
  129. package/src/js/mixin/slideshow.js +13 -19
  130. package/src/js/mixin/togglable.js +89 -63
  131. package/src/js/uikit-core.js +2 -4
  132. package/src/js/uikit.js +2 -4
  133. package/src/js/util/ajax.js +20 -39
  134. package/src/js/util/animation.js +77 -75
  135. package/src/js/util/attr.js +17 -21
  136. package/src/js/util/class.js +14 -52
  137. package/src/js/util/dimensions.js +56 -43
  138. package/src/js/util/dom.js +40 -73
  139. package/src/js/util/env.js +7 -12
  140. package/src/js/util/event.js +60 -59
  141. package/src/js/util/fastdom.js +1 -6
  142. package/src/js/util/filter.js +17 -34
  143. package/src/js/util/index.js +0 -1
  144. package/src/js/util/lang.js +81 -121
  145. package/src/js/util/mouse.js +19 -17
  146. package/src/js/util/options.js +32 -46
  147. package/src/js/util/player.js +40 -36
  148. package/src/js/util/position.js +54 -46
  149. package/src/js/util/selector.js +34 -49
  150. package/src/js/util/style.js +36 -46
  151. package/src/js/util/viewport.js +75 -64
  152. package/tests/image.html +37 -33
  153. package/tests/js/index.js +114 -85
  154. package/src/js/mixin/flex-bug.js +0 -56
  155. package/src/js/util/promise.js +0 -191
  156. package/tests/images/test.avif +0 -0
  157. package/tests/images/test.webp +0 -0
@@ -1,30 +1,39 @@
1
- import {css} from './style';
2
- import {Promise} from './promise';
3
- import {isVisible, parents} from './filter';
4
- import {offset, offsetPosition} from './dimensions';
5
- import {clamp, findIndex, intersectRect, isDocument, isUndefined, isWindow, toNode, toWindow} from './lang';
1
+ import { css } from './style';
2
+ import { isVisible, parents } from './filter';
3
+ import { offset, offsetPosition } from './dimensions';
4
+ import {
5
+ clamp,
6
+ findIndex,
7
+ intersectRect,
8
+ isDocument,
9
+ isUndefined,
10
+ isWindow,
11
+ toNode,
12
+ toWindow,
13
+ } from './lang';
6
14
 
7
15
  export function isInView(element, offsetTop = 0, offsetLeft = 0) {
8
-
9
16
  if (!isVisible(element)) {
10
17
  return false;
11
18
  }
12
19
 
13
- return intersectRect(...scrollParents(element).map(parent => {
14
-
15
- const {top, left, bottom, right} = offset(getViewport(parent));
16
-
17
- return {
18
- top: top - offsetTop,
19
- left: left - offsetLeft,
20
- bottom: bottom + offsetTop,
21
- right: right + offsetLeft
22
- };
23
- }).concat(offset(element)));
20
+ return intersectRect(
21
+ ...scrollParents(element)
22
+ .map((parent) => {
23
+ const { top, left, bottom, right } = offset(getViewport(parent));
24
+
25
+ return {
26
+ top: top - offsetTop,
27
+ left: left - offsetLeft,
28
+ bottom: bottom + offsetTop,
29
+ right: right + offsetLeft,
30
+ };
31
+ })
32
+ .concat(offset(element))
33
+ );
24
34
  }
25
35
 
26
36
  export function scrollTop(element, top) {
27
-
28
37
  if (isWindow(element) || isDocument(element)) {
29
38
  element = getScrollingElement(element);
30
39
  } else {
@@ -38,49 +47,44 @@ export function scrollTop(element, top) {
38
47
  }
39
48
  }
40
49
 
41
- export function scrollIntoView(element, {offset: offsetBy = 0} = {}) {
42
-
50
+ export function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
43
51
  const parents = isVisible(element) ? scrollParents(element) : [];
44
- return parents.reduce((fn, scrollElement, i) => {
45
-
46
- const {scrollTop, scrollHeight, offsetHeight} = scrollElement;
47
- const maxScroll = scrollHeight - getViewportClientHeight(scrollElement);
48
- const {height: elHeight, top: elTop} = offset(parents[i - 1] || element);
49
-
50
- let top = Math.ceil(
51
- elTop
52
- - offset(getViewport(scrollElement)).top
53
- - offsetBy
54
- + scrollTop
55
- );
56
-
57
- if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {
58
- top += offsetBy;
59
- } else {
60
- offsetBy = 0;
61
- }
62
-
63
- if (top > maxScroll) {
64
- offsetBy -= top - maxScroll;
65
- top = maxScroll;
66
- } else if (top < 0) {
67
- offsetBy -= top;
68
- top = 0;
69
- }
70
-
71
- return () => scrollTo(scrollElement, top - scrollTop).then(fn);
72
-
73
- }, () => Promise.resolve())();
52
+ return parents.reduce(
53
+ (fn, scrollElement, i) => {
54
+ const { scrollTop, scrollHeight, offsetHeight } = scrollElement;
55
+ const maxScroll = scrollHeight - getViewportClientHeight(scrollElement);
56
+ const { height: elHeight, top: elTop } = offset(parents[i - 1] || element);
57
+
58
+ let top = Math.ceil(
59
+ elTop - offset(getViewport(scrollElement)).top - offsetBy + scrollTop
60
+ );
61
+
62
+ if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {
63
+ top += offsetBy;
64
+ } else {
65
+ offsetBy = 0;
66
+ }
67
+
68
+ if (top > maxScroll) {
69
+ offsetBy -= top - maxScroll;
70
+ top = maxScroll;
71
+ } else if (top < 0) {
72
+ offsetBy -= top;
73
+ top = 0;
74
+ }
75
+
76
+ return () => scrollTo(scrollElement, top - scrollTop).then(fn);
77
+ },
78
+ () => Promise.resolve()
79
+ )();
74
80
 
75
81
  function scrollTo(element, top) {
76
- return new Promise(resolve => {
77
-
82
+ return new Promise((resolve) => {
78
83
  const scroll = element.scrollTop;
79
84
  const duration = getDuration(Math.abs(top));
80
85
  const start = Date.now();
81
86
 
82
87
  (function step() {
83
-
84
88
  const percent = ease(clamp((Date.now() - start) / duration));
85
89
 
86
90
  scrollTop(element, scroll + top * percent);
@@ -91,29 +95,26 @@ export function scrollIntoView(element, {offset: offsetBy = 0} = {}) {
91
95
  } else {
92
96
  requestAnimationFrame(step);
93
97
  }
94
-
95
98
  })();
96
99
  });
97
100
  }
98
101
 
99
102
  function getDuration(dist) {
100
- return 40 * Math.pow(dist, .375);
103
+ return 40 * Math.pow(dist, 0.375);
101
104
  }
102
105
 
103
106
  function ease(k) {
104
107
  return 0.5 * (1 - Math.cos(Math.PI * k));
105
108
  }
106
-
107
109
  }
108
110
 
109
111
  export function scrolledOver(element, startOffset = 0, endOffset = 0) {
110
-
111
112
  if (!isVisible(element)) {
112
113
  return 0;
113
114
  }
114
115
 
115
116
  const [scrollElement] = scrollParents(element, /auto|scroll/, true);
116
- const {scrollHeight, scrollTop} = scrollElement;
117
+ const { scrollHeight, scrollTop } = scrollElement;
117
118
  const viewportHeight = getViewportClientHeight(scrollElement);
118
119
  const maxScroll = scrollHeight - viewportHeight;
119
120
  const elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];
@@ -130,14 +131,20 @@ export function scrollParents(element, overflowRe = /auto|scroll|hidden/, scroll
130
131
  let ancestors = parents(element).reverse();
131
132
  ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);
132
133
 
133
- const fixedIndex = findIndex(ancestors, el => css(el, 'position') === 'fixed');
134
+ const fixedIndex = findIndex(ancestors, (el) => css(el, 'position') === 'fixed');
134
135
  if (~fixedIndex) {
135
136
  ancestors = ancestors.slice(fixedIndex);
136
137
  }
137
138
 
138
- return [scrollEl].concat(ancestors.filter(parent =>
139
- overflowRe.test(css(parent, 'overflow')) && (!scrollable || parent.scrollHeight > getViewportClientHeight(parent)))
140
- ).reverse();
139
+ return [scrollEl]
140
+ .concat(
141
+ ancestors.filter(
142
+ (parent) =>
143
+ overflowRe.test(css(parent, 'overflow')) &&
144
+ (!scrollable || parent.scrollHeight > getViewportClientHeight(parent))
145
+ )
146
+ )
147
+ .reverse();
141
148
  }
142
149
 
143
150
  export function getViewport(scrollElement) {
@@ -146,10 +153,14 @@ export function getViewport(scrollElement) {
146
153
 
147
154
  // iOS 12 returns <body> as scrollingElement
148
155
  export function getViewportClientHeight(scrollElement) {
149
- return (scrollElement === getScrollingElement(scrollElement) ? document.documentElement : scrollElement).clientHeight;
156
+ return (
157
+ scrollElement === getScrollingElement(scrollElement)
158
+ ? document.documentElement
159
+ : scrollElement
160
+ ).clientHeight;
150
161
  }
151
162
 
152
163
  export function getScrollingElement(element) {
153
- const {document} = toWindow(element);
164
+ const { document } = toWindow(element);
154
165
  return document.scrollingElement || document.documentElement;
155
166
  }
package/tests/image.html CHANGED
@@ -14,7 +14,9 @@
14
14
 
15
15
  <h1>Image</h1>
16
16
 
17
- <div class="uk-child-width-1-2@m uk-background-secondary" uk-grid>
17
+ <p><button class="uk-button uk-button-default" onclick="sessionStorage.clear()">Clear Session Storage</button></p>
18
+
19
+ <div class="uk-child-width-1-2@m" uk-grid>
18
20
  <div>
19
21
  <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>
20
22
  </div>
@@ -23,17 +25,7 @@
23
25
  </div>
24
26
  </div>
25
27
 
26
- <div class="uk-background-primary">
27
- <picture>
28
- <source type="image/webp" sizes="(min-width: 780px) 780px" srcset="http://localhost/site/image?src=WyJzaXRlXC9pbWFnZXNcL2hvbWVcL3lvb3RoZW1lLXByby5qcGciLFtbInR5cGUiLFsid2VicCIsIjg1Il1dLFsiZG9SZXNpemUiLFs3ODEsNDg4LDc4MSw0ODhdXSxbImRvQ3JvcCIsWzc4MCw0ODgsMCwwXV1dXQ%3D%3D&amp;hash=9a3c6f9c 780w, /site/cache/images/yootheme-pro-5db7acab.webp 1560w">
29
- <img src="/site/cache/images/yootheme-pro-0d67d545.jpeg" width="780" height="488" alt="Introduction Video on using the YOOtheme Pro Page Builder for WordPress and Joomla">
30
- </picture>
31
- </div>
32
- <div class="uk-height-large uk-background-cover uk-margin-medium uk-flex uk-flex-center uk-flex-middle uk-light" data-src="https://images.unsplash.com/photo-1490822180406-880c226c150b?fit=crop&w=1200&h=450&q=80" data-sources="srcset: images/test.avif; type: image/avif" uk-img>
33
- <h1>Background Image</h1>
34
- </div>
35
-
36
- <div class="uk-height-large uk-background-cover uk-margin-medium uk-flex uk-flex-center uk-flex-middle uk-light" data-src="https://images.unsplash.com/photo-1490822180406-880c226c150b?fit=crop&w=1200&h=450&q=80" data-sources="[{&quot;srcset&quot;: &quot;images/test.avif&quot;, &quot;type&quot;: &quot;image/avif&quot;},{&quot;srcset&quot;: &quot;images/test.webp&quot;, &quot;type&quot;: &quot;image/webp&quot;}]" uk-img>
28
+ <div class="uk-height-large uk-background-cover uk-margin-medium uk-flex uk-flex-center uk-flex-middle uk-light" data-src="https://images.unsplash.com/photo-1490822180406-880c226c150b?fit=crop&w=1200&h=450&q=80" uk-img>
37
29
  <h1>Background Image</h1>
38
30
  </div>
39
31
 
@@ -263,28 +255,28 @@
263
255
 
264
256
  <ul class="uk-slideshow-items">
265
257
  <li>
266
- <img data-src="images/photo.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !.uk-slideshow-items > :last-child, !* +*">
258
+ <img data-src="images/photo.jpg" alt="" uk-cover data-width="1800" data-height="1200" uk-img="target: !.uk-slideshow-items > :last-child, !* +*">
267
259
  <div class="uk-position-center uk-position-small uk-text-center">
268
260
  <h2 uk-slideshow-parallax="x: 100,-100">Heading</h2>
269
261
  <p uk-slideshow-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
270
262
  </div>
271
263
  </li>
272
264
  <li>
273
- <img data-src="images/dark.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !* -*, !* +*">
265
+ <img data-src="images/dark.jpg" alt="" uk-cover data-width="1800" data-height="1200" uk-img="target: !* -*, !* +*">
274
266
  <div class="uk-position-center uk-position-small uk-text-center">
275
267
  <h2 uk-slideshow-parallax="x: 100,-100">Heading</h2>
276
268
  <p uk-slideshow-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
277
269
  </div>
278
270
  </li>
279
271
  <li>
280
- <img data-src="images/light.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !* -*, !* +*">
272
+ <img data-src="images/light.jpg" alt="" uk-cover data-width="1800" data-height="1200" uk-img="target: !* -*, !* +*">
281
273
  <div class="uk-position-center uk-position-small uk-text-center">
282
274
  <h2 uk-slideshow-parallax="y: -50,0,0; opacity: 1,1,0">Heading</h2>
283
275
  <p uk-slideshow-parallax="y: 50,0,0; opacity: 1,1,0">Lorem ipsum dolor sit amet.</p>
284
276
  </div>
285
277
  </li>
286
278
  <li>
287
- <img data-src="images/photo2.jpg" alt="" uk-cover width="1800" height="1200" uk-img="target: !* -*, !.uk-slideshow-items > :first-child">
279
+ <img data-src="images/photo2.jpg" alt="" uk-cover data-width="1800" data-height="1200" uk-img="target: !* -*, !.uk-slideshow-items > :first-child">
288
280
  <div class="uk-position-center uk-position-small uk-text-center">
289
281
  <h2 uk-slideshow-parallax="x: 200,0,0">Heading</h2>
290
282
  <p uk-slideshow-parallax="x: 0,0,-200">Lorem ipsum dolor sit amet.</p>
@@ -304,43 +296,43 @@
304
296
 
305
297
  <ul class="uk-slider-items uk-child-width-1-2@s uk-child-width-1-3@m">
306
298
  <li>
307
- <img data-src="images/slider1.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
299
+ <img data-src="images/slider1.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
308
300
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">1</h1></div>
309
301
  </li>
310
302
  <li>
311
- <img data-src="images/slider2.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
303
+ <img data-src="images/slider2.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
312
304
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">2</h1></div>
313
305
  </li>
314
306
  <li>
315
- <img data-src="images/slider3.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
307
+ <img data-src="images/slider3.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
316
308
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">3</h1></div>
317
309
  </li>
318
310
  <li>
319
- <img data-src="images/slider4.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
311
+ <img data-src="images/slider4.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
320
312
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">4</h1></div>
321
313
  </li>
322
314
  <li>
323
- <img data-src="images/slider5.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
315
+ <img data-src="images/slider5.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
324
316
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">5</h1></div>
325
317
  </li>
326
318
  <li>
327
- <img data-src="images/slider1.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
319
+ <img data-src="images/slider1.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
328
320
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">6</h1></div>
329
321
  </li>
330
322
  <li>
331
- <img data-src="images/slider2.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
323
+ <img data-src="images/slider2.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
332
324
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">7</h1></div>
333
325
  </li>
334
326
  <li>
335
- <img data-src="images/slider3.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
327
+ <img data-src="images/slider3.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
336
328
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">8</h1></div>
337
329
  </li>
338
330
  <li>
339
- <img data-src="images/slider4.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
331
+ <img data-src="images/slider4.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
340
332
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">9</h1></div>
341
333
  </li>
342
334
  <li>
343
- <img data-src="images/slider5.jpg" alt="" width="400" height="600" uk-img="target: !.uk-slider-items">
335
+ <img data-src="images/slider5.jpg" alt="" data-width="400" data-height="600" uk-img="target: !.uk-slider-items">
344
336
  <div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">10</h1></div>
345
337
  </li>
346
338
  </ul>
@@ -373,16 +365,28 @@
373
365
  <td>The image's `src` attribute.</td>
374
366
  </tr>
375
367
  <tr>
376
- <td><code>sources</code></td>
368
+ <td><code>dataSrcset</code></td>
377
369
  <td>String</td>
378
- <td>''</td>
379
- <td>The image's sources. This option is used for background images only. The sources attributes be passed in `key: value;` format for a single source. For multiple sources in JSON format.</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>
380
378
  </tr>
381
379
  <tr>
382
- <td><code>loading</code></td>
383
- <td>`lazy`|`eager`</td>
384
- <td>`lazy`</td>
385
- <td>Enable lazy/eager loading. Set to `eager` for images within the first visible viewport.</td>
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>
386
390
  </tr>
387
391
  <tr>
388
392
  <td><code>offsetTop</code></td>
package/tests/js/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /* global UIkit, TESTS */
2
- import {addClass, css, fastdom, on, prepend, removeClass, ucfirst} from 'uikit-util';
2
+ import { addClass, css, fastdom, on, prepend, removeClass, ucfirst } from 'uikit-util';
3
3
 
4
4
  const tests = TESTS;
5
5
  const storage = window.sessionStorage;
@@ -14,10 +14,13 @@ request.send(null);
14
14
 
15
15
  const themes = request.status === 200 ? JSON.parse(request.responseText) : {};
16
16
  const styles = {
17
- core: {css: '../dist/css/uikit-core.css'},
18
- theme: {css: '../dist/css/uikit.css'}
17
+ core: { css: '../dist/css/uikit-core.css' },
18
+ theme: { css: '../dist/css/uikit.css' },
19
19
  };
20
- const component = location.pathname.split('/').pop().replace(/.html$/, '');
20
+ const component = location.pathname
21
+ .split('/')
22
+ .pop()
23
+ .replace(/.html$/, '');
21
24
 
22
25
  for (const theme in themes) {
23
26
  styles[theme] = themes[theme];
@@ -26,7 +29,7 @@ for (const theme in themes) {
26
29
  const variations = {
27
30
  '': 'Default',
28
31
  light: 'Dark',
29
- dark: 'Light'
32
+ dark: 'Light',
30
33
  };
31
34
 
32
35
  if (getParam('style') && getParam('style').match(/\.(json|css)$/)) {
@@ -44,102 +47,128 @@ docEl.dir = dir;
44
47
  const style = styles[storage[key]] || styles.theme;
45
48
 
46
49
  // add style
47
- document.writeln(`<link rel="stylesheet" href="${dir !== 'rtl' ? style.css : style.css.replace('.css', '-rtl.css')}">`);
50
+ document.writeln(
51
+ `<link rel="stylesheet" href="${
52
+ dir !== 'rtl' ? style.css : style.css.replace('.css', '-rtl.css')
53
+ }">`
54
+ );
48
55
 
49
56
  // add javascript
50
57
  document.writeln('<script src="../dist/js/uikit.js"></script>');
51
- document.writeln(`<script src="${style.icons ? style.icons : '../dist/js/uikit-icons.js'}"></script>`);
52
-
53
- on(window, 'load', () => setTimeout(() => fastdom.write(() => {
54
-
55
- const $body = document.body;
56
- const $container = prepend($body, `
58
+ document.writeln(
59
+ `<script src="${style.icons ? style.icons : '../dist/js/uikit-icons.js'}"></script>`
60
+ );
61
+
62
+ on(window, 'load', () =>
63
+ setTimeout(
64
+ () =>
65
+ fastdom.write(() => {
66
+ const $body = document.body;
67
+ const $container = prepend(
68
+ $body,
69
+ `
57
70
  <div class="uk-container">
58
71
  <select class="uk-select uk-form-width-small" style="margin: 20px 20px 20px 0">
59
72
  <option value="index.html">Overview</option>
60
- ${tests.map(name => `<option value="${name}.html">${name.split('-').map(ucfirst).join(' ')}</option>`).join('')}
73
+ ${tests
74
+ .map(
75
+ (name) =>
76
+ `<option value="${name}.html">${name
77
+ .split('-')
78
+ .map(ucfirst)
79
+ .join(' ')}</option>`
80
+ )
81
+ .join('')}
61
82
  </select>
62
83
  <select class="uk-select uk-form-width-small" style="margin: 20px">
63
- ${Object.keys(styles).map(style => `<option value="${style}">${ucfirst(style)}</option>`).join('')}
84
+ ${Object.keys(styles)
85
+ .map((style) => `<option value="${style}">${ucfirst(style)}</option>`)
86
+ .join('')}
64
87
  </select>
65
88
  <select class="uk-select uk-form-width-small" style="margin: 20px">
66
- ${Object.keys(variations).map(name => `<option value="${name}">${variations[name]}</option>`).join('')}
89
+ ${Object.keys(variations)
90
+ .map((name) => `<option value="${name}">${variations[name]}</option>`)
91
+ .join('')}
67
92
  </select>
68
93
  <label style="margin: 20px">
69
94
  <input type="checkbox" class="uk-checkbox"/>
70
95
  <span style="margin: 5px">RTL</span>
71
96
  </label>
72
97
  </div>
73
- `);
74
-
75
- const [$tests, $styles, $inverse, $rtl] = $container.children;
76
-
77
- // Tests
78
- // ------------------------------
79
-
80
- on($tests, 'change', () => {
81
- if ($tests.value) {
82
- location.href = `${$tests.value}${styles.custom ? `?style=${getParam('style')}` : ''}`;
83
- }
84
- });
85
- $tests.value = `${component || 'index'}.html`;
86
-
87
- // Styles
88
- // ------------------------------
89
-
90
- on($styles, 'change', () => {
91
- storage[key] = $styles.value;
92
- location.reload();
93
- });
94
- $styles.value = storage[key];
95
-
96
- // Variations
97
- // ------------------------------
98
-
99
- $inverse.value = storage[keyinverse];
100
-
101
- if ($inverse.value) {
102
-
103
- removeClass(document.querySelectorAll('*'),
104
- 'uk-navbar-container',
105
- 'uk-card-default',
106
- 'uk-card-muted',
107
- 'uk-card-primary',
108
- 'uk-card-secondary',
109
- 'uk-tile-default',
110
- 'uk-tile-muted',
111
- 'uk-tile-primary',
112
- 'uk-tile-secondary',
113
- 'uk-section-default',
114
- 'uk-section-muted',
115
- 'uk-section-primary',
116
- 'uk-section-secondary',
117
- 'uk-overlay-default',
118
- 'uk-overlay-primary'
119
- );
120
-
121
- css(docEl, 'background', $inverse.value === 'dark' ? '#fff' : '#222');
122
- addClass($body, `uk-${$inverse.value}`);
123
-
124
- }
125
-
126
- on($inverse, 'change', () => {
127
- storage[keyinverse] = $inverse.value;
128
- location.reload();
129
- });
130
-
131
- // RTL
132
- // ------------------------------
133
-
134
- on($rtl, 'change', ({target}) => {
135
- storage._uikit_dir = target.checked ? 'rtl' : 'ltr';
136
- location.reload();
137
- });
138
- $rtl.firstElementChild.checked = dir === 'rtl';
139
-
140
- css(docEl, 'paddingTop', '');
141
-
142
- }), 100));
98
+ `
99
+ );
100
+
101
+ const [$tests, $styles, $inverse, $rtl] = $container.children;
102
+
103
+ // Tests
104
+ // ------------------------------
105
+
106
+ on($tests, 'change', () => {
107
+ if ($tests.value) {
108
+ location.href = `${$tests.value}${
109
+ styles.custom ? `?style=${getParam('style')}` : ''
110
+ }`;
111
+ }
112
+ });
113
+ $tests.value = `${component || 'index'}.html`;
114
+
115
+ // Styles
116
+ // ------------------------------
117
+
118
+ on($styles, 'change', () => {
119
+ storage[key] = $styles.value;
120
+ location.reload();
121
+ });
122
+ $styles.value = storage[key];
123
+
124
+ // Variations
125
+ // ------------------------------
126
+
127
+ $inverse.value = storage[keyinverse];
128
+
129
+ if ($inverse.value) {
130
+ removeClass(
131
+ document.querySelectorAll('*'),
132
+ 'uk-navbar-container',
133
+ 'uk-card-default',
134
+ 'uk-card-muted',
135
+ 'uk-card-primary',
136
+ 'uk-card-secondary',
137
+ 'uk-tile-default',
138
+ 'uk-tile-muted',
139
+ 'uk-tile-primary',
140
+ 'uk-tile-secondary',
141
+ 'uk-section-default',
142
+ 'uk-section-muted',
143
+ 'uk-section-primary',
144
+ 'uk-section-secondary',
145
+ 'uk-overlay-default',
146
+ 'uk-overlay-primary'
147
+ );
148
+
149
+ css(docEl, 'background', $inverse.value === 'dark' ? '#fff' : '#222');
150
+ addClass($body, `uk-${$inverse.value}`);
151
+ }
152
+
153
+ on($inverse, 'change', () => {
154
+ storage[keyinverse] = $inverse.value;
155
+ location.reload();
156
+ });
157
+
158
+ // RTL
159
+ // ------------------------------
160
+
161
+ on($rtl, 'change', ({ target }) => {
162
+ storage._uikit_dir = target.checked ? 'rtl' : 'ltr';
163
+ location.reload();
164
+ });
165
+ $rtl.firstElementChild.checked = dir === 'rtl';
166
+
167
+ css(docEl, 'paddingTop', '');
168
+ }),
169
+ 100
170
+ )
171
+ );
143
172
 
144
173
  css(docEl, 'paddingTop', '80px');
145
174