uikit 3.11.2-dev.f2970ffaa → 3.12.0

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 (226) 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 +55 -19
  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 +133 -201
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +133 -201
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +135 -207
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +135 -207
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +66 -138
  27. package/dist/js/components/countdown.min.js +1 -1
  28. package/dist/js/components/filter.js +408 -439
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1091 -1319
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1137 -1396
  33. package/dist/js/components/lightbox.min.js +1 -1
  34. package/dist/js/components/notification.js +94 -114
  35. package/dist/js/components/notification.min.js +1 -1
  36. package/dist/js/components/parallax.js +347 -372
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +345 -360
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +749 -843
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +345 -360
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +628 -798
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +587 -620
  47. package/dist/js/components/sortable.min.js +1 -1
  48. package/dist/js/components/tooltip.js +324 -356
  49. package/dist/js/components/tooltip.min.js +1 -1
  50. package/dist/js/components/upload.js +156 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5324 -6527
  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 +8006 -9663
  57. package/dist/js/uikit.min.js +1 -1
  58. package/jsconfig.json +1 -1
  59. package/package.json +64 -60
  60. package/src/js/api/boot.js +25 -32
  61. package/src/js/api/component.js +15 -28
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +14 -33
  64. package/src/js/api/instance.js +7 -15
  65. package/src/js/api/state.js +199 -187
  66. package/src/js/components/countdown.js +32 -85
  67. package/src/js/components/filter.js +70 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +14 -25
  70. package/src/js/components/internal/slider-preload.js +9 -0
  71. package/src/js/components/internal/slider-transitioner.js +66 -45
  72. package/src/js/components/internal/slideshow-animations.js +46 -64
  73. package/src/js/components/lightbox-panel.js +107 -105
  74. package/src/js/components/lightbox.js +17 -39
  75. package/src/js/components/notification.js +49 -43
  76. package/src/js/components/parallax.js +21 -46
  77. package/src/js/components/slider-parallax.js +13 -23
  78. package/src/js/components/slider.js +117 -89
  79. package/src/js/components/slideshow-parallax.js +1 -1
  80. package/src/js/components/slideshow.js +15 -13
  81. package/src/js/components/sortable.js +125 -106
  82. package/src/js/components/tooltip.js +41 -31
  83. package/src/js/components/upload.js +53 -63
  84. package/src/js/core/accordion.js +58 -48
  85. package/src/js/core/alert.js +9 -17
  86. package/src/js/core/core.js +17 -69
  87. package/src/js/core/cover.js +15 -15
  88. package/src/js/core/drop.js +110 -94
  89. package/src/js/core/form-custom.js +22 -27
  90. package/src/js/core/gif.js +3 -7
  91. package/src/js/core/grid.js +57 -58
  92. package/src/js/core/height-match.js +16 -29
  93. package/src/js/core/height-viewport.js +30 -34
  94. package/src/js/core/icon.js +47 -52
  95. package/src/js/core/img.js +153 -143
  96. package/src/js/core/index.js +39 -39
  97. package/src/js/core/leader.js +9 -18
  98. package/src/js/core/margin.js +21 -37
  99. package/src/js/core/modal.js +49 -36
  100. package/src/js/core/nav.js +2 -4
  101. package/src/js/core/navbar.js +113 -85
  102. package/src/js/core/offcanvas.js +51 -54
  103. package/src/js/core/overflow-auto.js +13 -17
  104. package/src/js/core/responsive.js +14 -12
  105. package/src/js/core/scroll.js +10 -20
  106. package/src/js/core/scrollspy-nav.js +34 -31
  107. package/src/js/core/scrollspy.js +37 -54
  108. package/src/js/core/sticky.js +175 -123
  109. package/src/js/core/svg.js +68 -83
  110. package/src/js/core/switcher.js +56 -47
  111. package/src/js/core/tab.js +7 -10
  112. package/src/js/core/toggle.js +69 -68
  113. package/src/js/core/video.js +22 -21
  114. package/src/js/mixin/animate.js +19 -20
  115. package/src/js/mixin/class.js +2 -4
  116. package/src/js/mixin/container.js +7 -11
  117. package/src/js/mixin/internal/animate-fade.js +73 -30
  118. package/src/js/mixin/internal/animate-slide.js +58 -41
  119. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  120. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  121. package/src/js/mixin/lazyload.js +20 -0
  122. package/src/js/mixin/media.js +5 -10
  123. package/src/js/mixin/modal.js +89 -66
  124. package/src/js/mixin/parallax.js +149 -107
  125. package/src/js/mixin/position.js +26 -20
  126. package/src/js/mixin/slider-autoplay.js +12 -21
  127. package/src/js/mixin/slider-drag.js +64 -65
  128. package/src/js/mixin/slider-nav.js +26 -35
  129. package/src/js/mixin/slider-reactive.js +2 -8
  130. package/src/js/mixin/slider.js +47 -60
  131. package/src/js/mixin/slideshow.js +12 -22
  132. package/src/js/mixin/swipe.js +72 -0
  133. package/src/js/mixin/togglable.js +89 -63
  134. package/src/js/uikit-core.js +2 -4
  135. package/src/js/uikit.js +2 -4
  136. package/src/js/util/ajax.js +25 -40
  137. package/src/js/util/animation.js +77 -75
  138. package/src/js/util/attr.js +17 -21
  139. package/src/js/util/class.js +14 -52
  140. package/src/js/util/dimensions.js +78 -49
  141. package/src/js/util/dom.js +37 -66
  142. package/src/js/util/env.js +7 -12
  143. package/src/js/util/event.js +60 -59
  144. package/src/js/util/fastdom.js +1 -6
  145. package/src/js/util/filter.js +18 -36
  146. package/src/js/util/index.js +1 -1
  147. package/src/js/util/lang.js +82 -121
  148. package/src/js/util/mouse.js +19 -17
  149. package/src/js/util/observer.js +36 -0
  150. package/src/js/util/options.js +35 -49
  151. package/src/js/util/player.js +41 -36
  152. package/src/js/util/position.js +54 -46
  153. package/src/js/util/selector.js +43 -58
  154. package/src/js/util/style.js +39 -49
  155. package/src/js/util/viewport.js +75 -64
  156. package/src/less/components/base.less +10 -33
  157. package/src/less/components/flex.less +0 -9
  158. package/src/less/components/form-range.less +48 -95
  159. package/src/less/components/form.less +0 -1
  160. package/src/less/components/height.less +3 -0
  161. package/src/less/components/leader.less +0 -1
  162. package/src/less/components/lightbox.less +0 -1
  163. package/src/less/components/modal.less +3 -7
  164. package/src/less/components/navbar.less +0 -7
  165. package/src/less/components/progress.less +14 -36
  166. package/src/less/components/slider.less +0 -3
  167. package/src/less/components/slideshow.less +0 -3
  168. package/src/less/components/text.less +16 -32
  169. package/src/less/components/utility.less +25 -0
  170. package/src/scss/components/base.scss +10 -33
  171. package/src/scss/components/flex.scss +0 -9
  172. package/src/scss/components/form-range.scss +48 -95
  173. package/src/scss/components/form.scss +3 -4
  174. package/src/scss/components/height.scss +3 -0
  175. package/src/scss/components/icon.scss +2 -2
  176. package/src/scss/components/leader.scss +0 -1
  177. package/src/scss/components/lightbox.scss +0 -1
  178. package/src/scss/components/modal.scss +3 -7
  179. package/src/scss/components/navbar.scss +0 -7
  180. package/src/scss/components/progress.scss +14 -36
  181. package/src/scss/components/search.scss +1 -1
  182. package/src/scss/components/slider.scss +0 -3
  183. package/src/scss/components/slideshow.scss +0 -3
  184. package/src/scss/components/text.scss +16 -32
  185. package/src/scss/components/utility.scss +25 -0
  186. package/src/scss/mixins-theme.scss +1 -1
  187. package/src/scss/mixins.scss +1 -1
  188. package/src/scss/variables-theme.scss +9 -9
  189. package/src/scss/variables.scss +9 -9
  190. package/tests/align.html +10 -10
  191. package/tests/animation.html +2 -2
  192. package/tests/article.html +2 -2
  193. package/tests/base.html +3 -3
  194. package/tests/card.html +10 -10
  195. package/tests/column.html +3 -3
  196. package/tests/comment.html +9 -9
  197. package/tests/countdown.html +10 -8
  198. package/tests/dotnav.html +3 -3
  199. package/tests/image.html +296 -64
  200. package/tests/images/image-type.avif +0 -0
  201. package/tests/images/image-type.jpeg +0 -0
  202. package/tests/images/image-type.webp +0 -0
  203. package/tests/index.html +8 -8
  204. package/tests/js/index.js +114 -85
  205. package/tests/lightbox.html +10 -10
  206. package/tests/marker.html +2 -2
  207. package/tests/modal.html +8 -9
  208. package/tests/navbar.html +2 -2
  209. package/tests/overlay.html +7 -7
  210. package/tests/parallax.html +16 -7
  211. package/tests/position.html +12 -12
  212. package/tests/slidenav.html +12 -12
  213. package/tests/slider.html +20 -20
  214. package/tests/sortable.html +1 -1
  215. package/tests/sticky-parallax.html +87 -99
  216. package/tests/sticky.html +56 -24
  217. package/tests/svg.html +6 -6
  218. package/tests/table.html +11 -11
  219. package/tests/thumbnav.html +12 -12
  220. package/tests/transition.html +30 -30
  221. package/tests/utility.html +50 -33
  222. package/tests/video.html +1 -1
  223. package/tests/width.html +1 -1
  224. package/src/js/mixin/flex-bug.js +0 -56
  225. package/src/js/util/promise.js +0 -191
  226. 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
@@ -1,14 +1,50 @@
1
1
  # Changelog
2
2
 
3
- ## WIP
3
+ ## 3.12.0 (March 14, 2022)
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
4
16
 
5
17
  ### Changed
6
18
 
7
- - Scroll Sticky component's content if it's higher than viewport
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
+ - Slider and Switcher remove native `loading="lazy"` attribute from adjacent slides
22
+ - Accordion, Drop, Switcher and Toggle remove native `loading="lazy"` attribute from their children when entering the viewport
23
+ - Improve sticky behavior if sticky content is larger than the viewport
24
+ - Sticky component's `bottom` option checks for bottom padding if sticky element is within referenced element
25
+ - Height Viewport component sets `uk-height-viewport` class to reduce initial layout shifts
26
+
27
+ ### Deprecated
28
+
29
+ - Deprecate `uk-img` for `<img>` element: Use native `loading="lazy"` attribute instead
30
+
31
+ ## Removed
32
+
33
+ - Remove IE11 support
34
+ - Removed `data-width` and `data-height` for `<img>` element from Image component. Use native attributes instead.
8
35
 
9
36
  ### Fixed
10
37
 
11
38
  - Fix infinite sliding in Slider component with equally sized slides
39
+ - Fix Slider component sets calculation
40
+ - Fix dropdowns not closing in Navbar component when hovering dropbar and navigation with keyboard
41
+ - Fix dropdown no longer closes if pointer is still moving towards it
42
+ - Fix `fadein` not transformed correctly to `fade-in` in scss build
43
+ - Fix Sticky component setting wrong margin for placeholder
44
+ - Fix Sticky placeholder sets height with fraction
45
+ - Fix Sticky component does not animate in if scroll position equals top offset
46
+ - Fix Sticky component prevents transition on `selTarget` if forced to hide for recalculation
47
+ - Fix Parallax component initial jump in background image
12
48
 
13
49
  ## 3.11.1 (February 7, 2022)
14
50
 
@@ -47,7 +83,7 @@
47
83
  - Fix usage of `data-` prefix for Cover and Responsive component
48
84
  - Fix pointer events for iframes in Cover component
49
85
  - Fix Slideshow component no longer throws if items list does not exist
50
- - Fix space key no longer triggers Toggle on `input` elements
86
+ - Fix space key no longer triggers Toggle on `<input>` element
51
87
 
52
88
  ## 3.10.0 (January 12, 2022)
53
89
 
@@ -364,7 +400,7 @@
364
400
 
365
401
  - Fix component update handling
366
402
  - Fix Tooltip position
367
- - Fix Tooltip component applied to button elements in iOS
403
+ - Fix Tooltip component applied to `<button>` element in iOS
368
404
  - Fix regression in Switcher component
369
405
 
370
406
  ## 3.6.8 (January 5, 2021)
@@ -913,7 +949,7 @@
913
949
  ### Fixed
914
950
 
915
951
  - Fix Slideshow invisible after switching tabs in Switcher
916
- - Fix lazy loading images in Img component in UC Browser
952
+ - Fix lazy loading images in Image component in UC Browser
917
953
  - Fix opening Offcanvas/Modal through buttons
918
954
 
919
955
  ## 3.1.8 (August 29, 2019)
@@ -1083,8 +1119,8 @@
1083
1119
  ### Fixed
1084
1120
 
1085
1121
  - Fix touch event detection
1086
- - Fix background images are shown too large on retina displays in Img component
1087
- - Fix correctly calculate offsetLeft in Img component
1122
+ - Fix background images are shown too large on retina displays in Image component
1123
+ - Fix correctly calculate offsetLeft in Image component
1088
1124
  - Fix autofocus elements not blurring within Toggable on hide
1089
1125
 
1090
1126
  ## 3.0.2 (January 15, 2019)
@@ -1093,7 +1129,7 @@
1093
1129
 
1094
1130
  - Fix offcanvas overlay transition
1095
1131
  - Fix active state in Switcher component
1096
- - Fix background images on displays with higher devicePixelRatio in Img component
1132
+ - Fix background images on displays with higher devicePixelRatio in Image component
1097
1133
 
1098
1134
  ## 3.0.1 (January 14, 2019)
1099
1135
 
@@ -1126,7 +1162,7 @@
1126
1162
  ### Fixed
1127
1163
 
1128
1164
  - Fix visible toggle and its child elements not being focusable through keyboard navigation
1129
- - Fix Img component correctly escapes urls on background images
1165
+ - Fix Image component correctly escapes urls on background images
1130
1166
 
1131
1167
  ## 3.0.0 rc 26 (January 3, 2019)
1132
1168
 
@@ -1145,8 +1181,8 @@
1145
1181
  - Fix `flex bug` mixin (IE 11)
1146
1182
  - Fix properly resolving css custom properties in scss
1147
1183
  - Fix order of variable assignments in scss
1148
- - Fix background images are shown too large on retina displays in Img component
1149
- - Fix lazy loading images in Img component in Safari
1184
+ - Fix background images are shown too large on retina displays in Image component
1185
+ - Fix lazy loading images in Image component in Safari
1150
1186
  - Limit positioned element to container width and margin in Position component
1151
1187
 
1152
1188
  ## 3.0.0 rc 25 (November 30, 2018)
@@ -1234,7 +1270,7 @@
1234
1270
 
1235
1271
  ### Fixed
1236
1272
 
1237
- - Fix preserve color not working if class is set on svg element in Icon component
1273
+ - Fix preserve color not working if class is set on `<svg>` element in Icon component
1238
1274
  - Fix inverse hover color for accordion title
1239
1275
  - Fix close color being overwritten from toolbar in Lightbox component
1240
1276
  - Fix Modal not hiding upon being destroyed
@@ -1478,7 +1514,7 @@
1478
1514
 
1479
1515
  ### Added
1480
1516
 
1481
- - Add Img component to lazy load images
1517
+ - Add Image component to lazy load images
1482
1518
  - Add Filter component to filter and sort any kind of layout
1483
1519
  - Add `masonry` option to Grid component
1484
1520
  - Add inverse style for form icon
@@ -1641,7 +1677,7 @@
1641
1677
 
1642
1678
  ### Changed
1643
1679
 
1644
- - IMPORTANT: Use `a` element instead of headings for the accordion title
1680
+ - IMPORTANT: Use `<a>` element instead of headings for the accordion title
1645
1681
  - Calling a component constructor with data on an already initialized component will reset the component
1646
1682
  - Dropbar no longer repositions Dropdowns in DOM upon opening
1647
1683
 
@@ -1742,7 +1778,7 @@
1742
1778
  - Fix slide animations stacking when tab is not focused in Slideshow component
1743
1779
  - Fix overlay not showing in Offcanvas component
1744
1780
  - Fix Slideshow Parallax in Slideshow component for IE11
1745
- - Fix default border-radius for button elements in Chrome 62.
1781
+ - Fix default border-radius for `<button>` element in Chrome 62.
1746
1782
 
1747
1783
  ## 3.0.0 beta 31 (October 20, 2017)
1748
1784
 
@@ -1851,7 +1887,7 @@
1851
1887
 
1852
1888
  - Offcanvas will keep scroll position if anchor link was clicked
1853
1889
  - Fix margin modifier in Position component for IE11
1854
- - Fix divider-small text alignment for `hr` elements Edge and IE
1890
+ - Fix divider-small text alignment for `<hr>` element Edge and IE
1855
1891
  - Fix setting the ratio of Spinner component
1856
1892
  - Fix event handling in Sortable component
1857
1893
  - Fix grid calculation (Firefox)
@@ -1887,7 +1923,7 @@
1887
1923
 
1888
1924
  ### Changed
1889
1925
 
1890
- - Make Icon component work with button elements
1926
+ - Make Icon component work with `<button>` element
1891
1927
 
1892
1928
  ### Fixed
1893
1929
 
@@ -2217,7 +2253,7 @@
2217
2253
 
2218
2254
  ### Changed
2219
2255
 
2220
- - UIkit observes `body` element too now
2256
+ - UIkit observes `<body>` element too now
2221
2257
  - Performance improvements
2222
2258
 
2223
2259
  ### Fixed
@@ -2263,7 +2299,7 @@
2263
2299
 
2264
2300
  ### Fixed
2265
2301
 
2266
- - Fix Icon component on canvas elements (Safari)
2302
+ - Fix Icon component on `<canvas>` elements (Safari)
2267
2303
 
2268
2304
  ## 3.0.0 beta 1 (January 09, 2017)
2269
2305
 
@@ -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
  }