uikit 3.11.2-dev.f2970ffaa → 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 +55 -19
  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 -372
  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 +5324 -6527
  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 +8006 -9663
  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 +21 -46
  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 +175 -123
  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 +78 -49
  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 +87 -99
  216. package/tests/sticky.html +56 -24
  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,9 +1,17 @@
1
1
  import Margin from './margin';
2
2
  import Class from '../mixin/class';
3
- import {addClass, children, css, hasClass, scrolledOver, sortBy, toFloat, toggleClass} from 'uikit-util';
3
+ import {
4
+ addClass,
5
+ children,
6
+ css,
7
+ hasClass,
8
+ scrolledOver,
9
+ sortBy,
10
+ toFloat,
11
+ toggleClass,
12
+ } from 'uikit-util';
4
13
 
5
14
  export default {
6
-
7
15
  extends: Margin,
8
16
 
9
17
  mixins: [Class],
@@ -12,14 +20,14 @@ export default {
12
20
 
13
21
  props: {
14
22
  masonry: Boolean,
15
- parallax: Number
23
+ parallax: Number,
16
24
  },
17
25
 
18
26
  data: {
19
27
  margin: 'uk-grid-margin',
20
28
  clsStack: 'uk-grid-stack',
21
29
  masonry: false,
22
- parallax: 0
30
+ parallax: 0,
23
31
  },
24
32
 
25
33
  connected() {
@@ -27,25 +35,24 @@ export default {
27
35
  },
28
36
 
29
37
  update: [
30
-
31
38
  {
32
-
33
- write({columns}) {
39
+ write({ columns }) {
34
40
  toggleClass(this.$el, this.clsStack, columns.length < 2);
35
41
  },
36
42
 
37
- events: ['resize']
38
-
43
+ events: ['resize'],
39
44
  },
40
45
 
41
46
  {
42
-
43
47
  read(data) {
44
-
45
- let {columns, rows} = data;
48
+ let { columns, rows } = data;
46
49
 
47
50
  // Filter component makes elements positioned absolute
48
- if (!columns.length || !this.masonry && !this.parallax || positionedAbsolute(this.$el)) {
51
+ if (
52
+ !columns.length ||
53
+ (!this.masonry && !this.parallax) ||
54
+ positionedAbsolute(this.$el)
55
+ ) {
49
56
  data.translates = false;
50
57
  return false;
51
58
  }
@@ -58,36 +65,35 @@ export default {
58
65
  const elHeight = Math.max(...columnHeights) + margin;
59
66
 
60
67
  if (this.masonry) {
61
- columns = columns.map(column => sortBy(column, 'offsetTop'));
68
+ columns = columns.map((column) => sortBy(column, 'offsetTop'));
62
69
  translates = getTranslates(rows, columns);
63
70
  }
64
71
 
65
72
  let padding = Math.abs(this.parallax);
66
73
  if (padding) {
67
- padding = columnHeights.reduce((newPadding, hgt, i) =>
68
- Math.max(newPadding, hgt + margin + (i % 2 ? padding : padding / 8) - elHeight)
69
- , 0);
74
+ padding = columnHeights.reduce(
75
+ (newPadding, hgt, i) =>
76
+ Math.max(
77
+ newPadding,
78
+ hgt + margin + (i % 2 ? padding : padding / 8) - elHeight
79
+ ),
80
+ 0
81
+ );
70
82
  }
71
83
 
72
- return {padding, columns, translates, height: translates ? elHeight : ''};
73
-
84
+ return { padding, columns, translates, height: translates ? elHeight : '' };
74
85
  },
75
86
 
76
- write({height, padding}) {
77
-
87
+ write({ height, padding }) {
78
88
  css(this.$el, 'paddingBottom', padding || '');
79
89
  height !== false && css(this.$el, 'height', height);
80
-
81
90
  },
82
91
 
83
- events: ['resize']
84
-
92
+ events: ['resize'],
85
93
  },
86
94
 
87
95
  {
88
-
89
- read({height}) {
90
-
96
+ read() {
91
97
  if (positionedAbsolute(this.$el)) {
92
98
  return false;
93
99
  }
@@ -95,65 +101,58 @@ export default {
95
101
  return {
96
102
  scrolled: this.parallax
97
103
  ? scrolledOver(this.$el) * Math.abs(this.parallax)
98
- : false
104
+ : false,
99
105
  };
100
106
  },
101
107
 
102
- write({columns, scrolled, translates}) {
103
-
108
+ write({ columns, scrolled, translates }) {
104
109
  if (scrolled === false && !translates) {
105
110
  return;
106
111
  }
107
112
 
108
113
  columns.forEach((column, i) =>
109
114
  column.forEach((el, j) =>
110
- css(el, 'transform', !scrolled && !translates ? '' : `translateY(${
111
- (translates && -translates[i][j]) + (scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)
112
- }px)`)
115
+ css(
116
+ el,
117
+ 'transform',
118
+ !scrolled && !translates
119
+ ? ''
120
+ : `translateY(${
121
+ (translates && -translates[i][j]) +
122
+ (scrolled ? (i % 2 ? scrolled : scrolled / 8) : 0)
123
+ }px)`
124
+ )
113
125
  )
114
126
  );
115
-
116
127
  },
117
128
 
118
- events: ['scroll', 'resize']
119
-
120
- }
121
-
122
- ]
123
-
129
+ events: ['scroll', 'resize'],
130
+ },
131
+ ],
124
132
  };
125
133
 
126
134
  function positionedAbsolute(el) {
127
- return children(el).some(el => css(el, 'position') === 'absolute');
135
+ return children(el).some((el) => css(el, 'position') === 'absolute');
128
136
  }
129
137
 
130
138
  function getTranslates(rows, columns) {
139
+ const rowHeights = rows.map((row) => Math.max(...row.map((el) => el.offsetHeight)));
131
140
 
132
- const rowHeights = rows.map(row =>
133
- Math.max(...row.map(el => el.offsetHeight))
134
- );
135
-
136
- return columns.map(elements => {
141
+ return columns.map((elements) => {
137
142
  let prev = 0;
138
- return elements.map((element, row) =>
139
- prev += row
140
- ? rowHeights[row - 1] - elements[row - 1].offsetHeight
141
- : 0
143
+ return elements.map(
144
+ (element, row) =>
145
+ (prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0)
142
146
  );
143
147
  });
144
148
  }
145
149
 
146
150
  function getMarginTop(nodes, cls) {
151
+ const [node] = nodes.filter((el) => hasClass(el, cls));
147
152
 
148
- const [node] = nodes.filter(el => hasClass(el, cls));
149
-
150
- return toFloat(node
151
- ? css(node, 'marginTop')
152
- : css(nodes[0], 'paddingLeft'));
153
+ return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft'));
153
154
  }
154
155
 
155
156
  function getColumnHeights(columns) {
156
- return columns.map(column =>
157
- column.reduce((sum, el) => sum + el.offsetHeight, 0)
158
- );
157
+ return columns.map((column) => column.reduce((sum, el) => sum + el.offsetHeight, 0));
159
158
  }
@@ -1,63 +1,51 @@
1
- import FlexBug from '../mixin/flex-bug';
2
- import {getRows} from './margin';
3
- import {$$, boxModelAdjust, css, dimensions, isVisible, toFloat} from 'uikit-util';
1
+ import { getRows } from './margin';
2
+ import { $$, boxModelAdjust, css, dimensions, isVisible, toFloat } from 'uikit-util';
4
3
 
5
4
  export default {
6
-
7
- mixins: [FlexBug],
8
-
9
5
  args: 'target',
10
6
 
11
7
  props: {
12
8
  target: String,
13
- row: Boolean
9
+ row: Boolean,
14
10
  },
15
11
 
16
12
  data: {
17
13
  target: '> *',
18
14
  row: true,
19
- forceHeight: true
15
+ forceHeight: true,
20
16
  },
21
17
 
22
18
  computed: {
23
-
24
- elements({target}, $el) {
19
+ elements({ target }, $el) {
25
20
  return $$(target, $el);
26
- }
27
-
21
+ },
28
22
  },
29
23
 
30
24
  update: {
31
-
32
25
  read() {
33
26
  return {
34
- rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)
27
+ rows: (this.row ? getRows(this.elements) : [this.elements]).map(match),
35
28
  };
36
29
  },
37
30
 
38
- write({rows}) {
39
- rows.forEach(({heights, elements}) =>
40
- elements.forEach((el, i) =>
41
- css(el, 'minHeight', heights[i])
42
- )
43
- );
31
+ write({ rows }) {
32
+ for (const { heights, elements } of rows) {
33
+ elements.forEach((el, i) => css(el, 'minHeight', heights[i]));
34
+ }
44
35
  },
45
36
 
46
- events: ['resize']
47
-
48
- }
49
-
37
+ events: ['resize'],
38
+ },
50
39
  };
51
40
 
52
41
  function match(elements) {
53
-
54
42
  if (elements.length < 2) {
55
- return {heights: [''], elements};
43
+ return { heights: [''], elements };
56
44
  }
57
45
 
58
46
  let heights = elements.map(getHeight);
59
47
  let max = Math.max(...heights);
60
- const hasMinHeight = elements.some(el => el.style.minHeight);
48
+ const hasMinHeight = elements.some((el) => el.style.minHeight);
61
49
  const hasShrunk = elements.some((el, i) => !el.style.minHeight && heights[i] < max);
62
50
 
63
51
  if (hasMinHeight && hasShrunk) {
@@ -70,11 +58,10 @@ function match(elements) {
70
58
  heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max
71
59
  );
72
60
 
73
- return {heights, elements};
61
+ return { heights, elements };
74
62
  }
75
63
 
76
64
  function getHeight(element) {
77
-
78
65
  let style = false;
79
66
  if (!isVisible(element)) {
80
67
  style = element.style.display;
@@ -1,28 +1,38 @@
1
- import FlexBug from '../mixin/flex-bug';
2
- import {boxModelAdjust, css, dimensions, endsWith, height, isNumeric, isString, isVisible, offset, query, toFloat, trigger} from 'uikit-util';
1
+ import Class from '../mixin/class';
2
+ import {
3
+ boxModelAdjust,
4
+ css,
5
+ dimensions,
6
+ endsWith,
7
+ height,
8
+ isNumeric,
9
+ isString,
10
+ isVisible,
11
+ offset,
12
+ query,
13
+ toFloat,
14
+ trigger,
15
+ } from 'uikit-util';
3
16
 
4
17
  export default {
5
-
6
- mixins: [FlexBug],
18
+ mixins: [Class],
7
19
 
8
20
  props: {
9
21
  expand: Boolean,
10
22
  offsetTop: Boolean,
11
23
  offsetBottom: Boolean,
12
- minHeight: Number
24
+ minHeight: Number,
13
25
  },
14
26
 
15
27
  data: {
16
28
  expand: false,
17
29
  offsetTop: false,
18
30
  offsetBottom: false,
19
- minHeight: 0
31
+ minHeight: 0,
20
32
  },
21
33
 
22
34
  update: {
23
-
24
- read({minHeight: prev}) {
25
-
35
+ read({ minHeight: prev }) {
26
36
  if (!isVisible(this.$el)) {
27
37
  return false;
28
38
  }
@@ -31,49 +41,38 @@ export default {
31
41
  const box = boxModelAdjust(this.$el, 'height', 'content-box');
32
42
 
33
43
  if (this.expand) {
34
-
35
- minHeight = height(window) - (dimensions(document.documentElement).height - dimensions(this.$el).height) - box || '';
36
-
44
+ minHeight =
45
+ height(window) -
46
+ (dimensions(document.documentElement).height -
47
+ dimensions(this.$el).height) -
48
+ box || '';
37
49
  } else {
38
-
39
50
  // on mobile devices (iOS and Android) window.innerHeight !== 100vh
40
51
  minHeight = 'calc(100vh';
41
52
 
42
53
  if (this.offsetTop) {
43
-
44
- const {top} = offset(this.$el);
54
+ const { top } = offset(this.$el);
45
55
  minHeight += top > 0 && top < height(window) / 2 ? ` - ${top}px` : '';
46
-
47
56
  }
48
57
 
49
58
  if (this.offsetBottom === true) {
50
-
51
59
  minHeight += ` - ${dimensions(this.$el.nextElementSibling).height}px`;
52
-
53
60
  } else if (isNumeric(this.offsetBottom)) {
54
-
55
61
  minHeight += ` - ${this.offsetBottom}vh`;
56
-
57
62
  } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {
58
-
59
63
  minHeight += ` - ${toFloat(this.offsetBottom)}px`;
60
-
61
64
  } else if (isString(this.offsetBottom)) {
62
-
63
65
  minHeight += ` - ${dimensions(query(this.offsetBottom, this.$el)).height}px`;
64
-
65
66
  }
66
67
 
67
68
  minHeight += `${box ? ` - ${box}px` : ''})`;
68
-
69
69
  }
70
70
 
71
- return {minHeight, prev};
71
+ return { minHeight, prev };
72
72
  },
73
73
 
74
- write({minHeight, prev}) {
75
-
76
- css(this.$el, {minHeight});
74
+ write({ minHeight, prev }) {
75
+ css(this.$el, { minHeight });
77
76
 
78
77
  if (minHeight !== prev) {
79
78
  trigger(this.$el, 'resize');
@@ -82,11 +81,8 @@ export default {
82
81
  if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {
83
82
  css(this.$el, 'minHeight', this.minHeight);
84
83
  }
85
-
86
84
  },
87
85
 
88
- events: ['resize']
89
-
90
- }
91
-
86
+ events: ['resize'],
87
+ },
92
88
  };
@@ -15,7 +15,19 @@ import slidenavPrevious from '../../images/components/slidenav-previous.svg';
15
15
  import slidenavPreviousLarge from '../../images/components/slidenav-previous-large.svg';
16
16
  import spinner from '../../images/components/spinner.svg';
17
17
  import totop from '../../images/components/totop.svg';
18
- import {$, addClass, apply, css, each, hasClass, hyphenate, isRtl, isString, parents, Promise, swap} from 'uikit-util';
18
+ import {
19
+ $,
20
+ addClass,
21
+ apply,
22
+ css,
23
+ each,
24
+ hasClass,
25
+ hyphenate,
26
+ isRtl,
27
+ isString,
28
+ parents,
29
+ swap,
30
+ } from 'uikit-util';
19
31
 
20
32
  const icons = {
21
33
  spinner,
@@ -33,11 +45,10 @@ const icons = {
33
45
  'slidenav-next': slidenavNext,
34
46
  'slidenav-next-large': slidenavNextLarge,
35
47
  'slidenav-previous': slidenavPrevious,
36
- 'slidenav-previous-large': slidenavPreviousLarge
48
+ 'slidenav-previous-large': slidenavPreviousLarge,
37
49
  };
38
50
 
39
51
  const Icon = {
40
-
41
52
  install,
42
53
 
43
54
  extends: SVG,
@@ -47,7 +58,7 @@ const Icon = {
47
58
  props: ['icon'],
48
59
 
49
60
  data: {
50
- include: ['focusable']
61
+ include: ['focusable'],
51
62
  },
52
63
 
53
64
  isIcon: true,
@@ -57,42 +68,35 @@ const Icon = {
57
68
  },
58
69
 
59
70
  methods: {
60
-
61
- getSvg() {
62
-
71
+ async getSvg() {
63
72
  const icon = getIcon(this.icon);
64
73
 
65
74
  if (!icon) {
66
- return Promise.reject('Icon not found.');
75
+ throw 'Icon not found.';
67
76
  }
68
77
 
69
- return Promise.resolve(icon);
70
- }
71
-
72
- }
73
-
78
+ return icon;
79
+ },
80
+ },
74
81
  };
75
82
 
76
83
  export default Icon;
77
84
 
78
85
  export const IconComponent = {
79
-
80
86
  args: false,
81
87
 
82
88
  extends: Icon,
83
89
 
84
- data: vm => ({
85
- icon: hyphenate(vm.constructor.options.name)
90
+ data: (vm) => ({
91
+ icon: hyphenate(vm.constructor.options.name),
86
92
  }),
87
93
 
88
94
  beforeConnect() {
89
95
  addClass(this.$el, this.$name);
90
- }
91
-
96
+ },
92
97
  };
93
98
 
94
99
  export const Slidenav = {
95
-
96
100
  extends: IconComponent,
97
101
 
98
102
  beforeConnect() {
@@ -100,72 +104,64 @@ export const Slidenav = {
100
104
  },
101
105
 
102
106
  computed: {
103
-
104
- icon({icon}, $el) {
105
- return hasClass($el, 'uk-slidenav-large')
106
- ? `${icon}-large`
107
- : icon;
108
- }
109
-
110
- }
111
-
107
+ icon({ icon }, $el) {
108
+ return hasClass($el, 'uk-slidenav-large') ? `${icon}-large` : icon;
109
+ },
110
+ },
112
111
  };
113
112
 
114
113
  export const Search = {
115
-
116
114
  extends: IconComponent,
117
115
 
118
116
  computed: {
119
-
120
- icon({icon}, $el) {
117
+ icon({ icon }, $el) {
121
118
  return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length
122
119
  ? 'search-large'
123
120
  : parents($el, '.uk-search-navbar').length
124
- ? 'search-navbar'
125
- : icon;
126
- }
127
-
128
- }
129
-
121
+ ? 'search-navbar'
122
+ : icon;
123
+ },
124
+ },
130
125
  };
131
126
 
132
127
  export const Close = {
133
-
134
128
  extends: IconComponent,
135
129
 
136
130
  computed: {
137
-
138
131
  icon() {
139
132
  return `close-${hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'}`;
140
- }
141
-
142
- }
143
-
133
+ },
134
+ },
144
135
  };
145
136
 
146
137
  export const Spinner = {
147
-
148
138
  extends: IconComponent,
149
139
 
150
- connected() {
151
- this.svg.then(svg => svg && this.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this.ratio));
152
- }
140
+ methods: {
141
+ async getSvg() {
142
+ const icon = await Icon.methods.getSvg.call(this);
153
143
 
144
+ if (this.ratio !== 1) {
145
+ css($('circle', icon), 'strokeWidth', 1 / this.ratio);
146
+ }
147
+
148
+ return icon;
149
+ },
150
+ },
154
151
  };
155
152
 
156
153
  const parsed = {};
157
154
  function install(UIkit) {
158
155
  UIkit.icon.add = (name, svg) => {
159
-
160
- const added = isString(name) ? ({[name]: svg}) : name;
156
+ const added = isString(name) ? { [name]: svg } : name;
161
157
  each(added, (svg, name) => {
162
158
  icons[name] = svg;
163
159
  delete parsed[name];
164
160
  });
165
161
 
166
162
  if (UIkit._initialized) {
167
- apply(document.body, el =>
168
- each(UIkit.getComponents(el), cmp => {
163
+ apply(document.body, (el) =>
164
+ each(UIkit.getComponents(el), (cmp) => {
169
165
  cmp.$options.isIcon && cmp.icon in added && cmp.$reset();
170
166
  })
171
167
  );
@@ -174,7 +170,6 @@ function install(UIkit) {
174
170
  }
175
171
 
176
172
  function getIcon(icon) {
177
-
178
173
  if (!icons[icon]) {
179
174
  return null;
180
175
  }