uikit 3.11.2-dev.c2430c233 → 3.11.2-dev.cfa6c7d5c

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 (213) 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 +41 -18
  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 +86 -185
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +86 -185
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +88 -191
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +88 -191
  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 +344 -359
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +342 -358
  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 +342 -358
  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 +5273 -6604
  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 -9704
  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 -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 +30 -34
  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 +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 +161 -128
  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 +146 -105
  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 +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 +75 -64
  153. package/src/less/components/base.less +10 -33
  154. package/src/less/components/form-range.less +48 -95
  155. package/src/less/components/form.less +0 -1
  156. package/src/less/components/height.less +3 -0
  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/progress.less +14 -36
  161. package/src/less/components/slider.less +0 -3
  162. package/src/less/components/slideshow.less +0 -3
  163. package/src/less/components/text.less +16 -32
  164. package/src/scss/components/base.scss +10 -33
  165. package/src/scss/components/form-range.scss +48 -95
  166. package/src/scss/components/form.scss +0 -1
  167. package/src/scss/components/height.scss +3 -0
  168. package/src/scss/components/leader.scss +0 -1
  169. package/src/scss/components/lightbox.scss +0 -1
  170. package/src/scss/components/modal.scss +3 -7
  171. package/src/scss/components/progress.scss +14 -36
  172. package/src/scss/components/slider.scss +0 -3
  173. package/src/scss/components/slideshow.scss +0 -3
  174. package/src/scss/components/text.scss +16 -32
  175. package/src/scss/mixins-theme.scss +1 -1
  176. package/src/scss/mixins.scss +1 -1
  177. package/src/scss/variables-theme.scss +3 -3
  178. package/src/scss/variables.scss +3 -3
  179. package/tests/align.html +10 -10
  180. package/tests/animation.html +2 -2
  181. package/tests/article.html +2 -2
  182. package/tests/base.html +3 -3
  183. package/tests/card.html +10 -10
  184. package/tests/column.html +3 -3
  185. package/tests/comment.html +9 -9
  186. package/tests/dotnav.html +3 -3
  187. package/tests/image.html +296 -64
  188. package/tests/images/image-type.avif +0 -0
  189. package/tests/images/image-type.jpeg +0 -0
  190. package/tests/images/image-type.webp +0 -0
  191. package/tests/index.html +8 -8
  192. package/tests/js/index.js +114 -85
  193. package/tests/lightbox.html +10 -10
  194. package/tests/marker.html +2 -2
  195. package/tests/modal.html +8 -9
  196. package/tests/navbar.html +2 -2
  197. package/tests/overlay.html +7 -7
  198. package/tests/parallax.html +14 -5
  199. package/tests/position.html +12 -12
  200. package/tests/slidenav.html +12 -12
  201. package/tests/slider.html +20 -20
  202. package/tests/sortable.html +1 -1
  203. package/tests/sticky-parallax.html +55 -70
  204. package/tests/svg.html +6 -6
  205. package/tests/table.html +11 -11
  206. package/tests/thumbnav.html +12 -12
  207. package/tests/transition.html +30 -30
  208. package/tests/utility.html +33 -33
  209. package/tests/video.html +1 -1
  210. package/tests/width.html +1 -1
  211. package/src/js/mixin/flex-bug.js +0 -56
  212. package/src/js/util/promise.js +0 -191
  213. 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
@@ -4,21 +4,44 @@
4
4
 
5
5
  ### Added
6
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
7
11
  - Add `position` option with `top`, `bottom` and `auto` values to Sticky component
8
12
  - Add support for basic math operands in `offset` option of Sticky component
13
+ - Add animation stop positions to Parallax component
9
14
  - Add object fit and position classes to Utility component
15
+ - Add height viewport classes to Height component
10
16
 
11
17
  ### Changed
12
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
13
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.
14
34
 
15
35
  ### Fixed
16
36
 
17
37
  - Fix infinite sliding in Slider component with equally sized slides
18
- - Fix Sticky component setting wrong margin for placeholder
19
38
  - Fix dropdowns not closing in Navbar component when hovering dropbar and navigation with keyboard
20
39
  - Fix dropdown no longer closes if pointer is still moving towards it
21
40
  - Fix `fadein` not transformed correctly to `fade-in` in scss build
41
+ - Fix Sticky component setting wrong margin for placeholder
42
+ - Fix Sticky placeholder sets height with fraction
43
+ - Fix Sticky component does not animate in if scroll position equals top offset
44
+ - Fix Sticky component prevents transition on `selTarget` if forced to hide for recalculation
22
45
 
23
46
  ## 3.11.1 (February 7, 2022)
24
47
 
@@ -57,7 +80,7 @@
57
80
  - Fix usage of `data-` prefix for Cover and Responsive component
58
81
  - Fix pointer events for iframes in Cover component
59
82
  - Fix Slideshow component no longer throws if items list does not exist
60
- - Fix space key no longer triggers Toggle on `input` elements
83
+ - Fix space key no longer triggers Toggle on `<input>` element
61
84
 
62
85
  ## 3.10.0 (January 12, 2022)
63
86
 
@@ -374,7 +397,7 @@
374
397
 
375
398
  - Fix component update handling
376
399
  - Fix Tooltip position
377
- - Fix Tooltip component applied to button elements in iOS
400
+ - Fix Tooltip component applied to `<button>` element in iOS
378
401
  - Fix regression in Switcher component
379
402
 
380
403
  ## 3.6.8 (January 5, 2021)
@@ -923,7 +946,7 @@
923
946
  ### Fixed
924
947
 
925
948
  - Fix Slideshow invisible after switching tabs in Switcher
926
- - Fix lazy loading images in Img component in UC Browser
949
+ - Fix lazy loading images in Image component in UC Browser
927
950
  - Fix opening Offcanvas/Modal through buttons
928
951
 
929
952
  ## 3.1.8 (August 29, 2019)
@@ -1093,8 +1116,8 @@
1093
1116
  ### Fixed
1094
1117
 
1095
1118
  - Fix touch event detection
1096
- - Fix background images are shown too large on retina displays in Img component
1097
- - Fix correctly calculate offsetLeft in Img component
1119
+ - Fix background images are shown too large on retina displays in Image component
1120
+ - Fix correctly calculate offsetLeft in Image component
1098
1121
  - Fix autofocus elements not blurring within Toggable on hide
1099
1122
 
1100
1123
  ## 3.0.2 (January 15, 2019)
@@ -1103,7 +1126,7 @@
1103
1126
 
1104
1127
  - Fix offcanvas overlay transition
1105
1128
  - Fix active state in Switcher component
1106
- - Fix background images on displays with higher devicePixelRatio in Img component
1129
+ - Fix background images on displays with higher devicePixelRatio in Image component
1107
1130
 
1108
1131
  ## 3.0.1 (January 14, 2019)
1109
1132
 
@@ -1136,7 +1159,7 @@
1136
1159
  ### Fixed
1137
1160
 
1138
1161
  - Fix visible toggle and its child elements not being focusable through keyboard navigation
1139
- - Fix Img component correctly escapes urls on background images
1162
+ - Fix Image component correctly escapes urls on background images
1140
1163
 
1141
1164
  ## 3.0.0 rc 26 (January 3, 2019)
1142
1165
 
@@ -1155,8 +1178,8 @@
1155
1178
  - Fix `flex bug` mixin (IE 11)
1156
1179
  - Fix properly resolving css custom properties in scss
1157
1180
  - Fix order of variable assignments in scss
1158
- - Fix background images are shown too large on retina displays in Img component
1159
- - Fix lazy loading images in Img component in Safari
1181
+ - Fix background images are shown too large on retina displays in Image component
1182
+ - Fix lazy loading images in Image component in Safari
1160
1183
  - Limit positioned element to container width and margin in Position component
1161
1184
 
1162
1185
  ## 3.0.0 rc 25 (November 30, 2018)
@@ -1244,7 +1267,7 @@
1244
1267
 
1245
1268
  ### Fixed
1246
1269
 
1247
- - Fix preserve color not working if class is set on svg element in Icon component
1270
+ - Fix preserve color not working if class is set on `<svg>` element in Icon component
1248
1271
  - Fix inverse hover color for accordion title
1249
1272
  - Fix close color being overwritten from toolbar in Lightbox component
1250
1273
  - Fix Modal not hiding upon being destroyed
@@ -1488,7 +1511,7 @@
1488
1511
 
1489
1512
  ### Added
1490
1513
 
1491
- - Add Img component to lazy load images
1514
+ - Add Image component to lazy load images
1492
1515
  - Add Filter component to filter and sort any kind of layout
1493
1516
  - Add `masonry` option to Grid component
1494
1517
  - Add inverse style for form icon
@@ -1651,7 +1674,7 @@
1651
1674
 
1652
1675
  ### Changed
1653
1676
 
1654
- - IMPORTANT: Use `a` element instead of headings for the accordion title
1677
+ - IMPORTANT: Use `<a>` element instead of headings for the accordion title
1655
1678
  - Calling a component constructor with data on an already initialized component will reset the component
1656
1679
  - Dropbar no longer repositions Dropdowns in DOM upon opening
1657
1680
 
@@ -1752,7 +1775,7 @@
1752
1775
  - Fix slide animations stacking when tab is not focused in Slideshow component
1753
1776
  - Fix overlay not showing in Offcanvas component
1754
1777
  - Fix Slideshow Parallax in Slideshow component for IE11
1755
- - Fix default border-radius for button elements in Chrome 62.
1778
+ - Fix default border-radius for `<button>` element in Chrome 62.
1756
1779
 
1757
1780
  ## 3.0.0 beta 31 (October 20, 2017)
1758
1781
 
@@ -1861,7 +1884,7 @@
1861
1884
 
1862
1885
  - Offcanvas will keep scroll position if anchor link was clicked
1863
1886
  - Fix margin modifier in Position component for IE11
1864
- - Fix divider-small text alignment for `hr` elements Edge and IE
1887
+ - Fix divider-small text alignment for `<hr>` element Edge and IE
1865
1888
  - Fix setting the ratio of Spinner component
1866
1889
  - Fix event handling in Sortable component
1867
1890
  - Fix grid calculation (Firefox)
@@ -1897,7 +1920,7 @@
1897
1920
 
1898
1921
  ### Changed
1899
1922
 
1900
- - Make Icon component work with button elements
1923
+ - Make Icon component work with `<button>` element
1901
1924
 
1902
1925
  ### Fixed
1903
1926
 
@@ -2227,7 +2250,7 @@
2227
2250
 
2228
2251
  ### Changed
2229
2252
 
2230
- - UIkit observes `body` element too now
2253
+ - UIkit observes `<body>` element too now
2231
2254
  - Performance improvements
2232
2255
 
2233
2256
  ### Fixed
@@ -2273,7 +2296,7 @@
2273
2296
 
2274
2297
  ### Fixed
2275
2298
 
2276
- - Fix Icon component on canvas elements (Safari)
2299
+ - Fix Icon component on `<canvas>` elements (Safari)
2277
2300
 
2278
2301
  ## 3.0.0 beta 1 (January 09, 2017)
2279
2302
 
@@ -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
  }