uikit 3.11.2-dev.fb043abc2 → 3.12.2

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 (228) 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 +63 -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 +144 -202
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +144 -202
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +146 -208
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +146 -208
  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/list.less +5 -1
  164. package/src/less/components/modal.less +3 -7
  165. package/src/less/components/navbar.less +0 -7
  166. package/src/less/components/progress.less +14 -36
  167. package/src/less/components/slider.less +3 -3
  168. package/src/less/components/slideshow.less +3 -3
  169. package/src/less/components/text.less +16 -32
  170. package/src/less/components/utility.less +25 -0
  171. package/src/scss/components/base.scss +10 -33
  172. package/src/scss/components/flex.scss +0 -9
  173. package/src/scss/components/form-range.scss +48 -95
  174. package/src/scss/components/form.scss +3 -4
  175. package/src/scss/components/height.scss +3 -0
  176. package/src/scss/components/icon.scss +2 -2
  177. package/src/scss/components/leader.scss +0 -1
  178. package/src/scss/components/lightbox.scss +0 -1
  179. package/src/scss/components/list.scss +5 -1
  180. package/src/scss/components/modal.scss +3 -7
  181. package/src/scss/components/navbar.scss +0 -7
  182. package/src/scss/components/progress.scss +14 -36
  183. package/src/scss/components/search.scss +1 -1
  184. package/src/scss/components/slider.scss +3 -3
  185. package/src/scss/components/slideshow.scss +3 -3
  186. package/src/scss/components/text.scss +16 -32
  187. package/src/scss/components/utility.scss +25 -0
  188. package/src/scss/mixins-theme.scss +1 -1
  189. package/src/scss/mixins.scss +1 -1
  190. package/src/scss/variables-theme.scss +9 -9
  191. package/src/scss/variables.scss +9 -9
  192. package/tests/align.html +10 -10
  193. package/tests/animation.html +2 -2
  194. package/tests/article.html +2 -2
  195. package/tests/base.html +3 -3
  196. package/tests/card.html +10 -10
  197. package/tests/column.html +3 -3
  198. package/tests/comment.html +9 -9
  199. package/tests/countdown.html +10 -8
  200. package/tests/dotnav.html +3 -3
  201. package/tests/image.html +296 -64
  202. package/tests/images/image-type.avif +0 -0
  203. package/tests/images/image-type.jpeg +0 -0
  204. package/tests/images/image-type.webp +0 -0
  205. package/tests/index.html +8 -8
  206. package/tests/js/index.js +114 -85
  207. package/tests/lightbox.html +10 -10
  208. package/tests/marker.html +2 -2
  209. package/tests/modal.html +8 -9
  210. package/tests/navbar.html +2 -2
  211. package/tests/overlay.html +7 -7
  212. package/tests/parallax.html +16 -7
  213. package/tests/position.html +12 -12
  214. package/tests/slidenav.html +12 -12
  215. package/tests/slider.html +20 -20
  216. package/tests/sortable.html +1 -1
  217. package/tests/sticky-parallax.html +57 -72
  218. package/tests/sticky.html +14 -3
  219. package/tests/svg.html +6 -6
  220. package/tests/table.html +11 -11
  221. package/tests/thumbnav.html +12 -12
  222. package/tests/transition.html +30 -30
  223. package/tests/utility.html +50 -33
  224. package/tests/video.html +1 -1
  225. package/tests/width.html +1 -1
  226. package/src/js/mixin/flex-bug.js +0 -56
  227. package/src/js/util/promise.js +0 -191
  228. package/tests/images/animated.gif +0 -0
@@ -1,16 +1,29 @@
1
1
  import Class from '../mixin/class';
2
- import Slider, {speedUp} from '../mixin/slider';
2
+ import Slider, { speedUp } from '../mixin/slider';
3
3
  import SliderReactive from '../mixin/slider-reactive';
4
- import Transitioner, {getMax, getWidth} from './internal/slider-transitioner';
5
- import {$, addClass, children, css, data, dimensions, findIndex, includes, isEmpty, last, sortBy, toFloat, toggleClass, toNumber} from 'uikit-util';
4
+ import SliderPreload from './internal/slider-preload';
5
+ import Transitioner, { getMax, getWidth } from './internal/slider-transitioner';
6
+ import {
7
+ $,
8
+ addClass,
9
+ children,
10
+ css,
11
+ data,
12
+ dimensions,
13
+ findIndex,
14
+ includes,
15
+ last,
16
+ toFloat,
17
+ toggleClass,
18
+ toNumber,
19
+ } from 'uikit-util';
6
20
 
7
21
  export default {
8
-
9
- mixins: [Class, Slider, SliderReactive],
22
+ mixins: [Class, Slider, SliderReactive, SliderPreload],
10
23
 
11
24
  props: {
12
25
  center: Boolean,
13
- sets: Boolean
26
+ sets: Boolean,
14
27
  },
15
28
 
16
29
  data: {
@@ -20,22 +33,24 @@ export default {
20
33
  selList: '.uk-slider-items',
21
34
  selNav: '.uk-slider-nav',
22
35
  clsContainer: 'uk-slider-container',
23
- Transitioner
36
+ Transitioner,
24
37
  },
25
38
 
26
39
  computed: {
27
-
28
40
  avgWidth() {
29
41
  return getWidth(this.list) / this.length;
30
42
  },
31
43
 
32
- finite({finite}) {
33
- return finite || Math.ceil(getWidth(this.list)) < Math.floor(dimensions(this.list).width + getMaxElWidth(this.list) + this.center);
44
+ finite({ finite }) {
45
+ return (
46
+ finite ||
47
+ Math.ceil(getWidth(this.list)) <
48
+ Math.floor(dimensions(this.list).width + getMaxElWidth(this.list) + this.center)
49
+ );
34
50
  },
35
51
 
36
52
  maxIndex() {
37
-
38
- if (!this.finite || this.center && !this.sets) {
53
+ if (!this.finite || (this.center && !this.sets)) {
39
54
  return this.length - 1;
40
55
  }
41
56
 
@@ -45,73 +60,58 @@ export default {
45
60
 
46
61
  let lft = 0;
47
62
  const max = getMax(this.list);
48
- const index = findIndex(this.slides, el => {
49
-
63
+ const index = findIndex(this.slides, (el) => {
50
64
  if (lft >= max) {
51
65
  return true;
52
66
  }
53
67
 
54
68
  lft += dimensions(el).width;
55
-
56
69
  });
57
70
 
58
71
  return ~index ? index : this.length - 1;
59
72
  },
60
73
 
61
- sets({sets}) {
62
-
63
- if (!sets) {
74
+ sets({ sets: enabled }) {
75
+ if (!enabled) {
64
76
  return;
65
77
  }
66
78
 
67
- const width = dimensions(this.list).width / (this.center ? 2 : 1);
68
-
69
79
  let left = 0;
70
- let leftCenter = width;
71
- let slideLeft = 0;
72
-
73
- sets = sortBy(this.slides, 'offsetLeft').reduce((sets, slide, i) => {
74
-
75
- const slideWidth = dimensions(slide).width;
76
- const slideRight = slideLeft + slideWidth;
77
-
78
- if (slideRight > left) {
79
-
80
- if (!this.center && i > this.maxIndex) {
81
- i = this.maxIndex;
82
- }
83
-
84
- if (!includes(sets, i)) {
80
+ const sets = [];
81
+ const width = dimensions(this.list).width;
82
+ for (let i in this.slides) {
83
+ const slideWidth = dimensions(this.slides[i]).width;
85
84
 
86
- const cmp = this.slides[i + 1];
87
- if (this.center && cmp && slideWidth < leftCenter - dimensions(cmp).width / 2) {
88
- leftCenter -= slideWidth;
89
- } else {
90
- leftCenter = width;
91
- sets.push(i);
92
- left = slideLeft + width + (this.center ? slideWidth / 2 : 0);
93
- }
85
+ if (left + slideWidth > width) {
86
+ left = 0;
87
+ }
94
88
 
89
+ if (this.center) {
90
+ if (
91
+ left < width / 2 &&
92
+ left + slideWidth + dimensions(this.slides[+i + 1]).width / 2 > width / 2
93
+ ) {
94
+ sets.push(+i);
95
+ left = width / 2 - slideWidth / 2;
95
96
  }
97
+ } else if (left === 0) {
98
+ sets.push(Math.min(+i, this.maxIndex));
96
99
  }
97
100
 
98
- slideLeft += slideWidth;
101
+ left += slideWidth;
102
+ }
99
103
 
104
+ if (sets.length) {
100
105
  return sets;
101
-
102
- }, []);
103
-
104
- return !isEmpty(sets) && sets;
105
-
106
+ }
106
107
  },
107
108
 
108
109
  transitionOptions() {
109
110
  return {
110
111
  center: this.center,
111
- list: this.list
112
+ list: this.list,
112
113
  };
113
- }
114
-
114
+ },
115
115
  },
116
116
 
117
117
  connected() {
@@ -119,48 +119,49 @@ export default {
119
119
  },
120
120
 
121
121
  update: {
122
-
123
122
  write() {
124
- this.navItems.forEach(el => {
123
+ for (const el of this.navItems) {
125
124
  const index = toNumber(data(el, this.attrItem));
126
125
  if (index !== false) {
127
- el.hidden = !this.maxIndex || index > this.maxIndex || this.sets && !includes(this.sets, index);
126
+ el.hidden =
127
+ !this.maxIndex ||
128
+ index > this.maxIndex ||
129
+ (this.sets && !includes(this.sets, index));
128
130
  }
129
- });
131
+ }
130
132
 
131
133
  if (this.length && !this.dragging && !this.stack.length) {
132
134
  this.reorder();
133
135
  this._translate(1);
134
136
  }
135
137
 
136
- const actives = this._getTransitioner(this.index).getActives();
137
- this.slides.forEach(slide => toggleClass(slide, this.clsActive, includes(actives, slide)));
138
-
139
- if (this.clsActivated && (!this.sets || includes(this.sets, toFloat(this.index)))) {
140
- this.slides.forEach(slide => toggleClass(slide, this.clsActivated || '', includes(actives, slide)));
141
- }
138
+ this.updateActiveClasses();
142
139
  },
143
140
 
144
- events: ['resize']
145
-
141
+ events: ['resize'],
146
142
  },
147
143
 
148
144
  events: {
149
-
150
145
  beforeitemshow(e) {
151
-
152
- if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {
146
+ if (
147
+ !this.dragging &&
148
+ this.sets &&
149
+ this.stack.length < 2 &&
150
+ !includes(this.sets, this.index)
151
+ ) {
153
152
  this.index = this.getValidIndex();
154
153
  }
155
154
 
156
155
  const diff = Math.abs(
157
- this.index
158
- - this.prevIndex
159
- + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)
156
+ this.index -
157
+ this.prevIndex +
158
+ ((this.dir > 0 && this.index < this.prevIndex) ||
159
+ (this.dir < 0 && this.index > this.prevIndex)
160
+ ? (this.maxIndex + 1) * this.dir
161
+ : 0)
160
162
  );
161
163
 
162
164
  if (!this.dragging && diff > 1) {
163
-
164
165
  for (let i = 0; i < diff; i++) {
165
166
  this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');
166
167
  }
@@ -169,25 +170,28 @@ export default {
169
170
  return;
170
171
  }
171
172
 
172
- const index = this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;
173
- this.duration = speedUp(this.avgWidth / this.velocity) * (dimensions(this.slides[index]).width / this.avgWidth);
173
+ const index =
174
+ this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;
175
+ this.duration =
176
+ speedUp(this.avgWidth / this.velocity) *
177
+ (dimensions(this.slides[index]).width / this.avgWidth);
174
178
 
175
179
  this.reorder();
176
-
177
180
  },
178
181
 
179
182
  itemshow() {
180
183
  if (~this.prevIndex) {
181
184
  addClass(this._getTransitioner().getItemIn(), this.clsActive);
182
185
  }
183
- }
186
+ },
184
187
 
188
+ itemshown() {
189
+ this.updateActiveClasses();
190
+ },
185
191
  },
186
192
 
187
193
  methods: {
188
-
189
194
  reorder() {
190
-
191
195
  if (this.finite) {
192
196
  css(this.slides, 'order', '');
193
197
  return;
@@ -196,11 +200,10 @@ export default {
196
200
  const index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;
197
201
 
198
202
  this.slides.forEach((slide, i) =>
199
- css(slide, 'order', this.dir > 0 && i < index
200
- ? 1
201
- : this.dir < 0 && i >= this.index
202
- ? -1
203
- : ''
203
+ css(
204
+ slide,
205
+ 'order',
206
+ this.dir > 0 && i < index ? 1 : this.dir < 0 && i >= this.index ? -1 : ''
204
207
  )
205
208
  );
206
209
 
@@ -219,11 +222,21 @@ export default {
219
222
  css(slide, 'order', slideIndex > index ? -2 : -1);
220
223
  width -= dimensions(slide).width;
221
224
  }
225
+ },
222
226
 
227
+ updateActiveClasses() {
228
+ const actives = this._getTransitioner(this.index).getActives();
229
+ const activeClasses = [
230
+ this.clsActive,
231
+ ((!this.sets || includes(this.sets, toFloat(this.index))) && this.clsActivated) ||
232
+ '',
233
+ ];
234
+ for (const slide of this.slides) {
235
+ toggleClass(slide, activeClasses, includes(actives, slide));
236
+ }
223
237
  },
224
238
 
225
239
  getValidIndex(index = this.index, prevIndex = this.prevIndex) {
226
-
227
240
  index = this.getIndex(index, prevIndex);
228
241
 
229
242
  if (!this.sets) {
@@ -233,23 +246,38 @@ export default {
233
246
  let prev;
234
247
 
235
248
  do {
236
-
237
249
  if (includes(this.sets, index)) {
238
250
  return index;
239
251
  }
240
252
 
241
253
  prev = index;
242
254
  index = this.getIndex(index + this.dir, prevIndex);
243
-
244
255
  } while (index !== prev);
245
256
 
246
257
  return index;
247
- }
248
-
249
- }
258
+ },
250
259
 
260
+ getAdjacentSlides() {
261
+ const { width } = dimensions(this.list);
262
+ const left = -width;
263
+ const right = width * 2;
264
+ const slideWidth = dimensions(this.slides[this.index]).width;
265
+ const slideLeft = this.center ? width / 2 - slideWidth / 2 : 0;
266
+ const slides = new Set();
267
+ for (const i of [-1, 1]) {
268
+ let currentLeft = slideLeft + (i > 0 ? slideWidth : 0);
269
+ let j = 0;
270
+ do {
271
+ const slide = this.slides[this.getIndex(this.index + i + j++ * i)];
272
+ currentLeft += dimensions(slide).width * i;
273
+ slides.add(slide);
274
+ } while (this.slides.length > j && currentLeft > left && currentLeft < right);
275
+ }
276
+ return Array.from(slides);
277
+ },
278
+ },
251
279
  };
252
280
 
253
281
  function getMaxElWidth(list) {
254
- return Math.max(0, ...children(list).map(el => dimensions(el).width));
282
+ return Math.max(0, ...children(list).map((el) => dimensions(el).width));
255
283
  }
@@ -1 +1 @@
1
- export {default} from './slider-parallax';
1
+ export { default } from './slider-parallax';
@@ -2,16 +2,16 @@ import Class from '../mixin/class';
2
2
  import Slideshow from '../mixin/slideshow';
3
3
  import Animations from './internal/slideshow-animations';
4
4
  import SliderReactive from '../mixin/slider-reactive';
5
- import {boxModelAdjust, css} from 'uikit-util';
5
+ import SliderPreload from './internal/slider-preload';
6
+ import { boxModelAdjust, css } from 'uikit-util';
6
7
 
7
8
  export default {
8
-
9
- mixins: [Class, Slideshow, SliderReactive],
9
+ mixins: [Class, Slideshow, SliderReactive, SliderPreload],
10
10
 
11
11
  props: {
12
12
  ratio: String,
13
13
  minHeight: Number,
14
- maxHeight: Number
14
+ maxHeight: Number,
15
15
  },
16
16
 
17
17
  data: {
@@ -21,20 +21,18 @@ export default {
21
21
  selList: '.uk-slideshow-items',
22
22
  attrItem: 'uk-slideshow-item',
23
23
  selNav: '.uk-slideshow-nav',
24
- Animations
24
+ Animations,
25
25
  },
26
26
 
27
27
  update: {
28
-
29
28
  read() {
30
-
31
29
  if (!this.list) {
32
30
  return false;
33
31
  }
34
32
 
35
33
  let [width, height] = this.ratio.split(':').map(Number);
36
34
 
37
- height = height * this.list.offsetWidth / width || 0;
35
+ height = (height * this.list.offsetWidth) / width || 0;
38
36
 
39
37
  if (this.minHeight) {
40
38
  height = Math.max(this.minHeight, height);
@@ -44,15 +42,19 @@ export default {
44
42
  height = Math.min(this.maxHeight, height);
45
43
  }
46
44
 
47
- return {height: height - boxModelAdjust(this.list, 'height', 'content-box')};
45
+ return { height: height - boxModelAdjust(this.list, 'height', 'content-box') };
48
46
  },
49
47
 
50
- write({height}) {
48
+ write({ height }) {
51
49
  height > 0 && css(this.list, 'minHeight', height);
52
50
  },
53
51
 
54
- events: ['resize']
55
-
56
- }
52
+ events: ['resize'],
53
+ },
57
54
 
55
+ methods: {
56
+ getAdjacentSlides() {
57
+ return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);
58
+ },
59
+ },
58
60
  };