uikit 3.11.2-dev.fb043abc2 → 3.12.0

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 (226) 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 +51 -20
  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 +133 -201
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +133 -201
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +135 -207
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +135 -207
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +66 -138
  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 +1091 -1319
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1137 -1396
  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 +347 -361
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +345 -360
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +749 -843
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +345 -360
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +628 -798
  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 +156 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5317 -6554
  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 +8018 -9698
  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 +199 -187
  66. package/src/js/components/countdown.js +32 -85
  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-preload.js +9 -0
  71. package/src/js/components/internal/slider-transitioner.js +66 -45
  72. package/src/js/components/internal/slideshow-animations.js +46 -64
  73. package/src/js/components/lightbox-panel.js +107 -105
  74. package/src/js/components/lightbox.js +17 -39
  75. package/src/js/components/notification.js +49 -43
  76. package/src/js/components/parallax.js +16 -30
  77. package/src/js/components/slider-parallax.js +13 -23
  78. package/src/js/components/slider.js +117 -89
  79. package/src/js/components/slideshow-parallax.js +1 -1
  80. package/src/js/components/slideshow.js +15 -13
  81. package/src/js/components/sortable.js +125 -106
  82. package/src/js/components/tooltip.js +41 -31
  83. package/src/js/components/upload.js +53 -63
  84. package/src/js/core/accordion.js +58 -48
  85. package/src/js/core/alert.js +9 -17
  86. package/src/js/core/core.js +17 -69
  87. package/src/js/core/cover.js +15 -15
  88. package/src/js/core/drop.js +110 -94
  89. package/src/js/core/form-custom.js +22 -27
  90. package/src/js/core/gif.js +3 -7
  91. package/src/js/core/grid.js +57 -58
  92. package/src/js/core/height-match.js +16 -29
  93. package/src/js/core/height-viewport.js +30 -34
  94. package/src/js/core/icon.js +47 -52
  95. package/src/js/core/img.js +153 -143
  96. package/src/js/core/index.js +39 -39
  97. package/src/js/core/leader.js +9 -18
  98. package/src/js/core/margin.js +21 -37
  99. package/src/js/core/modal.js +49 -36
  100. package/src/js/core/nav.js +2 -4
  101. package/src/js/core/navbar.js +113 -85
  102. package/src/js/core/offcanvas.js +51 -54
  103. package/src/js/core/overflow-auto.js +13 -17
  104. package/src/js/core/responsive.js +14 -12
  105. package/src/js/core/scroll.js +10 -20
  106. package/src/js/core/scrollspy-nav.js +34 -31
  107. package/src/js/core/scrollspy.js +37 -54
  108. package/src/js/core/sticky.js +161 -128
  109. package/src/js/core/svg.js +68 -83
  110. package/src/js/core/switcher.js +56 -47
  111. package/src/js/core/tab.js +7 -10
  112. package/src/js/core/toggle.js +69 -68
  113. package/src/js/core/video.js +22 -21
  114. package/src/js/mixin/animate.js +19 -20
  115. package/src/js/mixin/class.js +2 -4
  116. package/src/js/mixin/container.js +7 -11
  117. package/src/js/mixin/internal/animate-fade.js +73 -30
  118. package/src/js/mixin/internal/animate-slide.js +58 -41
  119. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  120. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  121. package/src/js/mixin/lazyload.js +20 -0
  122. package/src/js/mixin/media.js +5 -10
  123. package/src/js/mixin/modal.js +89 -66
  124. package/src/js/mixin/parallax.js +149 -107
  125. package/src/js/mixin/position.js +26 -20
  126. package/src/js/mixin/slider-autoplay.js +12 -21
  127. package/src/js/mixin/slider-drag.js +64 -65
  128. package/src/js/mixin/slider-nav.js +26 -35
  129. package/src/js/mixin/slider-reactive.js +2 -8
  130. package/src/js/mixin/slider.js +47 -60
  131. package/src/js/mixin/slideshow.js +12 -22
  132. package/src/js/mixin/swipe.js +72 -0
  133. package/src/js/mixin/togglable.js +89 -63
  134. package/src/js/uikit-core.js +2 -4
  135. package/src/js/uikit.js +2 -4
  136. package/src/js/util/ajax.js +25 -40
  137. package/src/js/util/animation.js +77 -75
  138. package/src/js/util/attr.js +17 -21
  139. package/src/js/util/class.js +14 -52
  140. package/src/js/util/dimensions.js +58 -45
  141. package/src/js/util/dom.js +37 -66
  142. package/src/js/util/env.js +7 -12
  143. package/src/js/util/event.js +60 -59
  144. package/src/js/util/fastdom.js +1 -6
  145. package/src/js/util/filter.js +18 -36
  146. package/src/js/util/index.js +1 -1
  147. package/src/js/util/lang.js +82 -121
  148. package/src/js/util/mouse.js +19 -17
  149. package/src/js/util/observer.js +36 -0
  150. package/src/js/util/options.js +35 -49
  151. package/src/js/util/player.js +41 -36
  152. package/src/js/util/position.js +54 -46
  153. package/src/js/util/selector.js +43 -58
  154. package/src/js/util/style.js +39 -49
  155. package/src/js/util/viewport.js +75 -64
  156. package/src/less/components/base.less +10 -33
  157. package/src/less/components/flex.less +0 -9
  158. package/src/less/components/form-range.less +48 -95
  159. package/src/less/components/form.less +0 -1
  160. package/src/less/components/height.less +3 -0
  161. package/src/less/components/leader.less +0 -1
  162. package/src/less/components/lightbox.less +0 -1
  163. package/src/less/components/modal.less +3 -7
  164. package/src/less/components/navbar.less +0 -7
  165. package/src/less/components/progress.less +14 -36
  166. package/src/less/components/slider.less +0 -3
  167. package/src/less/components/slideshow.less +0 -3
  168. package/src/less/components/text.less +16 -32
  169. package/src/less/components/utility.less +25 -0
  170. package/src/scss/components/base.scss +10 -33
  171. package/src/scss/components/flex.scss +0 -9
  172. package/src/scss/components/form-range.scss +48 -95
  173. package/src/scss/components/form.scss +3 -4
  174. package/src/scss/components/height.scss +3 -0
  175. package/src/scss/components/icon.scss +2 -2
  176. package/src/scss/components/leader.scss +0 -1
  177. package/src/scss/components/lightbox.scss +0 -1
  178. package/src/scss/components/modal.scss +3 -7
  179. package/src/scss/components/navbar.scss +0 -7
  180. package/src/scss/components/progress.scss +14 -36
  181. package/src/scss/components/search.scss +1 -1
  182. package/src/scss/components/slider.scss +0 -3
  183. package/src/scss/components/slideshow.scss +0 -3
  184. package/src/scss/components/text.scss +16 -32
  185. package/src/scss/components/utility.scss +25 -0
  186. package/src/scss/mixins-theme.scss +1 -1
  187. package/src/scss/mixins.scss +1 -1
  188. package/src/scss/variables-theme.scss +9 -9
  189. package/src/scss/variables.scss +9 -9
  190. package/tests/align.html +10 -10
  191. package/tests/animation.html +2 -2
  192. package/tests/article.html +2 -2
  193. package/tests/base.html +3 -3
  194. package/tests/card.html +10 -10
  195. package/tests/column.html +3 -3
  196. package/tests/comment.html +9 -9
  197. package/tests/countdown.html +10 -8
  198. package/tests/dotnav.html +3 -3
  199. package/tests/image.html +296 -64
  200. package/tests/images/image-type.avif +0 -0
  201. package/tests/images/image-type.jpeg +0 -0
  202. package/tests/images/image-type.webp +0 -0
  203. package/tests/index.html +8 -8
  204. package/tests/js/index.js +114 -85
  205. package/tests/lightbox.html +10 -10
  206. package/tests/marker.html +2 -2
  207. package/tests/modal.html +8 -9
  208. package/tests/navbar.html +2 -2
  209. package/tests/overlay.html +7 -7
  210. package/tests/parallax.html +16 -7
  211. package/tests/position.html +12 -12
  212. package/tests/slidenav.html +12 -12
  213. package/tests/slider.html +20 -20
  214. package/tests/sortable.html +1 -1
  215. package/tests/sticky-parallax.html +57 -72
  216. package/tests/sticky.html +14 -3
  217. package/tests/svg.html +6 -6
  218. package/tests/table.html +11 -11
  219. package/tests/thumbnav.html +12 -12
  220. package/tests/transition.html +30 -30
  221. package/tests/utility.html +50 -33
  222. package/tests/video.html +1 -1
  223. package/tests/width.html +1 -1
  224. package/src/js/mixin/flex-bug.js +0 -56
  225. package/src/js/util/promise.js +0 -191
  226. package/tests/images/animated.gif +0 -0
@@ -1,7 +1,23 @@
1
- import {$, $$, after, ajax, append, attr, includes, isVisible, isVoidElement, memoize, noop, Promise, remove, removeAttr, startsWith, toFloat} from 'uikit-util';
1
+ import {
2
+ $,
3
+ $$,
4
+ after,
5
+ append,
6
+ attr,
7
+ includes,
8
+ isTag,
9
+ isVisible,
10
+ isVoidElement,
11
+ memoize,
12
+ noop,
13
+ once,
14
+ remove,
15
+ removeAttr,
16
+ startsWith,
17
+ toFloat,
18
+ } from 'uikit-util';
2
19
 
3
20
  export default {
4
-
5
21
  args: 'src',
6
22
 
7
23
  props: {
@@ -15,14 +31,14 @@ export default {
15
31
  class: String,
16
32
  strokeAnimation: Boolean,
17
33
  focusable: Boolean, // IE 11
18
- attributes: 'list'
34
+ attributes: 'list',
19
35
  },
20
36
 
21
37
  data: {
22
38
  ratio: 1,
23
39
  include: ['style', 'class', 'focusable'],
24
40
  class: '',
25
- strokeAnimation: false
41
+ strokeAnimation: false,
26
42
  },
27
43
 
28
44
  beforeConnect() {
@@ -30,15 +46,12 @@ export default {
30
46
  },
31
47
 
32
48
  connected() {
33
-
34
49
  if (!this.icon && includes(this.src, '#')) {
35
50
  [this.src, this.icon] = this.src.split('#');
36
51
  }
37
52
 
38
- this.svg = this.getSvg().then(el => {
39
-
53
+ this.svg = this.getSvg().then((el) => {
40
54
  if (this._connected) {
41
-
42
55
  const svg = insertSVG(el, this.$el);
43
56
 
44
57
  if (this.svgEl && svg !== this.svgEl) {
@@ -47,16 +60,13 @@ export default {
47
60
 
48
61
  this.applyAttributes(svg, el);
49
62
  this.$emit();
50
- return this.svgEl = svg;
63
+ return (this.svgEl = svg);
51
64
  }
52
-
53
65
  }, noop);
54
-
55
66
  },
56
67
 
57
68
  disconnected() {
58
-
59
- this.svg.then(svg => {
69
+ this.svg.then((svg) => {
60
70
  if (this._connected) {
61
71
  return;
62
72
  }
@@ -67,15 +77,12 @@ export default {
67
77
 
68
78
  remove(svg);
69
79
  this.svgEl = null;
70
-
71
80
  });
72
81
 
73
82
  this.svg = null;
74
-
75
83
  },
76
84
 
77
85
  update: {
78
-
79
86
  read() {
80
87
  return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));
81
88
  },
@@ -84,22 +91,23 @@ export default {
84
91
  applyAnimation(this.svgEl);
85
92
  },
86
93
 
87
- type: ['resize']
88
-
94
+ type: ['resize'],
89
95
  },
90
96
 
91
97
  methods: {
98
+ async getSvg() {
99
+ if (isTag(this.$el, 'img') && !this.$el.complete && this.$el.loading === 'lazy') {
100
+ return new Promise((resolve) =>
101
+ once(this.$el, 'load', () => resolve(this.getSvg()))
102
+ );
103
+ }
92
104
 
93
- getSvg() {
94
- return loadSVG(this.src).then(svg =>
95
- parseSVG(svg, this.icon) || Promise.reject('SVG not found.')
96
- );
105
+ return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject('SVG not found.');
97
106
  },
98
107
 
99
108
  applyAttributes(el, ref) {
100
-
101
109
  for (const prop in this.$options.props) {
102
- if (includes(this.include, prop) && (prop in this)) {
110
+ if (includes(this.include, prop) && prop in this) {
103
111
  attr(el, prop, this[prop]);
104
112
  }
105
113
  }
@@ -114,65 +122,48 @@ export default {
114
122
  }
115
123
 
116
124
  const props = ['width', 'height'];
117
- let dimensions = props.map(prop => this[prop]);
125
+ let dimensions = props.map((prop) => this[prop]);
118
126
 
119
- if (!dimensions.some(val => val)) {
120
- dimensions = props.map(prop => attr(ref, prop));
127
+ if (!dimensions.some((val) => val)) {
128
+ dimensions = props.map((prop) => attr(ref, prop));
121
129
  }
122
130
 
123
131
  const viewBox = attr(ref, 'viewBox');
124
- if (viewBox && !dimensions.some(val => val)) {
132
+ if (viewBox && !dimensions.some((val) => val)) {
125
133
  dimensions = viewBox.split(' ').slice(2);
126
134
  }
127
135
 
128
- dimensions.forEach((val, i) =>
129
- attr(el, props[i], toFloat(val) * this.ratio || null)
130
- );
131
-
132
- }
133
-
134
- }
135
-
136
+ dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));
137
+ },
138
+ },
136
139
  };
137
140
 
138
- const loadSVG = memoize(src =>
139
- new Promise((resolve, reject) => {
140
-
141
- if (!src) {
142
- reject();
143
- return;
144
- }
145
-
141
+ const loadSVG = memoize(async (src) => {
142
+ if (src) {
146
143
  if (startsWith(src, 'data:')) {
147
- resolve(decodeURIComponent(src.split(',')[1]));
144
+ return decodeURIComponent(src.split(',')[1]);
148
145
  } else {
149
-
150
- ajax(src).then(
151
- xhr => resolve(xhr.response),
152
- () => reject('SVG not found.')
153
- );
154
-
146
+ return (await fetch(src)).text();
155
147
  }
156
- })
157
- );
148
+ } else {
149
+ return Promise.reject();
150
+ }
151
+ });
158
152
 
159
153
  function parseSVG(svg, icon) {
160
-
161
154
  if (icon && includes(svg, '<symbol')) {
162
155
  svg = parseSymbols(svg, icon) || svg;
163
156
  }
164
157
 
165
158
  svg = $(svg.substr(svg.indexOf('<svg')));
166
- return svg && svg.hasChildNodes() && svg;
159
+ return svg?.hasChildNodes() && svg;
167
160
  }
168
161
 
169
162
  const symbolRe = /<symbol([^]*?id=(['"])(.+?)\2[^]*?<\/)symbol>/g;
170
163
  const symbols = {};
171
164
 
172
165
  function parseSymbols(svg, icon) {
173
-
174
166
  if (!symbols[svg]) {
175
-
176
167
  symbols[svg] = {};
177
168
 
178
169
  symbolRe.lastIndex = 0;
@@ -181,59 +172,53 @@ function parseSymbols(svg, icon) {
181
172
  while ((match = symbolRe.exec(svg))) {
182
173
  symbols[svg][match[3]] = `<svg xmlns="http://www.w3.org/2000/svg"${match[1]}svg>`;
183
174
  }
184
-
185
175
  }
186
176
 
187
177
  return symbols[svg][icon];
188
178
  }
189
179
 
190
180
  function applyAnimation(el) {
191
-
192
181
  const length = getMaxPathLength(el);
193
182
 
194
183
  if (length) {
195
184
  el.style.setProperty('--uk-animation-stroke', length);
196
185
  }
197
-
198
186
  }
199
187
 
200
188
  export function getMaxPathLength(el) {
201
- return Math.ceil(Math.max(0, ...$$('[stroke]', el).map(stroke => {
202
- try {
203
- return stroke.getTotalLength();
204
- } catch (e) {
205
- return 0;
206
- }
207
- })));
189
+ return Math.ceil(
190
+ Math.max(
191
+ 0,
192
+ ...$$('[stroke]', el).map((stroke) => {
193
+ try {
194
+ return stroke.getTotalLength();
195
+ } catch (e) {
196
+ return 0;
197
+ }
198
+ })
199
+ )
200
+ );
208
201
  }
209
202
 
210
203
  function insertSVG(el, root) {
211
-
212
- if (isVoidElement(root) || root.tagName === 'CANVAS') {
213
-
204
+ if (isVoidElement(root) || isTag(root, 'canvas')) {
214
205
  root.hidden = true;
215
206
 
216
207
  const next = root.nextElementSibling;
217
- return equals(el, next)
218
- ? next
219
- : after(root, el);
220
-
208
+ return equals(el, next) ? next : after(root, el);
221
209
  }
222
210
 
223
211
  const last = root.lastElementChild;
224
- return equals(el, last)
225
- ? last
226
- : append(root, el);
212
+ return equals(el, last) ? last : append(root, el);
227
213
  }
228
214
 
229
215
  function equals(el, other) {
230
- return isSVG(el) && isSVG(other) && innerHTML(el) === innerHTML(other);
231
- }
232
-
233
- function isSVG(el) {
234
- return el && el.tagName === 'svg';
216
+ return isTag(el, 'svg') && isTag(other, 'svg') && innerHTML(el) === innerHTML(other);
235
217
  }
236
218
 
237
219
  function innerHTML(el) {
238
- return (el.innerHTML || (new XMLSerializer()).serializeToString(el).replace(/<svg.*?>(.*?)<\/svg>/g, '$1')).replace(/\s/g, '');
220
+ return (
221
+ el.innerHTML ||
222
+ new XMLSerializer().serializeToString(el).replace(/<svg.*?>(.*?)<\/svg>/g, '$1')
223
+ ).replace(/\s/g, '');
239
224
  }
@@ -1,9 +1,25 @@
1
+ import Lazyload from '../mixin/lazyload';
2
+ import Swipe from '../mixin/swipe';
1
3
  import Togglable from '../mixin/togglable';
2
- import {$$, attr, children, css, data, endsWith, findIndex, getIndex, hasClass, matches, queryAll, toggleClass, toNodes, within} from 'uikit-util';
4
+ import {
5
+ $$,
6
+ attr,
7
+ children,
8
+ css,
9
+ data,
10
+ endsWith,
11
+ findIndex,
12
+ getIndex,
13
+ hasClass,
14
+ matches,
15
+ queryAll,
16
+ toggleClass,
17
+ toNodes,
18
+ within,
19
+ } from 'uikit-util';
3
20
 
4
21
  export default {
5
-
6
- mixins: [Togglable],
22
+ mixins: [Lazyload, Swipe, Togglable],
7
23
 
8
24
  args: 'connect',
9
25
 
@@ -12,7 +28,6 @@ export default {
12
28
  toggle: String,
13
29
  itemNav: String,
14
30
  active: Number,
15
- swiping: Boolean
16
31
  },
17
32
 
18
33
  data: {
@@ -20,42 +35,35 @@ export default {
20
35
  toggle: '> * > :first-child',
21
36
  itemNav: false,
22
37
  active: 0,
23
- swiping: true,
24
38
  cls: 'uk-active',
25
- attrItem: 'uk-switcher-item'
39
+ attrItem: 'uk-switcher-item',
26
40
  },
27
41
 
28
42
  computed: {
29
-
30
43
  connects: {
31
-
32
- get({connect}, $el) {
44
+ get({ connect }, $el) {
33
45
  return queryAll(connect, $el);
34
46
  },
35
47
 
36
48
  watch(connects) {
37
-
38
49
  if (this.swiping) {
39
50
  css(connects, 'touch-action', 'pan-y pinch-zoom');
40
51
  }
41
52
 
42
53
  const index = this.index();
43
- this.connects.forEach(el =>
44
- children(el).forEach((child, i) =>
45
- toggleClass(child, this.cls, i === index)
46
- )
54
+ this.connects.forEach((el) =>
55
+ children(el).forEach((child, i) => toggleClass(child, this.cls, i === index))
47
56
  );
48
-
49
57
  },
50
58
 
51
- immediate: true
52
-
59
+ immediate: true,
53
60
  },
54
61
 
55
62
  toggles: {
56
-
57
- get({toggle}, $el) {
58
- return $$(toggle, $el).filter(el => !matches(el, '.uk-disabled *, .uk-disabled, [disabled]'));
63
+ get({ toggle }, $el) {
64
+ return $$(toggle, $el).filter(
65
+ (el) => !matches(el, '.uk-disabled *, .uk-disabled, [disabled]')
66
+ );
59
67
  },
60
68
 
61
69
  watch(toggles) {
@@ -63,20 +71,26 @@ export default {
63
71
  this.show(~active ? active : toggles[this.active] || toggles[0]);
64
72
  },
65
73
 
66
- immediate: true
67
-
74
+ immediate: true,
68
75
  },
69
76
 
70
77
  children() {
71
- return children(this.$el).filter(child => this.toggles.some(toggle => within(toggle, child)));
72
- }
78
+ return children(this.$el).filter((child) =>
79
+ this.toggles.some((toggle) => within(toggle, child))
80
+ );
81
+ },
73
82
 
83
+ swipeTarget() {
84
+ return this.connects;
85
+ },
74
86
  },
75
87
 
76
- events: [
88
+ connected() {
89
+ this.lazyload(this.$el, this.connects);
90
+ },
77
91
 
92
+ events: [
78
93
  {
79
-
80
94
  name: 'click',
81
95
 
82
96
  delegate() {
@@ -86,8 +100,7 @@ export default {
86
100
  handler(e) {
87
101
  e.preventDefault();
88
102
  this.show(e.current);
89
- }
90
-
103
+ },
91
104
  },
92
105
 
93
106
  {
@@ -104,7 +117,7 @@ export default {
104
117
  handler(e) {
105
118
  e.preventDefault();
106
119
  this.show(data(e.current, this.attrItem));
107
- }
120
+ },
108
121
  },
109
122
 
110
123
  {
@@ -118,21 +131,18 @@ export default {
118
131
  return this.connects;
119
132
  },
120
133
 
121
- handler({type}) {
134
+ handler({ type }) {
122
135
  this.show(endsWith(type, 'Left') ? 'next' : 'previous');
123
- }
124
- }
125
-
136
+ },
137
+ },
126
138
  ],
127
139
 
128
140
  methods: {
129
-
130
141
  index() {
131
- return findIndex(this.children, el => hasClass(el, this.cls));
142
+ return findIndex(this.children, (el) => hasClass(el, this.cls));
132
143
  },
133
144
 
134
145
  show(item) {
135
-
136
146
  const prev = this.index();
137
147
  const next = getIndex(
138
148
  this.children[getIndex(item, this.toggles, prev)],
@@ -148,15 +158,14 @@ export default {
148
158
  attr(this.toggles[i], 'aria-expanded', next === i);
149
159
  });
150
160
 
151
- this.connects.forEach(({children}) =>
152
- this.toggleElement(toNodes(children).filter(child =>
153
- hasClass(child, this.cls)
154
- ), false, prev >= 0).then(() =>
155
- this.toggleElement(children[next], true, prev >= 0)
156
- )
157
- );
158
- }
159
-
160
- }
161
-
161
+ this.connects.forEach(async ({ children }) => {
162
+ await this.toggleElement(
163
+ toNodes(children).filter((child) => hasClass(child, this.cls)),
164
+ false,
165
+ prev >= 0
166
+ );
167
+ await this.toggleElement(children[next], true, prev >= 0);
168
+ });
169
+ },
170
+ },
162
171
  };
@@ -1,33 +1,30 @@
1
1
  import Switcher from './switcher';
2
2
  import Class from '../mixin/class';
3
- import {hasClass} from 'uikit-util';
3
+ import { hasClass } from 'uikit-util';
4
4
 
5
5
  export default {
6
-
7
6
  mixins: [Class],
8
7
 
9
8
  extends: Switcher,
10
9
 
11
10
  props: {
12
- media: Boolean
11
+ media: Boolean,
13
12
  },
14
13
 
15
14
  data: {
16
15
  media: 960,
17
- attrItem: 'uk-tab-item'
16
+ attrItem: 'uk-tab-item',
18
17
  },
19
18
 
20
19
  connected() {
21
-
22
20
  const cls = hasClass(this.$el, 'uk-tab-left')
23
21
  ? 'uk-tab-left'
24
22
  : hasClass(this.$el, 'uk-tab-right')
25
- ? 'uk-tab-right'
26
- : false;
23
+ ? 'uk-tab-right'
24
+ : false;
27
25
 
28
26
  if (cls) {
29
- this.$create('toggle', this.$el, {cls, mode: 'media', media: this.media});
27
+ this.$create('toggle', this.$el, { cls, mode: 'media', media: this.media });
30
28
  }
31
- }
32
-
29
+ },
33
30
  };