uikit 3.11.2-dev.28b7953b9 → 3.11.2-dev.29f2881ed

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 (223) 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 +42 -29
  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 +127 -201
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +127 -201
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +129 -207
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +129 -207
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +88 -133
  27. package/dist/js/components/countdown.min.js +1 -1
  28. package/dist/js/components/filter.js +408 -439
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1098 -1316
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1144 -1393
  33. package/dist/js/components/lightbox.min.js +1 -1
  34. package/dist/js/components/notification.js +94 -114
  35. package/dist/js/components/notification.min.js +1 -1
  36. package/dist/js/components/parallax.js +345 -358
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +343 -357
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +768 -843
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +343 -357
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +643 -826
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +587 -620
  47. package/dist/js/components/sortable.min.js +1 -1
  48. package/dist/js/components/tooltip.js +324 -356
  49. package/dist/js/components/tooltip.min.js +1 -1
  50. package/dist/js/components/upload.js +155 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5339 -6661
  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 +8156 -9889
  57. package/dist/js/uikit.min.js +1 -1
  58. package/jsconfig.json +1 -1
  59. package/package.json +64 -60
  60. package/src/js/api/boot.js +25 -32
  61. package/src/js/api/component.js +15 -28
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +14 -33
  64. package/src/js/api/instance.js +7 -15
  65. package/src/js/api/state.js +65 -82
  66. package/src/js/components/countdown.js +24 -50
  67. package/src/js/components/filter.js +70 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +14 -25
  70. package/src/js/components/internal/slider-preload.js +37 -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 +95 -64
  79. package/src/js/components/slideshow-parallax.js +1 -1
  80. package/src/js/components/slideshow.js +15 -44
  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 +52 -63
  84. package/src/js/core/accordion.js +53 -48
  85. package/src/js/core/alert.js +9 -17
  86. package/src/js/core/core.js +74 -53
  87. package/src/js/core/cover.js +11 -15
  88. package/src/js/core/drop.js +106 -92
  89. package/src/js/core/form-custom.js +20 -25
  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 +28 -35
  94. package/src/js/core/icon.js +47 -52
  95. package/src/js/core/img.js +80 -78
  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 +112 -88
  102. package/src/js/core/offcanvas.js +49 -53
  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 +156 -118
  109. package/src/js/core/svg.js +68 -83
  110. package/src/js/core/switcher.js +47 -46
  111. package/src/js/core/tab.js +7 -10
  112. package/src/js/core/toggle.js +66 -67
  113. package/src/js/core/video.js +11 -22
  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/media.js +5 -10
  122. package/src/js/mixin/modal.js +89 -66
  123. package/src/js/mixin/parallax.js +149 -106
  124. package/src/js/mixin/position.js +26 -20
  125. package/src/js/mixin/slider-autoplay.js +12 -21
  126. package/src/js/mixin/slider-drag.js +64 -65
  127. package/src/js/mixin/slider-nav.js +26 -35
  128. package/src/js/mixin/slider-reactive.js +2 -8
  129. package/src/js/mixin/slider.js +48 -55
  130. package/src/js/mixin/slideshow.js +13 -19
  131. package/src/js/mixin/togglable.js +89 -63
  132. package/src/js/uikit-core.js +2 -4
  133. package/src/js/uikit.js +2 -4
  134. package/src/js/util/ajax.js +25 -40
  135. package/src/js/util/animation.js +77 -75
  136. package/src/js/util/attr.js +17 -21
  137. package/src/js/util/class.js +14 -52
  138. package/src/js/util/dimensions.js +58 -45
  139. package/src/js/util/dom.js +39 -66
  140. package/src/js/util/env.js +7 -12
  141. package/src/js/util/event.js +60 -59
  142. package/src/js/util/fastdom.js +1 -6
  143. package/src/js/util/filter.js +17 -34
  144. package/src/js/util/index.js +0 -1
  145. package/src/js/util/lang.js +82 -121
  146. package/src/js/util/mouse.js +19 -17
  147. package/src/js/util/options.js +32 -46
  148. package/src/js/util/player.js +41 -36
  149. package/src/js/util/position.js +54 -46
  150. package/src/js/util/selector.js +43 -58
  151. package/src/js/util/style.js +39 -49
  152. package/src/js/util/viewport.js +75 -64
  153. package/src/less/components/base.less +10 -33
  154. package/src/less/components/flex.less +0 -9
  155. package/src/less/components/form-range.less +48 -95
  156. package/src/less/components/form.less +0 -1
  157. package/src/less/components/height.less +3 -0
  158. package/src/less/components/leader.less +0 -1
  159. package/src/less/components/lightbox.less +0 -1
  160. package/src/less/components/modal.less +3 -7
  161. package/src/less/components/navbar.less +0 -7
  162. package/src/less/components/progress.less +14 -36
  163. package/src/less/components/slider.less +0 -3
  164. package/src/less/components/slideshow.less +0 -3
  165. package/src/less/components/text.less +16 -32
  166. package/src/less/components/utility.less +22 -0
  167. package/src/scss/components/base.scss +10 -33
  168. package/src/scss/components/flex.scss +0 -9
  169. package/src/scss/components/form-range.scss +48 -95
  170. package/src/scss/components/form.scss +3 -4
  171. package/src/scss/components/height.scss +3 -0
  172. package/src/scss/components/icon.scss +2 -2
  173. package/src/scss/components/leader.scss +0 -1
  174. package/src/scss/components/lightbox.scss +0 -1
  175. package/src/scss/components/modal.scss +3 -7
  176. package/src/scss/components/navbar.scss +0 -7
  177. package/src/scss/components/progress.scss +14 -36
  178. package/src/scss/components/search.scss +1 -1
  179. package/src/scss/components/slider.scss +0 -3
  180. package/src/scss/components/slideshow.scss +0 -3
  181. package/src/scss/components/text.scss +16 -32
  182. package/src/scss/components/utility.scss +22 -0
  183. package/src/scss/mixins-theme.scss +1 -1
  184. package/src/scss/mixins.scss +1 -1
  185. package/src/scss/variables-theme.scss +9 -9
  186. package/src/scss/variables.scss +9 -9
  187. package/tests/align.html +10 -10
  188. package/tests/animation.html +2 -2
  189. package/tests/article.html +2 -2
  190. package/tests/base.html +3 -3
  191. package/tests/card.html +10 -10
  192. package/tests/column.html +3 -3
  193. package/tests/comment.html +9 -9
  194. package/tests/dotnav.html +3 -3
  195. package/tests/image.html +296 -54
  196. package/tests/images/image-type.avif +0 -0
  197. package/tests/images/image-type.jpeg +0 -0
  198. package/tests/images/image-type.webp +0 -0
  199. package/tests/index.html +8 -8
  200. package/tests/js/index.js +114 -85
  201. package/tests/lightbox.html +10 -10
  202. package/tests/marker.html +2 -2
  203. package/tests/modal.html +8 -9
  204. package/tests/navbar.html +2 -2
  205. package/tests/overlay.html +7 -7
  206. package/tests/parallax.html +14 -5
  207. package/tests/position.html +12 -12
  208. package/tests/slidenav.html +12 -12
  209. package/tests/slider.html +20 -20
  210. package/tests/sortable.html +1 -1
  211. package/tests/sticky-parallax.html +55 -70
  212. package/tests/svg.html +6 -6
  213. package/tests/table.html +11 -11
  214. package/tests/thumbnav.html +12 -12
  215. package/tests/transition.html +30 -30
  216. package/tests/utility.html +33 -33
  217. package/tests/video.html +1 -1
  218. package/tests/width.html +1 -1
  219. package/src/js/mixin/flex-bug.js +0 -56
  220. package/src/js/util/promise.js +0 -191
  221. package/tests/images/animated.gif +0 -0
  222. package/tests/images/test.avif +0 -0
  223. package/tests/images/test.webp +0 -0
@@ -1,22 +1,20 @@
1
1
  import Class from '../mixin/class';
2
- import {$, $$, closest, isInput, matches, parent, query, selInput} from 'uikit-util';
2
+ import { $, $$, closest, isInput, matches, parent, query, selInput } from 'uikit-util';
3
3
 
4
4
  export default {
5
-
6
5
  mixins: [Class],
7
6
 
8
7
  args: 'target',
9
8
 
10
9
  props: {
11
- target: Boolean
10
+ target: Boolean,
12
11
  },
13
12
 
14
13
  data: {
15
- target: false
14
+ target: false,
16
15
  },
17
16
 
18
17
  computed: {
19
-
20
18
  input(_, $el) {
21
19
  return $(selInput, $el);
22
20
  },
@@ -25,18 +23,17 @@ export default {
25
23
  return this.input.nextElementSibling;
26
24
  },
27
25
 
28
- target({target}, $el) {
29
- return target && (target === true
30
- && parent(this.input) === $el
31
- && this.input.nextElementSibling
32
- || query(target, $el));
33
- }
34
-
26
+ target({ target }, $el) {
27
+ return (
28
+ target &&
29
+ ((target === true && parent(this.input) === $el && this.input.nextElementSibling) ||
30
+ query(target, $el))
31
+ );
32
+ },
35
33
  },
36
34
 
37
35
  update() {
38
-
39
- const {target, input} = this;
36
+ const { target, input } = this;
40
37
 
41
38
  if (!target) {
42
39
  return;
@@ -45,26 +42,26 @@ export default {
45
42
  let option;
46
43
  const prop = isInput(target) ? 'value' : 'textContent';
47
44
  const prev = target[prop];
48
- const value = input.files && input.files[0]
49
- ? input.files[0].name
50
- : matches(input, 'select') && (option = $$('option', input).filter(el => el.selected)[0]) // eslint-disable-line prefer-destructuring
45
+ const value =
46
+ input.files && input.files[0]
47
+ ? input.files[0].name
48
+ : matches(input, 'select') &&
49
+ (option = $$('option', input).filter((el) => el.selected)[0]) // eslint-disable-line prefer-destructuring
51
50
  ? option.textContent
52
51
  : input.value;
53
52
 
54
53
  if (prev !== value) {
55
54
  target[prop] = value;
56
55
  }
57
-
58
56
  },
59
57
 
60
58
  events: [
61
-
62
59
  {
63
60
  name: 'change',
64
61
 
65
62
  handler() {
66
63
  this.$update();
67
- }
64
+ },
68
65
  },
69
66
 
70
67
  {
@@ -76,9 +73,7 @@ export default {
76
73
 
77
74
  handler() {
78
75
  this.$update();
79
- }
80
- }
81
-
82
- ]
83
-
76
+ },
77
+ },
78
+ ],
84
79
  };
@@ -1,12 +1,9 @@
1
- import {isInView} from 'uikit-util';
1
+ import { isInView } from 'uikit-util';
2
2
 
3
3
  // Deprecated
4
4
  export default {
5
-
6
5
  update: {
7
-
8
6
  read(data) {
9
-
10
7
  const inview = isInView(this.$el);
11
8
 
12
9
  if (!inview || data.isInView === inview) {
@@ -20,7 +17,6 @@ export default {
20
17
  this.$el.src = '' + this.$el.src; // force self-assign
21
18
  },
22
19
 
23
- events: ['scroll', 'resize']
24
- }
25
-
20
+ events: ['scroll', 'resize'],
21
+ },
26
22
  };
@@ -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,35 @@
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 {
2
+ boxModelAdjust,
3
+ css,
4
+ dimensions,
5
+ endsWith,
6
+ height,
7
+ isNumeric,
8
+ isString,
9
+ isVisible,
10
+ offset,
11
+ query,
12
+ toFloat,
13
+ trigger,
14
+ } from 'uikit-util';
3
15
 
4
16
  export default {
5
-
6
- mixins: [FlexBug],
7
-
8
17
  props: {
9
18
  expand: Boolean,
10
19
  offsetTop: Boolean,
11
20
  offsetBottom: Boolean,
12
- minHeight: Number
21
+ minHeight: Number,
13
22
  },
14
23
 
15
24
  data: {
16
25
  expand: false,
17
26
  offsetTop: false,
18
27
  offsetBottom: false,
19
- minHeight: 0
28
+ minHeight: 0,
20
29
  },
21
30
 
22
31
  update: {
23
-
24
- read({minHeight: prev}) {
25
-
32
+ read({ minHeight: prev }) {
26
33
  if (!isVisible(this.$el)) {
27
34
  return false;
28
35
  }
@@ -31,49 +38,38 @@ export default {
31
38
  const box = boxModelAdjust(this.$el, 'height', 'content-box');
32
39
 
33
40
  if (this.expand) {
34
-
35
- minHeight = height(window) - (dimensions(document.documentElement).height - dimensions(this.$el).height) - box || '';
36
-
41
+ minHeight =
42
+ height(window) -
43
+ (dimensions(document.documentElement).height -
44
+ dimensions(this.$el).height) -
45
+ box || '';
37
46
  } else {
38
-
39
47
  // on mobile devices (iOS and Android) window.innerHeight !== 100vh
40
48
  minHeight = 'calc(100vh';
41
49
 
42
50
  if (this.offsetTop) {
43
-
44
- const {top} = offset(this.$el);
51
+ const { top } = offset(this.$el);
45
52
  minHeight += top > 0 && top < height(window) / 2 ? ` - ${top}px` : '';
46
-
47
53
  }
48
54
 
49
55
  if (this.offsetBottom === true) {
50
-
51
56
  minHeight += ` - ${dimensions(this.$el.nextElementSibling).height}px`;
52
-
53
57
  } else if (isNumeric(this.offsetBottom)) {
54
-
55
58
  minHeight += ` - ${this.offsetBottom}vh`;
56
-
57
59
  } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {
58
-
59
60
  minHeight += ` - ${toFloat(this.offsetBottom)}px`;
60
-
61
61
  } else if (isString(this.offsetBottom)) {
62
-
63
62
  minHeight += ` - ${dimensions(query(this.offsetBottom, this.$el)).height}px`;
64
-
65
63
  }
66
64
 
67
65
  minHeight += `${box ? ` - ${box}px` : ''})`;
68
-
69
66
  }
70
67
 
71
- return {minHeight, prev};
68
+ return { minHeight, prev };
72
69
  },
73
70
 
74
- write({minHeight, prev}) {
75
-
76
- css(this.$el, {minHeight});
71
+ write({ minHeight, prev }) {
72
+ css(this.$el, { minHeight });
77
73
 
78
74
  if (minHeight !== prev) {
79
75
  trigger(this.$el, 'resize');
@@ -82,11 +78,8 @@ export default {
82
78
  if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {
83
79
  css(this.$el, 'minHeight', this.minHeight);
84
80
  }
85
-
86
81
  },
87
82
 
88
- events: ['resize']
89
-
90
- }
91
-
83
+ events: ['resize'],
84
+ },
92
85
  };