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,8 +1,21 @@
1
1
  import Container from '../mixin/container';
2
- import {$, append, apply, closest, css, parent, pointerEnter, pointerLeave, remove, startsWith, toFloat, Transition, trigger} from 'uikit-util';
2
+ import {
3
+ $,
4
+ append,
5
+ apply,
6
+ closest,
7
+ css,
8
+ parent,
9
+ pointerEnter,
10
+ pointerLeave,
11
+ remove,
12
+ startsWith,
13
+ toFloat,
14
+ Transition,
15
+ trigger,
16
+ } from 'uikit-util';
3
17
 
4
18
  export default {
5
-
6
19
  mixins: [Container],
7
20
 
8
21
  functional: true,
@@ -17,53 +30,53 @@ export default {
17
30
  pos: 'top-center',
18
31
  clsContainer: 'uk-notification',
19
32
  clsClose: 'uk-notification-close',
20
- clsMsg: 'uk-notification-message'
33
+ clsMsg: 'uk-notification-message',
21
34
  },
22
35
 
23
36
  install,
24
37
 
25
38
  computed: {
26
-
27
- marginProp({pos}) {
39
+ marginProp({ pos }) {
28
40
  return `margin${startsWith(pos, 'top') ? 'Top' : 'Bottom'}`;
29
41
  },
30
42
 
31
43
  startProps() {
32
- return {opacity: 0, [this.marginProp]: -this.$el.offsetHeight};
33
- }
34
-
44
+ return { opacity: 0, [this.marginProp]: -this.$el.offsetHeight };
45
+ },
35
46
  },
36
47
 
37
48
  created() {
38
-
39
- const container = $(`.${this.clsContainer}-${this.pos}`, this.container)
40
- || append(this.container, `<div class="${this.clsContainer} ${this.clsContainer}-${this.pos}" style="display: block"></div>`);
41
-
42
- this.$mount(append(container,
43
- `<div class="${this.clsMsg}${this.status ? ` ${this.clsMsg}-${this.status}` : ''}">
49
+ const container =
50
+ $(`.${this.clsContainer}-${this.pos}`, this.container) ||
51
+ append(
52
+ this.container,
53
+ `<div class="${this.clsContainer} ${this.clsContainer}-${this.pos}" style="display: block"></div>`
54
+ );
55
+
56
+ this.$mount(
57
+ append(
58
+ container,
59
+ `<div class="${this.clsMsg}${this.status ? ` ${this.clsMsg}-${this.status}` : ''}">
44
60
  <a href class="${this.clsClose}" data-uk-close></a>
45
61
  <div>${this.message}</div>
46
62
  </div>`
47
- ));
48
-
63
+ )
64
+ );
49
65
  },
50
66
 
51
- connected() {
52
-
67
+ async connected() {
53
68
  const margin = toFloat(css(this.$el, this.marginProp));
54
- Transition.start(
55
- css(this.$el, this.startProps),
56
- {opacity: 1, [this.marginProp]: margin}
57
- ).then(() => {
58
- if (this.timeout) {
59
- this.timer = setTimeout(this.close, this.timeout);
60
- }
69
+ await Transition.start(css(this.$el, this.startProps), {
70
+ opacity: 1,
71
+ [this.marginProp]: margin,
61
72
  });
62
73
 
74
+ if (this.timeout) {
75
+ this.timer = setTimeout(this.close, this.timeout);
76
+ }
63
77
  },
64
78
 
65
79
  events: {
66
-
67
80
  click(e) {
68
81
  if (closest(e.target, 'a[href="#"],a[href=""]')) {
69
82
  e.preventDefault();
@@ -81,45 +94,38 @@ export default {
81
94
  if (this.timeout) {
82
95
  this.timer = setTimeout(this.close, this.timeout);
83
96
  }
84
- }
85
-
97
+ },
86
98
  },
87
99
 
88
100
  methods: {
89
-
90
- close(immediate) {
91
-
92
- const removeFn = el => {
93
-
101
+ async close(immediate) {
102
+ const removeFn = (el) => {
94
103
  const container = parent(el);
95
104
 
96
105
  trigger(el, 'close', [this]);
97
106
  remove(el);
98
107
 
99
- if (container && !container.hasChildNodes()) {
108
+ if (!container?.hasChildNodes()) {
100
109
  remove(container);
101
110
  }
102
-
103
111
  };
104
112
 
105
113
  if (this.timer) {
106
114
  clearTimeout(this.timer);
107
115
  }
108
116
 
109
- if (immediate) {
110
- removeFn(this.$el);
111
- } else {
112
- Transition.start(this.$el, this.startProps).then(removeFn);
117
+ if (!immediate) {
118
+ await Transition.start(this.$el, this.startProps);
113
119
  }
114
- }
115
-
116
- }
117
120
 
121
+ removeFn(this.$el);
122
+ },
123
+ },
118
124
  };
119
125
 
120
126
  function install(UIkit) {
121
127
  UIkit.notification.closeAll = function (group, immediate) {
122
- apply(document.body, el => {
128
+ apply(document.body, (el) => {
123
129
  const notification = UIkit.getComponent(el, 'notification');
124
130
  if (notification && (!group || group === notification.group)) {
125
131
  notification.close(immediate);
@@ -1,8 +1,7 @@
1
1
  import Parallax from '../mixin/parallax';
2
- import {css, parent, query, scrolledOver, toPx} from 'uikit-util';
2
+ import { css, parent, query, scrolledOver, toPx } from 'uikit-util';
3
3
 
4
4
  export default {
5
-
6
5
  mixins: [Parallax],
7
6
 
8
7
  props: {
@@ -10,7 +9,7 @@ export default {
10
9
  viewport: Number, // Deprecated
11
10
  easing: Number,
12
11
  start: String,
13
- end: String
12
+ end: String,
14
13
  },
15
14
 
16
15
  data: {
@@ -18,34 +17,30 @@ export default {
18
17
  viewport: 1,
19
18
  easing: 1,
20
19
  start: 0,
21
- end: 0
20
+ end: 0,
22
21
  },
23
22
 
24
23
  computed: {
25
-
26
- target({target}, $el) {
27
- return getOffsetElement(target && query(target, $el) || $el);
24
+ target({ target }, $el) {
25
+ return getOffsetElement((target && query(target, $el)) || $el);
28
26
  },
29
27
 
30
- start({start}) {
28
+ start({ start }) {
31
29
  return toPx(start, 'height', this.target, true);
32
30
  },
33
31
 
34
- end({end, viewport}) {
32
+ end({ end, viewport }) {
35
33
  return toPx(
36
- end || (viewport = (1 - viewport) * 100) && `${viewport}vh+${viewport}%`,
34
+ end || ((viewport = (1 - viewport) * 100) && `${viewport}vh+${viewport}%`),
37
35
  'height',
38
36
  this.target,
39
37
  true
40
38
  );
41
- }
42
-
39
+ },
43
40
  },
44
41
 
45
42
  update: {
46
-
47
- read({percent}, types) {
48
-
43
+ read({ percent }, types) {
49
44
  if (!types.has('scroll')) {
50
45
  percent = false;
51
46
  }
@@ -59,37 +54,28 @@ export default {
59
54
 
60
55
  return {
61
56
  percent,
62
- style: prev === percent ? false : this.getCss(percent)
57
+ style: prev === percent ? false : this.getCss(percent),
63
58
  };
64
59
  },
65
60
 
66
- write({style}) {
67
-
61
+ write({ style }) {
68
62
  if (!this.matchMedia) {
69
63
  this.reset();
70
64
  return;
71
65
  }
72
66
 
73
67
  style && css(this.$el, style);
74
-
75
68
  },
76
69
 
77
- events: ['scroll', 'resize']
78
- }
79
-
70
+ events: ['scroll', 'resize'],
71
+ },
80
72
  };
81
73
 
82
74
  function ease(percent, easing) {
83
- return easing >= 0
84
- ? Math.pow(percent, easing + 1)
85
- : 1 - Math.pow(1 - percent, -easing + 1);
75
+ return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, -easing + 1);
86
76
  }
87
77
 
88
78
  // SVG elements do not inherit from HTMLElement
89
79
  function getOffsetElement(el) {
90
- return el
91
- ? 'offsetTop' in el
92
- ? el
93
- : getOffsetElement(parent(el))
94
- : document.documentElement;
80
+ return el ? ('offsetTop' in el ? el : getOffsetElement(parent(el))) : document.documentElement;
95
81
  }
@@ -1,24 +1,20 @@
1
1
  import Parallax from '../mixin/parallax';
2
- import {css, endsWith, fastdom, noop, query, Transition} from 'uikit-util';
2
+ import { css, endsWith, fastdom, noop, query, Transition } from 'uikit-util';
3
3
 
4
4
  export default {
5
-
6
5
  mixins: [Parallax],
7
6
 
8
7
  data: {
9
- selItem: '!li'
8
+ selItem: '!li',
10
9
  },
11
10
 
12
11
  computed: {
13
-
14
- item({selItem}, $el) {
12
+ item({ selItem }, $el) {
15
13
  return query(selItem, $el);
16
- }
17
-
14
+ },
18
15
  },
19
16
 
20
17
  events: [
21
-
22
18
  {
23
19
  name: 'itemin itemout',
24
20
 
@@ -28,18 +24,16 @@ export default {
28
24
  return this.item;
29
25
  },
30
26
 
31
- handler({type, detail: {percent, duration, timing, dir}}) {
32
-
27
+ handler({ type, detail: { percent, duration, timing, dir } }) {
33
28
  fastdom.read(() => {
34
29
  const propsFrom = this.getCss(getCurrentPercent(type, dir, percent));
35
- const propsTo = this.getCss(isIn(type) ? .5 : dir > 0 ? 1 : 0);
30
+ const propsTo = this.getCss(isIn(type) ? 0.5 : dir > 0 ? 1 : 0);
36
31
  fastdom.write(() => {
37
32
  css(this.$el, propsFrom);
38
33
  Transition.start(this.$el, propsTo, duration, timing).catch(noop);
39
34
  });
40
35
  });
41
-
42
- }
36
+ },
43
37
  },
44
38
 
45
39
  {
@@ -53,8 +47,7 @@ export default {
53
47
 
54
48
  handler() {
55
49
  Transition.cancel(this.$el);
56
- }
57
-
50
+ },
58
51
  },
59
52
 
60
53
  {
@@ -66,16 +59,14 @@ export default {
66
59
  return this.item;
67
60
  },
68
61
 
69
- handler({type, detail: {percent, dir}}) {
62
+ handler({ type, detail: { percent, dir } }) {
70
63
  fastdom.read(() => {
71
64
  const props = this.getCss(getCurrentPercent(type, dir, percent));
72
65
  fastdom.write(() => css(this.$el, props));
73
66
  });
74
- }
75
- }
76
-
77
- ]
78
-
67
+ },
68
+ },
69
+ ],
79
70
  };
80
71
 
81
72
  function isIn(type) {
@@ -83,8 +74,7 @@ function isIn(type) {
83
74
  }
84
75
 
85
76
  function getCurrentPercent(type, dir, percent) {
86
-
87
77
  percent /= 2;
88
78
 
89
- return isIn(type) ^ dir < 0 ? percent : 1 - percent;
79
+ return isIn(type) ^ (dir < 0) ? percent : 1 - percent;
90
80
  }