uikit 3.11.2-dev.9433cd5fd → 3.11.2-dev.a87448e52

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 (221) 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 +37 -28
  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 +118 -201
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +118 -201
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +120 -207
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +120 -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 +645 -793
  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 +5412 -6733
  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 +8008 -9705
  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 +79 -100
  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 -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 +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 +96 -77
  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 +130 -91
  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 +20 -39
  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 +56 -43
  139. package/src/js/util/dom.js +44 -80
  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/leader.less +0 -1
  158. package/src/less/components/lightbox.less +0 -1
  159. package/src/less/components/modal.less +3 -7
  160. package/src/less/components/navbar.less +0 -7
  161. package/src/less/components/progress.less +14 -36
  162. package/src/less/components/slider.less +0 -3
  163. package/src/less/components/slideshow.less +0 -3
  164. package/src/less/components/text.less +16 -32
  165. package/src/less/components/utility.less +22 -0
  166. package/src/scss/components/base.scss +10 -33
  167. package/src/scss/components/flex.scss +0 -9
  168. package/src/scss/components/form-range.scss +48 -95
  169. package/src/scss/components/form.scss +3 -4
  170. package/src/scss/components/icon.scss +2 -2
  171. package/src/scss/components/leader.scss +0 -1
  172. package/src/scss/components/lightbox.scss +0 -1
  173. package/src/scss/components/modal.scss +3 -7
  174. package/src/scss/components/navbar.scss +0 -7
  175. package/src/scss/components/progress.scss +14 -36
  176. package/src/scss/components/search.scss +1 -1
  177. package/src/scss/components/slider.scss +0 -3
  178. package/src/scss/components/slideshow.scss +0 -3
  179. package/src/scss/components/text.scss +16 -32
  180. package/src/scss/components/utility.scss +22 -0
  181. package/src/scss/mixins-theme.scss +1 -1
  182. package/src/scss/mixins.scss +1 -1
  183. package/src/scss/variables-theme.scss +9 -9
  184. package/src/scss/variables.scss +9 -9
  185. package/tests/align.html +10 -10
  186. package/tests/animation.html +2 -2
  187. package/tests/article.html +2 -2
  188. package/tests/base.html +3 -3
  189. package/tests/card.html +10 -10
  190. package/tests/column.html +3 -3
  191. package/tests/comment.html +9 -9
  192. package/tests/dotnav.html +3 -3
  193. package/tests/image.html +296 -48
  194. package/tests/images/image-type.avif +0 -0
  195. package/tests/images/image-type.jpeg +0 -0
  196. package/tests/images/image-type.webp +0 -0
  197. package/tests/index.html +8 -8
  198. package/tests/js/index.js +114 -85
  199. package/tests/lightbox.html +10 -10
  200. package/tests/marker.html +2 -2
  201. package/tests/modal.html +8 -9
  202. package/tests/navbar.html +2 -2
  203. package/tests/overlay.html +7 -7
  204. package/tests/parallax.html +14 -5
  205. package/tests/position.html +12 -12
  206. package/tests/slidenav.html +12 -12
  207. package/tests/slider.html +20 -20
  208. package/tests/sortable.html +1 -1
  209. package/tests/sticky-parallax.html +47 -62
  210. package/tests/svg.html +6 -6
  211. package/tests/table.html +11 -11
  212. package/tests/thumbnav.html +12 -12
  213. package/tests/transition.html +30 -30
  214. package/tests/utility.html +33 -33
  215. package/tests/video.html +1 -1
  216. package/tests/width.html +1 -1
  217. package/src/js/mixin/flex-bug.js +0 -56
  218. package/src/js/util/promise.js +0 -191
  219. package/tests/images/animated.gif +0 -0
  220. package/tests/images/test.avif +0 -0
  221. package/tests/images/test.webp +0 -0
package/.eslintrc.json CHANGED
@@ -1,62 +1,17 @@
1
1
  {
2
- "root":true,
2
+ "root": true,
3
3
  "env": {
4
4
  "es6": true,
5
5
  "browser": true
6
6
  },
7
- "extends": [
8
- "eslint:recommended"
9
- ],
7
+ "extends": ["eslint:recommended", "prettier"],
10
8
  "parserOptions": {
11
- "sourceType": "module"
9
+ "sourceType": "module",
10
+ "ecmaVersion": 2022
12
11
  },
13
12
  "globals": {
14
13
  "VERSION": true,
15
14
  "ICONS": true,
16
15
  "NAME": true
17
- },
18
- "rules": {
19
- "arrow-parens": ["error", "as-needed"],
20
- "brace-style": ["error", "1tbs", {"allowSingleLine": true}],
21
- "comma-dangle": ["error", "never"],
22
- "comma-spacing": "error",
23
- "comma-style": "error",
24
- "eqeqeq": ["error", "smart"],
25
- "eol-last": "error",
26
- "indent": "off",
27
- "indent-legacy": ["error", 4, {"SwitchCase": 1}],
28
- "key-spacing": "error",
29
- "keyword-spacing": "error",
30
- "linebreak-style": ["error", "unix"],
31
- "no-array-constructor": "error",
32
- "no-case-declarations": "warn",
33
- "no-duplicate-imports": "error",
34
- "no-empty": ["error", {"allowEmptyCatch": true}],
35
- "no-extend-native": "error",
36
- "no-lone-blocks": "error",
37
- "no-lonely-if": "error",
38
- "no-multi-spaces": "error",
39
- "no-multiple-empty-lines": ["error", {"max": 2, "maxEOF": 1, "maxBOF": 0}],
40
- "no-template-curly-in-string": "error",
41
- "no-trailing-spaces": "error",
42
- "no-unused-vars": ["error", {"vars": "local", "args": "none"}],
43
- "no-var": "error",
44
- "object-curly-spacing": "error",
45
- "object-shorthand": "error",
46
- "prefer-const": ["error", {"destructuring": "all"}],
47
- "prefer-destructuring": "warn",
48
- "quotes": ["error", "single", {"avoidEscape": true}],
49
- "semi": ["error", "always"],
50
- "sort-imports": ["error", {
51
- "ignoreCase": true,
52
- "ignoreDeclarationSort": true
53
- }],
54
- "space-before-blocks": "error",
55
- "space-before-function-paren": ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}],
56
- "space-in-parens": "error",
57
- "space-infix-ops": "error",
58
- "space-unary-ops": "error",
59
- "spaced-comment": "error",
60
- "template-curly-spacing": "error"
61
16
  }
62
17
  }
@@ -0,0 +1,14 @@
1
+ /*
2
+ !/*.js
3
+ !/*.json
4
+ !/.github
5
+ !/.circleci
6
+ !/build
7
+ !/src
8
+ /src/*
9
+ !/src/js
10
+ !/tests
11
+ /tests/*
12
+ !/tests/js
13
+ /tests/js/*
14
+ !/tests/js/index.js
@@ -0,0 +1,13 @@
1
+ {
2
+ "tabWidth": 4,
3
+ "printWidth": 100,
4
+ "singleQuote": true,
5
+ "overrides": [
6
+ {
7
+ "files": ["**/*.yml"],
8
+ "options": {
9
+ "tabWidth": 2
10
+ }
11
+ }
12
+ ]
13
+ }
package/.webstorm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // Webstorm Module resolution config
2
2
  System.config({
3
- "paths": {
4
- "uikit-util": "./src/js/util/index.js",
5
- }
3
+ paths: {
4
+ 'uikit-util': './src/js/util/index.js',
5
+ },
6
6
  });
package/CHANGELOG.md CHANGED
@@ -1,26 +1,34 @@
1
1
  # Changelog
2
2
 
3
- ## WIP Picture element
4
-
5
- ### Added
6
-
7
- - Add support for <picture> element in Img component
8
- - Add `sources` option to Img component
9
-
10
- ### Changed
11
-
12
- - Img component no longer sets a placeholder (use height/width instead)
13
-
14
3
  ## WIP
15
4
 
16
5
  ### Added
17
6
 
7
+ - Add support for `<picture>` element to Image component
8
+ - Add `sources` option to emulate `<picture>` element for background images to Image component
9
+ - Add `loading` option to avoid lazy loading background images in first visible viewport to Image component
10
+ - Add support for `loading="lazy"` attribute to SVG component
18
11
  - Add `position` option with `top`, `bottom` and `auto` values to Sticky component
19
12
  - Add support for basic math operands in `offset` option of Sticky component
13
+ - Add animation stop positions to Parallax component
14
+ - Add object fit and position classes to Utility component
20
15
 
21
16
  ### Changed
22
17
 
18
+ - Image elements need `width` and `height` attributes to prevent layout shifts
19
+ - Image component no longer relies on session storage to check for cached images to immediately show an image
20
+ - Slideshow and Slider remove native `loading="lazy"` attribute from adjacent slides
23
21
  - Improve sticky behavior if sticky content is larger than the viewport
22
+ - Sticky component's `bottom` option checks for bottom padding if sticky element is within referenced element
23
+
24
+ ### Deprecated
25
+
26
+ - Deprecate `uk-img` for `<img>` element: Use native `loading="lazy"` attribute instead
27
+
28
+ ## Removed
29
+
30
+ - Remove IE11 support
31
+ - Removed `data-width` and `data-height` for `<img>` element from Image component. Use native attributes instead.
24
32
 
25
33
  ### Fixed
26
34
 
@@ -28,6 +36,7 @@
28
36
  - Fix Sticky component setting wrong margin for placeholder
29
37
  - Fix dropdowns not closing in Navbar component when hovering dropbar and navigation with keyboard
30
38
  - Fix dropdown no longer closes if pointer is still moving towards it
39
+ - Fix `fadein` not transformed correctly to `fade-in` in scss build
31
40
 
32
41
  ## 3.11.1 (February 7, 2022)
33
42
 
@@ -66,7 +75,7 @@
66
75
  - Fix usage of `data-` prefix for Cover and Responsive component
67
76
  - Fix pointer events for iframes in Cover component
68
77
  - Fix Slideshow component no longer throws if items list does not exist
69
- - Fix space key no longer triggers Toggle on `input` elements
78
+ - Fix space key no longer triggers Toggle on `<input>` element
70
79
 
71
80
  ## 3.10.0 (January 12, 2022)
72
81
 
@@ -383,7 +392,7 @@
383
392
 
384
393
  - Fix component update handling
385
394
  - Fix Tooltip position
386
- - Fix Tooltip component applied to button elements in iOS
395
+ - Fix Tooltip component applied to `<button>` element in iOS
387
396
  - Fix regression in Switcher component
388
397
 
389
398
  ## 3.6.8 (January 5, 2021)
@@ -932,7 +941,7 @@
932
941
  ### Fixed
933
942
 
934
943
  - Fix Slideshow invisible after switching tabs in Switcher
935
- - Fix lazy loading images in Img component in UC Browser
944
+ - Fix lazy loading images in Image component in UC Browser
936
945
  - Fix opening Offcanvas/Modal through buttons
937
946
 
938
947
  ## 3.1.8 (August 29, 2019)
@@ -1102,8 +1111,8 @@
1102
1111
  ### Fixed
1103
1112
 
1104
1113
  - Fix touch event detection
1105
- - Fix background images are shown too large on retina displays in Img component
1106
- - Fix correctly calculate offsetLeft in Img component
1114
+ - Fix background images are shown too large on retina displays in Image component
1115
+ - Fix correctly calculate offsetLeft in Image component
1107
1116
  - Fix autofocus elements not blurring within Toggable on hide
1108
1117
 
1109
1118
  ## 3.0.2 (January 15, 2019)
@@ -1112,7 +1121,7 @@
1112
1121
 
1113
1122
  - Fix offcanvas overlay transition
1114
1123
  - Fix active state in Switcher component
1115
- - Fix background images on displays with higher devicePixelRatio in Img component
1124
+ - Fix background images on displays with higher devicePixelRatio in Image component
1116
1125
 
1117
1126
  ## 3.0.1 (January 14, 2019)
1118
1127
 
@@ -1145,7 +1154,7 @@
1145
1154
  ### Fixed
1146
1155
 
1147
1156
  - Fix visible toggle and its child elements not being focusable through keyboard navigation
1148
- - Fix Img component correctly escapes urls on background images
1157
+ - Fix Image component correctly escapes urls on background images
1149
1158
 
1150
1159
  ## 3.0.0 rc 26 (January 3, 2019)
1151
1160
 
@@ -1164,8 +1173,8 @@
1164
1173
  - Fix `flex bug` mixin (IE 11)
1165
1174
  - Fix properly resolving css custom properties in scss
1166
1175
  - Fix order of variable assignments in scss
1167
- - Fix background images are shown too large on retina displays in Img component
1168
- - Fix lazy loading images in Img component in Safari
1176
+ - Fix background images are shown too large on retina displays in Image component
1177
+ - Fix lazy loading images in Image component in Safari
1169
1178
  - Limit positioned element to container width and margin in Position component
1170
1179
 
1171
1180
  ## 3.0.0 rc 25 (November 30, 2018)
@@ -1253,7 +1262,7 @@
1253
1262
 
1254
1263
  ### Fixed
1255
1264
 
1256
- - Fix preserve color not working if class is set on svg element in Icon component
1265
+ - Fix preserve color not working if class is set on `<svg>` element in Icon component
1257
1266
  - Fix inverse hover color for accordion title
1258
1267
  - Fix close color being overwritten from toolbar in Lightbox component
1259
1268
  - Fix Modal not hiding upon being destroyed
@@ -1497,7 +1506,7 @@
1497
1506
 
1498
1507
  ### Added
1499
1508
 
1500
- - Add Img component to lazy load images
1509
+ - Add Image component to lazy load images
1501
1510
  - Add Filter component to filter and sort any kind of layout
1502
1511
  - Add `masonry` option to Grid component
1503
1512
  - Add inverse style for form icon
@@ -1660,7 +1669,7 @@
1660
1669
 
1661
1670
  ### Changed
1662
1671
 
1663
- - IMPORTANT: Use `a` element instead of headings for the accordion title
1672
+ - IMPORTANT: Use `<a>` element instead of headings for the accordion title
1664
1673
  - Calling a component constructor with data on an already initialized component will reset the component
1665
1674
  - Dropbar no longer repositions Dropdowns in DOM upon opening
1666
1675
 
@@ -1761,7 +1770,7 @@
1761
1770
  - Fix slide animations stacking when tab is not focused in Slideshow component
1762
1771
  - Fix overlay not showing in Offcanvas component
1763
1772
  - Fix Slideshow Parallax in Slideshow component for IE11
1764
- - Fix default border-radius for button elements in Chrome 62.
1773
+ - Fix default border-radius for `<button>` element in Chrome 62.
1765
1774
 
1766
1775
  ## 3.0.0 beta 31 (October 20, 2017)
1767
1776
 
@@ -1870,7 +1879,7 @@
1870
1879
 
1871
1880
  - Offcanvas will keep scroll position if anchor link was clicked
1872
1881
  - Fix margin modifier in Position component for IE11
1873
- - Fix divider-small text alignment for `hr` elements Edge and IE
1882
+ - Fix divider-small text alignment for `<hr>` element Edge and IE
1874
1883
  - Fix setting the ratio of Spinner component
1875
1884
  - Fix event handling in Sortable component
1876
1885
  - Fix grid calculation (Firefox)
@@ -1906,7 +1915,7 @@
1906
1915
 
1907
1916
  ### Changed
1908
1917
 
1909
- - Make Icon component work with button elements
1918
+ - Make Icon component work with `<button>` element
1910
1919
 
1911
1920
  ### Fixed
1912
1921
 
@@ -2236,7 +2245,7 @@
2236
2245
 
2237
2246
  ### Changed
2238
2247
 
2239
- - UIkit observes `body` element too now
2248
+ - UIkit observes `<body>` element too now
2240
2249
  - Performance improvements
2241
2250
 
2242
2251
  ### Fixed
@@ -2282,7 +2291,7 @@
2282
2291
 
2283
2292
  ### Fixed
2284
2293
 
2285
- - Fix Icon component on canvas elements (Safari)
2294
+ - Fix Icon component on `<canvas>` elements (Safari)
2286
2295
 
2287
2296
  ## 3.0.0 beta 1 (January 09, 2017)
2288
2297
 
@@ -6,9 +6,7 @@
6
6
  "browser": false,
7
7
  "commonjs": false
8
8
  },
9
- "extends": [
10
- "../.eslintrc.json"
11
- ],
9
+ "extends": ["../.eslintrc.json"],
12
10
  "parserOptions": {
13
11
  "ecmaVersion": 2022
14
12
  },
package/build/build.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import camelize from 'camelcase';
2
- import {basename, resolve} from 'path';
3
- import {args, compile, glob, icons} from './util.js';
2
+ import { basename, resolve } from 'path';
3
+ import { args, compile, glob, icons } from './util.js';
4
4
 
5
5
  const bundles = getBundleTasks();
6
6
  const components = await getComponentTasks();
7
- const buildAll = args.all || !Object.keys(args).filter(name =>
8
- !['d', 'debug', 'nominify', 'watch', '_'].includes(name)
9
- ).length;
7
+ const buildAll =
8
+ args.all ||
9
+ !Object.keys(args).filter((name) => !['d', 'debug', 'nominify', 'watch', '_'].includes(name))
10
+ .length;
10
11
 
11
12
  if (args.h || args.help) {
12
13
  console.log(`
@@ -30,62 +31,59 @@ if (args.h || args.help) {
30
31
  }
31
32
 
32
33
  let tasks;
33
- const allTasks = {...bundles, ...components};
34
+ const allTasks = { ...bundles, ...components };
34
35
  if (buildAll) {
35
36
  tasks = allTasks;
36
37
  } else if (args.components) {
37
38
  tasks = components;
38
39
  } else {
39
40
  tasks = Object.keys(args)
40
- .map(step => allTasks[step])
41
- .filter(t => t);
41
+ .map((step) => allTasks[step])
42
+ .filter((t) => t);
42
43
  }
43
44
 
44
- await Promise.all(Object.values(tasks).map(task => task()));
45
+ await Promise.all(Object.values(tasks).map((task) => task()));
45
46
 
46
47
  function getBundleTasks() {
47
48
  return {
48
-
49
49
  core: () => compile('src/js/uikit-core.js', 'dist/js/uikit-core'),
50
50
 
51
51
  uikit: () => compile('src/js/uikit.js', 'dist/js/uikit'),
52
52
 
53
- icons: async () => compile('build/wrapper/icons.js', 'dist/js/uikit-icons', {
54
- name: 'icons',
55
- replaces: {ICONS: await icons('{src/images,custom}/icons/*.svg')}
56
- }),
57
-
58
- tests: async () => compile('tests/js/index.js', 'tests/js/test', {
59
- name: 'test',
60
- replaces: {TESTS: await getTestFiles()}
61
- })
62
-
53
+ icons: async () =>
54
+ compile('build/wrapper/icons.js', 'dist/js/uikit-icons', {
55
+ name: 'icons',
56
+ replaces: { ICONS: await icons('{src/images,custom}/icons/*.svg') },
57
+ }),
58
+
59
+ tests: async () =>
60
+ compile('tests/js/index.js', 'tests/js/test', {
61
+ name: 'test',
62
+ replaces: { TESTS: await getTestFiles() },
63
+ }),
63
64
  };
64
65
  }
65
66
 
66
67
  async function getComponentTasks() {
67
-
68
68
  const components = await glob('src/js/components/!(index).js');
69
69
 
70
70
  return components.reduce((components, file) => {
71
-
72
71
  const name = basename(file, '.js');
73
72
 
74
73
  components[name] = () =>
75
74
  compile('build/wrapper/component.js', `dist/js/components/${name}`, {
76
75
  name,
77
76
  external: ['uikit', 'uikit-util'],
78
- globals: {uikit: 'UIkit', 'uikit-util': 'UIkit.util'},
79
- aliases: {component: resolve('src/js/components', name)},
80
- replaces: {NAME: `'${camelize(name)}'`}
77
+ globals: { uikit: 'UIkit', 'uikit-util': 'UIkit.util' },
78
+ aliases: { component: resolve('src/js/components', name) },
79
+ replaces: { NAME: `'${camelize(name)}'` },
81
80
  });
82
81
 
83
82
  return components;
84
-
85
83
  }, {});
86
84
  }
87
85
 
88
86
  async function getTestFiles() {
89
- const files = await glob('tests/!(index).html', {nosort: true});
90
- return JSON.stringify(files.map(file => basename(file, '.html')));
87
+ const files = await glob('tests/!(index).html', { nosort: true });
88
+ return JSON.stringify(files.map((file) => basename(file, '.html')));
91
89
  }
package/build/icons.js CHANGED
@@ -1,4 +1,4 @@
1
- import {args, compile, glob, icons} from './util.js';
1
+ import { args, compile, glob, icons } from './util.js';
2
2
 
3
3
  if (args.h || args.help) {
4
4
  console.log(`
@@ -25,14 +25,10 @@ await Promise.all((await glob(path)).map(compileIcons));
25
25
 
26
26
  async function compileIcons(folder) {
27
27
  const [, name] = folder.toString().match(new RegExp(match, 'i'));
28
- return compile(
29
- 'build/wrapper/icons.js',
30
- `dist/js/uikit-icons-${name}`,
31
- {
32
- name,
33
- replaces: {
34
- ICONS: await icons(`{src/images/icons,${folder}}/*.svg`)
35
- }
36
- }
37
- );
28
+ return compile('build/wrapper/icons.js', `dist/js/uikit-icons-${name}`, {
29
+ name,
30
+ replaces: {
31
+ ICONS: await icons(`{src/images/icons,${folder}}/*.svg`),
32
+ },
33
+ });
38
34
  }
package/build/less.js CHANGED
@@ -1,59 +1,72 @@
1
1
  import rtlcss from 'rtlcss';
2
- import {basename} from 'path';
3
- import {args, banner, glob, minify, pathExists, read, readJson, renderLess, write} from './util.js';
2
+ import { basename } from 'path';
3
+ import {
4
+ args,
5
+ banner,
6
+ glob,
7
+ minify,
8
+ pathExists,
9
+ read,
10
+ readJson,
11
+ renderLess,
12
+ write,
13
+ } from './util.js';
4
14
 
5
- const {rtl} = args;
15
+ const { rtl } = args;
6
16
  const develop = args.develop || args.debug || args.d || args.nominify;
7
17
  const sources = [
8
- {src: 'src/less/uikit.less', dist: `dist/css/uikit-core${rtl ? '-rtl' : ''}.css`},
9
- {src: 'src/less/uikit.theme.less', dist: `dist/css/uikit${rtl ? '-rtl' : ''}.css`}
18
+ { src: 'src/less/uikit.less', dist: `dist/css/uikit-core${rtl ? '-rtl' : ''}.css` },
19
+ { src: 'src/less/uikit.theme.less', dist: `dist/css/uikit${rtl ? '-rtl' : ''}.css` },
10
20
  ];
11
21
 
12
- const themes = await pathExists('themes.json') ? await readJson('themes.json') : {};
22
+ const themes = (await pathExists('themes.json')) ? await readJson('themes.json') : {};
13
23
 
14
24
  for (const src of await glob('custom/*.less')) {
15
25
  const theme = basename(src, '.less');
16
26
  const dist = `dist/css/uikit.${theme}${rtl ? '-rtl' : ''}.css`;
17
27
 
18
- themes[theme] = {css: `../${dist}`};
28
+ themes[theme] = { css: `../${dist}` };
19
29
 
20
30
  if (await pathExists(`dist/js/uikit-icons-${theme}.js`)) {
21
31
  themes[theme].icons = `../dist/js/uikit-icons-${theme}.js`;
22
32
  }
23
33
 
24
- sources.push({src, dist});
34
+ sources.push({ src, dist });
25
35
  }
26
36
 
27
- await Promise.all(sources.map(({src, dist}) => compile(src, dist, develop, rtl)));
37
+ await Promise.all(sources.map(({ src, dist }) => compile(src, dist, develop, rtl)));
28
38
 
29
- if (!rtl && (Object.keys(themes).length || !await pathExists('themes.json'))) {
39
+ if (!rtl && (Object.keys(themes).length || !(await pathExists('themes.json')))) {
30
40
  await write('themes.json', JSON.stringify(themes));
31
41
  }
32
42
 
33
43
  async function compile(file, dist, develop, rtl) {
34
-
35
44
  const less = await read(file);
36
45
 
37
- let output = (await renderLess(less, {
38
- relativeUrls: true,
39
- rootpath: '../../',
40
- paths: ['src/less/', 'custom/']
41
- })).replace(/\.\.\/dist\//g, '');
46
+ let output = (
47
+ await renderLess(less, {
48
+ relativeUrls: true,
49
+ rootpath: '../../',
50
+ paths: ['src/less/', 'custom/'],
51
+ })
52
+ ).replace(/\.\.\/dist\//g, '');
42
53
 
43
54
  if (rtl) {
44
55
  output = rtlcss.process(
45
56
  output,
46
57
  {
47
- stringMap: [{
48
- name: 'previous-next',
49
- priority: 100,
50
- search: ['previous', 'Previous', 'PREVIOUS'],
51
- replace: ['next', 'Next', 'NEXT'],
52
- options: {
53
- scope: '*',
54
- ignoreCase: false
55
- }
56
- }]
58
+ stringMap: [
59
+ {
60
+ name: 'previous-next',
61
+ priority: 100,
62
+ search: ['previous', 'Previous', 'PREVIOUS'],
63
+ replace: ['next', 'Next', 'NEXT'],
64
+ options: {
65
+ scope: '*',
66
+ ignoreCase: false,
67
+ },
68
+ },
69
+ ],
57
70
  },
58
71
  [
59
72
  {
@@ -61,23 +74,23 @@ async function compile(file, dist, develop, rtl) {
61
74
  priority: 50,
62
75
  directives: {
63
76
  control: {},
64
- value: []
77
+ value: [],
65
78
  },
66
79
  processors: [
67
80
  {
68
81
  expr: ['--uk-position-translate-x', 'stroke-dashoffset'].join('|'),
69
82
  action(prop, value, context) {
70
- return {prop, value: context.util.negate(value)};
71
- }
72
- }
73
- ]
74
- }
83
+ return { prop, value: context.util.negate(value) };
84
+ },
85
+ },
86
+ ],
87
+ },
75
88
  ],
76
89
  {
77
90
  pre(root, postcss) {
78
- root.prepend(postcss.comment({text: 'rtl:begin:rename'}));
79
- root.append(postcss.comment({text: 'rtl:end:rename'}));
80
- }
91
+ root.prepend(postcss.comment({ text: 'rtl:begin:rename' }));
92
+ root.append(postcss.comment({ text: 'rtl:end:rename' }));
93
+ },
81
94
  }
82
95
  );
83
96
  }
@@ -87,5 +100,4 @@ async function compile(file, dist, develop, rtl) {
87
100
  if (!develop) {
88
101
  await minify(dist);
89
102
  }
90
-
91
103
  }
@@ -1,4 +1,4 @@
1
1
  {
2
- "private": true,
3
- "type": "module"
2
+ "private": true,
3
+ "type": "module"
4
4
  }
package/build/prefix.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import inquirer from 'inquirer';
2
- import {args, glob, read, replaceInFile, validClassName} from './util.js';
2
+ import { args, glob, read, replaceInFile, validClassName } from './util.js';
3
3
 
4
4
  if (args.h || args.help) {
5
5
  console.log(`
@@ -26,24 +26,27 @@ if (currentPrefix === prefix) {
26
26
  await replacePrefix(currentPrefix, prefix);
27
27
 
28
28
  async function findExistingPrefix() {
29
- const data = await read('dist/css/uikit.css');
30
- const res = data.match(new RegExp(`(${validClassName.source})(-[a-z]+)?-grid`));
31
- return res && res[1];
29
+ return (await read('dist/css/uikit.css')).match(
30
+ new RegExp(`(${validClassName.source})(-[a-z]+)?-grid`)
31
+ )?.[1];
32
32
  }
33
33
 
34
34
  async function getPrefix() {
35
-
36
35
  const prefixFromInput = args.p || args.prefix;
37
36
 
38
37
  if (!prefixFromInput) {
39
-
40
38
  const prompt = inquirer.createPromptModule();
41
39
 
42
- return (await prompt({
43
- name: 'prefix',
44
- message: 'enter a prefix',
45
- validate: (val, res) => val.length && val.match(validClassName) ? !!(res.prefix = val) : 'invalid prefix'
46
- })).prefix;
40
+ return (
41
+ await prompt({
42
+ name: 'prefix',
43
+ message: 'enter a prefix',
44
+ validate: (val, res) =>
45
+ val.length && val.match(validClassName)
46
+ ? !!(res.prefix = val)
47
+ : 'invalid prefix',
48
+ })
49
+ ).prefix;
47
50
  }
48
51
 
49
52
  if (validClassName.test(prefixFromInput)) {
@@ -55,16 +58,16 @@ async function getPrefix() {
55
58
 
56
59
  async function replacePrefix(from, to) {
57
60
  for (const file of await glob('dist/**/*.css')) {
58
- await replaceInFile(file, data => data.replace(
59
- new RegExp(`${from}-${/([a-z\d-]+)/.source}`, 'g'),
60
- `${to}-$1`
61
- ));
61
+ await replaceInFile(file, (data) =>
62
+ data.replace(new RegExp(`${from}-${/([a-z\d-]+)/.source}`, 'g'), `${to}-$1`)
63
+ );
62
64
  }
63
65
 
64
66
  for (const file of await glob('dist/**/*.js')) {
65
- await replaceInFile(file, data => data
66
- .replace(new RegExp(`${from}-`, 'g'), `${to}-`)
67
- .replace(new RegExp(`(${from})?UIkit`, 'g'), `${to === 'uk' ? '' : to}UIkit`)
67
+ await replaceInFile(file, (data) =>
68
+ data
69
+ .replace(new RegExp(`${from}-`, 'g'), `${to}-`)
70
+ .replace(new RegExp(`(${from})?UIkit`, 'g'), `${to === 'uk' ? '' : to}UIkit`)
68
71
  );
69
72
  }
70
73
  }