vuetify 3.1.15 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +368 -216
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/importMap.json +72 -68
  5. package/dist/json/tags.json +45 -2
  6. package/dist/json/web-types.json +898 -376
  7. package/dist/vuetify-labs.css +577 -355
  8. package/dist/vuetify-labs.d.ts +5910 -7620
  9. package/dist/vuetify-labs.esm.js +1702 -693
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1701 -691
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +266 -60
  14. package/dist/vuetify.d.ts +6218 -7204
  15. package/dist/vuetify.esm.js +1425 -461
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +1424 -459
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +819 -746
  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 +35 -18
  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 +134 -93
  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 +4 -3
  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 -12
  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 -6
  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 +7 -24
  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 +6 -3
  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 +5834 -6865
  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 +53 -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 +65 -22
  350. package/lib/labs/VDataTable/VDataTable.mjs +1 -1
  351. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  352. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  353. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  354. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  355. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  356. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -2
  357. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  358. package/lib/labs/VDataTable/VDataTableServer.mjs +1 -1
  359. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  360. package/lib/labs/VDataTable/index.d.ts +61 -933
  361. package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
  362. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
  363. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
  364. package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
  365. package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
  366. package/lib/labs/VInfiniteScroll/index.d.ts +321 -0
  367. package/lib/labs/VInfiniteScroll/index.mjs +2 -0
  368. package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
  369. package/lib/labs/VSkeletonLoader/index.d.ts +0 -12
  370. package/lib/labs/components.d.ts +377 -1097
  371. package/lib/labs/components.mjs +1 -1
  372. package/lib/labs/components.mjs.map +1 -1
  373. package/lib/labs/date/DateAdapter.mjs +2 -0
  374. package/lib/labs/date/DateAdapter.mjs.map +1 -0
  375. package/lib/labs/date/adapters/vuetify.d.ts +52 -0
  376. package/lib/labs/date/adapters/vuetify.mjs +399 -0
  377. package/lib/labs/date/adapters/vuetify.mjs.map +1 -0
  378. package/lib/labs/date/date.mjs +39 -0
  379. package/lib/labs/date/date.mjs.map +1 -0
  380. package/lib/labs/date/index.d.ts +40 -0
  381. package/lib/labs/date/index.mjs +2 -0
  382. package/lib/labs/date/index.mjs.map +1 -0
  383. package/lib/labs/index.mjs +3 -2
  384. package/lib/labs/index.mjs.map +1 -1
  385. package/lib/locale/af.mjs +5 -1
  386. package/lib/locale/af.mjs.map +1 -1
  387. package/lib/locale/ar.mjs +5 -1
  388. package/lib/locale/ar.mjs.map +1 -1
  389. package/lib/locale/az.mjs +5 -1
  390. package/lib/locale/az.mjs.map +1 -1
  391. package/lib/locale/bg.mjs +5 -1
  392. package/lib/locale/bg.mjs.map +1 -1
  393. package/lib/locale/ca.mjs +5 -1
  394. package/lib/locale/ca.mjs.map +1 -1
  395. package/lib/locale/ckb.mjs +5 -1
  396. package/lib/locale/ckb.mjs.map +1 -1
  397. package/lib/locale/cs.mjs +5 -1
  398. package/lib/locale/cs.mjs.map +1 -1
  399. package/lib/locale/da.mjs +5 -1
  400. package/lib/locale/da.mjs.map +1 -1
  401. package/lib/locale/de.mjs +5 -1
  402. package/lib/locale/de.mjs.map +1 -1
  403. package/lib/locale/el.mjs +5 -1
  404. package/lib/locale/el.mjs.map +1 -1
  405. package/lib/locale/en.mjs +5 -1
  406. package/lib/locale/en.mjs.map +1 -1
  407. package/lib/locale/es.mjs +5 -1
  408. package/lib/locale/es.mjs.map +1 -1
  409. package/lib/locale/et.mjs +5 -1
  410. package/lib/locale/et.mjs.map +1 -1
  411. package/lib/locale/fa.mjs +5 -1
  412. package/lib/locale/fa.mjs.map +1 -1
  413. package/lib/locale/fi.mjs +5 -1
  414. package/lib/locale/fi.mjs.map +1 -1
  415. package/lib/locale/fr.mjs +5 -1
  416. package/lib/locale/fr.mjs.map +1 -1
  417. package/lib/locale/he.mjs +5 -1
  418. package/lib/locale/he.mjs.map +1 -1
  419. package/lib/locale/hr.mjs +5 -1
  420. package/lib/locale/hr.mjs.map +1 -1
  421. package/lib/locale/hu.mjs +5 -1
  422. package/lib/locale/hu.mjs.map +1 -1
  423. package/lib/locale/id.mjs +5 -1
  424. package/lib/locale/id.mjs.map +1 -1
  425. package/lib/locale/index.d.ts +168 -0
  426. package/lib/locale/it.mjs +5 -1
  427. package/lib/locale/it.mjs.map +1 -1
  428. package/lib/locale/ja.mjs +5 -1
  429. package/lib/locale/ja.mjs.map +1 -1
  430. package/lib/locale/ko.mjs +5 -1
  431. package/lib/locale/ko.mjs.map +1 -1
  432. package/lib/locale/lt.mjs +5 -1
  433. package/lib/locale/lt.mjs.map +1 -1
  434. package/lib/locale/lv.mjs +5 -1
  435. package/lib/locale/lv.mjs.map +1 -1
  436. package/lib/locale/nl.mjs +5 -1
  437. package/lib/locale/nl.mjs.map +1 -1
  438. package/lib/locale/no.mjs +5 -1
  439. package/lib/locale/no.mjs.map +1 -1
  440. package/lib/locale/pl.mjs +5 -1
  441. package/lib/locale/pl.mjs.map +1 -1
  442. package/lib/locale/pt.mjs +5 -1
  443. package/lib/locale/pt.mjs.map +1 -1
  444. package/lib/locale/ro.mjs +5 -1
  445. package/lib/locale/ro.mjs.map +1 -1
  446. package/lib/locale/ru.mjs +5 -1
  447. package/lib/locale/ru.mjs.map +1 -1
  448. package/lib/locale/sk.mjs +5 -1
  449. package/lib/locale/sk.mjs.map +1 -1
  450. package/lib/locale/sl.mjs +5 -1
  451. package/lib/locale/sl.mjs.map +1 -1
  452. package/lib/locale/sr-Cyrl.mjs +5 -1
  453. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  454. package/lib/locale/sr-Latn.mjs +5 -1
  455. package/lib/locale/sr-Latn.mjs.map +1 -1
  456. package/lib/locale/sv.mjs +5 -1
  457. package/lib/locale/sv.mjs.map +1 -1
  458. package/lib/locale/th.mjs +5 -1
  459. package/lib/locale/th.mjs.map +1 -1
  460. package/lib/locale/tr.mjs +5 -1
  461. package/lib/locale/tr.mjs.map +1 -1
  462. package/lib/locale/uk.mjs +5 -1
  463. package/lib/locale/uk.mjs.map +1 -1
  464. package/lib/locale/vi.mjs +5 -1
  465. package/lib/locale/vi.mjs.map +1 -1
  466. package/lib/locale/zh-Hans.mjs +5 -1
  467. package/lib/locale/zh-Hans.mjs.map +1 -1
  468. package/lib/locale/zh-Hant.mjs +5 -1
  469. package/lib/locale/zh-Hant.mjs.map +1 -1
  470. package/lib/styles/main.css +152 -0
  471. package/lib/styles/settings/_utilities.scss +11 -1
  472. package/lib/util/createSimpleFunctional.mjs +9 -4
  473. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  474. package/lib/util/defineComponent.mjs +11 -43
  475. package/lib/util/defineComponent.mjs.map +1 -1
  476. package/lib/util/helpers.mjs +32 -2
  477. package/lib/util/helpers.mjs.map +1 -1
  478. package/lib/util/index.mjs +1 -0
  479. package/lib/util/index.mjs.map +1 -1
  480. package/package.json +4 -3
  481. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +0 -1
  482. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +0 -1
  483. package/lib/labs/VVirtualScroll/index.mjs.map +0 -1
  484. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.css +0 -0
  485. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.sass +0 -0
  486. /package/lib/{labs → components}/VVirtualScroll/index.mjs +0 -0
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.1.15
2
+ * Vuetify v3.2.0
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 } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, shallowRef, inject as inject$1, unref, provide, 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 } 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];
@@ -356,6 +356,32 @@ function callEvent(handler) {
356
356
  handler(...args);
357
357
  }
358
358
  }
359
+ function focusableChildren(el) {
360
+ const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"]):not([disabled])`).join(', ');
361
+ return [...el.querySelectorAll(targets)];
362
+ }
363
+ function focusChild(el, location) {
364
+ const focusable = focusableChildren(el);
365
+ const idx = focusable.indexOf(document.activeElement);
366
+ if (!location) {
367
+ if (!el.contains(document.activeElement)) {
368
+ focusable[0]?.focus();
369
+ }
370
+ } else if (location === 'first') {
371
+ focusable[0]?.focus();
372
+ } else if (location === 'last') {
373
+ focusable.at(-1)?.focus();
374
+ } else {
375
+ let _el;
376
+ let idxx = idx;
377
+ const inc = location === 'next' ? 1 : -1;
378
+ do {
379
+ idxx += inc;
380
+ _el = focusable[idxx];
381
+ } while ((!_el || _el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
382
+ if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
383
+ }
384
+ }
359
385
 
360
386
  const block = ['top', 'bottom'];
361
387
  const inline = ['start', 'end', 'left', 'right'];
@@ -856,44 +882,6 @@ function getContrast(first, second) {
856
882
  return (light + 0.05) / (dark + 0.05);
857
883
  }
858
884
 
859
- // Utilities
860
- function getCurrentInstance(name, message) {
861
- const vm = getCurrentInstance$1();
862
- if (!vm) {
863
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
864
- }
865
- return vm;
866
- }
867
- function getCurrentInstanceName() {
868
- let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
869
- const vm = getCurrentInstance(name).type;
870
- return toKebabCase(vm?.aliasName || vm?.name);
871
- }
872
- let _uid = 0;
873
- let _map = new WeakMap();
874
- function getUid() {
875
- const vm = getCurrentInstance('getUid');
876
- if (_map.has(vm)) return _map.get(vm);else {
877
- const uid = _uid++;
878
- _map.set(vm, uid);
879
- return uid;
880
- }
881
- }
882
- getUid.reset = () => {
883
- _uid = 0;
884
- _map = new WeakMap();
885
- };
886
-
887
- function injectSelf(key) {
888
- const {
889
- provides
890
- } = getCurrentInstance('injectSelf');
891
- if (provides && key in provides) {
892
- // TS doesn't allow symbol as index type
893
- return provides[key];
894
- }
895
- }
896
-
897
885
  /**
898
886
  * Creates a factory function for props definitions.
899
887
  * This is used to define props in a composable then override
@@ -947,17 +935,54 @@ function propsFactory(props, source) {
947
935
 
948
936
  // Types
949
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
+
950
975
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
951
976
  function createDefaults(options) {
952
977
  return ref(options);
953
978
  }
954
- function useDefaults() {
979
+ function injectDefaults() {
955
980
  const defaults = inject$1(DefaultsSymbol);
956
981
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
957
982
  return defaults;
958
983
  }
959
984
  function provideDefaults(defaults, options) {
960
- const injectedDefaults = useDefaults();
985
+ const injectedDefaults = injectDefaults();
961
986
  const providedDefaults = ref(defaults);
962
987
  const newDefaults = computed(() => {
963
988
  const disabled = unref(options?.disabled);
@@ -984,41 +1009,58 @@ function provideDefaults(defaults, options) {
984
1009
  provide(DefaultsSymbol, newDefaults);
985
1010
  return newDefaults;
986
1011
  }
987
-
988
- function useToggleScope(source, fn) {
989
- let scope;
990
- function start() {
991
- scope = effectScope();
992
- scope.run(() => fn.length ? fn(() => {
993
- scope?.stop();
994
- start();
995
- }) : fn());
996
- }
997
- watch(source, active => {
998
- if (active && !scope) {
999
- start();
1000
- } else if (!active) {
1001
- scope?.stop();
1002
- scope = undefined;
1012
+ function propIsDefined(vnode, prop) {
1013
+ return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1014
+ }
1015
+ function useDefaults() {
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;
1003
1034
  }
1004
- }, {
1005
- immediate: true
1006
1035
  });
1007
- onScopeDispose(() => {
1008
- 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
+ }
1009
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
+ };
1010
1058
  }
1011
1059
 
1012
1060
  // Utils
1013
1061
 
1014
1062
  // Types
1015
1063
 
1016
- function propIsDefined(vnode, prop) {
1017
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1018
- }
1019
-
1020
- // No props
1021
-
1022
1064
  // Implementation
1023
1065
  function defineComponent(options) {
1024
1066
  options._setup = options._setup ?? options.setup;
@@ -1030,43 +1072,20 @@ function defineComponent(options) {
1030
1072
  options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1031
1073
  const propKeys = Object.keys(options.props);
1032
1074
  options.filterProps = function filterProps(props) {
1033
- return pick(props, propKeys);
1075
+ return pick(props, propKeys, ['class', 'style']);
1034
1076
  };
1035
1077
  options.props._as = String;
1036
1078
  options.setup = function setup(props, ctx) {
1037
- const defaults = useDefaults();
1079
+ const defaults = injectDefaults();
1038
1080
 
1039
1081
  // Skip props proxy if defaults are not provided
1040
1082
  if (!defaults.value) return options._setup(props, ctx);
1041
- const vm = getCurrentInstance$1();
1042
- const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1043
- const _props = new Proxy(props, {
1044
- get(target, prop) {
1045
- const propValue = Reflect.get(target, prop);
1046
- if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1047
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1048
- }
1049
- return propValue;
1050
- }
1051
- });
1052
- const _subcomponentDefaults = shallowRef();
1053
- watchEffect(() => {
1054
- if (componentDefaults.value) {
1055
- const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1056
- let [key] = _ref;
1057
- return key.startsWith(key[0].toUpperCase());
1058
- });
1059
- if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1060
- }
1061
- });
1083
+ const {
1084
+ props: _props,
1085
+ provideSubDefaults
1086
+ } = useDefaults(props, props._as ?? options.name, defaults);
1062
1087
  const setupBindings = options._setup(_props, ctx);
1063
-
1064
- // If subcomponent defaults are provided, override any
1065
- // subcomponents provided by the component's setup function.
1066
- // This uses injectSelf so must be done after the original setup to work.
1067
- useToggleScope(_subcomponentDefaults, () => {
1068
- provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1069
- });
1088
+ provideSubDefaults();
1070
1089
  return setupBindings;
1071
1090
  };
1072
1091
  }
@@ -1087,15 +1106,19 @@ function createSimpleFunctional(klass) {
1087
1106
  tag: {
1088
1107
  type: String,
1089
1108
  default: tag
1090
- }
1109
+ },
1110
+ ...makeComponentProps()
1091
1111
  },
1092
1112
  setup(props, _ref) {
1093
1113
  let {
1094
1114
  slots
1095
1115
  } = _ref;
1096
- return () => h(props.tag, {
1097
- class: klass
1098
- }, slots.default?.());
1116
+ return () => {
1117
+ return h(props.tag, {
1118
+ class: [klass, props.class],
1119
+ style: props.style
1120
+ }, slots.default?.());
1121
+ };
1099
1122
  }
1100
1123
  });
1101
1124
  }
@@ -1128,6 +1151,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1128
1151
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1129
1152
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1130
1153
 
1154
+ // Utilities
1155
+ function getCurrentInstance(name, message) {
1156
+ const vm = getCurrentInstance$1();
1157
+ if (!vm) {
1158
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1159
+ }
1160
+ return vm;
1161
+ }
1162
+ function getCurrentInstanceName() {
1163
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1164
+ const vm = getCurrentInstance(name).type;
1165
+ return toKebabCase(vm?.aliasName || vm?.name);
1166
+ }
1167
+ let _uid = 0;
1168
+ let _map = new WeakMap();
1169
+ function getUid() {
1170
+ const vm = getCurrentInstance('getUid');
1171
+ if (_map.has(vm)) return _map.get(vm);else {
1172
+ const uid = _uid++;
1173
+ _map.set(vm, uid);
1174
+ return uid;
1175
+ }
1176
+ }
1177
+ getUid.reset = () => {
1178
+ _uid = 0;
1179
+ _map = new WeakMap();
1180
+ };
1181
+
1131
1182
  function getScrollParent(el) {
1132
1183
  while (el) {
1133
1184
  if (hasScrollbar(el)) return el;
@@ -1151,6 +1202,16 @@ function hasScrollbar(el) {
1151
1202
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1152
1203
  }
1153
1204
 
1205
+ function injectSelf(key) {
1206
+ const {
1207
+ provides
1208
+ } = getCurrentInstance('injectSelf');
1209
+ if (provides && key in provides) {
1210
+ // TS doesn't allow symbol as index type
1211
+ return provides[key];
1212
+ }
1213
+ }
1214
+
1154
1215
  function isFixedPosition(el) {
1155
1216
  while (el) {
1156
1217
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1931,7 +1992,11 @@ var en = {
1931
1992
  item: 'Rating {0} of {1}'
1932
1993
  }
1933
1994
  },
1934
- loading: 'Loading...'
1995
+ loading: 'Loading...',
1996
+ infiniteScroll: {
1997
+ loadMore: 'Load more',
1998
+ empty: 'No more'
1999
+ }
1935
2000
  };
1936
2001
 
1937
2002
  const LANG_PREFIX = '$vuetify.';
@@ -2129,6 +2194,7 @@ function useRtl() {
2129
2194
  const VApp = genericComponent()({
2130
2195
  name: 'VApp',
2131
2196
  props: {
2197
+ ...makeComponentProps(),
2132
2198
  ...makeLayoutProps({
2133
2199
  fullHeight: true
2134
2200
  }),
@@ -2151,8 +2217,8 @@ const VApp = genericComponent()({
2151
2217
  } = useRtl();
2152
2218
  useRender(() => createVNode("div", {
2153
2219
  "ref": layoutRef,
2154
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2155
- "style": layoutStyles.value
2220
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2221
+ "style": [layoutStyles.value, props.style]
2156
2222
  }, [createVNode("div", {
2157
2223
  "class": "v-application__wrap"
2158
2224
  }, [slots.default?.()])]));
@@ -2577,6 +2643,7 @@ const VResponsive = genericComponent()({
2577
2643
  props: {
2578
2644
  aspectRatio: [String, Number],
2579
2645
  contentClass: String,
2646
+ ...makeComponentProps(),
2580
2647
  ...makeDimensionProps()
2581
2648
  },
2582
2649
  setup(props, _ref) {
@@ -2590,8 +2657,8 @@ const VResponsive = genericComponent()({
2590
2657
  dimensionStyles
2591
2658
  } = useDimension(props);
2592
2659
  useRender(() => createVNode("div", {
2593
- "class": "v-responsive",
2594
- "style": dimensionStyles.value
2660
+ "class": ['v-responsive', props.class],
2661
+ "style": [dimensionStyles.value, props.style]
2595
2662
  }, [createVNode("div", {
2596
2663
  "class": "v-responsive__sizer",
2597
2664
  "style": aspectStyles.value
@@ -2709,6 +2776,7 @@ const VImg = genericComponent()({
2709
2776
  },
2710
2777
  srcset: String,
2711
2778
  width: [String, Number],
2779
+ ...makeComponentProps(),
2712
2780
  ...makeTransitionProps()
2713
2781
  },
2714
2782
  emits: {
@@ -2896,10 +2964,10 @@ const VImg = genericComponent()({
2896
2964
  useRender(() => withDirectives(createVNode(VResponsive, {
2897
2965
  "class": ['v-img', {
2898
2966
  'v-img--booting': !isBooted.value
2899
- }],
2900
- "style": {
2967
+ }, props.class],
2968
+ "style": [{
2901
2969
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2902
- },
2970
+ }, props.style],
2903
2971
  "aspectRatio": aspectRatio.value,
2904
2972
  "aria-label": props.alt,
2905
2973
  "role": props.alt ? 'img' : undefined
@@ -2934,10 +3002,9 @@ const makeTagProps = propsFactory({
2934
3002
  }
2935
3003
  }, 'tag');
2936
3004
 
2937
- // Types
2938
-
2939
3005
  const makeVToolbarTitleProps = propsFactory({
2940
3006
  text: String,
3007
+ ...makeComponentProps(),
2941
3008
  ...makeTagProps()
2942
3009
  }, 'v-toolbar-title');
2943
3010
  const VToolbarTitle = genericComponent()({
@@ -2950,7 +3017,8 @@ const VToolbarTitle = genericComponent()({
2950
3017
  useRender(() => {
2951
3018
  const hasText = !!(slots.default || slots.text || props.text);
2952
3019
  return createVNode(props.tag, {
2953
- "class": "v-toolbar-title"
3020
+ "class": ['v-toolbar-title', props.class],
3021
+ "style": props.style
2954
3022
  }, {
2955
3023
  default: () => [hasText && createVNode("div", {
2956
3024
  "class": "v-toolbar-title__placeholder"
@@ -3131,6 +3199,7 @@ const makeVToolbarProps = propsFactory({
3131
3199
  image: String,
3132
3200
  title: String,
3133
3201
  ...makeBorderProps(),
3202
+ ...makeComponentProps(),
3134
3203
  ...makeElevationProps(),
3135
3204
  ...makeRoundedProps(),
3136
3205
  ...makeTagProps({
@@ -3181,8 +3250,8 @@ const VToolbar = genericComponent()({
3181
3250
  'v-toolbar--flat': props.flat,
3182
3251
  'v-toolbar--floating': props.floating,
3183
3252
  [`v-toolbar--density-${props.density}`]: true
3184
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3185
- "style": [backgroundColorStyles.value]
3253
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3254
+ "style": [backgroundColorStyles.value, props.style]
3186
3255
  }, {
3187
3256
  default: () => [hasImage && createVNode("div", {
3188
3257
  "key": "image",
@@ -3249,6 +3318,98 @@ const VToolbar = genericComponent()({
3249
3318
 
3250
3319
  // Utilities
3251
3320
 
3321
+ // Types
3322
+
3323
+ // Composables
3324
+ const makeScrollProps = propsFactory({
3325
+ scrollTarget: {
3326
+ type: String
3327
+ },
3328
+ scrollThreshold: {
3329
+ type: [String, Number]
3330
+ }
3331
+ }, 'scroll');
3332
+ function useScroll(props) {
3333
+ let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3334
+ const {
3335
+ thresholdMetCallback,
3336
+ scrollThreshold,
3337
+ canScroll
3338
+ } = args;
3339
+ let previousScroll = 0;
3340
+ const target = ref(null);
3341
+ const currentScroll = ref(0);
3342
+ const savedScroll = ref(0);
3343
+ const currentThreshold = ref(0);
3344
+ const isScrollActive = ref(false);
3345
+ const isScrollingUp = ref(false);
3346
+ const computedScrollThreshold = computed(() => {
3347
+ return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3348
+ });
3349
+ const onScroll = () => {
3350
+ const targetEl = target.value;
3351
+ if (!targetEl || canScroll && !canScroll.value) return;
3352
+ previousScroll = currentScroll.value;
3353
+ currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3354
+ isScrollingUp.value = currentScroll.value < previousScroll;
3355
+ currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3356
+ };
3357
+ watch(isScrollingUp, () => {
3358
+ savedScroll.value = savedScroll.value || currentScroll.value;
3359
+ });
3360
+ watch(isScrollActive, () => {
3361
+ savedScroll.value = 0;
3362
+ });
3363
+ onMounted(() => {
3364
+ watch(() => props.scrollTarget, scrollTarget => {
3365
+ const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3366
+ if (!newTarget) {
3367
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance$1());
3368
+ return;
3369
+ }
3370
+ if (newTarget === target.value) return;
3371
+ target.value?.removeEventListener('scroll', onScroll);
3372
+ target.value = newTarget;
3373
+ target.value.addEventListener('scroll', onScroll, {
3374
+ passive: true
3375
+ });
3376
+ }, {
3377
+ immediate: true
3378
+ });
3379
+ });
3380
+ onBeforeUnmount(() => {
3381
+ target.value?.removeEventListener('scroll', onScroll);
3382
+ });
3383
+ thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3384
+ thresholdMet && thresholdMetCallback({
3385
+ currentThreshold: currentThreshold.value,
3386
+ isScrollingUp: isScrollingUp.value,
3387
+ savedScroll
3388
+ });
3389
+ }, {
3390
+ immediate: true
3391
+ });
3392
+
3393
+ // Do we need this? If yes - seems that
3394
+ // there's no need to expose onScroll
3395
+ canScroll && watch(canScroll, onScroll, {
3396
+ immediate: true
3397
+ });
3398
+ return {
3399
+ computedScrollThreshold,
3400
+ currentScroll,
3401
+ currentThreshold,
3402
+ isScrollActive,
3403
+ // required only for testing
3404
+ // probably can be removed
3405
+ // later (2 chars chlng)
3406
+ isScrollingUp,
3407
+ savedScroll
3408
+ };
3409
+ }
3410
+
3411
+ // Utilities
3412
+
3252
3413
  // Composables
3253
3414
  function useSsrBoot() {
3254
3415
  const isBooted = ref(false);
@@ -3271,13 +3432,7 @@ function useSsrBoot() {
3271
3432
  const VAppBar = genericComponent()({
3272
3433
  name: 'VAppBar',
3273
3434
  props: {
3274
- // TODO: Implement scrolling techniques
3275
- // hideOnScroll: Boolean
3276
- // invertedScroll: Boolean
3277
- // collapseOnScroll: Boolean
3278
- // elevateOnScroll: Boolean
3279
- // shrinkOnScroll: Boolean
3280
- // fadeImageOnScroll: Boolean
3435
+ scrollBehavior: String,
3281
3436
  modelValue: {
3282
3437
  type: Boolean,
3283
3438
  default: true
@@ -3289,6 +3444,7 @@ const VAppBar = genericComponent()({
3289
3444
  },
3290
3445
  ...makeVToolbarProps(),
3291
3446
  ...makeLayoutItemProps(),
3447
+ ...makeScrollProps(),
3292
3448
  height: {
3293
3449
  type: [Number, String],
3294
3450
  default: 64
@@ -3303,11 +3459,63 @@ const VAppBar = genericComponent()({
3303
3459
  } = _ref;
3304
3460
  const vToolbarRef = ref();
3305
3461
  const isActive = useProxiedModel(props, 'modelValue');
3462
+ const scrollBehavior = computed(() => {
3463
+ const behavior = new Set(props.scrollBehavior?.split(' ') ?? []);
3464
+ return {
3465
+ hide: behavior.has('hide'),
3466
+ // fullyHide: behavior.has('fully-hide'),
3467
+ inverted: behavior.has('inverted'),
3468
+ collapse: behavior.has('collapse'),
3469
+ elevate: behavior.has('elevate'),
3470
+ fadeImage: behavior.has('fade-image')
3471
+ // shrink: behavior.has('shrink'),
3472
+ };
3473
+ });
3474
+
3475
+ const canScroll = computed(() => {
3476
+ const behavior = scrollBehavior.value;
3477
+ return behavior.hide ||
3478
+ // behavior.fullyHide ||
3479
+ behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage ||
3480
+ // behavior.shrink ||
3481
+ !isActive.value;
3482
+ });
3483
+ const {
3484
+ currentScroll,
3485
+ currentThreshold,
3486
+ computedScrollThreshold,
3487
+ isScrollingUp
3488
+ } = useScroll(props, {
3489
+ canScroll
3490
+ });
3491
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3492
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3493
+ const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3494
+ const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3306
3495
  const height = computed(() => {
3496
+ if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
3307
3497
  const height = vToolbarRef.value?.contentHeight ?? 0;
3308
3498
  const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
3309
3499
  return height + extensionHeight;
3310
3500
  });
3501
+ function setActive() {
3502
+ const val = currentScroll.value;
3503
+ if (scrollBehavior.value.hide) {
3504
+ if (scrollBehavior.value.inverted) {
3505
+ isActive.value = val > computedScrollThreshold.value;
3506
+ } else {
3507
+ isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3508
+ }
3509
+ } else if (scrollBehavior.value.inverted) {
3510
+ isActive.value = currentScroll.value === 0;
3511
+ } else {
3512
+ isActive.value = true;
3513
+ }
3514
+ }
3515
+ watch(currentScroll, setActive, {
3516
+ immediate: true
3517
+ });
3518
+ watch(scrollBehavior, setActive);
3311
3519
  const {
3312
3520
  ssrBootStyles
3313
3521
  } = useSsrBoot();
@@ -3318,7 +3526,7 @@ const VAppBar = genericComponent()({
3318
3526
  order: computed(() => parseInt(props.order, 10)),
3319
3527
  position: toRef(props, 'location'),
3320
3528
  layoutSize: height,
3321
- elementSize: height,
3529
+ elementSize: ref(undefined),
3322
3530
  active: isActive,
3323
3531
  absolute: toRef(props, 'absolute')
3324
3532
  });
@@ -3328,13 +3536,17 @@ const VAppBar = genericComponent()({
3328
3536
  "ref": vToolbarRef,
3329
3537
  "class": ['v-app-bar', {
3330
3538
  'v-app-bar--bottom': props.location === 'bottom'
3331
- }],
3332
- "style": {
3539
+ }, props.class],
3540
+ "style": [{
3333
3541
  ...layoutItemStyles.value,
3542
+ '--v-toolbar-image-opacity': opacity.value,
3334
3543
  height: undefined,
3335
3544
  ...ssrBootStyles.value
3336
- }
3337
- }, toolbarProps), slots);
3545
+ }, props.style]
3546
+ }, toolbarProps, {
3547
+ "collapse": isCollapsed.value,
3548
+ "flat": isFlat.value
3549
+ }), slots);
3338
3550
  });
3339
3551
  return {};
3340
3552
  }
@@ -3417,6 +3629,7 @@ function useVariant(props) {
3417
3629
  const makeVBtnGroupProps = propsFactory({
3418
3630
  divided: Boolean,
3419
3631
  ...makeBorderProps(),
3632
+ ...makeComponentProps(),
3420
3633
  ...makeDensityProps(),
3421
3634
  ...makeElevationProps(),
3422
3635
  ...makeRoundedProps(),
@@ -3459,7 +3672,8 @@ const VBtnGroup = genericComponent()({
3459
3672
  return createVNode(props.tag, {
3460
3673
  "class": ['v-btn-group', {
3461
3674
  'v-btn-group--divided': props.divided
3462
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3675
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3676
+ "style": props.style
3463
3677
  }, slots);
3464
3678
  });
3465
3679
  }
@@ -3692,8 +3906,10 @@ const VBtnToggle = genericComponent()({
3692
3906
  useRender(() => {
3693
3907
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3694
3908
  return createVNode(VBtnGroup, mergeProps({
3695
- "class": "v-btn-toggle"
3696
- }, btnGroupProps), {
3909
+ "class": ['v-btn-toggle', props.class]
3910
+ }, btnGroupProps, {
3911
+ "style": props.style
3912
+ }), {
3697
3913
  default: () => [slots.default?.({
3698
3914
  isSelected,
3699
3915
  next,
@@ -3764,7 +3980,7 @@ const mdi = {
3764
3980
 
3765
3981
  // Types
3766
3982
 
3767
- const IconValue = [String, Function, Object];
3983
+ const IconValue = [String, Function, Object, Array];
3768
3984
  const IconSymbol = Symbol.for('vuetify:icons');
3769
3985
  const makeIconProps = propsFactory({
3770
3986
  icon: {
@@ -3784,8 +4000,9 @@ const VComponentIcon = genericComponent()({
3784
4000
  slots
3785
4001
  } = _ref;
3786
4002
  return () => {
4003
+ const Icon = props.icon;
3787
4004
  return createVNode(props.tag, null, {
3788
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4005
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3789
4006
  });
3790
4007
  };
3791
4008
  }
@@ -3808,7 +4025,12 @@ const VSvgIcon = defineComponent({
3808
4025
  "viewBox": "0 0 24 24",
3809
4026
  "role": "img",
3810
4027
  "aria-hidden": "true"
3811
- }, [createVNode("path", {
4028
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4029
+ "d": path[0],
4030
+ "fill-opacity": path[1]
4031
+ }, null) : createVNode("path", {
4032
+ "d": path
4033
+ }, null)) : createVNode("path", {
3812
4034
  "d": props.icon
3813
4035
  }, null)])]
3814
4036
  });
@@ -3873,7 +4095,12 @@ const useIcon = props => {
3873
4095
  }
3874
4096
  }
3875
4097
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
3876
- if (typeof icon !== 'string') {
4098
+ if (Array.isArray(icon)) {
4099
+ return {
4100
+ component: VSvgIcon,
4101
+ icon
4102
+ };
4103
+ } else if (typeof icon !== 'string') {
3877
4104
  return {
3878
4105
  component: VComponentIcon,
3879
4106
  icon
@@ -3930,6 +4157,7 @@ const makeVIconProps = propsFactory({
3930
4157
  start: Boolean,
3931
4158
  end: Boolean,
3932
4159
  icon: IconValue,
4160
+ ...makeComponentProps(),
3933
4161
  ...makeSizeProps(),
3934
4162
  ...makeTagProps({
3935
4163
  tag: 'i'
@@ -3972,12 +4200,12 @@ const VIcon = genericComponent()({
3972
4200
  'v-icon--clickable': !!attrs.onClick,
3973
4201
  'v-icon--start': props.start,
3974
4202
  'v-icon--end': props.end
3975
- }],
4203
+ }, props.class],
3976
4204
  "style": [!sizeClasses.value ? {
3977
4205
  fontSize: convertToUnit(props.size),
3978
4206
  height: convertToUnit(props.size),
3979
4207
  width: convertToUnit(props.size)
3980
- } : undefined, textColorStyles.value],
4208
+ } : undefined, textColorStyles.value, props.style],
3981
4209
  "role": attrs.onClick ? 'button' : undefined,
3982
4210
  "aria-hidden": !attrs.onClick
3983
4211
  }, {
@@ -3988,14 +4216,14 @@ const VIcon = genericComponent()({
3988
4216
  });
3989
4217
 
3990
4218
  // Utilities
3991
- function useIntersectionObserver(callback) {
4219
+ function useIntersectionObserver(callback, options) {
3992
4220
  const intersectionRef = ref();
3993
4221
  const isIntersecting = ref(false);
3994
4222
  if (SUPPORTS_INTERSECTION) {
3995
4223
  const observer = new IntersectionObserver(entries => {
3996
4224
  callback?.(entries, observer);
3997
4225
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
3998
- });
4226
+ }, options);
3999
4227
  onBeforeUnmount(() => {
4000
4228
  observer.disconnect();
4001
4229
  });
@@ -4035,6 +4263,7 @@ const VProgressCircular = genericComponent()({
4035
4263
  type: [Number, String],
4036
4264
  default: 4
4037
4265
  },
4266
+ ...makeComponentProps(),
4038
4267
  ...makeSizeProps(),
4039
4268
  ...makeTagProps({
4040
4269
  tag: 'div'
@@ -4090,8 +4319,8 @@ const VProgressCircular = genericComponent()({
4090
4319
  'v-progress-circular--indeterminate': !!props.indeterminate,
4091
4320
  'v-progress-circular--visible': isIntersecting.value,
4092
4321
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4093
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4094
- "style": [sizeStyles.value, textColorStyles.value],
4322
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4323
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4095
4324
  "role": "progressbar",
4096
4325
  "aria-valuemin": "0",
4097
4326
  "aria-valuemax": "100",
@@ -4510,6 +4739,7 @@ const VProgressLinear = genericComponent()({
4510
4739
  stream: Boolean,
4511
4740
  striped: Boolean,
4512
4741
  roundedBar: Boolean,
4742
+ ...makeComponentProps(),
4513
4743
  ...makeLocationProps({
4514
4744
  location: 'top'
4515
4745
  }),
@@ -4581,14 +4811,14 @@ const VProgressLinear = genericComponent()({
4581
4811
  'v-progress-linear--rounded': props.rounded,
4582
4812
  'v-progress-linear--rounded-bar': props.roundedBar,
4583
4813
  'v-progress-linear--striped': props.striped
4584
- }, roundedClasses.value, themeClasses.value],
4585
- "style": {
4814
+ }, roundedClasses.value, themeClasses.value, props.class],
4815
+ "style": [{
4586
4816
  bottom: props.location === 'bottom' ? 0 : undefined,
4587
4817
  top: props.location === 'top' ? 0 : undefined,
4588
4818
  height: props.active ? convertToUnit(height.value) : 0,
4589
4819
  '--v-progress-linear-height': convertToUnit(height.value),
4590
4820
  ...locationStyles.value
4591
- },
4821
+ }, props.style],
4592
4822
  "role": "progressbar",
4593
4823
  "aria-hidden": props.active ? 'false' : 'true',
4594
4824
  "aria-valuemin": "0",
@@ -4797,8 +5027,9 @@ const makeVBtnProps = propsFactory({
4797
5027
  type: Boolean,
4798
5028
  default: true
4799
5029
  },
5030
+ text: String,
4800
5031
  ...makeBorderProps(),
4801
- ...makeRoundedProps(),
5032
+ ...makeComponentProps(),
4802
5033
  ...makeDensityProps(),
4803
5034
  ...makeDimensionProps(),
4804
5035
  ...makeElevationProps(),
@@ -4806,6 +5037,7 @@ const makeVBtnProps = propsFactory({
4806
5037
  ...makeLoaderProps(),
4807
5038
  ...makeLocationProps(),
4808
5039
  ...makePositionProps(),
5040
+ ...makeRoundedProps(),
4809
5041
  ...makeRouterProps(),
4810
5042
  ...makeSizeProps(),
4811
5043
  ...makeTagProps({
@@ -4903,8 +5135,8 @@ const VBtn = genericComponent()({
4903
5135
  'v-btn--icon': !!props.icon,
4904
5136
  'v-btn--loading': props.loading,
4905
5137
  'v-btn--stacked': props.stacked
4906
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
4907
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
5138
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5139
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
4908
5140
  "disabled": isDisabled.value || undefined,
4909
5141
  "href": link.href.value,
4910
5142
  "onClick": e => {
@@ -4942,7 +5174,9 @@ const VBtn = genericComponent()({
4942
5174
  icon: props.icon
4943
5175
  }
4944
5176
  }
4945
- }, slots.default)]), !props.icon && hasAppend && createVNode("span", {
5177
+ }, {
5178
+ default: () => [slots.default?.() ?? props.text]
5179
+ })]), !props.icon && hasAppend && createVNode("span", {
4946
5180
  "key": "append",
4947
5181
  "class": "v-btn__append"
4948
5182
  }, [!slots.append ? createVNode(VIcon, {
@@ -4979,15 +5213,17 @@ const VAppBarNavIcon = genericComponent()({
4979
5213
  icon: {
4980
5214
  type: IconValue,
4981
5215
  default: '$menu'
4982
- }
5216
+ },
5217
+ ...makeComponentProps()
4983
5218
  },
4984
5219
  setup(props, _ref) {
4985
5220
  let {
4986
5221
  slots
4987
5222
  } = _ref;
4988
5223
  useRender(() => createVNode(VBtn, {
4989
- "class": "v-app-bar-nav-icon",
4990
- "icon": props.icon
5224
+ "class": ['v-app-bar-nav-icon', props.class],
5225
+ "icon": props.icon,
5226
+ "style": props.style
4991
5227
  }, slots));
4992
5228
  return {};
4993
5229
  }
@@ -4995,9 +5231,12 @@ const VAppBarNavIcon = genericComponent()({
4995
5231
 
4996
5232
  const VToolbarItems = genericComponent()({
4997
5233
  name: 'VToolbarItems',
4998
- props: makeVariantProps({
4999
- variant: 'text'
5000
- }),
5234
+ props: {
5235
+ ...makeComponentProps(),
5236
+ ...makeVariantProps({
5237
+ variant: 'text'
5238
+ })
5239
+ },
5001
5240
  setup(props, _ref) {
5002
5241
  let {
5003
5242
  slots
@@ -5010,7 +5249,8 @@ const VToolbarItems = genericComponent()({
5010
5249
  }
5011
5250
  });
5012
5251
  useRender(() => createVNode("div", {
5013
- "class": "v-toolbar-items"
5252
+ "class": ['v-toolbar-items', props.class],
5253
+ "style": props.style
5014
5254
  }, [slots.default?.()]));
5015
5255
  return {};
5016
5256
  }
@@ -5072,6 +5312,7 @@ const VAlert = genericComponent()({
5072
5312
  type: String,
5073
5313
  validator: val => allowedTypes.includes(val)
5074
5314
  },
5315
+ ...makeComponentProps(),
5075
5316
  ...makeDensityProps(),
5076
5317
  ...makeDimensionProps(),
5077
5318
  ...makeElevationProps(),
@@ -5154,8 +5395,8 @@ const VAlert = genericComponent()({
5154
5395
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5155
5396
  }, {
5156
5397
  'v-alert--prominent': props.prominent
5157
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
5158
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
5398
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5399
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5159
5400
  "role": "alert"
5160
5401
  }, {
5161
5402
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5249,6 +5490,7 @@ const VLabel = genericComponent()({
5249
5490
  props: {
5250
5491
  text: String,
5251
5492
  clickable: Boolean,
5493
+ ...makeComponentProps(),
5252
5494
  ...makeThemeProps()
5253
5495
  },
5254
5496
  setup(props, _ref) {
@@ -5258,7 +5500,8 @@ const VLabel = genericComponent()({
5258
5500
  useRender(() => createVNode("label", {
5259
5501
  "class": ['v-label', {
5260
5502
  'v-label--clickable': props.clickable
5261
- }]
5503
+ }, props.class],
5504
+ "style": props.style
5262
5505
  }, [props.text, slots.default?.()]));
5263
5506
  return {};
5264
5507
  }
@@ -5267,7 +5510,8 @@ const VLabel = genericComponent()({
5267
5510
  const VFieldLabel = genericComponent()({
5268
5511
  name: 'VFieldLabel',
5269
5512
  props: {
5270
- floating: Boolean
5513
+ floating: Boolean,
5514
+ ...makeComponentProps()
5271
5515
  },
5272
5516
  setup(props, _ref) {
5273
5517
  let {
@@ -5276,7 +5520,8 @@ const VFieldLabel = genericComponent()({
5276
5520
  useRender(() => createVNode(VLabel, {
5277
5521
  "class": ['v-field-label', {
5278
5522
  'v-field-label--floating': props.floating
5279
- }],
5523
+ }, props.class],
5524
+ "style": props.style,
5280
5525
  "aria-hidden": props.floating || undefined
5281
5526
  }, slots));
5282
5527
  return {};
@@ -5316,7 +5561,7 @@ function useFocus(props) {
5316
5561
 
5317
5562
  // Types
5318
5563
 
5319
- const allowedVariants$1 = ['underlined', 'outlined', 'filled', 'solo', 'plain'];
5564
+ const allowedVariants$1 = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'];
5320
5565
  const makeVFieldProps = propsFactory({
5321
5566
  appendInnerIcon: IconValue,
5322
5567
  bgColor: String,
@@ -5327,9 +5572,11 @@ const makeVFieldProps = propsFactory({
5327
5572
  },
5328
5573
  active: Boolean,
5329
5574
  color: String,
5575
+ baseColor: String,
5330
5576
  dirty: Boolean,
5331
5577
  disabled: Boolean,
5332
5578
  error: Boolean,
5579
+ flat: Boolean,
5333
5580
  label: String,
5334
5581
  persistentClear: Boolean,
5335
5582
  prependInnerIcon: IconValue,
@@ -5343,8 +5590,10 @@ const makeVFieldProps = propsFactory({
5343
5590
  'onClick:clear': EventProp(),
5344
5591
  'onClick:appendInner': EventProp(),
5345
5592
  'onClick:prependInner': EventProp(),
5346
- ...makeThemeProps(),
5347
- ...makeLoaderProps()
5593
+ ...makeComponentProps(),
5594
+ ...makeLoaderProps(),
5595
+ ...makeRoundedProps(),
5596
+ ...makeThemeProps()
5348
5597
  }, 'v-field');
5349
5598
  const VField = genericComponent()({
5350
5599
  name: 'VField',
@@ -5379,6 +5628,9 @@ const VField = genericComponent()({
5379
5628
  const {
5380
5629
  InputIcon
5381
5630
  } = useInputIcon(props);
5631
+ const {
5632
+ roundedClasses
5633
+ } = useRounded(props);
5382
5634
  const isActive = computed(() => props.dirty || props.active);
5383
5635
  const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));
5384
5636
  const uid = getUid();
@@ -5395,7 +5647,7 @@ const VField = genericComponent()({
5395
5647
  textColorClasses,
5396
5648
  textColorStyles
5397
5649
  } = useTextColor(computed(() => {
5398
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5650
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5399
5651
  }));
5400
5652
  watch(isActive, val => {
5401
5653
  if (hasLabel.value) {
@@ -5464,6 +5716,7 @@ const VField = genericComponent()({
5464
5716
  'v-field--disabled': props.disabled,
5465
5717
  'v-field--dirty': props.dirty,
5466
5718
  'v-field--error': props.error,
5719
+ 'v-field--flat': props.flat,
5467
5720
  'v-field--has-background': !!props.bgColor,
5468
5721
  'v-field--persistent-clear': props.persistentClear,
5469
5722
  'v-field--prepended': hasPrepend,
@@ -5471,8 +5724,8 @@ const VField = genericComponent()({
5471
5724
  'v-field--single-line': props.singleLine,
5472
5725
  'v-field--no-label': !label,
5473
5726
  [`v-field--variant-${props.variant}`]: true
5474
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
5475
- "style": [backgroundColorStyles.value, textColorStyles.value],
5727
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5728
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5476
5729
  "onClick": onClick
5477
5730
  }, attrs), [createVNode("div", {
5478
5731
  "class": "v-field__overlay"
@@ -5491,7 +5744,7 @@ const VField = genericComponent()({
5491
5744
  }, null), slots['prepend-inner']?.(slotProps.value)]), createVNode("div", {
5492
5745
  "class": "v-field__field",
5493
5746
  "data-no-activator": ""
5494
- }, [['solo', 'filled'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5747
+ }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5495
5748
  "key": "floating-label",
5496
5749
  "ref": floatingLabelRef,
5497
5750
  "class": [textColorClasses.value],
@@ -5560,7 +5813,7 @@ const VField = genericComponent()({
5560
5813
  });
5561
5814
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5562
5815
  function filterFieldProps(attrs) {
5563
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5816
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5564
5817
  return pick(attrs, keys);
5565
5818
  }
5566
5819
 
@@ -5575,6 +5828,7 @@ const VMessages = genericComponent()({
5575
5828
  type: [Array, String],
5576
5829
  default: () => []
5577
5830
  },
5831
+ ...makeComponentProps(),
5578
5832
  ...makeTransitionProps({
5579
5833
  transition: {
5580
5834
  component: VSlideYTransition,
@@ -5595,8 +5849,8 @@ const VMessages = genericComponent()({
5595
5849
  useRender(() => createVNode(MaybeTransition, {
5596
5850
  "transition": props.transition,
5597
5851
  "tag": "div",
5598
- "class": ['v-messages', textColorClasses.value],
5599
- "style": textColorStyles.value,
5852
+ "class": ['v-messages', textColorClasses.value, props.class],
5853
+ "style": [textColorStyles.value, props.style],
5600
5854
  "role": "alert",
5601
5855
  "aria-live": "polite"
5602
5856
  }, {
@@ -5892,6 +6146,7 @@ const makeVInputProps = propsFactory({
5892
6146
  },
5893
6147
  'onClick:prepend': EventProp(),
5894
6148
  'onClick:append': EventProp(),
6149
+ ...makeComponentProps(),
5895
6150
  ...makeDensityProps(),
5896
6151
  ...makeValidationProps()
5897
6152
  }, 'v-input');
@@ -5959,7 +6214,8 @@ const VInput = genericComponent()({
5959
6214
  const hasMessages = messages.value.length > 0;
5960
6215
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
5961
6216
  return createVNode("div", {
5962
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6217
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6218
+ "style": props.style
5963
6219
  }, [hasPrepend && createVNode("div", {
5964
6220
  "key": "prepend",
5965
6221
  "class": "v-input__prepend"
@@ -6002,6 +6258,7 @@ const VCounter = genericComponent()({
6002
6258
  type: [Number, String],
6003
6259
  default: 0
6004
6260
  },
6261
+ ...makeComponentProps(),
6005
6262
  ...makeTransitionProps({
6006
6263
  transition: {
6007
6264
  component: VSlideYTransition
@@ -6019,7 +6276,8 @@ const VCounter = genericComponent()({
6019
6276
  "transition": props.transition
6020
6277
  }, {
6021
6278
  default: () => [withDirectives(createVNode("div", {
6022
- "class": "v-counter"
6279
+ "class": ['v-counter', props.class],
6280
+ "style": props.style
6023
6281
  }, [slots.default ? slots.default({
6024
6282
  counter: counter.value,
6025
6283
  max: props.max,
@@ -6222,7 +6480,8 @@ const VTextField = genericComponent()({
6222
6480
  'v-text-field--prefixed': props.prefix,
6223
6481
  'v-text-field--suffixed': props.suffix,
6224
6482
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6225
- }]
6483
+ }, props.class],
6484
+ "style": props.style
6226
6485
  }, rootAttrs, inputProps, {
6227
6486
  "focused": isFocused.value
6228
6487
  }), {
@@ -6338,6 +6597,7 @@ const VSelectionControlGroup = genericComponent()({
6338
6597
  type: String,
6339
6598
  default: 'VSelectionControl'
6340
6599
  },
6600
+ ...makeComponentProps(),
6341
6601
  ...makeSelectionControlGroupProps()
6342
6602
  },
6343
6603
  emits: {
@@ -6385,7 +6645,8 @@ const VSelectionControlGroup = genericComponent()({
6385
6645
  useRender(() => createVNode("div", {
6386
6646
  "class": ['v-selection-control-group', {
6387
6647
  'v-selection-control-group--inline': props.inline
6388
- }],
6648
+ }, props.class],
6649
+ "style": props.style,
6389
6650
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6390
6651
  }, [slots.default?.()]));
6391
6652
  return {};
@@ -6399,6 +6660,7 @@ const makeSelectionControlProps = propsFactory({
6399
6660
  trueValue: null,
6400
6661
  falseValue: null,
6401
6662
  value: null,
6663
+ ...makeComponentProps(),
6402
6664
  ...makeSelectionControlGroupProps()
6403
6665
  }, 'v-selection-control');
6404
6666
  function useSelectionControl(props) {
@@ -6513,8 +6775,10 @@ const VSelectionControl = genericComponent()({
6513
6775
  'v-selection-control--focused': isFocused.value,
6514
6776
  'v-selection-control--focus-visible': isFocusVisible.value,
6515
6777
  'v-selection-control--inline': props.inline
6516
- }, densityClasses.value]
6517
- }, rootAttrs), [createVNode("div", {
6778
+ }, densityClasses.value, props.class]
6779
+ }, rootAttrs, {
6780
+ "style": props.style
6781
+ }), [createVNode("div", {
6518
6782
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6519
6783
  "style": textColorStyles.value
6520
6784
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6596,7 +6860,8 @@ const VCheckboxBtn = genericComponent()({
6596
6860
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6597
6861
  "modelValue": model.value,
6598
6862
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6599
- "class": "v-checkbox-btn",
6863
+ "class": ['v-checkbox-btn', props.class],
6864
+ "style": props.style,
6600
6865
  "type": "checkbox",
6601
6866
  "inline": true,
6602
6867
  "falseIcon": falseIcon.value,
@@ -6636,10 +6901,11 @@ const VCheckbox = genericComponent()({
6636
6901
  const [inputProps, _1] = VInput.filterProps(props);
6637
6902
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6638
6903
  return createVNode(VInput, mergeProps({
6639
- "class": "v-checkbox"
6904
+ "class": ['v-checkbox', props.class]
6640
6905
  }, inputAttrs, inputProps, {
6641
6906
  "id": id.value,
6642
- "focused": isFocused.value
6907
+ "focused": isFocused.value,
6908
+ "style": props.style
6643
6909
  }), {
6644
6910
  ...slots,
6645
6911
  default: _ref2 => {
@@ -6670,6 +6936,7 @@ const makeVAvatarProps = propsFactory({
6670
6936
  end: Boolean,
6671
6937
  icon: IconValue,
6672
6938
  image: String,
6939
+ ...makeComponentProps(),
6673
6940
  ...makeDensityProps(),
6674
6941
  ...makeRoundedProps(),
6675
6942
  ...makeSizeProps(),
@@ -6708,8 +6975,8 @@ const VAvatar = genericComponent()({
6708
6975
  "class": ['v-avatar', {
6709
6976
  'v-avatar--start': props.start,
6710
6977
  'v-avatar--end': props.end
6711
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6712
- "style": [colorStyles.value, sizeStyles.value]
6978
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6979
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6713
6980
  }, {
6714
6981
  default: () => [props.image ? createVNode(VImg, {
6715
6982
  "key": "image",
@@ -6737,6 +7004,7 @@ const VChipGroup = genericComponent()({
6737
7004
  type: Function,
6738
7005
  default: deepEqual
6739
7006
  },
7007
+ ...makeComponentProps(),
6740
7008
  ...makeGroupProps({
6741
7009
  selectedClass: 'v-chip--selected'
6742
7010
  }),
@@ -6774,7 +7042,8 @@ const VChipGroup = genericComponent()({
6774
7042
  useRender(() => createVNode(props.tag, {
6775
7043
  "class": ['v-chip-group', {
6776
7044
  'v-chip-group--column': props.column
6777
- }, themeClasses.value]
7045
+ }, themeClasses.value, props.class],
7046
+ "style": props.style
6778
7047
  }, {
6779
7048
  default: () => [slots.default?.({
6780
7049
  isSelected,
@@ -6788,8 +7057,6 @@ const VChipGroup = genericComponent()({
6788
7057
  }
6789
7058
  });
6790
7059
 
6791
- // Types
6792
-
6793
7060
  const VChip = genericComponent()({
6794
7061
  name: 'VChip',
6795
7062
  directives: {
@@ -6834,6 +7101,7 @@ const VChip = genericComponent()({
6834
7101
  onClick: EventProp(),
6835
7102
  onClickOnce: EventProp(),
6836
7103
  ...makeBorderProps(),
7104
+ ...makeComponentProps(),
6837
7105
  ...makeDensityProps(),
6838
7106
  ...makeElevationProps(),
6839
7107
  ...makeGroupItemProps(),
@@ -6926,8 +7194,8 @@ const VChip = genericComponent()({
6926
7194
  'v-chip--link': isClickable.value,
6927
7195
  'v-chip--filter': hasFilter,
6928
7196
  'v-chip--pill': props.pill
6929
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value],
6930
- "style": [hasColor ? colorStyles.value : undefined],
7197
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7198
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
6931
7199
  "disabled": props.disabled || undefined,
6932
7200
  "draggable": props.draggable,
6933
7201
  "href": link.href.value,
@@ -7036,6 +7304,7 @@ const VDivider = genericComponent()({
7036
7304
  length: [Number, String],
7037
7305
  thickness: [Number, String],
7038
7306
  vertical: Boolean,
7307
+ ...makeComponentProps(),
7039
7308
  ...makeThemeProps()
7040
7309
  },
7041
7310
  setup(props, _ref) {
@@ -7064,8 +7333,8 @@ const VDivider = genericComponent()({
7064
7333
  'v-divider': true,
7065
7334
  'v-divider--inset': props.inset,
7066
7335
  'v-divider--vertical': props.vertical
7067
- }, themeClasses.value, textColorClasses.value],
7068
- "style": [dividerStyles.value, textColorStyles.value],
7336
+ }, themeClasses.value, textColorClasses.value, props.class],
7337
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7069
7338
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7070
7339
  "role": `${attrs.role || 'separator'}`
7071
7340
  }, null));
@@ -7564,6 +7833,7 @@ const makeVListGroupProps = propsFactory({
7564
7833
  fluid: Boolean,
7565
7834
  subgroup: Boolean,
7566
7835
  value: null,
7836
+ ...makeComponentProps(),
7567
7837
  ...makeTagProps()
7568
7838
  }, 'v-list-group');
7569
7839
  const VListGroup = genericComponent()({
@@ -7612,7 +7882,8 @@ const VListGroup = genericComponent()({
7612
7882
  'v-list-group--fluid': props.fluid,
7613
7883
  'v-list-group--subgroup': props.subgroup,
7614
7884
  'v-list-group--open': isOpen.value
7615
- }]
7885
+ }, props.class],
7886
+ "style": props.style
7616
7887
  }, {
7617
7888
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7618
7889
  "defaults": activatorDefaults.value
@@ -7679,6 +7950,7 @@ const VListItem = genericComponent()({
7679
7950
  onClick: EventProp(),
7680
7951
  onClickOnce: EventProp(),
7681
7952
  ...makeBorderProps(),
7953
+ ...makeComponentProps(),
7682
7954
  ...makeDensityProps(),
7683
7955
  ...makeDimensionProps(),
7684
7956
  ...makeElevationProps(),
@@ -7789,8 +8061,8 @@ const VListItem = genericComponent()({
7789
8061
  'v-list-item--nav': props.nav,
7790
8062
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7791
8063
  [`${props.activeClass}`]: props.activeClass && isActive.value
7792
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
7793
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
8064
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8065
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
7794
8066
  "href": link.href.value,
7795
8067
  "tabindex": isClickable.value ? 0 : undefined,
7796
8068
  "onClick": onClick,
@@ -7883,6 +8155,7 @@ const VListSubheader = genericComponent()({
7883
8155
  inset: Boolean,
7884
8156
  sticky: Boolean,
7885
8157
  title: String,
8158
+ ...makeComponentProps(),
7886
8159
  ...makeTagProps()
7887
8160
  },
7888
8161
  setup(props, _ref) {
@@ -7899,10 +8172,10 @@ const VListSubheader = genericComponent()({
7899
8172
  "class": ['v-list-subheader', {
7900
8173
  'v-list-subheader--inset': props.inset,
7901
8174
  'v-list-subheader--sticky': props.sticky
7902
- }, textColorClasses.value],
7903
- "style": {
8175
+ }, textColorClasses.value, props.class],
8176
+ "style": [{
7904
8177
  textColorStyles
7905
- }
8178
+ }, props.style]
7906
8179
  }, {
7907
8180
  default: () => [hasText && createVNode("div", {
7908
8181
  "class": "v-list-subheader__text"
@@ -8122,6 +8395,7 @@ const VList = genericComponent()({
8122
8395
  openStrategy: 'list'
8123
8396
  }),
8124
8397
  ...makeBorderProps(),
8398
+ ...makeComponentProps(),
8125
8399
  ...makeDensityProps(),
8126
8400
  ...makeDimensionProps(),
8127
8401
  ...makeElevationProps(),
@@ -8223,27 +8497,8 @@ const VList = genericComponent()({
8223
8497
  e.preventDefault();
8224
8498
  }
8225
8499
  function focus(location) {
8226
- if (!contentRef.value) return;
8227
- const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8228
- const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8229
- const idx = focusable.indexOf(document.activeElement);
8230
- if (!location) {
8231
- if (!contentRef.value.contains(document.activeElement)) {
8232
- focusable[0]?.focus();
8233
- }
8234
- } else if (location === 'first') {
8235
- focusable[0]?.focus();
8236
- } else if (location === 'last') {
8237
- focusable.at(-1)?.focus();
8238
- } else {
8239
- let el;
8240
- let idxx = idx;
8241
- const inc = location === 'next' ? 1 : -1;
8242
- do {
8243
- idxx += inc;
8244
- el = focusable[idxx];
8245
- } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
8246
- if (el) el.focus();else focus(location === 'next' ? 'first' : 'last');
8500
+ if (contentRef.value) {
8501
+ return focusChild(contentRef.value, location);
8247
8502
  }
8248
8503
  }
8249
8504
  useRender(() => {
@@ -8252,8 +8507,8 @@ const VList = genericComponent()({
8252
8507
  "class": ['v-list', {
8253
8508
  'v-list--disabled': props.disabled,
8254
8509
  'v-list--nav': props.nav
8255
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
8256
- "style": [backgroundColorStyles.value, dimensionStyles.value],
8510
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8511
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8257
8512
  "role": "listbox",
8258
8513
  "aria-activedescendant": undefined,
8259
8514
  "onFocusin": onFocusin,
@@ -8281,6 +8536,7 @@ const VListItemAction = genericComponent()({
8281
8536
  props: {
8282
8537
  start: Boolean,
8283
8538
  end: Boolean,
8539
+ ...makeComponentProps(),
8284
8540
  ...makeTagProps()
8285
8541
  },
8286
8542
  setup(props, _ref) {
@@ -8291,7 +8547,8 @@ const VListItemAction = genericComponent()({
8291
8547
  "class": ['v-list-item-action', {
8292
8548
  'v-list-item-action--start': props.start,
8293
8549
  'v-list-item-action--end': props.end
8294
- }]
8550
+ }, props.class],
8551
+ "style": props.style
8295
8552
  }, slots));
8296
8553
  return {};
8297
8554
  }
@@ -8302,6 +8559,7 @@ const VListItemMedia = genericComponent()({
8302
8559
  props: {
8303
8560
  start: Boolean,
8304
8561
  end: Boolean,
8562
+ ...makeComponentProps(),
8305
8563
  ...makeTagProps()
8306
8564
  },
8307
8565
  setup(props, _ref) {
@@ -8313,7 +8571,8 @@ const VListItemMedia = genericComponent()({
8313
8571
  "class": ['v-list-item-media', {
8314
8572
  'v-list-item-media--start': props.start,
8315
8573
  'v-list-item-media--end': props.end
8316
- }]
8574
+ }, props.class],
8575
+ "style": props.style
8317
8576
  }, slots);
8318
8577
  });
8319
8578
  return {};
@@ -9554,6 +9813,7 @@ const makeVOverlayProps = propsFactory({
9554
9813
  default: 2000
9555
9814
  },
9556
9815
  ...makeActivatorProps(),
9816
+ ...makeComponentProps(),
9557
9817
  ...makeDimensionProps(),
9558
9818
  ...makeLazyProps(),
9559
9819
  ...makeLocationStrategyProps(),
@@ -9721,10 +9981,10 @@ const VOverlay = genericComponent()({
9721
9981
  'v-overlay--absolute': props.absolute || props.contained,
9722
9982
  'v-overlay--active': isActive.value,
9723
9983
  'v-overlay--contained': props.contained
9724
- }, themeClasses.value, rtlClasses.value],
9984
+ }, themeClasses.value, rtlClasses.value, props.class],
9725
9985
  "style": [stackStyles.value, {
9726
9986
  top: convertToUnit(top.value)
9727
- }],
9987
+ }, props.style],
9728
9988
  "ref": root
9729
9989
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9730
9990
  "color": scrimColor,
@@ -9830,7 +10090,8 @@ const VMenu = genericComponent()({
9830
10090
  const [overlayProps] = VOverlay.filterProps(props);
9831
10091
  return createVNode(VOverlay, mergeProps({
9832
10092
  "ref": overlay,
9833
- "class": ['v-menu']
10093
+ "class": ['v-menu', props.class],
10094
+ "style": props.style
9834
10095
  }, overlayProps, {
9835
10096
  "modelValue": isActive.value,
9836
10097
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10049,7 +10310,8 @@ const VSelect = genericComponent()({
10049
10310
  'v-select--chips': !!props.chips,
10050
10311
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10051
10312
  'v-select--selected': model.value.length
10052
- }],
10313
+ }, props.class],
10314
+ "style": props.style,
10053
10315
  "appendInnerIcon": props.menuIcon,
10054
10316
  "readonly": true,
10055
10317
  "placeholder": placeholder,
@@ -10492,7 +10754,8 @@ const VAutocomplete = genericComponent()({
10492
10754
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10493
10755
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10494
10756
  'v-autocomplete--selection-slot': !!slots.selection
10495
- }],
10757
+ }, props.class],
10758
+ "style": props.style,
10496
10759
  "appendInnerIcon": props.menuIcon,
10497
10760
  "readonly": props.readonly,
10498
10761
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10606,8 +10869,6 @@ const VAutocomplete = genericComponent()({
10606
10869
  }
10607
10870
  });
10608
10871
 
10609
- // Types
10610
-
10611
10872
  const VBadge = genericComponent()({
10612
10873
  name: 'VBadge',
10613
10874
  inheritAttrs: false,
@@ -10631,6 +10892,7 @@ const VBadge = genericComponent()({
10631
10892
  offsetX: [Number, String],
10632
10893
  offsetY: [Number, String],
10633
10894
  textColor: String,
10895
+ ...makeComponentProps(),
10634
10896
  ...makeLocationProps({
10635
10897
  location: 'top end'
10636
10898
  }),
@@ -10675,8 +10937,10 @@ const VBadge = genericComponent()({
10675
10937
  'v-badge--dot': props.dot,
10676
10938
  'v-badge--floating': props.floating,
10677
10939
  'v-badge--inline': props.inline
10678
- }]
10679
- }, attrs), {
10940
+ }, props.class]
10941
+ }, attrs, {
10942
+ "style": props.style
10943
+ }), {
10680
10944
  default: () => [createVNode("div", {
10681
10945
  "class": "v-badge__wrapper"
10682
10946
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10703,7 +10967,8 @@ const VBannerActions = genericComponent()({
10703
10967
  name: 'VBannerActions',
10704
10968
  props: {
10705
10969
  color: String,
10706
- density: String
10970
+ density: String,
10971
+ ...makeComponentProps()
10707
10972
  },
10708
10973
  setup(props, _ref) {
10709
10974
  let {
@@ -10717,7 +10982,8 @@ const VBannerActions = genericComponent()({
10717
10982
  }
10718
10983
  });
10719
10984
  useRender(() => createVNode("div", {
10720
- "class": "v-banner-actions"
10985
+ "class": ['v-banner-actions', props.class],
10986
+ "style": props.style
10721
10987
  }, [slots.default?.()]));
10722
10988
  return {};
10723
10989
  }
@@ -10738,6 +11004,7 @@ const VBanner = genericComponent()({
10738
11004
  sticky: Boolean,
10739
11005
  text: String,
10740
11006
  ...makeBorderProps(),
11007
+ ...makeComponentProps(),
10741
11008
  ...makeDensityProps(),
10742
11009
  ...makeDimensionProps(),
10743
11010
  ...makeElevationProps(),
@@ -10795,8 +11062,8 @@ const VBanner = genericComponent()({
10795
11062
  'v-banner--stacked': props.stacked || mobile.value,
10796
11063
  'v-banner--sticky': props.sticky,
10797
11064
  [`v-banner--${props.lines}-line`]: !!props.lines
10798
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
10799
- "style": [dimensionStyles.value, locationStyles.value],
11065
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11066
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10800
11067
  "role": "banner"
10801
11068
  }, {
10802
11069
  default: () => [hasPrepend && createVNode("div", {
@@ -10852,6 +11119,7 @@ const VBottomNavigation = genericComponent()({
10852
11119
  default: true
10853
11120
  },
10854
11121
  ...makeBorderProps(),
11122
+ ...makeComponentProps(),
10855
11123
  ...makeDensityProps(),
10856
11124
  ...makeElevationProps(),
10857
11125
  ...makeRoundedProps(),
@@ -10926,11 +11194,11 @@ const VBottomNavigation = genericComponent()({
10926
11194
  'v-bottom-navigation--active': isActive.value,
10927
11195
  'v-bottom-navigation--grow': props.grow,
10928
11196
  'v-bottom-navigation--shift': props.mode === 'shift'
10929
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11197
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
10930
11198
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
10931
11199
  height: convertToUnit(height.value),
10932
11200
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
10933
- }, ssrBootStyles.value]
11201
+ }, ssrBootStyles.value, props.style]
10934
11202
  }, {
10935
11203
  default: () => [slots.default && createVNode("div", {
10936
11204
  "class": "v-bottom-navigation__content"
@@ -10944,14 +11212,16 @@ const VBottomNavigation = genericComponent()({
10944
11212
  const VBreadcrumbsDivider = genericComponent()({
10945
11213
  name: 'VBreadcrumbsDivider',
10946
11214
  props: {
10947
- divider: [Number, String]
11215
+ divider: [Number, String],
11216
+ ...makeComponentProps()
10948
11217
  },
10949
11218
  setup(props, _ref) {
10950
11219
  let {
10951
11220
  slots
10952
11221
  } = _ref;
10953
11222
  useRender(() => createVNode("li", {
10954
- "class": "v-breadcrumbs-divider"
11223
+ "class": ['v-breadcrumbs-divider', props.class],
11224
+ "style": props.style
10955
11225
  }, [slots?.default?.() ?? props.divider]));
10956
11226
  return {};
10957
11227
  }
@@ -10966,6 +11236,7 @@ const VBreadcrumbsItem = genericComponent()({
10966
11236
  color: String,
10967
11237
  disabled: Boolean,
10968
11238
  title: String,
11239
+ ...makeComponentProps(),
10969
11240
  ...makeRouterProps(),
10970
11241
  ...makeTagProps({
10971
11242
  tag: 'li'
@@ -10991,8 +11262,8 @@ const VBreadcrumbsItem = genericComponent()({
10991
11262
  'v-breadcrumbs-item--disabled': props.disabled,
10992
11263
  'v-breadcrumbs-item--link': link.isLink.value,
10993
11264
  [`${props.activeClass}`]: isActive.value && props.activeClass
10994
- }, textColorClasses.value],
10995
- "style": [textColorStyles.value],
11265
+ }, textColorClasses.value, props.class],
11266
+ "style": [textColorStyles.value, props.style],
10996
11267
  "href": link.href.value,
10997
11268
  "aria-current": isActive.value ? 'page' : undefined,
10998
11269
  "onClick": link.navigate
@@ -11023,6 +11294,7 @@ const VBreadcrumbs = genericComponent()({
11023
11294
  type: Array,
11024
11295
  default: () => []
11025
11296
  },
11297
+ ...makeComponentProps(),
11026
11298
  ...makeDensityProps(),
11027
11299
  ...makeRoundedProps(),
11028
11300
  ...makeTagProps({
@@ -11054,11 +11326,22 @@ const VBreadcrumbs = genericComponent()({
11054
11326
  disabled: toRef(props, 'disabled')
11055
11327
  }
11056
11328
  });
11329
+ const items = computed(() => props.items.map(item => {
11330
+ return typeof item === 'string' ? {
11331
+ item: {
11332
+ title: item
11333
+ },
11334
+ raw: item
11335
+ } : {
11336
+ item,
11337
+ raw: item
11338
+ };
11339
+ }));
11057
11340
  useRender(() => {
11058
11341
  const hasPrepend = !!(slots.prepend || props.icon);
11059
11342
  return createVNode(props.tag, {
11060
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11061
- "style": backgroundColorStyles.value
11343
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11344
+ "style": [backgroundColorStyles.value, props.style]
11062
11345
  }, {
11063
11346
  default: () => [hasPrepend && createVNode("div", {
11064
11347
  "key": "prepend",
@@ -11076,33 +11359,36 @@ const VBreadcrumbs = genericComponent()({
11076
11359
  start: true
11077
11360
  }
11078
11361
  }
11079
- }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11080
- "key": index,
11081
- "disabled": index >= array.length - 1
11082
- }, typeof item === 'string' ? {
11083
- title: item
11084
- } : item), {
11085
- default: slots.title ? () => slots.title?.({
11086
- item,
11087
- index
11088
- }) : undefined
11089
- }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11090
- default: slots.divider ? () => slots.divider?.({
11362
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11363
+ let {
11091
11364
  item,
11092
- index
11093
- }) : undefined
11094
- })])), slots.default?.()]
11365
+ raw
11366
+ } = _ref2;
11367
+ return createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11368
+ "key": item.title,
11369
+ "disabled": index >= array.length - 1
11370
+ }, item), {
11371
+ default: slots.title ? () => slots.title?.({
11372
+ item: raw,
11373
+ index
11374
+ }) : undefined
11375
+ }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11376
+ default: slots.divider ? () => slots.divider?.({
11377
+ item: raw,
11378
+ index
11379
+ }) : undefined
11380
+ })]);
11381
+ }), slots.default?.()]
11095
11382
  });
11096
11383
  });
11097
11384
  return {};
11098
11385
  }
11099
11386
  });
11100
11387
 
11101
- // Types
11102
-
11103
- const VCardActions = defineComponent({
11388
+ const VCardActions = genericComponent()({
11104
11389
  name: 'VCardActions',
11105
- setup(_, _ref) {
11390
+ props: makeComponentProps(),
11391
+ setup(props, _ref) {
11106
11392
  let {
11107
11393
  slots
11108
11394
  } = _ref;
@@ -11112,7 +11398,8 @@ const VCardActions = defineComponent({
11112
11398
  }
11113
11399
  });
11114
11400
  useRender(() => createVNode("div", {
11115
- "class": "v-card-actions"
11401
+ "class": ['v-card-actions', props.class],
11402
+ "style": props.style
11116
11403
  }, [slots.default?.()]));
11117
11404
  return {};
11118
11405
  }
@@ -11122,8 +11409,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11122
11409
 
11123
11410
  const VCardTitle = createSimpleFunctional('v-card-title');
11124
11411
 
11125
- // Types
11126
-
11127
11412
  const VCardItem = genericComponent()({
11128
11413
  name: 'VCardItem',
11129
11414
  props: {
@@ -11133,6 +11418,7 @@ const VCardItem = genericComponent()({
11133
11418
  prependIcon: IconValue,
11134
11419
  subtitle: String,
11135
11420
  title: String,
11421
+ ...makeComponentProps(),
11136
11422
  ...makeDensityProps()
11137
11423
  },
11138
11424
  setup(props, _ref) {
@@ -11147,7 +11433,8 @@ const VCardItem = genericComponent()({
11147
11433
  const hasTitle = !!(props.title || slots.title);
11148
11434
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11149
11435
  return createVNode("div", {
11150
- "class": "v-card-item"
11436
+ "class": ['v-card-item', props.class],
11437
+ "style": props.style
11151
11438
  }, [hasPrepend && createVNode("div", {
11152
11439
  "key": "prepend",
11153
11440
  "class": "v-card-item__prepend"
@@ -11229,8 +11516,8 @@ const VCard = genericComponent()({
11229
11516
  subtitle: String,
11230
11517
  text: String,
11231
11518
  title: String,
11232
- ...makeThemeProps(),
11233
11519
  ...makeBorderProps(),
11520
+ ...makeComponentProps(),
11234
11521
  ...makeDensityProps(),
11235
11522
  ...makeDimensionProps(),
11236
11523
  ...makeElevationProps(),
@@ -11240,6 +11527,7 @@ const VCard = genericComponent()({
11240
11527
  ...makeRoundedProps(),
11241
11528
  ...makeRouterProps(),
11242
11529
  ...makeTagProps(),
11530
+ ...makeThemeProps(),
11243
11531
  ...makeVariantProps({
11244
11532
  variant: 'elevated'
11245
11533
  })
@@ -11300,8 +11588,8 @@ const VCard = genericComponent()({
11300
11588
  'v-card--flat': props.flat,
11301
11589
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11302
11590
  'v-card--link': isClickable.value
11303
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
11304
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
11591
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11592
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11305
11593
  "href": link.href.value,
11306
11594
  "onClick": isClickable.value && link.navigate,
11307
11595
  "tabindex": props.disabled ? -1 : undefined
@@ -11497,6 +11785,7 @@ const makeVWindowProps = propsFactory({
11497
11785
  mandatory: {
11498
11786
  default: 'force'
11499
11787
  },
11788
+ ...makeComponentProps(),
11500
11789
  ...makeTagProps(),
11501
11790
  ...makeThemeProps()
11502
11791
  }, 'v-window');
@@ -11612,7 +11901,8 @@ const VWindow = genericComponent()({
11612
11901
  "ref": rootRef,
11613
11902
  "class": ['v-window', {
11614
11903
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11615
- }, themeClasses.value]
11904
+ }, themeClasses.value, props.class],
11905
+ "style": props.style
11616
11906
  }, {
11617
11907
  default: () => [createVNode("div", {
11618
11908
  "class": "v-window__container",
@@ -11697,10 +11987,10 @@ const VCarousel = genericComponent()({
11697
11987
  "class": ['v-carousel', {
11698
11988
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11699
11989
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11700
- }],
11701
- "style": {
11990
+ }, props.class],
11991
+ "style": [{
11702
11992
  height: convertToUnit(props.height)
11703
- },
11993
+ }, props.style],
11704
11994
  "continuous": true,
11705
11995
  "mandatory": "force",
11706
11996
  "showArrows": props.showArrows
@@ -11766,6 +12056,7 @@ const VWindowItem = genericComponent()({
11766
12056
  type: [Boolean, String],
11767
12057
  default: undefined
11768
12058
  },
12059
+ ...makeComponentProps(),
11769
12060
  ...makeGroupItemProps(),
11770
12061
  ...makeLazyProps()
11771
12062
  },
@@ -11852,7 +12143,8 @@ const VWindowItem = genericComponent()({
11852
12143
  "disabled": !isBooted.value
11853
12144
  }, {
11854
12145
  default: () => [withDirectives(createVNode("div", {
11855
- "class": ['v-window-item', groupItem.selectedClass.value]
12146
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12147
+ "style": props.style
11856
12148
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
11857
12149
  }));
11858
12150
  return {};
@@ -11865,7 +12157,8 @@ const VCarouselItem = genericComponent()({
11865
12157
  name: 'VCarouselItem',
11866
12158
  inheritAttrs: false,
11867
12159
  props: {
11868
- value: null
12160
+ value: null,
12161
+ ...makeComponentProps()
11869
12162
  },
11870
12163
  setup(props, _ref) {
11871
12164
  let {
@@ -11873,7 +12166,8 @@ const VCarouselItem = genericComponent()({
11873
12166
  attrs
11874
12167
  } = _ref;
11875
12168
  useRender(() => createVNode(VWindowItem, {
11876
- "class": "v-carousel-item",
12169
+ "class": ['v-carousel-item', props.class],
12170
+ "style": props.style,
11877
12171
  "value": props.value
11878
12172
  }, {
11879
12173
  default: () => [createVNode(VImg, attrs, slots)]
@@ -11886,6 +12180,7 @@ const VCode = createSimpleFunctional('v-code');
11886
12180
  const makeVSheetProps = propsFactory({
11887
12181
  color: String,
11888
12182
  ...makeBorderProps(),
12183
+ ...makeComponentProps(),
11889
12184
  ...makeDimensionProps(),
11890
12185
  ...makeElevationProps(),
11891
12186
  ...makeLocationProps(),
@@ -11929,8 +12224,8 @@ const VSheet = genericComponent()({
11929
12224
  roundedClasses
11930
12225
  } = useRounded(props);
11931
12226
  useRender(() => createVNode(props.tag, {
11932
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
11933
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
12227
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12228
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
11934
12229
  }, slots));
11935
12230
  return {};
11936
12231
  }
@@ -11956,7 +12251,8 @@ const VColorPickerCanvas = defineComponent({
11956
12251
  width: {
11957
12252
  type: [Number, String],
11958
12253
  default: 300
11959
- }
12254
+ },
12255
+ ...makeComponentProps()
11960
12256
  },
11961
12257
  emits: {
11962
12258
  'update:color': color => true,
@@ -12101,7 +12397,8 @@ const VColorPickerCanvas = defineComponent({
12101
12397
  onMounted(() => updateCanvas());
12102
12398
  useRender(() => createVNode("div", {
12103
12399
  "ref": resizeRef,
12104
- "class": "v-color-picker-canvas",
12400
+ "class": ['v-color-picker-canvas', props.class],
12401
+ "style": props.style,
12105
12402
  "onClick": handleClick,
12106
12403
  "onMousedown": handleMouseDown,
12107
12404
  "onTouchstart": handleMouseDown
@@ -12334,7 +12631,8 @@ const VColorPickerEdit = defineComponent({
12334
12631
  type: Array,
12335
12632
  default: () => Object.keys(modes),
12336
12633
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12337
- }
12634
+ },
12635
+ ...makeComponentProps()
12338
12636
  },
12339
12637
  emits: {
12340
12638
  'update:color': color => true,
@@ -12374,7 +12672,8 @@ const VColorPickerEdit = defineComponent({
12374
12672
  });
12375
12673
  });
12376
12674
  useRender(() => createVNode("div", {
12377
- "class": "v-color-picker-edit"
12675
+ "class": ['v-color-picker-edit', props.class],
12676
+ "style": props.style
12378
12677
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12379
12678
  "icon": "$unfold",
12380
12679
  "size": "x-small",
@@ -12458,11 +12757,33 @@ const makeSliderProps = propsFactory({
12458
12757
  elevation: 2
12459
12758
  })
12460
12759
  }, 'slider');
12760
+ const useSteps = props => {
12761
+ const min = computed(() => parseFloat(props.min));
12762
+ const max = computed(() => parseFloat(props.max));
12763
+ const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12764
+ const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12765
+ function roundValue(value) {
12766
+ if (step.value <= 0) return value;
12767
+ const clamped = clamp(value, min.value, max.value);
12768
+ const offset = min.value % step.value;
12769
+ const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
12770
+ return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
12771
+ }
12772
+ return {
12773
+ min,
12774
+ max,
12775
+ step,
12776
+ decimals,
12777
+ roundValue
12778
+ };
12779
+ };
12461
12780
  const useSlider = _ref => {
12462
12781
  let {
12463
12782
  props,
12464
- handleSliderMouseUp,
12465
- handleMouseMove,
12783
+ steps,
12784
+ onSliderStart,
12785
+ onSliderMove,
12786
+ onSliderEnd,
12466
12787
  getActiveThumb
12467
12788
  } = _ref;
12468
12789
  const {
@@ -12476,10 +12797,13 @@ const useSlider = _ref => {
12476
12797
  }
12477
12798
  return hd;
12478
12799
  });
12479
- const min = computed(() => parseFloat(props.min));
12480
- const max = computed(() => parseFloat(props.max));
12481
- const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12482
- const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12800
+ const {
12801
+ min,
12802
+ max,
12803
+ step,
12804
+ decimals,
12805
+ roundValue
12806
+ } = steps;
12483
12807
  const thumbSize = computed(() => parseInt(props.thumbSize, 10));
12484
12808
  const tickSize = computed(() => parseInt(props.tickSize, 10));
12485
12809
  const trackSize = computed(() => parseInt(props.trackSize, 10));
@@ -12489,17 +12813,10 @@ const useSlider = _ref => {
12489
12813
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
12490
12814
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
12491
12815
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
12492
- const mousePressed = ref(false);
12493
- const startOffset = ref(0);
12494
- const trackContainerRef = ref();
12495
- const activeThumbRef = ref();
12496
- function roundValue(value) {
12497
- if (step.value <= 0) return value;
12498
- const clamped = clamp(value, min.value, max.value);
12499
- const offset = min.value % step.value;
12500
- const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
12501
- return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
12502
- }
12816
+ const mousePressed = ref(false);
12817
+ const startOffset = ref(0);
12818
+ const trackContainerRef = ref();
12819
+ const activeThumbRef = ref();
12503
12820
  function parseMouseMove(e) {
12504
12821
  const vertical = props.direction === 'vertical';
12505
12822
  const start = vertical ? 'top' : 'left';
@@ -12516,14 +12833,11 @@ const useSlider = _ref => {
12516
12833
  if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
12517
12834
  return roundValue(min.value + clickPos * (max.value - min.value));
12518
12835
  }
12519
- let thumbMoved = false;
12520
12836
  const handleStop = e => {
12521
- if (!thumbMoved) {
12522
- startOffset.value = 0;
12523
- handleSliderMouseUp(parseMouseMove(e));
12524
- }
12837
+ onSliderEnd({
12838
+ value: parseMouseMove(e)
12839
+ });
12525
12840
  mousePressed.value = false;
12526
- thumbMoved = false;
12527
12841
  startOffset.value = 0;
12528
12842
  };
12529
12843
  const handleStart = e => {
@@ -12532,20 +12846,25 @@ const useSlider = _ref => {
12532
12846
  activeThumbRef.value.focus();
12533
12847
  mousePressed.value = true;
12534
12848
  if (activeThumbRef.value.contains(e.target)) {
12535
- thumbMoved = true;
12536
12849
  startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
12537
12850
  } else {
12538
12851
  startOffset.value = 0;
12539
- handleMouseMove(parseMouseMove(e));
12852
+ onSliderMove({
12853
+ value: parseMouseMove(e)
12854
+ });
12540
12855
  }
12856
+ onSliderStart({
12857
+ value: parseMouseMove(e)
12858
+ });
12541
12859
  };
12542
12860
  const moveListenerOptions = {
12543
12861
  passive: true,
12544
12862
  capture: true
12545
12863
  };
12546
12864
  function onMouseMove(e) {
12547
- thumbMoved = true;
12548
- handleMouseMove(parseMouseMove(e));
12865
+ onSliderMove({
12866
+ value: parseMouseMove(e)
12867
+ });
12549
12868
  }
12550
12869
  function onSliderMouseUp(e) {
12551
12870
  e.stopPropagation();
@@ -12673,7 +12992,8 @@ const VSliderThumb = genericComponent()({
12673
12992
  ripple: {
12674
12993
  type: Boolean,
12675
12994
  default: true
12676
- }
12995
+ },
12996
+ ...makeComponentProps()
12677
12997
  },
12678
12998
  emits: {
12679
12999
  'update:modelValue': v => true
@@ -12751,11 +13071,11 @@ const VSliderThumb = genericComponent()({
12751
13071
  "class": ['v-slider-thumb', {
12752
13072
  'v-slider-thumb--focused': props.focused,
12753
13073
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12754
- }],
12755
- "style": {
13074
+ }, props.class],
13075
+ "style": [{
12756
13076
  '--v-slider-thumb-position': positionPercentage,
12757
13077
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12758
- },
13078
+ }, props.style],
12759
13079
  "role": "slider",
12760
13080
  "tabindex": disabled.value ? -1 : 0,
12761
13081
  "aria-valuemin": props.min,
@@ -12801,7 +13121,8 @@ const VSliderTrack = genericComponent()({
12801
13121
  stop: {
12802
13122
  type: Number,
12803
13123
  required: true
12804
- }
13124
+ },
13125
+ ...makeComponentProps()
12805
13126
  },
12806
13127
  emits: {},
12807
13128
  setup(props, _ref) {
@@ -12876,12 +13197,12 @@ const VSliderTrack = genericComponent()({
12876
13197
  });
12877
13198
  useRender(() => {
12878
13199
  return createVNode("div", {
12879
- "class": ['v-slider-track', roundedClasses.value],
12880
- "style": {
13200
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13201
+ "style": [{
12881
13202
  '--v-slider-track-size': convertToUnit(trackSize.value),
12882
13203
  '--v-slider-tick-size': convertToUnit(tickSize.value),
12883
13204
  direction: !vertical.value ? horizontalDirection.value : undefined
12884
- }
13205
+ }, props.style]
12885
13206
  }, [createVNode("div", {
12886
13207
  "class": ['v-slider-track__background', trackColorClasses.value, {
12887
13208
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -12921,13 +13242,21 @@ const VSlider = genericComponent()({
12921
13242
  },
12922
13243
  emits: {
12923
13244
  'update:focused': value => true,
12924
- 'update:modelValue': v => true
13245
+ 'update:modelValue': v => true,
13246
+ start: value => true,
13247
+ end: value => true
12925
13248
  },
12926
13249
  setup(props, _ref) {
12927
13250
  let {
12928
- slots
13251
+ slots,
13252
+ emit
12929
13253
  } = _ref;
12930
13254
  const thumbContainerRef = ref();
13255
+ const steps = useSteps(props);
13256
+ const model = useProxiedModel(props, 'modelValue', undefined, v => {
13257
+ const value = typeof v === 'string' ? parseFloat(v) : v == null ? steps.min.value : v;
13258
+ return steps.roundValue(value);
13259
+ });
12931
13260
  const {
12932
13261
  min,
12933
13262
  max,
@@ -12941,16 +13270,26 @@ const VSlider = genericComponent()({
12941
13270
  readonly
12942
13271
  } = useSlider({
12943
13272
  props,
12944
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
12945
- handleSliderMouseUp: newValue => model.value = roundValue(newValue),
12946
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
12947
- handleMouseMove: newValue => model.value = roundValue(newValue),
13273
+ steps,
13274
+ onSliderStart: () => {
13275
+ emit('start', model.value);
13276
+ },
13277
+ onSliderEnd: _ref2 => {
13278
+ let {
13279
+ value
13280
+ } = _ref2;
13281
+ const roundedValue = roundValue(value);
13282
+ model.value = roundedValue;
13283
+ emit('end', roundedValue);
13284
+ },
13285
+ onSliderMove: _ref3 => {
13286
+ let {
13287
+ value
13288
+ } = _ref3;
13289
+ return model.value = roundValue(value);
13290
+ },
12948
13291
  getActiveThumb: () => thumbContainerRef.value?.$el
12949
13292
  });
12950
- const model = useProxiedModel(props, 'modelValue', undefined, v => {
12951
- const value = typeof v === 'string' ? parseFloat(v) : v == null ? min.value : v;
12952
- return roundValue(value);
12953
- });
12954
13293
  const {
12955
13294
  isFocused,
12956
13295
  focus,
@@ -12966,7 +13305,8 @@ const VSlider = genericComponent()({
12966
13305
  'v-slider--focused': isFocused.value,
12967
13306
  'v-slider--pressed': mousePressed.value,
12968
13307
  'v-slider--disabled': props.disabled
12969
- }]
13308
+ }, props.class],
13309
+ "style": props.style
12970
13310
  }, inputProps, {
12971
13311
  "focused": isFocused.value
12972
13312
  }), {
@@ -12976,11 +13316,11 @@ const VSlider = genericComponent()({
12976
13316
  "class": "v-slider__label",
12977
13317
  "text": props.label
12978
13318
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
12979
- default: _ref2 => {
13319
+ default: _ref4 => {
12980
13320
  let {
12981
13321
  id,
12982
13322
  messagesId
12983
- } = _ref2;
13323
+ } = _ref4;
12984
13324
  return createVNode("div", {
12985
13325
  "class": "v-slider__container",
12986
13326
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
@@ -13029,7 +13369,8 @@ const VColorPickerPreview = defineComponent({
13029
13369
  type: Object
13030
13370
  },
13031
13371
  disabled: Boolean,
13032
- hideAlpha: Boolean
13372
+ hideAlpha: Boolean,
13373
+ ...makeComponentProps()
13033
13374
  },
13034
13375
  emits: {
13035
13376
  'update:color': color => true
@@ -13041,7 +13382,8 @@ const VColorPickerPreview = defineComponent({
13041
13382
  useRender(() => createVNode("div", {
13042
13383
  "class": ['v-color-picker-preview', {
13043
13384
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13044
- }]
13385
+ }, props.class],
13386
+ "style": props.style
13045
13387
  }, [createVNode("div", {
13046
13388
  "class": "v-color-picker-preview__dot"
13047
13389
  }, [createVNode("div", {
@@ -13422,7 +13764,8 @@ const VColorPickerSwatches = defineComponent({
13422
13764
  },
13423
13765
  disabled: Boolean,
13424
13766
  color: Object,
13425
- maxHeight: [Number, String]
13767
+ maxHeight: [Number, String],
13768
+ ...makeComponentProps()
13426
13769
  },
13427
13770
  emits: {
13428
13771
  'update:color': color => true
@@ -13432,10 +13775,10 @@ const VColorPickerSwatches = defineComponent({
13432
13775
  emit
13433
13776
  } = _ref;
13434
13777
  useRender(() => createVNode("div", {
13435
- "class": "v-color-picker-swatches",
13436
- "style": {
13778
+ "class": ['v-color-picker-swatches', props.class],
13779
+ "style": [{
13437
13780
  maxHeight: convertToUnit(props.maxHeight)
13438
- }
13781
+ }, props.style]
13439
13782
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13440
13783
  "class": "v-color-picker-swatches__swatch"
13441
13784
  }, [swatch.map(color => {
@@ -13539,13 +13882,13 @@ const VColorPicker = defineComponent({
13539
13882
  "rounded": props.rounded,
13540
13883
  "elevation": props.elevation,
13541
13884
  "theme": props.theme,
13542
- "class": ['v-color-picker'],
13543
- "style": {
13885
+ "class": ['v-color-picker', props.class],
13886
+ "style": [{
13544
13887
  '--v-color-picker-color-hsv': HSVtoCSS({
13545
13888
  ...(currentColor.value ?? nullColor),
13546
13889
  a: 1
13547
13890
  })
13548
- }
13891
+ }, props.style]
13549
13892
  }, sheetProps, {
13550
13893
  "maxWidth": props.width
13551
13894
  }), {
@@ -13856,7 +14199,8 @@ const VCombobox = genericComponent()({
13856
14199
  'v-combobox--chips': !!props.chips,
13857
14200
  'v-combobox--selecting-index': selectionIndex.value > -1,
13858
14201
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
13859
- }],
14202
+ }, props.class],
14203
+ "style": props.style,
13860
14204
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
13861
14205
  "readonly": props.readonly,
13862
14206
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14013,7 +14357,7 @@ const VDialog = genericComponent()({
14013
14357
  ![document, overlay.value.contentEl].includes(after) &&
14014
14358
  // It isn't inside the dialog body
14015
14359
  !overlay.value.contentEl.contains(after)) {
14016
- const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled') && !el.matches('[tabindex="-1"]'));
14360
+ const focusable = focusableChildren(overlay.value.contentEl);
14017
14361
  if (!focusable.length) return;
14018
14362
  const firstElement = focusable[0];
14019
14363
  const lastElement = focusable[focusable.length - 1];
@@ -14054,7 +14398,8 @@ const VDialog = genericComponent()({
14054
14398
  "class": ['v-dialog', {
14055
14399
  'v-dialog--fullscreen': props.fullscreen,
14056
14400
  'v-dialog--scrollable': props.scrollable
14057
- }]
14401
+ }, props.class],
14402
+ "style": props.style
14058
14403
  }, overlayProps, {
14059
14404
  "modelValue": isActive.value,
14060
14405
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14093,6 +14438,7 @@ const VExpansionPanels = genericComponent()({
14093
14438
  validator: v => allowedVariants.includes(v)
14094
14439
  },
14095
14440
  readonly: Boolean,
14441
+ ...makeComponentProps(),
14096
14442
  ...makeGroupProps(),
14097
14443
  ...makeTagProps(),
14098
14444
  ...makeThemeProps()
@@ -14118,7 +14464,8 @@ const VExpansionPanels = genericComponent()({
14118
14464
  }
14119
14465
  });
14120
14466
  useRender(() => createVNode(props.tag, {
14121
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14467
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14468
+ "style": props.style
14122
14469
  }, slots));
14123
14470
  return {};
14124
14471
  }
@@ -14147,6 +14494,7 @@ const VExpansionPanelTitle = genericComponent()({
14147
14494
  Ripple
14148
14495
  },
14149
14496
  props: {
14497
+ ...makeComponentProps(),
14150
14498
  ...makeVExpansionPanelTitleProps()
14151
14499
  },
14152
14500
  setup(props, _ref) {
@@ -14169,8 +14517,8 @@ const VExpansionPanelTitle = genericComponent()({
14169
14517
  useRender(() => withDirectives(createVNode("button", {
14170
14518
  "class": ['v-expansion-panel-title', {
14171
14519
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14172
- }, backgroundColorClasses.value],
14173
- "style": backgroundColorStyles.value,
14520
+ }, backgroundColorClasses.value, props.class],
14521
+ "style": [backgroundColorStyles.value, props.style],
14174
14522
  "type": "button",
14175
14523
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14176
14524
  "disabled": expansionPanel.disabled.value,
@@ -14190,6 +14538,7 @@ const VExpansionPanelTitle = genericComponent()({
14190
14538
  const VExpansionPanelText = genericComponent()({
14191
14539
  name: 'VExpansionPanelText',
14192
14540
  props: {
14541
+ ...makeComponentProps(),
14193
14542
  ...makeLazyProps()
14194
14543
  },
14195
14544
  setup(props, _ref) {
@@ -14206,7 +14555,8 @@ const VExpansionPanelText = genericComponent()({
14206
14555
  "onAfterLeave": onAfterLeave
14207
14556
  }, {
14208
14557
  default: () => [withDirectives(createVNode("div", {
14209
- "class": "v-expansion-panel-text"
14558
+ "class": ['v-expansion-panel-text', props.class],
14559
+ "style": props.style
14210
14560
  }, [slots.default && hasContent.value && createVNode("div", {
14211
14561
  "class": "v-expansion-panel-text__wrapper"
14212
14562
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14221,6 +14571,7 @@ const VExpansionPanel = genericComponent()({
14221
14571
  title: String,
14222
14572
  text: String,
14223
14573
  bgColor: String,
14574
+ ...makeComponentProps(),
14224
14575
  ...makeElevationProps(),
14225
14576
  ...makeGroupItemProps(),
14226
14577
  ...makeLazyProps(),
@@ -14269,8 +14620,8 @@ const VExpansionPanel = genericComponent()({
14269
14620
  'v-expansion-panel--before-active': isBeforeSelected.value,
14270
14621
  'v-expansion-panel--after-active': isAfterSelected.value,
14271
14622
  'v-expansion-panel--disabled': isDisabled.value
14272
- }, roundedClasses.value, backgroundColorClasses.value],
14273
- "style": backgroundColorStyles.value,
14623
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14624
+ "style": [backgroundColorStyles.value, props.style],
14274
14625
  "aria-expanded": groupItem.isSelected.value
14275
14626
  }, {
14276
14627
  default: () => [createVNode("div", {
@@ -14420,7 +14771,8 @@ const VFileInput = genericComponent()({
14420
14771
  "ref": vInputRef,
14421
14772
  "modelValue": model.value,
14422
14773
  "onUpdate:modelValue": $event => model.value = $event,
14423
- "class": "v-file-input",
14774
+ "class": ['v-file-input', props.class],
14775
+ "style": props.style,
14424
14776
  "onClick:prepend": onClickPrepend
14425
14777
  }, rootAttrs, inputProps, {
14426
14778
  "focused": isFocused.value
@@ -14512,6 +14864,7 @@ const VFooter = genericComponent()({
14512
14864
  default: 'auto'
14513
14865
  },
14514
14866
  ...makeBorderProps(),
14867
+ ...makeComponentProps(),
14515
14868
  ...makeElevationProps(),
14516
14869
  ...makeLayoutItemProps(),
14517
14870
  ...makeRoundedProps(),
@@ -14561,8 +14914,8 @@ const VFooter = genericComponent()({
14561
14914
  });
14562
14915
  useRender(() => createVNode(props.tag, {
14563
14916
  "ref": resizeRef,
14564
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14565
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14917
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14918
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14566
14919
  }, slots));
14567
14920
  return {};
14568
14921
  }
@@ -14573,6 +14926,7 @@ const VFooter = genericComponent()({
14573
14926
  const VForm = genericComponent()({
14574
14927
  name: 'VForm',
14575
14928
  props: {
14929
+ ...makeComponentProps(),
14576
14930
  ...makeFormProps()
14577
14931
  },
14578
14932
  emits: {
@@ -14611,7 +14965,8 @@ const VForm = genericComponent()({
14611
14965
  }
14612
14966
  useRender(() => createVNode("form", {
14613
14967
  "ref": formRef,
14614
- "class": "v-form",
14968
+ "class": ['v-form', props.class],
14969
+ "style": props.style,
14615
14970
  "novalidate": true,
14616
14971
  "onReset": onReset,
14617
14972
  "onSubmit": onSubmit
@@ -14627,6 +14982,7 @@ const VContainer = genericComponent()({
14627
14982
  type: Boolean,
14628
14983
  default: false
14629
14984
  },
14985
+ ...makeComponentProps(),
14630
14986
  ...makeTagProps()
14631
14987
  },
14632
14988
  setup(props, _ref) {
@@ -14636,7 +14992,8 @@ const VContainer = genericComponent()({
14636
14992
  useRender(() => createVNode(props.tag, {
14637
14993
  "class": ['v-container', {
14638
14994
  'v-container--fluid': props.fluid
14639
- }]
14995
+ }, props.class],
14996
+ "style": props.style
14640
14997
  }, slots));
14641
14998
  return {};
14642
14999
  }
@@ -14727,6 +15084,7 @@ const VCol = genericComponent()({
14727
15084
  default: null,
14728
15085
  validator: str => ALIGN_SELF_VALUES.includes(str)
14729
15086
  },
15087
+ ...makeComponentProps(),
14730
15088
  ...makeTagProps()
14731
15089
  },
14732
15090
  setup(props, _ref) {
@@ -14757,7 +15115,8 @@ const VCol = genericComponent()({
14757
15115
  return classList;
14758
15116
  });
14759
15117
  return () => h(props.tag, {
14760
- class: classes.value
15118
+ class: [classes.value, props.class],
15119
+ style: props.style
14761
15120
  }, slots.default?.());
14762
15121
  }
14763
15122
  });
@@ -14843,6 +15202,7 @@ const VRow = genericComponent()({
14843
15202
  validator: alignContentValidator
14844
15203
  },
14845
15204
  ...alignContentProps,
15205
+ ...makeComponentProps(),
14846
15206
  ...makeTagProps()
14847
15207
  },
14848
15208
  setup(props, _ref) {
@@ -14871,7 +15231,8 @@ const VRow = genericComponent()({
14871
15231
  return classList;
14872
15232
  });
14873
15233
  return () => h(props.tag, {
14874
- class: ['v-row', classes.value]
15234
+ class: ['v-row', classes.value, props.class],
15235
+ style: props.style
14875
15236
  }, slots.default?.());
14876
15237
  }
14877
15238
  });
@@ -14915,6 +15276,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
14915
15276
  const VItemGroup = genericComponent()({
14916
15277
  name: 'VItemGroup',
14917
15278
  props: {
15279
+ ...makeComponentProps(),
14918
15280
  ...makeGroupProps({
14919
15281
  selectedClass: 'v-item--selected'
14920
15282
  }),
@@ -14939,7 +15301,8 @@ const VItemGroup = genericComponent()({
14939
15301
  selected
14940
15302
  } = useGroup(props, VItemGroupSymbol);
14941
15303
  return () => createVNode(props.tag, {
14942
- "class": ['v-item-group', themeClasses.value]
15304
+ "class": ['v-item-group', themeClasses.value, props.class],
15305
+ "style": props.style
14943
15306
  }, {
14944
15307
  default: () => [slots.default?.({
14945
15308
  isSelected,
@@ -14989,7 +15352,10 @@ const VKbd = createSimpleFunctional('v-kbd');
14989
15352
 
14990
15353
  const VLayout = genericComponent()({
14991
15354
  name: 'VLayout',
14992
- props: makeLayoutProps(),
15355
+ props: {
15356
+ ...makeComponentProps(),
15357
+ ...makeLayoutProps()
15358
+ },
14993
15359
  setup(props, _ref) {
14994
15360
  let {
14995
15361
  slots
@@ -15003,8 +15369,8 @@ const VLayout = genericComponent()({
15003
15369
  } = createLayout(props);
15004
15370
  useRender(() => createVNode("div", {
15005
15371
  "ref": layoutRef,
15006
- "class": layoutClasses.value,
15007
- "style": layoutStyles.value
15372
+ "class": [layoutClasses.value, props.class],
15373
+ "style": [layoutStyles.value, props.style]
15008
15374
  }, [slots.default?.()]));
15009
15375
  return {
15010
15376
  getLayoutItem,
@@ -15027,6 +15393,7 @@ const VLayoutItem = genericComponent()({
15027
15393
  default: 300
15028
15394
  },
15029
15395
  modelValue: Boolean,
15396
+ ...makeComponentProps(),
15030
15397
  ...makeLayoutItemProps()
15031
15398
  },
15032
15399
  setup(props, _ref) {
@@ -15045,8 +15412,8 @@ const VLayoutItem = genericComponent()({
15045
15412
  absolute: toRef(props, 'absolute')
15046
15413
  });
15047
15414
  return () => createVNode("div", {
15048
- "class": ['v-layout-item'],
15049
- "style": layoutItemStyles.value
15415
+ "class": ['v-layout-item', props.class],
15416
+ "style": [layoutItemStyles.value, props.style]
15050
15417
  }, [slots.default?.()]);
15051
15418
  }
15052
15419
  });
@@ -15070,6 +15437,7 @@ const VLazy = genericComponent()({
15070
15437
  threshold: undefined
15071
15438
  })
15072
15439
  },
15440
+ ...makeComponentProps(),
15073
15441
  ...makeDimensionProps(),
15074
15442
  ...makeTagProps(),
15075
15443
  ...makeTransitionProps({
@@ -15092,8 +15460,8 @@ const VLazy = genericComponent()({
15092
15460
  isActive.value = isIntersecting;
15093
15461
  }
15094
15462
  useRender(() => withDirectives(createVNode(props.tag, {
15095
- "class": "v-lazy",
15096
- "style": dimensionStyles.value
15463
+ "class": ['v-lazy', props.class],
15464
+ "style": [dimensionStyles.value, props.style]
15097
15465
  }, {
15098
15466
  default: () => [isActive.value && createVNode(MaybeTransition, {
15099
15467
  "transition": props.transition,
@@ -15118,7 +15486,8 @@ const VLocaleProvider = genericComponent()({
15118
15486
  rtl: {
15119
15487
  type: Boolean,
15120
15488
  default: undefined
15121
- }
15489
+ },
15490
+ ...makeComponentProps()
15122
15491
  },
15123
15492
  setup(props, _ref) {
15124
15493
  let {
@@ -15128,7 +15497,8 @@ const VLocaleProvider = genericComponent()({
15128
15497
  rtlClasses
15129
15498
  } = provideLocale(props);
15130
15499
  useRender(() => createVNode("div", {
15131
- "class": ['v-locale-provider', rtlClasses.value]
15500
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15501
+ "style": props.style
15132
15502
  }, [slots.default?.()]));
15133
15503
  return {};
15134
15504
  }
@@ -15138,6 +15508,7 @@ const VMain = genericComponent()({
15138
15508
  name: 'VMain',
15139
15509
  props: {
15140
15510
  scrollable: Boolean,
15511
+ ...makeComponentProps(),
15141
15512
  ...makeTagProps({
15142
15513
  tag: 'main'
15143
15514
  })
@@ -15155,8 +15526,8 @@ const VMain = genericComponent()({
15155
15526
  useRender(() => createVNode(props.tag, {
15156
15527
  "class": ['v-main', {
15157
15528
  'v-main--scrollable': props.scrollable
15158
- }],
15159
- "style": [mainStyles.value, ssrBootStyles.value]
15529
+ }, props.class],
15530
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15160
15531
  }, {
15161
15532
  default: () => [props.scrollable ? createVNode("div", {
15162
15533
  "class": "v-main__scroller"
@@ -15502,6 +15873,7 @@ const VNavigationDrawer = genericComponent()({
15502
15873
  },
15503
15874
  sticky: Boolean,
15504
15875
  ...makeBorderProps(),
15876
+ ...makeComponentProps(),
15505
15877
  ...makeElevationProps(),
15506
15878
  ...makeLayoutItemProps(),
15507
15879
  ...makeRoundedProps(),
@@ -15653,8 +16025,8 @@ const VNavigationDrawer = genericComponent()({
15653
16025
  'v-navigation-drawer--temporary': isTemporary.value,
15654
16026
  'v-navigation-drawer--active': isActive.value,
15655
16027
  'v-navigation-drawer--sticky': isSticky.value
15656
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
15657
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value]
16028
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16029
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
15658
16030
  }, attrs), {
15659
16031
  default: () => [hasImage && createVNode("div", {
15660
16032
  "key": "image",
@@ -15783,6 +16155,7 @@ const VPagination = genericComponent()({
15783
16155
  },
15784
16156
  showFirstLastPage: Boolean,
15785
16157
  ...makeBorderProps(),
16158
+ ...makeComponentProps(),
15786
16159
  ...makeDensityProps(),
15787
16160
  ...makeElevationProps(),
15788
16161
  ...makeRoundedProps(),
@@ -15979,7 +16352,8 @@ const VPagination = genericComponent()({
15979
16352
  }
15980
16353
  useRender(() => createVNode(props.tag, {
15981
16354
  "ref": resizeRef,
15982
- "class": ['v-pagination', themeClasses.value],
16355
+ "class": ['v-pagination', themeClasses.value, props.class],
16356
+ "style": props.style,
15983
16357
  "role": "navigation",
15984
16358
  "aria-label": t(props.ariaLabel),
15985
16359
  "onKeydown": onKeydown,
@@ -16038,7 +16412,8 @@ const VParallax = genericComponent()({
16038
16412
  scale: {
16039
16413
  type: [Number, String],
16040
16414
  default: 0.5
16041
- }
16415
+ },
16416
+ ...makeComponentProps()
16042
16417
  },
16043
16418
  setup(props, _ref) {
16044
16419
  let {
@@ -16100,7 +16475,8 @@ const VParallax = genericComponent()({
16100
16475
  useRender(() => createVNode(VImg, {
16101
16476
  "class": ['v-parallax', {
16102
16477
  'v-parallax--active': isIntersecting.value
16103
- }],
16478
+ }, props.class],
16479
+ "style": props.style,
16104
16480
  "ref": root,
16105
16481
  "cover": true,
16106
16482
  "onLoadstart": onScroll,
@@ -16125,7 +16501,8 @@ const VRadio = genericComponent()({
16125
16501
  slots
16126
16502
  } = _ref;
16127
16503
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16128
- "class": "v-radio",
16504
+ "class": ['v-radio', props.class],
16505
+ "style": props.style,
16129
16506
  "type": "radio"
16130
16507
  }), slots));
16131
16508
  return {};
@@ -16179,7 +16556,8 @@ const VRadioGroup = genericComponent()({
16179
16556
  }
16180
16557
  }) : props.label;
16181
16558
  return createVNode(VInput, mergeProps({
16182
- "class": "v-radio-group"
16559
+ "class": ['v-radio-group', props.class],
16560
+ "style": props.style
16183
16561
  }, inputAttrs, inputProps, {
16184
16562
  "modelValue": model.value,
16185
16563
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16235,11 +16613,14 @@ const VRangeSlider = genericComponent()({
16235
16613
  },
16236
16614
  emits: {
16237
16615
  'update:focused': value => true,
16238
- 'update:modelValue': value => true
16616
+ 'update:modelValue': value => true,
16617
+ end: value => true,
16618
+ start: value => true
16239
16619
  },
16240
16620
  setup(props, _ref) {
16241
16621
  let {
16242
- slots
16622
+ slots,
16623
+ emit
16243
16624
  } = _ref;
16244
16625
  const startThumbRef = ref();
16245
16626
  const stopThumbRef = ref();
@@ -16252,6 +16633,11 @@ const VRangeSlider = genericComponent()({
16252
16633
  const b = Math.abs(stopOffset);
16253
16634
  return a < b || a === b && startOffset < 0 ? startThumbRef.value.$el : stopThumbRef.value.$el;
16254
16635
  }
16636
+ const steps = useSteps(props);
16637
+ const model = useProxiedModel(props, 'modelValue', undefined, arr => {
16638
+ if (!arr?.length) return [0, 0];
16639
+ return arr.map(value => steps.roundValue(value));
16640
+ });
16255
16641
  const {
16256
16642
  activeThumbRef,
16257
16643
  hasLabels,
@@ -16261,34 +16647,37 @@ const VRangeSlider = genericComponent()({
16261
16647
  onSliderMousedown,
16262
16648
  onSliderTouchstart,
16263
16649
  position,
16264
- roundValue,
16265
16650
  trackContainerRef
16266
16651
  } = useSlider({
16267
- /* eslint-disable @typescript-eslint/no-use-before-define */
16268
16652
  props,
16269
- handleSliderMouseUp: newValue => {
16270
- model.value = activeThumbRef.value === startThumbRef.value?.$el ? [newValue, model.value[1]] : [model.value[0], newValue];
16653
+ steps,
16654
+ onSliderStart: () => {
16655
+ emit('start', model.value);
16656
+ },
16657
+ onSliderEnd: _ref2 => {
16658
+ let {
16659
+ value
16660
+ } = _ref2;
16661
+ const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];
16662
+ model.value = newValue;
16663
+ emit('end', newValue);
16271
16664
  },
16272
- handleMouseMove: newValue => {
16665
+ onSliderMove: _ref3 => {
16666
+ let {
16667
+ value
16668
+ } = _ref3;
16273
16669
  const [start, stop] = model.value;
16274
16670
  if (!props.strict && start === stop && start !== min.value) {
16275
- activeThumbRef.value = newValue > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;
16671
+ activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;
16276
16672
  activeThumbRef.value?.focus();
16277
16673
  }
16278
16674
  if (activeThumbRef.value === startThumbRef.value?.$el) {
16279
- model.value = [Math.min(newValue, stop), stop];
16675
+ model.value = [Math.min(value, stop), stop];
16280
16676
  } else {
16281
- model.value = [start, Math.max(start, newValue)];
16677
+ model.value = [start, Math.max(start, value)];
16282
16678
  }
16283
16679
  },
16284
16680
  getActiveThumb
16285
- /* eslint-enable @typescript-eslint/no-use-before-define */
16286
- });
16287
-
16288
- const model = useProxiedModel(props, 'modelValue', undefined, arr => {
16289
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
16290
- if (!arr || !arr.length) return [0, 0];
16291
- return arr.map(value => roundValue(value));
16292
16681
  });
16293
16682
  const {
16294
16683
  isFocused,
@@ -16306,7 +16695,8 @@ const VRangeSlider = genericComponent()({
16306
16695
  'v-slider--focused': isFocused.value,
16307
16696
  'v-slider--pressed': mousePressed.value,
16308
16697
  'v-slider--disabled': props.disabled
16309
- }],
16698
+ }, props.class],
16699
+ "style": props.style,
16310
16700
  "ref": inputRef
16311
16701
  }, inputProps, {
16312
16702
  "focused": isFocused.value
@@ -16316,11 +16706,11 @@ const VRangeSlider = genericComponent()({
16316
16706
  "class": "v-slider__label",
16317
16707
  "text": props.label
16318
16708
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
16319
- default: _ref2 => {
16709
+ default: _ref4 => {
16320
16710
  let {
16321
16711
  id,
16322
16712
  messagesId
16323
- } = _ref2;
16713
+ } = _ref4;
16324
16714
  return createVNode("div", {
16325
16715
  "class": "v-slider__container",
16326
16716
  "onMousedown": onSliderMousedown,
@@ -16449,6 +16839,7 @@ const VRating = genericComponent()({
16449
16839
  validator: v => ['top', 'bottom'].includes(v)
16450
16840
  },
16451
16841
  ripple: Boolean,
16842
+ ...makeComponentProps(),
16452
16843
  ...makeDensityProps(),
16453
16844
  ...makeSizeProps(),
16454
16845
  ...makeTagProps(),
@@ -16472,9 +16863,6 @@ const VRating = genericComponent()({
16472
16863
  const range = computed(() => createRange(Number(props.length), 1));
16473
16864
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
16474
16865
  const hoverIndex = ref(-1);
16475
- const focusIndex = ref(-1);
16476
- const firstRef = ref();
16477
- let isClicking = false;
16478
16866
  const itemState = computed(() => increments.value.map(value => {
16479
16867
  const isHovering = props.hover && hoverIndex.value > -1;
16480
16868
  const isFilled = normalizedValue.value >= value;
@@ -16497,16 +16885,6 @@ const VRating = genericComponent()({
16497
16885
  function onMouseleave() {
16498
16886
  hoverIndex.value = -1;
16499
16887
  }
16500
- function onFocus() {
16501
- if (value === 0 && normalizedValue.value === 0) {
16502
- firstRef.value?.focus();
16503
- } else {
16504
- focusIndex.value = value;
16505
- }
16506
- }
16507
- function onBlur() {
16508
- if (!isClicking) focusIndex.value = -1;
16509
- }
16510
16888
  function onClick() {
16511
16889
  if (props.disabled || props.readonly) return;
16512
16890
  rating.value = normalizedValue.value === value && props.clearable ? 0 : value;
@@ -16514,17 +16892,9 @@ const VRating = genericComponent()({
16514
16892
  return {
16515
16893
  onMouseenter: props.hover ? onMouseenter : undefined,
16516
16894
  onMouseleave: props.hover ? onMouseleave : undefined,
16517
- onFocus,
16518
- onBlur,
16519
16895
  onClick
16520
16896
  };
16521
16897
  }));
16522
- function onMousedown() {
16523
- isClicking = true;
16524
- }
16525
- function onMouseup() {
16526
- isClicking = false;
16527
- }
16528
16898
  const name = computed(() => props.name ?? `v-rating-${getUid()}`);
16529
16899
  function VRatingItem(_ref2) {
16530
16900
  let {
@@ -16535,8 +16905,6 @@ const VRating = genericComponent()({
16535
16905
  const {
16536
16906
  onMouseenter,
16537
16907
  onMouseleave,
16538
- onFocus,
16539
- onBlur,
16540
16908
  onClick
16541
16909
  } = eventState.value[index + 1];
16542
16910
  const id = `${name.value}-${String(value).replace('.', '-')}`;
@@ -16547,7 +16915,6 @@ const VRating = genericComponent()({
16547
16915
  icon: itemState.value[index]?.icon,
16548
16916
  ripple: props.ripple,
16549
16917
  size: props.size,
16550
- tag: 'span',
16551
16918
  variant: 'plain'
16552
16919
  };
16553
16920
  return createVNode(Fragment, null, [createVNode("label", {
@@ -16556,17 +16923,17 @@ const VRating = genericComponent()({
16556
16923
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
16557
16924
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
16558
16925
  },
16559
- "onMousedown": onMousedown,
16560
- "onMouseup": onMouseup,
16561
16926
  "onMouseenter": onMouseenter,
16562
- "onMouseleave": onMouseleave
16927
+ "onMouseleave": onMouseleave,
16928
+ "onClick": onClick
16563
16929
  }, [createVNode("span", {
16564
16930
  "class": "v-rating__hidden"
16565
16931
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
16566
16932
  ...itemState.value[index],
16567
16933
  props: btnProps,
16568
16934
  value,
16569
- index
16935
+ index,
16936
+ rating: normalizedValue.value
16570
16937
  }) : createVNode(VBtn, btnProps, null)]), createVNode("input", {
16571
16938
  "class": "v-rating__hidden",
16572
16939
  "name": name.value,
@@ -16574,10 +16941,7 @@ const VRating = genericComponent()({
16574
16941
  "type": "radio",
16575
16942
  "value": value,
16576
16943
  "checked": normalizedValue.value === value,
16577
- "onClick": onClick,
16578
- "onFocus": onFocus,
16579
- "onBlur": onBlur,
16580
- "ref": index === 0 ? firstRef : undefined,
16944
+ "tabindex": -1,
16581
16945
  "readonly": props.readonly,
16582
16946
  "disabled": props.disabled
16583
16947
  }, null)]);
@@ -16593,7 +16957,8 @@ const VRating = genericComponent()({
16593
16957
  "class": ['v-rating', {
16594
16958
  'v-rating--hover': props.hover,
16595
16959
  'v-rating--readonly': props.readonly
16596
- }, themeClasses.value]
16960
+ }, themeClasses.value, props.class],
16961
+ "style": props.style
16597
16962
  }, {
16598
16963
  default: () => [createVNode(VRatingItem, {
16599
16964
  "value": 0,
@@ -16606,9 +16971,7 @@ const VRating = genericComponent()({
16606
16971
  index: i,
16607
16972
  label: props.itemLabels?.[i]
16608
16973
  }) : undefined, createVNode("div", {
16609
- "class": ['v-rating__item', {
16610
- 'v-rating__item--focused': Math.ceil(focusIndex.value) === value
16611
- }]
16974
+ "class": "v-rating__item"
16612
16975
  }, [props.halfIncrements ? createVNode(Fragment, null, [createVNode(VRatingItem, {
16613
16976
  "value": value - 0.5,
16614
16977
  "index": i * 2
@@ -16695,6 +17058,7 @@ const makeVSlideGroupProps = propsFactory({
16695
17058
  type: [Boolean, String],
16696
17059
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
16697
17060
  },
17061
+ ...makeComponentProps(),
16698
17062
  ...makeTagProps(),
16699
17063
  ...makeGroupProps({
16700
17064
  selectedClass: 'v-slide-group-item--active'
@@ -16858,7 +17222,7 @@ const VSlideGroup = genericComponent()({
16858
17222
  function focus(location) {
16859
17223
  if (!contentRef.value) return;
16860
17224
  if (!location) {
16861
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
17225
+ const focusable = focusableChildren(contentRef.value);
16862
17226
  focusable[0]?.focus();
16863
17227
  } else if (location === 'next') {
16864
17228
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -16935,7 +17299,8 @@ const VSlideGroup = genericComponent()({
16935
17299
  'v-slide-group--vertical': !isHorizontal.value,
16936
17300
  'v-slide-group--has-affixes': hasAffixes.value,
16937
17301
  'v-slide-group--is-overflowing': isOverflowing.value
16938
- }],
17302
+ }, props.class],
17303
+ "style": props.style,
16939
17304
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
16940
17305
  "onFocus": onFocus
16941
17306
  }, {
@@ -17085,7 +17450,8 @@ const VSnackbar = genericComponent()({
17085
17450
  'v-snackbar--active': isActive.value,
17086
17451
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17087
17452
  'v-snackbar--vertical': props.vertical
17088
- }, positionClasses.value]
17453
+ }, positionClasses.value, props.class],
17454
+ "style": props.style
17089
17455
  }, overlayProps, {
17090
17456
  "modelValue": isActive.value,
17091
17457
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17185,7 +17551,8 @@ const VSwitch = genericComponent()({
17185
17551
  'v-switch--inset': props.inset
17186
17552
  }, {
17187
17553
  'v-switch--indeterminate': indeterminate.value
17188
- }, loaderClasses.value]
17554
+ }, loaderClasses.value, props.class],
17555
+ "style": props.style
17189
17556
  }, inputAttrs, inputProps, {
17190
17557
  "id": id.value,
17191
17558
  "focused": isFocused.value
@@ -17254,6 +17621,7 @@ const VSystemBar = genericComponent()({
17254
17621
  color: String,
17255
17622
  height: [Number, String],
17256
17623
  window: Boolean,
17624
+ ...makeComponentProps(),
17257
17625
  ...makeElevationProps(),
17258
17626
  ...makeLayoutItemProps(),
17259
17627
  ...makeRoundedProps(),
@@ -17295,8 +17663,8 @@ const VSystemBar = genericComponent()({
17295
17663
  useRender(() => createVNode(props.tag, {
17296
17664
  "class": ['v-system-bar', {
17297
17665
  'v-system-bar--window': props.window
17298
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17299
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17666
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17667
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17300
17668
  }, slots));
17301
17669
  return {};
17302
17670
  }
@@ -17308,7 +17676,6 @@ const VTab = genericComponent()({
17308
17676
  name: 'VTab',
17309
17677
  props: {
17310
17678
  fixed: Boolean,
17311
- title: String,
17312
17679
  sliderColor: String,
17313
17680
  hideSlider: Boolean,
17314
17681
  direction: {
@@ -17370,10 +17737,10 @@ const VTab = genericComponent()({
17370
17737
  useRender(() => {
17371
17738
  const [btnProps] = VBtn.filterProps(props);
17372
17739
  return createVNode(VBtn, mergeProps({
17373
- "_as": "VTab",
17374
17740
  "symbol": VTabsSymbol,
17375
17741
  "ref": rootEl,
17376
- "class": ['v-tab'],
17742
+ "class": ['v-tab', props.class],
17743
+ "style": props.style,
17377
17744
  "tabindex": isSelected.value ? 0 : -1,
17378
17745
  "role": "tab",
17379
17746
  "aria-selected": String(isSelected.value),
@@ -17384,7 +17751,7 @@ const VTab = genericComponent()({
17384
17751
  }, btnProps, attrs, {
17385
17752
  "onGroup:selected": updateSlider
17386
17753
  }), {
17387
- default: () => [slots.default ? slots.default() : props.title, !props.hideSlider && createVNode("div", {
17754
+ default: () => [slots.default?.() ?? props.text, !props.hideSlider && createVNode("div", {
17388
17755
  "ref": sliderEl,
17389
17756
  "class": ['v-tab__slider', sliderColorClasses.value],
17390
17757
  "style": sliderColorStyles.value
@@ -17468,10 +17835,10 @@ const VTabs = genericComponent()({
17468
17835
  'v-tabs--fixed-tabs': props.fixedTabs,
17469
17836
  'v-tabs--grow': props.grow,
17470
17837
  'v-tabs--stacked': props.stacked
17471
- }, densityClasses.value, backgroundColorClasses.value],
17838
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
17472
17839
  "style": [{
17473
17840
  '--v-tabs-height': convertToUnit(props.height)
17474
- }, backgroundColorStyles.value],
17841
+ }, backgroundColorStyles.value, props.style],
17475
17842
  "role": "tablist",
17476
17843
  "symbol": VTabsSymbol
17477
17844
  }), {
@@ -17491,6 +17858,7 @@ const VTable = genericComponent()({
17491
17858
  fixedFooter: Boolean,
17492
17859
  height: [Number, String],
17493
17860
  hover: Boolean,
17861
+ ...makeComponentProps(),
17494
17862
  ...makeDensityProps(),
17495
17863
  ...makeTagProps(),
17496
17864
  ...makeThemeProps()
@@ -17513,7 +17881,8 @@ const VTable = genericComponent()({
17513
17881
  'v-table--has-top': !!slots.top,
17514
17882
  'v-table--has-bottom': !!slots.bottom,
17515
17883
  'v-table--hover': props.hover
17516
- }, themeClasses.value, densityClasses.value]
17884
+ }, themeClasses.value, densityClasses.value, props.class],
17885
+ "style": props.style
17517
17886
  }, {
17518
17887
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
17519
17888
  "class": "v-table__wrapper",
@@ -17678,7 +18047,8 @@ const VTextarea = genericComponent()({
17678
18047
  'v-textarea--auto-grow': props.autoGrow,
17679
18048
  'v-textarea--no-resize': props.noResize || props.autoGrow,
17680
18049
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
17681
- }]
18050
+ }, props.class],
18051
+ "style": props.style
17682
18052
  }, rootAttrs, inputProps, {
17683
18053
  "focused": isFocused.value
17684
18054
  }), {
@@ -17762,6 +18132,7 @@ const VThemeProvider = genericComponent()({
17762
18132
  name: 'VThemeProvider',
17763
18133
  props: {
17764
18134
  withBackground: Boolean,
18135
+ ...makeComponentProps(),
17765
18136
  ...makeThemeProps(),
17766
18137
  ...makeTagProps()
17767
18138
  },
@@ -17775,7 +18146,8 @@ const VThemeProvider = genericComponent()({
17775
18146
  return () => {
17776
18147
  if (!props.withBackground) return slots.default?.();
17777
18148
  return createVNode(props.tag, {
17778
- "class": ['v-theme-provider', themeClasses.value]
18149
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18150
+ "style": props.style
17779
18151
  }, {
17780
18152
  default: () => [slots.default?.()]
17781
18153
  });
@@ -17820,6 +18192,7 @@ const VTimeline = genericComponent()({
17820
18192
  type: String,
17821
18193
  validator: v => ['start', 'end', 'both'].includes(v)
17822
18194
  },
18195
+ ...makeComponentProps(),
17823
18196
  ...makeDensityProps(),
17824
18197
  ...makeTagProps(),
17825
18198
  ...makeThemeProps()
@@ -17863,10 +18236,10 @@ const VTimeline = genericComponent()({
17863
18236
  useRender(() => createVNode(props.tag, {
17864
18237
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
17865
18238
  'v-timeline--inset-line': !!props.lineInset
17866
- }, themeClasses.value, densityClasses.value, sideClasses.value],
17867
- "style": {
18239
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18240
+ "style": [{
17868
18241
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
17869
- }
18242
+ }, props.style]
17870
18243
  }, slots));
17871
18244
  return {};
17872
18245
  }
@@ -17881,6 +18254,7 @@ const VTimelineDivider = genericComponent()({
17881
18254
  icon: IconValue,
17882
18255
  iconColor: String,
17883
18256
  lineColor: String,
18257
+ ...makeComponentProps(),
17884
18258
  ...makeRoundedProps(),
17885
18259
  ...makeSizeProps(),
17886
18260
  ...makeElevationProps()
@@ -17910,7 +18284,8 @@ const VTimelineDivider = genericComponent()({
17910
18284
  useRender(() => createVNode("div", {
17911
18285
  "class": ['v-timeline-divider', {
17912
18286
  'v-timeline-divider--fill-dot': props.fillDot
17913
- }]
18287
+ }, props.class],
18288
+ "style": props.style
17914
18289
  }, [createVNode("div", {
17915
18290
  "class": ['v-timeline-divider__before', lineColorClasses.value],
17916
18291
  "style": lineColorStyles.value
@@ -17960,11 +18335,12 @@ const VTimelineItem = genericComponent()({
17960
18335
  icon: IconValue,
17961
18336
  iconColor: String,
17962
18337
  lineInset: [Number, String],
17963
- ...makeRoundedProps(),
18338
+ ...makeComponentProps(),
18339
+ ...makeDimensionProps(),
17964
18340
  ...makeElevationProps(),
18341
+ ...makeRoundedProps(),
17965
18342
  ...makeSizeProps(),
17966
- ...makeTagProps(),
17967
- ...makeDimensionProps()
18343
+ ...makeTagProps()
17968
18344
  },
17969
18345
  setup(props, _ref) {
17970
18346
  let {
@@ -17984,11 +18360,11 @@ const VTimelineItem = genericComponent()({
17984
18360
  useRender(() => createVNode("div", {
17985
18361
  "class": ['v-timeline-item', {
17986
18362
  'v-timeline-item--fill-dot': props.fillDot
17987
- }],
17988
- "style": {
18363
+ }, props.class],
18364
+ "style": [{
17989
18365
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
17990
18366
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
17991
- }
18367
+ }, props.style]
17992
18368
  }, [createVNode("div", {
17993
18369
  "class": "v-timeline-item__body",
17994
18370
  "style": dimensionStyles.value
@@ -18022,6 +18398,7 @@ const VTooltip = genericComponent()({
18022
18398
  closeOnBack: false,
18023
18399
  location: 'end',
18024
18400
  locationStrategy: 'connected',
18401
+ eager: true,
18025
18402
  minWidth: 0,
18026
18403
  offset: 10,
18027
18404
  openOnClick: false,
@@ -18030,7 +18407,7 @@ const VTooltip = genericComponent()({
18030
18407
  scrim: false,
18031
18408
  scrollStrategy: 'reposition',
18032
18409
  transition: false
18033
- }), ['absolute', 'persistent', 'eager'])
18410
+ }), ['absolute', 'persistent'])
18034
18411
  },
18035
18412
  emits: {
18036
18413
  'update:modelValue': value => true
@@ -18063,7 +18440,8 @@ const VTooltip = genericComponent()({
18063
18440
  const [overlayProps] = VOverlay.filterProps(props);
18064
18441
  return createVNode(VOverlay, mergeProps({
18065
18442
  "ref": overlay,
18066
- "class": ['v-tooltip'],
18443
+ "class": ['v-tooltip', props.class],
18444
+ "style": props.style,
18067
18445
  "id": id.value
18068
18446
  }, overlayProps, {
18069
18447
  "modelValue": isActive.value,
@@ -18074,7 +18452,6 @@ const VTooltip = genericComponent()({
18074
18452
  "origin": origin.value,
18075
18453
  "persistent": true,
18076
18454
  "role": "tooltip",
18077
- "eager": true,
18078
18455
  "activatorProps": activatorProps.value,
18079
18456
  "_disableGlobalStack": true
18080
18457
  }, scopeId), {
@@ -18109,6 +18486,176 @@ const VValidation = genericComponent()({
18109
18486
  }
18110
18487
  });
18111
18488
 
18489
+ const VVirtualScrollItem = genericComponent()({
18490
+ name: 'VVirtualScrollItem',
18491
+ props: {
18492
+ dynamicHeight: Boolean,
18493
+ ...makeComponentProps()
18494
+ },
18495
+ emits: {
18496
+ 'update:height': height => true
18497
+ },
18498
+ setup(props, _ref) {
18499
+ let {
18500
+ emit,
18501
+ slots
18502
+ } = _ref;
18503
+ const {
18504
+ resizeRef,
18505
+ contentRect
18506
+ } = useResizeObserver();
18507
+ useToggleScope(() => props.dynamicHeight, () => {
18508
+ watch(() => contentRect.value?.height, height => {
18509
+ if (height != null) emit('update:height', height);
18510
+ });
18511
+ });
18512
+ function updateHeight() {
18513
+ if (props.dynamicHeight && contentRect.value) {
18514
+ emit('update:height', contentRect.value.height);
18515
+ }
18516
+ }
18517
+ onUpdated(updateHeight);
18518
+ useRender(() => createVNode("div", {
18519
+ "ref": props.dynamicHeight ? resizeRef : undefined,
18520
+ "class": ['v-virtual-scroll__item', props.class],
18521
+ "style": props.style
18522
+ }, [slots.default?.()]));
18523
+ }
18524
+ });
18525
+
18526
+ // Types
18527
+
18528
+ const UP = -1;
18529
+ const DOWN = 1;
18530
+ const VVirtualScroll = genericComponent()({
18531
+ name: 'VVirtualScroll',
18532
+ props: {
18533
+ items: {
18534
+ type: Array,
18535
+ default: () => []
18536
+ },
18537
+ itemHeight: [Number, String],
18538
+ ...makeComponentProps(),
18539
+ ...makeDimensionProps()
18540
+ },
18541
+ setup(props, _ref) {
18542
+ let {
18543
+ slots
18544
+ } = _ref;
18545
+ const first = ref(0);
18546
+ const baseItemHeight = ref(props.itemHeight);
18547
+ const itemHeight = computed({
18548
+ get: () => parseInt(baseItemHeight.value ?? 0, 10),
18549
+ set(val) {
18550
+ baseItemHeight.value = val;
18551
+ }
18552
+ });
18553
+ const rootEl = ref();
18554
+ const {
18555
+ resizeRef,
18556
+ contentRect
18557
+ } = useResizeObserver();
18558
+ watchEffect(() => {
18559
+ resizeRef.value = rootEl.value;
18560
+ });
18561
+ const display = useDisplay();
18562
+ const sizeMap = new Map();
18563
+ let sizes = createRange(props.items.length).map(() => itemHeight.value);
18564
+ const visibleItems = computed(() => {
18565
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18566
+ });
18567
+ function handleItemResize(index, height) {
18568
+ itemHeight.value = Math.max(itemHeight.value, height);
18569
+ sizes[index] = height;
18570
+ sizeMap.set(props.items[index], height);
18571
+ }
18572
+ function calculateOffset(index) {
18573
+ return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18574
+ }
18575
+ function calculateMidPointIndex(scrollTop) {
18576
+ const end = props.items.length;
18577
+ let middle = 0;
18578
+ let middleOffset = 0;
18579
+ while (middleOffset < scrollTop && middle < end) {
18580
+ middleOffset += sizes[middle++] || itemHeight.value;
18581
+ }
18582
+ return middle - 1;
18583
+ }
18584
+ let lastScrollTop = 0;
18585
+ function handleScroll() {
18586
+ if (!rootEl.value || !contentRect.value) return;
18587
+ const height = contentRect.value.height;
18588
+ const scrollTop = rootEl.value.scrollTop;
18589
+ const direction = scrollTop < lastScrollTop ? UP : DOWN;
18590
+ const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
18591
+ const buffer = Math.round(visibleItems.value / 3);
18592
+ if (direction === UP && midPointIndex <= first.value + buffer * 2 - 1) {
18593
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length);
18594
+ } else if (direction === DOWN && midPointIndex >= first.value + buffer * 2 - 1) {
18595
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value);
18596
+ }
18597
+ lastScrollTop = rootEl.value.scrollTop;
18598
+ }
18599
+ function scrollToIndex(index) {
18600
+ if (!rootEl.value) return;
18601
+ const offset = calculateOffset(index);
18602
+ rootEl.value.scrollTop = offset;
18603
+ }
18604
+ const items = computed(() => props.items.map((item, index) => ({
18605
+ raw: item,
18606
+ index
18607
+ })));
18608
+ const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18609
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18610
+ const paddingTop = computed(() => calculateOffset(first.value));
18611
+ const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18612
+ const {
18613
+ dimensionStyles
18614
+ } = useDimension(props);
18615
+ onMounted(() => {
18616
+ if (!itemHeight.value) {
18617
+ // If itemHeight prop is not set, then calculate an estimated height from the average of inital items
18618
+ itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
18619
+ }
18620
+ });
18621
+ watch(() => props.items.length, () => {
18622
+ sizes = createRange(props.items.length).map(() => itemHeight.value);
18623
+ sizeMap.forEach((height, item) => {
18624
+ const index = props.items.indexOf(item);
18625
+ if (index === -1) {
18626
+ sizeMap.delete(item);
18627
+ } else {
18628
+ sizes[index] = height;
18629
+ }
18630
+ });
18631
+ });
18632
+ useRender(() => createVNode("div", {
18633
+ "ref": rootEl,
18634
+ "class": ['v-virtual-scroll', props.class],
18635
+ "onScroll": handleScroll,
18636
+ "style": [dimensionStyles.value, props.style]
18637
+ }, [createVNode("div", {
18638
+ "class": "v-virtual-scroll__container",
18639
+ "style": {
18640
+ paddingTop: convertToUnit(paddingTop.value),
18641
+ paddingBottom: convertToUnit(paddingBottom.value)
18642
+ }
18643
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18644
+ "key": item.index,
18645
+ "dynamicHeight": !props.itemHeight,
18646
+ "onUpdate:height": height => handleItemResize(item.index, height)
18647
+ }, {
18648
+ default: () => [slots.default?.({
18649
+ item: item.raw,
18650
+ index: item.index
18651
+ })]
18652
+ }))])]));
18653
+ return {
18654
+ scrollToIndex
18655
+ };
18656
+ }
18657
+ });
18658
+
18112
18659
  var components = /*#__PURE__*/Object.freeze({
18113
18660
  __proto__: null,
18114
18661
  VAlert: VAlert,
@@ -18241,6 +18788,7 @@ var components = /*#__PURE__*/Object.freeze({
18241
18788
  VToolbarTitle: VToolbarTitle,
18242
18789
  VTooltip: VTooltip,
18243
18790
  VValidation: VValidation,
18791
+ VVirtualScroll: VVirtualScroll,
18244
18792
  VWindow: VWindow,
18245
18793
  VWindowItem: VWindowItem
18246
18794
  });
@@ -18372,6 +18920,418 @@ var directives = /*#__PURE__*/Object.freeze({
18372
18920
  Touch: Touch
18373
18921
  });
18374
18922
 
18923
+ // Utilities
18924
+
18925
+ // Types
18926
+
18927
+ function getWeekArray(date) {
18928
+ let currentWeek = [];
18929
+ const weeks = [];
18930
+ const firstDayOfMonth = startOfMonth(date);
18931
+ const lastDayOfMonth = endOfMonth(date);
18932
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
18933
+ currentWeek.push(null);
18934
+ }
18935
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
18936
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
18937
+
18938
+ // Add the day to the current week
18939
+ currentWeek.push(day);
18940
+
18941
+ // If the current week has 7 days, add it to the weeks array and start a new week
18942
+ if (currentWeek.length === 7) {
18943
+ weeks.push(currentWeek);
18944
+ currentWeek = [];
18945
+ }
18946
+ }
18947
+ for (let i = currentWeek.length; i < 7; i++) {
18948
+ currentWeek.push(null);
18949
+ }
18950
+ weeks.push(currentWeek);
18951
+ return weeks;
18952
+ }
18953
+ function startOfMonth(date) {
18954
+ return new Date(date.getFullYear(), date.getMonth(), 1);
18955
+ }
18956
+ function endOfMonth(date) {
18957
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
18958
+ }
18959
+ function date(value) {
18960
+ if (value == null) return null;
18961
+ if (value instanceof Date) return value;
18962
+ if (typeof value === 'string') {
18963
+ const parsed = Date.parse(value);
18964
+ if (!isNaN(parsed)) return new Date(parsed);
18965
+ }
18966
+ return null;
18967
+ }
18968
+ const firstDay = {
18969
+ '001': 1,
18970
+ AD: 1,
18971
+ AE: 6,
18972
+ AF: 6,
18973
+ AG: 0,
18974
+ AI: 1,
18975
+ AL: 1,
18976
+ AM: 1,
18977
+ AN: 1,
18978
+ AR: 1,
18979
+ AS: 0,
18980
+ AT: 1,
18981
+ AU: 0,
18982
+ AX: 1,
18983
+ AZ: 1,
18984
+ BA: 1,
18985
+ BD: 0,
18986
+ BE: 1,
18987
+ BG: 1,
18988
+ BH: 6,
18989
+ BM: 1,
18990
+ BN: 1,
18991
+ BR: 0,
18992
+ BS: 0,
18993
+ BT: 0,
18994
+ BW: 0,
18995
+ BY: 1,
18996
+ BZ: 0,
18997
+ CA: 0,
18998
+ CH: 1,
18999
+ CL: 1,
19000
+ CM: 1,
19001
+ CN: 0,
19002
+ CO: 0,
19003
+ CR: 1,
19004
+ CY: 1,
19005
+ CZ: 1,
19006
+ DE: 1,
19007
+ DJ: 6,
19008
+ DK: 1,
19009
+ DM: 0,
19010
+ DO: 0,
19011
+ DZ: 6,
19012
+ EC: 1,
19013
+ EE: 1,
19014
+ EG: 6,
19015
+ ES: 1,
19016
+ ET: 0,
19017
+ FI: 1,
19018
+ FJ: 1,
19019
+ FO: 1,
19020
+ FR: 1,
19021
+ GB: 1,
19022
+ 'GB-alt-variant': 0,
19023
+ GE: 1,
19024
+ GF: 1,
19025
+ GP: 1,
19026
+ GR: 1,
19027
+ GT: 0,
19028
+ GU: 0,
19029
+ HK: 0,
19030
+ HN: 0,
19031
+ HR: 1,
19032
+ HU: 1,
19033
+ ID: 0,
19034
+ IE: 1,
19035
+ IL: 0,
19036
+ IN: 0,
19037
+ IQ: 6,
19038
+ IR: 6,
19039
+ IS: 1,
19040
+ IT: 1,
19041
+ JM: 0,
19042
+ JO: 6,
19043
+ JP: 0,
19044
+ KE: 0,
19045
+ KG: 1,
19046
+ KH: 0,
19047
+ KR: 0,
19048
+ KW: 6,
19049
+ KZ: 1,
19050
+ LA: 0,
19051
+ LB: 1,
19052
+ LI: 1,
19053
+ LK: 1,
19054
+ LT: 1,
19055
+ LU: 1,
19056
+ LV: 1,
19057
+ LY: 6,
19058
+ MC: 1,
19059
+ MD: 1,
19060
+ ME: 1,
19061
+ MH: 0,
19062
+ MK: 1,
19063
+ MM: 0,
19064
+ MN: 1,
19065
+ MO: 0,
19066
+ MQ: 1,
19067
+ MT: 0,
19068
+ MV: 5,
19069
+ MX: 0,
19070
+ MY: 1,
19071
+ MZ: 0,
19072
+ NI: 0,
19073
+ NL: 1,
19074
+ NO: 1,
19075
+ NP: 0,
19076
+ NZ: 1,
19077
+ OM: 6,
19078
+ PA: 0,
19079
+ PE: 0,
19080
+ PH: 0,
19081
+ PK: 0,
19082
+ PL: 1,
19083
+ PR: 0,
19084
+ PT: 0,
19085
+ PY: 0,
19086
+ QA: 6,
19087
+ RE: 1,
19088
+ RO: 1,
19089
+ RS: 1,
19090
+ RU: 1,
19091
+ SA: 0,
19092
+ SD: 6,
19093
+ SE: 1,
19094
+ SG: 0,
19095
+ SI: 1,
19096
+ SK: 1,
19097
+ SM: 1,
19098
+ SV: 0,
19099
+ SY: 6,
19100
+ TH: 0,
19101
+ TJ: 1,
19102
+ TM: 1,
19103
+ TR: 1,
19104
+ TT: 0,
19105
+ TW: 0,
19106
+ UA: 1,
19107
+ UM: 0,
19108
+ US: 0,
19109
+ UY: 1,
19110
+ UZ: 1,
19111
+ VA: 1,
19112
+ VE: 0,
19113
+ VI: 0,
19114
+ VN: 1,
19115
+ WS: 0,
19116
+ XK: 1,
19117
+ YE: 0,
19118
+ ZA: 0,
19119
+ ZW: 0
19120
+ };
19121
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
19122
+ function getWeekdays(locale) {
19123
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
19124
+ return createRange(7).map(i => {
19125
+ const weekday = new Date(sundayJanuarySecond2000);
19126
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
19127
+ return new Intl.DateTimeFormat(locale, {
19128
+ weekday: 'long'
19129
+ }).format(weekday);
19130
+ });
19131
+ }
19132
+ function format(value, formatString, locale) {
19133
+ const date = new Date(value);
19134
+ let options = {};
19135
+ switch (formatString) {
19136
+ case 'fullDateWithWeekday':
19137
+ options = {
19138
+ weekday: 'long',
19139
+ day: 'numeric',
19140
+ month: 'long',
19141
+ year: 'numeric'
19142
+ };
19143
+ break;
19144
+ case 'normalDateWithWeekday':
19145
+ options = {
19146
+ weekday: 'short',
19147
+ day: 'numeric',
19148
+ month: 'short',
19149
+ year: 'numeric'
19150
+ };
19151
+ break;
19152
+ case 'keyboardDate':
19153
+ options = {};
19154
+ break;
19155
+ case 'monthAndDate':
19156
+ options = {
19157
+ month: 'long',
19158
+ day: 'numeric'
19159
+ };
19160
+ break;
19161
+ case 'monthAndYear':
19162
+ options = {
19163
+ month: 'long',
19164
+ year: 'numeric'
19165
+ };
19166
+ break;
19167
+ default:
19168
+ options = {
19169
+ timeZone: 'UTC',
19170
+ timeZoneName: 'short'
19171
+ };
19172
+ }
19173
+ return new Intl.DateTimeFormat(locale, options).format(date);
19174
+ }
19175
+ function addDays(date, amount) {
19176
+ const d = new Date(date);
19177
+ d.setDate(d.getDate() + amount);
19178
+ return d;
19179
+ }
19180
+ function addMonths(date, amount) {
19181
+ const d = new Date(date);
19182
+ d.setMonth(d.getMonth() + amount);
19183
+ return d;
19184
+ }
19185
+ function getYear(date) {
19186
+ return date.getFullYear();
19187
+ }
19188
+ function getMonth(date) {
19189
+ return date.getMonth();
19190
+ }
19191
+ function startOfYear(date) {
19192
+ return new Date(date.getFullYear(), 0, 1);
19193
+ }
19194
+ function endOfYear(date) {
19195
+ return new Date(date.getFullYear(), 11, 31);
19196
+ }
19197
+ function getMondayOfFirstWeekOfYear(year) {
19198
+ return new Date(year, 0, 1);
19199
+ }
19200
+
19201
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
19202
+ function getWeek(date) {
19203
+ let year = date.getFullYear();
19204
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
19205
+ if (date < d1w1) {
19206
+ year = year - 1;
19207
+ d1w1 = getMondayOfFirstWeekOfYear(year);
19208
+ } else {
19209
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
19210
+ if (date >= tv) {
19211
+ year = year + 1;
19212
+ d1w1 = tv;
19213
+ }
19214
+ }
19215
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
19216
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
19217
+ return Math.floor(diffDays / 7) + 1;
19218
+ }
19219
+ function isWithinRange(date, range) {
19220
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
19221
+ }
19222
+ function isValid(date) {
19223
+ const d = new Date(date);
19224
+ return d instanceof Date && !isNaN(d.getTime());
19225
+ }
19226
+ function isAfter(date, comparing) {
19227
+ return date.getTime() > comparing.getTime();
19228
+ }
19229
+ function isBefore(date, comparing) {
19230
+ return date.getTime() < comparing.getTime();
19231
+ }
19232
+ function isEqual(date, comparing) {
19233
+ return date.getTime() === comparing.getTime();
19234
+ }
19235
+ function isSameDay(date, comparing) {
19236
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19237
+ }
19238
+ function isSameMonth(date, comparing) {
19239
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19240
+ }
19241
+ function getDiff(date, comparing, unit) {
19242
+ const d = new Date(date);
19243
+ const c = new Date(comparing);
19244
+ if (unit === 'month') {
19245
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
19246
+ }
19247
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
19248
+ }
19249
+ function setYear(date, year) {
19250
+ const d = new Date(date);
19251
+ d.setFullYear(year);
19252
+ return d;
19253
+ }
19254
+ class VuetifyDateAdapter {
19255
+ constructor() {
19256
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
19257
+ this.locale = locale;
19258
+ }
19259
+ date(value) {
19260
+ return date(value);
19261
+ }
19262
+ addDays(date, amount) {
19263
+ return addDays(date, amount);
19264
+ }
19265
+ addMonths(date, amount) {
19266
+ return addMonths(date, amount);
19267
+ }
19268
+ getWeekArray(date) {
19269
+ return getWeekArray(date);
19270
+ }
19271
+ startOfMonth(date) {
19272
+ return startOfMonth(date);
19273
+ }
19274
+ endOfMonth(date) {
19275
+ return endOfMonth(date);
19276
+ }
19277
+ format(date, formatString) {
19278
+ return format(date, formatString, this.locale);
19279
+ }
19280
+ isEqual(date, comparing) {
19281
+ return isEqual(date, comparing);
19282
+ }
19283
+ isValid(date) {
19284
+ return isValid(date);
19285
+ }
19286
+ isWithinRange(date, range) {
19287
+ return isWithinRange(date, range);
19288
+ }
19289
+ isAfter(date, comparing) {
19290
+ return isAfter(date, comparing);
19291
+ }
19292
+ isSameDay(date, comparing) {
19293
+ return isSameDay(date, comparing);
19294
+ }
19295
+ isSameMonth(date, comparing) {
19296
+ return isSameMonth(date, comparing);
19297
+ }
19298
+ setYear(date, year) {
19299
+ return setYear(date, year);
19300
+ }
19301
+ getDiff(date, comparing, unit) {
19302
+ return getDiff(date, comparing, unit);
19303
+ }
19304
+ getWeek(date) {
19305
+ return getWeek(date);
19306
+ }
19307
+ getWeekdays() {
19308
+ return getWeekdays(this.locale);
19309
+ }
19310
+ getYear(date) {
19311
+ return getYear(date);
19312
+ }
19313
+ getMonth(date) {
19314
+ return getMonth(date);
19315
+ }
19316
+ startOfYear(date) {
19317
+ return startOfYear(date);
19318
+ }
19319
+ endOfYear(date) {
19320
+ return endOfYear(date);
19321
+ }
19322
+ }
19323
+
19324
+ // Composables
19325
+
19326
+ // Types
19327
+
19328
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
19329
+ function createDate(options) {
19330
+ return options ?? {
19331
+ adapter: VuetifyDateAdapter
19332
+ };
19333
+ }
19334
+
18375
19335
  // Composables
18376
19336
  function createVuetify$1() {
18377
19337
  let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -18390,6 +19350,7 @@ function createVuetify$1() {
18390
19350
  const theme = createTheme(options.theme);
18391
19351
  const icons = createIcons(options.icons);
18392
19352
  const locale = createLocale(options.locale);
19353
+ const date = createDate(options.date);
18393
19354
  const install = app => {
18394
19355
  for (const key in directives) {
18395
19356
  app.directive(key, directives[key]);
@@ -18410,6 +19371,7 @@ function createVuetify$1() {
18410
19371
  app.provide(ThemeSymbol, theme);
18411
19372
  app.provide(IconSymbol, icons);
18412
19373
  app.provide(LocaleSymbol, locale);
19374
+ app.provide(DateAdapterSymbol, date);
18413
19375
  if (IN_BROWSER && options.ssr) {
18414
19376
  if (app.$nuxt) {
18415
19377
  app.$nuxt.hook('app:suspense:resolve', () => {
@@ -18437,7 +19399,8 @@ function createVuetify$1() {
18437
19399
  display: inject.call(this, DisplaySymbol),
18438
19400
  theme: inject.call(this, ThemeSymbol),
18439
19401
  icons: inject.call(this, IconSymbol),
18440
- locale: inject.call(this, LocaleSymbol)
19402
+ locale: inject.call(this, LocaleSymbol),
19403
+ date: inject.call(this, DateAdapterSymbol)
18441
19404
  });
18442
19405
  }
18443
19406
  }
@@ -18450,10 +19413,11 @@ function createVuetify$1() {
18450
19413
  display,
18451
19414
  theme,
18452
19415
  icons,
18453
- locale
19416
+ locale,
19417
+ date
18454
19418
  };
18455
19419
  }
18456
- const version$1 = "3.1.15";
19420
+ const version$1 = "3.2.0";
18457
19421
  createVuetify$1.version = version$1;
18458
19422
 
18459
19423
  // Vue's inject() can only be used in setup
@@ -18473,8 +19437,8 @@ const createVuetify = function () {
18473
19437
  ...options
18474
19438
  });
18475
19439
  };
18476
- const version = "3.1.15";
19440
+ const version = "3.2.0";
18477
19441
  createVuetify.version = version;
18478
19442
 
18479
- export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19443
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
18480
19444
  //# sourceMappingURL=vuetify.esm.js.map