uikit 3.11.2-dev.57792c7e7 → 3.11.2-dev.76734f785

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 (222) 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 +58 -17
  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 -363
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +343 -351
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +758 -842
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +343 -351
  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 -621
  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 +5423 -6687
  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 +7995 -9650
  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 +21 -46
  77. package/src/js/components/slider-parallax.js +13 -23
  78. package/src/js/components/slider.js +109 -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 +126 -108
  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 +107 -93
  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 +31 -35
  94. package/src/js/core/icon.js +47 -52
  95. package/src/js/core/img.js +156 -138
  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 +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 +197 -132
  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 +173 -120
  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 +78 -49
  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 +3 -8
  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 +35 -49
  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 +81 -66
  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 -64
  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 +16 -7
  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 +87 -99
  212. package/tests/sticky.html +56 -24
  213. package/tests/svg.html +6 -6
  214. package/tests/table.html +11 -11
  215. package/tests/thumbnav.html +12 -12
  216. package/tests/transition.html +30 -30
  217. package/tests/utility.html +33 -33
  218. package/tests/video.html +1 -1
  219. package/tests/width.html +1 -1
  220. package/src/js/mixin/flex-bug.js +0 -56
  221. package/src/js/util/promise.js +0 -191
  222. package/tests/images/animated.gif +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
@@ -2,7 +2,48 @@
2
2
 
3
3
  ## WIP
4
4
 
5
+ ### Added
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
11
+ - Add `position` option with `top`, `bottom` and `auto` values to Sticky component
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
15
+ - Add height viewport classes to Height component
16
+
17
+ ### Changed
18
+
19
+ - Image elements need `width` and `height` attributes to prevent layout shifts
20
+ - Image component no longer relies on session storage to check for cached images to immediately show an image
21
+ - Slideshow and Slider remove native `loading="lazy"` attribute from adjacent slides
22
+ - Improve sticky behavior if sticky content is larger than the viewport
23
+ - Sticky component's `bottom` option checks for bottom padding if sticky element is within referenced element
24
+ - Height Viewport component sets `uk-height-viewport` class to reduce initial layout shifts
25
+
26
+ ### Deprecated
27
+
28
+ - Deprecate `uk-img` for `<img>` element: Use native `loading="lazy"` attribute instead
29
+
30
+ ## Removed
31
+
32
+ - Remove IE11 support
33
+ - Removed `data-width` and `data-height` for `<img>` element from Image component. Use native attributes instead.
34
+
35
+ ### Fixed
36
+
5
37
  - Fix infinite sliding in Slider component with equally sized slides
38
+ - Fix Slider component sets calculation
39
+ - Fix dropdowns not closing in Navbar component when hovering dropbar and navigation with keyboard
40
+ - Fix dropdown no longer closes if pointer is still moving towards it
41
+ - Fix `fadein` not transformed correctly to `fade-in` in scss build
42
+ - Fix Sticky component setting wrong margin for placeholder
43
+ - Fix Sticky placeholder sets height with fraction
44
+ - Fix Sticky component does not animate in if scroll position equals top offset
45
+ - Fix Sticky component prevents transition on `selTarget` if forced to hide for recalculation
46
+ - Fix Parallax component initial jump in background image
6
47
 
7
48
  ## 3.11.1 (February 7, 2022)
8
49
 
@@ -41,7 +82,7 @@
41
82
  - Fix usage of `data-` prefix for Cover and Responsive component
42
83
  - Fix pointer events for iframes in Cover component
43
84
  - Fix Slideshow component no longer throws if items list does not exist
44
- - Fix space key no longer triggers Toggle on `input` elements
85
+ - Fix space key no longer triggers Toggle on `<input>` element
45
86
 
46
87
  ## 3.10.0 (January 12, 2022)
47
88
 
@@ -358,7 +399,7 @@
358
399
 
359
400
  - Fix component update handling
360
401
  - Fix Tooltip position
361
- - Fix Tooltip component applied to button elements in iOS
402
+ - Fix Tooltip component applied to `<button>` element in iOS
362
403
  - Fix regression in Switcher component
363
404
 
364
405
  ## 3.6.8 (January 5, 2021)
@@ -907,7 +948,7 @@
907
948
  ### Fixed
908
949
 
909
950
  - Fix Slideshow invisible after switching tabs in Switcher
910
- - Fix lazy loading images in Img component in UC Browser
951
+ - Fix lazy loading images in Image component in UC Browser
911
952
  - Fix opening Offcanvas/Modal through buttons
912
953
 
913
954
  ## 3.1.8 (August 29, 2019)
@@ -1077,8 +1118,8 @@
1077
1118
  ### Fixed
1078
1119
 
1079
1120
  - Fix touch event detection
1080
- - Fix background images are shown too large on retina displays in Img component
1081
- - Fix correctly calculate offsetLeft in Img component
1121
+ - Fix background images are shown too large on retina displays in Image component
1122
+ - Fix correctly calculate offsetLeft in Image component
1082
1123
  - Fix autofocus elements not blurring within Toggable on hide
1083
1124
 
1084
1125
  ## 3.0.2 (January 15, 2019)
@@ -1087,7 +1128,7 @@
1087
1128
 
1088
1129
  - Fix offcanvas overlay transition
1089
1130
  - Fix active state in Switcher component
1090
- - Fix background images on displays with higher devicePixelRatio in Img component
1131
+ - Fix background images on displays with higher devicePixelRatio in Image component
1091
1132
 
1092
1133
  ## 3.0.1 (January 14, 2019)
1093
1134
 
@@ -1120,7 +1161,7 @@
1120
1161
  ### Fixed
1121
1162
 
1122
1163
  - Fix visible toggle and its child elements not being focusable through keyboard navigation
1123
- - Fix Img component correctly escapes urls on background images
1164
+ - Fix Image component correctly escapes urls on background images
1124
1165
 
1125
1166
  ## 3.0.0 rc 26 (January 3, 2019)
1126
1167
 
@@ -1139,8 +1180,8 @@
1139
1180
  - Fix `flex bug` mixin (IE 11)
1140
1181
  - Fix properly resolving css custom properties in scss
1141
1182
  - Fix order of variable assignments in scss
1142
- - Fix background images are shown too large on retina displays in Img component
1143
- - Fix lazy loading images in Img component in Safari
1183
+ - Fix background images are shown too large on retina displays in Image component
1184
+ - Fix lazy loading images in Image component in Safari
1144
1185
  - Limit positioned element to container width and margin in Position component
1145
1186
 
1146
1187
  ## 3.0.0 rc 25 (November 30, 2018)
@@ -1228,7 +1269,7 @@
1228
1269
 
1229
1270
  ### Fixed
1230
1271
 
1231
- - Fix preserve color not working if class is set on svg element in Icon component
1272
+ - Fix preserve color not working if class is set on `<svg>` element in Icon component
1232
1273
  - Fix inverse hover color for accordion title
1233
1274
  - Fix close color being overwritten from toolbar in Lightbox component
1234
1275
  - Fix Modal not hiding upon being destroyed
@@ -1472,7 +1513,7 @@
1472
1513
 
1473
1514
  ### Added
1474
1515
 
1475
- - Add Img component to lazy load images
1516
+ - Add Image component to lazy load images
1476
1517
  - Add Filter component to filter and sort any kind of layout
1477
1518
  - Add `masonry` option to Grid component
1478
1519
  - Add inverse style for form icon
@@ -1635,7 +1676,7 @@
1635
1676
 
1636
1677
  ### Changed
1637
1678
 
1638
- - IMPORTANT: Use `a` element instead of headings for the accordion title
1679
+ - IMPORTANT: Use `<a>` element instead of headings for the accordion title
1639
1680
  - Calling a component constructor with data on an already initialized component will reset the component
1640
1681
  - Dropbar no longer repositions Dropdowns in DOM upon opening
1641
1682
 
@@ -1736,7 +1777,7 @@
1736
1777
  - Fix slide animations stacking when tab is not focused in Slideshow component
1737
1778
  - Fix overlay not showing in Offcanvas component
1738
1779
  - Fix Slideshow Parallax in Slideshow component for IE11
1739
- - Fix default border-radius for button elements in Chrome 62.
1780
+ - Fix default border-radius for `<button>` element in Chrome 62.
1740
1781
 
1741
1782
  ## 3.0.0 beta 31 (October 20, 2017)
1742
1783
 
@@ -1845,7 +1886,7 @@
1845
1886
 
1846
1887
  - Offcanvas will keep scroll position if anchor link was clicked
1847
1888
  - Fix margin modifier in Position component for IE11
1848
- - Fix divider-small text alignment for `hr` elements Edge and IE
1889
+ - Fix divider-small text alignment for `<hr>` element Edge and IE
1849
1890
  - Fix setting the ratio of Spinner component
1850
1891
  - Fix event handling in Sortable component
1851
1892
  - Fix grid calculation (Firefox)
@@ -1881,7 +1922,7 @@
1881
1922
 
1882
1923
  ### Changed
1883
1924
 
1884
- - Make Icon component work with button elements
1925
+ - Make Icon component work with `<button>` element
1885
1926
 
1886
1927
  ### Fixed
1887
1928
 
@@ -2211,7 +2252,7 @@
2211
2252
 
2212
2253
  ### Changed
2213
2254
 
2214
- - UIkit observes `body` element too now
2255
+ - UIkit observes `<body>` element too now
2215
2256
  - Performance improvements
2216
2257
 
2217
2258
  ### Fixed
@@ -2257,7 +2298,7 @@
2257
2298
 
2258
2299
  ### Fixed
2259
2300
 
2260
- - Fix Icon component on canvas elements (Safari)
2301
+ - Fix Icon component on `<canvas>` elements (Safari)
2261
2302
 
2262
2303
  ## 3.0.0 beta 1 (January 09, 2017)
2263
2304
 
@@ -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
  }