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,15 +1,31 @@
1
1
  import Animate from '../mixin/animate';
2
- import {$$, append, assign, css, data, each, fastdom, children as getChildren, hasClass, includes, isEmpty, isEqual, isUndefined, matches, parseOptions, Promise, toggleClass, trigger} from 'uikit-util';
2
+ import {
3
+ $$,
4
+ append,
5
+ css,
6
+ data,
7
+ each,
8
+ fastdom,
9
+ children as getChildren,
10
+ hasClass,
11
+ includes,
12
+ isEmpty,
13
+ isEqual,
14
+ isUndefined,
15
+ matches,
16
+ parseOptions,
17
+ toggleClass,
18
+ trigger,
19
+ } from 'uikit-util';
3
20
 
4
21
  export default {
5
-
6
22
  mixins: [Animate],
7
23
 
8
24
  args: 'target',
9
25
 
10
26
  props: {
11
27
  target: Boolean,
12
- selActive: Boolean
28
+ selActive: Boolean,
13
29
  },
14
30
 
15
31
  data: {
@@ -17,35 +33,29 @@ export default {
17
33
  selActive: false,
18
34
  attrItem: 'uk-filter-control',
19
35
  cls: 'uk-active',
20
- duration: 250
36
+ duration: 250,
21
37
  },
22
38
 
23
39
  computed: {
24
-
25
40
  toggles: {
26
-
27
- get({attrItem}, $el) {
41
+ get({ attrItem }, $el) {
28
42
  return $$(`[${attrItem}],[data-${attrItem}]`, $el);
29
43
  },
30
44
 
31
45
  watch() {
32
-
33
46
  this.updateState();
34
47
 
35
48
  if (this.selActive !== false) {
36
49
  const actives = $$(this.selActive, this.$el);
37
- this.toggles.forEach(el => toggleClass(el, this.cls, includes(actives, el)));
50
+ this.toggles.forEach((el) => toggleClass(el, this.cls, includes(actives, el)));
38
51
  }
39
-
40
52
  },
41
53
 
42
- immediate: true
43
-
54
+ immediate: true,
44
55
  },
45
56
 
46
57
  children: {
47
-
48
- get({target}, $el) {
58
+ get({ target }, $el) {
49
59
  return $$(`${target} > *`, $el);
50
60
  },
51
61
 
@@ -55,16 +65,12 @@ export default {
55
65
  }
56
66
  },
57
67
 
58
- immediate: true
59
-
60
- }
61
-
68
+ immediate: true,
69
+ },
62
70
  },
63
71
 
64
72
  events: [
65
-
66
73
  {
67
-
68
74
  name: 'click',
69
75
 
70
76
  delegate() {
@@ -72,18 +78,13 @@ export default {
72
78
  },
73
79
 
74
80
  handler(e) {
75
-
76
81
  e.preventDefault();
77
82
  this.apply(e.current);
78
-
79
- }
80
-
81
- }
82
-
83
+ },
84
+ },
83
85
  ],
84
86
 
85
87
  methods: {
86
-
87
88
  apply(el) {
88
89
  const prevState = this.getState();
89
90
  const newState = mergeState(el, this.attrItem, this.getState());
@@ -95,34 +96,37 @@ export default {
95
96
 
96
97
  getState() {
97
98
  return this.toggles
98
- .filter(item => hasClass(item, this.cls))
99
- .reduce((state, el) => mergeState(el, this.attrItem, state), {filter: {'': ''}, sort: []});
99
+ .filter((item) => hasClass(item, this.cls))
100
+ .reduce((state, el) => mergeState(el, this.attrItem, state), {
101
+ filter: { '': '' },
102
+ sort: [],
103
+ });
100
104
  },
101
105
 
102
106
  setState(state, animate = true) {
103
-
104
- state = assign({filter: {'': ''}, sort: []}, state);
107
+ state = { filter: { '': '' }, sort: [], ...state };
105
108
 
106
109
  trigger(this.$el, 'beforeFilter', [this, state]);
107
110
 
108
- this.toggles.forEach(el => toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state)));
109
-
110
- Promise.all($$(this.target, this.$el).map(target => {
111
- const filterFn = () => {
112
- applyState(state, target, getChildren(target));
113
- this.$update(this.$el);
114
- };
115
- return animate ? this.animate(filterFn, target) : filterFn();
116
- })).then(() => trigger(this.$el, 'afterFilter', [this]));
117
-
111
+ this.toggles.forEach((el) =>
112
+ toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state))
113
+ );
114
+
115
+ Promise.all(
116
+ $$(this.target, this.$el).map((target) => {
117
+ const filterFn = () => {
118
+ applyState(state, target, getChildren(target));
119
+ this.$update(this.$el);
120
+ };
121
+ return animate ? this.animate(filterFn, target) : filterFn();
122
+ })
123
+ ).then(() => trigger(this.$el, 'afterFilter', [this]));
118
124
  },
119
125
 
120
126
  updateState() {
121
127
  fastdom.write(() => this.setState(this.getState(), false));
122
- }
123
-
124
- }
125
-
128
+ },
129
+ },
126
130
  };
127
131
 
128
132
  function getFilter(el, attr) {
@@ -130,13 +134,13 @@ function getFilter(el, attr) {
130
134
  }
131
135
 
132
136
  function isEqualState(stateA, stateB) {
133
- return ['filter', 'sort'].every(prop => isEqual(stateA[prop], stateB[prop]));
137
+ return ['filter', 'sort'].every((prop) => isEqual(stateA[prop], stateB[prop]));
134
138
  }
135
139
 
136
140
  function applyState(state, target, children) {
137
141
  const selector = getSelector(state);
138
142
 
139
- children.forEach(el => css(el, 'display', selector && !matches(el, selector) ? 'none' : ''));
143
+ children.forEach((el) => css(el, 'display', selector && !matches(el, selector) ? 'none' : ''));
140
144
 
141
145
  const [sort, order] = state.sort;
142
146
 
@@ -149,14 +153,11 @@ function applyState(state, target, children) {
149
153
  }
150
154
 
151
155
  function mergeState(el, attr, state) {
152
-
153
156
  const filterBy = getFilter(el, attr);
154
- const {filter, group, sort, order = 'asc'} = filterBy;
157
+ const { filter, group, sort, order = 'asc' } = filterBy;
155
158
 
156
159
  if (filter || isUndefined(sort)) {
157
-
158
160
  if (group) {
159
-
160
161
  if (filter) {
161
162
  delete state.filter[''];
162
163
  state.filter[group] = filter;
@@ -164,15 +165,12 @@ function mergeState(el, attr, state) {
164
165
  delete state.filter[group];
165
166
 
166
167
  if (isEmpty(state.filter) || '' in state.filter) {
167
- state.filter = {'': filter || ''};
168
+ state.filter = { '': filter || '' };
168
169
  }
169
-
170
170
  }
171
-
172
171
  } else {
173
- state.filter = {'': filter || ''};
172
+ state.filter = { '': filter || '' };
174
173
  }
175
-
176
174
  }
177
175
 
178
176
  if (!isUndefined(sort)) {
@@ -182,27 +180,33 @@ function mergeState(el, attr, state) {
182
180
  return state;
183
181
  }
184
182
 
185
- function matchFilter(el, attr, {filter: stateFilter = {'': ''}, sort: [stateSort, stateOrder]}) {
186
-
187
- const {filter = '', group = '', sort, order = 'asc'} = getFilter(el, attr);
183
+ function matchFilter(
184
+ el,
185
+ attr,
186
+ { filter: stateFilter = { '': '' }, sort: [stateSort, stateOrder] }
187
+ ) {
188
+ const { filter = '', group = '', sort, order = 'asc' } = getFilter(el, attr);
188
189
 
189
190
  return isUndefined(sort)
190
- ? group in stateFilter && filter === stateFilter[group]
191
- || !filter && group && !(group in stateFilter) && !stateFilter['']
191
+ ? (group in stateFilter && filter === stateFilter[group]) ||
192
+ (!filter && group && !(group in stateFilter) && !stateFilter[''])
192
193
  : stateSort === sort && stateOrder === order;
193
194
  }
194
195
 
195
196
  function isEqualList(listA, listB) {
196
- return listA.length === listB.length
197
- && listA.every(el => ~listB.indexOf(el));
197
+ return listA.length === listB.length && listA.every((el) => ~listB.indexOf(el));
198
198
  }
199
199
 
200
- function getSelector({filter}) {
200
+ function getSelector({ filter }) {
201
201
  let selector = '';
202
- each(filter, value => selector += value || '');
202
+ each(filter, (value) => (selector += value || ''));
203
203
  return selector;
204
204
  }
205
205
 
206
206
  function sortItems(nodes, sort, order) {
207
- return assign([], nodes).sort((a, b) => data(a, sort).localeCompare(data(b, sort), undefined, {numeric: true}) * (order === 'asc' || -1));
207
+ return [...nodes].sort(
208
+ (a, b) =>
209
+ data(a, sort).localeCompare(data(b, sort), undefined, { numeric: true }) *
210
+ (order === 'asc' || -1)
211
+ );
208
212
  }
@@ -1,13 +1,13 @@
1
- export {default as Countdown} from './countdown';
2
- export {default as Filter} from './filter';
3
- export {default as Lightbox} from './lightbox';
4
- export {default as LightboxPanel} from './lightbox-panel';
5
- export {default as Notification} from './notification';
6
- export {default as Parallax} from './parallax';
7
- export {default as Slider} from './slider';
8
- export {default as SliderParallax} from './slider-parallax';
9
- export {default as Slideshow} from './slideshow';
10
- export {default as SlideshowParallax} from './slideshow-parallax';
11
- export {default as Sortable} from './sortable';
12
- export {default as Tooltip} from './tooltip';
13
- export {default as Upload} from './upload';
1
+ export { default as Countdown } from './countdown';
2
+ export { default as Filter } from './filter';
3
+ export { default as Lightbox } from './lightbox';
4
+ export { default as LightboxPanel } from './lightbox-panel';
5
+ export { default as Notification } from './notification';
6
+ export { default as Parallax } from './parallax';
7
+ export { default as Slider } from './slider';
8
+ export { default as SliderParallax } from './slider-parallax';
9
+ export { default as Slideshow } from './slideshow';
10
+ export { default as SlideshowParallax } from './slideshow-parallax';
11
+ export { default as Sortable } from './sortable';
12
+ export { default as Tooltip } from './tooltip';
13
+ export { default as Upload } from './upload';
@@ -1,15 +1,11 @@
1
- import Animations, {scale3d} from '../../mixin/internal/slideshow-animations';
2
- import {assign, css} from 'uikit-util';
3
-
4
- export default assign({}, Animations, {
1
+ import Animations, { scale3d } from '../../mixin/internal/slideshow-animations';
2
+ import { css } from 'uikit-util';
5
3
 
4
+ export default {
5
+ ...Animations,
6
6
  fade: {
7
-
8
7
  show() {
9
- return [
10
- {opacity: 0},
11
- {opacity: 1}
12
- ];
8
+ return [{ opacity: 0 }, { opacity: 1 }];
13
9
  },
14
10
 
15
11
  percent(current) {
@@ -17,20 +13,15 @@ export default assign({}, Animations, {
17
13
  },
18
14
 
19
15
  translate(percent) {
20
- return [
21
- {opacity: 1 - percent},
22
- {opacity: percent}
23
- ];
24
- }
25
-
16
+ return [{ opacity: 1 - percent }, { opacity: percent }];
17
+ },
26
18
  },
27
19
 
28
20
  scale: {
29
-
30
21
  show() {
31
22
  return [
32
- {opacity: 0, transform: scale3d(1 - .2)},
33
- {opacity: 1, transform: scale3d(1)}
23
+ { opacity: 0, transform: scale3d(1 - 0.2) },
24
+ { opacity: 1, transform: scale3d(1) },
34
25
  ];
35
26
  },
36
27
 
@@ -40,11 +31,9 @@ export default assign({}, Animations, {
40
31
 
41
32
  translate(percent) {
42
33
  return [
43
- {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},
44
- {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}
34
+ { opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },
35
+ { opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) },
45
36
  ];
46
- }
47
-
48
- }
49
-
50
- });
37
+ },
38
+ },
39
+ };
@@ -0,0 +1,9 @@
1
+ import Lazyload from '../../mixin/lazyload';
2
+
3
+ export default {
4
+ mixins: [Lazyload],
5
+
6
+ connected() {
7
+ this.lazyload(this.slides, this.getAdjacentSlides);
8
+ },
9
+ };
@@ -1,8 +1,21 @@
1
- import {translate} from '../../mixin/internal/slideshow-animations';
2
- import {children, clamp, createEvent, css, Deferred, dimensions, findIndex, includes, isRtl, noop, position, Transition, trigger} from 'uikit-util';
3
-
4
- export default function (prev, next, dir, {center, easing, list}) {
5
-
1
+ import { translate } from '../../mixin/internal/slideshow-animations';
2
+ import {
3
+ children,
4
+ clamp,
5
+ createEvent,
6
+ css,
7
+ Deferred,
8
+ dimensions,
9
+ findIndex,
10
+ includes,
11
+ isRtl,
12
+ noop,
13
+ position,
14
+ Transition,
15
+ trigger,
16
+ } from 'uikit-util';
17
+
18
+ export default function (prev, next, dir, { center, easing, list }) {
6
19
  const deferred = new Deferred();
7
20
 
8
21
  const from = prev
@@ -13,26 +26,32 @@ export default function (prev, next, dir, {center, easing, list}) {
13
26
  : from + dimensions(prev).width * dir * (isRtl ? -1 : 1);
14
27
 
15
28
  return {
16
-
17
29
  dir,
18
30
 
19
31
  show(duration, percent = 0, linear) {
20
-
21
32
  const timing = linear ? 'linear' : easing;
22
33
  duration -= Math.round(duration * clamp(percent, -1, 1));
23
34
 
24
35
  this.translate(percent);
25
36
 
26
37
  percent = prev ? percent : clamp(percent, 0, 1);
27
- triggerUpdate(this.getItemIn(), 'itemin', {percent, duration, timing, dir});
28
- prev && triggerUpdate(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration, timing, dir});
38
+ triggerUpdate(this.getItemIn(), 'itemin', { percent, duration, timing, dir });
39
+ prev &&
40
+ triggerUpdate(this.getItemIn(true), 'itemout', {
41
+ percent: 1 - percent,
42
+ duration,
43
+ timing,
44
+ dir,
45
+ });
29
46
 
30
- Transition
31
- .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing)
32
- .then(deferred.resolve, noop);
47
+ Transition.start(
48
+ list,
49
+ { transform: translate(-to * (isRtl ? -1 : 1), 'px') },
50
+ duration,
51
+ timing
52
+ ).then(deferred.resolve, noop);
33
53
 
34
54
  return deferred.promise;
35
-
36
55
  },
37
56
 
38
57
  cancel() {
@@ -49,14 +68,20 @@ export default function (prev, next, dir, {center, easing, list}) {
49
68
  },
50
69
 
51
70
  translate(percent) {
52
-
53
71
  const distance = this.getDistance() * dir * (isRtl ? -1 : 1);
54
72
 
55
- css(list, 'transform', translate(clamp(
56
- -to + (distance - distance * percent),
57
- -getWidth(list),
58
- dimensions(list).width
59
- ) * (isRtl ? -1 : 1), 'px'));
73
+ css(
74
+ list,
75
+ 'transform',
76
+ translate(
77
+ clamp(
78
+ -to + (distance - distance * percent),
79
+ -getWidth(list),
80
+ dimensions(list).width
81
+ ) * (isRtl ? -1 : 1),
82
+ 'px'
83
+ )
84
+ );
60
85
 
61
86
  const actives = this.getActives();
62
87
  const itemIn = this.getItemIn();
@@ -64,28 +89,28 @@ export default function (prev, next, dir, {center, easing, list}) {
64
89
 
65
90
  percent = prev ? clamp(percent, -1, 1) : 0;
66
91
 
67
- children(list).forEach(slide => {
92
+ for (const slide of children(list)) {
68
93
  const isActive = includes(actives, slide);
69
94
  const isIn = slide === itemIn;
70
95
  const isOut = slide === itemOut;
71
- const translateIn = isIn || !isOut && (isActive || dir * (isRtl ? -1 : 1) === -1 ^ getElLeft(slide, list) > getElLeft(prev || next));
96
+ const translateIn =
97
+ isIn ||
98
+ (!isOut &&
99
+ (isActive ||
100
+ (dir * (isRtl ? -1 : 1) === -1) ^
101
+ (getElLeft(slide, list) > getElLeft(prev || next))));
72
102
 
73
103
  triggerUpdate(slide, `itemtranslate${translateIn ? 'in' : 'out'}`, {
74
104
  dir,
75
- percent: isOut
76
- ? 1 - percent
77
- : isIn
78
- ? percent
79
- : isActive
80
- ? 1
81
- : 0
105
+ percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0,
82
106
  });
83
- });
84
-
107
+ }
85
108
  },
86
109
 
87
110
  percent() {
88
- return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));
111
+ return Math.abs(
112
+ (css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from)
113
+ );
89
114
  },
90
115
 
91
116
  getDistance() {
@@ -93,7 +118,6 @@ export default function (prev, next, dir, {center, easing, list}) {
93
118
  },
94
119
 
95
120
  getItemIn(out = false) {
96
-
97
121
  let actives = this.getActives();
98
122
  let nextActives = inView(list, getLeft(next || prev, list, center));
99
123
 
@@ -103,26 +127,19 @@ export default function (prev, next, dir, {center, easing, list}) {
103
127
  nextActives = temp;
104
128
  }
105
129
 
106
- return nextActives[findIndex(nextActives, el => !includes(actives, el))];
107
-
130
+ return nextActives[findIndex(nextActives, (el) => !includes(actives, el))];
108
131
  },
109
132
 
110
133
  getActives() {
111
134
  return inView(list, getLeft(prev || next, list, center));
112
- }
113
-
135
+ },
114
136
  };
115
-
116
137
  }
117
138
 
118
139
  function getLeft(el, list, center) {
119
-
120
140
  const left = getElLeft(el, list);
121
141
 
122
- return center
123
- ? left - centerEl(el, list)
124
- : Math.min(left, getMax(list));
125
-
142
+ return center ? left - centerEl(el, list) : Math.min(left, getMax(list));
126
143
  }
127
144
 
128
145
  export function getMax(list) {
@@ -138,16 +155,20 @@ function centerEl(el, list) {
138
155
  }
139
156
 
140
157
  export function getElLeft(el, list) {
141
- return el && (position(el).left + (isRtl ? dimensions(el).width - dimensions(list).width : 0)) * (isRtl ? -1 : 1) || 0;
158
+ return (
159
+ (el &&
160
+ (position(el).left + (isRtl ? dimensions(el).width - dimensions(list).width : 0)) *
161
+ (isRtl ? -1 : 1)) ||
162
+ 0
163
+ );
142
164
  }
143
165
 
144
166
  function inView(list, listLeft) {
145
-
146
167
  listLeft -= 1;
147
168
  const listWidth = dimensions(list).width;
148
169
  const listRight = listLeft + listWidth + 2;
149
170
 
150
- return children(list).filter(slide => {
171
+ return children(list).filter((slide) => {
151
172
  const slideLeft = getElLeft(slide, list);
152
173
  const slideRight = slideLeft + Math.min(dimensions(slide).width, listWidth);
153
174