uikit 3.17.12-dev.f1425d280 → 3.18.1-dev.0856bd8a6

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 (260) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/css/uikit-core-rtl.css +577 -504
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +577 -504
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +600 -527
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +600 -527
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +2 -4
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +96 -60
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +96 -60
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +11 -6
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +8 -3
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +735 -37
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +8 -3
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +792 -129
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +7 -7
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +2 -8
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +299 -273
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +9 -4
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +505 -365
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +3 -3
  43. package/src/images/components/navbar-toggle-icon.svg +1 -1
  44. package/src/images/icons/arrow-up-right.svg +4 -0
  45. package/src/images/icons/git-branch.svg +4 -4
  46. package/src/images/icons/git-fork.svg +4 -4
  47. package/src/images/icons/link-external.svg +5 -0
  48. package/src/images/icons/signal.svg +3 -0
  49. package/src/images/icons/telegram.svg +3 -0
  50. package/src/images/icons/threads.svg +3 -0
  51. package/src/images/icons/x.svg +3 -0
  52. package/src/js/components/countdown.js +1 -3
  53. package/src/js/components/internal/slider-preload.js +6 -0
  54. package/src/js/components/lightbox-panel.js +2 -6
  55. package/src/js/components/parallax.js +1 -20
  56. package/src/js/components/slider.js +38 -18
  57. package/src/js/components/slideshow.js +14 -46
  58. package/src/js/components/sortable.js +7 -6
  59. package/src/js/components/tooltip.js +1 -7
  60. package/src/js/core/accordion.js +1 -1
  61. package/src/js/core/drop.js +3 -5
  62. package/src/js/core/dropnav.js +24 -20
  63. package/src/js/core/height-match.js +7 -3
  64. package/src/js/core/height-placeholder.js +32 -0
  65. package/src/js/core/icon.js +12 -5
  66. package/src/js/core/index.js +2 -0
  67. package/src/js/core/inverse.js +103 -0
  68. package/src/js/core/modal.js +13 -0
  69. package/src/js/core/navbar.js +32 -172
  70. package/src/js/core/responsive.js +2 -29
  71. package/src/js/core/sticky.js +45 -29
  72. package/src/js/core/video.js +5 -1
  73. package/src/js/mixin/modal.js +1 -1
  74. package/src/js/mixin/parallax.js +19 -0
  75. package/src/js/mixin/slider-autoplay.js +1 -3
  76. package/src/js/mixin/slider-drag.js +22 -19
  77. package/src/js/mixin/slider-nav.js +10 -1
  78. package/src/js/mixin/slider-parallax.js +138 -0
  79. package/src/js/mixin/slider-reactive.js +1 -1
  80. package/src/js/mixin/slider.js +25 -3
  81. package/src/js/util/animation.js +14 -14
  82. package/src/js/util/dom.js +2 -2
  83. package/src/js/util/mouse.js +8 -11
  84. package/src/js/util/scroll.js +58 -0
  85. package/src/js/util/selector.js +4 -2
  86. package/src/js/util/style.js +3 -3
  87. package/src/js/util/viewport.js +8 -4
  88. package/src/less/components/align.less +2 -2
  89. package/src/less/components/animation.less +2 -2
  90. package/src/less/components/article.less +2 -2
  91. package/src/less/components/base.less +3 -3
  92. package/src/less/components/card.less +13 -6
  93. package/src/less/components/column.less +3 -3
  94. package/src/less/components/container.less +3 -3
  95. package/src/less/components/divider.less +2 -2
  96. package/src/less/components/dropbar.less +1 -1
  97. package/src/less/components/dropdown.less +1 -1
  98. package/src/less/components/dropnav.less +1 -1
  99. package/src/less/components/form.less +1 -1
  100. package/src/less/components/grid.less +3 -3
  101. package/src/less/components/height.less +1 -1
  102. package/src/less/components/icon.less +3 -3
  103. package/src/less/components/inverse.less +12 -0
  104. package/src/less/components/link.less +1 -1
  105. package/src/less/components/modal.less +3 -3
  106. package/src/less/components/nav.less +66 -0
  107. package/src/less/components/navbar.less +7 -11
  108. package/src/less/components/overlay.less +5 -0
  109. package/src/less/components/position.less +7 -7
  110. package/src/less/components/section.less +6 -5
  111. package/src/less/components/sticky.less +1 -1
  112. package/src/less/components/svg.less +3 -3
  113. package/src/less/components/tile.less +10 -0
  114. package/src/less/components/transition.less +9 -9
  115. package/src/less/components/utility.less +4 -4
  116. package/src/less/components/width.less +7 -7
  117. package/src/less/theme/alert.less +1 -1
  118. package/src/less/theme/align.less +1 -1
  119. package/src/less/theme/animation.less +1 -1
  120. package/src/less/theme/article.less +1 -1
  121. package/src/less/theme/background.less +1 -1
  122. package/src/less/theme/badge.less +1 -1
  123. package/src/less/theme/base.less +1 -1
  124. package/src/less/theme/breadcrumb.less +1 -1
  125. package/src/less/theme/button.less +1 -1
  126. package/src/less/theme/card.less +1 -1
  127. package/src/less/theme/close.less +1 -1
  128. package/src/less/theme/column.less +1 -1
  129. package/src/less/theme/comment.less +1 -1
  130. package/src/less/theme/container.less +1 -1
  131. package/src/less/theme/description-list.less +1 -1
  132. package/src/less/theme/divider.less +1 -1
  133. package/src/less/theme/dotnav.less +1 -1
  134. package/src/less/theme/drop.less +1 -1
  135. package/src/less/theme/dropbar.less +1 -1
  136. package/src/less/theme/dropdown.less +1 -1
  137. package/src/less/theme/form-range.less +1 -1
  138. package/src/less/theme/height.less +1 -1
  139. package/src/less/theme/icon.less +1 -1
  140. package/src/less/theme/iconnav.less +1 -1
  141. package/src/less/theme/inverse.less +1 -1
  142. package/src/less/theme/label.less +1 -1
  143. package/src/less/theme/leader.less +1 -1
  144. package/src/less/theme/lightbox.less +1 -1
  145. package/src/less/theme/margin.less +1 -1
  146. package/src/less/theme/modal.less +1 -1
  147. package/src/less/theme/nav.less +1 -1
  148. package/src/less/theme/navbar.less +3 -3
  149. package/src/less/theme/notification.less +1 -1
  150. package/src/less/theme/offcanvas.less +1 -1
  151. package/src/less/theme/overlay.less +1 -1
  152. package/src/less/theme/padding.less +1 -1
  153. package/src/less/theme/pagination.less +1 -1
  154. package/src/less/theme/position.less +1 -1
  155. package/src/less/theme/search.less +1 -1
  156. package/src/less/theme/spinner.less +1 -1
  157. package/src/less/theme/sticky.less +1 -1
  158. package/src/less/theme/tab.less +2 -2
  159. package/src/less/theme/table.less +1 -1
  160. package/src/less/theme/thumbnav.less +1 -1
  161. package/src/less/theme/tile.less +1 -1
  162. package/src/less/theme/tooltip.less +1 -1
  163. package/src/less/theme/totop.less +1 -1
  164. package/src/less/theme/transition.less +1 -1
  165. package/src/less/theme/utility.less +1 -1
  166. package/src/less/theme/variables.less +1 -1
  167. package/src/less/theme/width.less +1 -1
  168. package/src/less/uikit.less +1 -1
  169. package/src/scss/components/align.scss +2 -2
  170. package/src/scss/components/animation.scss +2 -2
  171. package/src/scss/components/base.scss +2 -2
  172. package/src/scss/components/card.scss +12 -6
  173. package/src/scss/components/column.scss +3 -3
  174. package/src/scss/components/container.scss +3 -3
  175. package/src/scss/components/divider.scss +2 -2
  176. package/src/scss/components/dropnav.scss +1 -1
  177. package/src/scss/components/form.scss +1 -1
  178. package/src/scss/components/grid.scss +3 -3
  179. package/src/scss/components/height.scss +1 -1
  180. package/src/scss/components/icon.scss +3 -3
  181. package/src/scss/components/inverse.scss +12 -0
  182. package/src/scss/components/modal.scss +3 -3
  183. package/src/scss/components/nav.scss +63 -0
  184. package/src/scss/components/navbar.scss +5 -8
  185. package/src/scss/components/overlay.scss +4 -0
  186. package/src/scss/components/position.scss +7 -7
  187. package/src/scss/components/section.scss +6 -5
  188. package/src/scss/components/sticky.scss +1 -1
  189. package/src/scss/components/svg.scss +3 -3
  190. package/src/scss/components/tile.scss +8 -0
  191. package/src/scss/components/transition.scss +9 -9
  192. package/src/scss/components/utility.scss +4 -4
  193. package/src/scss/components/width.scss +7 -7
  194. package/src/scss/mixins-theme.scss +10 -7
  195. package/src/scss/mixins.scss +7 -4
  196. package/src/scss/theme/alert.scss +1 -0
  197. package/src/scss/theme/align.scss +1 -1
  198. package/src/scss/theme/animation.scss +1 -1
  199. package/src/scss/theme/article.scss +1 -1
  200. package/src/scss/theme/background.scss +1 -1
  201. package/src/scss/theme/badge.scss +1 -1
  202. package/src/scss/theme/base.scss +1 -1
  203. package/src/scss/theme/breadcrumb.scss +1 -1
  204. package/src/scss/theme/button.scss +1 -1
  205. package/src/scss/theme/card.scss +1 -0
  206. package/src/scss/theme/close.scss +1 -1
  207. package/src/scss/theme/column.scss +1 -1
  208. package/src/scss/theme/comment.scss +1 -1
  209. package/src/scss/theme/container.scss +1 -1
  210. package/src/scss/theme/description-list.scss +1 -1
  211. package/src/scss/theme/divider.scss +1 -1
  212. package/src/scss/theme/dotnav.scss +1 -0
  213. package/src/scss/theme/drop.scss +1 -1
  214. package/src/scss/theme/dropbar.scss +1 -1
  215. package/src/scss/theme/dropdown.scss +1 -1
  216. package/src/scss/theme/form-range.scss +1 -1
  217. package/src/scss/theme/height.scss +1 -1
  218. package/src/scss/theme/icon.scss +1 -1
  219. package/src/scss/theme/iconnav.scss +1 -1
  220. package/src/scss/theme/inverse.scss +1 -1
  221. package/src/scss/theme/label.scss +1 -1
  222. package/src/scss/theme/leader.scss +1 -1
  223. package/src/scss/theme/lightbox.scss +1 -1
  224. package/src/scss/theme/margin.scss +1 -1
  225. package/src/scss/theme/modal.scss +1 -0
  226. package/src/scss/theme/nav.scss +1 -1
  227. package/src/scss/theme/navbar.scss +1 -1
  228. package/src/scss/theme/notification.scss +1 -1
  229. package/src/scss/theme/offcanvas.scss +1 -1
  230. package/src/scss/theme/overlay.scss +1 -1
  231. package/src/scss/theme/padding.scss +1 -1
  232. package/src/scss/theme/pagination.scss +1 -1
  233. package/src/scss/theme/position.scss +1 -1
  234. package/src/scss/theme/search.scss +1 -1
  235. package/src/scss/theme/spinner.scss +1 -1
  236. package/src/scss/theme/sticky.scss +1 -1
  237. package/src/scss/theme/tab.scss +1 -1
  238. package/src/scss/theme/table.scss +1 -0
  239. package/src/scss/theme/thumbnav.scss +1 -1
  240. package/src/scss/theme/tile.scss +1 -1
  241. package/src/scss/theme/tooltip.scss +1 -1
  242. package/src/scss/theme/totop.scss +1 -1
  243. package/src/scss/theme/transition.scss +1 -1
  244. package/src/scss/theme/utility.scss +1 -1
  245. package/src/scss/theme/variables.scss +1 -1
  246. package/src/scss/theme/width.scss +1 -1
  247. package/src/scss/uikit.scss +1 -1
  248. package/src/scss/variables-theme.scss +20 -5
  249. package/src/scss/variables.scss +20 -5
  250. package/tests/height.html +58 -1
  251. package/tests/icon.html +38 -10
  252. package/tests/nav.html +42 -0
  253. package/tests/navbar.html +1 -1
  254. package/tests/offcanvas.html +8 -8
  255. package/tests/search.html +300 -202
  256. package/tests/slider.html +58 -0
  257. package/tests/slideshow.html +66 -0
  258. package/tests/sticky-navbar.html +381 -23
  259. package/src/images/icons/pagekit.svg +0 -3
  260. package/src/js/mixin/internal/scroll.js +0 -39
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "uikit",
3
3
  "title": "UIkit",
4
4
  "description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
5
- "version": "3.17.12-dev.f1425d280",
5
+ "version": "3.18.1-dev.0856bd8a6",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -19,7 +19,7 @@
19
19
  "url": "https://github.com/uikit/uikit/issues"
20
20
  },
21
21
  "homepage": "https://getuikit.com",
22
- "packageManager": "pnpm@8.11.0",
22
+ "packageManager": "pnpm@8.15.1",
23
23
  "devDependencies": {
24
24
  "@rollup/plugin-alias": "^5.1.0",
25
25
  "@rollup/plugin-replace": "^5.0.5",
@@ -28,7 +28,7 @@
28
28
  "chokidar-cli": "^3.0.0",
29
29
  "clean-css": "^5.3.3",
30
30
  "dateformat": "^5.0.3",
31
- "esbuild": "^0.19.9",
31
+ "esbuild": "^0.20.0",
32
32
  "eslint": "^8.55.0",
33
33
  "eslint-config-prettier": "^9.1.0",
34
34
  "execa": "^8.0.1",
@@ -8,7 +8,7 @@
8
8
  opacity: 1;
9
9
  }
10
10
 
11
- .uk-navbar-toggle svg > .line-3 { opacity: 0; }
11
+ .uk-navbar-toggle-animate svg > .line-3 { opacity: 0; }
12
12
  .uk-navbar-toggle-animate[aria-expanded="true"] svg > .line-3 { opacity: 1; }
13
13
 
14
14
  .uk-navbar-toggle-animate[aria-expanded="true"] svg > .line-2 { transform: rotate(45deg); }
@@ -0,0 +1,4 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
+ <polyline fill="none" stroke="#000" points="16 10 16 4 10 4"/>
3
+ <line fill="none" stroke="#000" x1="4" y1="16" x2="16" y2="4"/>
4
+ </svg>
@@ -1,6 +1,6 @@
1
1
  <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
- <circle fill="none" stroke="#000" stroke-width="1.2" cx="7" cy="3" r="2" />
3
- <circle fill="none" stroke="#000" stroke-width="1.2" cx="14" cy="6" r="2" />
4
- <circle fill="none" stroke="#000" stroke-width="1.2" cx="7" cy="17" r="2" />
5
- <path fill="none" stroke="#000" stroke-width="2" d="M14,8 C14,10.41 12.43,10.87 10.56,11.25 C9.09,11.54 7,12.06 7,15 L7,5" />
2
+ <path fill="none" stroke="#000" d="m13.5,8c0,2.41-1.57,2.87-3.44,3.25-1.47.29-3.56.81-3.56,3.75V5"/>
3
+ <circle fill="none" stroke="#000" cx="6.5" cy="3" r="1.79"/>
4
+ <circle fill="none" stroke="#000" cx="13.5" cy="6" r="1.79"/>
5
+ <circle fill="none" stroke="#000" cx="6.5" cy="17" r="1.79"/>
6
6
  </svg>
@@ -1,6 +1,6 @@
1
1
  <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
- <circle fill="none" stroke="#000" stroke-width="1.2" cx="5.79" cy="2.79" r="1.79" />
3
- <circle fill="none" stroke="#000" stroke-width="1.2" cx="14.19" cy="2.79" r="1.79" />
4
- <ellipse fill="none" stroke="#000" stroke-width="1.2" cx="10.03" cy="16.79" rx="1.79" ry="1.79" />
5
- <path fill="none" stroke="#000" stroke-width="2" d="M5.79,4.57 L5.79,6.56 C5.79,9.19 10.03,10.22 10.03,13.31 C10.03,14.86 10.04,14.55 10.04,14.55 C10.04,14.37 10.04,14.86 10.04,13.31 C10.04,10.22 14.2,9.19 14.2,6.56 L14.2,4.57" />
2
+ <circle fill="none" stroke="#000" cx="6" cy="3" r="1.79"/>
3
+ <circle fill="none" stroke="#000" cx="14" cy="3" r="1.79"/>
4
+ <circle fill="none" stroke="#000" cx="10" cy="17" r="1.79"/>
5
+ <path fill="none" stroke="#000" d="m6,4.78v1.99c0,2.63,4,3.66,4,6.75,0,1.55.01,1.24.01,1.24,0-.18,0,.31,0-1.24,0-3.09,3.99-4.12,3.99-6.75v-1.99"/>
6
6
  </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
+ <polyline fill="none" stroke="#000" points="14.5 10.5 14.5 16.5 3.5 16.5 3.5 5.5 8.5 5.5"/>
3
+ <polyline fill="none" stroke="#000" points="17.5 8.5 17.5 2.5 11.5 2.5"/>
4
+ <line fill="none" stroke="#000" x1="6.5" y1="13.5" x2="17.5" y2="2.5"/>
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="m7.86,1.34l.2.81c-.79.19-1.54.51-2.24.93l-.43-.71c.77-.46,1.6-.81,2.47-1.02Zm4.28,0l-.2.81c.79.19,1.54.51,2.24.93l.43-.72c-.77-.46-1.6-.81-2.47-1.02h0ZM2.37,5.39c-.46.77-.81,1.6-1.02,2.47l.81.2c.19-.79.51-1.54.93-2.24l-.71-.43Zm-.45,4.61c0-.41.03-.81.09-1.21l-.83-.13c-.13.89-.13,1.79,0,2.67l.83-.13c-.06-.4-.09-.81-.09-1.21h0Zm12.69,7.63l-.43-.72c-.7.42-1.45.73-2.24.93l.2.81c.87-.21,1.7-.56,2.46-1.02h0Zm3.47-7.63c0,.41-.03.81-.09,1.21l.83.13c.13-.89.13-1.79,0-2.67l-.83.13c.06.4.09.81.09,1.21Zm.58,2.14l-.81-.2c-.19.79-.51,1.54-.93,2.24l.72.43c.46-.77.81-1.6,1.02-2.47h0Zm-7.44,5.85c-.8.12-1.62.12-2.42,0l-.13.83c.89.13,1.79.13,2.67,0l-.13-.83Zm5.29-3.2c-.48.65-1.06,1.23-1.71,1.71l.5.67c.72-.53,1.36-1.16,1.89-1.88l-.67-.5Zm-1.71-11.29c.65.48,1.23,1.06,1.71,1.71l.67-.5c-.53-.72-1.17-1.35-1.88-1.88l-.5.67Zm-11.29,1.71c.48-.65,1.06-1.23,1.71-1.71l-.5-.67c-.72.53-1.35,1.17-1.88,1.88l.67.5Zm14.14.18l-.72.43c.42.7.73,1.45.93,2.24l.81-.2c-.21-.87-.56-1.7-1.02-2.46h0Zm-8.84-3.38c.8-.12,1.62-.12,2.42,0l.13-.83c-.89-.13-1.79-.13-2.67,0l.13.83Zm-4.86,15.38l-1.73.4.4-1.73-.81-.19-.4,1.73c-.07.28.02.58.22.78s.5.29.78.22l1.73-.39-.19-.82Zm-1.96-2.26l.81.19.28-1.2c-.41-.68-.71-1.42-.9-2.19l-.81.2c.18.74.46,1.45.82,2.12l-.2.88Zm3.9,1.81l-1.19.28.19.81.88-.2c.67.36,1.38.64,2.12.82l.2-.81c-.77-.19-1.51-.5-2.19-.9h0ZM10,2.75c-2.63,0-5.06,1.43-6.34,3.74s-1.19,5.12.21,7.36l-.7,2.97,2.97-.7c2.61,1.64,5.96,1.46,8.37-.46s3.34-5.15,2.32-8.06c-1.02-2.91-3.77-4.85-6.85-4.85Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="m10,1.09C5.08,1.09,1.09,5.08,1.09,10s3.99,8.91,8.91,8.91,8.91-3.99,8.91-8.91S14.92,1.09,10,1.09Zm4.25,5.8c-.03.36-.23,1.62-.44,2.99-.31,1.93-.64,4.04-.64,4.04,0,0-.05.59-.49.7s-1.16-.36-1.29-.46c-.1-.08-1.93-1.24-2.6-1.8-.18-.15-.39-.46.03-.82.93-.85,2.04-1.91,2.7-2.58.31-.31.62-1.03-.67-.15-1.83,1.26-3.63,2.45-3.63,2.45,0,0-.41.26-1.19.03-.77-.23-1.67-.54-1.67-.54,0,0-.62-.39.44-.8h0s4.46-1.83,6-2.47c.59-.26,2.6-1.08,2.6-1.08,0,0,.93-.36.85.52Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="m14.47,9.29c-.08-.04-.16-.08-.25-.11-.14-2.66-1.6-4.18-4.04-4.2-.01,0-.02,0-.03,0-1.46,0-2.67.62-3.42,1.76l1.34.92c.56-.85,1.43-1.03,2.08-1.03,0,0,.01,0,.02,0,.8,0,1.41.24,1.8.69.29.33.48.79.57,1.37-.71-.12-1.48-.16-2.31-.11-2.32.13-3.81,1.49-3.71,3.37.05.95.53,1.77,1.34,2.31.69.45,1.57.67,2.49.62,1.21-.07,2.16-.53,2.83-1.38.5-.64.82-1.48.96-2.52.58.35,1.01.81,1.24,1.36.4.94.43,2.48-.83,3.74-1.1,1.1-2.43,1.58-4.43,1.59-2.22-.02-3.9-.73-4.99-2.12-1.02-1.3-1.55-3.18-1.57-5.58.02-2.4.55-4.28,1.57-5.58,1.09-1.39,2.77-2.1,4.99-2.12,2.24.02,3.95.73,5.08,2.13.56.68.98,1.54,1.25,2.55l1.57-.42c-.33-1.23-.86-2.3-1.58-3.18-1.45-1.79-3.58-2.7-6.32-2.72h-.01c-2.73.02-4.84.94-6.25,2.73-1.26,1.6-1.9,3.82-1.93,6.61h0s0,.01,0,.01c.02,2.79.67,5.01,1.93,6.61,1.41,1.8,3.51,2.71,6.25,2.73h.01c2.43-.02,4.14-.65,5.55-2.06,1.85-1.84,1.79-4.16,1.18-5.58-.44-1.02-1.27-1.84-2.41-2.39Zm-4.2,3.95c-1.02.06-2.07-.4-2.12-1.38-.04-.72.52-1.53,2.19-1.63.19-.01.38-.02.56-.02.61,0,1.17.06,1.69.17-.19,2.41-1.32,2.8-2.32,2.85Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="m15.08,2.1h2.68l-5.89,6.71,6.88,9.1h-5.4l-4.23-5.53-4.84,5.53H1.59l6.24-7.18L1.24,2.1h5.54l3.82,5.05,4.48-5.05Zm-.94,14.23h1.48L6,3.61h-1.6l9.73,12.71h0Z"/>
3
+ </svg>
@@ -32,9 +32,7 @@ export default {
32
32
  events: {
33
33
  name: 'visibilitychange',
34
34
 
35
- el() {
36
- return document;
37
- },
35
+ el: () => document,
38
36
 
39
37
  handler() {
40
38
  if (document.hidden) {
@@ -5,4 +5,10 @@ export default {
5
5
  target: ({ slides }) => slides,
6
6
  targets: (instance) => instance.getAdjacentSlides(),
7
7
  }),
8
+
9
+ methods: {
10
+ getAdjacentSlides() {
11
+ return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);
12
+ },
13
+ },
8
14
  };
@@ -101,9 +101,7 @@ export default {
101
101
 
102
102
  self: true,
103
103
 
104
- handler() {
105
- this.showControls();
106
- },
104
+ handler: 'showControls',
107
105
  },
108
106
 
109
107
  {
@@ -132,9 +130,7 @@ export default {
132
130
  {
133
131
  name: 'keyup',
134
132
 
135
- el() {
136
- return document;
137
- },
133
+ el: () => document,
138
134
 
139
135
  handler({ keyCode }) {
140
136
  if (!this.isToggled(this.$el) || !this.draggable) {
@@ -1,6 +1,6 @@
1
1
  import { css, isVisible, parent, query, scrollParent, scrolledOver, toPx } from 'uikit-util';
2
2
  import { resize, scroll, viewport } from '../api/observables';
3
- import Parallax from '../mixin/parallax';
3
+ import Parallax, { ease } from '../mixin/parallax';
4
4
 
5
5
  export default {
6
6
  mixins: [Parallax],
@@ -80,25 +80,6 @@ export default {
80
80
  },
81
81
  };
82
82
 
83
- /*
84
- * Inspired by https://gist.github.com/gre/1650294?permalink_comment_id=3477425#gistcomment-3477425
85
- *
86
- * linear: 0
87
- * easeInSine: 0.5
88
- * easeOutSine: -0.5
89
- * easeInQuad: 1
90
- * easeOutQuad: -1
91
- * easeInCubic: 2
92
- * easeOutCubic: -2
93
- * easeInQuart: 3
94
- * easeOutQuart: -3
95
- * easeInQuint: 4
96
- * easeOutQuint: -4
97
- */
98
- function ease(percent, easing) {
99
- return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);
100
- }
101
-
102
83
  // SVG elements do not inherit from HTMLElement
103
84
  function getOffsetElement(el) {
104
85
  return el ? ('offsetTop' in el ? el : getOffsetElement(parent(el))) : document.documentElement;
@@ -22,12 +22,13 @@ import {
22
22
  import { resize } from '../api/observables';
23
23
  import Class from '../mixin/class';
24
24
  import Slider, { speedUp } from '../mixin/slider';
25
+ import SliderParallax from '../mixin/slider-parallax';
25
26
  import SliderReactive from '../mixin/slider-reactive';
26
27
  import SliderPreload from './internal/slider-preload';
27
28
  import Transitioner, { getMax, getWidth } from './internal/slider-transitioner';
28
29
 
29
30
  export default {
30
- mixins: [Class, Slider, SliderReactive, SliderPreload],
31
+ mixins: [Class, Slider, SliderReactive, SliderParallax, SliderPreload],
31
32
 
32
33
  props: {
33
34
  center: Boolean,
@@ -45,10 +46,6 @@ export default {
45
46
  },
46
47
 
47
48
  computed: {
48
- avgWidth() {
49
- return getWidth(this.list) / this.length;
50
- },
51
-
52
49
  finite({ finite }) {
53
50
  return finite || isFinite(this.list, this.center);
54
51
  },
@@ -76,7 +73,7 @@ export default {
76
73
  },
77
74
 
78
75
  sets({ sets: enabled }) {
79
- if (!enabled) {
76
+ if (!enabled || this.parallax) {
80
77
  return;
81
78
  }
82
79
 
@@ -93,7 +90,9 @@ export default {
93
90
  if (this.center) {
94
91
  if (
95
92
  left < width / 2 &&
96
- left + slideWidth + dimensions(getIndex(+i + 1, this.slides)).width / 2 >
93
+ left +
94
+ slideWidth +
95
+ dimensions(this.slides[getIndex(+i + 1, this.slides)]).width / 2 >
97
96
  width / 2
98
97
  ) {
99
98
  sets.push(+i);
@@ -143,11 +142,7 @@ export default {
143
142
  }
144
143
  }
145
144
 
146
- if (this.length && !this.dragging && !this.stack.length) {
147
- this.reorder();
148
- this._translate(1);
149
- }
150
-
145
+ this.reorder();
151
146
  this.updateActiveClasses();
152
147
  },
153
148
 
@@ -185,9 +180,10 @@ export default {
185
180
 
186
181
  const index =
187
182
  this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;
183
+ const avgWidth = getWidth(this.list) / this.length;
188
184
  this.duration =
189
- speedUp(this.avgWidth / this.velocity) *
190
- (dimensions(this.slides[index]).width / this.avgWidth);
185
+ speedUp(avgWidth / this.velocity) *
186
+ (dimensions(this.slides[index]).width / avgWidth);
191
187
 
192
188
  this.reorder();
193
189
  },
@@ -196,6 +192,7 @@ export default {
196
192
  if (~this.prevIndex) {
197
193
  addClass(this._getTransitioner().getItemIn(), this.clsActive);
198
194
  }
195
+ this.updateActiveClasses(this.prevIndex);
199
196
  },
200
197
 
201
198
  itemshown() {
@@ -237,12 +234,12 @@ export default {
237
234
  }
238
235
  },
239
236
 
240
- updateActiveClasses() {
241
- const actives = this._getTransitioner(this.index).getActives();
237
+ updateActiveClasses(currentIndex = this.index) {
238
+ const actives = this._getTransitioner(currentIndex).getActives();
239
+
242
240
  const activeClasses = [
243
241
  this.clsActive,
244
- ((!this.sets || includes(this.sets, toFloat(this.index))) && this.clsActivated) ||
245
- '',
242
+ !this.sets || includes(this.sets, toFloat(this.index)) ? this.clsActivated : '',
246
243
  ];
247
244
  for (const slide of this.slides) {
248
245
  const active = includes(actives, slide);
@@ -296,6 +293,29 @@ export default {
296
293
  }
297
294
  return Array.from(slides);
298
295
  },
296
+
297
+ getIndexAt(percent) {
298
+ let index = -1;
299
+ const firstSlideWidth = dimensions(this.slides[0]).width;
300
+ const lastSlideWidth = dimensions(last(this.slides)).width;
301
+ const scrollDist =
302
+ getWidth(this.list) -
303
+ (this.center ? firstSlideWidth / 2 + lastSlideWidth / 2 : lastSlideWidth);
304
+
305
+ let dist = percent * scrollDist;
306
+ let slidePercent = 0;
307
+
308
+ do {
309
+ const slideWidth = dimensions(this.slides[++index]).width;
310
+ const slideDist = this.center
311
+ ? slideWidth / 2 + dimensions(this.slides[index + 1]).width / 2
312
+ : slideWidth;
313
+ slidePercent = (dist / slideDist) % 1;
314
+ dist -= slideDist;
315
+ } while (dist >= 0 && index < this.maxIndex);
316
+
317
+ return [index, slidePercent];
318
+ },
299
319
  },
300
320
  };
301
321
 
@@ -1,25 +1,24 @@
1
- import { boxModelAdjust, css, inBrowser } from 'uikit-util';
1
+ import { css } from 'uikit-util';
2
2
  import Class from '../mixin/class';
3
+ import SliderParallax from '../mixin/slider-parallax';
3
4
  import SliderReactive from '../mixin/slider-reactive';
4
5
  import Slideshow from '../mixin/slideshow';
5
6
  import SliderPreload from './internal/slider-preload';
6
7
  import Animations from './internal/slideshow-animations';
7
8
 
8
- const supportsAspectRatio = inBrowser && CSS.supports('aspect-ratio', '1/1');
9
-
10
9
  export default {
11
- mixins: [Class, Slideshow, SliderReactive, SliderPreload],
10
+ mixins: [Class, Slideshow, SliderReactive, SliderParallax, SliderPreload],
12
11
 
13
12
  props: {
14
13
  ratio: String,
15
- minHeight: Number,
16
- maxHeight: Number,
14
+ minHeight: String,
15
+ maxHeight: String,
17
16
  },
18
17
 
19
18
  data: {
20
19
  ratio: '16:9',
21
- minHeight: false,
22
- maxHeight: false,
20
+ minHeight: undefined,
21
+ maxHeight: undefined,
23
22
  selList: '.uk-slideshow-items',
24
23
  attrItem: 'uk-slideshow-item',
25
24
  selNav: '.uk-slideshow-nav',
@@ -28,45 +27,14 @@ export default {
28
27
 
29
28
  watch: {
30
29
  list(list) {
31
- if (list && supportsAspectRatio) {
32
- css(list, {
33
- aspectRatio: this.ratio.replace(':', '/'),
34
- minHeight: this.minHeight || '',
35
- maxHeight: this.maxHeight || '',
36
- minWidth: '100%',
37
- maxWidth: '100%',
38
- });
39
- }
40
- },
41
- },
42
-
43
- update: {
44
- // deprecated: Remove with iOS 17
45
- read() {
46
- if (!this.list || supportsAspectRatio) {
47
- return false;
48
- }
49
-
50
- let [width, height] = this.ratio.split(':').map(Number);
51
-
52
- height = (height * this.list.offsetWidth) / width || 0;
53
-
54
- if (this.minHeight) {
55
- height = Math.max(this.minHeight, height);
56
- }
57
-
58
- if (this.maxHeight) {
59
- height = Math.min(this.maxHeight, height);
60
- }
61
-
62
- return { height: height - boxModelAdjust(this.list, 'height', 'content-box') };
30
+ css(list, {
31
+ aspectRatio: this.ratio ? this.ratio.replace(':', '/') : undefined,
32
+ minHeight: this.minHeight,
33
+ maxHeight: this.maxHeight,
34
+ minWidth: '100%',
35
+ maxWidth: '100%',
36
+ });
63
37
  },
64
-
65
- write({ height }) {
66
- height > 0 && css(this.list, 'minHeight', height);
67
- },
68
-
69
- events: ['resize'],
70
38
  },
71
39
 
72
40
  methods: {
@@ -8,6 +8,7 @@ import {
8
8
  before,
9
9
  children,
10
10
  css,
11
+ dimensions,
11
12
  findIndex,
12
13
  getEventPos,
13
14
  hasTouch,
@@ -208,7 +209,7 @@ export default {
208
209
 
209
210
  start(e) {
210
211
  this.drag = appendDrag(this.$container, this.placeholder);
211
- const { left, top } = this.placeholder.getBoundingClientRect();
212
+ const { left, top } = dimensions(this.placeholder);
212
213
  assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top });
213
214
 
214
215
  addClass(this.drag, this.clsDrag, this.clsCustom);
@@ -365,7 +366,7 @@ function appendDrag(container, element) {
365
366
  }
366
367
 
367
368
  function findTarget(items, point) {
368
- return items[findIndex(items, (item) => pointInRect(point, item.getBoundingClientRect()))];
369
+ return items[findIndex(items, (item) => pointInRect(point, dimensions(item)))];
369
370
  }
370
371
 
371
372
  function findInsertTarget(list, target, placeholder, x, y, sameList) {
@@ -373,7 +374,7 @@ function findInsertTarget(list, target, placeholder, x, y, sameList) {
373
374
  return;
374
375
  }
375
376
 
376
- const rect = target.getBoundingClientRect();
377
+ const rect = dimensions(target);
377
378
  if (!sameList) {
378
379
  if (!isHorizontal(list, placeholder)) {
379
380
  return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;
@@ -382,7 +383,7 @@ function findInsertTarget(list, target, placeholder, x, y, sameList) {
382
383
  return target;
383
384
  }
384
385
 
385
- const placeholderRect = placeholder.getBoundingClientRect();
386
+ const placeholderRect = dimensions(placeholder);
386
387
  const sameRow = linesIntersect(
387
388
  [rect.top, rect.bottom],
388
389
  [placeholderRect.top, placeholderRect.bottom],
@@ -421,9 +422,9 @@ function isHorizontal(list, placeholder) {
421
422
 
422
423
  const items = children(list);
423
424
  const isHorizontal = items.some((el, i) => {
424
- const rectA = el.getBoundingClientRect();
425
+ const rectA = dimensions(el);
425
426
  return items.slice(i + 1).some((el) => {
426
- const rectB = el.getBoundingClientRect();
427
+ const rectB = dimensions(el);
427
428
  return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);
428
429
  });
429
430
  });
@@ -169,13 +169,7 @@ function getAlignment(el, target, [dir, align]) {
169
169
  }
170
170
 
171
171
  const props = includes(properties[0], dir) ? properties[1] : properties[0];
172
- if (elOffset[props[0]] === targetOffset[props[0]]) {
173
- align = props[0];
174
- } else if (elOffset[props[1]] === targetOffset[props[1]]) {
175
- align = props[1];
176
- } else {
177
- align = 'center';
178
- }
172
+ align = props.find((prop) => elOffset[prop] === targetOffset[prop]) || 'center';
179
173
 
180
174
  return [dir, align];
181
175
  }
@@ -235,7 +235,7 @@ function keepScrollPosition(el) {
235
235
  let frame;
236
236
  (function scroll() {
237
237
  frame = requestAnimationFrame(() => {
238
- const { top } = el.getBoundingClientRect();
238
+ const { top } = dimensions(el);
239
239
  if (top < 0) {
240
240
  scrollElement.scrollTop += top;
241
241
  }
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  $,
3
+ MouseTracker,
3
4
  addClass,
4
5
  append,
5
6
  apply,
@@ -10,7 +11,6 @@ import {
10
11
  isSameSiteAnchor,
11
12
  isTouch,
12
13
  matches,
13
- MouseTracker,
14
14
  observeResize,
15
15
  observeViewportResize,
16
16
  offset,
@@ -31,10 +31,10 @@ import {
31
31
  } from 'uikit-util';
32
32
  import { lazyload } from '../api/observables';
33
33
  import Container from '../mixin/container';
34
- import { preventBackgroundScroll } from '../mixin/internal/scroll';
35
34
  import Position from '../mixin/position';
36
35
  import Togglable from '../mixin/togglable';
37
36
  import { keyMap } from '../util/keys';
37
+ import { preventBackgroundScroll } from '../util/scroll';
38
38
 
39
39
  export let active;
40
40
 
@@ -291,9 +291,7 @@ export default {
291
291
 
292
292
  self: true,
293
293
 
294
- handler() {
295
- this.clearTimers();
296
- },
294
+ handler: 'clearTimers',
297
295
  },
298
296
 
299
297
  {
@@ -19,6 +19,7 @@ import {
19
19
  remove,
20
20
  selFocusable,
21
21
  toFloat,
22
+ toPx,
22
23
  Transition,
23
24
  } from 'uikit-util';
24
25
  import Class from '../mixin/class';
@@ -75,8 +76,13 @@ export default {
75
76
  return dropbar ? dropbar : (this._dropbar = $('<div></div>'));
76
77
  },
77
78
 
78
- dropbarOffset() {
79
- return 0;
79
+ dropbarOffset({ target, targetY }, $el) {
80
+ const { offsetTop, offsetHeight } = query(targetY || target || $el, $el);
81
+ return offsetTop + offsetHeight + this.dropbarPositionOffset;
82
+ },
83
+
84
+ dropbarPositionOffset(_, $el) {
85
+ return toPx(css($el, '--uk-position-offset'));
80
86
  },
81
87
 
82
88
  dropContainer(_, $el) {
@@ -287,22 +293,15 @@ export default {
287
293
 
288
294
  const drop = this.getDropdown(target);
289
295
  const adjustHeight = () => {
290
- const targetOffsets = parents(target, `.${this.clsDrop}`)
291
- .concat(target)
292
- .map((el) => offset(el));
293
- const minTop = Math.min(...targetOffsets.map(({ top }) => top));
294
- const maxBottom = Math.max(...targetOffsets.map(({ bottom }) => bottom));
295
- const dropbarOffset = offset(this.dropbar);
296
- css(
297
- this.dropbar,
298
- 'top',
299
- this.dropbar.offsetTop - (dropbarOffset.top - minTop) - this.dropbarOffset,
296
+ const maxBottom = Math.max(
297
+ ...parents(target, `.${this.clsDrop}`)
298
+ .concat(target)
299
+ .map((el) => offset(el).bottom),
300
300
  );
301
+
302
+ css(this.dropbar, 'top', this.dropbarOffset);
301
303
  this.transitionTo(
302
- maxBottom -
303
- minTop +
304
- toFloat(css(target, 'marginBottom')) +
305
- this.dropbarOffset,
304
+ maxBottom - offset(this.dropbar).top + toFloat(css(target, 'marginBottom')),
306
305
  target,
307
306
  );
308
307
  };
@@ -377,6 +376,13 @@ export default {
377
376
 
378
377
  await Transition.cancel([el, dropbar]);
379
378
 
379
+ if (el) {
380
+ const diff = offset(el).top - offset(dropbar).top - oldHeight;
381
+ if (diff > 0) {
382
+ css(el, 'transitionDelay', `${(diff / newHeight) * this.duration}ms`);
383
+ }
384
+ }
385
+
380
386
  css(el, 'clipPath', `polygon(0 0,100% 0,100% ${oldHeight}px,0 ${oldHeight}px)`);
381
387
  height(dropbar, oldHeight);
382
388
 
@@ -384,11 +390,9 @@ export default {
384
390
  Transition.start(dropbar, { height: newHeight }, this.duration),
385
391
  Transition.start(
386
392
  el,
387
- {
388
- clipPath: `polygon(0 0,100% 0,100% ${newHeight}px,0 ${newHeight}px)`,
389
- },
393
+ { clipPath: `polygon(0 0,100% 0,100% ${newHeight}px,0 ${newHeight}px)` },
390
394
  this.duration,
391
- ).finally(() => css(el, { clipPath: '' })),
395
+ ).finally(() => css(el, { clipPath: '', transitionDelay: '' })),
392
396
  ]).catch(noop);
393
397
  },
394
398
 
@@ -1,4 +1,4 @@
1
- import { $$, boxModelAdjust, css, dimensions, isVisible, pick } from 'uikit-util';
1
+ import { $$, boxModelAdjust, css, isVisible, pick } from 'uikit-util';
2
2
  import { resize } from '../api/observables';
3
3
  import { getRows } from './margin';
4
4
 
@@ -50,7 +50,11 @@ function match(elements) {
50
50
  const max = Math.max(...heights);
51
51
 
52
52
  return {
53
- heights: elements.map((el, i) => (heights[i].toFixed(2) === max.toFixed(2) ? '' : max)),
53
+ heights: elements.map((el, i) =>
54
+ heights[i].toFixed(2) === max.toFixed(2)
55
+ ? ''
56
+ : max - boxModelAdjust(el, 'height', 'content-box'),
57
+ ),
54
58
  elements,
55
59
  };
56
60
  }
@@ -62,7 +66,7 @@ function getHeight(element) {
62
66
  css(element, 'display', 'block', 'important');
63
67
  }
64
68
  css(element, 'minHeight', '');
65
- const height = dimensions(element).height - boxModelAdjust(element, 'height', 'content-box');
69
+ const height = element.offsetHeight;
66
70
  css(element, style);
67
71
  return height;
68
72
  }
@@ -0,0 +1,32 @@
1
+ import { css, height, query } from 'uikit-util';
2
+ import { resize } from '../api/observables';
3
+
4
+ export default {
5
+ args: 'target',
6
+
7
+ props: {
8
+ target: String,
9
+ },
10
+
11
+ data: {
12
+ target: '',
13
+ },
14
+
15
+ computed: {
16
+ target: ({ target }, $el) => query(target, $el),
17
+ },
18
+
19
+ observe: resize({ target: ({ target }) => target }),
20
+
21
+ update: {
22
+ read() {
23
+ return { height: height(this.target) };
24
+ },
25
+
26
+ write({ height }) {
27
+ css(this.$el, { minHeight: height });
28
+ },
29
+
30
+ events: ['resize'],
31
+ },
32
+ };