vuetify 3.6.0-alpha.2 → 3.6.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 (377) hide show
  1. package/dist/_component-variables-labs.sass +2 -1
  2. package/dist/json/attributes.json +731 -63
  3. package/dist/json/importMap-labs.json +32 -20
  4. package/dist/json/importMap.json +138 -138
  5. package/dist/json/tags.json +184 -2
  6. package/dist/json/web-types.json +13002 -10923
  7. package/dist/vuetify-labs.css +2039 -1927
  8. package/dist/vuetify-labs.d.ts +3575 -1079
  9. package/dist/vuetify-labs.esm.js +1047 -390
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1046 -389
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +3026 -2941
  14. package/dist/vuetify.d.ts +927 -306
  15. package/dist/vuetify.esm.js +625 -363
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +624 -362
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +728 -714
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/VAlert.sass +128 -127
  23. package/lib/components/VApp/VApp.sass +15 -13
  24. package/lib/components/VAppBar/VAppBar.sass +9 -8
  25. package/lib/components/VAppBar/index.d.mts +10 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs +8 -10
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.sass +94 -93
  29. package/lib/components/VAutocomplete/index.d.mts +36 -0
  30. package/lib/components/VAvatar/VAvatar.sass +26 -25
  31. package/lib/components/VBadge/VBadge.sass +61 -60
  32. package/lib/components/VBanner/VBanner.css +1 -1
  33. package/lib/components/VBanner/VBanner.sass +92 -91
  34. package/lib/components/VBanner/index.d.mts +15 -0
  35. package/lib/components/VBottomNavigation/VBottomNavigation.sass +50 -49
  36. package/lib/components/VBottomSheet/VBottomSheet.sass +28 -26
  37. package/lib/components/VBottomSheet/index.d.mts +14 -0
  38. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +1 -1
  39. package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +41 -40
  40. package/lib/components/VBtn/VBtn.css +3 -0
  41. package/lib/components/VBtn/VBtn.mjs +3 -1
  42. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  43. package/lib/components/VBtn/VBtn.sass +204 -200
  44. package/lib/components/VBtn/index.d.mts +10 -0
  45. package/lib/components/VBtnGroup/VBtnGroup.sass +47 -46
  46. package/lib/components/VBtnToggle/VBtnToggle.sass +4 -3
  47. package/lib/components/VBtnToggle/index.d.mts +1 -0
  48. package/lib/components/VCard/VCard.css +3 -3
  49. package/lib/components/VCard/VCard.sass +181 -180
  50. package/lib/components/VCarousel/VCarousel.sass +50 -49
  51. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  52. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  53. package/lib/components/VCarousel/index.d.mts +1 -0
  54. package/lib/components/VCheckbox/VCheckbox.sass +6 -5
  55. package/lib/components/VChip/VChip.css +1 -1
  56. package/lib/components/VChip/VChip.sass +78 -76
  57. package/lib/components/VChipGroup/VChipGroup.sass +20 -18
  58. package/lib/components/VChipGroup/index.d.mts +16 -0
  59. package/lib/components/VCode/VCode.sass +10 -8
  60. package/lib/components/VColorPicker/VColorPicker.sass +18 -17
  61. package/lib/components/VColorPicker/VColorPickerCanvas.sass +21 -20
  62. package/lib/components/VColorPicker/VColorPickerEdit.sass +24 -23
  63. package/lib/components/VColorPicker/VColorPickerPreview.sass +54 -53
  64. package/lib/components/VColorPicker/VColorPickerSwatches.sass +29 -28
  65. package/lib/components/VCombobox/VCombobox.mjs +8 -10
  66. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  67. package/lib/components/VCombobox/VCombobox.sass +94 -93
  68. package/lib/components/VCombobox/index.d.mts +36 -0
  69. package/lib/components/VCounter/VCounter.sass +7 -5
  70. package/lib/components/VDataIterator/index.d.mts +2 -0
  71. package/lib/components/VDataTable/VDataTable.css +36 -1
  72. package/lib/components/VDataTable/VDataTable.sass +137 -103
  73. package/lib/components/VDataTable/VDataTableFooter.css +5 -9
  74. package/lib/components/VDataTable/VDataTableFooter.sass +26 -25
  75. package/lib/components/VDataTable/VDataTableHeaders.mjs +66 -7
  76. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  77. package/lib/components/VDataTable/VDataTableRow.mjs +45 -10
  78. package/lib/components/VDataTable/VDataTableRow.mjs.map +1 -1
  79. package/lib/components/VDataTable/VDataTableRows.mjs +8 -2
  80. package/lib/components/VDataTable/VDataTableRows.mjs.map +1 -1
  81. package/lib/components/VDataTable/_variables.scss +9 -3
  82. package/lib/components/VDataTable/index.d.mts +263 -217
  83. package/lib/components/VDataTable/types.mjs.map +1 -1
  84. package/lib/components/VDatePicker/VDatePicker.mjs +12 -2
  85. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  86. package/lib/components/VDatePicker/VDatePicker.sass +6 -5
  87. package/lib/components/VDatePicker/VDatePickerControls.sass +56 -55
  88. package/lib/components/VDatePicker/VDatePickerHeader.sass +58 -56
  89. package/lib/components/VDatePicker/VDatePickerMonth.sass +53 -51
  90. package/lib/components/VDatePicker/VDatePickerMonths.sass +18 -16
  91. package/lib/components/VDatePicker/VDatePickerYears.sass +14 -12
  92. package/lib/components/VDialog/VDialog.css +7 -3
  93. package/lib/components/VDialog/VDialog.mjs +6 -2
  94. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  95. package/lib/components/VDialog/VDialog.sass +71 -68
  96. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +39 -0
  97. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs.map +1 -0
  98. package/lib/components/VDialog/_variables.scss +4 -3
  99. package/lib/components/VDialog/index.d.mts +60 -10
  100. package/lib/components/VDivider/VDivider.sass +49 -48
  101. package/lib/components/VExpansionPanel/VExpansionPanel.sass +172 -171
  102. package/lib/components/VField/VField.sass +451 -450
  103. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  104. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  105. package/lib/components/VFileInput/VFileInput.sass +30 -31
  106. package/lib/components/VFileInput/index.d.mts +17 -5
  107. package/lib/components/VFooter/VFooter.sass +17 -16
  108. package/lib/components/VGrid/VGrid.sass +42 -40
  109. package/lib/components/VIcon/VIcon.sass +34 -32
  110. package/lib/components/VImg/VImg.sass +24 -23
  111. package/lib/components/VInfiniteScroll/VInfiniteScroll.sass +21 -19
  112. package/lib/components/VInput/VInput.mjs +6 -1
  113. package/lib/components/VInput/VInput.mjs.map +1 -1
  114. package/lib/components/VInput/VInput.sass +103 -102
  115. package/lib/components/VInput/index.d.mts +6 -0
  116. package/lib/components/VItemGroup/VItemGroup.sass +7 -5
  117. package/lib/components/VKbd/VKbd.sass +10 -9
  118. package/lib/components/VLabel/VLabel.sass +14 -13
  119. package/lib/components/VLayout/VLayout.mjs +6 -1
  120. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  121. package/lib/components/VLayout/VLayout.sass +10 -7
  122. package/lib/components/VLayout/VLayoutItem.sass +7 -5
  123. package/lib/components/VLayout/index.d.mts +36 -0
  124. package/lib/components/VList/VList.mjs +2 -1
  125. package/lib/components/VList/VList.mjs.map +1 -1
  126. package/lib/components/VList/VList.sass +81 -80
  127. package/lib/components/VList/VListItem.css +1 -1
  128. package/lib/components/VList/VListItem.sass +260 -259
  129. package/lib/components/VLocaleProvider/VLocaleProvider.sass +5 -2
  130. package/lib/components/VMain/VMain.sass +22 -21
  131. package/lib/components/VMenu/VMenu.sass +14 -13
  132. package/lib/components/VMenu/index.d.mts +56 -0
  133. package/lib/components/VMessages/VMessages.sass +16 -15
  134. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +14 -5
  136. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  137. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +90 -84
  138. package/lib/components/VNavigationDrawer/index.d.mts +24 -0
  139. package/lib/components/VNavigationDrawer/touch.mjs +16 -2
  140. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  141. package/lib/components/VOtpInput/VOtpInput.sass +51 -50
  142. package/lib/components/VOverlay/VOverlay.mjs +2 -2
  143. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  144. package/lib/components/VOverlay/VOverlay.sass +57 -55
  145. package/lib/components/VOverlay/index.d.mts +27 -13
  146. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  147. package/lib/components/VPagination/VPagination.sass +14 -12
  148. package/lib/components/VParallax/VParallax.sass +8 -5
  149. package/lib/components/VProgressCircular/VProgressCircular.sass +85 -83
  150. package/lib/components/VProgressLinear/VProgressLinear.mjs +11 -1
  151. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  152. package/lib/components/VProgressLinear/VProgressLinear.sass +170 -169
  153. package/lib/components/VProgressLinear/index.d.mts +21 -0
  154. package/lib/components/VRadioGroup/VRadioGroup.sass +12 -10
  155. package/lib/components/VRangeSlider/index.d.mts +6 -0
  156. package/lib/components/VRating/VRating.sass +46 -44
  157. package/lib/components/VResponsive/VResponsive.sass +21 -19
  158. package/lib/components/VSelect/VSelect.mjs +5 -1
  159. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  160. package/lib/components/VSelect/VSelect.sass +50 -49
  161. package/lib/components/VSelect/index.d.mts +36 -0
  162. package/lib/components/VSelectionControl/VSelectionControl.sass +87 -86
  163. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +9 -7
  164. package/lib/components/VSheet/VSheet.sass +10 -9
  165. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +174 -173
  166. package/lib/components/VSlideGroup/VSlideGroup.css +14 -1
  167. package/lib/components/VSlideGroup/VSlideGroup.mjs +110 -93
  168. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  169. package/lib/components/VSlideGroup/VSlideGroup.sass +54 -40
  170. package/lib/components/VSlideGroup/helpers.mjs +48 -28
  171. package/lib/components/VSlideGroup/helpers.mjs.map +1 -1
  172. package/lib/components/VSlideGroup/index.d.mts +16 -0
  173. package/lib/components/VSlider/VSlider.sass +49 -48
  174. package/lib/components/VSlider/VSliderThumb.sass +129 -128
  175. package/lib/components/VSlider/VSliderTrack.sass +120 -119
  176. package/lib/components/VSlider/index.d.mts +6 -0
  177. package/lib/components/VSnackbar/VSnackbar.css +18 -1
  178. package/lib/components/VSnackbar/VSnackbar.mjs +34 -9
  179. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  180. package/lib/components/VSnackbar/VSnackbar.sass +103 -83
  181. package/lib/components/VSnackbar/index.d.mts +42 -0
  182. package/lib/components/VStepper/VStepper.sass +37 -36
  183. package/lib/components/VStepper/VStepperItem.sass +69 -67
  184. package/lib/components/VSwitch/VSwitch.css +14 -2
  185. package/lib/components/VSwitch/VSwitch.sass +119 -112
  186. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  187. package/lib/components/VSystemBar/VSystemBar.sass +24 -23
  188. package/lib/components/VTable/VTable.sass +140 -139
  189. package/lib/components/VTabs/VTab.sass +27 -25
  190. package/lib/components/VTabs/VTabs.sass +38 -37
  191. package/lib/components/VTabs/index.d.mts +49 -6
  192. package/lib/components/VTextField/VTextField.sass +58 -56
  193. package/lib/components/VTextField/index.d.mts +15 -3
  194. package/lib/components/VTextarea/VTextarea.sass +43 -42
  195. package/lib/components/VTextarea/index.d.mts +15 -3
  196. package/lib/components/VThemeProvider/VThemeProvider.sass +6 -3
  197. package/lib/components/VTimeline/VTimeline.sass +308 -307
  198. package/lib/components/VToolbar/VToolbar.sass +90 -89
  199. package/lib/components/VTooltip/VTooltip.sass +23 -21
  200. package/lib/components/VTooltip/index.d.mts +56 -0
  201. package/lib/components/VVirtualScroll/VVirtualScroll.sass +10 -7
  202. package/lib/components/VWindow/VWindow.css +1 -0
  203. package/lib/components/VWindow/VWindow.sass +74 -70
  204. package/lib/components/VWindow/index.d.mts +1 -0
  205. package/lib/components/index.d.mts +870 -253
  206. package/lib/composables/directiveComponent.mjs +4 -2
  207. package/lib/composables/directiveComponent.mjs.map +1 -1
  208. package/lib/composables/display.mjs +5 -0
  209. package/lib/composables/display.mjs.map +1 -1
  210. package/lib/composables/goto.mjs +40 -3
  211. package/lib/composables/goto.mjs.map +1 -1
  212. package/lib/composables/group.mjs +10 -1
  213. package/lib/composables/group.mjs.map +1 -1
  214. package/lib/composables/layout.mjs +3 -1
  215. package/lib/composables/layout.mjs.map +1 -1
  216. package/lib/directives/ripple/VRipple.sass +35 -33
  217. package/lib/entry-bundler.mjs +1 -1
  218. package/lib/entry-bundler.mjs.map +1 -1
  219. package/lib/framework.mjs +1 -1
  220. package/lib/framework.mjs.map +1 -1
  221. package/lib/index.d.mts +58 -54
  222. package/lib/labs/VCalendar/VCalendar.sass +160 -158
  223. package/lib/labs/VCalendar/VCalendarDay.sass +26 -23
  224. package/lib/labs/VCalendar/VCalendarHeader.sass +12 -10
  225. package/lib/labs/VCalendar/VCalendarInterval.sass +36 -34
  226. package/lib/labs/VCalendar/VCalendarIntervalEvent.sass +9 -6
  227. package/lib/labs/VCalendar/VCalendarMonthDay.sass +59 -57
  228. package/lib/labs/VDateInput/VDateInput.mjs +129 -0
  229. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -0
  230. package/lib/labs/VDateInput/index.d.mts +1068 -0
  231. package/lib/labs/VDateInput/index.mjs +2 -0
  232. package/lib/labs/VDateInput/index.mjs.map +1 -0
  233. package/lib/labs/VEmptyState/VEmptyState.css +3 -3
  234. package/lib/labs/VEmptyState/VEmptyState.sass +59 -57
  235. package/lib/labs/VFab/VFab.css +1 -0
  236. package/lib/labs/VFab/VFab.mjs +3 -2
  237. package/lib/labs/VFab/VFab.mjs.map +1 -1
  238. package/lib/labs/VFab/VFab.sass +62 -60
  239. package/lib/labs/VFab/index.d.mts +19 -0
  240. package/lib/labs/VNumberInput/VNumberInput.mjs +79 -24
  241. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  242. package/lib/labs/VNumberInput/VNumberInput.sass +42 -40
  243. package/lib/labs/VNumberInput/index.d.mts +56 -29
  244. package/lib/labs/VPicker/VPicker.sass +49 -48
  245. package/lib/labs/VPullToRefresh/VPullToRefresh.css +27 -0
  246. package/lib/labs/VPullToRefresh/VPullToRefresh.mjs +117 -0
  247. package/lib/labs/VPullToRefresh/VPullToRefresh.mjs.map +1 -0
  248. package/lib/labs/VPullToRefresh/VPullToRefresh.sass +23 -0
  249. package/lib/labs/VPullToRefresh/index.d.mts +189 -0
  250. package/lib/labs/VPullToRefresh/index.mjs +2 -0
  251. package/lib/labs/VPullToRefresh/index.mjs.map +1 -0
  252. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +112 -0
  253. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs.map +1 -0
  254. package/lib/labs/VSnackbarQueue/index.d.mts +2763 -0
  255. package/lib/labs/VSnackbarQueue/index.mjs +2 -0
  256. package/lib/labs/VSnackbarQueue/index.mjs.map +1 -0
  257. package/lib/labs/VSpeedDial/VSpeedDial.mjs +8 -2
  258. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  259. package/lib/labs/VSpeedDial/VSpeedDial.sass +23 -20
  260. package/lib/labs/VSpeedDial/index.d.mts +28 -2
  261. package/lib/labs/VTimePicker/VTimePicker.sass +9 -8
  262. package/lib/labs/VTimePicker/VTimePickerClock.mjs +1 -3
  263. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  264. package/lib/labs/VTimePicker/VTimePickerClock.sass +114 -113
  265. package/lib/labs/VTimePicker/VTimePickerControls.sass +90 -90
  266. package/lib/labs/VTimePicker/_variables.scss +1 -1
  267. package/lib/labs/VTimePicker/index.d.mts +6 -13
  268. package/lib/labs/VTreeview/VTreeviewItem.sass +14 -12
  269. package/lib/labs/VTreeview/{variables.scss → _variables.scss} +0 -2
  270. package/lib/labs/components.d.mts +5587 -1641
  271. package/lib/labs/components.mjs +3 -0
  272. package/lib/labs/components.mjs.map +1 -1
  273. package/lib/locale/af.mjs +1 -0
  274. package/lib/locale/af.mjs.map +1 -1
  275. package/lib/locale/ar.mjs +1 -0
  276. package/lib/locale/ar.mjs.map +1 -1
  277. package/lib/locale/az.mjs +1 -0
  278. package/lib/locale/az.mjs.map +1 -1
  279. package/lib/locale/bg.mjs +1 -0
  280. package/lib/locale/bg.mjs.map +1 -1
  281. package/lib/locale/ca.mjs +1 -0
  282. package/lib/locale/ca.mjs.map +1 -1
  283. package/lib/locale/ckb.mjs +1 -0
  284. package/lib/locale/ckb.mjs.map +1 -1
  285. package/lib/locale/cs.mjs +1 -0
  286. package/lib/locale/cs.mjs.map +1 -1
  287. package/lib/locale/da.mjs +1 -0
  288. package/lib/locale/da.mjs.map +1 -1
  289. package/lib/locale/de.mjs +1 -0
  290. package/lib/locale/de.mjs.map +1 -1
  291. package/lib/locale/el.mjs +1 -0
  292. package/lib/locale/el.mjs.map +1 -1
  293. package/lib/locale/en.mjs +1 -0
  294. package/lib/locale/en.mjs.map +1 -1
  295. package/lib/locale/es.mjs +1 -0
  296. package/lib/locale/es.mjs.map +1 -1
  297. package/lib/locale/et.mjs +1 -0
  298. package/lib/locale/et.mjs.map +1 -1
  299. package/lib/locale/fa.mjs +1 -0
  300. package/lib/locale/fa.mjs.map +1 -1
  301. package/lib/locale/fi.mjs +1 -0
  302. package/lib/locale/fi.mjs.map +1 -1
  303. package/lib/locale/fr.mjs +1 -0
  304. package/lib/locale/fr.mjs.map +1 -1
  305. package/lib/locale/he.mjs +1 -0
  306. package/lib/locale/he.mjs.map +1 -1
  307. package/lib/locale/hr.mjs +1 -0
  308. package/lib/locale/hr.mjs.map +1 -1
  309. package/lib/locale/hu.mjs +1 -0
  310. package/lib/locale/hu.mjs.map +1 -1
  311. package/lib/locale/id.mjs +1 -0
  312. package/lib/locale/id.mjs.map +1 -1
  313. package/lib/locale/index.d.mts +43 -0
  314. package/lib/locale/it.mjs +1 -0
  315. package/lib/locale/it.mjs.map +1 -1
  316. package/lib/locale/ja.mjs +1 -0
  317. package/lib/locale/ja.mjs.map +1 -1
  318. package/lib/locale/km.mjs +1 -0
  319. package/lib/locale/km.mjs.map +1 -1
  320. package/lib/locale/ko.mjs +9 -8
  321. package/lib/locale/ko.mjs.map +1 -1
  322. package/lib/locale/lt.mjs +1 -0
  323. package/lib/locale/lt.mjs.map +1 -1
  324. package/lib/locale/lv.mjs +1 -0
  325. package/lib/locale/lv.mjs.map +1 -1
  326. package/lib/locale/nl.mjs +1 -0
  327. package/lib/locale/nl.mjs.map +1 -1
  328. package/lib/locale/no.mjs +1 -0
  329. package/lib/locale/no.mjs.map +1 -1
  330. package/lib/locale/pl.mjs +1 -0
  331. package/lib/locale/pl.mjs.map +1 -1
  332. package/lib/locale/pt.mjs +1 -0
  333. package/lib/locale/pt.mjs.map +1 -1
  334. package/lib/locale/ro.mjs +1 -0
  335. package/lib/locale/ro.mjs.map +1 -1
  336. package/lib/locale/ru.mjs +1 -0
  337. package/lib/locale/ru.mjs.map +1 -1
  338. package/lib/locale/sk.mjs +1 -0
  339. package/lib/locale/sk.mjs.map +1 -1
  340. package/lib/locale/sl.mjs +1 -0
  341. package/lib/locale/sl.mjs.map +1 -1
  342. package/lib/locale/sr-Cyrl.mjs +1 -0
  343. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  344. package/lib/locale/sr-Latn.mjs +1 -0
  345. package/lib/locale/sr-Latn.mjs.map +1 -1
  346. package/lib/locale/sv.mjs +1 -0
  347. package/lib/locale/sv.mjs.map +1 -1
  348. package/lib/locale/th.mjs +1 -0
  349. package/lib/locale/th.mjs.map +1 -1
  350. package/lib/locale/tr.mjs +1 -0
  351. package/lib/locale/tr.mjs.map +1 -1
  352. package/lib/locale/uk.mjs +1 -0
  353. package/lib/locale/uk.mjs.map +1 -1
  354. package/lib/locale/vi.mjs +1 -0
  355. package/lib/locale/vi.mjs.map +1 -1
  356. package/lib/locale/zh-Hans.mjs +1 -0
  357. package/lib/locale/zh-Hans.mjs.map +1 -1
  358. package/lib/locale/zh-Hant.mjs +1 -0
  359. package/lib/locale/zh-Hant.mjs.map +1 -1
  360. package/lib/styles/elements/_blockquote.sass +6 -4
  361. package/lib/styles/elements/_global.sass +20 -18
  362. package/lib/styles/generic/_animations.scss +13 -9
  363. package/lib/styles/generic/_colors.scss +36 -35
  364. package/lib/styles/generic/_index.scss +1 -0
  365. package/lib/styles/generic/_layers.scss +7 -0
  366. package/lib/styles/generic/_reset.scss +235 -232
  367. package/lib/styles/generic/_rtl.scss +10 -6
  368. package/lib/styles/generic/_transitions.scss +244 -241
  369. package/lib/styles/main.css +78 -78
  370. package/lib/styles/settings/_variables.scss +22 -14
  371. package/lib/styles/tools/_index.sass +1 -0
  372. package/lib/styles/tools/_layer.scss +11 -0
  373. package/lib/styles/utilities/_display.sass +7 -5
  374. package/lib/styles/utilities/_elevation.scss +8 -6
  375. package/lib/styles/utilities/_index.sass +28 -29
  376. package/lib/styles/utilities/_screenreaders.sass +13 -11
  377. package/package.json +2 -2
@@ -7,14 +7,15 @@ import { VFadeTransition } from "../transitions/index.mjs";
7
7
  import { VIcon } from "../VIcon/index.mjs"; // Composables
8
8
  import { makeComponentProps } from "../../composables/component.mjs";
9
9
  import { makeDisplayProps, useDisplay } from "../../composables/display.mjs";
10
+ import { useGoTo } from "../../composables/goto.mjs";
10
11
  import { makeGroupProps, useGroup } from "../../composables/group.mjs";
11
12
  import { IconValue } from "../../composables/icons.mjs";
12
13
  import { useRtl } from "../../composables/locale.mjs";
13
14
  import { useResizeObserver } from "../../composables/resizeObserver.mjs";
14
15
  import { makeTagProps } from "../../composables/tag.mjs"; // Utilities
15
16
  import { computed, shallowRef, watch } from 'vue';
16
- import { bias, calculateCenteredOffset, calculateUpdatedOffset } from "./helpers.mjs";
17
- import { clamp, focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from "../../util/index.mjs"; // Types
17
+ import { calculateCenteredTarget, calculateUpdatedTarget, getClientSize, getOffsetSize, getScrollPosition, getScrollSize } from "./helpers.mjs";
18
+ import { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from "../../util/index.mjs"; // Types
18
19
  export const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
19
20
  export const makeVSlideGroupProps = propsFactory({
20
21
  centerActive: Boolean,
@@ -76,6 +77,14 @@ export const VSlideGroup = genericComponent()({
76
77
  resizeRef: contentRef,
77
78
  contentRect
78
79
  } = useResizeObserver();
80
+ const goTo = useGoTo();
81
+ const goToOptions = computed(() => {
82
+ return {
83
+ container: containerRef.value,
84
+ duration: 200,
85
+ easing: 'easeOutQuart'
86
+ };
87
+ });
79
88
  const firstSelectedIndex = computed(() => {
80
89
  if (!group.selected.value.length) return -1;
81
90
  return group.items.value.findIndex(item => item.id === group.selected.value[0]);
@@ -98,60 +107,58 @@ export const VSlideGroup = genericComponent()({
98
107
  if (firstSelectedIndex.value >= 0 && contentRef.value) {
99
108
  // TODO: Is this too naive? Should we store element references in group composable?
100
109
  const selectedElement = contentRef.value.children[lastSelectedIndex.value];
101
- if (firstSelectedIndex.value === 0 || !isOverflowing.value) {
102
- scrollOffset.value = 0;
103
- } else if (props.centerActive) {
104
- scrollOffset.value = calculateCenteredOffset({
105
- selectedElement,
106
- containerSize: containerSize.value,
107
- contentSize: contentSize.value,
108
- isRtl: isRtl.value,
109
- isHorizontal: isHorizontal.value
110
- });
111
- } else if (isOverflowing.value) {
112
- scrollOffset.value = calculateUpdatedOffset({
113
- selectedElement,
114
- containerSize: containerSize.value,
115
- contentSize: contentSize.value,
116
- isRtl: isRtl.value,
117
- currentScrollOffset: scrollOffset.value,
118
- isHorizontal: isHorizontal.value
119
- });
120
- }
110
+ scrollToChildren(selectedElement, props.centerActive);
121
111
  }
122
112
  });
123
113
  });
124
114
  }
125
- const disableTransition = shallowRef(false);
126
- let startTouch = 0;
127
- let startOffset = 0;
128
- function onTouchstart(e) {
129
- const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY';
130
- const sign = isRtl.value && isHorizontal.value ? -1 : 1;
131
- startOffset = sign * scrollOffset.value;
132
- startTouch = e.touches[0][sizeProperty];
133
- disableTransition.value = true;
134
- }
135
- function onTouchmove(e) {
136
- if (!isOverflowing.value) return;
137
- const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY';
138
- const sign = isRtl.value && isHorizontal.value ? -1 : 1;
139
- scrollOffset.value = sign * (startOffset + startTouch - e.touches[0][sizeProperty]);
115
+ const isFocused = shallowRef(false);
116
+ function scrollToChildren(children, center) {
117
+ let target = 0;
118
+ if (center) {
119
+ target = calculateCenteredTarget({
120
+ containerElement: containerRef.value,
121
+ isHorizontal: isHorizontal.value,
122
+ selectedElement: children
123
+ });
124
+ } else {
125
+ target = calculateUpdatedTarget({
126
+ containerElement: containerRef.value,
127
+ isHorizontal: isHorizontal.value,
128
+ isRtl: isRtl.value,
129
+ selectedElement: children
130
+ });
131
+ }
132
+ scrollToPosition(target);
140
133
  }
141
- function onTouchend(e) {
142
- const maxScrollOffset = contentSize.value - containerSize.value;
143
- if (scrollOffset.value < 0 || !isOverflowing.value) {
144
- scrollOffset.value = 0;
145
- } else if (scrollOffset.value >= maxScrollOffset) {
146
- scrollOffset.value = maxScrollOffset;
134
+ function scrollToPosition(newPosition) {
135
+ if (!IN_BROWSER || !containerRef.value) return;
136
+ const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value);
137
+ const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value);
138
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
139
+ if (scrollSize <= offsetSize ||
140
+ // Prevent scrolling by only a couple of pixels, which doesn't look smooth
141
+ Math.abs(newPosition - scrollPosition) < 16) return;
142
+ if (isHorizontal.value && isRtl.value && containerRef.value) {
143
+ const {
144
+ scrollWidth,
145
+ offsetWidth: containerWidth
146
+ } = containerRef.value;
147
+ newPosition = scrollWidth - containerWidth - newPosition;
148
+ }
149
+ if (isHorizontal.value) {
150
+ goTo.horizontal(newPosition, goToOptions.value);
151
+ } else {
152
+ goTo(newPosition, goToOptions.value);
147
153
  }
148
- disableTransition.value = false;
149
154
  }
150
- function onScroll() {
151
- if (!containerRef.value) return;
152
- containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0;
155
+ function onScroll(e) {
156
+ const {
157
+ scrollTop,
158
+ scrollLeft
159
+ } = e.target;
160
+ scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop;
153
161
  }
154
- const isFocused = shallowRef(false);
155
162
  function onFocusin(e) {
156
163
  isFocused.value = true;
157
164
  if (!isOverflowing.value || !contentRef.value) return;
@@ -161,14 +168,7 @@ export const VSlideGroup = genericComponent()({
161
168
  for (const el of e.composedPath()) {
162
169
  for (const item of contentRef.value.children) {
163
170
  if (item === el) {
164
- scrollOffset.value = calculateUpdatedOffset({
165
- selectedElement: item,
166
- containerSize: containerSize.value,
167
- contentSize: contentSize.value,
168
- isRtl: isRtl.value,
169
- currentScrollOffset: scrollOffset.value,
170
- isHorizontal: isHorizontal.value
171
- });
171
+ scrollToChildren(item);
172
172
  return;
173
173
  }
174
174
  }
@@ -177,66 +177,79 @@ export const VSlideGroup = genericComponent()({
177
177
  function onFocusout(e) {
178
178
  isFocused.value = false;
179
179
  }
180
+
181
+ // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren
182
+ let ignoreFocusEvent = false;
180
183
  function onFocus(e) {
181
- if (!isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
184
+ if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus();
185
+ ignoreFocusEvent = false;
186
+ }
187
+ function onFocusAffixes() {
188
+ ignoreFocusEvent = true;
182
189
  }
183
190
  function onKeydown(e) {
184
191
  if (!contentRef.value) return;
192
+ function toFocus(location) {
193
+ e.preventDefault();
194
+ focus(location);
195
+ }
185
196
  if (isHorizontal.value) {
186
197
  if (e.key === 'ArrowRight') {
187
- focus(isRtl.value ? 'prev' : 'next');
198
+ toFocus(isRtl.value ? 'prev' : 'next');
188
199
  } else if (e.key === 'ArrowLeft') {
189
- focus(isRtl.value ? 'next' : 'prev');
200
+ toFocus(isRtl.value ? 'next' : 'prev');
190
201
  }
191
202
  } else {
192
203
  if (e.key === 'ArrowDown') {
193
- focus('next');
204
+ toFocus('next');
194
205
  } else if (e.key === 'ArrowUp') {
195
- focus('prev');
206
+ toFocus('prev');
196
207
  }
197
208
  }
198
209
  if (e.key === 'Home') {
199
- focus('first');
210
+ toFocus('first');
200
211
  } else if (e.key === 'End') {
201
- focus('last');
212
+ toFocus('last');
202
213
  }
203
214
  }
204
215
  function focus(location) {
205
216
  if (!contentRef.value) return;
217
+ let el;
206
218
  if (!location) {
207
219
  const focusable = focusableChildren(contentRef.value);
208
- focusable[0]?.focus();
220
+ el = focusable[0];
209
221
  } else if (location === 'next') {
210
- const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
211
- if (el) el.focus();else focus('first');
222
+ el = contentRef.value.querySelector(':focus')?.nextElementSibling;
223
+ if (!el) return focus('first');
212
224
  } else if (location === 'prev') {
213
- const el = contentRef.value.querySelector(':focus')?.previousElementSibling;
214
- if (el) el.focus();else focus('last');
225
+ el = contentRef.value.querySelector(':focus')?.previousElementSibling;
226
+ if (!el) return focus('last');
215
227
  } else if (location === 'first') {
216
- contentRef.value.firstElementChild?.focus();
228
+ el = contentRef.value.firstElementChild;
217
229
  } else if (location === 'last') {
218
- contentRef.value.lastElementChild?.focus();
230
+ el = contentRef.value.lastElementChild;
231
+ }
232
+ if (el) {
233
+ el.focus({
234
+ preventScroll: true
235
+ });
219
236
  }
220
237
  }
221
238
  function scrollTo(location) {
222
- const newAbsoluteOffset = scrollOffset.value + (location === 'prev' ? -1 : 1) * containerSize.value;
223
- scrollOffset.value = clamp(newAbsoluteOffset, 0, contentSize.value - containerSize.value);
224
- }
225
- const contentStyles = computed(() => {
226
- // This adds friction when scrolling the 'wrong' way when at max offset
227
- let scrollAmount = scrollOffset.value > contentSize.value - containerSize.value ? -(contentSize.value - containerSize.value) + bias(contentSize.value - containerSize.value - scrollOffset.value) : -scrollOffset.value;
239
+ const direction = isHorizontal.value && isRtl.value ? -1 : 1;
240
+ const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value;
241
+ let newPosition = scrollOffset.value + offsetStep;
228
242
 
229
- // This adds friction when scrolling the 'wrong' way when at min offset
230
- if (scrollOffset.value <= 0) {
231
- scrollAmount = bias(-scrollOffset.value);
243
+ // TODO: improve it
244
+ if (isHorizontal.value && isRtl.value && containerRef.value) {
245
+ const {
246
+ scrollWidth,
247
+ offsetWidth: containerWidth
248
+ } = containerRef.value;
249
+ newPosition += scrollWidth - containerWidth;
232
250
  }
233
- const sign = isRtl.value && isHorizontal.value ? -1 : 1;
234
- return {
235
- transform: `translate${isHorizontal.value ? 'X' : 'Y'}(${sign * scrollAmount}px)`,
236
- transition: disableTransition.value ? 'none' : '',
237
- willChange: disableTransition.value ? 'transform' : ''
238
- };
239
- });
251
+ scrollToPosition(newPosition);
252
+ }
240
253
  const slotProps = computed(() => ({
241
254
  next: group.next,
242
255
  prev: group.prev,
@@ -270,11 +283,17 @@ export const VSlideGroup = genericComponent()({
270
283
  }
271
284
  });
272
285
  const hasPrev = computed(() => {
273
- return Math.abs(scrollOffset.value) > 0;
286
+ // 1 pixel in reserve, may be lost after rounding
287
+ return Math.abs(scrollOffset.value) > 1;
274
288
  });
275
289
  const hasNext = computed(() => {
276
- // Check one scroll ahead to know the width of right-most item
277
- return contentSize.value > Math.abs(scrollOffset.value) + containerSize.value;
290
+ if (!containerRef.value) return false;
291
+ const scrollSize = getScrollSize(isHorizontal.value, containerRef.value);
292
+ const clientSize = getClientSize(isHorizontal.value, containerRef.value);
293
+ const scrollSizeMax = scrollSize - clientSize;
294
+
295
+ // 1 pixel in reserve, may be lost after rounding
296
+ return scrollSizeMax - Math.abs(scrollOffset.value) > 1;
278
297
  });
279
298
  useRender(() => _createVNode(props.tag, {
280
299
  "class": ['v-slide-group', {
@@ -291,6 +310,7 @@ export const VSlideGroup = genericComponent()({
291
310
  "class": ['v-slide-group__prev', {
292
311
  'v-slide-group__prev--disabled': !hasPrev.value
293
312
  }],
313
+ "onMousedown": onFocusAffixes,
294
314
  "onClick": () => hasPrev.value && scrollTo('prev')
295
315
  }, [slots.prev?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {
296
316
  default: () => [_createVNode(VIcon, {
@@ -304,10 +324,6 @@ export const VSlideGroup = genericComponent()({
304
324
  }, [_createVNode("div", {
305
325
  "ref": contentRef,
306
326
  "class": "v-slide-group__content",
307
- "style": contentStyles.value,
308
- "onTouchstartPassive": onTouchstart,
309
- "onTouchmovePassive": onTouchmove,
310
- "onTouchendPassive": onTouchend,
311
327
  "onFocusin": onFocusin,
312
328
  "onFocusout": onFocusout,
313
329
  "onKeydown": onKeydown
@@ -316,6 +332,7 @@ export const VSlideGroup = genericComponent()({
316
332
  "class": ['v-slide-group__next', {
317
333
  'v-slide-group__next--disabled': !hasNext.value
318
334
  }],
335
+ "onMousedown": onFocusAffixes,
319
336
  "onClick": () => hasNext.value && scrollTo('next')
320
337
  }, [slots.next?.(slotProps.value) ?? _createVNode(VFadeTransition, null, {
321
338
  default: () => [_createVNode(VIcon, {
@@ -1 +1 @@
1
- {"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","bias","calculateCenteredOffset","calculateUpdatedOffset","clamp","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","mobile","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","currentScrollOffset","disableTransition","startTouch","startOffset","onTouchstart","e","sign","touches","onTouchmove","onTouchend","maxScrollOffset","onScroll","isFocused","onFocusin","el","composedPath","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","key","location","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","scrollTo","newAbsoluteOffset","contentStyles","scrollAmount","transform","transition","willChange","slotProps","next","prev","select","isSelected","hasAffixes","Math","abs","hasPrev","hasNext","_createVNode","tag","class","style","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport { bias, calculateCenteredOffset, calculateUpdatedOffset } from './helpers'\nimport { clamp, focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps(),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n if (firstSelectedIndex.value === 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (props.centerActive) {\n scrollOffset.value = calculateCenteredOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n isHorizontal: isHorizontal.value,\n })\n } else if (isOverflowing.value) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n }\n }\n })\n })\n }\n\n const disableTransition = shallowRef(false)\n\n let startTouch = 0\n let startOffset = 0\n\n function onTouchstart (e: TouchEvent) {\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n startOffset = sign * scrollOffset.value\n startTouch = e.touches[0][sizeProperty]\n disableTransition.value = true\n }\n\n function onTouchmove (e: TouchEvent) {\n if (!isOverflowing.value) return\n\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n scrollOffset.value = sign * (startOffset + startTouch - e.touches[0][sizeProperty])\n }\n\n function onTouchend (e: TouchEvent) {\n const maxScrollOffset = contentSize.value - containerSize.value\n\n if (scrollOffset.value < 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (scrollOffset.value >= maxScrollOffset) {\n scrollOffset.value = maxScrollOffset\n }\n\n disableTransition.value = false\n }\n\n function onScroll () {\n if (!containerRef.value) return\n\n containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0\n }\n\n const isFocused = shallowRef(false)\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.value.children) {\n if (item === el) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement: item as HTMLElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n focus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n focus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n }\n }\n\n if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n focusable[0]?.focus()\n } else if (location === 'next') {\n const el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('first')\n } else if (location === 'prev') {\n const el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('last')\n } else if (location === 'first') {\n (contentRef.value.firstElementChild as HTMLElement)?.focus()\n } else if (location === 'last') {\n (contentRef.value.lastElementChild as HTMLElement)?.focus()\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const newAbsoluteOffset = scrollOffset.value + (location === 'prev' ? -1 : 1) * containerSize.value\n\n scrollOffset.value = clamp(newAbsoluteOffset, 0, contentSize.value - containerSize.value)\n }\n\n const contentStyles = computed(() => {\n // This adds friction when scrolling the 'wrong' way when at max offset\n let scrollAmount = scrollOffset.value > contentSize.value - containerSize.value\n ? -(contentSize.value - containerSize.value) + bias(contentSize.value - containerSize.value - scrollOffset.value)\n : -scrollOffset.value\n\n // This adds friction when scrolling the 'wrong' way when at min offset\n if (scrollOffset.value <= 0) {\n scrollAmount = bias(-scrollOffset.value)\n }\n\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n return {\n transform: `translate${isHorizontal.value ? 'X' : 'Y'}(${sign * scrollAmount}px)`,\n transition: disableTransition.value ? 'none' : '',\n willChange: disableTransition.value ? 'transform' : '',\n }\n })\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n return Math.abs(scrollOffset.value) > 0\n })\n\n const hasNext = computed(() => {\n // Check one scroll ahead to know the width of right-most item\n return contentSize.value > Math.abs(scrollOffset.value) + containerSize.value\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n displayClasses.value,\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onClick={ () => hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n style={ contentStyles.value }\n onTouchstartPassive={ onTouchstart }\n onTouchmovePassive={ onTouchmove }\n onTouchendPassive={ onTouchend }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onClick={ () => hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","useGoTo","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","calculateCenteredTarget","calculateUpdatedTarget","getClientSize","getOffsetSize","getScrollPosition","getScrollSize","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","mobile","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","goTo","goToOptions","container","duration","easing","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","scrollToChildren","isFocused","center","target","containerElement","scrollToPosition","newPosition","offsetSize","scrollPosition","scrollSize","Math","abs","scrollWidth","offsetWidth","containerWidth","horizontal","onScroll","e","scrollTop","scrollLeft","onFocusin","el","composedPath","onFocusout","ignoreFocusEvent","onFocus","relatedTarget","contains","focus","onFocusAffixes","onKeydown","toFocus","location","preventDefault","key","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","preventScroll","scrollTo","offsetStep","slotProps","next","prev","select","isSelected","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","_createVNode","tag","class","style","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps(),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed<Partial<GoToOptions>>(() => {\n return {\n container: containerRef.value,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.value!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.value!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.value) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.value)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.value)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.value)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.value) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.value!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: UIEvent) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.value.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n function toFocus (location: Parameters<typeof focus>[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n let el: HTMLElement | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n el = focusable[0]\n } else if (location === 'next') {\n el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.value.firstElementChild as HTMLElement)\n } else if (location === 'last') {\n el = (contentRef.value.lastElementChild as HTMLElement)\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.value) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.value!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.value)\n const clientSize = getClientSize(isHorizontal.value, containerRef.value)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n displayClasses.value,\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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","ignoreList":[]}
@@ -4,44 +4,58 @@
4
4
  @use '../../styles/tools'
5
5
  @use './variables' as *
6
6
 
7
- // Block
8
- .v-slide-group
9
- display: flex
10
- overflow: hidden
11
-
12
- // Element
13
- .v-slide-group__next,
14
- .v-slide-group__prev
15
- align-items: center
16
- display: flex
17
- flex: 0 1 $slide-group-prev-basis
18
- justify-content: center
19
- min-width: $slide-group-prev-basis
20
- cursor: pointer
21
-
22
- &--disabled
23
- pointer-events: none
24
- opacity: var(--v-disabled-opacity)
25
-
26
- .v-slide-group__content
27
- display: flex
28
- flex: 1 0 auto
29
- position: relative
30
- transition: 0.2s all settings.$standard-easing
31
- white-space: nowrap
32
-
33
- > *
34
- white-space: initial
35
-
36
- .v-slide-group__container
37
- contain: content
38
- display: flex
39
- flex: 1 1 auto
40
- overflow: hidden
41
-
42
- // Modifiers
43
- .v-slide-group--vertical
44
- &,
45
- .v-slide-group__container,
7
+ @include tools.layer('components')
8
+ // Block
9
+ .v-slide-group
10
+ display: flex
11
+ overflow: hidden
12
+
13
+ // Element
14
+ .v-slide-group__next,
15
+ .v-slide-group__prev
16
+ align-items: center
17
+ display: flex
18
+ flex: 0 1 $slide-group-prev-basis
19
+ justify-content: center
20
+ min-width: $slide-group-prev-basis
21
+ cursor: pointer
22
+
23
+ &--disabled
24
+ pointer-events: none
25
+ opacity: var(--v-disabled-opacity)
26
+
46
27
  .v-slide-group__content
47
- flex-direction: column
28
+ display: flex
29
+ flex: 1 0 auto
30
+ position: relative
31
+ transition: 0.2s all settings.$standard-easing
32
+ white-space: nowrap
33
+
34
+ > *
35
+ white-space: initial
36
+
37
+ .v-slide-group__container
38
+ contain: content
39
+ display: flex
40
+ flex: 1 1 auto
41
+ overflow-x: auto
42
+ overflow-y: hidden
43
+
44
+ scrollbar-width: none
45
+ scrollbar-color: rgba(0, 0, 0, 0)
46
+
47
+ &::-webkit-scrollbar
48
+ display: none
49
+
50
+ // Modifiers
51
+ .v-slide-group--vertical
52
+ max-height: inherit
53
+
54
+ &,
55
+ .v-slide-group__container,
56
+ .v-slide-group__content
57
+ flex-direction: column
58
+
59
+ .v-slide-group__container
60
+ overflow-x: hidden
61
+ overflow-y: auto
@@ -1,41 +1,61 @@
1
- export function bias(val) {
2
- const c = 0.501;
3
- const x = Math.abs(val);
4
- return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1));
5
- }
6
- export function calculateUpdatedOffset(_ref) {
1
+ export function calculateUpdatedTarget(_ref) {
7
2
  let {
8
3
  selectedElement,
9
- containerSize,
10
- contentSize,
4
+ containerElement,
11
5
  isRtl,
12
- currentScrollOffset,
13
6
  isHorizontal
14
7
  } = _ref;
15
- const clientSize = isHorizontal ? selectedElement.clientWidth : selectedElement.clientHeight;
16
- const offsetStart = isHorizontal ? selectedElement.offsetLeft : selectedElement.offsetTop;
17
- const adjustedOffsetStart = isRtl && isHorizontal ? contentSize - offsetStart - clientSize : offsetStart;
18
- const totalSize = containerSize + currentScrollOffset;
19
- const itemOffset = clientSize + adjustedOffsetStart;
20
- const additionalOffset = clientSize * 0.4;
21
- if (adjustedOffsetStart <= currentScrollOffset) {
22
- currentScrollOffset = Math.max(adjustedOffsetStart - additionalOffset, 0);
23
- } else if (totalSize <= itemOffset) {
24
- currentScrollOffset = Math.min(currentScrollOffset - (totalSize - itemOffset - additionalOffset), contentSize - containerSize);
8
+ const containerSize = getOffsetSize(isHorizontal, containerElement);
9
+ const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement);
10
+ const childrenSize = getOffsetSize(isHorizontal, selectedElement);
11
+ const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement);
12
+ const additionalOffset = childrenSize * 0.4;
13
+ if (scrollPosition > childrenStartPosition) {
14
+ return childrenStartPosition - additionalOffset;
15
+ } else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) {
16
+ return childrenStartPosition - containerSize + childrenSize + additionalOffset;
25
17
  }
26
- return currentScrollOffset;
18
+ return scrollPosition;
27
19
  }
28
- export function calculateCenteredOffset(_ref2) {
20
+ export function calculateCenteredTarget(_ref2) {
29
21
  let {
30
22
  selectedElement,
31
- containerSize,
32
- contentSize,
33
- isRtl,
23
+ containerElement,
34
24
  isHorizontal
35
25
  } = _ref2;
36
- const clientSize = isHorizontal ? selectedElement.clientWidth : selectedElement.clientHeight;
37
- const offsetStart = isHorizontal ? selectedElement.offsetLeft : selectedElement.offsetTop;
38
- const offsetCentered = isRtl && isHorizontal ? contentSize - offsetStart - clientSize / 2 - containerSize / 2 : offsetStart + clientSize / 2 - containerSize / 2;
39
- return Math.min(contentSize - containerSize, Math.max(0, offsetCentered));
26
+ const containerOffsetSize = getOffsetSize(isHorizontal, containerElement);
27
+ const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement);
28
+ const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement);
29
+ return childrenOffsetPosition - containerOffsetSize / 2 + childrenOffsetSize / 2;
30
+ }
31
+ export function getScrollSize(isHorizontal, element) {
32
+ const key = isHorizontal ? 'scrollWidth' : 'scrollHeight';
33
+ return element?.[key] || 0;
34
+ }
35
+ export function getClientSize(isHorizontal, element) {
36
+ const key = isHorizontal ? 'clientWidth' : 'clientHeight';
37
+ return element?.[key] || 0;
38
+ }
39
+ export function getScrollPosition(isHorizontal, rtl, element) {
40
+ if (!element) {
41
+ return 0;
42
+ }
43
+ const {
44
+ scrollLeft,
45
+ offsetWidth,
46
+ scrollWidth
47
+ } = element;
48
+ if (isHorizontal) {
49
+ return rtl ? scrollWidth - offsetWidth + scrollLeft : scrollLeft;
50
+ }
51
+ return element.scrollTop;
52
+ }
53
+ export function getOffsetSize(isHorizontal, element) {
54
+ const key = isHorizontal ? 'offsetWidth' : 'offsetHeight';
55
+ return element?.[key] || 0;
56
+ }
57
+ export function getOffsetPosition(isHorizontal, element) {
58
+ const key = isHorizontal ? 'offsetLeft' : 'offsetTop';
59
+ return element?.[key] || 0;
40
60
  }
41
61
  //# sourceMappingURL=helpers.mjs.map