vuetify 3.1.16 → 3.2.1

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 (476) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +331 -179
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/importMap.json +16 -12
  5. package/dist/json/tags.json +45 -2
  6. package/dist/json/web-types.json +851 -329
  7. package/dist/vuetify-labs.css +663 -440
  8. package/dist/vuetify-labs.d.ts +5905 -7618
  9. package/dist/vuetify-labs.esm.js +1635 -649
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1634 -647
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +265 -58
  14. package/dist/vuetify.d.ts +6509 -7498
  15. package/dist/vuetify.esm.js +1375 -423
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +1374 -421
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +800 -728
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/index.d.ts +35 -1
  23. package/lib/blueprints/md1.d.ts +35 -1
  24. package/lib/blueprints/md2.d.ts +35 -1
  25. package/lib/blueprints/md3.d.ts +35 -1
  26. package/lib/components/VAlert/VAlert.mjs +6 -4
  27. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  28. package/lib/components/VAlert/index.d.ts +57 -55
  29. package/lib/components/VApp/VApp.mjs +4 -2
  30. package/lib/components/VApp/VApp.mjs.map +1 -1
  31. package/lib/components/VApp/index.d.ts +22 -13
  32. package/lib/components/VAppBar/VAppBar.mjs +65 -13
  33. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  34. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -4
  35. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  36. package/lib/components/VAppBar/index.d.ts +113 -92
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -1
  38. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  39. package/lib/components/VAutocomplete/index.d.ts +276 -418
  40. package/lib/components/VAvatar/VAvatar.mjs +4 -2
  41. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  42. package/lib/components/VAvatar/index.d.ts +23 -14
  43. package/lib/components/VBadge/VBadge.mjs +6 -5
  44. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  45. package/lib/components/VBadge/index.d.ts +27 -22
  46. package/lib/components/VBanner/VBanner.mjs +6 -4
  47. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  48. package/lib/components/VBanner/VBannerActions.mjs +5 -2
  49. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  50. package/lib/components/VBanner/index.d.ts +92 -66
  51. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -2
  52. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  53. package/lib/components/VBottomNavigation/index.d.ts +22 -13
  54. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +4 -2
  55. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  56. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -3
  57. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +4 -2
  59. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  60. package/lib/components/VBreadcrumbs/index.d.ts +132 -91
  61. package/lib/components/VBtn/VBtn.mjs +9 -4
  62. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  63. package/lib/components/VBtn/_mixins.scss +1 -1
  64. package/lib/components/VBtn/index.d.ts +39 -36
  65. package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -1
  66. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  67. package/lib/components/VBtnGroup/index.d.ts +22 -13
  68. package/lib/components/VBtnToggle/VBtnToggle.mjs +4 -2
  69. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  70. package/lib/components/VBtnToggle/index.d.ts +30 -21
  71. package/lib/components/VCard/VCard.mjs +5 -3
  72. package/lib/components/VCard/VCard.mjs.map +1 -1
  73. package/lib/components/VCard/VCardActions.mjs +7 -4
  74. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  75. package/lib/components/VCard/VCardItem.mjs +5 -2
  76. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  77. package/lib/components/VCard/index.d.ts +250 -141
  78. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  79. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  80. package/lib/components/VCarousel/VCarouselItem.mjs +6 -3
  81. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  82. package/lib/components/VCarousel/index.d.ts +78 -141
  83. package/lib/components/VCheckbox/VCheckbox.mjs +3 -2
  84. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  85. package/lib/components/VCheckbox/VCheckboxBtn.mjs +2 -1
  86. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  87. package/lib/components/VCheckbox/index.d.ts +75 -109
  88. package/lib/components/VChip/VChip.mjs +7 -8
  89. package/lib/components/VChip/VChip.mjs.map +1 -1
  90. package/lib/components/VChip/index.d.ts +27 -30
  91. package/lib/components/VChipGroup/VChipGroup.mjs +4 -1
  92. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  93. package/lib/components/VChipGroup/index.d.ts +22 -13
  94. package/lib/components/VCode/index.d.ts +30 -17
  95. package/lib/components/VColorPicker/VColorPicker.mjs +3 -3
  96. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  97. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -2
  98. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  99. package/lib/components/VColorPicker/VColorPickerEdit.mjs +6 -3
  100. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  101. package/lib/components/VColorPicker/VColorPickerPreview.mjs +6 -3
  102. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  103. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +7 -5
  104. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  105. package/lib/components/VColorPicker/index.d.ts +34 -1
  106. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  107. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  108. package/lib/components/VCombobox/index.d.ts +276 -418
  109. package/lib/components/VCounter/VCounter.mjs +4 -1
  110. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  111. package/lib/components/VCounter/index.d.ts +22 -145
  112. package/lib/components/VDefaultsProvider/index.d.ts +0 -12
  113. package/lib/components/VDialog/VDialog.mjs +2 -1
  114. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  115. package/lib/components/VDialog/index.d.ts +104 -282
  116. package/lib/components/VDivider/VDivider.mjs +4 -2
  117. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  118. package/lib/components/VDivider/index.d.ts +22 -13
  119. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +4 -2
  120. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  121. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +4 -1
  122. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  123. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +4 -2
  124. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  125. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -1
  126. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  127. package/lib/components/VExpansionPanel/index.d.ts +109 -81
  128. package/lib/components/VField/VField.css +59 -11
  129. package/lib/components/VField/VField.mjs +18 -8
  130. package/lib/components/VField/VField.mjs.map +1 -1
  131. package/lib/components/VField/VField.sass +57 -5
  132. package/lib/components/VField/VFieldLabel.mjs +6 -3
  133. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  134. package/lib/components/VField/_variables.scss +4 -0
  135. package/lib/components/VField/index.d.ts +169 -84
  136. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  137. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  138. package/lib/components/VFileInput/index.d.ts +147 -174
  139. package/lib/components/VFooter/VFooter.mjs +4 -2
  140. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  141. package/lib/components/VFooter/index.d.ts +22 -13
  142. package/lib/components/VForm/VForm.mjs +5 -2
  143. package/lib/components/VForm/VForm.mjs.map +1 -1
  144. package/lib/components/VForm/index.d.ts +30 -17
  145. package/lib/components/VGrid/VCol.mjs +4 -1
  146. package/lib/components/VGrid/VCol.mjs.map +1 -1
  147. package/lib/components/VGrid/VContainer.mjs +4 -1
  148. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  149. package/lib/components/VGrid/VRow.mjs +4 -1
  150. package/lib/components/VGrid/VRow.mjs.map +1 -1
  151. package/lib/components/VGrid/index.d.ts +104 -60
  152. package/lib/components/VHover/index.d.ts +20 -44
  153. package/lib/components/VIcon/VIcon.mjs +4 -2
  154. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  155. package/lib/components/VIcon/index.d.ts +23 -26
  156. package/lib/components/VImg/VImg.mjs +5 -3
  157. package/lib/components/VImg/VImg.mjs.map +1 -1
  158. package/lib/components/VImg/index.d.ts +26 -29
  159. package/lib/components/VInput/VInput.mjs +4 -1
  160. package/lib/components/VInput/VInput.mjs.map +1 -1
  161. package/lib/components/VInput/index.d.ts +37 -40
  162. package/lib/components/VItemGroup/VItemGroup.mjs +4 -1
  163. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  164. package/lib/components/VItemGroup/index.d.ts +30 -33
  165. package/lib/components/VKbd/index.d.ts +30 -17
  166. package/lib/components/VLabel/VLabel.mjs +4 -1
  167. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  168. package/lib/components/VLabel/index.d.ts +22 -13
  169. package/lib/components/VLayout/VLayout.mjs +8 -4
  170. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  171. package/lib/components/VLayout/VLayoutItem.mjs +4 -2
  172. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  173. package/lib/components/VLayout/index.d.ts +44 -26
  174. package/lib/components/VLazy/VLazy.mjs +4 -2
  175. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  176. package/lib/components/VLazy/index.d.ts +22 -13
  177. package/lib/components/VList/VList.mjs +4 -2
  178. package/lib/components/VList/VList.mjs.map +1 -1
  179. package/lib/components/VList/VListChildren.mjs.map +1 -1
  180. package/lib/components/VList/VListGroup.mjs +5 -2
  181. package/lib/components/VList/VListGroup.mjs.map +1 -1
  182. package/lib/components/VList/VListItem.mjs +4 -2
  183. package/lib/components/VList/VListItem.mjs.map +1 -1
  184. package/lib/components/VList/VListItemAction.mjs +4 -1
  185. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  186. package/lib/components/VList/VListItemMedia.mjs +4 -1
  187. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  188. package/lib/components/VList/VListSubheader.mjs +5 -3
  189. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  190. package/lib/components/VList/index.d.ts +932 -826
  191. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -2
  192. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  193. package/lib/components/VLocaleProvider/index.d.ts +30 -17
  194. package/lib/components/VMain/VMain.mjs +4 -2
  195. package/lib/components/VMain/VMain.mjs.map +1 -1
  196. package/lib/components/VMain/index.d.ts +30 -17
  197. package/lib/components/VMenu/VMenu.mjs +2 -1
  198. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  199. package/lib/components/VMenu/index.d.ts +104 -282
  200. package/lib/components/VMessages/VMessages.mjs +4 -2
  201. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  202. package/lib/components/VMessages/index.d.ts +22 -145
  203. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +4 -2
  204. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  205. package/lib/components/VNavigationDrawer/index.d.ts +26 -29
  206. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  207. package/lib/components/VNoSsr/index.d.ts +3 -13
  208. package/lib/components/VOverlay/VOverlay.mjs +5 -3
  209. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  210. package/lib/components/VOverlay/index.d.ts +38 -45
  211. package/lib/components/VPagination/VPagination.mjs +4 -1
  212. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  213. package/lib/components/VPagination/index.d.ts +23 -30
  214. package/lib/components/VParallax/VParallax.mjs +5 -2
  215. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  216. package/lib/components/VParallax/index.d.ts +34 -33
  217. package/lib/components/VProgressCircular/VProgressCircular.mjs +4 -2
  218. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  219. package/lib/components/VProgressCircular/index.d.ts +22 -13
  220. package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -4
  221. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  222. package/lib/components/VProgressLinear/index.d.ts +42 -45
  223. package/lib/components/VRadio/VRadio.mjs +2 -1
  224. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  225. package/lib/components/VRadio/index.d.ts +27 -38
  226. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  227. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  228. package/lib/components/VRadioGroup/index.d.ts +45 -68
  229. package/lib/components/VRangeSlider/VRangeSlider.mjs +33 -21
  230. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  231. package/lib/components/VRangeSlider/index.d.ts +50 -49
  232. package/lib/components/VRating/VRating.css +0 -4
  233. package/lib/components/VRating/VRating.mjs +10 -36
  234. package/lib/components/VRating/VRating.mjs.map +1 -1
  235. package/lib/components/VRating/VRating.sass +0 -5
  236. package/lib/components/VRating/index.d.ts +24 -18
  237. package/lib/components/VResponsive/VResponsive.mjs +4 -2
  238. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  239. package/lib/components/VResponsive/index.d.ts +43 -31
  240. package/lib/components/VSelect/VSelect.mjs +2 -1
  241. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  242. package/lib/components/VSelect/index.d.ts +245 -567
  243. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -2
  244. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  245. package/lib/components/VSelectionControl/index.d.ts +76 -46
  246. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
  247. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  248. package/lib/components/VSelectionControlGroup/index.d.ts +23 -14
  249. package/lib/components/VSheet/VSheet.mjs +4 -2
  250. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  251. package/lib/components/VSheet/index.d.ts +22 -13
  252. package/lib/components/VSlideGroup/VSlideGroup.mjs +4 -1
  253. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  254. package/lib/components/VSlideGroup/index.d.ts +59 -90
  255. package/lib/components/VSlider/VSlider.mjs +33 -14
  256. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  257. package/lib/components/VSlider/VSliderThumb.mjs +6 -4
  258. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  259. package/lib/components/VSlider/VSliderTrack.mjs +6 -4
  260. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  261. package/lib/components/VSlider/index.d.ts +50 -49
  262. package/lib/components/VSlider/slider.mjs +43 -23
  263. package/lib/components/VSlider/slider.mjs.map +1 -1
  264. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  265. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  266. package/lib/components/VSnackbar/index.d.ts +92 -142
  267. package/lib/components/VSwitch/VSwitch.mjs +2 -1
  268. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  269. package/lib/components/VSwitch/index.d.ts +45 -72
  270. package/lib/components/VSystemBar/VSystemBar.mjs +4 -2
  271. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  272. package/lib/components/VSystemBar/index.d.ts +22 -13
  273. package/lib/components/VTable/VTable.mjs +4 -1
  274. package/lib/components/VTable/VTable.mjs.map +1 -1
  275. package/lib/components/VTable/index.d.ts +26 -29
  276. package/lib/components/VTabs/VTab.mjs +3 -4
  277. package/lib/components/VTabs/VTab.mjs.map +1 -1
  278. package/lib/components/VTabs/VTabs.mjs +2 -2
  279. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  280. package/lib/components/VTabs/index.d.ts +51 -33
  281. package/lib/components/VTextField/VTextField.mjs +2 -1
  282. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  283. package/lib/components/VTextField/index.d.ts +337 -317
  284. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  285. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  286. package/lib/components/VTextarea/index.d.ts +127 -146
  287. package/lib/components/VThemeProvider/VThemeProvider.mjs +6 -3
  288. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  289. package/lib/components/VThemeProvider/index.d.ts +22 -13
  290. package/lib/components/VTimeline/VTimeline.mjs +5 -3
  291. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  292. package/lib/components/VTimeline/VTimelineDivider.mjs +4 -1
  293. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  294. package/lib/components/VTimeline/VTimelineItem.mjs +8 -6
  295. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  296. package/lib/components/VTimeline/index.d.ts +67 -57
  297. package/lib/components/VToolbar/VToolbar.css +3 -1
  298. package/lib/components/VToolbar/VToolbar.mjs +4 -2
  299. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  300. package/lib/components/VToolbar/VToolbar.sass +3 -1
  301. package/lib/components/VToolbar/VToolbarItems.mjs +9 -4
  302. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  303. package/lib/components/VToolbar/VToolbarTitle.mjs +5 -2
  304. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  305. package/lib/components/VToolbar/index.d.ts +74 -71
  306. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  307. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  308. package/lib/components/VTooltip/index.d.ts +119 -150
  309. package/lib/components/VValidation/index.d.ts +6 -18
  310. package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.mjs +21 -23
  311. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -0
  312. package/lib/{labs → components}/VVirtualScroll/VVirtualScrollItem.mjs +5 -2
  313. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -0
  314. package/lib/{labs → components}/VVirtualScroll/index.d.ts +70 -30
  315. package/lib/components/VVirtualScroll/index.mjs.map +1 -0
  316. package/lib/components/VWindow/VWindow.mjs +4 -1
  317. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  318. package/lib/components/VWindow/VWindowItem.mjs +4 -1
  319. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  320. package/lib/components/VWindow/index.d.ts +61 -79
  321. package/lib/components/index.d.ts +5832 -6863
  322. package/lib/components/index.mjs +2 -1
  323. package/lib/components/index.mjs.map +1 -1
  324. package/lib/components/transitions/index.d.ts +0 -192
  325. package/lib/composables/component.mjs +11 -0
  326. package/lib/composables/component.mjs.map +1 -0
  327. package/lib/composables/defaults.mjs +63 -5
  328. package/lib/composables/defaults.mjs.map +1 -1
  329. package/lib/composables/focus.mjs.map +1 -1
  330. package/lib/composables/icons.mjs +15 -4
  331. package/lib/composables/icons.mjs.map +1 -1
  332. package/lib/composables/index.mjs +1 -0
  333. package/lib/composables/index.mjs.map +1 -1
  334. package/lib/composables/intersectionObserver.mjs +2 -2
  335. package/lib/composables/intersectionObserver.mjs.map +1 -1
  336. package/lib/composables/loader.mjs.map +1 -1
  337. package/lib/composables/scroll.mjs +3 -0
  338. package/lib/composables/scroll.mjs.map +1 -1
  339. package/lib/entry-bundler.mjs +1 -1
  340. package/lib/entry-bundler.mjs.map +1 -1
  341. package/lib/framework.mjs +8 -3
  342. package/lib/framework.mjs.map +1 -1
  343. package/lib/iconsets/fa-svg.d.ts +1 -1
  344. package/lib/iconsets/fa.d.ts +1 -1
  345. package/lib/iconsets/fa4.d.ts +1 -1
  346. package/lib/iconsets/md.d.ts +1 -1
  347. package/lib/iconsets/mdi-svg.d.ts +1 -1
  348. package/lib/iconsets/mdi.d.ts +1 -1
  349. package/lib/index.d.ts +45 -5
  350. package/lib/labs/VDataTable/index.d.ts +61 -933
  351. package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
  352. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
  353. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
  354. package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
  355. package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
  356. package/lib/labs/VInfiniteScroll/index.d.ts +321 -0
  357. package/lib/labs/VInfiniteScroll/index.mjs +2 -0
  358. package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
  359. package/lib/labs/VSkeletonLoader/index.d.ts +0 -12
  360. package/lib/labs/components.d.ts +377 -1097
  361. package/lib/labs/components.mjs +1 -1
  362. package/lib/labs/components.mjs.map +1 -1
  363. package/lib/labs/date/DateAdapter.mjs +2 -0
  364. package/lib/labs/date/DateAdapter.mjs.map +1 -0
  365. package/lib/labs/date/adapters/vuetify.d.ts +52 -0
  366. package/lib/labs/date/adapters/vuetify.mjs +399 -0
  367. package/lib/labs/date/adapters/vuetify.mjs.map +1 -0
  368. package/lib/labs/date/date.mjs +39 -0
  369. package/lib/labs/date/date.mjs.map +1 -0
  370. package/lib/labs/date/index.d.ts +40 -0
  371. package/lib/labs/date/index.mjs +2 -0
  372. package/lib/labs/date/index.mjs.map +1 -0
  373. package/lib/labs/index.mjs +3 -2
  374. package/lib/labs/index.mjs.map +1 -1
  375. package/lib/locale/af.mjs +5 -1
  376. package/lib/locale/af.mjs.map +1 -1
  377. package/lib/locale/ar.mjs +5 -1
  378. package/lib/locale/ar.mjs.map +1 -1
  379. package/lib/locale/az.mjs +5 -1
  380. package/lib/locale/az.mjs.map +1 -1
  381. package/lib/locale/bg.mjs +5 -1
  382. package/lib/locale/bg.mjs.map +1 -1
  383. package/lib/locale/ca.mjs +5 -1
  384. package/lib/locale/ca.mjs.map +1 -1
  385. package/lib/locale/ckb.mjs +5 -1
  386. package/lib/locale/ckb.mjs.map +1 -1
  387. package/lib/locale/cs.mjs +5 -1
  388. package/lib/locale/cs.mjs.map +1 -1
  389. package/lib/locale/da.mjs +5 -1
  390. package/lib/locale/da.mjs.map +1 -1
  391. package/lib/locale/de.mjs +5 -1
  392. package/lib/locale/de.mjs.map +1 -1
  393. package/lib/locale/el.mjs +5 -1
  394. package/lib/locale/el.mjs.map +1 -1
  395. package/lib/locale/en.mjs +5 -1
  396. package/lib/locale/en.mjs.map +1 -1
  397. package/lib/locale/es.mjs +5 -1
  398. package/lib/locale/es.mjs.map +1 -1
  399. package/lib/locale/et.mjs +5 -1
  400. package/lib/locale/et.mjs.map +1 -1
  401. package/lib/locale/fa.mjs +5 -1
  402. package/lib/locale/fa.mjs.map +1 -1
  403. package/lib/locale/fi.mjs +5 -1
  404. package/lib/locale/fi.mjs.map +1 -1
  405. package/lib/locale/fr.mjs +5 -1
  406. package/lib/locale/fr.mjs.map +1 -1
  407. package/lib/locale/he.mjs +5 -1
  408. package/lib/locale/he.mjs.map +1 -1
  409. package/lib/locale/hr.mjs +5 -1
  410. package/lib/locale/hr.mjs.map +1 -1
  411. package/lib/locale/hu.mjs +5 -1
  412. package/lib/locale/hu.mjs.map +1 -1
  413. package/lib/locale/id.mjs +5 -1
  414. package/lib/locale/id.mjs.map +1 -1
  415. package/lib/locale/index.d.ts +168 -0
  416. package/lib/locale/it.mjs +5 -1
  417. package/lib/locale/it.mjs.map +1 -1
  418. package/lib/locale/ja.mjs +5 -1
  419. package/lib/locale/ja.mjs.map +1 -1
  420. package/lib/locale/ko.mjs +5 -1
  421. package/lib/locale/ko.mjs.map +1 -1
  422. package/lib/locale/lt.mjs +5 -1
  423. package/lib/locale/lt.mjs.map +1 -1
  424. package/lib/locale/lv.mjs +5 -1
  425. package/lib/locale/lv.mjs.map +1 -1
  426. package/lib/locale/nl.mjs +5 -1
  427. package/lib/locale/nl.mjs.map +1 -1
  428. package/lib/locale/no.mjs +5 -1
  429. package/lib/locale/no.mjs.map +1 -1
  430. package/lib/locale/pl.mjs +5 -1
  431. package/lib/locale/pl.mjs.map +1 -1
  432. package/lib/locale/pt.mjs +5 -1
  433. package/lib/locale/pt.mjs.map +1 -1
  434. package/lib/locale/ro.mjs +5 -1
  435. package/lib/locale/ro.mjs.map +1 -1
  436. package/lib/locale/ru.mjs +5 -1
  437. package/lib/locale/ru.mjs.map +1 -1
  438. package/lib/locale/sk.mjs +5 -1
  439. package/lib/locale/sk.mjs.map +1 -1
  440. package/lib/locale/sl.mjs +5 -1
  441. package/lib/locale/sl.mjs.map +1 -1
  442. package/lib/locale/sr-Cyrl.mjs +5 -1
  443. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  444. package/lib/locale/sr-Latn.mjs +5 -1
  445. package/lib/locale/sr-Latn.mjs.map +1 -1
  446. package/lib/locale/sv.mjs +5 -1
  447. package/lib/locale/sv.mjs.map +1 -1
  448. package/lib/locale/th.mjs +5 -1
  449. package/lib/locale/th.mjs.map +1 -1
  450. package/lib/locale/tr.mjs +5 -1
  451. package/lib/locale/tr.mjs.map +1 -1
  452. package/lib/locale/uk.mjs +5 -1
  453. package/lib/locale/uk.mjs.map +1 -1
  454. package/lib/locale/vi.mjs +5 -1
  455. package/lib/locale/vi.mjs.map +1 -1
  456. package/lib/locale/zh-Hans.mjs +5 -1
  457. package/lib/locale/zh-Hans.mjs.map +1 -1
  458. package/lib/locale/zh-Hant.mjs +5 -1
  459. package/lib/locale/zh-Hant.mjs.map +1 -1
  460. package/lib/styles/main.css +152 -0
  461. package/lib/styles/settings/_utilities.scss +11 -1
  462. package/lib/util/createSimpleFunctional.mjs +9 -4
  463. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  464. package/lib/util/defineComponent.mjs +11 -43
  465. package/lib/util/defineComponent.mjs.map +1 -1
  466. package/lib/util/helpers.mjs +6 -2
  467. package/lib/util/helpers.mjs.map +1 -1
  468. package/lib/util/index.mjs +1 -0
  469. package/lib/util/index.mjs.map +1 -1
  470. package/package.json +3 -2
  471. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +0 -1
  472. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +0 -1
  473. package/lib/labs/VVirtualScroll/index.mjs.map +0 -1
  474. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.css +0 -0
  475. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.sass +0 -0
  476. /package/lib/{labs → components}/VVirtualScroll/index.mjs +0 -0
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.1.16
2
+ * Vuetify v3.2.1
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, onScopeDispose, effectScope, shallowRef, defineComponent as defineComponent$1, camelize, h, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, withModifiers, onUpdated } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated, withModifiers } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,11 +167,11 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
- function pick(obj, paths) {
170
+ function pick(obj, paths, exclude) {
171
171
  const found = Object.create(null);
172
172
  const rest = Object.create(null);
173
173
  for (const key in obj) {
174
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key)) {
174
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
175
175
  found[key] = obj[key];
176
176
  } else {
177
177
  rest[key] = obj[key];
@@ -882,44 +882,6 @@ function getContrast(first, second) {
882
882
  return (light + 0.05) / (dark + 0.05);
883
883
  }
884
884
 
885
- // Utilities
886
- function getCurrentInstance(name, message) {
887
- const vm = getCurrentInstance$1();
888
- if (!vm) {
889
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
890
- }
891
- return vm;
892
- }
893
- function getCurrentInstanceName() {
894
- let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
895
- const vm = getCurrentInstance(name).type;
896
- return toKebabCase(vm?.aliasName || vm?.name);
897
- }
898
- let _uid = 0;
899
- let _map = new WeakMap();
900
- function getUid() {
901
- const vm = getCurrentInstance('getUid');
902
- if (_map.has(vm)) return _map.get(vm);else {
903
- const uid = _uid++;
904
- _map.set(vm, uid);
905
- return uid;
906
- }
907
- }
908
- getUid.reset = () => {
909
- _uid = 0;
910
- _map = new WeakMap();
911
- };
912
-
913
- function injectSelf(key) {
914
- const {
915
- provides
916
- } = getCurrentInstance('injectSelf');
917
- if (provides && key in provides) {
918
- // TS doesn't allow symbol as index type
919
- return provides[key];
920
- }
921
- }
922
-
923
885
  /**
924
886
  * Creates a factory function for props definitions.
925
887
  * This is used to define props in a composable then override
@@ -973,17 +935,54 @@ function propsFactory(props, source) {
973
935
 
974
936
  // Types
975
937
 
938
+ // Composables
939
+ const makeComponentProps = propsFactory({
940
+ class: [String, Array],
941
+ style: {
942
+ type: [String, Array, Object],
943
+ default: null
944
+ }
945
+ }, 'component');
946
+
947
+ function useToggleScope(source, fn) {
948
+ let scope;
949
+ function start() {
950
+ scope = effectScope();
951
+ scope.run(() => fn.length ? fn(() => {
952
+ scope?.stop();
953
+ start();
954
+ }) : fn());
955
+ }
956
+ watch(source, active => {
957
+ if (active && !scope) {
958
+ start();
959
+ } else if (!active) {
960
+ scope?.stop();
961
+ scope = undefined;
962
+ }
963
+ }, {
964
+ immediate: true
965
+ });
966
+ onScopeDispose(() => {
967
+ scope?.stop();
968
+ });
969
+ }
970
+
971
+ // Composables
972
+
973
+ // Types
974
+
976
975
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
977
976
  function createDefaults(options) {
978
977
  return ref(options);
979
978
  }
980
- function useDefaults() {
979
+ function injectDefaults() {
981
980
  const defaults = inject$1(DefaultsSymbol);
982
981
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
983
982
  return defaults;
984
983
  }
985
984
  function provideDefaults(defaults, options) {
986
- const injectedDefaults = useDefaults();
985
+ const injectedDefaults = injectDefaults();
987
986
  const providedDefaults = ref(defaults);
988
987
  const newDefaults = computed(() => {
989
988
  const disabled = unref(options?.disabled);
@@ -1010,41 +1009,68 @@ function provideDefaults(defaults, options) {
1010
1009
  provide(DefaultsSymbol, newDefaults);
1011
1010
  return newDefaults;
1012
1011
  }
1013
-
1014
- function useToggleScope(source, fn) {
1015
- let scope;
1016
- function start() {
1017
- scope = effectScope();
1018
- scope.run(() => fn.length ? fn(() => {
1019
- scope?.stop();
1020
- start();
1021
- }) : fn());
1022
- }
1023
- watch(source, active => {
1024
- if (active && !scope) {
1025
- start();
1026
- } else if (!active) {
1027
- scope?.stop();
1028
- scope = undefined;
1012
+ function propIsDefined(vnode, prop) {
1013
+ return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1014
+ }
1015
+ function internalUseDefaults() {
1016
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1017
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1018
+ let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
1019
+ const vm = getCurrentInstance('useDefaults');
1020
+ name = name ?? vm.type.name ?? vm.type.__name;
1021
+ if (!name) {
1022
+ throw new Error('[Vuetify] Could not determine component name');
1023
+ }
1024
+ const componentDefaults = computed(() => defaults.value?.[props._as ?? name]);
1025
+ const _props = new Proxy(props, {
1026
+ get(target, prop) {
1027
+ const propValue = Reflect.get(target, prop);
1028
+ if (prop === 'class' || prop === 'style') {
1029
+ return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1030
+ } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1031
+ return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue;
1032
+ }
1033
+ return propValue;
1029
1034
  }
1030
- }, {
1031
- immediate: true
1032
1035
  });
1033
- onScopeDispose(() => {
1034
- scope?.stop();
1036
+ const _subcomponentDefaults = shallowRef();
1037
+ watchEffect(() => {
1038
+ if (componentDefaults.value) {
1039
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1040
+ let [key] = _ref;
1041
+ return key.startsWith(key[0].toUpperCase());
1042
+ });
1043
+ if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1044
+ }
1035
1045
  });
1046
+ function provideSubDefaults() {
1047
+ // If subcomponent defaults are provided, override any
1048
+ // subcomponents provided by the component's setup function.
1049
+ // This uses injectSelf so must be done after the original setup to work.
1050
+ useToggleScope(_subcomponentDefaults, () => {
1051
+ provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1052
+ });
1053
+ }
1054
+ return {
1055
+ props: _props,
1056
+ provideSubDefaults
1057
+ };
1058
+ }
1059
+ function useDefaults() {
1060
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1061
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1062
+ const {
1063
+ props: _props,
1064
+ provideSubDefaults
1065
+ } = internalUseDefaults(props, name);
1066
+ provideSubDefaults();
1067
+ return _props;
1036
1068
  }
1037
1069
 
1038
1070
  // Utils
1039
1071
 
1040
1072
  // Types
1041
1073
 
1042
- function propIsDefined(vnode, prop) {
1043
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1044
- }
1045
-
1046
- // No props
1047
-
1048
1074
  // Implementation
1049
1075
  function defineComponent(options) {
1050
1076
  options._setup = options._setup ?? options.setup;
@@ -1056,43 +1082,20 @@ function defineComponent(options) {
1056
1082
  options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1057
1083
  const propKeys = Object.keys(options.props);
1058
1084
  options.filterProps = function filterProps(props) {
1059
- return pick(props, propKeys);
1085
+ return pick(props, propKeys, ['class', 'style']);
1060
1086
  };
1061
1087
  options.props._as = String;
1062
1088
  options.setup = function setup(props, ctx) {
1063
- const defaults = useDefaults();
1089
+ const defaults = injectDefaults();
1064
1090
 
1065
1091
  // Skip props proxy if defaults are not provided
1066
1092
  if (!defaults.value) return options._setup(props, ctx);
1067
- const vm = getCurrentInstance$1();
1068
- const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1069
- const _props = new Proxy(props, {
1070
- get(target, prop) {
1071
- const propValue = Reflect.get(target, prop);
1072
- if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1073
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1074
- }
1075
- return propValue;
1076
- }
1077
- });
1078
- const _subcomponentDefaults = shallowRef();
1079
- watchEffect(() => {
1080
- if (componentDefaults.value) {
1081
- const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1082
- let [key] = _ref;
1083
- return key.startsWith(key[0].toUpperCase());
1084
- });
1085
- if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1086
- }
1087
- });
1093
+ const {
1094
+ props: _props,
1095
+ provideSubDefaults
1096
+ } = internalUseDefaults(props, props._as ?? options.name, defaults);
1088
1097
  const setupBindings = options._setup(_props, ctx);
1089
-
1090
- // If subcomponent defaults are provided, override any
1091
- // subcomponents provided by the component's setup function.
1092
- // This uses injectSelf so must be done after the original setup to work.
1093
- useToggleScope(_subcomponentDefaults, () => {
1094
- provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1095
- });
1098
+ provideSubDefaults();
1096
1099
  return setupBindings;
1097
1100
  };
1098
1101
  }
@@ -1117,15 +1120,19 @@ function createSimpleFunctional(klass) {
1117
1120
  tag: {
1118
1121
  type: String,
1119
1122
  default: tag
1120
- }
1123
+ },
1124
+ ...makeComponentProps()
1121
1125
  },
1122
1126
  setup(props, _ref) {
1123
1127
  let {
1124
1128
  slots
1125
1129
  } = _ref;
1126
- return () => h(props.tag, {
1127
- class: klass
1128
- }, slots.default?.());
1130
+ return () => {
1131
+ return h(props.tag, {
1132
+ class: [klass, props.class],
1133
+ style: props.style
1134
+ }, slots.default?.());
1135
+ };
1129
1136
  }
1130
1137
  });
1131
1138
  }
@@ -1158,6 +1165,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1158
1165
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1159
1166
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1160
1167
 
1168
+ // Utilities
1169
+ function getCurrentInstance(name, message) {
1170
+ const vm = getCurrentInstance$1();
1171
+ if (!vm) {
1172
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1173
+ }
1174
+ return vm;
1175
+ }
1176
+ function getCurrentInstanceName() {
1177
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1178
+ const vm = getCurrentInstance(name).type;
1179
+ return toKebabCase(vm?.aliasName || vm?.name);
1180
+ }
1181
+ let _uid = 0;
1182
+ let _map = new WeakMap();
1183
+ function getUid() {
1184
+ const vm = getCurrentInstance('getUid');
1185
+ if (_map.has(vm)) return _map.get(vm);else {
1186
+ const uid = _uid++;
1187
+ _map.set(vm, uid);
1188
+ return uid;
1189
+ }
1190
+ }
1191
+ getUid.reset = () => {
1192
+ _uid = 0;
1193
+ _map = new WeakMap();
1194
+ };
1195
+
1161
1196
  function getScrollParent(el) {
1162
1197
  while (el) {
1163
1198
  if (hasScrollbar(el)) return el;
@@ -1181,6 +1216,16 @@ function hasScrollbar(el) {
1181
1216
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1182
1217
  }
1183
1218
 
1219
+ function injectSelf(key) {
1220
+ const {
1221
+ provides
1222
+ } = getCurrentInstance('injectSelf');
1223
+ if (provides && key in provides) {
1224
+ // TS doesn't allow symbol as index type
1225
+ return provides[key];
1226
+ }
1227
+ }
1228
+
1184
1229
  function isFixedPosition(el) {
1185
1230
  while (el) {
1186
1231
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1961,7 +2006,11 @@ var en = {
1961
2006
  item: 'Rating {0} of {1}'
1962
2007
  }
1963
2008
  },
1964
- loading: 'Loading...'
2009
+ loading: 'Loading...',
2010
+ infiniteScroll: {
2011
+ loadMore: 'Load more',
2012
+ empty: 'No more'
2013
+ }
1965
2014
  };
1966
2015
 
1967
2016
  const LANG_PREFIX = '$vuetify.';
@@ -2159,6 +2208,7 @@ function useRtl() {
2159
2208
  const VApp = genericComponent()({
2160
2209
  name: 'VApp',
2161
2210
  props: {
2211
+ ...makeComponentProps(),
2162
2212
  ...makeLayoutProps({
2163
2213
  fullHeight: true
2164
2214
  }),
@@ -2181,8 +2231,8 @@ const VApp = genericComponent()({
2181
2231
  } = useRtl();
2182
2232
  useRender(() => createVNode("div", {
2183
2233
  "ref": layoutRef,
2184
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2185
- "style": layoutStyles.value
2234
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2235
+ "style": [layoutStyles.value, props.style]
2186
2236
  }, [createVNode("div", {
2187
2237
  "class": "v-application__wrap"
2188
2238
  }, [slots.default?.()])]));
@@ -2607,6 +2657,7 @@ const VResponsive = genericComponent()({
2607
2657
  props: {
2608
2658
  aspectRatio: [String, Number],
2609
2659
  contentClass: String,
2660
+ ...makeComponentProps(),
2610
2661
  ...makeDimensionProps()
2611
2662
  },
2612
2663
  setup(props, _ref) {
@@ -2620,8 +2671,8 @@ const VResponsive = genericComponent()({
2620
2671
  dimensionStyles
2621
2672
  } = useDimension(props);
2622
2673
  useRender(() => createVNode("div", {
2623
- "class": "v-responsive",
2624
- "style": dimensionStyles.value
2674
+ "class": ['v-responsive', props.class],
2675
+ "style": [dimensionStyles.value, props.style]
2625
2676
  }, [createVNode("div", {
2626
2677
  "class": "v-responsive__sizer",
2627
2678
  "style": aspectStyles.value
@@ -2739,6 +2790,7 @@ const VImg = genericComponent()({
2739
2790
  },
2740
2791
  srcset: String,
2741
2792
  width: [String, Number],
2793
+ ...makeComponentProps(),
2742
2794
  ...makeTransitionProps()
2743
2795
  },
2744
2796
  emits: {
@@ -2926,10 +2978,10 @@ const VImg = genericComponent()({
2926
2978
  useRender(() => withDirectives(createVNode(VResponsive, {
2927
2979
  "class": ['v-img', {
2928
2980
  'v-img--booting': !isBooted.value
2929
- }],
2930
- "style": {
2981
+ }, props.class],
2982
+ "style": [{
2931
2983
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2932
- },
2984
+ }, props.style],
2933
2985
  "aspectRatio": aspectRatio.value,
2934
2986
  "aria-label": props.alt,
2935
2987
  "role": props.alt ? 'img' : undefined
@@ -2964,10 +3016,9 @@ const makeTagProps = propsFactory({
2964
3016
  }
2965
3017
  }, 'tag');
2966
3018
 
2967
- // Types
2968
-
2969
3019
  const makeVToolbarTitleProps = propsFactory({
2970
3020
  text: String,
3021
+ ...makeComponentProps(),
2971
3022
  ...makeTagProps()
2972
3023
  }, 'v-toolbar-title');
2973
3024
  const VToolbarTitle = genericComponent()({
@@ -2980,7 +3031,8 @@ const VToolbarTitle = genericComponent()({
2980
3031
  useRender(() => {
2981
3032
  const hasText = !!(slots.default || slots.text || props.text);
2982
3033
  return createVNode(props.tag, {
2983
- "class": "v-toolbar-title"
3034
+ "class": ['v-toolbar-title', props.class],
3035
+ "style": props.style
2984
3036
  }, {
2985
3037
  default: () => [hasText && createVNode("div", {
2986
3038
  "class": "v-toolbar-title__placeholder"
@@ -3161,6 +3213,7 @@ const makeVToolbarProps = propsFactory({
3161
3213
  image: String,
3162
3214
  title: String,
3163
3215
  ...makeBorderProps(),
3216
+ ...makeComponentProps(),
3164
3217
  ...makeElevationProps(),
3165
3218
  ...makeRoundedProps(),
3166
3219
  ...makeTagProps({
@@ -3211,8 +3264,8 @@ const VToolbar = genericComponent()({
3211
3264
  'v-toolbar--flat': props.flat,
3212
3265
  'v-toolbar--floating': props.floating,
3213
3266
  [`v-toolbar--density-${props.density}`]: true
3214
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3215
- "style": [backgroundColorStyles.value]
3267
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3268
+ "style": [backgroundColorStyles.value, props.style]
3216
3269
  }, {
3217
3270
  default: () => [hasImage && createVNode("div", {
3218
3271
  "key": "image",
@@ -3279,6 +3332,98 @@ const VToolbar = genericComponent()({
3279
3332
 
3280
3333
  // Utilities
3281
3334
 
3335
+ // Types
3336
+
3337
+ // Composables
3338
+ const makeScrollProps = propsFactory({
3339
+ scrollTarget: {
3340
+ type: String
3341
+ },
3342
+ scrollThreshold: {
3343
+ type: [String, Number]
3344
+ }
3345
+ }, 'scroll');
3346
+ function useScroll(props) {
3347
+ let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3348
+ const {
3349
+ thresholdMetCallback,
3350
+ scrollThreshold,
3351
+ canScroll
3352
+ } = args;
3353
+ let previousScroll = 0;
3354
+ const target = ref(null);
3355
+ const currentScroll = ref(0);
3356
+ const savedScroll = ref(0);
3357
+ const currentThreshold = ref(0);
3358
+ const isScrollActive = ref(false);
3359
+ const isScrollingUp = ref(false);
3360
+ const computedScrollThreshold = computed(() => {
3361
+ return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3362
+ });
3363
+ const onScroll = () => {
3364
+ const targetEl = target.value;
3365
+ if (!targetEl || canScroll && !canScroll.value) return;
3366
+ previousScroll = currentScroll.value;
3367
+ currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3368
+ isScrollingUp.value = currentScroll.value < previousScroll;
3369
+ currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3370
+ };
3371
+ watch(isScrollingUp, () => {
3372
+ savedScroll.value = savedScroll.value || currentScroll.value;
3373
+ });
3374
+ watch(isScrollActive, () => {
3375
+ savedScroll.value = 0;
3376
+ });
3377
+ onMounted(() => {
3378
+ watch(() => props.scrollTarget, scrollTarget => {
3379
+ const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3380
+ if (!newTarget) {
3381
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance$1());
3382
+ return;
3383
+ }
3384
+ if (newTarget === target.value) return;
3385
+ target.value?.removeEventListener('scroll', onScroll);
3386
+ target.value = newTarget;
3387
+ target.value.addEventListener('scroll', onScroll, {
3388
+ passive: true
3389
+ });
3390
+ }, {
3391
+ immediate: true
3392
+ });
3393
+ });
3394
+ onBeforeUnmount(() => {
3395
+ target.value?.removeEventListener('scroll', onScroll);
3396
+ });
3397
+ thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3398
+ thresholdMet && thresholdMetCallback({
3399
+ currentThreshold: currentThreshold.value,
3400
+ isScrollingUp: isScrollingUp.value,
3401
+ savedScroll
3402
+ });
3403
+ }, {
3404
+ immediate: true
3405
+ });
3406
+
3407
+ // Do we need this? If yes - seems that
3408
+ // there's no need to expose onScroll
3409
+ canScroll && watch(canScroll, onScroll, {
3410
+ immediate: true
3411
+ });
3412
+ return {
3413
+ computedScrollThreshold,
3414
+ currentScroll,
3415
+ currentThreshold,
3416
+ isScrollActive,
3417
+ // required only for testing
3418
+ // probably can be removed
3419
+ // later (2 chars chlng)
3420
+ isScrollingUp,
3421
+ savedScroll
3422
+ };
3423
+ }
3424
+
3425
+ // Utilities
3426
+
3282
3427
  // Composables
3283
3428
  function useSsrBoot() {
3284
3429
  const isBooted = ref(false);
@@ -3301,13 +3446,7 @@ function useSsrBoot() {
3301
3446
  const VAppBar = genericComponent()({
3302
3447
  name: 'VAppBar',
3303
3448
  props: {
3304
- // TODO: Implement scrolling techniques
3305
- // hideOnScroll: Boolean
3306
- // invertedScroll: Boolean
3307
- // collapseOnScroll: Boolean
3308
- // elevateOnScroll: Boolean
3309
- // shrinkOnScroll: Boolean
3310
- // fadeImageOnScroll: Boolean
3449
+ scrollBehavior: String,
3311
3450
  modelValue: {
3312
3451
  type: Boolean,
3313
3452
  default: true
@@ -3319,6 +3458,7 @@ const VAppBar = genericComponent()({
3319
3458
  },
3320
3459
  ...makeVToolbarProps(),
3321
3460
  ...makeLayoutItemProps(),
3461
+ ...makeScrollProps(),
3322
3462
  height: {
3323
3463
  type: [Number, String],
3324
3464
  default: 64
@@ -3333,11 +3473,63 @@ const VAppBar = genericComponent()({
3333
3473
  } = _ref;
3334
3474
  const vToolbarRef = ref();
3335
3475
  const isActive = useProxiedModel(props, 'modelValue');
3476
+ const scrollBehavior = computed(() => {
3477
+ const behavior = new Set(props.scrollBehavior?.split(' ') ?? []);
3478
+ return {
3479
+ hide: behavior.has('hide'),
3480
+ // fullyHide: behavior.has('fully-hide'),
3481
+ inverted: behavior.has('inverted'),
3482
+ collapse: behavior.has('collapse'),
3483
+ elevate: behavior.has('elevate'),
3484
+ fadeImage: behavior.has('fade-image')
3485
+ // shrink: behavior.has('shrink'),
3486
+ };
3487
+ });
3488
+
3489
+ const canScroll = computed(() => {
3490
+ const behavior = scrollBehavior.value;
3491
+ return behavior.hide ||
3492
+ // behavior.fullyHide ||
3493
+ behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage ||
3494
+ // behavior.shrink ||
3495
+ !isActive.value;
3496
+ });
3497
+ const {
3498
+ currentScroll,
3499
+ currentThreshold,
3500
+ computedScrollThreshold,
3501
+ isScrollingUp
3502
+ } = useScroll(props, {
3503
+ canScroll
3504
+ });
3505
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3506
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3507
+ const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3508
+ const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3336
3509
  const height = computed(() => {
3510
+ if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
3337
3511
  const height = vToolbarRef.value?.contentHeight ?? 0;
3338
3512
  const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
3339
3513
  return height + extensionHeight;
3340
3514
  });
3515
+ function setActive() {
3516
+ const val = currentScroll.value;
3517
+ if (scrollBehavior.value.hide) {
3518
+ if (scrollBehavior.value.inverted) {
3519
+ isActive.value = val > computedScrollThreshold.value;
3520
+ } else {
3521
+ isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3522
+ }
3523
+ } else if (scrollBehavior.value.inverted) {
3524
+ isActive.value = currentScroll.value === 0;
3525
+ } else {
3526
+ isActive.value = true;
3527
+ }
3528
+ }
3529
+ watch(currentScroll, setActive, {
3530
+ immediate: true
3531
+ });
3532
+ watch(scrollBehavior, setActive);
3341
3533
  const {
3342
3534
  ssrBootStyles
3343
3535
  } = useSsrBoot();
@@ -3348,7 +3540,7 @@ const VAppBar = genericComponent()({
3348
3540
  order: computed(() => parseInt(props.order, 10)),
3349
3541
  position: toRef(props, 'location'),
3350
3542
  layoutSize: height,
3351
- elementSize: height,
3543
+ elementSize: ref(undefined),
3352
3544
  active: isActive,
3353
3545
  absolute: toRef(props, 'absolute')
3354
3546
  });
@@ -3358,13 +3550,17 @@ const VAppBar = genericComponent()({
3358
3550
  "ref": vToolbarRef,
3359
3551
  "class": ['v-app-bar', {
3360
3552
  'v-app-bar--bottom': props.location === 'bottom'
3361
- }],
3362
- "style": {
3553
+ }, props.class],
3554
+ "style": [{
3363
3555
  ...layoutItemStyles.value,
3556
+ '--v-toolbar-image-opacity': opacity.value,
3364
3557
  height: undefined,
3365
3558
  ...ssrBootStyles.value
3366
- }
3367
- }, toolbarProps), slots);
3559
+ }, props.style]
3560
+ }, toolbarProps, {
3561
+ "collapse": isCollapsed.value,
3562
+ "flat": isFlat.value
3563
+ }), slots);
3368
3564
  });
3369
3565
  return {};
3370
3566
  }
@@ -3447,6 +3643,7 @@ function useVariant(props) {
3447
3643
  const makeVBtnGroupProps = propsFactory({
3448
3644
  divided: Boolean,
3449
3645
  ...makeBorderProps(),
3646
+ ...makeComponentProps(),
3450
3647
  ...makeDensityProps(),
3451
3648
  ...makeElevationProps(),
3452
3649
  ...makeRoundedProps(),
@@ -3489,7 +3686,8 @@ const VBtnGroup = genericComponent()({
3489
3686
  return createVNode(props.tag, {
3490
3687
  "class": ['v-btn-group', {
3491
3688
  'v-btn-group--divided': props.divided
3492
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3689
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3690
+ "style": props.style
3493
3691
  }, slots);
3494
3692
  });
3495
3693
  }
@@ -3722,8 +3920,10 @@ const VBtnToggle = genericComponent()({
3722
3920
  useRender(() => {
3723
3921
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3724
3922
  return createVNode(VBtnGroup, mergeProps({
3725
- "class": "v-btn-toggle"
3726
- }, btnGroupProps), {
3923
+ "class": ['v-btn-toggle', props.class]
3924
+ }, btnGroupProps, {
3925
+ "style": props.style
3926
+ }), {
3727
3927
  default: () => [slots.default?.({
3728
3928
  isSelected,
3729
3929
  next,
@@ -3794,7 +3994,7 @@ const mdi = {
3794
3994
 
3795
3995
  // Types
3796
3996
 
3797
- const IconValue = [String, Function, Object];
3997
+ const IconValue = [String, Function, Object, Array];
3798
3998
  const IconSymbol = Symbol.for('vuetify:icons');
3799
3999
  const makeIconProps = propsFactory({
3800
4000
  icon: {
@@ -3814,8 +4014,9 @@ const VComponentIcon = genericComponent()({
3814
4014
  slots
3815
4015
  } = _ref;
3816
4016
  return () => {
4017
+ const Icon = props.icon;
3817
4018
  return createVNode(props.tag, null, {
3818
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4019
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3819
4020
  });
3820
4021
  };
3821
4022
  }
@@ -3838,7 +4039,12 @@ const VSvgIcon = defineComponent({
3838
4039
  "viewBox": "0 0 24 24",
3839
4040
  "role": "img",
3840
4041
  "aria-hidden": "true"
3841
- }, [createVNode("path", {
4042
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4043
+ "d": path[0],
4044
+ "fill-opacity": path[1]
4045
+ }, null) : createVNode("path", {
4046
+ "d": path
4047
+ }, null)) : createVNode("path", {
3842
4048
  "d": props.icon
3843
4049
  }, null)])]
3844
4050
  });
@@ -3903,7 +4109,12 @@ const useIcon = props => {
3903
4109
  }
3904
4110
  }
3905
4111
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
3906
- if (typeof icon !== 'string') {
4112
+ if (Array.isArray(icon)) {
4113
+ return {
4114
+ component: VSvgIcon,
4115
+ icon
4116
+ };
4117
+ } else if (typeof icon !== 'string') {
3907
4118
  return {
3908
4119
  component: VComponentIcon,
3909
4120
  icon
@@ -3960,6 +4171,7 @@ const makeVIconProps = propsFactory({
3960
4171
  start: Boolean,
3961
4172
  end: Boolean,
3962
4173
  icon: IconValue,
4174
+ ...makeComponentProps(),
3963
4175
  ...makeSizeProps(),
3964
4176
  ...makeTagProps({
3965
4177
  tag: 'i'
@@ -4002,12 +4214,12 @@ const VIcon = genericComponent()({
4002
4214
  'v-icon--clickable': !!attrs.onClick,
4003
4215
  'v-icon--start': props.start,
4004
4216
  'v-icon--end': props.end
4005
- }],
4217
+ }, props.class],
4006
4218
  "style": [!sizeClasses.value ? {
4007
4219
  fontSize: convertToUnit(props.size),
4008
4220
  height: convertToUnit(props.size),
4009
4221
  width: convertToUnit(props.size)
4010
- } : undefined, textColorStyles.value],
4222
+ } : undefined, textColorStyles.value, props.style],
4011
4223
  "role": attrs.onClick ? 'button' : undefined,
4012
4224
  "aria-hidden": !attrs.onClick
4013
4225
  }, {
@@ -4018,14 +4230,14 @@ const VIcon = genericComponent()({
4018
4230
  });
4019
4231
 
4020
4232
  // Utilities
4021
- function useIntersectionObserver(callback) {
4233
+ function useIntersectionObserver(callback, options) {
4022
4234
  const intersectionRef = ref();
4023
4235
  const isIntersecting = ref(false);
4024
4236
  if (SUPPORTS_INTERSECTION) {
4025
4237
  const observer = new IntersectionObserver(entries => {
4026
4238
  callback?.(entries, observer);
4027
4239
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4028
- });
4240
+ }, options);
4029
4241
  onBeforeUnmount(() => {
4030
4242
  observer.disconnect();
4031
4243
  });
@@ -4065,6 +4277,7 @@ const VProgressCircular = genericComponent()({
4065
4277
  type: [Number, String],
4066
4278
  default: 4
4067
4279
  },
4280
+ ...makeComponentProps(),
4068
4281
  ...makeSizeProps(),
4069
4282
  ...makeTagProps({
4070
4283
  tag: 'div'
@@ -4120,8 +4333,8 @@ const VProgressCircular = genericComponent()({
4120
4333
  'v-progress-circular--indeterminate': !!props.indeterminate,
4121
4334
  'v-progress-circular--visible': isIntersecting.value,
4122
4335
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4123
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4124
- "style": [sizeStyles.value, textColorStyles.value],
4336
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4337
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4125
4338
  "role": "progressbar",
4126
4339
  "aria-valuemin": "0",
4127
4340
  "aria-valuemax": "100",
@@ -4540,6 +4753,7 @@ const VProgressLinear = genericComponent()({
4540
4753
  stream: Boolean,
4541
4754
  striped: Boolean,
4542
4755
  roundedBar: Boolean,
4756
+ ...makeComponentProps(),
4543
4757
  ...makeLocationProps({
4544
4758
  location: 'top'
4545
4759
  }),
@@ -4611,14 +4825,14 @@ const VProgressLinear = genericComponent()({
4611
4825
  'v-progress-linear--rounded': props.rounded,
4612
4826
  'v-progress-linear--rounded-bar': props.roundedBar,
4613
4827
  'v-progress-linear--striped': props.striped
4614
- }, roundedClasses.value, themeClasses.value],
4615
- "style": {
4828
+ }, roundedClasses.value, themeClasses.value, props.class],
4829
+ "style": [{
4616
4830
  bottom: props.location === 'bottom' ? 0 : undefined,
4617
4831
  top: props.location === 'top' ? 0 : undefined,
4618
4832
  height: props.active ? convertToUnit(height.value) : 0,
4619
4833
  '--v-progress-linear-height': convertToUnit(height.value),
4620
4834
  ...locationStyles.value
4621
- },
4835
+ }, props.style],
4622
4836
  "role": "progressbar",
4623
4837
  "aria-hidden": props.active ? 'false' : 'true',
4624
4838
  "aria-valuemin": "0",
@@ -4827,8 +5041,9 @@ const makeVBtnProps = propsFactory({
4827
5041
  type: Boolean,
4828
5042
  default: true
4829
5043
  },
5044
+ text: String,
4830
5045
  ...makeBorderProps(),
4831
- ...makeRoundedProps(),
5046
+ ...makeComponentProps(),
4832
5047
  ...makeDensityProps(),
4833
5048
  ...makeDimensionProps(),
4834
5049
  ...makeElevationProps(),
@@ -4836,6 +5051,7 @@ const makeVBtnProps = propsFactory({
4836
5051
  ...makeLoaderProps(),
4837
5052
  ...makeLocationProps(),
4838
5053
  ...makePositionProps(),
5054
+ ...makeRoundedProps(),
4839
5055
  ...makeRouterProps(),
4840
5056
  ...makeSizeProps(),
4841
5057
  ...makeTagProps({
@@ -4933,8 +5149,8 @@ const VBtn = genericComponent()({
4933
5149
  'v-btn--icon': !!props.icon,
4934
5150
  'v-btn--loading': props.loading,
4935
5151
  'v-btn--stacked': props.stacked
4936
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
4937
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
5152
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5153
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
4938
5154
  "disabled": isDisabled.value || undefined,
4939
5155
  "href": link.href.value,
4940
5156
  "onClick": e => {
@@ -4972,7 +5188,9 @@ const VBtn = genericComponent()({
4972
5188
  icon: props.icon
4973
5189
  }
4974
5190
  }
4975
- }, slots.default)]), !props.icon && hasAppend && createVNode("span", {
5191
+ }, {
5192
+ default: () => [slots.default?.() ?? props.text]
5193
+ })]), !props.icon && hasAppend && createVNode("span", {
4976
5194
  "key": "append",
4977
5195
  "class": "v-btn__append"
4978
5196
  }, [!slots.append ? createVNode(VIcon, {
@@ -5009,15 +5227,17 @@ const VAppBarNavIcon = genericComponent()({
5009
5227
  icon: {
5010
5228
  type: IconValue,
5011
5229
  default: '$menu'
5012
- }
5230
+ },
5231
+ ...makeComponentProps()
5013
5232
  },
5014
5233
  setup(props, _ref) {
5015
5234
  let {
5016
5235
  slots
5017
5236
  } = _ref;
5018
5237
  useRender(() => createVNode(VBtn, {
5019
- "class": "v-app-bar-nav-icon",
5020
- "icon": props.icon
5238
+ "class": ['v-app-bar-nav-icon', props.class],
5239
+ "icon": props.icon,
5240
+ "style": props.style
5021
5241
  }, slots));
5022
5242
  return {};
5023
5243
  }
@@ -5025,9 +5245,12 @@ const VAppBarNavIcon = genericComponent()({
5025
5245
 
5026
5246
  const VToolbarItems = genericComponent()({
5027
5247
  name: 'VToolbarItems',
5028
- props: makeVariantProps({
5029
- variant: 'text'
5030
- }),
5248
+ props: {
5249
+ ...makeComponentProps(),
5250
+ ...makeVariantProps({
5251
+ variant: 'text'
5252
+ })
5253
+ },
5031
5254
  setup(props, _ref) {
5032
5255
  let {
5033
5256
  slots
@@ -5040,7 +5263,8 @@ const VToolbarItems = genericComponent()({
5040
5263
  }
5041
5264
  });
5042
5265
  useRender(() => createVNode("div", {
5043
- "class": "v-toolbar-items"
5266
+ "class": ['v-toolbar-items', props.class],
5267
+ "style": props.style
5044
5268
  }, [slots.default?.()]));
5045
5269
  return {};
5046
5270
  }
@@ -5102,6 +5326,7 @@ const VAlert = genericComponent()({
5102
5326
  type: String,
5103
5327
  validator: val => allowedTypes.includes(val)
5104
5328
  },
5329
+ ...makeComponentProps(),
5105
5330
  ...makeDensityProps(),
5106
5331
  ...makeDimensionProps(),
5107
5332
  ...makeElevationProps(),
@@ -5184,8 +5409,8 @@ const VAlert = genericComponent()({
5184
5409
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5185
5410
  }, {
5186
5411
  'v-alert--prominent': props.prominent
5187
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
5188
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
5412
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5413
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5189
5414
  "role": "alert"
5190
5415
  }, {
5191
5416
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5279,6 +5504,7 @@ const VLabel = genericComponent()({
5279
5504
  props: {
5280
5505
  text: String,
5281
5506
  clickable: Boolean,
5507
+ ...makeComponentProps(),
5282
5508
  ...makeThemeProps()
5283
5509
  },
5284
5510
  setup(props, _ref) {
@@ -5288,7 +5514,8 @@ const VLabel = genericComponent()({
5288
5514
  useRender(() => createVNode("label", {
5289
5515
  "class": ['v-label', {
5290
5516
  'v-label--clickable': props.clickable
5291
- }]
5517
+ }, props.class],
5518
+ "style": props.style
5292
5519
  }, [props.text, slots.default?.()]));
5293
5520
  return {};
5294
5521
  }
@@ -5297,7 +5524,8 @@ const VLabel = genericComponent()({
5297
5524
  const VFieldLabel = genericComponent()({
5298
5525
  name: 'VFieldLabel',
5299
5526
  props: {
5300
- floating: Boolean
5527
+ floating: Boolean,
5528
+ ...makeComponentProps()
5301
5529
  },
5302
5530
  setup(props, _ref) {
5303
5531
  let {
@@ -5306,7 +5534,8 @@ const VFieldLabel = genericComponent()({
5306
5534
  useRender(() => createVNode(VLabel, {
5307
5535
  "class": ['v-field-label', {
5308
5536
  'v-field-label--floating': props.floating
5309
- }],
5537
+ }, props.class],
5538
+ "style": props.style,
5310
5539
  "aria-hidden": props.floating || undefined
5311
5540
  }, slots));
5312
5541
  return {};
@@ -5346,7 +5575,7 @@ function useFocus(props) {
5346
5575
 
5347
5576
  // Types
5348
5577
 
5349
- const allowedVariants$1 = ['underlined', 'outlined', 'filled', 'solo', 'plain'];
5578
+ const allowedVariants$1 = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'];
5350
5579
  const makeVFieldProps = propsFactory({
5351
5580
  appendInnerIcon: IconValue,
5352
5581
  bgColor: String,
@@ -5357,9 +5586,11 @@ const makeVFieldProps = propsFactory({
5357
5586
  },
5358
5587
  active: Boolean,
5359
5588
  color: String,
5589
+ baseColor: String,
5360
5590
  dirty: Boolean,
5361
5591
  disabled: Boolean,
5362
5592
  error: Boolean,
5593
+ flat: Boolean,
5363
5594
  label: String,
5364
5595
  persistentClear: Boolean,
5365
5596
  prependInnerIcon: IconValue,
@@ -5373,8 +5604,10 @@ const makeVFieldProps = propsFactory({
5373
5604
  'onClick:clear': EventProp(),
5374
5605
  'onClick:appendInner': EventProp(),
5375
5606
  'onClick:prependInner': EventProp(),
5376
- ...makeThemeProps(),
5377
- ...makeLoaderProps()
5607
+ ...makeComponentProps(),
5608
+ ...makeLoaderProps(),
5609
+ ...makeRoundedProps(),
5610
+ ...makeThemeProps()
5378
5611
  }, 'v-field');
5379
5612
  const VField = genericComponent()({
5380
5613
  name: 'VField',
@@ -5409,6 +5642,9 @@ const VField = genericComponent()({
5409
5642
  const {
5410
5643
  InputIcon
5411
5644
  } = useInputIcon(props);
5645
+ const {
5646
+ roundedClasses
5647
+ } = useRounded(props);
5412
5648
  const isActive = computed(() => props.dirty || props.active);
5413
5649
  const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));
5414
5650
  const uid = getUid();
@@ -5425,7 +5661,7 @@ const VField = genericComponent()({
5425
5661
  textColorClasses,
5426
5662
  textColorStyles
5427
5663
  } = useTextColor(computed(() => {
5428
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5664
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5429
5665
  }));
5430
5666
  watch(isActive, val => {
5431
5667
  if (hasLabel.value) {
@@ -5494,6 +5730,7 @@ const VField = genericComponent()({
5494
5730
  'v-field--disabled': props.disabled,
5495
5731
  'v-field--dirty': props.dirty,
5496
5732
  'v-field--error': props.error,
5733
+ 'v-field--flat': props.flat,
5497
5734
  'v-field--has-background': !!props.bgColor,
5498
5735
  'v-field--persistent-clear': props.persistentClear,
5499
5736
  'v-field--prepended': hasPrepend,
@@ -5501,8 +5738,8 @@ const VField = genericComponent()({
5501
5738
  'v-field--single-line': props.singleLine,
5502
5739
  'v-field--no-label': !label,
5503
5740
  [`v-field--variant-${props.variant}`]: true
5504
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
5505
- "style": [backgroundColorStyles.value, textColorStyles.value],
5741
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5742
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5506
5743
  "onClick": onClick
5507
5744
  }, attrs), [createVNode("div", {
5508
5745
  "class": "v-field__overlay"
@@ -5521,7 +5758,7 @@ const VField = genericComponent()({
5521
5758
  }, null), slots['prepend-inner']?.(slotProps.value)]), createVNode("div", {
5522
5759
  "class": "v-field__field",
5523
5760
  "data-no-activator": ""
5524
- }, [['solo', 'filled'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5761
+ }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5525
5762
  "key": "floating-label",
5526
5763
  "ref": floatingLabelRef,
5527
5764
  "class": [textColorClasses.value],
@@ -5590,7 +5827,7 @@ const VField = genericComponent()({
5590
5827
  });
5591
5828
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5592
5829
  function filterFieldProps(attrs) {
5593
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5830
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5594
5831
  return pick(attrs, keys);
5595
5832
  }
5596
5833
 
@@ -5605,6 +5842,7 @@ const VMessages = genericComponent()({
5605
5842
  type: [Array, String],
5606
5843
  default: () => []
5607
5844
  },
5845
+ ...makeComponentProps(),
5608
5846
  ...makeTransitionProps({
5609
5847
  transition: {
5610
5848
  component: VSlideYTransition,
@@ -5625,8 +5863,8 @@ const VMessages = genericComponent()({
5625
5863
  useRender(() => createVNode(MaybeTransition, {
5626
5864
  "transition": props.transition,
5627
5865
  "tag": "div",
5628
- "class": ['v-messages', textColorClasses.value],
5629
- "style": textColorStyles.value,
5866
+ "class": ['v-messages', textColorClasses.value, props.class],
5867
+ "style": [textColorStyles.value, props.style],
5630
5868
  "role": "alert",
5631
5869
  "aria-live": "polite"
5632
5870
  }, {
@@ -5922,6 +6160,7 @@ const makeVInputProps = propsFactory({
5922
6160
  },
5923
6161
  'onClick:prepend': EventProp(),
5924
6162
  'onClick:append': EventProp(),
6163
+ ...makeComponentProps(),
5925
6164
  ...makeDensityProps(),
5926
6165
  ...makeValidationProps()
5927
6166
  }, 'v-input');
@@ -5989,7 +6228,8 @@ const VInput = genericComponent()({
5989
6228
  const hasMessages = messages.value.length > 0;
5990
6229
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
5991
6230
  return createVNode("div", {
5992
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6231
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6232
+ "style": props.style
5993
6233
  }, [hasPrepend && createVNode("div", {
5994
6234
  "key": "prepend",
5995
6235
  "class": "v-input__prepend"
@@ -6032,6 +6272,7 @@ const VCounter = genericComponent()({
6032
6272
  type: [Number, String],
6033
6273
  default: 0
6034
6274
  },
6275
+ ...makeComponentProps(),
6035
6276
  ...makeTransitionProps({
6036
6277
  transition: {
6037
6278
  component: VSlideYTransition
@@ -6049,7 +6290,8 @@ const VCounter = genericComponent()({
6049
6290
  "transition": props.transition
6050
6291
  }, {
6051
6292
  default: () => [withDirectives(createVNode("div", {
6052
- "class": "v-counter"
6293
+ "class": ['v-counter', props.class],
6294
+ "style": props.style
6053
6295
  }, [slots.default ? slots.default({
6054
6296
  counter: counter.value,
6055
6297
  max: props.max,
@@ -6252,7 +6494,8 @@ const VTextField = genericComponent()({
6252
6494
  'v-text-field--prefixed': props.prefix,
6253
6495
  'v-text-field--suffixed': props.suffix,
6254
6496
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6255
- }]
6497
+ }, props.class],
6498
+ "style": props.style
6256
6499
  }, rootAttrs, inputProps, {
6257
6500
  "focused": isFocused.value
6258
6501
  }), {
@@ -6368,6 +6611,7 @@ const VSelectionControlGroup = genericComponent()({
6368
6611
  type: String,
6369
6612
  default: 'VSelectionControl'
6370
6613
  },
6614
+ ...makeComponentProps(),
6371
6615
  ...makeSelectionControlGroupProps()
6372
6616
  },
6373
6617
  emits: {
@@ -6415,7 +6659,8 @@ const VSelectionControlGroup = genericComponent()({
6415
6659
  useRender(() => createVNode("div", {
6416
6660
  "class": ['v-selection-control-group', {
6417
6661
  'v-selection-control-group--inline': props.inline
6418
- }],
6662
+ }, props.class],
6663
+ "style": props.style,
6419
6664
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6420
6665
  }, [slots.default?.()]));
6421
6666
  return {};
@@ -6429,6 +6674,7 @@ const makeSelectionControlProps = propsFactory({
6429
6674
  trueValue: null,
6430
6675
  falseValue: null,
6431
6676
  value: null,
6677
+ ...makeComponentProps(),
6432
6678
  ...makeSelectionControlGroupProps()
6433
6679
  }, 'v-selection-control');
6434
6680
  function useSelectionControl(props) {
@@ -6543,8 +6789,10 @@ const VSelectionControl = genericComponent()({
6543
6789
  'v-selection-control--focused': isFocused.value,
6544
6790
  'v-selection-control--focus-visible': isFocusVisible.value,
6545
6791
  'v-selection-control--inline': props.inline
6546
- }, densityClasses.value]
6547
- }, rootAttrs), [createVNode("div", {
6792
+ }, densityClasses.value, props.class]
6793
+ }, rootAttrs, {
6794
+ "style": props.style
6795
+ }), [createVNode("div", {
6548
6796
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6549
6797
  "style": textColorStyles.value
6550
6798
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6626,7 +6874,8 @@ const VCheckboxBtn = genericComponent()({
6626
6874
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6627
6875
  "modelValue": model.value,
6628
6876
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6629
- "class": "v-checkbox-btn",
6877
+ "class": ['v-checkbox-btn', props.class],
6878
+ "style": props.style,
6630
6879
  "type": "checkbox",
6631
6880
  "inline": true,
6632
6881
  "falseIcon": falseIcon.value,
@@ -6666,10 +6915,11 @@ const VCheckbox = genericComponent()({
6666
6915
  const [inputProps, _1] = VInput.filterProps(props);
6667
6916
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6668
6917
  return createVNode(VInput, mergeProps({
6669
- "class": "v-checkbox"
6918
+ "class": ['v-checkbox', props.class]
6670
6919
  }, inputAttrs, inputProps, {
6671
6920
  "id": id.value,
6672
- "focused": isFocused.value
6921
+ "focused": isFocused.value,
6922
+ "style": props.style
6673
6923
  }), {
6674
6924
  ...slots,
6675
6925
  default: _ref2 => {
@@ -6700,6 +6950,7 @@ const makeVAvatarProps = propsFactory({
6700
6950
  end: Boolean,
6701
6951
  icon: IconValue,
6702
6952
  image: String,
6953
+ ...makeComponentProps(),
6703
6954
  ...makeDensityProps(),
6704
6955
  ...makeRoundedProps(),
6705
6956
  ...makeSizeProps(),
@@ -6738,8 +6989,8 @@ const VAvatar = genericComponent()({
6738
6989
  "class": ['v-avatar', {
6739
6990
  'v-avatar--start': props.start,
6740
6991
  'v-avatar--end': props.end
6741
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6742
- "style": [colorStyles.value, sizeStyles.value]
6992
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6993
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6743
6994
  }, {
6744
6995
  default: () => [props.image ? createVNode(VImg, {
6745
6996
  "key": "image",
@@ -6767,6 +7018,7 @@ const VChipGroup = genericComponent()({
6767
7018
  type: Function,
6768
7019
  default: deepEqual
6769
7020
  },
7021
+ ...makeComponentProps(),
6770
7022
  ...makeGroupProps({
6771
7023
  selectedClass: 'v-chip--selected'
6772
7024
  }),
@@ -6804,7 +7056,8 @@ const VChipGroup = genericComponent()({
6804
7056
  useRender(() => createVNode(props.tag, {
6805
7057
  "class": ['v-chip-group', {
6806
7058
  'v-chip-group--column': props.column
6807
- }, themeClasses.value]
7059
+ }, themeClasses.value, props.class],
7060
+ "style": props.style
6808
7061
  }, {
6809
7062
  default: () => [slots.default?.({
6810
7063
  isSelected,
@@ -6818,8 +7071,6 @@ const VChipGroup = genericComponent()({
6818
7071
  }
6819
7072
  });
6820
7073
 
6821
- // Types
6822
-
6823
7074
  const VChip = genericComponent()({
6824
7075
  name: 'VChip',
6825
7076
  directives: {
@@ -6864,6 +7115,7 @@ const VChip = genericComponent()({
6864
7115
  onClick: EventProp(),
6865
7116
  onClickOnce: EventProp(),
6866
7117
  ...makeBorderProps(),
7118
+ ...makeComponentProps(),
6867
7119
  ...makeDensityProps(),
6868
7120
  ...makeElevationProps(),
6869
7121
  ...makeGroupItemProps(),
@@ -6956,8 +7208,8 @@ const VChip = genericComponent()({
6956
7208
  'v-chip--link': isClickable.value,
6957
7209
  'v-chip--filter': hasFilter,
6958
7210
  'v-chip--pill': props.pill
6959
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value],
6960
- "style": [hasColor ? colorStyles.value : undefined],
7211
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7212
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
6961
7213
  "disabled": props.disabled || undefined,
6962
7214
  "draggable": props.draggable,
6963
7215
  "href": link.href.value,
@@ -7066,6 +7318,7 @@ const VDivider = genericComponent()({
7066
7318
  length: [Number, String],
7067
7319
  thickness: [Number, String],
7068
7320
  vertical: Boolean,
7321
+ ...makeComponentProps(),
7069
7322
  ...makeThemeProps()
7070
7323
  },
7071
7324
  setup(props, _ref) {
@@ -7094,8 +7347,8 @@ const VDivider = genericComponent()({
7094
7347
  'v-divider': true,
7095
7348
  'v-divider--inset': props.inset,
7096
7349
  'v-divider--vertical': props.vertical
7097
- }, themeClasses.value, textColorClasses.value],
7098
- "style": [dividerStyles.value, textColorStyles.value],
7350
+ }, themeClasses.value, textColorClasses.value, props.class],
7351
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7099
7352
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7100
7353
  "role": `${attrs.role || 'separator'}`
7101
7354
  }, null));
@@ -7594,6 +7847,7 @@ const makeVListGroupProps = propsFactory({
7594
7847
  fluid: Boolean,
7595
7848
  subgroup: Boolean,
7596
7849
  value: null,
7850
+ ...makeComponentProps(),
7597
7851
  ...makeTagProps()
7598
7852
  }, 'v-list-group');
7599
7853
  const VListGroup = genericComponent()({
@@ -7642,7 +7896,8 @@ const VListGroup = genericComponent()({
7642
7896
  'v-list-group--fluid': props.fluid,
7643
7897
  'v-list-group--subgroup': props.subgroup,
7644
7898
  'v-list-group--open': isOpen.value
7645
- }]
7899
+ }, props.class],
7900
+ "style": props.style
7646
7901
  }, {
7647
7902
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7648
7903
  "defaults": activatorDefaults.value
@@ -7709,6 +7964,7 @@ const VListItem = genericComponent()({
7709
7964
  onClick: EventProp(),
7710
7965
  onClickOnce: EventProp(),
7711
7966
  ...makeBorderProps(),
7967
+ ...makeComponentProps(),
7712
7968
  ...makeDensityProps(),
7713
7969
  ...makeDimensionProps(),
7714
7970
  ...makeElevationProps(),
@@ -7819,8 +8075,8 @@ const VListItem = genericComponent()({
7819
8075
  'v-list-item--nav': props.nav,
7820
8076
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7821
8077
  [`${props.activeClass}`]: props.activeClass && isActive.value
7822
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
7823
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
8078
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8079
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
7824
8080
  "href": link.href.value,
7825
8081
  "tabindex": isClickable.value ? 0 : undefined,
7826
8082
  "onClick": onClick,
@@ -7913,6 +8169,7 @@ const VListSubheader = genericComponent()({
7913
8169
  inset: Boolean,
7914
8170
  sticky: Boolean,
7915
8171
  title: String,
8172
+ ...makeComponentProps(),
7916
8173
  ...makeTagProps()
7917
8174
  },
7918
8175
  setup(props, _ref) {
@@ -7929,10 +8186,10 @@ const VListSubheader = genericComponent()({
7929
8186
  "class": ['v-list-subheader', {
7930
8187
  'v-list-subheader--inset': props.inset,
7931
8188
  'v-list-subheader--sticky': props.sticky
7932
- }, textColorClasses.value],
7933
- "style": {
8189
+ }, textColorClasses.value, props.class],
8190
+ "style": [{
7934
8191
  textColorStyles
7935
- }
8192
+ }, props.style]
7936
8193
  }, {
7937
8194
  default: () => [hasText && createVNode("div", {
7938
8195
  "class": "v-list-subheader__text"
@@ -8152,6 +8409,7 @@ const VList = genericComponent()({
8152
8409
  openStrategy: 'list'
8153
8410
  }),
8154
8411
  ...makeBorderProps(),
8412
+ ...makeComponentProps(),
8155
8413
  ...makeDensityProps(),
8156
8414
  ...makeDimensionProps(),
8157
8415
  ...makeElevationProps(),
@@ -8263,8 +8521,8 @@ const VList = genericComponent()({
8263
8521
  "class": ['v-list', {
8264
8522
  'v-list--disabled': props.disabled,
8265
8523
  'v-list--nav': props.nav
8266
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
8267
- "style": [backgroundColorStyles.value, dimensionStyles.value],
8524
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8525
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8268
8526
  "role": "listbox",
8269
8527
  "aria-activedescendant": undefined,
8270
8528
  "onFocusin": onFocusin,
@@ -8292,6 +8550,7 @@ const VListItemAction = genericComponent()({
8292
8550
  props: {
8293
8551
  start: Boolean,
8294
8552
  end: Boolean,
8553
+ ...makeComponentProps(),
8295
8554
  ...makeTagProps()
8296
8555
  },
8297
8556
  setup(props, _ref) {
@@ -8302,7 +8561,8 @@ const VListItemAction = genericComponent()({
8302
8561
  "class": ['v-list-item-action', {
8303
8562
  'v-list-item-action--start': props.start,
8304
8563
  'v-list-item-action--end': props.end
8305
- }]
8564
+ }, props.class],
8565
+ "style": props.style
8306
8566
  }, slots));
8307
8567
  return {};
8308
8568
  }
@@ -8313,6 +8573,7 @@ const VListItemMedia = genericComponent()({
8313
8573
  props: {
8314
8574
  start: Boolean,
8315
8575
  end: Boolean,
8576
+ ...makeComponentProps(),
8316
8577
  ...makeTagProps()
8317
8578
  },
8318
8579
  setup(props, _ref) {
@@ -8324,7 +8585,8 @@ const VListItemMedia = genericComponent()({
8324
8585
  "class": ['v-list-item-media', {
8325
8586
  'v-list-item-media--start': props.start,
8326
8587
  'v-list-item-media--end': props.end
8327
- }]
8588
+ }, props.class],
8589
+ "style": props.style
8328
8590
  }, slots);
8329
8591
  });
8330
8592
  return {};
@@ -9565,6 +9827,7 @@ const makeVOverlayProps = propsFactory({
9565
9827
  default: 2000
9566
9828
  },
9567
9829
  ...makeActivatorProps(),
9830
+ ...makeComponentProps(),
9568
9831
  ...makeDimensionProps(),
9569
9832
  ...makeLazyProps(),
9570
9833
  ...makeLocationStrategyProps(),
@@ -9732,10 +9995,10 @@ const VOverlay = genericComponent()({
9732
9995
  'v-overlay--absolute': props.absolute || props.contained,
9733
9996
  'v-overlay--active': isActive.value,
9734
9997
  'v-overlay--contained': props.contained
9735
- }, themeClasses.value, rtlClasses.value],
9998
+ }, themeClasses.value, rtlClasses.value, props.class],
9736
9999
  "style": [stackStyles.value, {
9737
10000
  top: convertToUnit(top.value)
9738
- }],
10001
+ }, props.style],
9739
10002
  "ref": root
9740
10003
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9741
10004
  "color": scrimColor,
@@ -9841,7 +10104,8 @@ const VMenu = genericComponent()({
9841
10104
  const [overlayProps] = VOverlay.filterProps(props);
9842
10105
  return createVNode(VOverlay, mergeProps({
9843
10106
  "ref": overlay,
9844
- "class": ['v-menu']
10107
+ "class": ['v-menu', props.class],
10108
+ "style": props.style
9845
10109
  }, overlayProps, {
9846
10110
  "modelValue": isActive.value,
9847
10111
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10060,7 +10324,8 @@ const VSelect = genericComponent()({
10060
10324
  'v-select--chips': !!props.chips,
10061
10325
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10062
10326
  'v-select--selected': model.value.length
10063
- }],
10327
+ }, props.class],
10328
+ "style": props.style,
10064
10329
  "appendInnerIcon": props.menuIcon,
10065
10330
  "readonly": true,
10066
10331
  "placeholder": placeholder,
@@ -10503,7 +10768,8 @@ const VAutocomplete = genericComponent()({
10503
10768
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10504
10769
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10505
10770
  'v-autocomplete--selection-slot': !!slots.selection
10506
- }],
10771
+ }, props.class],
10772
+ "style": props.style,
10507
10773
  "appendInnerIcon": props.menuIcon,
10508
10774
  "readonly": props.readonly,
10509
10775
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10617,8 +10883,6 @@ const VAutocomplete = genericComponent()({
10617
10883
  }
10618
10884
  });
10619
10885
 
10620
- // Types
10621
-
10622
10886
  const VBadge = genericComponent()({
10623
10887
  name: 'VBadge',
10624
10888
  inheritAttrs: false,
@@ -10642,6 +10906,7 @@ const VBadge = genericComponent()({
10642
10906
  offsetX: [Number, String],
10643
10907
  offsetY: [Number, String],
10644
10908
  textColor: String,
10909
+ ...makeComponentProps(),
10645
10910
  ...makeLocationProps({
10646
10911
  location: 'top end'
10647
10912
  }),
@@ -10686,8 +10951,10 @@ const VBadge = genericComponent()({
10686
10951
  'v-badge--dot': props.dot,
10687
10952
  'v-badge--floating': props.floating,
10688
10953
  'v-badge--inline': props.inline
10689
- }]
10690
- }, attrs), {
10954
+ }, props.class]
10955
+ }, attrs, {
10956
+ "style": props.style
10957
+ }), {
10691
10958
  default: () => [createVNode("div", {
10692
10959
  "class": "v-badge__wrapper"
10693
10960
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10714,7 +10981,8 @@ const VBannerActions = genericComponent()({
10714
10981
  name: 'VBannerActions',
10715
10982
  props: {
10716
10983
  color: String,
10717
- density: String
10984
+ density: String,
10985
+ ...makeComponentProps()
10718
10986
  },
10719
10987
  setup(props, _ref) {
10720
10988
  let {
@@ -10728,7 +10996,8 @@ const VBannerActions = genericComponent()({
10728
10996
  }
10729
10997
  });
10730
10998
  useRender(() => createVNode("div", {
10731
- "class": "v-banner-actions"
10999
+ "class": ['v-banner-actions', props.class],
11000
+ "style": props.style
10732
11001
  }, [slots.default?.()]));
10733
11002
  return {};
10734
11003
  }
@@ -10749,6 +11018,7 @@ const VBanner = genericComponent()({
10749
11018
  sticky: Boolean,
10750
11019
  text: String,
10751
11020
  ...makeBorderProps(),
11021
+ ...makeComponentProps(),
10752
11022
  ...makeDensityProps(),
10753
11023
  ...makeDimensionProps(),
10754
11024
  ...makeElevationProps(),
@@ -10806,8 +11076,8 @@ const VBanner = genericComponent()({
10806
11076
  'v-banner--stacked': props.stacked || mobile.value,
10807
11077
  'v-banner--sticky': props.sticky,
10808
11078
  [`v-banner--${props.lines}-line`]: !!props.lines
10809
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
10810
- "style": [dimensionStyles.value, locationStyles.value],
11079
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11080
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10811
11081
  "role": "banner"
10812
11082
  }, {
10813
11083
  default: () => [hasPrepend && createVNode("div", {
@@ -10863,6 +11133,7 @@ const VBottomNavigation = genericComponent()({
10863
11133
  default: true
10864
11134
  },
10865
11135
  ...makeBorderProps(),
11136
+ ...makeComponentProps(),
10866
11137
  ...makeDensityProps(),
10867
11138
  ...makeElevationProps(),
10868
11139
  ...makeRoundedProps(),
@@ -10937,11 +11208,11 @@ const VBottomNavigation = genericComponent()({
10937
11208
  'v-bottom-navigation--active': isActive.value,
10938
11209
  'v-bottom-navigation--grow': props.grow,
10939
11210
  'v-bottom-navigation--shift': props.mode === 'shift'
10940
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11211
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
10941
11212
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
10942
11213
  height: convertToUnit(height.value),
10943
11214
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
10944
- }, ssrBootStyles.value]
11215
+ }, ssrBootStyles.value, props.style]
10945
11216
  }, {
10946
11217
  default: () => [slots.default && createVNode("div", {
10947
11218
  "class": "v-bottom-navigation__content"
@@ -10955,14 +11226,16 @@ const VBottomNavigation = genericComponent()({
10955
11226
  const VBreadcrumbsDivider = genericComponent()({
10956
11227
  name: 'VBreadcrumbsDivider',
10957
11228
  props: {
10958
- divider: [Number, String]
11229
+ divider: [Number, String],
11230
+ ...makeComponentProps()
10959
11231
  },
10960
11232
  setup(props, _ref) {
10961
11233
  let {
10962
11234
  slots
10963
11235
  } = _ref;
10964
11236
  useRender(() => createVNode("li", {
10965
- "class": "v-breadcrumbs-divider"
11237
+ "class": ['v-breadcrumbs-divider', props.class],
11238
+ "style": props.style
10966
11239
  }, [slots?.default?.() ?? props.divider]));
10967
11240
  return {};
10968
11241
  }
@@ -10977,6 +11250,7 @@ const VBreadcrumbsItem = genericComponent()({
10977
11250
  color: String,
10978
11251
  disabled: Boolean,
10979
11252
  title: String,
11253
+ ...makeComponentProps(),
10980
11254
  ...makeRouterProps(),
10981
11255
  ...makeTagProps({
10982
11256
  tag: 'li'
@@ -11002,8 +11276,8 @@ const VBreadcrumbsItem = genericComponent()({
11002
11276
  'v-breadcrumbs-item--disabled': props.disabled,
11003
11277
  'v-breadcrumbs-item--link': link.isLink.value,
11004
11278
  [`${props.activeClass}`]: isActive.value && props.activeClass
11005
- }, textColorClasses.value],
11006
- "style": [textColorStyles.value],
11279
+ }, textColorClasses.value, props.class],
11280
+ "style": [textColorStyles.value, props.style],
11007
11281
  "href": link.href.value,
11008
11282
  "aria-current": isActive.value ? 'page' : undefined,
11009
11283
  "onClick": link.navigate
@@ -11034,6 +11308,7 @@ const VBreadcrumbs = genericComponent()({
11034
11308
  type: Array,
11035
11309
  default: () => []
11036
11310
  },
11311
+ ...makeComponentProps(),
11037
11312
  ...makeDensityProps(),
11038
11313
  ...makeRoundedProps(),
11039
11314
  ...makeTagProps({
@@ -11079,8 +11354,8 @@ const VBreadcrumbs = genericComponent()({
11079
11354
  useRender(() => {
11080
11355
  const hasPrepend = !!(slots.prepend || props.icon);
11081
11356
  return createVNode(props.tag, {
11082
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11083
- "style": backgroundColorStyles.value
11357
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11358
+ "style": [backgroundColorStyles.value, props.style]
11084
11359
  }, {
11085
11360
  default: () => [hasPrepend && createVNode("div", {
11086
11361
  "key": "prepend",
@@ -11124,11 +11399,10 @@ const VBreadcrumbs = genericComponent()({
11124
11399
  }
11125
11400
  });
11126
11401
 
11127
- // Types
11128
-
11129
- const VCardActions = defineComponent({
11402
+ const VCardActions = genericComponent()({
11130
11403
  name: 'VCardActions',
11131
- setup(_, _ref) {
11404
+ props: makeComponentProps(),
11405
+ setup(props, _ref) {
11132
11406
  let {
11133
11407
  slots
11134
11408
  } = _ref;
@@ -11138,7 +11412,8 @@ const VCardActions = defineComponent({
11138
11412
  }
11139
11413
  });
11140
11414
  useRender(() => createVNode("div", {
11141
- "class": "v-card-actions"
11415
+ "class": ['v-card-actions', props.class],
11416
+ "style": props.style
11142
11417
  }, [slots.default?.()]));
11143
11418
  return {};
11144
11419
  }
@@ -11148,8 +11423,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11148
11423
 
11149
11424
  const VCardTitle = createSimpleFunctional('v-card-title');
11150
11425
 
11151
- // Types
11152
-
11153
11426
  const VCardItem = genericComponent()({
11154
11427
  name: 'VCardItem',
11155
11428
  props: {
@@ -11159,6 +11432,7 @@ const VCardItem = genericComponent()({
11159
11432
  prependIcon: IconValue,
11160
11433
  subtitle: String,
11161
11434
  title: String,
11435
+ ...makeComponentProps(),
11162
11436
  ...makeDensityProps()
11163
11437
  },
11164
11438
  setup(props, _ref) {
@@ -11173,7 +11447,8 @@ const VCardItem = genericComponent()({
11173
11447
  const hasTitle = !!(props.title || slots.title);
11174
11448
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11175
11449
  return createVNode("div", {
11176
- "class": "v-card-item"
11450
+ "class": ['v-card-item', props.class],
11451
+ "style": props.style
11177
11452
  }, [hasPrepend && createVNode("div", {
11178
11453
  "key": "prepend",
11179
11454
  "class": "v-card-item__prepend"
@@ -11255,8 +11530,8 @@ const VCard = genericComponent()({
11255
11530
  subtitle: String,
11256
11531
  text: String,
11257
11532
  title: String,
11258
- ...makeThemeProps(),
11259
11533
  ...makeBorderProps(),
11534
+ ...makeComponentProps(),
11260
11535
  ...makeDensityProps(),
11261
11536
  ...makeDimensionProps(),
11262
11537
  ...makeElevationProps(),
@@ -11266,6 +11541,7 @@ const VCard = genericComponent()({
11266
11541
  ...makeRoundedProps(),
11267
11542
  ...makeRouterProps(),
11268
11543
  ...makeTagProps(),
11544
+ ...makeThemeProps(),
11269
11545
  ...makeVariantProps({
11270
11546
  variant: 'elevated'
11271
11547
  })
@@ -11326,8 +11602,8 @@ const VCard = genericComponent()({
11326
11602
  'v-card--flat': props.flat,
11327
11603
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11328
11604
  'v-card--link': isClickable.value
11329
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
11330
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
11605
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11606
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11331
11607
  "href": link.href.value,
11332
11608
  "onClick": isClickable.value && link.navigate,
11333
11609
  "tabindex": props.disabled ? -1 : undefined
@@ -11523,6 +11799,7 @@ const makeVWindowProps = propsFactory({
11523
11799
  mandatory: {
11524
11800
  default: 'force'
11525
11801
  },
11802
+ ...makeComponentProps(),
11526
11803
  ...makeTagProps(),
11527
11804
  ...makeThemeProps()
11528
11805
  }, 'v-window');
@@ -11638,7 +11915,8 @@ const VWindow = genericComponent()({
11638
11915
  "ref": rootRef,
11639
11916
  "class": ['v-window', {
11640
11917
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11641
- }, themeClasses.value]
11918
+ }, themeClasses.value, props.class],
11919
+ "style": props.style
11642
11920
  }, {
11643
11921
  default: () => [createVNode("div", {
11644
11922
  "class": "v-window__container",
@@ -11723,10 +12001,10 @@ const VCarousel = genericComponent()({
11723
12001
  "class": ['v-carousel', {
11724
12002
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11725
12003
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11726
- }],
11727
- "style": {
12004
+ }, props.class],
12005
+ "style": [{
11728
12006
  height: convertToUnit(props.height)
11729
- },
12007
+ }, props.style],
11730
12008
  "continuous": true,
11731
12009
  "mandatory": "force",
11732
12010
  "showArrows": props.showArrows
@@ -11792,6 +12070,7 @@ const VWindowItem = genericComponent()({
11792
12070
  type: [Boolean, String],
11793
12071
  default: undefined
11794
12072
  },
12073
+ ...makeComponentProps(),
11795
12074
  ...makeGroupItemProps(),
11796
12075
  ...makeLazyProps()
11797
12076
  },
@@ -11878,7 +12157,8 @@ const VWindowItem = genericComponent()({
11878
12157
  "disabled": !isBooted.value
11879
12158
  }, {
11880
12159
  default: () => [withDirectives(createVNode("div", {
11881
- "class": ['v-window-item', groupItem.selectedClass.value]
12160
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12161
+ "style": props.style
11882
12162
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
11883
12163
  }));
11884
12164
  return {};
@@ -11891,7 +12171,8 @@ const VCarouselItem = genericComponent()({
11891
12171
  name: 'VCarouselItem',
11892
12172
  inheritAttrs: false,
11893
12173
  props: {
11894
- value: null
12174
+ value: null,
12175
+ ...makeComponentProps()
11895
12176
  },
11896
12177
  setup(props, _ref) {
11897
12178
  let {
@@ -11899,7 +12180,8 @@ const VCarouselItem = genericComponent()({
11899
12180
  attrs
11900
12181
  } = _ref;
11901
12182
  useRender(() => createVNode(VWindowItem, {
11902
- "class": "v-carousel-item",
12183
+ "class": ['v-carousel-item', props.class],
12184
+ "style": props.style,
11903
12185
  "value": props.value
11904
12186
  }, {
11905
12187
  default: () => [createVNode(VImg, attrs, slots)]
@@ -11912,6 +12194,7 @@ const VCode = createSimpleFunctional('v-code');
11912
12194
  const makeVSheetProps = propsFactory({
11913
12195
  color: String,
11914
12196
  ...makeBorderProps(),
12197
+ ...makeComponentProps(),
11915
12198
  ...makeDimensionProps(),
11916
12199
  ...makeElevationProps(),
11917
12200
  ...makeLocationProps(),
@@ -11955,8 +12238,8 @@ const VSheet = genericComponent()({
11955
12238
  roundedClasses
11956
12239
  } = useRounded(props);
11957
12240
  useRender(() => createVNode(props.tag, {
11958
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
11959
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
12241
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12242
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
11960
12243
  }, slots));
11961
12244
  return {};
11962
12245
  }
@@ -11982,7 +12265,8 @@ const VColorPickerCanvas = defineComponent({
11982
12265
  width: {
11983
12266
  type: [Number, String],
11984
12267
  default: 300
11985
- }
12268
+ },
12269
+ ...makeComponentProps()
11986
12270
  },
11987
12271
  emits: {
11988
12272
  'update:color': color => true,
@@ -12127,7 +12411,8 @@ const VColorPickerCanvas = defineComponent({
12127
12411
  onMounted(() => updateCanvas());
12128
12412
  useRender(() => createVNode("div", {
12129
12413
  "ref": resizeRef,
12130
- "class": "v-color-picker-canvas",
12414
+ "class": ['v-color-picker-canvas', props.class],
12415
+ "style": props.style,
12131
12416
  "onClick": handleClick,
12132
12417
  "onMousedown": handleMouseDown,
12133
12418
  "onTouchstart": handleMouseDown
@@ -12360,7 +12645,8 @@ const VColorPickerEdit = defineComponent({
12360
12645
  type: Array,
12361
12646
  default: () => Object.keys(modes),
12362
12647
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12363
- }
12648
+ },
12649
+ ...makeComponentProps()
12364
12650
  },
12365
12651
  emits: {
12366
12652
  'update:color': color => true,
@@ -12400,7 +12686,8 @@ const VColorPickerEdit = defineComponent({
12400
12686
  });
12401
12687
  });
12402
12688
  useRender(() => createVNode("div", {
12403
- "class": "v-color-picker-edit"
12689
+ "class": ['v-color-picker-edit', props.class],
12690
+ "style": props.style
12404
12691
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12405
12692
  "icon": "$unfold",
12406
12693
  "size": "x-small",
@@ -12484,11 +12771,33 @@ const makeSliderProps = propsFactory({
12484
12771
  elevation: 2
12485
12772
  })
12486
12773
  }, 'slider');
12774
+ const useSteps = props => {
12775
+ const min = computed(() => parseFloat(props.min));
12776
+ const max = computed(() => parseFloat(props.max));
12777
+ const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12778
+ const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12779
+ function roundValue(value) {
12780
+ if (step.value <= 0) return value;
12781
+ const clamped = clamp(value, min.value, max.value);
12782
+ const offset = min.value % step.value;
12783
+ const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
12784
+ return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
12785
+ }
12786
+ return {
12787
+ min,
12788
+ max,
12789
+ step,
12790
+ decimals,
12791
+ roundValue
12792
+ };
12793
+ };
12487
12794
  const useSlider = _ref => {
12488
12795
  let {
12489
12796
  props,
12490
- handleSliderMouseUp,
12491
- handleMouseMove,
12797
+ steps,
12798
+ onSliderStart,
12799
+ onSliderMove,
12800
+ onSliderEnd,
12492
12801
  getActiveThumb
12493
12802
  } = _ref;
12494
12803
  const {
@@ -12502,10 +12811,13 @@ const useSlider = _ref => {
12502
12811
  }
12503
12812
  return hd;
12504
12813
  });
12505
- const min = computed(() => parseFloat(props.min));
12506
- const max = computed(() => parseFloat(props.max));
12507
- const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12508
- const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12814
+ const {
12815
+ min,
12816
+ max,
12817
+ step,
12818
+ decimals,
12819
+ roundValue
12820
+ } = steps;
12509
12821
  const thumbSize = computed(() => parseInt(props.thumbSize, 10));
12510
12822
  const tickSize = computed(() => parseInt(props.tickSize, 10));
12511
12823
  const trackSize = computed(() => parseInt(props.trackSize, 10));
@@ -12519,13 +12831,6 @@ const useSlider = _ref => {
12519
12831
  const startOffset = ref(0);
12520
12832
  const trackContainerRef = ref();
12521
12833
  const activeThumbRef = ref();
12522
- function roundValue(value) {
12523
- if (step.value <= 0) return value;
12524
- const clamped = clamp(value, min.value, max.value);
12525
- const offset = min.value % step.value;
12526
- const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
12527
- return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
12528
- }
12529
12834
  function parseMouseMove(e) {
12530
12835
  const vertical = props.direction === 'vertical';
12531
12836
  const start = vertical ? 'top' : 'left';
@@ -12542,14 +12847,11 @@ const useSlider = _ref => {
12542
12847
  if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
12543
12848
  return roundValue(min.value + clickPos * (max.value - min.value));
12544
12849
  }
12545
- let thumbMoved = false;
12546
12850
  const handleStop = e => {
12547
- if (!thumbMoved) {
12548
- startOffset.value = 0;
12549
- handleSliderMouseUp(parseMouseMove(e));
12550
- }
12851
+ onSliderEnd({
12852
+ value: parseMouseMove(e)
12853
+ });
12551
12854
  mousePressed.value = false;
12552
- thumbMoved = false;
12553
12855
  startOffset.value = 0;
12554
12856
  };
12555
12857
  const handleStart = e => {
@@ -12558,20 +12860,25 @@ const useSlider = _ref => {
12558
12860
  activeThumbRef.value.focus();
12559
12861
  mousePressed.value = true;
12560
12862
  if (activeThumbRef.value.contains(e.target)) {
12561
- thumbMoved = true;
12562
12863
  startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
12563
12864
  } else {
12564
12865
  startOffset.value = 0;
12565
- handleMouseMove(parseMouseMove(e));
12866
+ onSliderMove({
12867
+ value: parseMouseMove(e)
12868
+ });
12566
12869
  }
12870
+ onSliderStart({
12871
+ value: parseMouseMove(e)
12872
+ });
12567
12873
  };
12568
12874
  const moveListenerOptions = {
12569
12875
  passive: true,
12570
12876
  capture: true
12571
12877
  };
12572
12878
  function onMouseMove(e) {
12573
- thumbMoved = true;
12574
- handleMouseMove(parseMouseMove(e));
12879
+ onSliderMove({
12880
+ value: parseMouseMove(e)
12881
+ });
12575
12882
  }
12576
12883
  function onSliderMouseUp(e) {
12577
12884
  e.stopPropagation();
@@ -12699,7 +13006,8 @@ const VSliderThumb = genericComponent()({
12699
13006
  ripple: {
12700
13007
  type: Boolean,
12701
13008
  default: true
12702
- }
13009
+ },
13010
+ ...makeComponentProps()
12703
13011
  },
12704
13012
  emits: {
12705
13013
  'update:modelValue': v => true
@@ -12777,11 +13085,11 @@ const VSliderThumb = genericComponent()({
12777
13085
  "class": ['v-slider-thumb', {
12778
13086
  'v-slider-thumb--focused': props.focused,
12779
13087
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12780
- }],
12781
- "style": {
13088
+ }, props.class],
13089
+ "style": [{
12782
13090
  '--v-slider-thumb-position': positionPercentage,
12783
13091
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12784
- },
13092
+ }, props.style],
12785
13093
  "role": "slider",
12786
13094
  "tabindex": disabled.value ? -1 : 0,
12787
13095
  "aria-valuemin": props.min,
@@ -12827,7 +13135,8 @@ const VSliderTrack = genericComponent()({
12827
13135
  stop: {
12828
13136
  type: Number,
12829
13137
  required: true
12830
- }
13138
+ },
13139
+ ...makeComponentProps()
12831
13140
  },
12832
13141
  emits: {},
12833
13142
  setup(props, _ref) {
@@ -12902,12 +13211,12 @@ const VSliderTrack = genericComponent()({
12902
13211
  });
12903
13212
  useRender(() => {
12904
13213
  return createVNode("div", {
12905
- "class": ['v-slider-track', roundedClasses.value],
12906
- "style": {
13214
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13215
+ "style": [{
12907
13216
  '--v-slider-track-size': convertToUnit(trackSize.value),
12908
13217
  '--v-slider-tick-size': convertToUnit(tickSize.value),
12909
13218
  direction: !vertical.value ? horizontalDirection.value : undefined
12910
- }
13219
+ }, props.style]
12911
13220
  }, [createVNode("div", {
12912
13221
  "class": ['v-slider-track__background', trackColorClasses.value, {
12913
13222
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -12947,13 +13256,21 @@ const VSlider = genericComponent()({
12947
13256
  },
12948
13257
  emits: {
12949
13258
  'update:focused': value => true,
12950
- 'update:modelValue': v => true
13259
+ 'update:modelValue': v => true,
13260
+ start: value => true,
13261
+ end: value => true
12951
13262
  },
12952
13263
  setup(props, _ref) {
12953
13264
  let {
12954
- slots
13265
+ slots,
13266
+ emit
12955
13267
  } = _ref;
12956
13268
  const thumbContainerRef = ref();
13269
+ const steps = useSteps(props);
13270
+ const model = useProxiedModel(props, 'modelValue', undefined, v => {
13271
+ const value = typeof v === 'string' ? parseFloat(v) : v == null ? steps.min.value : v;
13272
+ return steps.roundValue(value);
13273
+ });
12957
13274
  const {
12958
13275
  min,
12959
13276
  max,
@@ -12967,16 +13284,26 @@ const VSlider = genericComponent()({
12967
13284
  readonly
12968
13285
  } = useSlider({
12969
13286
  props,
12970
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
12971
- handleSliderMouseUp: newValue => model.value = roundValue(newValue),
12972
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
12973
- handleMouseMove: newValue => model.value = roundValue(newValue),
13287
+ steps,
13288
+ onSliderStart: () => {
13289
+ emit('start', model.value);
13290
+ },
13291
+ onSliderEnd: _ref2 => {
13292
+ let {
13293
+ value
13294
+ } = _ref2;
13295
+ const roundedValue = roundValue(value);
13296
+ model.value = roundedValue;
13297
+ emit('end', roundedValue);
13298
+ },
13299
+ onSliderMove: _ref3 => {
13300
+ let {
13301
+ value
13302
+ } = _ref3;
13303
+ return model.value = roundValue(value);
13304
+ },
12974
13305
  getActiveThumb: () => thumbContainerRef.value?.$el
12975
13306
  });
12976
- const model = useProxiedModel(props, 'modelValue', undefined, v => {
12977
- const value = typeof v === 'string' ? parseFloat(v) : v == null ? min.value : v;
12978
- return roundValue(value);
12979
- });
12980
13307
  const {
12981
13308
  isFocused,
12982
13309
  focus,
@@ -12992,7 +13319,8 @@ const VSlider = genericComponent()({
12992
13319
  'v-slider--focused': isFocused.value,
12993
13320
  'v-slider--pressed': mousePressed.value,
12994
13321
  'v-slider--disabled': props.disabled
12995
- }]
13322
+ }, props.class],
13323
+ "style": props.style
12996
13324
  }, inputProps, {
12997
13325
  "focused": isFocused.value
12998
13326
  }), {
@@ -13002,11 +13330,11 @@ const VSlider = genericComponent()({
13002
13330
  "class": "v-slider__label",
13003
13331
  "text": props.label
13004
13332
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
13005
- default: _ref2 => {
13333
+ default: _ref4 => {
13006
13334
  let {
13007
13335
  id,
13008
13336
  messagesId
13009
- } = _ref2;
13337
+ } = _ref4;
13010
13338
  return createVNode("div", {
13011
13339
  "class": "v-slider__container",
13012
13340
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
@@ -13055,7 +13383,8 @@ const VColorPickerPreview = defineComponent({
13055
13383
  type: Object
13056
13384
  },
13057
13385
  disabled: Boolean,
13058
- hideAlpha: Boolean
13386
+ hideAlpha: Boolean,
13387
+ ...makeComponentProps()
13059
13388
  },
13060
13389
  emits: {
13061
13390
  'update:color': color => true
@@ -13067,7 +13396,8 @@ const VColorPickerPreview = defineComponent({
13067
13396
  useRender(() => createVNode("div", {
13068
13397
  "class": ['v-color-picker-preview', {
13069
13398
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13070
- }]
13399
+ }, props.class],
13400
+ "style": props.style
13071
13401
  }, [createVNode("div", {
13072
13402
  "class": "v-color-picker-preview__dot"
13073
13403
  }, [createVNode("div", {
@@ -13448,7 +13778,8 @@ const VColorPickerSwatches = defineComponent({
13448
13778
  },
13449
13779
  disabled: Boolean,
13450
13780
  color: Object,
13451
- maxHeight: [Number, String]
13781
+ maxHeight: [Number, String],
13782
+ ...makeComponentProps()
13452
13783
  },
13453
13784
  emits: {
13454
13785
  'update:color': color => true
@@ -13458,10 +13789,10 @@ const VColorPickerSwatches = defineComponent({
13458
13789
  emit
13459
13790
  } = _ref;
13460
13791
  useRender(() => createVNode("div", {
13461
- "class": "v-color-picker-swatches",
13462
- "style": {
13792
+ "class": ['v-color-picker-swatches', props.class],
13793
+ "style": [{
13463
13794
  maxHeight: convertToUnit(props.maxHeight)
13464
- }
13795
+ }, props.style]
13465
13796
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13466
13797
  "class": "v-color-picker-swatches__swatch"
13467
13798
  }, [swatch.map(color => {
@@ -13565,13 +13896,13 @@ const VColorPicker = defineComponent({
13565
13896
  "rounded": props.rounded,
13566
13897
  "elevation": props.elevation,
13567
13898
  "theme": props.theme,
13568
- "class": ['v-color-picker'],
13569
- "style": {
13899
+ "class": ['v-color-picker', props.class],
13900
+ "style": [{
13570
13901
  '--v-color-picker-color-hsv': HSVtoCSS({
13571
13902
  ...(currentColor.value ?? nullColor),
13572
13903
  a: 1
13573
13904
  })
13574
- }
13905
+ }, props.style]
13575
13906
  }, sheetProps, {
13576
13907
  "maxWidth": props.width
13577
13908
  }), {
@@ -13882,7 +14213,8 @@ const VCombobox = genericComponent()({
13882
14213
  'v-combobox--chips': !!props.chips,
13883
14214
  'v-combobox--selecting-index': selectionIndex.value > -1,
13884
14215
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
13885
- }],
14216
+ }, props.class],
14217
+ "style": props.style,
13886
14218
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
13887
14219
  "readonly": props.readonly,
13888
14220
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14080,7 +14412,8 @@ const VDialog = genericComponent()({
14080
14412
  "class": ['v-dialog', {
14081
14413
  'v-dialog--fullscreen': props.fullscreen,
14082
14414
  'v-dialog--scrollable': props.scrollable
14083
- }]
14415
+ }, props.class],
14416
+ "style": props.style
14084
14417
  }, overlayProps, {
14085
14418
  "modelValue": isActive.value,
14086
14419
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14119,6 +14452,7 @@ const VExpansionPanels = genericComponent()({
14119
14452
  validator: v => allowedVariants.includes(v)
14120
14453
  },
14121
14454
  readonly: Boolean,
14455
+ ...makeComponentProps(),
14122
14456
  ...makeGroupProps(),
14123
14457
  ...makeTagProps(),
14124
14458
  ...makeThemeProps()
@@ -14144,7 +14478,8 @@ const VExpansionPanels = genericComponent()({
14144
14478
  }
14145
14479
  });
14146
14480
  useRender(() => createVNode(props.tag, {
14147
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14481
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14482
+ "style": props.style
14148
14483
  }, slots));
14149
14484
  return {};
14150
14485
  }
@@ -14173,6 +14508,7 @@ const VExpansionPanelTitle = genericComponent()({
14173
14508
  Ripple
14174
14509
  },
14175
14510
  props: {
14511
+ ...makeComponentProps(),
14176
14512
  ...makeVExpansionPanelTitleProps()
14177
14513
  },
14178
14514
  setup(props, _ref) {
@@ -14195,8 +14531,8 @@ const VExpansionPanelTitle = genericComponent()({
14195
14531
  useRender(() => withDirectives(createVNode("button", {
14196
14532
  "class": ['v-expansion-panel-title', {
14197
14533
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14198
- }, backgroundColorClasses.value],
14199
- "style": backgroundColorStyles.value,
14534
+ }, backgroundColorClasses.value, props.class],
14535
+ "style": [backgroundColorStyles.value, props.style],
14200
14536
  "type": "button",
14201
14537
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14202
14538
  "disabled": expansionPanel.disabled.value,
@@ -14216,6 +14552,7 @@ const VExpansionPanelTitle = genericComponent()({
14216
14552
  const VExpansionPanelText = genericComponent()({
14217
14553
  name: 'VExpansionPanelText',
14218
14554
  props: {
14555
+ ...makeComponentProps(),
14219
14556
  ...makeLazyProps()
14220
14557
  },
14221
14558
  setup(props, _ref) {
@@ -14232,7 +14569,8 @@ const VExpansionPanelText = genericComponent()({
14232
14569
  "onAfterLeave": onAfterLeave
14233
14570
  }, {
14234
14571
  default: () => [withDirectives(createVNode("div", {
14235
- "class": "v-expansion-panel-text"
14572
+ "class": ['v-expansion-panel-text', props.class],
14573
+ "style": props.style
14236
14574
  }, [slots.default && hasContent.value && createVNode("div", {
14237
14575
  "class": "v-expansion-panel-text__wrapper"
14238
14576
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14247,6 +14585,7 @@ const VExpansionPanel = genericComponent()({
14247
14585
  title: String,
14248
14586
  text: String,
14249
14587
  bgColor: String,
14588
+ ...makeComponentProps(),
14250
14589
  ...makeElevationProps(),
14251
14590
  ...makeGroupItemProps(),
14252
14591
  ...makeLazyProps(),
@@ -14295,8 +14634,8 @@ const VExpansionPanel = genericComponent()({
14295
14634
  'v-expansion-panel--before-active': isBeforeSelected.value,
14296
14635
  'v-expansion-panel--after-active': isAfterSelected.value,
14297
14636
  'v-expansion-panel--disabled': isDisabled.value
14298
- }, roundedClasses.value, backgroundColorClasses.value],
14299
- "style": backgroundColorStyles.value,
14637
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14638
+ "style": [backgroundColorStyles.value, props.style],
14300
14639
  "aria-expanded": groupItem.isSelected.value
14301
14640
  }, {
14302
14641
  default: () => [createVNode("div", {
@@ -14446,7 +14785,8 @@ const VFileInput = genericComponent()({
14446
14785
  "ref": vInputRef,
14447
14786
  "modelValue": model.value,
14448
14787
  "onUpdate:modelValue": $event => model.value = $event,
14449
- "class": "v-file-input",
14788
+ "class": ['v-file-input', props.class],
14789
+ "style": props.style,
14450
14790
  "onClick:prepend": onClickPrepend
14451
14791
  }, rootAttrs, inputProps, {
14452
14792
  "focused": isFocused.value
@@ -14538,6 +14878,7 @@ const VFooter = genericComponent()({
14538
14878
  default: 'auto'
14539
14879
  },
14540
14880
  ...makeBorderProps(),
14881
+ ...makeComponentProps(),
14541
14882
  ...makeElevationProps(),
14542
14883
  ...makeLayoutItemProps(),
14543
14884
  ...makeRoundedProps(),
@@ -14587,8 +14928,8 @@ const VFooter = genericComponent()({
14587
14928
  });
14588
14929
  useRender(() => createVNode(props.tag, {
14589
14930
  "ref": resizeRef,
14590
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14591
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14931
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14932
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14592
14933
  }, slots));
14593
14934
  return {};
14594
14935
  }
@@ -14599,6 +14940,7 @@ const VFooter = genericComponent()({
14599
14940
  const VForm = genericComponent()({
14600
14941
  name: 'VForm',
14601
14942
  props: {
14943
+ ...makeComponentProps(),
14602
14944
  ...makeFormProps()
14603
14945
  },
14604
14946
  emits: {
@@ -14637,7 +14979,8 @@ const VForm = genericComponent()({
14637
14979
  }
14638
14980
  useRender(() => createVNode("form", {
14639
14981
  "ref": formRef,
14640
- "class": "v-form",
14982
+ "class": ['v-form', props.class],
14983
+ "style": props.style,
14641
14984
  "novalidate": true,
14642
14985
  "onReset": onReset,
14643
14986
  "onSubmit": onSubmit
@@ -14653,6 +14996,7 @@ const VContainer = genericComponent()({
14653
14996
  type: Boolean,
14654
14997
  default: false
14655
14998
  },
14999
+ ...makeComponentProps(),
14656
15000
  ...makeTagProps()
14657
15001
  },
14658
15002
  setup(props, _ref) {
@@ -14662,7 +15006,8 @@ const VContainer = genericComponent()({
14662
15006
  useRender(() => createVNode(props.tag, {
14663
15007
  "class": ['v-container', {
14664
15008
  'v-container--fluid': props.fluid
14665
- }]
15009
+ }, props.class],
15010
+ "style": props.style
14666
15011
  }, slots));
14667
15012
  return {};
14668
15013
  }
@@ -14753,6 +15098,7 @@ const VCol = genericComponent()({
14753
15098
  default: null,
14754
15099
  validator: str => ALIGN_SELF_VALUES.includes(str)
14755
15100
  },
15101
+ ...makeComponentProps(),
14756
15102
  ...makeTagProps()
14757
15103
  },
14758
15104
  setup(props, _ref) {
@@ -14783,7 +15129,8 @@ const VCol = genericComponent()({
14783
15129
  return classList;
14784
15130
  });
14785
15131
  return () => h(props.tag, {
14786
- class: classes.value
15132
+ class: [classes.value, props.class],
15133
+ style: props.style
14787
15134
  }, slots.default?.());
14788
15135
  }
14789
15136
  });
@@ -14869,6 +15216,7 @@ const VRow = genericComponent()({
14869
15216
  validator: alignContentValidator
14870
15217
  },
14871
15218
  ...alignContentProps,
15219
+ ...makeComponentProps(),
14872
15220
  ...makeTagProps()
14873
15221
  },
14874
15222
  setup(props, _ref) {
@@ -14897,7 +15245,8 @@ const VRow = genericComponent()({
14897
15245
  return classList;
14898
15246
  });
14899
15247
  return () => h(props.tag, {
14900
- class: ['v-row', classes.value]
15248
+ class: ['v-row', classes.value, props.class],
15249
+ style: props.style
14901
15250
  }, slots.default?.());
14902
15251
  }
14903
15252
  });
@@ -14941,6 +15290,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
14941
15290
  const VItemGroup = genericComponent()({
14942
15291
  name: 'VItemGroup',
14943
15292
  props: {
15293
+ ...makeComponentProps(),
14944
15294
  ...makeGroupProps({
14945
15295
  selectedClass: 'v-item--selected'
14946
15296
  }),
@@ -14965,7 +15315,8 @@ const VItemGroup = genericComponent()({
14965
15315
  selected
14966
15316
  } = useGroup(props, VItemGroupSymbol);
14967
15317
  return () => createVNode(props.tag, {
14968
- "class": ['v-item-group', themeClasses.value]
15318
+ "class": ['v-item-group', themeClasses.value, props.class],
15319
+ "style": props.style
14969
15320
  }, {
14970
15321
  default: () => [slots.default?.({
14971
15322
  isSelected,
@@ -15015,7 +15366,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15015
15366
 
15016
15367
  const VLayout = genericComponent()({
15017
15368
  name: 'VLayout',
15018
- props: makeLayoutProps(),
15369
+ props: {
15370
+ ...makeComponentProps(),
15371
+ ...makeLayoutProps()
15372
+ },
15019
15373
  setup(props, _ref) {
15020
15374
  let {
15021
15375
  slots
@@ -15029,8 +15383,8 @@ const VLayout = genericComponent()({
15029
15383
  } = createLayout(props);
15030
15384
  useRender(() => createVNode("div", {
15031
15385
  "ref": layoutRef,
15032
- "class": layoutClasses.value,
15033
- "style": layoutStyles.value
15386
+ "class": [layoutClasses.value, props.class],
15387
+ "style": [layoutStyles.value, props.style]
15034
15388
  }, [slots.default?.()]));
15035
15389
  return {
15036
15390
  getLayoutItem,
@@ -15053,6 +15407,7 @@ const VLayoutItem = genericComponent()({
15053
15407
  default: 300
15054
15408
  },
15055
15409
  modelValue: Boolean,
15410
+ ...makeComponentProps(),
15056
15411
  ...makeLayoutItemProps()
15057
15412
  },
15058
15413
  setup(props, _ref) {
@@ -15071,8 +15426,8 @@ const VLayoutItem = genericComponent()({
15071
15426
  absolute: toRef(props, 'absolute')
15072
15427
  });
15073
15428
  return () => createVNode("div", {
15074
- "class": ['v-layout-item'],
15075
- "style": layoutItemStyles.value
15429
+ "class": ['v-layout-item', props.class],
15430
+ "style": [layoutItemStyles.value, props.style]
15076
15431
  }, [slots.default?.()]);
15077
15432
  }
15078
15433
  });
@@ -15096,6 +15451,7 @@ const VLazy = genericComponent()({
15096
15451
  threshold: undefined
15097
15452
  })
15098
15453
  },
15454
+ ...makeComponentProps(),
15099
15455
  ...makeDimensionProps(),
15100
15456
  ...makeTagProps(),
15101
15457
  ...makeTransitionProps({
@@ -15118,8 +15474,8 @@ const VLazy = genericComponent()({
15118
15474
  isActive.value = isIntersecting;
15119
15475
  }
15120
15476
  useRender(() => withDirectives(createVNode(props.tag, {
15121
- "class": "v-lazy",
15122
- "style": dimensionStyles.value
15477
+ "class": ['v-lazy', props.class],
15478
+ "style": [dimensionStyles.value, props.style]
15123
15479
  }, {
15124
15480
  default: () => [isActive.value && createVNode(MaybeTransition, {
15125
15481
  "transition": props.transition,
@@ -15144,7 +15500,8 @@ const VLocaleProvider = genericComponent()({
15144
15500
  rtl: {
15145
15501
  type: Boolean,
15146
15502
  default: undefined
15147
- }
15503
+ },
15504
+ ...makeComponentProps()
15148
15505
  },
15149
15506
  setup(props, _ref) {
15150
15507
  let {
@@ -15154,7 +15511,8 @@ const VLocaleProvider = genericComponent()({
15154
15511
  rtlClasses
15155
15512
  } = provideLocale(props);
15156
15513
  useRender(() => createVNode("div", {
15157
- "class": ['v-locale-provider', rtlClasses.value]
15514
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15515
+ "style": props.style
15158
15516
  }, [slots.default?.()]));
15159
15517
  return {};
15160
15518
  }
@@ -15164,6 +15522,7 @@ const VMain = genericComponent()({
15164
15522
  name: 'VMain',
15165
15523
  props: {
15166
15524
  scrollable: Boolean,
15525
+ ...makeComponentProps(),
15167
15526
  ...makeTagProps({
15168
15527
  tag: 'main'
15169
15528
  })
@@ -15181,8 +15540,8 @@ const VMain = genericComponent()({
15181
15540
  useRender(() => createVNode(props.tag, {
15182
15541
  "class": ['v-main', {
15183
15542
  'v-main--scrollable': props.scrollable
15184
- }],
15185
- "style": [mainStyles.value, ssrBootStyles.value]
15543
+ }, props.class],
15544
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15186
15545
  }, {
15187
15546
  default: () => [props.scrollable ? createVNode("div", {
15188
15547
  "class": "v-main__scroller"
@@ -15528,6 +15887,7 @@ const VNavigationDrawer = genericComponent()({
15528
15887
  },
15529
15888
  sticky: Boolean,
15530
15889
  ...makeBorderProps(),
15890
+ ...makeComponentProps(),
15531
15891
  ...makeElevationProps(),
15532
15892
  ...makeLayoutItemProps(),
15533
15893
  ...makeRoundedProps(),
@@ -15679,8 +16039,8 @@ const VNavigationDrawer = genericComponent()({
15679
16039
  'v-navigation-drawer--temporary': isTemporary.value,
15680
16040
  'v-navigation-drawer--active': isActive.value,
15681
16041
  'v-navigation-drawer--sticky': isSticky.value
15682
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
15683
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value]
16042
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16043
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
15684
16044
  }, attrs), {
15685
16045
  default: () => [hasImage && createVNode("div", {
15686
16046
  "key": "image",
@@ -15809,6 +16169,7 @@ const VPagination = genericComponent()({
15809
16169
  },
15810
16170
  showFirstLastPage: Boolean,
15811
16171
  ...makeBorderProps(),
16172
+ ...makeComponentProps(),
15812
16173
  ...makeDensityProps(),
15813
16174
  ...makeElevationProps(),
15814
16175
  ...makeRoundedProps(),
@@ -16005,7 +16366,8 @@ const VPagination = genericComponent()({
16005
16366
  }
16006
16367
  useRender(() => createVNode(props.tag, {
16007
16368
  "ref": resizeRef,
16008
- "class": ['v-pagination', themeClasses.value],
16369
+ "class": ['v-pagination', themeClasses.value, props.class],
16370
+ "style": props.style,
16009
16371
  "role": "navigation",
16010
16372
  "aria-label": t(props.ariaLabel),
16011
16373
  "onKeydown": onKeydown,
@@ -16064,7 +16426,8 @@ const VParallax = genericComponent()({
16064
16426
  scale: {
16065
16427
  type: [Number, String],
16066
16428
  default: 0.5
16067
- }
16429
+ },
16430
+ ...makeComponentProps()
16068
16431
  },
16069
16432
  setup(props, _ref) {
16070
16433
  let {
@@ -16126,7 +16489,8 @@ const VParallax = genericComponent()({
16126
16489
  useRender(() => createVNode(VImg, {
16127
16490
  "class": ['v-parallax', {
16128
16491
  'v-parallax--active': isIntersecting.value
16129
- }],
16492
+ }, props.class],
16493
+ "style": props.style,
16130
16494
  "ref": root,
16131
16495
  "cover": true,
16132
16496
  "onLoadstart": onScroll,
@@ -16151,7 +16515,8 @@ const VRadio = genericComponent()({
16151
16515
  slots
16152
16516
  } = _ref;
16153
16517
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16154
- "class": "v-radio",
16518
+ "class": ['v-radio', props.class],
16519
+ "style": props.style,
16155
16520
  "type": "radio"
16156
16521
  }), slots));
16157
16522
  return {};
@@ -16205,7 +16570,8 @@ const VRadioGroup = genericComponent()({
16205
16570
  }
16206
16571
  }) : props.label;
16207
16572
  return createVNode(VInput, mergeProps({
16208
- "class": "v-radio-group"
16573
+ "class": ['v-radio-group', props.class],
16574
+ "style": props.style
16209
16575
  }, inputAttrs, inputProps, {
16210
16576
  "modelValue": model.value,
16211
16577
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16261,11 +16627,14 @@ const VRangeSlider = genericComponent()({
16261
16627
  },
16262
16628
  emits: {
16263
16629
  'update:focused': value => true,
16264
- 'update:modelValue': value => true
16630
+ 'update:modelValue': value => true,
16631
+ end: value => true,
16632
+ start: value => true
16265
16633
  },
16266
16634
  setup(props, _ref) {
16267
16635
  let {
16268
- slots
16636
+ slots,
16637
+ emit
16269
16638
  } = _ref;
16270
16639
  const startThumbRef = ref();
16271
16640
  const stopThumbRef = ref();
@@ -16278,6 +16647,11 @@ const VRangeSlider = genericComponent()({
16278
16647
  const b = Math.abs(stopOffset);
16279
16648
  return a < b || a === b && startOffset < 0 ? startThumbRef.value.$el : stopThumbRef.value.$el;
16280
16649
  }
16650
+ const steps = useSteps(props);
16651
+ const model = useProxiedModel(props, 'modelValue', undefined, arr => {
16652
+ if (!arr?.length) return [0, 0];
16653
+ return arr.map(value => steps.roundValue(value));
16654
+ });
16281
16655
  const {
16282
16656
  activeThumbRef,
16283
16657
  hasLabels,
@@ -16287,34 +16661,37 @@ const VRangeSlider = genericComponent()({
16287
16661
  onSliderMousedown,
16288
16662
  onSliderTouchstart,
16289
16663
  position,
16290
- roundValue,
16291
16664
  trackContainerRef
16292
16665
  } = useSlider({
16293
- /* eslint-disable @typescript-eslint/no-use-before-define */
16294
16666
  props,
16295
- handleSliderMouseUp: newValue => {
16296
- model.value = activeThumbRef.value === startThumbRef.value?.$el ? [newValue, model.value[1]] : [model.value[0], newValue];
16667
+ steps,
16668
+ onSliderStart: () => {
16669
+ emit('start', model.value);
16670
+ },
16671
+ onSliderEnd: _ref2 => {
16672
+ let {
16673
+ value
16674
+ } = _ref2;
16675
+ const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];
16676
+ model.value = newValue;
16677
+ emit('end', newValue);
16297
16678
  },
16298
- handleMouseMove: newValue => {
16679
+ onSliderMove: _ref3 => {
16680
+ let {
16681
+ value
16682
+ } = _ref3;
16299
16683
  const [start, stop] = model.value;
16300
16684
  if (!props.strict && start === stop && start !== min.value) {
16301
- activeThumbRef.value = newValue > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;
16685
+ activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;
16302
16686
  activeThumbRef.value?.focus();
16303
16687
  }
16304
16688
  if (activeThumbRef.value === startThumbRef.value?.$el) {
16305
- model.value = [Math.min(newValue, stop), stop];
16689
+ model.value = [Math.min(value, stop), stop];
16306
16690
  } else {
16307
- model.value = [start, Math.max(start, newValue)];
16691
+ model.value = [start, Math.max(start, value)];
16308
16692
  }
16309
16693
  },
16310
16694
  getActiveThumb
16311
- /* eslint-enable @typescript-eslint/no-use-before-define */
16312
- });
16313
-
16314
- const model = useProxiedModel(props, 'modelValue', undefined, arr => {
16315
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
16316
- if (!arr || !arr.length) return [0, 0];
16317
- return arr.map(value => roundValue(value));
16318
16695
  });
16319
16696
  const {
16320
16697
  isFocused,
@@ -16332,7 +16709,8 @@ const VRangeSlider = genericComponent()({
16332
16709
  'v-slider--focused': isFocused.value,
16333
16710
  'v-slider--pressed': mousePressed.value,
16334
16711
  'v-slider--disabled': props.disabled
16335
- }],
16712
+ }, props.class],
16713
+ "style": props.style,
16336
16714
  "ref": inputRef
16337
16715
  }, inputProps, {
16338
16716
  "focused": isFocused.value
@@ -16342,11 +16720,11 @@ const VRangeSlider = genericComponent()({
16342
16720
  "class": "v-slider__label",
16343
16721
  "text": props.label
16344
16722
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
16345
- default: _ref2 => {
16723
+ default: _ref4 => {
16346
16724
  let {
16347
16725
  id,
16348
16726
  messagesId
16349
- } = _ref2;
16727
+ } = _ref4;
16350
16728
  return createVNode("div", {
16351
16729
  "class": "v-slider__container",
16352
16730
  "onMousedown": onSliderMousedown,
@@ -16475,6 +16853,7 @@ const VRating = genericComponent()({
16475
16853
  validator: v => ['top', 'bottom'].includes(v)
16476
16854
  },
16477
16855
  ripple: Boolean,
16856
+ ...makeComponentProps(),
16478
16857
  ...makeDensityProps(),
16479
16858
  ...makeSizeProps(),
16480
16859
  ...makeTagProps(),
@@ -16498,9 +16877,6 @@ const VRating = genericComponent()({
16498
16877
  const range = computed(() => createRange(Number(props.length), 1));
16499
16878
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
16500
16879
  const hoverIndex = ref(-1);
16501
- const focusIndex = ref(-1);
16502
- const firstRef = ref();
16503
- let isClicking = false;
16504
16880
  const itemState = computed(() => increments.value.map(value => {
16505
16881
  const isHovering = props.hover && hoverIndex.value > -1;
16506
16882
  const isFilled = normalizedValue.value >= value;
@@ -16523,16 +16899,6 @@ const VRating = genericComponent()({
16523
16899
  function onMouseleave() {
16524
16900
  hoverIndex.value = -1;
16525
16901
  }
16526
- function onFocus() {
16527
- if (value === 0 && normalizedValue.value === 0) {
16528
- firstRef.value?.focus();
16529
- } else {
16530
- focusIndex.value = value;
16531
- }
16532
- }
16533
- function onBlur() {
16534
- if (!isClicking) focusIndex.value = -1;
16535
- }
16536
16902
  function onClick() {
16537
16903
  if (props.disabled || props.readonly) return;
16538
16904
  rating.value = normalizedValue.value === value && props.clearable ? 0 : value;
@@ -16540,17 +16906,9 @@ const VRating = genericComponent()({
16540
16906
  return {
16541
16907
  onMouseenter: props.hover ? onMouseenter : undefined,
16542
16908
  onMouseleave: props.hover ? onMouseleave : undefined,
16543
- onFocus,
16544
- onBlur,
16545
16909
  onClick
16546
16910
  };
16547
16911
  }));
16548
- function onMousedown() {
16549
- isClicking = true;
16550
- }
16551
- function onMouseup() {
16552
- isClicking = false;
16553
- }
16554
16912
  const name = computed(() => props.name ?? `v-rating-${getUid()}`);
16555
16913
  function VRatingItem(_ref2) {
16556
16914
  let {
@@ -16561,8 +16919,6 @@ const VRating = genericComponent()({
16561
16919
  const {
16562
16920
  onMouseenter,
16563
16921
  onMouseleave,
16564
- onFocus,
16565
- onBlur,
16566
16922
  onClick
16567
16923
  } = eventState.value[index + 1];
16568
16924
  const id = `${name.value}-${String(value).replace('.', '-')}`;
@@ -16573,7 +16929,6 @@ const VRating = genericComponent()({
16573
16929
  icon: itemState.value[index]?.icon,
16574
16930
  ripple: props.ripple,
16575
16931
  size: props.size,
16576
- tag: 'span',
16577
16932
  variant: 'plain'
16578
16933
  };
16579
16934
  return createVNode(Fragment, null, [createVNode("label", {
@@ -16582,17 +16937,17 @@ const VRating = genericComponent()({
16582
16937
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
16583
16938
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
16584
16939
  },
16585
- "onMousedown": onMousedown,
16586
- "onMouseup": onMouseup,
16587
16940
  "onMouseenter": onMouseenter,
16588
- "onMouseleave": onMouseleave
16941
+ "onMouseleave": onMouseleave,
16942
+ "onClick": onClick
16589
16943
  }, [createVNode("span", {
16590
16944
  "class": "v-rating__hidden"
16591
16945
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
16592
16946
  ...itemState.value[index],
16593
16947
  props: btnProps,
16594
16948
  value,
16595
- index
16949
+ index,
16950
+ rating: normalizedValue.value
16596
16951
  }) : createVNode(VBtn, btnProps, null)]), createVNode("input", {
16597
16952
  "class": "v-rating__hidden",
16598
16953
  "name": name.value,
@@ -16600,10 +16955,7 @@ const VRating = genericComponent()({
16600
16955
  "type": "radio",
16601
16956
  "value": value,
16602
16957
  "checked": normalizedValue.value === value,
16603
- "onClick": onClick,
16604
- "onFocus": onFocus,
16605
- "onBlur": onBlur,
16606
- "ref": index === 0 ? firstRef : undefined,
16958
+ "tabindex": -1,
16607
16959
  "readonly": props.readonly,
16608
16960
  "disabled": props.disabled
16609
16961
  }, null)]);
@@ -16619,7 +16971,8 @@ const VRating = genericComponent()({
16619
16971
  "class": ['v-rating', {
16620
16972
  'v-rating--hover': props.hover,
16621
16973
  'v-rating--readonly': props.readonly
16622
- }, themeClasses.value]
16974
+ }, themeClasses.value, props.class],
16975
+ "style": props.style
16623
16976
  }, {
16624
16977
  default: () => [createVNode(VRatingItem, {
16625
16978
  "value": 0,
@@ -16632,9 +16985,7 @@ const VRating = genericComponent()({
16632
16985
  index: i,
16633
16986
  label: props.itemLabels?.[i]
16634
16987
  }) : undefined, createVNode("div", {
16635
- "class": ['v-rating__item', {
16636
- 'v-rating__item--focused': Math.ceil(focusIndex.value) === value
16637
- }]
16988
+ "class": "v-rating__item"
16638
16989
  }, [props.halfIncrements ? createVNode(Fragment, null, [createVNode(VRatingItem, {
16639
16990
  "value": value - 0.5,
16640
16991
  "index": i * 2
@@ -16721,6 +17072,7 @@ const makeVSlideGroupProps = propsFactory({
16721
17072
  type: [Boolean, String],
16722
17073
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
16723
17074
  },
17075
+ ...makeComponentProps(),
16724
17076
  ...makeTagProps(),
16725
17077
  ...makeGroupProps({
16726
17078
  selectedClass: 'v-slide-group-item--active'
@@ -16961,7 +17313,8 @@ const VSlideGroup = genericComponent()({
16961
17313
  'v-slide-group--vertical': !isHorizontal.value,
16962
17314
  'v-slide-group--has-affixes': hasAffixes.value,
16963
17315
  'v-slide-group--is-overflowing': isOverflowing.value
16964
- }],
17316
+ }, props.class],
17317
+ "style": props.style,
16965
17318
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
16966
17319
  "onFocus": onFocus
16967
17320
  }, {
@@ -17111,7 +17464,8 @@ const VSnackbar = genericComponent()({
17111
17464
  'v-snackbar--active': isActive.value,
17112
17465
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17113
17466
  'v-snackbar--vertical': props.vertical
17114
- }, positionClasses.value]
17467
+ }, positionClasses.value, props.class],
17468
+ "style": props.style
17115
17469
  }, overlayProps, {
17116
17470
  "modelValue": isActive.value,
17117
17471
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17211,7 +17565,8 @@ const VSwitch = genericComponent()({
17211
17565
  'v-switch--inset': props.inset
17212
17566
  }, {
17213
17567
  'v-switch--indeterminate': indeterminate.value
17214
- }, loaderClasses.value]
17568
+ }, loaderClasses.value, props.class],
17569
+ "style": props.style
17215
17570
  }, inputAttrs, inputProps, {
17216
17571
  "id": id.value,
17217
17572
  "focused": isFocused.value
@@ -17280,6 +17635,7 @@ const VSystemBar = genericComponent()({
17280
17635
  color: String,
17281
17636
  height: [Number, String],
17282
17637
  window: Boolean,
17638
+ ...makeComponentProps(),
17283
17639
  ...makeElevationProps(),
17284
17640
  ...makeLayoutItemProps(),
17285
17641
  ...makeRoundedProps(),
@@ -17321,8 +17677,8 @@ const VSystemBar = genericComponent()({
17321
17677
  useRender(() => createVNode(props.tag, {
17322
17678
  "class": ['v-system-bar', {
17323
17679
  'v-system-bar--window': props.window
17324
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17325
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17680
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17681
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17326
17682
  }, slots));
17327
17683
  return {};
17328
17684
  }
@@ -17334,7 +17690,6 @@ const VTab = genericComponent()({
17334
17690
  name: 'VTab',
17335
17691
  props: {
17336
17692
  fixed: Boolean,
17337
- title: String,
17338
17693
  sliderColor: String,
17339
17694
  hideSlider: Boolean,
17340
17695
  direction: {
@@ -17396,10 +17751,10 @@ const VTab = genericComponent()({
17396
17751
  useRender(() => {
17397
17752
  const [btnProps] = VBtn.filterProps(props);
17398
17753
  return createVNode(VBtn, mergeProps({
17399
- "_as": "VTab",
17400
17754
  "symbol": VTabsSymbol,
17401
17755
  "ref": rootEl,
17402
- "class": ['v-tab'],
17756
+ "class": ['v-tab', props.class],
17757
+ "style": props.style,
17403
17758
  "tabindex": isSelected.value ? 0 : -1,
17404
17759
  "role": "tab",
17405
17760
  "aria-selected": String(isSelected.value),
@@ -17410,7 +17765,7 @@ const VTab = genericComponent()({
17410
17765
  }, btnProps, attrs, {
17411
17766
  "onGroup:selected": updateSlider
17412
17767
  }), {
17413
- default: () => [slots.default ? slots.default() : props.title, !props.hideSlider && createVNode("div", {
17768
+ default: () => [slots.default?.() ?? props.text, !props.hideSlider && createVNode("div", {
17414
17769
  "ref": sliderEl,
17415
17770
  "class": ['v-tab__slider', sliderColorClasses.value],
17416
17771
  "style": sliderColorStyles.value
@@ -17494,10 +17849,10 @@ const VTabs = genericComponent()({
17494
17849
  'v-tabs--fixed-tabs': props.fixedTabs,
17495
17850
  'v-tabs--grow': props.grow,
17496
17851
  'v-tabs--stacked': props.stacked
17497
- }, densityClasses.value, backgroundColorClasses.value],
17852
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
17498
17853
  "style": [{
17499
17854
  '--v-tabs-height': convertToUnit(props.height)
17500
- }, backgroundColorStyles.value],
17855
+ }, backgroundColorStyles.value, props.style],
17501
17856
  "role": "tablist",
17502
17857
  "symbol": VTabsSymbol
17503
17858
  }), {
@@ -17517,6 +17872,7 @@ const VTable = genericComponent()({
17517
17872
  fixedFooter: Boolean,
17518
17873
  height: [Number, String],
17519
17874
  hover: Boolean,
17875
+ ...makeComponentProps(),
17520
17876
  ...makeDensityProps(),
17521
17877
  ...makeTagProps(),
17522
17878
  ...makeThemeProps()
@@ -17539,7 +17895,8 @@ const VTable = genericComponent()({
17539
17895
  'v-table--has-top': !!slots.top,
17540
17896
  'v-table--has-bottom': !!slots.bottom,
17541
17897
  'v-table--hover': props.hover
17542
- }, themeClasses.value, densityClasses.value]
17898
+ }, themeClasses.value, densityClasses.value, props.class],
17899
+ "style": props.style
17543
17900
  }, {
17544
17901
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
17545
17902
  "class": "v-table__wrapper",
@@ -17704,7 +18061,8 @@ const VTextarea = genericComponent()({
17704
18061
  'v-textarea--auto-grow': props.autoGrow,
17705
18062
  'v-textarea--no-resize': props.noResize || props.autoGrow,
17706
18063
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
17707
- }]
18064
+ }, props.class],
18065
+ "style": props.style
17708
18066
  }, rootAttrs, inputProps, {
17709
18067
  "focused": isFocused.value
17710
18068
  }), {
@@ -17788,6 +18146,7 @@ const VThemeProvider = genericComponent()({
17788
18146
  name: 'VThemeProvider',
17789
18147
  props: {
17790
18148
  withBackground: Boolean,
18149
+ ...makeComponentProps(),
17791
18150
  ...makeThemeProps(),
17792
18151
  ...makeTagProps()
17793
18152
  },
@@ -17801,7 +18160,8 @@ const VThemeProvider = genericComponent()({
17801
18160
  return () => {
17802
18161
  if (!props.withBackground) return slots.default?.();
17803
18162
  return createVNode(props.tag, {
17804
- "class": ['v-theme-provider', themeClasses.value]
18163
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18164
+ "style": props.style
17805
18165
  }, {
17806
18166
  default: () => [slots.default?.()]
17807
18167
  });
@@ -17846,6 +18206,7 @@ const VTimeline = genericComponent()({
17846
18206
  type: String,
17847
18207
  validator: v => ['start', 'end', 'both'].includes(v)
17848
18208
  },
18209
+ ...makeComponentProps(),
17849
18210
  ...makeDensityProps(),
17850
18211
  ...makeTagProps(),
17851
18212
  ...makeThemeProps()
@@ -17889,10 +18250,10 @@ const VTimeline = genericComponent()({
17889
18250
  useRender(() => createVNode(props.tag, {
17890
18251
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
17891
18252
  'v-timeline--inset-line': !!props.lineInset
17892
- }, themeClasses.value, densityClasses.value, sideClasses.value],
17893
- "style": {
18253
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18254
+ "style": [{
17894
18255
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
17895
- }
18256
+ }, props.style]
17896
18257
  }, slots));
17897
18258
  return {};
17898
18259
  }
@@ -17907,6 +18268,7 @@ const VTimelineDivider = genericComponent()({
17907
18268
  icon: IconValue,
17908
18269
  iconColor: String,
17909
18270
  lineColor: String,
18271
+ ...makeComponentProps(),
17910
18272
  ...makeRoundedProps(),
17911
18273
  ...makeSizeProps(),
17912
18274
  ...makeElevationProps()
@@ -17936,7 +18298,8 @@ const VTimelineDivider = genericComponent()({
17936
18298
  useRender(() => createVNode("div", {
17937
18299
  "class": ['v-timeline-divider', {
17938
18300
  'v-timeline-divider--fill-dot': props.fillDot
17939
- }]
18301
+ }, props.class],
18302
+ "style": props.style
17940
18303
  }, [createVNode("div", {
17941
18304
  "class": ['v-timeline-divider__before', lineColorClasses.value],
17942
18305
  "style": lineColorStyles.value
@@ -17986,11 +18349,12 @@ const VTimelineItem = genericComponent()({
17986
18349
  icon: IconValue,
17987
18350
  iconColor: String,
17988
18351
  lineInset: [Number, String],
17989
- ...makeRoundedProps(),
18352
+ ...makeComponentProps(),
18353
+ ...makeDimensionProps(),
17990
18354
  ...makeElevationProps(),
18355
+ ...makeRoundedProps(),
17991
18356
  ...makeSizeProps(),
17992
- ...makeTagProps(),
17993
- ...makeDimensionProps()
18357
+ ...makeTagProps()
17994
18358
  },
17995
18359
  setup(props, _ref) {
17996
18360
  let {
@@ -18010,11 +18374,11 @@ const VTimelineItem = genericComponent()({
18010
18374
  useRender(() => createVNode("div", {
18011
18375
  "class": ['v-timeline-item', {
18012
18376
  'v-timeline-item--fill-dot': props.fillDot
18013
- }],
18014
- "style": {
18377
+ }, props.class],
18378
+ "style": [{
18015
18379
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18016
18380
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18017
- }
18381
+ }, props.style]
18018
18382
  }, [createVNode("div", {
18019
18383
  "class": "v-timeline-item__body",
18020
18384
  "style": dimensionStyles.value
@@ -18048,6 +18412,7 @@ const VTooltip = genericComponent()({
18048
18412
  closeOnBack: false,
18049
18413
  location: 'end',
18050
18414
  locationStrategy: 'connected',
18415
+ eager: true,
18051
18416
  minWidth: 0,
18052
18417
  offset: 10,
18053
18418
  openOnClick: false,
@@ -18056,7 +18421,7 @@ const VTooltip = genericComponent()({
18056
18421
  scrim: false,
18057
18422
  scrollStrategy: 'reposition',
18058
18423
  transition: false
18059
- }), ['absolute', 'persistent', 'eager'])
18424
+ }), ['absolute', 'persistent'])
18060
18425
  },
18061
18426
  emits: {
18062
18427
  'update:modelValue': value => true
@@ -18089,7 +18454,8 @@ const VTooltip = genericComponent()({
18089
18454
  const [overlayProps] = VOverlay.filterProps(props);
18090
18455
  return createVNode(VOverlay, mergeProps({
18091
18456
  "ref": overlay,
18092
- "class": ['v-tooltip'],
18457
+ "class": ['v-tooltip', props.class],
18458
+ "style": props.style,
18093
18459
  "id": id.value
18094
18460
  }, overlayProps, {
18095
18461
  "modelValue": isActive.value,
@@ -18100,7 +18466,6 @@ const VTooltip = genericComponent()({
18100
18466
  "origin": origin.value,
18101
18467
  "persistent": true,
18102
18468
  "role": "tooltip",
18103
- "eager": true,
18104
18469
  "activatorProps": activatorProps.value,
18105
18470
  "_disableGlobalStack": true
18106
18471
  }, scopeId), {
@@ -18135,66 +18500,236 @@ const VValidation = genericComponent()({
18135
18500
  }
18136
18501
  });
18137
18502
 
18138
- const VDataTableColumn = defineFunctionalComponent({
18139
- align: {
18140
- type: String,
18141
- default: 'start'
18503
+ const VVirtualScrollItem = genericComponent()({
18504
+ name: 'VVirtualScrollItem',
18505
+ props: {
18506
+ dynamicHeight: Boolean,
18507
+ ...makeComponentProps()
18142
18508
  },
18143
- fixed: Boolean,
18144
- fixedOffset: [Number, String],
18145
- height: [Number, String],
18146
- lastFixed: Boolean,
18147
- noPadding: Boolean,
18148
- tag: String,
18149
- width: [Number, String]
18150
- }, (props, _ref) => {
18151
- let {
18152
- slots,
18153
- attrs
18154
- } = _ref;
18155
- const Tag = props.tag ?? 'td';
18156
- return createVNode(Tag, mergeProps({
18157
- "class": ['v-data-table__td', {
18158
- 'v-data-table-column--fixed': props.fixed,
18159
- 'v-data-table-column--last-fixed': props.lastFixed,
18160
- 'v-data-table-column--no-padding': props.noPadding
18161
- }, `v-data-table-column--align-${props.align}`],
18162
- "style": {
18163
- height: convertToUnit(props.height),
18164
- width: convertToUnit(props.width),
18165
- left: convertToUnit(props.fixedOffset || null)
18509
+ emits: {
18510
+ 'update:height': height => true
18511
+ },
18512
+ setup(props, _ref) {
18513
+ let {
18514
+ emit,
18515
+ slots
18516
+ } = _ref;
18517
+ const {
18518
+ resizeRef,
18519
+ contentRect
18520
+ } = useResizeObserver();
18521
+ useToggleScope(() => props.dynamicHeight, () => {
18522
+ watch(() => contentRect.value?.height, height => {
18523
+ if (height != null) emit('update:height', height);
18524
+ });
18525
+ });
18526
+ function updateHeight() {
18527
+ if (props.dynamicHeight && contentRect.value) {
18528
+ emit('update:height', contentRect.value.height);
18529
+ }
18166
18530
  }
18167
- }, attrs), {
18168
- default: () => [slots.default?.()]
18169
- });
18531
+ onUpdated(updateHeight);
18532
+ useRender(() => createVNode("div", {
18533
+ "ref": props.dynamicHeight ? resizeRef : undefined,
18534
+ "class": ['v-virtual-scroll__item', props.class],
18535
+ "style": props.style
18536
+ }, [slots.default?.()]));
18537
+ }
18170
18538
  });
18171
18539
 
18172
- // Utilities
18173
-
18174
18540
  // Types
18175
18541
 
18176
- const makeDataTableHeaderProps = propsFactory({
18177
- headers: {
18178
- type: Array,
18179
- default: () => []
18180
- }
18181
- }, 'v-data-table-header');
18182
- const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');
18183
- function createHeaders(props, options) {
18184
- const headers = ref([]);
18185
- const columns = ref([]);
18186
- watch(() => props.headers, () => {
18187
- const wrapped = !props.headers.length ? [] : Array.isArray(props.headers[0]) ? props.headers : [props.headers];
18188
- const flat = wrapped.flatMap((row, index) => row.map(column => ({
18189
- column,
18190
- row: index
18191
- })));
18192
- const rowCount = wrapped.length;
18193
- const defaultHeader = {
18194
- title: '',
18195
- sortable: false
18196
- };
18197
- const defaultActionHeader = {
18542
+ const UP$1 = -1;
18543
+ const DOWN$1 = 1;
18544
+ const VVirtualScroll = genericComponent()({
18545
+ name: 'VVirtualScroll',
18546
+ props: {
18547
+ items: {
18548
+ type: Array,
18549
+ default: () => []
18550
+ },
18551
+ itemHeight: [Number, String],
18552
+ ...makeComponentProps(),
18553
+ ...makeDimensionProps()
18554
+ },
18555
+ setup(props, _ref) {
18556
+ let {
18557
+ slots
18558
+ } = _ref;
18559
+ const first = ref(0);
18560
+ const baseItemHeight = ref(props.itemHeight);
18561
+ const itemHeight = computed({
18562
+ get: () => parseInt(baseItemHeight.value ?? 0, 10),
18563
+ set(val) {
18564
+ baseItemHeight.value = val;
18565
+ }
18566
+ });
18567
+ const rootEl = ref();
18568
+ const {
18569
+ resizeRef,
18570
+ contentRect
18571
+ } = useResizeObserver();
18572
+ watchEffect(() => {
18573
+ resizeRef.value = rootEl.value;
18574
+ });
18575
+ const display = useDisplay();
18576
+ const sizeMap = new Map();
18577
+ let sizes = createRange(props.items.length).map(() => itemHeight.value);
18578
+ const visibleItems = computed(() => {
18579
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18580
+ });
18581
+ function handleItemResize(index, height) {
18582
+ itemHeight.value = Math.max(itemHeight.value, height);
18583
+ sizes[index] = height;
18584
+ sizeMap.set(props.items[index], height);
18585
+ }
18586
+ function calculateOffset(index) {
18587
+ return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18588
+ }
18589
+ function calculateMidPointIndex(scrollTop) {
18590
+ const end = props.items.length;
18591
+ let middle = 0;
18592
+ let middleOffset = 0;
18593
+ while (middleOffset < scrollTop && middle < end) {
18594
+ middleOffset += sizes[middle++] || itemHeight.value;
18595
+ }
18596
+ return middle - 1;
18597
+ }
18598
+ let lastScrollTop = 0;
18599
+ function handleScroll() {
18600
+ if (!rootEl.value || !contentRect.value) return;
18601
+ const height = contentRect.value.height;
18602
+ const scrollTop = rootEl.value.scrollTop;
18603
+ const direction = scrollTop < lastScrollTop ? UP$1 : DOWN$1;
18604
+ const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
18605
+ const buffer = Math.round(visibleItems.value / 3);
18606
+ if (direction === UP$1 && midPointIndex <= first.value + buffer * 2 - 1) {
18607
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length);
18608
+ } else if (direction === DOWN$1 && midPointIndex >= first.value + buffer * 2 - 1) {
18609
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value);
18610
+ }
18611
+ lastScrollTop = rootEl.value.scrollTop;
18612
+ }
18613
+ function scrollToIndex(index) {
18614
+ if (!rootEl.value) return;
18615
+ const offset = calculateOffset(index);
18616
+ rootEl.value.scrollTop = offset;
18617
+ }
18618
+ const items = computed(() => props.items.map((item, index) => ({
18619
+ raw: item,
18620
+ index
18621
+ })));
18622
+ const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18623
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18624
+ const paddingTop = computed(() => calculateOffset(first.value));
18625
+ const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18626
+ const {
18627
+ dimensionStyles
18628
+ } = useDimension(props);
18629
+ onMounted(() => {
18630
+ if (!itemHeight.value) {
18631
+ // If itemHeight prop is not set, then calculate an estimated height from the average of inital items
18632
+ itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
18633
+ }
18634
+ });
18635
+ watch(() => props.items.length, () => {
18636
+ sizes = createRange(props.items.length).map(() => itemHeight.value);
18637
+ sizeMap.forEach((height, item) => {
18638
+ const index = props.items.indexOf(item);
18639
+ if (index === -1) {
18640
+ sizeMap.delete(item);
18641
+ } else {
18642
+ sizes[index] = height;
18643
+ }
18644
+ });
18645
+ });
18646
+ useRender(() => createVNode("div", {
18647
+ "ref": rootEl,
18648
+ "class": ['v-virtual-scroll', props.class],
18649
+ "onScroll": handleScroll,
18650
+ "style": [dimensionStyles.value, props.style]
18651
+ }, [createVNode("div", {
18652
+ "class": "v-virtual-scroll__container",
18653
+ "style": {
18654
+ paddingTop: convertToUnit(paddingTop.value),
18655
+ paddingBottom: convertToUnit(paddingBottom.value)
18656
+ }
18657
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18658
+ "key": item.index,
18659
+ "dynamicHeight": !props.itemHeight,
18660
+ "onUpdate:height": height => handleItemResize(item.index, height)
18661
+ }, {
18662
+ default: () => [slots.default?.({
18663
+ item: item.raw,
18664
+ index: item.index
18665
+ })]
18666
+ }))])]));
18667
+ return {
18668
+ scrollToIndex
18669
+ };
18670
+ }
18671
+ });
18672
+
18673
+ const VDataTableColumn = defineFunctionalComponent({
18674
+ align: {
18675
+ type: String,
18676
+ default: 'start'
18677
+ },
18678
+ fixed: Boolean,
18679
+ fixedOffset: [Number, String],
18680
+ height: [Number, String],
18681
+ lastFixed: Boolean,
18682
+ noPadding: Boolean,
18683
+ tag: String,
18684
+ width: [Number, String]
18685
+ }, (props, _ref) => {
18686
+ let {
18687
+ slots,
18688
+ attrs
18689
+ } = _ref;
18690
+ const Tag = props.tag ?? 'td';
18691
+ return createVNode(Tag, mergeProps({
18692
+ "class": ['v-data-table__td', {
18693
+ 'v-data-table-column--fixed': props.fixed,
18694
+ 'v-data-table-column--last-fixed': props.lastFixed,
18695
+ 'v-data-table-column--no-padding': props.noPadding
18696
+ }, `v-data-table-column--align-${props.align}`],
18697
+ "style": {
18698
+ height: convertToUnit(props.height),
18699
+ width: convertToUnit(props.width),
18700
+ left: convertToUnit(props.fixedOffset || null)
18701
+ }
18702
+ }, attrs), {
18703
+ default: () => [slots.default?.()]
18704
+ });
18705
+ });
18706
+
18707
+ // Utilities
18708
+
18709
+ // Types
18710
+
18711
+ const makeDataTableHeaderProps = propsFactory({
18712
+ headers: {
18713
+ type: Array,
18714
+ default: () => []
18715
+ }
18716
+ }, 'v-data-table-header');
18717
+ const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');
18718
+ function createHeaders(props, options) {
18719
+ const headers = ref([]);
18720
+ const columns = ref([]);
18721
+ watch(() => props.headers, () => {
18722
+ const wrapped = !props.headers.length ? [] : Array.isArray(props.headers[0]) ? props.headers : [props.headers];
18723
+ const flat = wrapped.flatMap((row, index) => row.map(column => ({
18724
+ column,
18725
+ row: index
18726
+ })));
18727
+ const rowCount = wrapped.length;
18728
+ const defaultHeader = {
18729
+ title: '',
18730
+ sortable: false
18731
+ };
18732
+ const defaultActionHeader = {
18198
18733
  ...defaultHeader,
18199
18734
  width: 48
18200
18735
  };
@@ -19545,8 +20080,8 @@ const makeDataTableVirtualProps = propsFactory({
19545
20080
  default: 52
19546
20081
  }
19547
20082
  }, 'virtual');
19548
- const UP$1 = -1;
19549
- const DOWN$1 = 1;
20083
+ const UP = -1;
20084
+ const DOWN = 1;
19550
20085
 
19551
20086
  // TODO: Replace this with composable from v-virtual-scroll
19552
20087
  function useVirtual(props, items) {
@@ -19584,12 +20119,12 @@ function useVirtual(props, items) {
19584
20119
  isScrolling.value = false;
19585
20120
  }, 100);
19586
20121
  const scrollTop = containerRef.value.scrollTop;
19587
- const direction = scrollTop < lastScrollTop ? UP$1 : DOWN$1;
20122
+ const direction = scrollTop < lastScrollTop ? UP : DOWN;
19588
20123
  const midPointIndex = calculateMidPointIndex(scrollTop);
19589
20124
  const buffer = Math.round(visibleItems.value / 3);
19590
- if (direction === UP$1 && midPointIndex <= startIndex.value) {
20125
+ if (direction === UP && midPointIndex <= startIndex.value) {
19591
20126
  startIndex.value = Math.max(midPointIndex - buffer, 0);
19592
- } else if (direction === DOWN$1 && midPointIndex >= startIndex.value + buffer * 2) {
20127
+ } else if (direction === DOWN && midPointIndex >= startIndex.value + buffer * 2) {
19593
20128
  startIndex.value = Math.min(Math.max(0, midPointIndex - buffer), items.value.length - visibleItems.value);
19594
20129
  }
19595
20130
  lastScrollTop = containerRef.value.scrollTop;
@@ -19902,6 +20437,211 @@ const VDataTableServer = genericComponent()({
19902
20437
 
19903
20438
  // Types
19904
20439
 
20440
+ const VInfiniteScrollIntersect = defineComponent({
20441
+ name: 'VInfiniteScrollIntersect',
20442
+ props: {
20443
+ side: {
20444
+ type: String,
20445
+ required: true
20446
+ },
20447
+ rootRef: null,
20448
+ rootMargin: String
20449
+ },
20450
+ emits: {
20451
+ intersect: side => true
20452
+ },
20453
+ setup(props, _ref) {
20454
+ let {
20455
+ emit
20456
+ } = _ref;
20457
+ const {
20458
+ intersectionRef,
20459
+ isIntersecting
20460
+ } = useIntersectionObserver(entries => {}, props.rootMargin ? {
20461
+ root: props.rootRef,
20462
+ rootMargin: props.rootMargin
20463
+ } : undefined);
20464
+ watch(isIntersecting, async val => {
20465
+ if (val) emit('intersect', props.side);
20466
+ });
20467
+ useRender(() => createVNode("div", {
20468
+ "class": "v-infinite-scroll-intersect",
20469
+ "ref": intersectionRef
20470
+ }, [createTextVNode("\xA0")]));
20471
+ return {};
20472
+ }
20473
+ });
20474
+ const VInfiniteScroll = genericComponent()({
20475
+ name: 'VInfiniteScroll',
20476
+ props: {
20477
+ color: String,
20478
+ direction: {
20479
+ type: String,
20480
+ default: 'vertical',
20481
+ validator: v => ['vertical', 'horizontal'].includes(v)
20482
+ },
20483
+ side: {
20484
+ type: String,
20485
+ default: 'end',
20486
+ validator: v => ['start', 'end', 'both'].includes(v)
20487
+ },
20488
+ mode: {
20489
+ type: String,
20490
+ default: 'intersect',
20491
+ validator: v => ['intersect', 'manual'].includes(v)
20492
+ },
20493
+ margin: [Number, String],
20494
+ loadMoreText: {
20495
+ type: String,
20496
+ default: '$vuetify.infiniteScroll.loadMore'
20497
+ },
20498
+ emptyText: {
20499
+ type: String,
20500
+ default: '$vuetify.infiniteScroll.empty'
20501
+ },
20502
+ ...makeDimensionProps()
20503
+ },
20504
+ emits: {
20505
+ load: options => true
20506
+ },
20507
+ setup(props, _ref2) {
20508
+ let {
20509
+ slots,
20510
+ emit
20511
+ } = _ref2;
20512
+ const rootEl = ref();
20513
+ const startStatus = ref('ok');
20514
+ const endStatus = ref('ok');
20515
+ const margin = computed(() => convertToUnit(props.margin));
20516
+ function setScrollAmount(amount) {
20517
+ if (!rootEl.value) return;
20518
+ const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
20519
+ rootEl.value[property] = amount;
20520
+ }
20521
+ function getScrollAmount() {
20522
+ if (!rootEl.value) return 0;
20523
+ const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
20524
+ return rootEl.value[property];
20525
+ }
20526
+ function getScrollSize() {
20527
+ if (!rootEl.value) return 0;
20528
+ const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';
20529
+ return rootEl.value[property];
20530
+ }
20531
+ function getContainerSize() {
20532
+ if (!rootEl.value) return 0;
20533
+ const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';
20534
+ return rootEl.value[property];
20535
+ }
20536
+ onMounted(() => {
20537
+ if (!rootEl.value) return;
20538
+ if (props.side === 'start') {
20539
+ setScrollAmount(getScrollSize());
20540
+ } else if (props.side === 'both') {
20541
+ setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);
20542
+ }
20543
+ });
20544
+ function setStatus(side, status) {
20545
+ if (side === 'start') {
20546
+ startStatus.value = status;
20547
+ } else if (side === 'end') {
20548
+ endStatus.value = status;
20549
+ }
20550
+ }
20551
+ function getStatus(side) {
20552
+ return side === 'start' ? startStatus.value : endStatus.value;
20553
+ }
20554
+ let previousScrollSize = 0;
20555
+ function handleIntersect(side) {
20556
+ const status = getStatus(side);
20557
+ if (!rootEl.value || status === 'loading') return;
20558
+ previousScrollSize = getScrollSize();
20559
+ setStatus(side, 'loading');
20560
+ function done(status) {
20561
+ setStatus(side, status);
20562
+ nextTick(() => {
20563
+ if (status === 'ok' && side === 'start') {
20564
+ setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
20565
+ }
20566
+ });
20567
+ }
20568
+ emit('load', {
20569
+ side,
20570
+ done
20571
+ });
20572
+ }
20573
+ const {
20574
+ t
20575
+ } = useLocale();
20576
+ function renderSide(side, status) {
20577
+ if (props.side !== side && props.side !== 'both') return;
20578
+ const onClick = () => handleIntersect(side);
20579
+ const slotProps = {
20580
+ side,
20581
+ props: {
20582
+ onClick,
20583
+ color: props.color
20584
+ }
20585
+ };
20586
+ if (status === 'error') return slots.error?.(slotProps);
20587
+ if (status === 'empty') return slots.empty?.(slotProps) ?? createVNode("div", null, [t(props.emptyText)]);
20588
+ if (props.mode === 'manual') {
20589
+ if (status === 'loading') {
20590
+ return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
20591
+ "indeterminate": true,
20592
+ "color": props.color
20593
+ }, null);
20594
+ }
20595
+ return slots['load-more']?.(slotProps) ?? createVNode(VBtn, {
20596
+ "variant": "outlined",
20597
+ "color": props.color,
20598
+ "onClick": onClick
20599
+ }, {
20600
+ default: () => [t(props.loadMoreText)]
20601
+ });
20602
+ }
20603
+ return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
20604
+ "indeterminate": true,
20605
+ "color": props.color
20606
+ }, null);
20607
+ }
20608
+ const {
20609
+ dimensionStyles
20610
+ } = useDimension(props);
20611
+ useRender(() => {
20612
+ const hasStartIntersect = props.side === 'start' || props.side === 'both';
20613
+ const hasEndIntersect = props.side === 'end' || props.side === 'both';
20614
+ const intersectMode = props.mode === 'intersect';
20615
+ return createVNode("div", {
20616
+ "ref": rootEl,
20617
+ "class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
20618
+ 'v-infinite-scroll--start': hasStartIntersect,
20619
+ 'v-infinite-scroll--end': hasEndIntersect
20620
+ }],
20621
+ "style": dimensionStyles.value
20622
+ }, [createVNode("div", {
20623
+ "class": "v-infinite-scroll__side"
20624
+ }, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
20625
+ "key": "start",
20626
+ "side": "start",
20627
+ "onIntersect": handleIntersect,
20628
+ "rootRef": rootEl.value,
20629
+ "rootMargin": margin.value
20630
+ }, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
20631
+ "key": "end",
20632
+ "side": "end",
20633
+ "onIntersect": handleIntersect,
20634
+ "rootRef": rootEl.value,
20635
+ "rootMargin": margin.value
20636
+ }, null), createVNode("div", {
20637
+ "class": "v-infinite-scroll__side"
20638
+ }, [renderSide('end', endStatus.value)])]);
20639
+ });
20640
+ }
20641
+ });
20642
+
20643
+ // Types
20644
+
19905
20645
  const rootTypes = {
19906
20646
  actions: 'button@2',
19907
20647
  article: 'heading, paragraph',
@@ -20032,177 +20772,6 @@ const VSkeletonLoader = genericComponent()({
20032
20772
  }
20033
20773
  });
20034
20774
 
20035
- const VVirtualScrollItem = genericComponent()({
20036
- name: 'VVirtualScrollItem',
20037
- props: {
20038
- dynamicHeight: Boolean
20039
- },
20040
- emits: {
20041
- 'update:height': height => true
20042
- },
20043
- setup(props, _ref) {
20044
- let {
20045
- emit,
20046
- slots
20047
- } = _ref;
20048
- const {
20049
- resizeRef,
20050
- contentRect
20051
- } = useResizeObserver();
20052
- useToggleScope(() => props.dynamicHeight, () => {
20053
- watch(() => contentRect.value?.height, height => {
20054
- if (height != null) emit('update:height', height);
20055
- });
20056
- });
20057
- function updateHeight() {
20058
- if (props.dynamicHeight && contentRect.value) {
20059
- emit('update:height', contentRect.value.height);
20060
- }
20061
- }
20062
- onUpdated(updateHeight);
20063
- useRender(() => createVNode("div", {
20064
- "ref": props.dynamicHeight ? resizeRef : undefined,
20065
- "class": "v-virtual-scroll__item"
20066
- }, [slots.default?.()]));
20067
- }
20068
- });
20069
-
20070
- // Types
20071
-
20072
- const UP = -1;
20073
- const DOWN = 1;
20074
- const VVirtualScroll = genericComponent()({
20075
- name: 'VVirtualScroll',
20076
- props: {
20077
- items: {
20078
- type: Array,
20079
- default: () => []
20080
- },
20081
- itemHeight: [Number, String],
20082
- visibleItems: [Number, String],
20083
- ...makeDimensionProps()
20084
- },
20085
- setup(props, _ref) {
20086
- let {
20087
- slots
20088
- } = _ref;
20089
- const first = ref(0);
20090
- const baseItemHeight = ref(props.itemHeight);
20091
- const itemHeight = computed({
20092
- get: () => parseInt(baseItemHeight.value ?? 0, 10),
20093
- set(val) {
20094
- baseItemHeight.value = val;
20095
- }
20096
- });
20097
- const rootEl = ref();
20098
- const {
20099
- resizeRef,
20100
- contentRect
20101
- } = useResizeObserver();
20102
- watchEffect(() => {
20103
- resizeRef.value = rootEl.value;
20104
- });
20105
- const display = useDisplay();
20106
- const sizeMap = new Map();
20107
- let sizes = createRange(props.items.length).map(() => itemHeight.value);
20108
- const visibleItems = computed(() => {
20109
- return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
20110
- });
20111
- function handleItemResize(index, height) {
20112
- itemHeight.value = Math.max(itemHeight.value, height);
20113
- sizes[index] = height;
20114
- sizeMap.set(props.items[index], height);
20115
- }
20116
- function calculateOffset(index) {
20117
- return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
20118
- }
20119
- function calculateMidPointIndex(scrollTop) {
20120
- let start = 0;
20121
- let end = props.items.length;
20122
- while (start <= end) {
20123
- const middle = start + Math.floor((end - start) / 2);
20124
- const middleOffset = calculateOffset(middle);
20125
- if (middleOffset === scrollTop) {
20126
- return middle;
20127
- } else if (middleOffset < scrollTop) {
20128
- start = middle + 1;
20129
- } else if (middleOffset > scrollTop) {
20130
- end = middle - 1;
20131
- }
20132
- }
20133
- return start;
20134
- }
20135
- let lastScrollTop = 0;
20136
- function handleScroll() {
20137
- if (!rootEl.value || !contentRect.value) return;
20138
- const height = contentRect.value.height;
20139
- const scrollTop = rootEl.value.scrollTop;
20140
- const direction = scrollTop < lastScrollTop ? UP : DOWN;
20141
- const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
20142
- const buffer = Math.round(visibleItems.value / 3);
20143
- if (direction === UP && midPointIndex <= first.value + buffer * 2 - 1) {
20144
- first.value = clamp(midPointIndex - buffer, 0, props.items.length);
20145
- } else if (direction === DOWN && midPointIndex >= first.value + buffer * 2 - 1) {
20146
- first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value);
20147
- }
20148
- lastScrollTop = rootEl.value.scrollTop;
20149
- }
20150
- function scrollToIndex(index) {
20151
- if (!rootEl.value) return;
20152
- const offset = calculateOffset(index);
20153
- rootEl.value.scrollTop = offset;
20154
- }
20155
- const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
20156
- const computedItems = computed(() => props.items.slice(first.value, last.value));
20157
- const paddingTop = computed(() => calculateOffset(first.value));
20158
- const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
20159
- const {
20160
- dimensionStyles
20161
- } = useDimension(props);
20162
- onMounted(() => {
20163
- if (!itemHeight.value) {
20164
- // If itemHeight prop is not set, then calculate an estimated height from the average of inital items
20165
- itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
20166
- }
20167
- });
20168
- watch(() => props.items.length, () => {
20169
- sizes = createRange(props.items.length).map(() => itemHeight.value);
20170
- sizeMap.forEach((height, item) => {
20171
- const index = props.items.indexOf(item);
20172
- if (index === -1) {
20173
- sizeMap.delete(item);
20174
- } else {
20175
- sizes[index] = height;
20176
- }
20177
- });
20178
- });
20179
- useRender(() => createVNode("div", {
20180
- "ref": rootEl,
20181
- "class": "v-virtual-scroll",
20182
- "onScroll": handleScroll,
20183
- "style": dimensionStyles.value
20184
- }, [createVNode("div", {
20185
- "class": "v-virtual-scroll__container",
20186
- "style": {
20187
- paddingTop: convertToUnit(paddingTop.value),
20188
- paddingBottom: convertToUnit(paddingBottom.value)
20189
- }
20190
- }, [computedItems.value.map((item, index) => createVNode(VVirtualScrollItem, {
20191
- "key": index,
20192
- "dynamicHeight": !props.itemHeight,
20193
- "onUpdate:height": height => handleItemResize(index + first.value, height)
20194
- }, {
20195
- default: () => [slots.default?.({
20196
- item,
20197
- index: index + first.value
20198
- })]
20199
- }))])]));
20200
- return {
20201
- scrollToIndex
20202
- };
20203
- }
20204
- });
20205
-
20206
20775
  var components = /*#__PURE__*/Object.freeze({
20207
20776
  __proto__: null,
20208
20777
  VAlert: VAlert,
@@ -20272,6 +20841,7 @@ var components = /*#__PURE__*/Object.freeze({
20272
20841
  VHover: VHover,
20273
20842
  VIcon: VIcon,
20274
20843
  VImg: VImg,
20844
+ VInfiniteScroll: VInfiniteScroll,
20275
20845
  VInput: VInput,
20276
20846
  VItem: VItem,
20277
20847
  VItemGroup: VItemGroup,
@@ -20474,6 +21044,418 @@ var directives = /*#__PURE__*/Object.freeze({
20474
21044
  Touch: Touch
20475
21045
  });
20476
21046
 
21047
+ // Utilities
21048
+
21049
+ // Types
21050
+
21051
+ function getWeekArray(date) {
21052
+ let currentWeek = [];
21053
+ const weeks = [];
21054
+ const firstDayOfMonth = startOfMonth(date);
21055
+ const lastDayOfMonth = endOfMonth(date);
21056
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
21057
+ currentWeek.push(null);
21058
+ }
21059
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
21060
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
21061
+
21062
+ // Add the day to the current week
21063
+ currentWeek.push(day);
21064
+
21065
+ // If the current week has 7 days, add it to the weeks array and start a new week
21066
+ if (currentWeek.length === 7) {
21067
+ weeks.push(currentWeek);
21068
+ currentWeek = [];
21069
+ }
21070
+ }
21071
+ for (let i = currentWeek.length; i < 7; i++) {
21072
+ currentWeek.push(null);
21073
+ }
21074
+ weeks.push(currentWeek);
21075
+ return weeks;
21076
+ }
21077
+ function startOfMonth(date) {
21078
+ return new Date(date.getFullYear(), date.getMonth(), 1);
21079
+ }
21080
+ function endOfMonth(date) {
21081
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
21082
+ }
21083
+ function date(value) {
21084
+ if (value == null) return null;
21085
+ if (value instanceof Date) return value;
21086
+ if (typeof value === 'string') {
21087
+ const parsed = Date.parse(value);
21088
+ if (!isNaN(parsed)) return new Date(parsed);
21089
+ }
21090
+ return null;
21091
+ }
21092
+ const firstDay = {
21093
+ '001': 1,
21094
+ AD: 1,
21095
+ AE: 6,
21096
+ AF: 6,
21097
+ AG: 0,
21098
+ AI: 1,
21099
+ AL: 1,
21100
+ AM: 1,
21101
+ AN: 1,
21102
+ AR: 1,
21103
+ AS: 0,
21104
+ AT: 1,
21105
+ AU: 0,
21106
+ AX: 1,
21107
+ AZ: 1,
21108
+ BA: 1,
21109
+ BD: 0,
21110
+ BE: 1,
21111
+ BG: 1,
21112
+ BH: 6,
21113
+ BM: 1,
21114
+ BN: 1,
21115
+ BR: 0,
21116
+ BS: 0,
21117
+ BT: 0,
21118
+ BW: 0,
21119
+ BY: 1,
21120
+ BZ: 0,
21121
+ CA: 0,
21122
+ CH: 1,
21123
+ CL: 1,
21124
+ CM: 1,
21125
+ CN: 0,
21126
+ CO: 0,
21127
+ CR: 1,
21128
+ CY: 1,
21129
+ CZ: 1,
21130
+ DE: 1,
21131
+ DJ: 6,
21132
+ DK: 1,
21133
+ DM: 0,
21134
+ DO: 0,
21135
+ DZ: 6,
21136
+ EC: 1,
21137
+ EE: 1,
21138
+ EG: 6,
21139
+ ES: 1,
21140
+ ET: 0,
21141
+ FI: 1,
21142
+ FJ: 1,
21143
+ FO: 1,
21144
+ FR: 1,
21145
+ GB: 1,
21146
+ 'GB-alt-variant': 0,
21147
+ GE: 1,
21148
+ GF: 1,
21149
+ GP: 1,
21150
+ GR: 1,
21151
+ GT: 0,
21152
+ GU: 0,
21153
+ HK: 0,
21154
+ HN: 0,
21155
+ HR: 1,
21156
+ HU: 1,
21157
+ ID: 0,
21158
+ IE: 1,
21159
+ IL: 0,
21160
+ IN: 0,
21161
+ IQ: 6,
21162
+ IR: 6,
21163
+ IS: 1,
21164
+ IT: 1,
21165
+ JM: 0,
21166
+ JO: 6,
21167
+ JP: 0,
21168
+ KE: 0,
21169
+ KG: 1,
21170
+ KH: 0,
21171
+ KR: 0,
21172
+ KW: 6,
21173
+ KZ: 1,
21174
+ LA: 0,
21175
+ LB: 1,
21176
+ LI: 1,
21177
+ LK: 1,
21178
+ LT: 1,
21179
+ LU: 1,
21180
+ LV: 1,
21181
+ LY: 6,
21182
+ MC: 1,
21183
+ MD: 1,
21184
+ ME: 1,
21185
+ MH: 0,
21186
+ MK: 1,
21187
+ MM: 0,
21188
+ MN: 1,
21189
+ MO: 0,
21190
+ MQ: 1,
21191
+ MT: 0,
21192
+ MV: 5,
21193
+ MX: 0,
21194
+ MY: 1,
21195
+ MZ: 0,
21196
+ NI: 0,
21197
+ NL: 1,
21198
+ NO: 1,
21199
+ NP: 0,
21200
+ NZ: 1,
21201
+ OM: 6,
21202
+ PA: 0,
21203
+ PE: 0,
21204
+ PH: 0,
21205
+ PK: 0,
21206
+ PL: 1,
21207
+ PR: 0,
21208
+ PT: 0,
21209
+ PY: 0,
21210
+ QA: 6,
21211
+ RE: 1,
21212
+ RO: 1,
21213
+ RS: 1,
21214
+ RU: 1,
21215
+ SA: 0,
21216
+ SD: 6,
21217
+ SE: 1,
21218
+ SG: 0,
21219
+ SI: 1,
21220
+ SK: 1,
21221
+ SM: 1,
21222
+ SV: 0,
21223
+ SY: 6,
21224
+ TH: 0,
21225
+ TJ: 1,
21226
+ TM: 1,
21227
+ TR: 1,
21228
+ TT: 0,
21229
+ TW: 0,
21230
+ UA: 1,
21231
+ UM: 0,
21232
+ US: 0,
21233
+ UY: 1,
21234
+ UZ: 1,
21235
+ VA: 1,
21236
+ VE: 0,
21237
+ VI: 0,
21238
+ VN: 1,
21239
+ WS: 0,
21240
+ XK: 1,
21241
+ YE: 0,
21242
+ ZA: 0,
21243
+ ZW: 0
21244
+ };
21245
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
21246
+ function getWeekdays(locale) {
21247
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
21248
+ return createRange(7).map(i => {
21249
+ const weekday = new Date(sundayJanuarySecond2000);
21250
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
21251
+ return new Intl.DateTimeFormat(locale, {
21252
+ weekday: 'long'
21253
+ }).format(weekday);
21254
+ });
21255
+ }
21256
+ function format(value, formatString, locale) {
21257
+ const date = new Date(value);
21258
+ let options = {};
21259
+ switch (formatString) {
21260
+ case 'fullDateWithWeekday':
21261
+ options = {
21262
+ weekday: 'long',
21263
+ day: 'numeric',
21264
+ month: 'long',
21265
+ year: 'numeric'
21266
+ };
21267
+ break;
21268
+ case 'normalDateWithWeekday':
21269
+ options = {
21270
+ weekday: 'short',
21271
+ day: 'numeric',
21272
+ month: 'short',
21273
+ year: 'numeric'
21274
+ };
21275
+ break;
21276
+ case 'keyboardDate':
21277
+ options = {};
21278
+ break;
21279
+ case 'monthAndDate':
21280
+ options = {
21281
+ month: 'long',
21282
+ day: 'numeric'
21283
+ };
21284
+ break;
21285
+ case 'monthAndYear':
21286
+ options = {
21287
+ month: 'long',
21288
+ year: 'numeric'
21289
+ };
21290
+ break;
21291
+ default:
21292
+ options = {
21293
+ timeZone: 'UTC',
21294
+ timeZoneName: 'short'
21295
+ };
21296
+ }
21297
+ return new Intl.DateTimeFormat(locale, options).format(date);
21298
+ }
21299
+ function addDays(date, amount) {
21300
+ const d = new Date(date);
21301
+ d.setDate(d.getDate() + amount);
21302
+ return d;
21303
+ }
21304
+ function addMonths(date, amount) {
21305
+ const d = new Date(date);
21306
+ d.setMonth(d.getMonth() + amount);
21307
+ return d;
21308
+ }
21309
+ function getYear(date) {
21310
+ return date.getFullYear();
21311
+ }
21312
+ function getMonth(date) {
21313
+ return date.getMonth();
21314
+ }
21315
+ function startOfYear(date) {
21316
+ return new Date(date.getFullYear(), 0, 1);
21317
+ }
21318
+ function endOfYear(date) {
21319
+ return new Date(date.getFullYear(), 11, 31);
21320
+ }
21321
+ function getMondayOfFirstWeekOfYear(year) {
21322
+ return new Date(year, 0, 1);
21323
+ }
21324
+
21325
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
21326
+ function getWeek(date) {
21327
+ let year = date.getFullYear();
21328
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
21329
+ if (date < d1w1) {
21330
+ year = year - 1;
21331
+ d1w1 = getMondayOfFirstWeekOfYear(year);
21332
+ } else {
21333
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
21334
+ if (date >= tv) {
21335
+ year = year + 1;
21336
+ d1w1 = tv;
21337
+ }
21338
+ }
21339
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
21340
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
21341
+ return Math.floor(diffDays / 7) + 1;
21342
+ }
21343
+ function isWithinRange(date, range) {
21344
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
21345
+ }
21346
+ function isValid(date) {
21347
+ const d = new Date(date);
21348
+ return d instanceof Date && !isNaN(d.getTime());
21349
+ }
21350
+ function isAfter(date, comparing) {
21351
+ return date.getTime() > comparing.getTime();
21352
+ }
21353
+ function isBefore(date, comparing) {
21354
+ return date.getTime() < comparing.getTime();
21355
+ }
21356
+ function isEqual(date, comparing) {
21357
+ return date.getTime() === comparing.getTime();
21358
+ }
21359
+ function isSameDay(date, comparing) {
21360
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
21361
+ }
21362
+ function isSameMonth(date, comparing) {
21363
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
21364
+ }
21365
+ function getDiff(date, comparing, unit) {
21366
+ const d = new Date(date);
21367
+ const c = new Date(comparing);
21368
+ if (unit === 'month') {
21369
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
21370
+ }
21371
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
21372
+ }
21373
+ function setYear(date, year) {
21374
+ const d = new Date(date);
21375
+ d.setFullYear(year);
21376
+ return d;
21377
+ }
21378
+ class VuetifyDateAdapter {
21379
+ constructor() {
21380
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
21381
+ this.locale = locale;
21382
+ }
21383
+ date(value) {
21384
+ return date(value);
21385
+ }
21386
+ addDays(date, amount) {
21387
+ return addDays(date, amount);
21388
+ }
21389
+ addMonths(date, amount) {
21390
+ return addMonths(date, amount);
21391
+ }
21392
+ getWeekArray(date) {
21393
+ return getWeekArray(date);
21394
+ }
21395
+ startOfMonth(date) {
21396
+ return startOfMonth(date);
21397
+ }
21398
+ endOfMonth(date) {
21399
+ return endOfMonth(date);
21400
+ }
21401
+ format(date, formatString) {
21402
+ return format(date, formatString, this.locale);
21403
+ }
21404
+ isEqual(date, comparing) {
21405
+ return isEqual(date, comparing);
21406
+ }
21407
+ isValid(date) {
21408
+ return isValid(date);
21409
+ }
21410
+ isWithinRange(date, range) {
21411
+ return isWithinRange(date, range);
21412
+ }
21413
+ isAfter(date, comparing) {
21414
+ return isAfter(date, comparing);
21415
+ }
21416
+ isSameDay(date, comparing) {
21417
+ return isSameDay(date, comparing);
21418
+ }
21419
+ isSameMonth(date, comparing) {
21420
+ return isSameMonth(date, comparing);
21421
+ }
21422
+ setYear(date, year) {
21423
+ return setYear(date, year);
21424
+ }
21425
+ getDiff(date, comparing, unit) {
21426
+ return getDiff(date, comparing, unit);
21427
+ }
21428
+ getWeek(date) {
21429
+ return getWeek(date);
21430
+ }
21431
+ getWeekdays() {
21432
+ return getWeekdays(this.locale);
21433
+ }
21434
+ getYear(date) {
21435
+ return getYear(date);
21436
+ }
21437
+ getMonth(date) {
21438
+ return getMonth(date);
21439
+ }
21440
+ startOfYear(date) {
21441
+ return startOfYear(date);
21442
+ }
21443
+ endOfYear(date) {
21444
+ return endOfYear(date);
21445
+ }
21446
+ }
21447
+
21448
+ // Composables
21449
+
21450
+ // Types
21451
+
21452
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
21453
+ function createDate(options) {
21454
+ return options ?? {
21455
+ adapter: VuetifyDateAdapter
21456
+ };
21457
+ }
21458
+
20477
21459
  // Composables
20478
21460
  function createVuetify$1() {
20479
21461
  let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -20492,6 +21474,7 @@ function createVuetify$1() {
20492
21474
  const theme = createTheme(options.theme);
20493
21475
  const icons = createIcons(options.icons);
20494
21476
  const locale = createLocale(options.locale);
21477
+ const date = createDate(options.date);
20495
21478
  const install = app => {
20496
21479
  for (const key in directives) {
20497
21480
  app.directive(key, directives[key]);
@@ -20512,6 +21495,7 @@ function createVuetify$1() {
20512
21495
  app.provide(ThemeSymbol, theme);
20513
21496
  app.provide(IconSymbol, icons);
20514
21497
  app.provide(LocaleSymbol, locale);
21498
+ app.provide(DateAdapterSymbol, date);
20515
21499
  if (IN_BROWSER && options.ssr) {
20516
21500
  if (app.$nuxt) {
20517
21501
  app.$nuxt.hook('app:suspense:resolve', () => {
@@ -20539,7 +21523,8 @@ function createVuetify$1() {
20539
21523
  display: inject.call(this, DisplaySymbol),
20540
21524
  theme: inject.call(this, ThemeSymbol),
20541
21525
  icons: inject.call(this, IconSymbol),
20542
- locale: inject.call(this, LocaleSymbol)
21526
+ locale: inject.call(this, LocaleSymbol),
21527
+ date: inject.call(this, DateAdapterSymbol)
20543
21528
  });
20544
21529
  }
20545
21530
  }
@@ -20552,10 +21537,11 @@ function createVuetify$1() {
20552
21537
  display,
20553
21538
  theme,
20554
21539
  icons,
20555
- locale
21540
+ locale,
21541
+ date
20556
21542
  };
20557
21543
  }
20558
- const version$1 = "3.1.16";
21544
+ const version$1 = "3.2.1";
20559
21545
  createVuetify$1.version = version$1;
20560
21546
 
20561
21547
  // Vue's inject() can only be used in setup
@@ -20567,7 +21553,7 @@ function inject(key) {
20567
21553
  }
20568
21554
  }
20569
21555
 
20570
- const version = "3.1.16";
21556
+ const version = "3.2.1";
20571
21557
 
20572
21558
  const createVuetify = function () {
20573
21559
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -20578,5 +21564,5 @@ const createVuetify = function () {
20578
21564
  });
20579
21565
  };
20580
21566
 
20581
- export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
21567
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
20582
21568
  //# sourceMappingURL=vuetify-labs.esm.js.map