@vuetify/nightly 4.0.0-dev-20230426.0 → 4.0.0-dev-20230511.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 (399) hide show
  1. package/CHANGELOG.md +22 -15
  2. package/dist/json/attributes.json +949 -729
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/importMap.json +12 -12
  5. package/dist/json/tags.json +57 -2
  6. package/dist/json/web-types.json +1966 -1440
  7. package/dist/vuetify-labs.css +1504 -1493
  8. package/dist/vuetify-labs.d.ts +6175 -8100
  9. package/dist/vuetify-labs.esm.js +1462 -1230
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1461 -1229
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +51 -40
  14. package/dist/vuetify.d.ts +6327 -7380
  15. package/dist/vuetify.esm.js +1401 -1194
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +1400 -1193
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +805 -805
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/{index.d.ts → index.d.mts} +6 -2
  23. package/lib/blueprints/{md1.d.ts → md1.d.mts} +6 -2
  24. package/lib/blueprints/{md2.d.ts → md2.d.mts} +6 -2
  25. package/lib/blueprints/{md3.d.ts → md3.d.mts} +6 -2
  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 → index.d.mts} +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 → index.d.mts} +22 -13
  32. package/lib/components/VAppBar/VAppBar.mjs +10 -14
  33. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  34. package/lib/components/VAppBar/VAppBarNavIcon.mjs +10 -13
  35. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  36. package/lib/components/VAppBar/{index.d.ts → index.d.mts} +479 -118
  37. package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
  38. package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -3
  39. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  40. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  41. package/lib/components/VAutocomplete/{index.d.ts → index.d.mts} +231 -409
  42. package/lib/components/VAvatar/VAvatar.mjs +4 -2
  43. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  44. package/lib/components/VAvatar/{index.d.ts → index.d.mts} +23 -14
  45. package/lib/components/VBadge/VBadge.mjs +6 -5
  46. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  47. package/lib/components/VBadge/{index.d.ts → index.d.mts} +27 -22
  48. package/lib/components/VBanner/VBanner.mjs +6 -4
  49. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  50. package/lib/components/VBanner/VBannerActions.mjs +5 -2
  51. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  52. package/lib/components/VBanner/{index.d.ts → index.d.mts} +92 -66
  53. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -2
  54. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  55. package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +22 -13
  56. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +35 -18
  57. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -3
  59. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  60. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +4 -2
  61. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  62. package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +134 -93
  63. package/lib/components/VBtn/VBtn.mjs +12 -9
  64. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  65. package/lib/components/VBtn/{index.d.ts → index.d.mts} +33 -36
  66. package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -1
  67. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  68. package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +22 -13
  69. package/lib/components/VBtnToggle/VBtnToggle.mjs +4 -2
  70. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  71. package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +30 -21
  72. package/lib/components/VCard/VCard.mjs +5 -3
  73. package/lib/components/VCard/VCard.mjs.map +1 -1
  74. package/lib/components/VCard/VCardActions.mjs +7 -4
  75. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  76. package/lib/components/VCard/VCardItem.mjs +5 -2
  77. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  78. package/lib/components/VCard/{index.d.ts → index.d.mts} +250 -141
  79. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  80. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  81. package/lib/components/VCarousel/VCarouselItem.mjs +6 -3
  82. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  83. package/lib/components/VCarousel/{index.d.ts → index.d.mts} +78 -141
  84. package/lib/components/VCheckbox/VCheckbox.mjs +3 -2
  85. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  86. package/lib/components/VCheckbox/VCheckboxBtn.mjs +2 -2
  87. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  88. package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +75 -109
  89. package/lib/components/VChip/VChip.mjs +7 -8
  90. package/lib/components/VChip/VChip.mjs.map +1 -1
  91. package/lib/components/VChip/{index.d.ts → index.d.mts} +27 -30
  92. package/lib/components/VChipGroup/VChipGroup.mjs +4 -1
  93. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  94. package/lib/components/VChipGroup/{index.d.ts → index.d.mts} +22 -13
  95. package/lib/components/VCode/{index.d.ts → index.d.mts} +30 -17
  96. package/lib/components/VColorPicker/VColorPicker.mjs +12 -7
  97. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  98. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -2
  99. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  100. package/lib/components/VColorPicker/VColorPickerEdit.mjs +6 -3
  101. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  102. package/lib/components/VColorPicker/VColorPickerPreview.mjs +6 -3
  103. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  104. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +12 -9
  105. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  106. package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +131 -32
  107. package/lib/components/VColorPicker/util/index.mjs +2 -22
  108. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  109. package/lib/components/VCombobox/VCombobox.mjs +11 -3
  110. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  111. package/lib/components/VCombobox/{index.d.ts → index.d.mts} +231 -409
  112. package/lib/components/VCounter/VCounter.mjs +4 -1
  113. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  114. package/lib/components/VCounter/{index.d.ts → index.d.mts} +22 -145
  115. package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +0 -12
  116. package/lib/components/VDialog/VDialog.mjs +4 -3
  117. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  118. package/lib/components/VDialog/{index.d.ts → index.d.mts} +104 -282
  119. package/lib/components/VDivider/VDivider.mjs +4 -2
  120. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  121. package/lib/components/VDivider/{index.d.ts → index.d.mts} +22 -13
  122. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +4 -2
  123. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  124. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +4 -1
  125. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  126. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +4 -2
  127. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  128. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -1
  129. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  130. package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +109 -81
  131. package/lib/components/VField/VField.css +0 -1
  132. package/lib/components/VField/VField.mjs +9 -6
  133. package/lib/components/VField/VField.mjs.map +1 -1
  134. package/lib/components/VField/VField.sass +0 -1
  135. package/lib/components/VField/VFieldLabel.mjs +6 -3
  136. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  137. package/lib/components/VField/{index.d.ts → index.d.mts} +125 -76
  138. package/lib/components/VFileInput/VFileInput.mjs +4 -2
  139. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  140. package/lib/components/VFileInput/{index.d.ts → index.d.mts} +114 -165
  141. package/lib/components/VFooter/VFooter.mjs +4 -2
  142. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  143. package/lib/components/VFooter/{index.d.ts → index.d.mts} +22 -13
  144. package/lib/components/VForm/VForm.mjs +5 -2
  145. package/lib/components/VForm/VForm.mjs.map +1 -1
  146. package/lib/components/VForm/{index.d.ts → index.d.mts} +30 -17
  147. package/lib/components/VGrid/VCol.mjs +4 -1
  148. package/lib/components/VGrid/VCol.mjs.map +1 -1
  149. package/lib/components/VGrid/VContainer.mjs +4 -1
  150. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  151. package/lib/components/VGrid/VRow.mjs +4 -1
  152. package/lib/components/VGrid/VRow.mjs.map +1 -1
  153. package/lib/components/VGrid/{index.d.ts → index.d.mts} +104 -60
  154. package/lib/components/VHover/{index.d.ts → index.d.mts} +20 -44
  155. package/lib/components/VIcon/VIcon.mjs +4 -2
  156. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  157. package/lib/components/VIcon/{index.d.ts → index.d.mts} +23 -26
  158. package/lib/components/VImg/VImg.css +2 -4
  159. package/lib/components/VImg/VImg.mjs +27 -24
  160. package/lib/components/VImg/VImg.mjs.map +1 -1
  161. package/lib/components/VImg/VImg.sass +4 -3
  162. package/lib/components/VImg/{index.d.ts → index.d.mts} +73 -31
  163. package/lib/components/VInput/VInput.mjs +4 -1
  164. package/lib/components/VInput/VInput.mjs.map +1 -1
  165. package/lib/components/VInput/{index.d.ts → index.d.mts} +37 -40
  166. package/lib/components/VItemGroup/VItemGroup.mjs +4 -1
  167. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  168. package/lib/components/VItemGroup/{index.d.ts → index.d.mts} +30 -33
  169. package/lib/components/VKbd/{index.d.ts → index.d.mts} +30 -17
  170. package/lib/components/VLabel/VLabel.mjs +4 -1
  171. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  172. package/lib/components/VLabel/{index.d.ts → index.d.mts} +22 -13
  173. package/lib/components/VLayout/VLayout.mjs +8 -4
  174. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  175. package/lib/components/VLayout/VLayoutItem.mjs +4 -2
  176. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  177. package/lib/components/VLayout/{index.d.ts → index.d.mts} +44 -26
  178. package/lib/components/VLazy/VLazy.mjs +4 -2
  179. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  180. package/lib/components/VLazy/{index.d.ts → index.d.mts} +22 -13
  181. package/lib/components/VList/VList.mjs +12 -24
  182. package/lib/components/VList/VList.mjs.map +1 -1
  183. package/lib/components/VList/VListChildren.mjs.map +1 -1
  184. package/lib/components/VList/VListGroup.mjs +8 -2
  185. package/lib/components/VList/VListGroup.mjs.map +1 -1
  186. package/lib/components/VList/VListItem.mjs +12 -5
  187. package/lib/components/VList/VListItem.mjs.map +1 -1
  188. package/lib/components/VList/VListItemAction.mjs +4 -1
  189. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  190. package/lib/components/VList/VListItemMedia.mjs +4 -1
  191. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  192. package/lib/components/VList/VListSubheader.mjs +5 -3
  193. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  194. package/lib/components/VList/{index.d.ts → index.d.mts} +950 -826
  195. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -2
  196. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  197. package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +30 -17
  198. package/lib/components/VMain/VMain.mjs +4 -2
  199. package/lib/components/VMain/VMain.mjs.map +1 -1
  200. package/lib/components/VMain/{index.d.ts → index.d.mts} +30 -17
  201. package/lib/components/VMenu/VMenu.mjs +2 -1
  202. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  203. package/lib/components/VMenu/{index.d.ts → index.d.mts} +104 -282
  204. package/lib/components/VMessages/VMessages.mjs +4 -2
  205. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  206. package/lib/components/VMessages/{index.d.ts → index.d.mts} +22 -145
  207. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -10
  208. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  209. package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +26 -29
  210. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  211. package/lib/components/VNoSsr/index.d.mts +8 -0
  212. package/lib/components/VOverlay/VOverlay.mjs +5 -3
  213. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  214. package/lib/components/VOverlay/{index.d.ts → index.d.mts} +38 -45
  215. package/lib/components/VPagination/VPagination.mjs +4 -1
  216. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  217. package/lib/components/VPagination/{index.d.ts → index.d.mts} +23 -30
  218. package/lib/components/VParallax/VParallax.mjs +5 -2
  219. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  220. package/lib/components/VParallax/{index.d.ts → index.d.mts} +34 -33
  221. package/lib/components/VProgressCircular/VProgressCircular.mjs +4 -2
  222. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  223. package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +22 -13
  224. package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -4
  225. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  226. package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +42 -45
  227. package/lib/components/VRadio/VRadio.mjs +2 -1
  228. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  229. package/lib/components/VRadio/{index.d.ts → index.d.mts} +27 -38
  230. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  231. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  232. package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +45 -68
  233. package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -1
  234. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  235. package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +33 -44
  236. package/lib/components/VRating/VRating.mjs +4 -1
  237. package/lib/components/VRating/VRating.mjs.map +1 -1
  238. package/lib/components/VRating/{index.d.ts → index.d.mts} +23 -18
  239. package/lib/components/VResponsive/VResponsive.css +13 -5
  240. package/lib/components/VResponsive/VResponsive.mjs +14 -8
  241. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  242. package/lib/components/VResponsive/VResponsive.sass +12 -4
  243. package/lib/components/VResponsive/{index.d.ts → index.d.mts} +52 -31
  244. package/lib/components/VSelect/VSelect.mjs +11 -3
  245. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  246. package/lib/components/VSelect/{index.d.ts → index.d.mts} +200 -558
  247. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -2
  248. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  249. package/lib/components/VSelectionControl/{index.d.ts → index.d.mts} +76 -46
  250. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
  251. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  252. package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +23 -14
  253. package/lib/components/VSheet/VSheet.css +6 -0
  254. package/lib/components/VSheet/VSheet.mjs +4 -2
  255. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  256. package/lib/components/VSheet/_variables.scss +1 -1
  257. package/lib/components/VSheet/{index.d.ts → index.d.mts} +22 -13
  258. package/lib/components/VSlideGroup/VSlideGroup.mjs +6 -3
  259. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  260. package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +59 -90
  261. package/lib/components/VSlider/VSlider.mjs +2 -1
  262. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  263. package/lib/components/VSlider/VSliderThumb.mjs +6 -4
  264. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  265. package/lib/components/VSlider/VSliderTrack.mjs +6 -4
  266. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  267. package/lib/components/VSlider/{index.d.ts → index.d.mts} +33 -44
  268. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  269. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  270. package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +92 -142
  271. package/lib/components/VSwitch/VSwitch.mjs +2 -1
  272. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  273. package/lib/components/VSwitch/{index.d.ts → index.d.mts} +45 -72
  274. package/lib/components/VSystemBar/VSystemBar.mjs +4 -2
  275. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  276. package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +22 -13
  277. package/lib/components/VTable/VTable.mjs +4 -1
  278. package/lib/components/VTable/VTable.mjs.map +1 -1
  279. package/lib/components/VTable/{index.d.ts → index.d.mts} +26 -29
  280. package/lib/components/VTabs/VTab.mjs +2 -2
  281. package/lib/components/VTabs/VTab.mjs.map +1 -1
  282. package/lib/components/VTabs/VTabs.mjs +2 -2
  283. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  284. package/lib/components/VTabs/{index.d.ts → index.d.mts} +45 -27
  285. package/lib/components/VTextField/VTextField.mjs +3 -2
  286. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  287. package/lib/components/VTextField/{index.d.ts → index.d.mts} +232 -293
  288. package/lib/components/VTextarea/VTextarea.mjs +3 -2
  289. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  290. package/lib/components/VTextarea/{index.d.ts → index.d.mts} +94 -137
  291. package/lib/components/VThemeProvider/VThemeProvider.mjs +6 -3
  292. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  293. package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +22 -13
  294. package/lib/components/VTimeline/VTimeline.mjs +5 -3
  295. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  296. package/lib/components/VTimeline/VTimelineDivider.mjs +4 -1
  297. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  298. package/lib/components/VTimeline/VTimelineItem.mjs +8 -6
  299. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  300. package/lib/components/VTimeline/{index.d.ts → index.d.mts} +67 -57
  301. package/lib/components/VToolbar/VToolbar.mjs +4 -2
  302. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  303. package/lib/components/VToolbar/VToolbarItems.mjs +9 -4
  304. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  305. package/lib/components/VToolbar/VToolbarTitle.mjs +5 -2
  306. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  307. package/lib/components/VToolbar/{index.d.ts → index.d.mts} +74 -71
  308. package/lib/components/VTooltip/VTooltip.mjs +2 -1
  309. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  310. package/lib/components/VTooltip/{index.d.ts → index.d.mts} +104 -150
  311. package/lib/components/VValidation/{index.d.ts → index.d.mts} +6 -18
  312. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +21 -23
  313. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  314. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +5 -2
  315. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  316. package/lib/components/VVirtualScroll/{index.d.ts → index.d.mts} +70 -30
  317. package/lib/components/VWindow/VWindow.mjs +4 -1
  318. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  319. package/lib/components/VWindow/VWindowItem.mjs +4 -1
  320. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  321. package/lib/components/VWindow/{index.d.ts → index.d.mts} +61 -79
  322. package/lib/components/{index.d.ts → index.d.mts} +6475 -7529
  323. package/lib/components/transitions/{index.d.ts → index.d.mts} +0 -192
  324. package/lib/composables/component.mjs +11 -0
  325. package/lib/composables/component.mjs.map +1 -0
  326. package/lib/composables/defaults.mjs +63 -5
  327. package/lib/composables/defaults.mjs.map +1 -1
  328. package/lib/composables/display.mjs +6 -6
  329. package/lib/composables/display.mjs.map +1 -1
  330. package/lib/composables/focus.mjs.map +1 -1
  331. package/lib/composables/icons.mjs +15 -4
  332. package/lib/composables/icons.mjs.map +1 -1
  333. package/lib/composables/index.mjs +1 -1
  334. package/lib/composables/index.mjs.map +1 -1
  335. package/lib/composables/loader.mjs.map +1 -1
  336. package/lib/composables/scroll.mjs +18 -19
  337. package/lib/composables/scroll.mjs.map +1 -1
  338. package/lib/entry-bundler.mjs +1 -1
  339. package/lib/framework.mjs +2 -2
  340. package/lib/framework.mjs.map +1 -1
  341. package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +1 -1
  342. package/lib/iconsets/{fa.d.ts → fa.d.mts} +1 -1
  343. package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +1 -1
  344. package/lib/iconsets/{md.d.ts → md.d.mts} +1 -1
  345. package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +1 -1
  346. package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +1 -1
  347. package/lib/{index.d.ts → index.d.mts} +13 -12
  348. package/lib/labs/VDataTable/VDataTable.mjs +12 -3
  349. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  350. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  351. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  352. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  353. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  354. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -2
  355. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  356. package/lib/labs/VDataTable/VDataTableServer.mjs +1 -6
  357. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  358. package/lib/labs/VDataTable/VDataTableVirtual.mjs +7 -2
  359. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  360. package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
  361. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  362. package/lib/labs/VDataTable/{index.d.ts → index.d.mts} +113 -943
  363. package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +8 -36
  364. package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +0 -12
  365. package/lib/labs/{components.d.ts → components.d.mts} +161 -1031
  366. package/lib/labs/date/DateAdapter.mjs +2 -0
  367. package/lib/labs/date/DateAdapter.mjs.map +1 -0
  368. package/lib/labs/date/adapters/vuetify.d.mts +52 -0
  369. package/lib/{adapters → labs/date/adapters}/vuetify.mjs +2 -2
  370. package/lib/labs/date/adapters/vuetify.mjs.map +1 -0
  371. package/lib/{composables → labs/date}/date.mjs +3 -3
  372. package/lib/labs/date/date.mjs.map +1 -0
  373. package/lib/labs/date/index.d.mts +40 -0
  374. package/lib/labs/date/index.mjs +2 -0
  375. package/lib/labs/date/index.mjs.map +1 -0
  376. package/lib/labs/index.mjs +3 -2
  377. package/lib/labs/index.mjs.map +1 -1
  378. package/lib/util/colorUtils.mjs +68 -3
  379. package/lib/util/colorUtils.mjs.map +1 -1
  380. package/lib/util/console.mjs +12 -81
  381. package/lib/util/console.mjs.map +1 -1
  382. package/lib/util/createSimpleFunctional.mjs +9 -4
  383. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  384. package/lib/util/defineComponent.mjs +11 -43
  385. package/lib/util/defineComponent.mjs.map +1 -1
  386. package/lib/util/helpers.mjs +31 -2
  387. package/lib/util/helpers.mjs.map +1 -1
  388. package/lib/util/index.mjs +1 -0
  389. package/lib/util/index.mjs.map +1 -1
  390. package/package.json +11 -6
  391. package/lib/adapters/date-adapter.mjs +0 -2
  392. package/lib/adapters/date-adapter.mjs.map +0 -1
  393. package/lib/adapters/vuetify.mjs.map +0 -1
  394. package/lib/components/VNoSsr/index.d.ts +0 -18
  395. package/lib/composables/date.mjs.map +0 -1
  396. /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
  397. /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
  398. /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  399. /package/lib/locale/{index.d.ts → index.d.mts} +0 -0
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v4.0.0-dev-20230426.0
2
+ * Vuetify v4.0.0-dev-20230511.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, onUpdated, withModifiers } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, warn, onScopeDispose, effectScope, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated, withModifiers } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,11 +167,14 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
- function pick(obj, paths) {
170
+ function has(obj, key) {
171
+ return key.every(k => obj.hasOwnProperty(k));
172
+ }
173
+ function pick(obj, paths, exclude) {
171
174
  const found = Object.create(null);
172
175
  const rest = Object.create(null);
173
176
  for (const key in obj) {
174
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key)) {
177
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
175
178
  found[key] = obj[key];
176
179
  } else {
177
180
  rest[key] = obj[key];
@@ -356,6 +359,32 @@ function callEvent(handler) {
356
359
  handler(...args);
357
360
  }
358
361
  }
362
+ function focusableChildren(el) {
363
+ const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"]):not([disabled])`).join(', ');
364
+ return [...el.querySelectorAll(targets)];
365
+ }
366
+ function focusChild(el, location) {
367
+ const focusable = focusableChildren(el);
368
+ const idx = focusable.indexOf(document.activeElement);
369
+ if (!location) {
370
+ if (!el.contains(document.activeElement)) {
371
+ focusable[0]?.focus();
372
+ }
373
+ } else if (location === 'first') {
374
+ focusable[0]?.focus();
375
+ } else if (location === 'last') {
376
+ focusable.at(-1)?.focus();
377
+ } else {
378
+ let _el;
379
+ let idxx = idx;
380
+ const inc = location === 'next' ? 1 : -1;
381
+ do {
382
+ idxx += inc;
383
+ _el = focusable[idxx];
384
+ } while ((!_el || _el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
385
+ if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
386
+ }
387
+ }
359
388
 
360
389
  const block = ['top', 'bottom'];
361
390
  const inline = ['start', 'end', 'left', 'right'];
@@ -508,79 +537,15 @@ function animate(el, keyframes, options) {
508
537
  }
509
538
 
510
539
  /* eslint-disable no-console */
511
- // import Vuetify from '../framework'
512
-
513
- function createMessage(message, vm, parent) {
514
- // if (Vuetify.config.silent) return
515
-
516
- if (parent) {
517
- vm = {
518
- __isVue: true,
519
- $parent: parent,
520
- $options: vm
521
- };
522
- }
523
- if (vm) {
524
- // Only show each message once per instance
525
- vm.$_alreadyWarned = vm.$_alreadyWarned || [];
526
- if (vm.$_alreadyWarned.includes(message)) return;
527
- vm.$_alreadyWarned.push(message);
528
- }
529
- return `[Vuetify] ${message}` + (vm ? generateComponentTrace(vm) : '');
530
- }
531
- function consoleWarn(message, vm, parent) {
532
- const newMessage = createMessage(message, vm, parent);
533
- newMessage != null && console.warn(newMessage);
540
+ function consoleWarn(message) {
541
+ warn(`Vuetify: ${message}`);
534
542
  }
535
- function consoleError(message, vm, parent) {
536
- const newMessage = createMessage(message, vm, parent);
537
- newMessage != null && console.error(newMessage);
543
+ function consoleError(message) {
544
+ warn(`Vuetify error: ${message}`);
538
545
  }
539
-
540
- /**
541
- * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js
542
- */
543
-
544
- const classifyRE = /(?:^|[-_])(\w)/g;
545
- const classify = str => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');
546
- function formatComponentName(vm, includeFile) {
547
- if (vm.$root === vm) {
548
- return '<Root>';
549
- }
550
- const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.__isVue ? vm.$options || vm.constructor.options : vm || {};
551
- let name = options.name || options._componentTag;
552
- const file = options.__file;
553
- if (!name && file) {
554
- const match = file.match(/([^/\\]+)\.vue$/);
555
- name = match?.[1];
556
- }
557
- return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');
558
- }
559
- function generateComponentTrace(vm) {
560
- if (vm.__isVue && vm.$parent) {
561
- const tree = [];
562
- let currentRecursiveSequence = 0;
563
- while (vm) {
564
- if (tree.length > 0) {
565
- const last = tree[tree.length - 1];
566
- if (last.constructor === vm.constructor) {
567
- currentRecursiveSequence++;
568
- vm = vm.$parent;
569
- continue;
570
- } else if (currentRecursiveSequence > 0) {
571
- tree[tree.length - 1] = [last, currentRecursiveSequence];
572
- currentRecursiveSequence = 0;
573
- }
574
- }
575
- tree.push(vm);
576
- vm = vm.$parent;
577
- }
578
- return '\n\nfound in\n\n' + tree.map((vm, i) => `${i === 0 ? '---> ' : ' '.repeat(5 + i * 2)}${Array.isArray(vm)
579
- // eslint-disable-next-line sonarjs/no-nested-template-literals
580
- ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)` : formatComponentName(vm)}`).join('\n');
581
- } else {
582
- return `\n\n(found in ${formatComponentName(vm)})`;
583
- }
546
+ function deprecate(original, replacement) {
547
+ replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
548
+ warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
584
549
  }
585
550
 
586
551
  // For converting XYZ to sRGB
@@ -654,7 +619,46 @@ function toXYZ(lab) {
654
619
  function isCssColor(color) {
655
620
  return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
656
621
  }
657
- function parseColor$1(color) {
622
+ const cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
623
+ const mappers = {
624
+ rgb: (r, g, b, a) => ({
625
+ r,
626
+ g,
627
+ b,
628
+ a
629
+ }),
630
+ rgba: (r, g, b, a) => ({
631
+ r,
632
+ g,
633
+ b,
634
+ a
635
+ }),
636
+ hsl: (h, s, l, a) => HSLtoRGB({
637
+ h,
638
+ s,
639
+ l,
640
+ a
641
+ }),
642
+ hsla: (h, s, l, a) => HSLtoRGB({
643
+ h,
644
+ s,
645
+ l,
646
+ a
647
+ }),
648
+ hsv: (h, s, v, a) => HSVtoRGB({
649
+ h,
650
+ s,
651
+ v,
652
+ a
653
+ }),
654
+ hsva: (h, s, v, a) => HSVtoRGB({
655
+ h,
656
+ s,
657
+ v,
658
+ a
659
+ })
660
+ };
661
+ function parseColor(color) {
658
662
  if (typeof color === 'number') {
659
663
  if (isNaN(color) || color < 0 || color > 0xFFFFFF) {
660
664
  // int can't have opacity
@@ -665,6 +669,22 @@ function parseColor$1(color) {
665
669
  g: (color & 0xFF00) >> 8,
666
670
  b: color & 0xFF
667
671
  };
672
+ } else if (typeof color === 'string' && cssColorRe.test(color)) {
673
+ const {
674
+ groups
675
+ } = color.match(cssColorRe);
676
+ const {
677
+ fn,
678
+ values
679
+ } = groups;
680
+ const realValues = values.split(/,\s*/).map(v => {
681
+ if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {
682
+ return parseFloat(v) / 100;
683
+ } else {
684
+ return parseFloat(v);
685
+ }
686
+ });
687
+ return mappers[fn](...realValues);
668
688
  } else if (typeof color === 'string') {
669
689
  let hex = color.startsWith('#') ? color.slice(1) : color;
670
690
  if ([3, 4].includes(hex.length)) {
@@ -677,9 +697,16 @@ function parseColor$1(color) {
677
697
  consoleWarn(`'${color}' is not a valid hex(a) color`);
678
698
  }
679
699
  return HexToRGB(hex);
680
- } else {
681
- throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`);
700
+ } else if (typeof color === 'object') {
701
+ if (has(color, ['r', 'g', 'b'])) {
702
+ return color;
703
+ } else if (has(color, ['h', 's', 'l'])) {
704
+ return HSVtoRGB(HSLtoHSV(color));
705
+ } else if (has(color, ['h', 's', 'v'])) {
706
+ return HSVtoRGB(color);
707
+ }
682
708
  }
709
+ throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);
683
710
  }
684
711
 
685
712
  /** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
@@ -702,6 +729,9 @@ function HSVtoRGB(hsva) {
702
729
  a
703
730
  };
704
731
  }
732
+ function HSLtoRGB(hsla) {
733
+ return HSVtoRGB(HSLtoHSV(hsla));
734
+ }
705
735
 
706
736
  /** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
707
737
  function RGBtoHSV(rgba) {
@@ -840,7 +870,7 @@ function darken(value, amount) {
840
870
  * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
841
871
  */
842
872
  function getLuma(color) {
843
- const rgb = parseColor$1(color);
873
+ const rgb = parseColor(color);
844
874
  return toXYZ$1(rgb)[1];
845
875
  }
846
876
 
@@ -856,44 +886,6 @@ function getContrast(first, second) {
856
886
  return (light + 0.05) / (dark + 0.05);
857
887
  }
858
888
 
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
889
  /**
898
890
  * Creates a factory function for props definitions.
899
891
  * This is used to define props in a composable then override
@@ -947,17 +939,54 @@ function propsFactory(props, source) {
947
939
 
948
940
  // Types
949
941
 
942
+ // Composables
943
+ const makeComponentProps = propsFactory({
944
+ class: [String, Array],
945
+ style: {
946
+ type: [String, Array, Object],
947
+ default: null
948
+ }
949
+ }, 'component');
950
+
951
+ function useToggleScope(source, fn) {
952
+ let scope;
953
+ function start() {
954
+ scope = effectScope();
955
+ scope.run(() => fn.length ? fn(() => {
956
+ scope?.stop();
957
+ start();
958
+ }) : fn());
959
+ }
960
+ watch(source, active => {
961
+ if (active && !scope) {
962
+ start();
963
+ } else if (!active) {
964
+ scope?.stop();
965
+ scope = undefined;
966
+ }
967
+ }, {
968
+ immediate: true
969
+ });
970
+ onScopeDispose(() => {
971
+ scope?.stop();
972
+ });
973
+ }
974
+
975
+ // Composables
976
+
977
+ // Types
978
+
950
979
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
951
980
  function createDefaults(options) {
952
981
  return ref(options);
953
982
  }
954
- function useDefaults() {
983
+ function injectDefaults() {
955
984
  const defaults = inject$1(DefaultsSymbol);
956
985
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
957
986
  return defaults;
958
987
  }
959
988
  function provideDefaults(defaults, options) {
960
- const injectedDefaults = useDefaults();
989
+ const injectedDefaults = injectDefaults();
961
990
  const providedDefaults = ref(defaults);
962
991
  const newDefaults = computed(() => {
963
992
  const disabled = unref(options?.disabled);
@@ -984,41 +1013,68 @@ function provideDefaults(defaults, options) {
984
1013
  provide(DefaultsSymbol, newDefaults);
985
1014
  return newDefaults;
986
1015
  }
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;
1016
+ function propIsDefined(vnode, prop) {
1017
+ return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1018
+ }
1019
+ function internalUseDefaults() {
1020
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1021
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1022
+ let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
1023
+ const vm = getCurrentInstance('useDefaults');
1024
+ name = name ?? vm.type.name ?? vm.type.__name;
1025
+ if (!name) {
1026
+ throw new Error('[Vuetify] Could not determine component name');
1027
+ }
1028
+ const componentDefaults = computed(() => defaults.value?.[props._as ?? name]);
1029
+ const _props = new Proxy(props, {
1030
+ get(target, prop) {
1031
+ const propValue = Reflect.get(target, prop);
1032
+ if (prop === 'class' || prop === 'style') {
1033
+ return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1034
+ } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1035
+ return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue;
1036
+ }
1037
+ return propValue;
1003
1038
  }
1004
- }, {
1005
- immediate: true
1006
1039
  });
1007
- onScopeDispose(() => {
1008
- scope?.stop();
1040
+ const _subcomponentDefaults = shallowRef();
1041
+ watchEffect(() => {
1042
+ if (componentDefaults.value) {
1043
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1044
+ let [key] = _ref;
1045
+ return key.startsWith(key[0].toUpperCase());
1046
+ });
1047
+ if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1048
+ }
1009
1049
  });
1050
+ function provideSubDefaults() {
1051
+ // If subcomponent defaults are provided, override any
1052
+ // subcomponents provided by the component's setup function.
1053
+ // This uses injectSelf so must be done after the original setup to work.
1054
+ useToggleScope(_subcomponentDefaults, () => {
1055
+ provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1056
+ });
1057
+ }
1058
+ return {
1059
+ props: _props,
1060
+ provideSubDefaults
1061
+ };
1062
+ }
1063
+ function useDefaults() {
1064
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1065
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1066
+ const {
1067
+ props: _props,
1068
+ provideSubDefaults
1069
+ } = internalUseDefaults(props, name);
1070
+ provideSubDefaults();
1071
+ return _props;
1010
1072
  }
1011
1073
 
1012
1074
  // Utils
1013
1075
 
1014
1076
  // Types
1015
1077
 
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
1078
  // Implementation
1023
1079
  function defineComponent(options) {
1024
1080
  options._setup = options._setup ?? options.setup;
@@ -1030,43 +1086,20 @@ function defineComponent(options) {
1030
1086
  options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1031
1087
  const propKeys = Object.keys(options.props);
1032
1088
  options.filterProps = function filterProps(props) {
1033
- return pick(props, propKeys);
1089
+ return pick(props, propKeys, ['class', 'style']);
1034
1090
  };
1035
1091
  options.props._as = String;
1036
1092
  options.setup = function setup(props, ctx) {
1037
- const defaults = useDefaults();
1093
+ const defaults = injectDefaults();
1038
1094
 
1039
1095
  // Skip props proxy if defaults are not provided
1040
1096
  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
- });
1097
+ const {
1098
+ props: _props,
1099
+ provideSubDefaults
1100
+ } = internalUseDefaults(props, props._as ?? options.name, defaults);
1062
1101
  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
- });
1102
+ provideSubDefaults();
1070
1103
  return setupBindings;
1071
1104
  };
1072
1105
  }
@@ -1091,15 +1124,19 @@ function createSimpleFunctional(klass) {
1091
1124
  tag: {
1092
1125
  type: String,
1093
1126
  default: tag
1094
- }
1127
+ },
1128
+ ...makeComponentProps()
1095
1129
  },
1096
1130
  setup(props, _ref) {
1097
1131
  let {
1098
1132
  slots
1099
1133
  } = _ref;
1100
- return () => h(props.tag, {
1101
- class: klass
1102
- }, slots.default?.());
1134
+ return () => {
1135
+ return h(props.tag, {
1136
+ class: [klass, props.class],
1137
+ style: props.style
1138
+ }, slots.default?.());
1139
+ };
1103
1140
  }
1104
1141
  });
1105
1142
  }
@@ -1132,6 +1169,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1132
1169
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1133
1170
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1134
1171
 
1172
+ // Utilities
1173
+ function getCurrentInstance(name, message) {
1174
+ const vm = getCurrentInstance$1();
1175
+ if (!vm) {
1176
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1177
+ }
1178
+ return vm;
1179
+ }
1180
+ function getCurrentInstanceName() {
1181
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1182
+ const vm = getCurrentInstance(name).type;
1183
+ return toKebabCase(vm?.aliasName || vm?.name);
1184
+ }
1185
+ let _uid = 0;
1186
+ let _map = new WeakMap();
1187
+ function getUid() {
1188
+ const vm = getCurrentInstance('getUid');
1189
+ if (_map.has(vm)) return _map.get(vm);else {
1190
+ const uid = _uid++;
1191
+ _map.set(vm, uid);
1192
+ return uid;
1193
+ }
1194
+ }
1195
+ getUid.reset = () => {
1196
+ _uid = 0;
1197
+ _map = new WeakMap();
1198
+ };
1199
+
1135
1200
  function getScrollParent(el) {
1136
1201
  while (el) {
1137
1202
  if (hasScrollbar(el)) return el;
@@ -1155,6 +1220,16 @@ function hasScrollbar(el) {
1155
1220
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1156
1221
  }
1157
1222
 
1223
+ function injectSelf(key) {
1224
+ const {
1225
+ provides
1226
+ } = getCurrentInstance('injectSelf');
1227
+ if (provides && key in provides) {
1228
+ // TS doesn't allow symbol as index type
1229
+ return provides[key];
1230
+ }
1231
+ }
1232
+
1158
1233
  function isFixedPosition(el) {
1159
1234
  while (el) {
1160
1235
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1659,7 +1734,7 @@ function createTheme(options) {
1659
1734
  for (const variation of ['lighten', 'darken']) {
1660
1735
  const fn = variation === 'lighten' ? lighten : darken;
1661
1736
  for (const amount of createRange(parsedOptions.variations[variation], 1)) {
1662
- theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor$1(color), amount));
1737
+ theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
1663
1738
  }
1664
1739
  }
1665
1740
  }
@@ -1667,9 +1742,9 @@ function createTheme(options) {
1667
1742
  for (const color of Object.keys(theme.colors)) {
1668
1743
  if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
1669
1744
  const onColor = `on-${color}`;
1670
- const colorVal = parseColor$1(theme.colors[color]);
1671
- const blackContrast = Math.abs(APCAcontrast(parseColor$1(0), colorVal));
1672
- const whiteContrast = Math.abs(APCAcontrast(parseColor$1(0xffffff), colorVal));
1745
+ const colorVal = parseColor(theme.colors[color]);
1746
+ const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal));
1747
+ const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal));
1673
1748
 
1674
1749
  // TODO: warn about poor color selections
1675
1750
  // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
@@ -1801,14 +1876,14 @@ function genCssVariables(theme) {
1801
1876
  const darkOverlay = theme.dark ? 1 : 2;
1802
1877
  const variables = [];
1803
1878
  for (const [key, value] of Object.entries(theme.colors)) {
1804
- const rgb = parseColor$1(value);
1879
+ const rgb = parseColor(value);
1805
1880
  variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
1806
1881
  if (!key.startsWith('on-')) {
1807
1882
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1808
1883
  }
1809
1884
  }
1810
1885
  for (const [key, value] of Object.entries(theme.variables)) {
1811
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1886
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
1812
1887
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1813
1888
  variables.push(`--v-${key}: ${rgb ?? value}`);
1814
1889
  }
@@ -2137,6 +2212,7 @@ function useRtl() {
2137
2212
  const VApp = genericComponent()({
2138
2213
  name: 'VApp',
2139
2214
  props: {
2215
+ ...makeComponentProps(),
2140
2216
  ...makeLayoutProps({
2141
2217
  fullHeight: true
2142
2218
  }),
@@ -2159,8 +2235,8 @@ const VApp = genericComponent()({
2159
2235
  } = useRtl();
2160
2236
  useRender(() => createVNode("div", {
2161
2237
  "ref": layoutRef,
2162
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2163
- "style": layoutStyles.value
2238
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2239
+ "style": [layoutStyles.value, props.style]
2164
2240
  }, [createVNode("div", {
2165
2241
  "class": "v-application__wrap"
2166
2242
  }, [slots.default?.()])]));
@@ -2580,13 +2656,16 @@ function useAspectStyles(props) {
2580
2656
  })
2581
2657
  };
2582
2658
  }
2659
+ const makeVResponsiveProps = propsFactory({
2660
+ aspectRatio: [String, Number],
2661
+ contentClass: String,
2662
+ inline: Boolean,
2663
+ ...makeComponentProps(),
2664
+ ...makeDimensionProps()
2665
+ }, 'v-responsive');
2583
2666
  const VResponsive = genericComponent()({
2584
2667
  name: 'VResponsive',
2585
- props: {
2586
- aspectRatio: [String, Number],
2587
- contentClass: String,
2588
- ...makeDimensionProps()
2589
- },
2668
+ props: makeVResponsiveProps(),
2590
2669
  setup(props, _ref) {
2591
2670
  let {
2592
2671
  slots
@@ -2598,8 +2677,10 @@ const VResponsive = genericComponent()({
2598
2677
  dimensionStyles
2599
2678
  } = useDimension(props);
2600
2679
  useRender(() => createVNode("div", {
2601
- "class": "v-responsive",
2602
- "style": dimensionStyles.value
2680
+ "class": ['v-responsive', {
2681
+ 'v-responsive--inline': props.inline
2682
+ }, props.class],
2683
+ "style": [dimensionStyles.value, props.style]
2603
2684
  }, [createVNode("div", {
2604
2685
  "class": "v-responsive__sizer",
2605
2686
  "style": aspectStyles.value
@@ -2694,7 +2775,6 @@ const VImg = genericComponent()({
2694
2775
  intersect: Intersect
2695
2776
  },
2696
2777
  props: {
2697
- aspectRatio: [String, Number],
2698
2778
  alt: String,
2699
2779
  cover: Boolean,
2700
2780
  eager: Boolean,
@@ -2716,7 +2796,8 @@ const VImg = genericComponent()({
2716
2796
  default: ''
2717
2797
  },
2718
2798
  srcset: String,
2719
- width: [String, Number],
2799
+ ...makeVResponsiveProps(),
2800
+ ...makeComponentProps(),
2720
2801
  ...makeTransitionProps()
2721
2802
  },
2722
2803
  emits: {
@@ -2901,25 +2982,27 @@ const VImg = genericComponent()({
2901
2982
  }
2902
2983
  });
2903
2984
  }
2904
- useRender(() => withDirectives(createVNode(VResponsive, {
2905
- "class": ['v-img', {
2906
- 'v-img--booting': !isBooted.value
2907
- }],
2908
- "style": {
2909
- width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2910
- },
2911
- "aspectRatio": aspectRatio.value,
2912
- "aria-label": props.alt,
2913
- "role": props.alt ? 'img' : undefined
2914
- }, {
2915
- additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
2916
- default: slots.default
2917
- }), [[resolveDirective("intersect"), {
2918
- handler: init,
2919
- options: props.options
2920
- }, null, {
2921
- once: true
2922
- }]]));
2985
+ useRender(() => {
2986
+ const [responsiveProps] = VResponsive.filterProps(props);
2987
+ return withDirectives(createVNode(VResponsive, mergeProps({
2988
+ "class": ['v-img', {
2989
+ 'v-img--booting': !isBooted.value
2990
+ }, props.class],
2991
+ "style": props.style
2992
+ }, responsiveProps, {
2993
+ "aspectRatio": aspectRatio.value,
2994
+ "aria-label": props.alt,
2995
+ "role": props.alt ? 'img' : undefined
2996
+ }), {
2997
+ additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
2998
+ default: slots.default
2999
+ }), [[resolveDirective("intersect"), {
3000
+ handler: init,
3001
+ options: props.options
3002
+ }, null, {
3003
+ once: true
3004
+ }]]);
3005
+ });
2923
3006
  return {
2924
3007
  currentSrc,
2925
3008
  image,
@@ -2942,10 +3025,9 @@ const makeTagProps = propsFactory({
2942
3025
  }
2943
3026
  }, 'tag');
2944
3027
 
2945
- // Types
2946
-
2947
3028
  const makeVToolbarTitleProps = propsFactory({
2948
3029
  text: String,
3030
+ ...makeComponentProps(),
2949
3031
  ...makeTagProps()
2950
3032
  }, 'v-toolbar-title');
2951
3033
  const VToolbarTitle = genericComponent()({
@@ -2958,7 +3040,8 @@ const VToolbarTitle = genericComponent()({
2958
3040
  useRender(() => {
2959
3041
  const hasText = !!(slots.default || slots.text || props.text);
2960
3042
  return createVNode(props.tag, {
2961
- "class": "v-toolbar-title"
3043
+ "class": ['v-toolbar-title', props.class],
3044
+ "style": props.style
2962
3045
  }, {
2963
3046
  default: () => [hasText && createVNode("div", {
2964
3047
  "class": "v-toolbar-title__placeholder"
@@ -3139,6 +3222,7 @@ const makeVToolbarProps = propsFactory({
3139
3222
  image: String,
3140
3223
  title: String,
3141
3224
  ...makeBorderProps(),
3225
+ ...makeComponentProps(),
3142
3226
  ...makeElevationProps(),
3143
3227
  ...makeRoundedProps(),
3144
3228
  ...makeTagProps({
@@ -3189,8 +3273,8 @@ const VToolbar = genericComponent()({
3189
3273
  'v-toolbar--flat': props.flat,
3190
3274
  'v-toolbar--floating': props.floating,
3191
3275
  [`v-toolbar--density-${props.density}`]: true
3192
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3193
- "style": [backgroundColorStyles.value]
3276
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3277
+ "style": [backgroundColorStyles.value, props.style]
3194
3278
  }, {
3195
3279
  default: () => [hasImage && createVNode("div", {
3196
3280
  "key": "image",
@@ -3265,14 +3349,13 @@ const makeScrollProps = propsFactory({
3265
3349
  type: String
3266
3350
  },
3267
3351
  scrollThreshold: {
3268
- type: [String, Number]
3352
+ type: [String, Number],
3353
+ default: 300
3269
3354
  }
3270
3355
  }, 'scroll');
3271
3356
  function useScroll(props) {
3272
3357
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3273
3358
  const {
3274
- thresholdMetCallback,
3275
- scrollThreshold,
3276
3359
  canScroll
3277
3360
  } = args;
3278
3361
  let previousScroll = 0;
@@ -3282,8 +3365,16 @@ function useScroll(props) {
3282
3365
  const currentThreshold = ref(0);
3283
3366
  const isScrollActive = ref(false);
3284
3367
  const isScrollingUp = ref(false);
3285
- const computedScrollThreshold = computed(() => {
3286
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3368
+ const scrollThreshold = computed(() => {
3369
+ return Number(props.scrollThreshold);
3370
+ });
3371
+
3372
+ /**
3373
+ * 1: at top
3374
+ * 0: at threshold
3375
+ */
3376
+ const scrollRatio = computed(() => {
3377
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3287
3378
  });
3288
3379
  const onScroll = () => {
3289
3380
  const targetEl = target.value;
@@ -3291,7 +3382,7 @@ function useScroll(props) {
3291
3382
  previousScroll = currentScroll.value;
3292
3383
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3293
3384
  isScrollingUp.value = currentScroll.value < previousScroll;
3294
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3385
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3295
3386
  };
3296
3387
  watch(isScrollingUp, () => {
3297
3388
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3303,7 +3394,7 @@ function useScroll(props) {
3303
3394
  watch(() => props.scrollTarget, scrollTarget => {
3304
3395
  const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3305
3396
  if (!newTarget) {
3306
- consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance$1());
3397
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);
3307
3398
  return;
3308
3399
  }
3309
3400
  if (newTarget === target.value) return;
@@ -3319,15 +3410,6 @@ function useScroll(props) {
3319
3410
  onBeforeUnmount(() => {
3320
3411
  target.value?.removeEventListener('scroll', onScroll);
3321
3412
  });
3322
- thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3323
- thresholdMet && thresholdMetCallback({
3324
- currentThreshold: currentThreshold.value,
3325
- isScrollingUp: isScrollingUp.value,
3326
- savedScroll
3327
- });
3328
- }, {
3329
- immediate: true
3330
- });
3331
3413
 
3332
3414
  // Do we need this? If yes - seems that
3333
3415
  // there's no need to expose onScroll
@@ -3335,10 +3417,11 @@ function useScroll(props) {
3335
3417
  immediate: true
3336
3418
  });
3337
3419
  return {
3338
- computedScrollThreshold,
3420
+ scrollThreshold,
3339
3421
  currentScroll,
3340
3422
  currentThreshold,
3341
3423
  isScrollActive,
3424
+ scrollRatio,
3342
3425
  // required only for testing
3343
3426
  // probably can be removed
3344
3427
  // later (2 chars chlng)
@@ -3421,15 +3504,14 @@ const VAppBar = genericComponent()({
3421
3504
  });
3422
3505
  const {
3423
3506
  currentScroll,
3424
- currentThreshold,
3425
- computedScrollThreshold,
3426
- isScrollingUp
3507
+ scrollThreshold,
3508
+ isScrollingUp,
3509
+ scrollRatio
3427
3510
  } = useScroll(props, {
3428
3511
  canScroll
3429
3512
  });
3430
- const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3431
- const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3432
- const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3513
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3514
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3433
3515
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3434
3516
  const height = computed(() => {
3435
3517
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3438,15 +3520,12 @@ const VAppBar = genericComponent()({
3438
3520
  return height + extensionHeight;
3439
3521
  });
3440
3522
  function setActive() {
3441
- const val = currentScroll.value;
3442
3523
  if (scrollBehavior.value.hide) {
3443
3524
  if (scrollBehavior.value.inverted) {
3444
- isActive.value = val > computedScrollThreshold.value;
3525
+ isActive.value = currentScroll.value > scrollThreshold.value;
3445
3526
  } else {
3446
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3527
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3447
3528
  }
3448
- } else if (scrollBehavior.value.inverted) {
3449
- isActive.value = currentScroll.value === 0;
3450
3529
  } else {
3451
3530
  isActive.value = true;
3452
3531
  }
@@ -3475,13 +3554,13 @@ const VAppBar = genericComponent()({
3475
3554
  "ref": vToolbarRef,
3476
3555
  "class": ['v-app-bar', {
3477
3556
  'v-app-bar--bottom': props.location === 'bottom'
3478
- }],
3479
- "style": {
3557
+ }, props.class],
3558
+ "style": [{
3480
3559
  ...layoutItemStyles.value,
3481
3560
  '--v-toolbar-image-opacity': opacity.value,
3482
3561
  height: undefined,
3483
3562
  ...ssrBootStyles.value
3484
- }
3563
+ }, props.style]
3485
3564
  }, toolbarProps, {
3486
3565
  "collapse": isCollapsed.value,
3487
3566
  "flat": isFlat.value
@@ -3568,6 +3647,7 @@ function useVariant(props) {
3568
3647
  const makeVBtnGroupProps = propsFactory({
3569
3648
  divided: Boolean,
3570
3649
  ...makeBorderProps(),
3650
+ ...makeComponentProps(),
3571
3651
  ...makeDensityProps(),
3572
3652
  ...makeElevationProps(),
3573
3653
  ...makeRoundedProps(),
@@ -3610,7 +3690,8 @@ const VBtnGroup = genericComponent()({
3610
3690
  return createVNode(props.tag, {
3611
3691
  "class": ['v-btn-group', {
3612
3692
  'v-btn-group--divided': props.divided
3613
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3693
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3694
+ "style": props.style
3614
3695
  }, slots);
3615
3696
  });
3616
3697
  }
@@ -3843,8 +3924,10 @@ const VBtnToggle = genericComponent()({
3843
3924
  useRender(() => {
3844
3925
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3845
3926
  return createVNode(VBtnGroup, mergeProps({
3846
- "class": "v-btn-toggle"
3847
- }, btnGroupProps), {
3927
+ "class": ['v-btn-toggle', props.class]
3928
+ }, btnGroupProps, {
3929
+ "style": props.style
3930
+ }), {
3848
3931
  default: () => [slots.default?.({
3849
3932
  isSelected,
3850
3933
  next,
@@ -3915,7 +3998,7 @@ const mdi = {
3915
3998
 
3916
3999
  // Types
3917
4000
 
3918
- const IconValue = [String, Function, Object];
4001
+ const IconValue = [String, Function, Object, Array];
3919
4002
  const IconSymbol = Symbol.for('vuetify:icons');
3920
4003
  const makeIconProps = propsFactory({
3921
4004
  icon: {
@@ -3935,8 +4018,9 @@ const VComponentIcon = genericComponent()({
3935
4018
  slots
3936
4019
  } = _ref;
3937
4020
  return () => {
4021
+ const Icon = props.icon;
3938
4022
  return createVNode(props.tag, null, {
3939
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4023
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3940
4024
  });
3941
4025
  };
3942
4026
  }
@@ -3959,7 +4043,12 @@ const VSvgIcon = defineComponent({
3959
4043
  "viewBox": "0 0 24 24",
3960
4044
  "role": "img",
3961
4045
  "aria-hidden": "true"
3962
- }, [createVNode("path", {
4046
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4047
+ "d": path[0],
4048
+ "fill-opacity": path[1]
4049
+ }, null) : createVNode("path", {
4050
+ "d": path
4051
+ }, null)) : createVNode("path", {
3963
4052
  "d": props.icon
3964
4053
  }, null)])]
3965
4054
  });
@@ -4024,7 +4113,12 @@ const useIcon = props => {
4024
4113
  }
4025
4114
  }
4026
4115
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
4027
- if (typeof icon !== 'string') {
4116
+ if (Array.isArray(icon)) {
4117
+ return {
4118
+ component: VSvgIcon,
4119
+ icon
4120
+ };
4121
+ } else if (typeof icon !== 'string') {
4028
4122
  return {
4029
4123
  component: VComponentIcon,
4030
4124
  icon
@@ -4081,6 +4175,7 @@ const makeVIconProps = propsFactory({
4081
4175
  start: Boolean,
4082
4176
  end: Boolean,
4083
4177
  icon: IconValue,
4178
+ ...makeComponentProps(),
4084
4179
  ...makeSizeProps(),
4085
4180
  ...makeTagProps({
4086
4181
  tag: 'i'
@@ -4123,12 +4218,12 @@ const VIcon = genericComponent()({
4123
4218
  'v-icon--clickable': !!attrs.onClick,
4124
4219
  'v-icon--start': props.start,
4125
4220
  'v-icon--end': props.end
4126
- }],
4221
+ }, props.class],
4127
4222
  "style": [!sizeClasses.value ? {
4128
4223
  fontSize: convertToUnit(props.size),
4129
4224
  height: convertToUnit(props.size),
4130
4225
  width: convertToUnit(props.size)
4131
- } : undefined, textColorStyles.value],
4226
+ } : undefined, textColorStyles.value, props.style],
4132
4227
  "role": attrs.onClick ? 'button' : undefined,
4133
4228
  "aria-hidden": !attrs.onClick
4134
4229
  }, {
@@ -4186,6 +4281,7 @@ const VProgressCircular = genericComponent()({
4186
4281
  type: [Number, String],
4187
4282
  default: 4
4188
4283
  },
4284
+ ...makeComponentProps(),
4189
4285
  ...makeSizeProps(),
4190
4286
  ...makeTagProps({
4191
4287
  tag: 'div'
@@ -4241,8 +4337,8 @@ const VProgressCircular = genericComponent()({
4241
4337
  'v-progress-circular--indeterminate': !!props.indeterminate,
4242
4338
  'v-progress-circular--visible': isIntersecting.value,
4243
4339
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4244
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4245
- "style": [sizeStyles.value, textColorStyles.value],
4340
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4341
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4246
4342
  "role": "progressbar",
4247
4343
  "aria-valuemin": "0",
4248
4344
  "aria-valuemax": "100",
@@ -4661,6 +4757,7 @@ const VProgressLinear = genericComponent()({
4661
4757
  stream: Boolean,
4662
4758
  striped: Boolean,
4663
4759
  roundedBar: Boolean,
4760
+ ...makeComponentProps(),
4664
4761
  ...makeLocationProps({
4665
4762
  location: 'top'
4666
4763
  }),
@@ -4732,14 +4829,14 @@ const VProgressLinear = genericComponent()({
4732
4829
  'v-progress-linear--rounded': props.rounded,
4733
4830
  'v-progress-linear--rounded-bar': props.roundedBar,
4734
4831
  'v-progress-linear--striped': props.striped
4735
- }, roundedClasses.value, themeClasses.value],
4736
- "style": {
4832
+ }, roundedClasses.value, themeClasses.value, props.class],
4833
+ "style": [{
4737
4834
  bottom: props.location === 'bottom' ? 0 : undefined,
4738
4835
  top: props.location === 'top' ? 0 : undefined,
4739
4836
  height: props.active ? convertToUnit(height.value) : 0,
4740
4837
  '--v-progress-linear-height': convertToUnit(height.value),
4741
4838
  ...locationStyles.value
4742
- },
4839
+ }, props.style],
4743
4840
  "role": "progressbar",
4744
4841
  "aria-hidden": props.active ? 'false' : 'true',
4745
4842
  "aria-valuemin": "0",
@@ -4950,7 +5047,7 @@ const makeVBtnProps = propsFactory({
4950
5047
  },
4951
5048
  text: String,
4952
5049
  ...makeBorderProps(),
4953
- ...makeRoundedProps(),
5050
+ ...makeComponentProps(),
4954
5051
  ...makeDensityProps(),
4955
5052
  ...makeDimensionProps(),
4956
5053
  ...makeElevationProps(),
@@ -4958,6 +5055,7 @@ const makeVBtnProps = propsFactory({
4958
5055
  ...makeLoaderProps(),
4959
5056
  ...makeLocationProps(),
4960
5057
  ...makePositionProps(),
5058
+ ...makeRoundedProps(),
4961
5059
  ...makeRouterProps(),
4962
5060
  ...makeSizeProps(),
4963
5061
  ...makeTagProps({
@@ -4967,7 +5065,7 @@ const makeVBtnProps = propsFactory({
4967
5065
  ...makeVariantProps({
4968
5066
  variant: 'elevated'
4969
5067
  })
4970
- }, 'VBtn');
5068
+ }, 'v-btn');
4971
5069
  const VBtn = genericComponent()({
4972
5070
  name: 'VBtn',
4973
5071
  directives: {
@@ -5037,6 +5135,11 @@ const VBtn = genericComponent()({
5037
5135
  if (props.value === undefined) return undefined;
5038
5136
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5039
5137
  });
5138
+ function onClick(e) {
5139
+ if (isDisabled.value) return;
5140
+ link.navigate?.(e);
5141
+ group?.toggle();
5142
+ }
5040
5143
  useSelectLink(link, group?.select);
5041
5144
  useRender(() => {
5042
5145
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5055,15 +5158,11 @@ const VBtn = genericComponent()({
5055
5158
  'v-btn--icon': !!props.icon,
5056
5159
  'v-btn--loading': props.loading,
5057
5160
  'v-btn--stacked': props.stacked
5058
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
5059
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
5161
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5162
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5060
5163
  "disabled": isDisabled.value || undefined,
5061
5164
  "href": link.href.value,
5062
- "onClick": e => {
5063
- if (isDisabled.value) return;
5064
- link.navigate?.(e);
5065
- group?.toggle();
5066
- },
5165
+ "onClick": onClick,
5067
5166
  "value": valueAttr.value
5068
5167
  }, {
5069
5168
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
@@ -5129,29 +5228,29 @@ const VBtn = genericComponent()({
5129
5228
 
5130
5229
  const VAppBarNavIcon = genericComponent()({
5131
5230
  name: 'VAppBarNavIcon',
5132
- props: {
5133
- icon: {
5134
- type: IconValue,
5135
- default: '$menu'
5136
- }
5137
- },
5231
+ props: makeVBtnProps({
5232
+ icon: '$menu',
5233
+ variant: 'text'
5234
+ }),
5138
5235
  setup(props, _ref) {
5139
5236
  let {
5140
5237
  slots
5141
5238
  } = _ref;
5142
- useRender(() => createVNode(VBtn, {
5143
- "class": "v-app-bar-nav-icon",
5144
- "icon": props.icon
5145
- }, slots));
5239
+ useRender(() => createVNode(VBtn, mergeProps(props, {
5240
+ "class": ['v-app-bar-nav-icon']
5241
+ }), slots));
5146
5242
  return {};
5147
5243
  }
5148
5244
  });
5149
5245
 
5150
5246
  const VToolbarItems = genericComponent()({
5151
5247
  name: 'VToolbarItems',
5152
- props: makeVariantProps({
5153
- variant: 'text'
5154
- }),
5248
+ props: {
5249
+ ...makeComponentProps(),
5250
+ ...makeVariantProps({
5251
+ variant: 'text'
5252
+ })
5253
+ },
5155
5254
  setup(props, _ref) {
5156
5255
  let {
5157
5256
  slots
@@ -5164,7 +5263,8 @@ const VToolbarItems = genericComponent()({
5164
5263
  }
5165
5264
  });
5166
5265
  useRender(() => createVNode("div", {
5167
- "class": "v-toolbar-items"
5266
+ "class": ['v-toolbar-items', props.class],
5267
+ "style": props.style
5168
5268
  }, [slots.default?.()]));
5169
5269
  return {};
5170
5270
  }
@@ -5226,6 +5326,7 @@ const VAlert = genericComponent()({
5226
5326
  type: String,
5227
5327
  validator: val => allowedTypes.includes(val)
5228
5328
  },
5329
+ ...makeComponentProps(),
5229
5330
  ...makeDensityProps(),
5230
5331
  ...makeDimensionProps(),
5231
5332
  ...makeElevationProps(),
@@ -5308,8 +5409,8 @@ const VAlert = genericComponent()({
5308
5409
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5309
5410
  }, {
5310
5411
  'v-alert--prominent': props.prominent
5311
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
5312
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
5412
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5413
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5313
5414
  "role": "alert"
5314
5415
  }, {
5315
5416
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5403,6 +5504,7 @@ const VLabel = genericComponent()({
5403
5504
  props: {
5404
5505
  text: String,
5405
5506
  clickable: Boolean,
5507
+ ...makeComponentProps(),
5406
5508
  ...makeThemeProps()
5407
5509
  },
5408
5510
  setup(props, _ref) {
@@ -5412,7 +5514,8 @@ const VLabel = genericComponent()({
5412
5514
  useRender(() => createVNode("label", {
5413
5515
  "class": ['v-label', {
5414
5516
  'v-label--clickable': props.clickable
5415
- }]
5517
+ }, props.class],
5518
+ "style": props.style
5416
5519
  }, [props.text, slots.default?.()]));
5417
5520
  return {};
5418
5521
  }
@@ -5421,7 +5524,8 @@ const VLabel = genericComponent()({
5421
5524
  const VFieldLabel = genericComponent()({
5422
5525
  name: 'VFieldLabel',
5423
5526
  props: {
5424
- floating: Boolean
5527
+ floating: Boolean,
5528
+ ...makeComponentProps()
5425
5529
  },
5426
5530
  setup(props, _ref) {
5427
5531
  let {
@@ -5430,7 +5534,8 @@ const VFieldLabel = genericComponent()({
5430
5534
  useRender(() => createVNode(VLabel, {
5431
5535
  "class": ['v-field-label', {
5432
5536
  'v-field-label--floating': props.floating
5433
- }],
5537
+ }, props.class],
5538
+ "style": props.style,
5434
5539
  "aria-hidden": props.floating || undefined
5435
5540
  }, slots));
5436
5541
  return {};
@@ -5481,6 +5586,7 @@ const makeVFieldProps = propsFactory({
5481
5586
  },
5482
5587
  active: Boolean,
5483
5588
  color: String,
5589
+ baseColor: String,
5484
5590
  dirty: Boolean,
5485
5591
  disabled: Boolean,
5486
5592
  error: Boolean,
@@ -5498,9 +5604,10 @@ const makeVFieldProps = propsFactory({
5498
5604
  'onClick:clear': EventProp(),
5499
5605
  'onClick:appendInner': EventProp(),
5500
5606
  'onClick:prependInner': EventProp(),
5501
- ...makeThemeProps(),
5607
+ ...makeComponentProps(),
5502
5608
  ...makeLoaderProps(),
5503
- ...makeRoundedProps()
5609
+ ...makeRoundedProps(),
5610
+ ...makeThemeProps()
5504
5611
  }, 'v-field');
5505
5612
  const VField = genericComponent()({
5506
5613
  name: 'VField',
@@ -5554,7 +5661,7 @@ const VField = genericComponent()({
5554
5661
  textColorClasses,
5555
5662
  textColorStyles
5556
5663
  } = useTextColor(computed(() => {
5557
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5664
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5558
5665
  }));
5559
5666
  watch(isActive, val => {
5560
5667
  if (hasLabel.value) {
@@ -5631,8 +5738,8 @@ const VField = genericComponent()({
5631
5738
  'v-field--single-line': props.singleLine,
5632
5739
  'v-field--no-label': !label,
5633
5740
  [`v-field--variant-${props.variant}`]: true
5634
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value],
5635
- "style": [backgroundColorStyles.value, textColorStyles.value],
5741
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5742
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5636
5743
  "onClick": onClick
5637
5744
  }, attrs), [createVNode("div", {
5638
5745
  "class": "v-field__overlay"
@@ -5720,7 +5827,7 @@ const VField = genericComponent()({
5720
5827
  });
5721
5828
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5722
5829
  function filterFieldProps(attrs) {
5723
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5830
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5724
5831
  return pick(attrs, keys);
5725
5832
  }
5726
5833
 
@@ -5735,6 +5842,7 @@ const VMessages = genericComponent()({
5735
5842
  type: [Array, String],
5736
5843
  default: () => []
5737
5844
  },
5845
+ ...makeComponentProps(),
5738
5846
  ...makeTransitionProps({
5739
5847
  transition: {
5740
5848
  component: VSlideYTransition,
@@ -5755,8 +5863,8 @@ const VMessages = genericComponent()({
5755
5863
  useRender(() => createVNode(MaybeTransition, {
5756
5864
  "transition": props.transition,
5757
5865
  "tag": "div",
5758
- "class": ['v-messages', textColorClasses.value],
5759
- "style": textColorStyles.value,
5866
+ "class": ['v-messages', textColorClasses.value, props.class],
5867
+ "style": [textColorStyles.value, props.style],
5760
5868
  "role": "alert",
5761
5869
  "aria-live": "polite"
5762
5870
  }, {
@@ -6052,6 +6160,7 @@ const makeVInputProps = propsFactory({
6052
6160
  },
6053
6161
  'onClick:prepend': EventProp(),
6054
6162
  'onClick:append': EventProp(),
6163
+ ...makeComponentProps(),
6055
6164
  ...makeDensityProps(),
6056
6165
  ...makeValidationProps()
6057
6166
  }, 'v-input');
@@ -6119,7 +6228,8 @@ const VInput = genericComponent()({
6119
6228
  const hasMessages = messages.value.length > 0;
6120
6229
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
6121
6230
  return createVNode("div", {
6122
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6231
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6232
+ "style": props.style
6123
6233
  }, [hasPrepend && createVNode("div", {
6124
6234
  "key": "prepend",
6125
6235
  "class": "v-input__prepend"
@@ -6162,6 +6272,7 @@ const VCounter = genericComponent()({
6162
6272
  type: [Number, String],
6163
6273
  default: 0
6164
6274
  },
6275
+ ...makeComponentProps(),
6165
6276
  ...makeTransitionProps({
6166
6277
  transition: {
6167
6278
  component: VSlideYTransition
@@ -6179,7 +6290,8 @@ const VCounter = genericComponent()({
6179
6290
  "transition": props.transition
6180
6291
  }, {
6181
6292
  default: () => [withDirectives(createVNode("div", {
6182
- "class": "v-counter"
6293
+ "class": ['v-counter', props.class],
6294
+ "style": props.style
6183
6295
  }, [slots.default ? slots.default({
6184
6296
  counter: counter.value,
6185
6297
  max: props.max,
@@ -6329,7 +6441,7 @@ const VTextField = genericComponent()({
6329
6441
  const vInputRef = ref();
6330
6442
  const vFieldRef = ref();
6331
6443
  const inputRef = ref();
6332
- const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6444
+ const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6333
6445
  function onFocus() {
6334
6446
  if (inputRef.value !== document.activeElement) {
6335
6447
  inputRef.value?.focus();
@@ -6382,7 +6494,8 @@ const VTextField = genericComponent()({
6382
6494
  'v-text-field--prefixed': props.prefix,
6383
6495
  'v-text-field--suffixed': props.suffix,
6384
6496
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6385
- }]
6497
+ }, props.class],
6498
+ "style": props.style
6386
6499
  }, rootAttrs, inputProps, {
6387
6500
  "focused": isFocused.value
6388
6501
  }), {
@@ -6498,6 +6611,7 @@ const VSelectionControlGroup = genericComponent()({
6498
6611
  type: String,
6499
6612
  default: 'VSelectionControl'
6500
6613
  },
6614
+ ...makeComponentProps(),
6501
6615
  ...makeSelectionControlGroupProps()
6502
6616
  },
6503
6617
  emits: {
@@ -6545,7 +6659,8 @@ const VSelectionControlGroup = genericComponent()({
6545
6659
  useRender(() => createVNode("div", {
6546
6660
  "class": ['v-selection-control-group', {
6547
6661
  'v-selection-control-group--inline': props.inline
6548
- }],
6662
+ }, props.class],
6663
+ "style": props.style,
6549
6664
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6550
6665
  }, [slots.default?.()]));
6551
6666
  return {};
@@ -6559,6 +6674,7 @@ const makeSelectionControlProps = propsFactory({
6559
6674
  trueValue: null,
6560
6675
  falseValue: null,
6561
6676
  value: null,
6677
+ ...makeComponentProps(),
6562
6678
  ...makeSelectionControlGroupProps()
6563
6679
  }, 'v-selection-control');
6564
6680
  function useSelectionControl(props) {
@@ -6673,8 +6789,10 @@ const VSelectionControl = genericComponent()({
6673
6789
  'v-selection-control--focused': isFocused.value,
6674
6790
  'v-selection-control--focus-visible': isFocusVisible.value,
6675
6791
  'v-selection-control--inline': props.inline
6676
- }, densityClasses.value]
6677
- }, rootAttrs), [createVNode("div", {
6792
+ }, densityClasses.value, props.class]
6793
+ }, rootAttrs, {
6794
+ "style": props.style
6795
+ }), [createVNode("div", {
6678
6796
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6679
6797
  "style": textColorStyles.value
6680
6798
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6756,9 +6874,9 @@ const VCheckboxBtn = genericComponent()({
6756
6874
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6757
6875
  "modelValue": model.value,
6758
6876
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6759
- "class": "v-checkbox-btn",
6877
+ "class": ['v-checkbox-btn', props.class],
6878
+ "style": props.style,
6760
6879
  "type": "checkbox",
6761
- "inline": true,
6762
6880
  "falseIcon": falseIcon.value,
6763
6881
  "trueIcon": trueIcon.value,
6764
6882
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -6796,10 +6914,11 @@ const VCheckbox = genericComponent()({
6796
6914
  const [inputProps, _1] = VInput.filterProps(props);
6797
6915
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6798
6916
  return createVNode(VInput, mergeProps({
6799
- "class": "v-checkbox"
6917
+ "class": ['v-checkbox', props.class]
6800
6918
  }, inputAttrs, inputProps, {
6801
6919
  "id": id.value,
6802
- "focused": isFocused.value
6920
+ "focused": isFocused.value,
6921
+ "style": props.style
6803
6922
  }), {
6804
6923
  ...slots,
6805
6924
  default: _ref2 => {
@@ -6830,6 +6949,7 @@ const makeVAvatarProps = propsFactory({
6830
6949
  end: Boolean,
6831
6950
  icon: IconValue,
6832
6951
  image: String,
6952
+ ...makeComponentProps(),
6833
6953
  ...makeDensityProps(),
6834
6954
  ...makeRoundedProps(),
6835
6955
  ...makeSizeProps(),
@@ -6868,8 +6988,8 @@ const VAvatar = genericComponent()({
6868
6988
  "class": ['v-avatar', {
6869
6989
  'v-avatar--start': props.start,
6870
6990
  'v-avatar--end': props.end
6871
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6872
- "style": [colorStyles.value, sizeStyles.value]
6991
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6992
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6873
6993
  }, {
6874
6994
  default: () => [props.image ? createVNode(VImg, {
6875
6995
  "key": "image",
@@ -6897,6 +7017,7 @@ const VChipGroup = genericComponent()({
6897
7017
  type: Function,
6898
7018
  default: deepEqual
6899
7019
  },
7020
+ ...makeComponentProps(),
6900
7021
  ...makeGroupProps({
6901
7022
  selectedClass: 'v-chip--selected'
6902
7023
  }),
@@ -6934,7 +7055,8 @@ const VChipGroup = genericComponent()({
6934
7055
  useRender(() => createVNode(props.tag, {
6935
7056
  "class": ['v-chip-group', {
6936
7057
  'v-chip-group--column': props.column
6937
- }, themeClasses.value]
7058
+ }, themeClasses.value, props.class],
7059
+ "style": props.style
6938
7060
  }, {
6939
7061
  default: () => [slots.default?.({
6940
7062
  isSelected,
@@ -6948,8 +7070,6 @@ const VChipGroup = genericComponent()({
6948
7070
  }
6949
7071
  });
6950
7072
 
6951
- // Types
6952
-
6953
7073
  const VChip = genericComponent()({
6954
7074
  name: 'VChip',
6955
7075
  directives: {
@@ -6994,6 +7114,7 @@ const VChip = genericComponent()({
6994
7114
  onClick: EventProp(),
6995
7115
  onClickOnce: EventProp(),
6996
7116
  ...makeBorderProps(),
7117
+ ...makeComponentProps(),
6997
7118
  ...makeDensityProps(),
6998
7119
  ...makeElevationProps(),
6999
7120
  ...makeGroupItemProps(),
@@ -7086,8 +7207,8 @@ const VChip = genericComponent()({
7086
7207
  'v-chip--link': isClickable.value,
7087
7208
  'v-chip--filter': hasFilter,
7088
7209
  'v-chip--pill': props.pill
7089
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value],
7090
- "style": [hasColor ? colorStyles.value : undefined],
7210
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7211
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
7091
7212
  "disabled": props.disabled || undefined,
7092
7213
  "draggable": props.draggable,
7093
7214
  "href": link.href.value,
@@ -7196,6 +7317,7 @@ const VDivider = genericComponent()({
7196
7317
  length: [Number, String],
7197
7318
  thickness: [Number, String],
7198
7319
  vertical: Boolean,
7320
+ ...makeComponentProps(),
7199
7321
  ...makeThemeProps()
7200
7322
  },
7201
7323
  setup(props, _ref) {
@@ -7224,8 +7346,8 @@ const VDivider = genericComponent()({
7224
7346
  'v-divider': true,
7225
7347
  'v-divider--inset': props.inset,
7226
7348
  'v-divider--vertical': props.vertical
7227
- }, themeClasses.value, textColorClasses.value],
7228
- "style": [dividerStyles.value, textColorStyles.value],
7349
+ }, themeClasses.value, textColorClasses.value, props.class],
7350
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7229
7351
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7230
7352
  "role": `${attrs.role || 'separator'}`
7231
7353
  }, null));
@@ -7709,7 +7831,9 @@ const VListGroupActivator = defineComponent({
7709
7831
  }
7710
7832
  });
7711
7833
  const makeVListGroupProps = propsFactory({
7834
+ /* @deprecated */
7712
7835
  activeColor: String,
7836
+ baseColor: String,
7713
7837
  color: String,
7714
7838
  collapseIcon: {
7715
7839
  type: IconValue,
@@ -7724,6 +7848,7 @@ const makeVListGroupProps = propsFactory({
7724
7848
  fluid: Boolean,
7725
7849
  subgroup: Boolean,
7726
7850
  value: null,
7851
+ ...makeComponentProps(),
7727
7852
  ...makeTagProps()
7728
7853
  }, 'v-list-group');
7729
7854
  const VListGroup = genericComponent()({
@@ -7759,6 +7884,7 @@ const VListGroup = genericComponent()({
7759
7884
  VListItem: {
7760
7885
  active: isOpen.value,
7761
7886
  activeColor: props.activeColor,
7887
+ baseColor: props.baseColor,
7762
7888
  color: props.color,
7763
7889
  prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
7764
7890
  appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
@@ -7772,7 +7898,8 @@ const VListGroup = genericComponent()({
7772
7898
  'v-list-group--fluid': props.fluid,
7773
7899
  'v-list-group--subgroup': props.subgroup,
7774
7900
  'v-list-group--open': isOpen.value
7775
- }]
7901
+ }, props.class],
7902
+ "style": props.style
7776
7903
  }, {
7777
7904
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7778
7905
  "defaults": activatorDefaults.value
@@ -7817,9 +7944,11 @@ const VListItem = genericComponent()({
7817
7944
  default: undefined
7818
7945
  },
7819
7946
  activeClass: String,
7947
+ /* @deprecated */
7820
7948
  activeColor: String,
7821
7949
  appendAvatar: String,
7822
7950
  appendIcon: IconValue,
7951
+ baseColor: String,
7823
7952
  disabled: Boolean,
7824
7953
  lines: String,
7825
7954
  link: {
@@ -7839,6 +7968,7 @@ const VListItem = genericComponent()({
7839
7968
  onClick: EventProp(),
7840
7969
  onClickOnce: EventProp(),
7841
7970
  ...makeBorderProps(),
7971
+ ...makeComponentProps(),
7842
7972
  ...makeDensityProps(),
7843
7973
  ...makeDimensionProps(),
7844
7974
  ...makeElevationProps(),
@@ -7875,8 +8005,9 @@ const VListItem = genericComponent()({
7875
8005
  const isLink = computed(() => props.link !== false && link.isLink.value);
7876
8006
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
7877
8007
  const roundedProps = computed(() => props.rounded || props.nav);
8008
+ const color = computed(() => props.color ?? props.activeColor);
7878
8009
  const variantProps = computed(() => ({
7879
- color: isActive.value ? props.activeColor ?? props.color : props.color,
8010
+ color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
7880
8011
  variant: props.variant
7881
8012
  }));
7882
8013
  watch(() => link.isActive?.value, val => {
@@ -7933,7 +8064,6 @@ const VListItem = genericComponent()({
7933
8064
  }
7934
8065
  useRender(() => {
7935
8066
  const Tag = isLink.value ? 'a' : props.tag;
7936
- const hasColor = !list || isSelected.value || isActive.value;
7937
8067
  const hasTitle = slots.title || props.title;
7938
8068
  const hasSubtitle = slots.subtitle || props.subtitle;
7939
8069
  const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
@@ -7941,6 +8071,9 @@ const VListItem = genericComponent()({
7941
8071
  const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7942
8072
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
7943
8073
  list?.updateHasPrepend(hasPrepend);
8074
+ if (props.activeColor) {
8075
+ deprecate('active-color', ['color', 'base-color']);
8076
+ }
7944
8077
  return withDirectives(createVNode(Tag, {
7945
8078
  "class": ['v-list-item', {
7946
8079
  'v-list-item--active': isActive.value,
@@ -7949,8 +8082,8 @@ const VListItem = genericComponent()({
7949
8082
  'v-list-item--nav': props.nav,
7950
8083
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7951
8084
  [`${props.activeClass}`]: props.activeClass && isActive.value
7952
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
7953
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
8085
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8086
+ "style": [colorStyles.value, dimensionStyles.value, props.style],
7954
8087
  "href": link.href.value,
7955
8088
  "tabindex": isClickable.value ? 0 : undefined,
7956
8089
  "onClick": onClick,
@@ -8043,6 +8176,7 @@ const VListSubheader = genericComponent()({
8043
8176
  inset: Boolean,
8044
8177
  sticky: Boolean,
8045
8178
  title: String,
8179
+ ...makeComponentProps(),
8046
8180
  ...makeTagProps()
8047
8181
  },
8048
8182
  setup(props, _ref) {
@@ -8059,10 +8193,10 @@ const VListSubheader = genericComponent()({
8059
8193
  "class": ['v-list-subheader', {
8060
8194
  'v-list-subheader--inset': props.inset,
8061
8195
  'v-list-subheader--sticky': props.sticky
8062
- }, textColorClasses.value],
8063
- "style": {
8196
+ }, textColorClasses.value, props.class],
8197
+ "style": [{
8064
8198
  textColorStyles
8065
- }
8199
+ }, props.style]
8066
8200
  }, {
8067
8201
  default: () => [hasText && createVNode("div", {
8068
8202
  "class": "v-list-subheader__text"
@@ -8268,6 +8402,8 @@ function useListItems(props) {
8268
8402
  const VList = genericComponent()({
8269
8403
  name: 'VList',
8270
8404
  props: {
8405
+ baseColor: String,
8406
+ /* @deprecated */
8271
8407
  activeColor: String,
8272
8408
  activeClass: String,
8273
8409
  bgColor: String,
@@ -8282,6 +8418,7 @@ const VList = genericComponent()({
8282
8418
  openStrategy: 'list'
8283
8419
  }),
8284
8420
  ...makeBorderProps(),
8421
+ ...makeComponentProps(),
8285
8422
  ...makeDensityProps(),
8286
8423
  ...makeDimensionProps(),
8287
8424
  ...makeElevationProps(),
@@ -8338,16 +8475,19 @@ const VList = genericComponent()({
8338
8475
  } = useNested(props);
8339
8476
  const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
8340
8477
  const activeColor = toRef(props, 'activeColor');
8478
+ const baseColor = toRef(props, 'baseColor');
8341
8479
  const color = toRef(props, 'color');
8342
8480
  createList();
8343
8481
  provideDefaults({
8344
8482
  VListGroup: {
8345
8483
  activeColor,
8484
+ baseColor,
8346
8485
  color
8347
8486
  },
8348
8487
  VListItem: {
8349
8488
  activeClass: toRef(props, 'activeClass'),
8350
8489
  activeColor,
8490
+ baseColor,
8351
8491
  color,
8352
8492
  density: toRef(props, 'density'),
8353
8493
  disabled: toRef(props, 'disabled'),
@@ -8383,27 +8523,8 @@ const VList = genericComponent()({
8383
8523
  e.preventDefault();
8384
8524
  }
8385
8525
  function focus(location) {
8386
- if (!contentRef.value) return;
8387
- const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8388
- const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8389
- const idx = focusable.indexOf(document.activeElement);
8390
- if (!location) {
8391
- if (!contentRef.value.contains(document.activeElement)) {
8392
- focusable[0]?.focus();
8393
- }
8394
- } else if (location === 'first') {
8395
- focusable[0]?.focus();
8396
- } else if (location === 'last') {
8397
- focusable.at(-1)?.focus();
8398
- } else {
8399
- let el;
8400
- let idxx = idx;
8401
- const inc = location === 'next' ? 1 : -1;
8402
- do {
8403
- idxx += inc;
8404
- el = focusable[idxx];
8405
- } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
8406
- if (el) el.focus();else focus(location === 'next' ? 'first' : 'last');
8526
+ if (contentRef.value) {
8527
+ return focusChild(contentRef.value, location);
8407
8528
  }
8408
8529
  }
8409
8530
  useRender(() => {
@@ -8412,8 +8533,8 @@ const VList = genericComponent()({
8412
8533
  "class": ['v-list', {
8413
8534
  'v-list--disabled': props.disabled,
8414
8535
  'v-list--nav': props.nav
8415
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
8416
- "style": [backgroundColorStyles.value, dimensionStyles.value],
8536
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8537
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8417
8538
  "role": "listbox",
8418
8539
  "aria-activedescendant": undefined,
8419
8540
  "onFocusin": onFocusin,
@@ -8441,6 +8562,7 @@ const VListItemAction = genericComponent()({
8441
8562
  props: {
8442
8563
  start: Boolean,
8443
8564
  end: Boolean,
8565
+ ...makeComponentProps(),
8444
8566
  ...makeTagProps()
8445
8567
  },
8446
8568
  setup(props, _ref) {
@@ -8451,7 +8573,8 @@ const VListItemAction = genericComponent()({
8451
8573
  "class": ['v-list-item-action', {
8452
8574
  'v-list-item-action--start': props.start,
8453
8575
  'v-list-item-action--end': props.end
8454
- }]
8576
+ }, props.class],
8577
+ "style": props.style
8455
8578
  }, slots));
8456
8579
  return {};
8457
8580
  }
@@ -8462,6 +8585,7 @@ const VListItemMedia = genericComponent()({
8462
8585
  props: {
8463
8586
  start: Boolean,
8464
8587
  end: Boolean,
8588
+ ...makeComponentProps(),
8465
8589
  ...makeTagProps()
8466
8590
  },
8467
8591
  setup(props, _ref) {
@@ -8473,7 +8597,8 @@ const VListItemMedia = genericComponent()({
8473
8597
  "class": ['v-list-item-media', {
8474
8598
  'v-list-item-media--start': props.start,
8475
8599
  'v-list-item-media--end': props.end
8476
- }]
8600
+ }, props.class],
8601
+ "style": props.style
8477
8602
  }, slots);
8478
8603
  });
8479
8604
  return {};
@@ -9383,14 +9508,14 @@ const parseDisplayOptions = function () {
9383
9508
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
9384
9509
  return mergeDeep(defaultDisplayOptions, options);
9385
9510
  };
9386
- function getClientWidth(isHydrate) {
9387
- return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
9511
+ function getClientWidth(ssr) {
9512
+ return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;
9388
9513
  }
9389
- function getClientHeight(isHydrate) {
9390
- return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9514
+ function getClientHeight(ssr) {
9515
+ return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;
9391
9516
  }
9392
- function getPlatform(isHydrate) {
9393
- const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9517
+ function getPlatform(ssr) {
9518
+ const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';
9394
9519
  function match(regexp) {
9395
9520
  return Boolean(userAgent.match(regexp));
9396
9521
  }
@@ -9714,6 +9839,7 @@ const makeVOverlayProps = propsFactory({
9714
9839
  default: 2000
9715
9840
  },
9716
9841
  ...makeActivatorProps(),
9842
+ ...makeComponentProps(),
9717
9843
  ...makeDimensionProps(),
9718
9844
  ...makeLazyProps(),
9719
9845
  ...makeLocationStrategyProps(),
@@ -9881,10 +10007,10 @@ const VOverlay = genericComponent()({
9881
10007
  'v-overlay--absolute': props.absolute || props.contained,
9882
10008
  'v-overlay--active': isActive.value,
9883
10009
  'v-overlay--contained': props.contained
9884
- }, themeClasses.value, rtlClasses.value],
10010
+ }, themeClasses.value, rtlClasses.value, props.class],
9885
10011
  "style": [stackStyles.value, {
9886
10012
  top: convertToUnit(top.value)
9887
- }],
10013
+ }, props.style],
9888
10014
  "ref": root
9889
10015
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9890
10016
  "color": scrimColor,
@@ -9990,7 +10116,8 @@ const VMenu = genericComponent()({
9990
10116
  const [overlayProps] = VOverlay.filterProps(props);
9991
10117
  return createVNode(VOverlay, mergeProps({
9992
10118
  "ref": overlay,
9993
- "class": ['v-menu']
10119
+ "class": ['v-menu', props.class],
10120
+ "style": props.style
9994
10121
  }, overlayProps, {
9995
10122
  "modelValue": isActive.value,
9996
10123
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10209,7 +10336,8 @@ const VSelect = genericComponent()({
10209
10336
  'v-select--chips': !!props.chips,
10210
10337
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10211
10338
  'v-select--selected': model.value.length
10212
- }],
10339
+ }, props.class],
10340
+ "style": props.style,
10213
10341
  "appendInnerIcon": props.menuIcon,
10214
10342
  "readonly": true,
10215
10343
  "placeholder": placeholder,
@@ -10260,11 +10388,13 @@ const VSelect = genericComponent()({
10260
10388
  let {
10261
10389
  isSelected
10262
10390
  } = _ref2;
10263
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10391
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10264
10392
  "modelValue": isSelected,
10265
10393
  "ripple": false,
10266
10394
  "tabindex": "-1"
10267
- }, null) : undefined;
10395
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10396
+ "icon": item.props.prependIcon
10397
+ }, null)]);
10268
10398
  }
10269
10399
  });
10270
10400
  }), slots['append-item']?.()]
@@ -10277,6 +10407,10 @@ const VSelect = genericComponent()({
10277
10407
  }
10278
10408
  const slotProps = {
10279
10409
  'onClick:close': onChipClose,
10410
+ onMousedown(e) {
10411
+ e.preventDefault();
10412
+ e.stopPropagation();
10413
+ },
10280
10414
  modelValue: true,
10281
10415
  'onUpdate:modelValue': undefined
10282
10416
  };
@@ -10652,7 +10786,8 @@ const VAutocomplete = genericComponent()({
10652
10786
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10653
10787
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10654
10788
  'v-autocomplete--selection-slot': !!slots.selection
10655
- }],
10789
+ }, props.class],
10790
+ "style": props.style,
10656
10791
  "appendInnerIcon": props.menuIcon,
10657
10792
  "readonly": props.readonly,
10658
10793
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10698,11 +10833,13 @@ const VAutocomplete = genericComponent()({
10698
10833
  let {
10699
10834
  isSelected
10700
10835
  } = _ref2;
10701
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10836
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10702
10837
  "modelValue": isSelected,
10703
10838
  "ripple": false,
10704
10839
  "tabindex": "-1"
10705
- }, null) : undefined;
10840
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10841
+ "icon": item.props.prependIcon
10842
+ }, null)]);
10706
10843
  },
10707
10844
  title: () => {
10708
10845
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10717,6 +10854,10 @@ const VAutocomplete = genericComponent()({
10717
10854
  }
10718
10855
  const slotProps = {
10719
10856
  'onClick:close': onChipClose,
10857
+ onMousedown(e) {
10858
+ e.preventDefault();
10859
+ e.stopPropagation();
10860
+ },
10720
10861
  modelValue: true,
10721
10862
  'onUpdate:modelValue': undefined
10722
10863
  };
@@ -10766,8 +10907,6 @@ const VAutocomplete = genericComponent()({
10766
10907
  }
10767
10908
  });
10768
10909
 
10769
- // Types
10770
-
10771
10910
  const VBadge = genericComponent()({
10772
10911
  name: 'VBadge',
10773
10912
  inheritAttrs: false,
@@ -10791,6 +10930,7 @@ const VBadge = genericComponent()({
10791
10930
  offsetX: [Number, String],
10792
10931
  offsetY: [Number, String],
10793
10932
  textColor: String,
10933
+ ...makeComponentProps(),
10794
10934
  ...makeLocationProps({
10795
10935
  location: 'top end'
10796
10936
  }),
@@ -10835,8 +10975,10 @@ const VBadge = genericComponent()({
10835
10975
  'v-badge--dot': props.dot,
10836
10976
  'v-badge--floating': props.floating,
10837
10977
  'v-badge--inline': props.inline
10838
- }]
10839
- }, attrs), {
10978
+ }, props.class]
10979
+ }, attrs, {
10980
+ "style": props.style
10981
+ }), {
10840
10982
  default: () => [createVNode("div", {
10841
10983
  "class": "v-badge__wrapper"
10842
10984
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10863,7 +11005,8 @@ const VBannerActions = genericComponent()({
10863
11005
  name: 'VBannerActions',
10864
11006
  props: {
10865
11007
  color: String,
10866
- density: String
11008
+ density: String,
11009
+ ...makeComponentProps()
10867
11010
  },
10868
11011
  setup(props, _ref) {
10869
11012
  let {
@@ -10877,7 +11020,8 @@ const VBannerActions = genericComponent()({
10877
11020
  }
10878
11021
  });
10879
11022
  useRender(() => createVNode("div", {
10880
- "class": "v-banner-actions"
11023
+ "class": ['v-banner-actions', props.class],
11024
+ "style": props.style
10881
11025
  }, [slots.default?.()]));
10882
11026
  return {};
10883
11027
  }
@@ -10898,6 +11042,7 @@ const VBanner = genericComponent()({
10898
11042
  sticky: Boolean,
10899
11043
  text: String,
10900
11044
  ...makeBorderProps(),
11045
+ ...makeComponentProps(),
10901
11046
  ...makeDensityProps(),
10902
11047
  ...makeDimensionProps(),
10903
11048
  ...makeElevationProps(),
@@ -10955,8 +11100,8 @@ const VBanner = genericComponent()({
10955
11100
  'v-banner--stacked': props.stacked || mobile.value,
10956
11101
  'v-banner--sticky': props.sticky,
10957
11102
  [`v-banner--${props.lines}-line`]: !!props.lines
10958
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
10959
- "style": [dimensionStyles.value, locationStyles.value],
11103
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11104
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10960
11105
  "role": "banner"
10961
11106
  }, {
10962
11107
  default: () => [hasPrepend && createVNode("div", {
@@ -11012,6 +11157,7 @@ const VBottomNavigation = genericComponent()({
11012
11157
  default: true
11013
11158
  },
11014
11159
  ...makeBorderProps(),
11160
+ ...makeComponentProps(),
11015
11161
  ...makeDensityProps(),
11016
11162
  ...makeElevationProps(),
11017
11163
  ...makeRoundedProps(),
@@ -11086,11 +11232,11 @@ const VBottomNavigation = genericComponent()({
11086
11232
  'v-bottom-navigation--active': isActive.value,
11087
11233
  'v-bottom-navigation--grow': props.grow,
11088
11234
  'v-bottom-navigation--shift': props.mode === 'shift'
11089
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11235
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
11090
11236
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
11091
11237
  height: convertToUnit(height.value),
11092
11238
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
11093
- }, ssrBootStyles.value]
11239
+ }, ssrBootStyles.value, props.style]
11094
11240
  }, {
11095
11241
  default: () => [slots.default && createVNode("div", {
11096
11242
  "class": "v-bottom-navigation__content"
@@ -11104,14 +11250,16 @@ const VBottomNavigation = genericComponent()({
11104
11250
  const VBreadcrumbsDivider = genericComponent()({
11105
11251
  name: 'VBreadcrumbsDivider',
11106
11252
  props: {
11107
- divider: [Number, String]
11253
+ divider: [Number, String],
11254
+ ...makeComponentProps()
11108
11255
  },
11109
11256
  setup(props, _ref) {
11110
11257
  let {
11111
11258
  slots
11112
11259
  } = _ref;
11113
11260
  useRender(() => createVNode("li", {
11114
- "class": "v-breadcrumbs-divider"
11261
+ "class": ['v-breadcrumbs-divider', props.class],
11262
+ "style": props.style
11115
11263
  }, [slots?.default?.() ?? props.divider]));
11116
11264
  return {};
11117
11265
  }
@@ -11126,6 +11274,7 @@ const VBreadcrumbsItem = genericComponent()({
11126
11274
  color: String,
11127
11275
  disabled: Boolean,
11128
11276
  title: String,
11277
+ ...makeComponentProps(),
11129
11278
  ...makeRouterProps(),
11130
11279
  ...makeTagProps({
11131
11280
  tag: 'li'
@@ -11151,8 +11300,8 @@ const VBreadcrumbsItem = genericComponent()({
11151
11300
  'v-breadcrumbs-item--disabled': props.disabled,
11152
11301
  'v-breadcrumbs-item--link': link.isLink.value,
11153
11302
  [`${props.activeClass}`]: isActive.value && props.activeClass
11154
- }, textColorClasses.value],
11155
- "style": [textColorStyles.value],
11303
+ }, textColorClasses.value, props.class],
11304
+ "style": [textColorStyles.value, props.style],
11156
11305
  "href": link.href.value,
11157
11306
  "aria-current": isActive.value ? 'page' : undefined,
11158
11307
  "onClick": link.navigate
@@ -11183,6 +11332,7 @@ const VBreadcrumbs = genericComponent()({
11183
11332
  type: Array,
11184
11333
  default: () => []
11185
11334
  },
11335
+ ...makeComponentProps(),
11186
11336
  ...makeDensityProps(),
11187
11337
  ...makeRoundedProps(),
11188
11338
  ...makeTagProps({
@@ -11214,11 +11364,22 @@ const VBreadcrumbs = genericComponent()({
11214
11364
  disabled: toRef(props, 'disabled')
11215
11365
  }
11216
11366
  });
11367
+ const items = computed(() => props.items.map(item => {
11368
+ return typeof item === 'string' ? {
11369
+ item: {
11370
+ title: item
11371
+ },
11372
+ raw: item
11373
+ } : {
11374
+ item,
11375
+ raw: item
11376
+ };
11377
+ }));
11217
11378
  useRender(() => {
11218
11379
  const hasPrepend = !!(slots.prepend || props.icon);
11219
11380
  return createVNode(props.tag, {
11220
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11221
- "style": backgroundColorStyles.value
11381
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11382
+ "style": [backgroundColorStyles.value, props.style]
11222
11383
  }, {
11223
11384
  default: () => [hasPrepend && createVNode("div", {
11224
11385
  "key": "prepend",
@@ -11236,33 +11397,36 @@ const VBreadcrumbs = genericComponent()({
11236
11397
  start: true
11237
11398
  }
11238
11399
  }
11239
- }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11240
- "key": index,
11241
- "disabled": index >= array.length - 1
11242
- }, typeof item === 'string' ? {
11243
- title: item
11244
- } : item), {
11245
- default: slots.title ? () => slots.title?.({
11246
- item,
11247
- index
11248
- }) : undefined
11249
- }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11250
- default: slots.divider ? () => slots.divider?.({
11400
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11401
+ let {
11251
11402
  item,
11252
- index
11253
- }) : undefined
11254
- })])), slots.default?.()]
11403
+ raw
11404
+ } = _ref2;
11405
+ return createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11406
+ "key": item.title,
11407
+ "disabled": index >= array.length - 1
11408
+ }, item), {
11409
+ default: slots.title ? () => slots.title?.({
11410
+ item: raw,
11411
+ index
11412
+ }) : undefined
11413
+ }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11414
+ default: slots.divider ? () => slots.divider?.({
11415
+ item: raw,
11416
+ index
11417
+ }) : undefined
11418
+ })]);
11419
+ }), slots.default?.()]
11255
11420
  });
11256
11421
  });
11257
11422
  return {};
11258
11423
  }
11259
11424
  });
11260
11425
 
11261
- // Types
11262
-
11263
- const VCardActions = defineComponent({
11426
+ const VCardActions = genericComponent()({
11264
11427
  name: 'VCardActions',
11265
- setup(_, _ref) {
11428
+ props: makeComponentProps(),
11429
+ setup(props, _ref) {
11266
11430
  let {
11267
11431
  slots
11268
11432
  } = _ref;
@@ -11272,7 +11436,8 @@ const VCardActions = defineComponent({
11272
11436
  }
11273
11437
  });
11274
11438
  useRender(() => createVNode("div", {
11275
- "class": "v-card-actions"
11439
+ "class": ['v-card-actions', props.class],
11440
+ "style": props.style
11276
11441
  }, [slots.default?.()]));
11277
11442
  return {};
11278
11443
  }
@@ -11282,8 +11447,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11282
11447
 
11283
11448
  const VCardTitle = createSimpleFunctional('v-card-title');
11284
11449
 
11285
- // Types
11286
-
11287
11450
  const VCardItem = genericComponent()({
11288
11451
  name: 'VCardItem',
11289
11452
  props: {
@@ -11293,6 +11456,7 @@ const VCardItem = genericComponent()({
11293
11456
  prependIcon: IconValue,
11294
11457
  subtitle: String,
11295
11458
  title: String,
11459
+ ...makeComponentProps(),
11296
11460
  ...makeDensityProps()
11297
11461
  },
11298
11462
  setup(props, _ref) {
@@ -11307,7 +11471,8 @@ const VCardItem = genericComponent()({
11307
11471
  const hasTitle = !!(props.title || slots.title);
11308
11472
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11309
11473
  return createVNode("div", {
11310
- "class": "v-card-item"
11474
+ "class": ['v-card-item', props.class],
11475
+ "style": props.style
11311
11476
  }, [hasPrepend && createVNode("div", {
11312
11477
  "key": "prepend",
11313
11478
  "class": "v-card-item__prepend"
@@ -11389,8 +11554,8 @@ const VCard = genericComponent()({
11389
11554
  subtitle: String,
11390
11555
  text: String,
11391
11556
  title: String,
11392
- ...makeThemeProps(),
11393
11557
  ...makeBorderProps(),
11558
+ ...makeComponentProps(),
11394
11559
  ...makeDensityProps(),
11395
11560
  ...makeDimensionProps(),
11396
11561
  ...makeElevationProps(),
@@ -11400,6 +11565,7 @@ const VCard = genericComponent()({
11400
11565
  ...makeRoundedProps(),
11401
11566
  ...makeRouterProps(),
11402
11567
  ...makeTagProps(),
11568
+ ...makeThemeProps(),
11403
11569
  ...makeVariantProps({
11404
11570
  variant: 'elevated'
11405
11571
  })
@@ -11460,8 +11626,8 @@ const VCard = genericComponent()({
11460
11626
  'v-card--flat': props.flat,
11461
11627
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11462
11628
  'v-card--link': isClickable.value
11463
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
11464
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
11629
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11630
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11465
11631
  "href": link.href.value,
11466
11632
  "onClick": isClickable.value && link.navigate,
11467
11633
  "tabindex": props.disabled ? -1 : undefined
@@ -11657,6 +11823,7 @@ const makeVWindowProps = propsFactory({
11657
11823
  mandatory: {
11658
11824
  default: 'force'
11659
11825
  },
11826
+ ...makeComponentProps(),
11660
11827
  ...makeTagProps(),
11661
11828
  ...makeThemeProps()
11662
11829
  }, 'v-window');
@@ -11772,7 +11939,8 @@ const VWindow = genericComponent()({
11772
11939
  "ref": rootRef,
11773
11940
  "class": ['v-window', {
11774
11941
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11775
- }, themeClasses.value]
11942
+ }, themeClasses.value, props.class],
11943
+ "style": props.style
11776
11944
  }, {
11777
11945
  default: () => [createVNode("div", {
11778
11946
  "class": "v-window__container",
@@ -11857,10 +12025,10 @@ const VCarousel = genericComponent()({
11857
12025
  "class": ['v-carousel', {
11858
12026
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11859
12027
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11860
- }],
11861
- "style": {
12028
+ }, props.class],
12029
+ "style": [{
11862
12030
  height: convertToUnit(props.height)
11863
- },
12031
+ }, props.style],
11864
12032
  "continuous": true,
11865
12033
  "mandatory": "force",
11866
12034
  "showArrows": props.showArrows
@@ -11926,6 +12094,7 @@ const VWindowItem = genericComponent()({
11926
12094
  type: [Boolean, String],
11927
12095
  default: undefined
11928
12096
  },
12097
+ ...makeComponentProps(),
11929
12098
  ...makeGroupItemProps(),
11930
12099
  ...makeLazyProps()
11931
12100
  },
@@ -12012,7 +12181,8 @@ const VWindowItem = genericComponent()({
12012
12181
  "disabled": !isBooted.value
12013
12182
  }, {
12014
12183
  default: () => [withDirectives(createVNode("div", {
12015
- "class": ['v-window-item', groupItem.selectedClass.value]
12184
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12185
+ "style": props.style
12016
12186
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
12017
12187
  }));
12018
12188
  return {};
@@ -12025,7 +12195,8 @@ const VCarouselItem = genericComponent()({
12025
12195
  name: 'VCarouselItem',
12026
12196
  inheritAttrs: false,
12027
12197
  props: {
12028
- value: null
12198
+ value: null,
12199
+ ...makeComponentProps()
12029
12200
  },
12030
12201
  setup(props, _ref) {
12031
12202
  let {
@@ -12033,7 +12204,8 @@ const VCarouselItem = genericComponent()({
12033
12204
  attrs
12034
12205
  } = _ref;
12035
12206
  useRender(() => createVNode(VWindowItem, {
12036
- "class": "v-carousel-item",
12207
+ "class": ['v-carousel-item', props.class],
12208
+ "style": props.style,
12037
12209
  "value": props.value
12038
12210
  }, {
12039
12211
  default: () => [createVNode(VImg, attrs, slots)]
@@ -12046,6 +12218,7 @@ const VCode = createSimpleFunctional('v-code');
12046
12218
  const makeVSheetProps = propsFactory({
12047
12219
  color: String,
12048
12220
  ...makeBorderProps(),
12221
+ ...makeComponentProps(),
12049
12222
  ...makeDimensionProps(),
12050
12223
  ...makeElevationProps(),
12051
12224
  ...makeLocationProps(),
@@ -12089,8 +12262,8 @@ const VSheet = genericComponent()({
12089
12262
  roundedClasses
12090
12263
  } = useRounded(props);
12091
12264
  useRender(() => createVNode(props.tag, {
12092
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
12093
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
12265
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12266
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
12094
12267
  }, slots));
12095
12268
  return {};
12096
12269
  }
@@ -12116,7 +12289,8 @@ const VColorPickerCanvas = defineComponent({
12116
12289
  width: {
12117
12290
  type: [Number, String],
12118
12291
  default: 300
12119
- }
12292
+ },
12293
+ ...makeComponentProps()
12120
12294
  },
12121
12295
  emits: {
12122
12296
  'update:color': color => true,
@@ -12261,7 +12435,8 @@ const VColorPickerCanvas = defineComponent({
12261
12435
  onMounted(() => updateCanvas());
12262
12436
  useRender(() => createVNode("div", {
12263
12437
  "ref": resizeRef,
12264
- "class": "v-color-picker-canvas",
12438
+ "class": ['v-color-picker-canvas', props.class],
12439
+ "style": props.style,
12265
12440
  "onClick": handleClick,
12266
12441
  "onMousedown": handleMouseDown,
12267
12442
  "onTouchstart": handleMouseDown
@@ -12283,27 +12458,6 @@ const VColorPickerCanvas = defineComponent({
12283
12458
 
12284
12459
  // Types
12285
12460
 
12286
- function has(obj, key) {
12287
- return key.every(k => obj.hasOwnProperty(k));
12288
- }
12289
- function parseColor(color) {
12290
- if (!color) return null;
12291
- let hsva = null;
12292
- if (typeof color === 'string') {
12293
- const hex = parseHex(color);
12294
- hsva = HexToHSV(hex);
12295
- }
12296
- if (typeof color === 'object') {
12297
- if (has(color, ['r', 'g', 'b'])) {
12298
- hsva = RGBtoHSV(color);
12299
- } else if (has(color, ['h', 's', 'l'])) {
12300
- hsva = HSLtoHSV(color);
12301
- } else if (has(color, ['h', 's', 'v'])) {
12302
- hsva = color;
12303
- }
12304
- }
12305
- return hsva;
12306
- }
12307
12461
  function stripAlpha(color, stripAlpha) {
12308
12462
  if (stripAlpha) {
12309
12463
  const {
@@ -12494,7 +12648,8 @@ const VColorPickerEdit = defineComponent({
12494
12648
  type: Array,
12495
12649
  default: () => Object.keys(modes),
12496
12650
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12497
- }
12651
+ },
12652
+ ...makeComponentProps()
12498
12653
  },
12499
12654
  emits: {
12500
12655
  'update:color': color => true,
@@ -12534,7 +12689,8 @@ const VColorPickerEdit = defineComponent({
12534
12689
  });
12535
12690
  });
12536
12691
  useRender(() => createVNode("div", {
12537
- "class": "v-color-picker-edit"
12692
+ "class": ['v-color-picker-edit', props.class],
12693
+ "style": props.style
12538
12694
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12539
12695
  "icon": "$unfold",
12540
12696
  "size": "x-small",
@@ -12853,7 +13009,8 @@ const VSliderThumb = genericComponent()({
12853
13009
  ripple: {
12854
13010
  type: Boolean,
12855
13011
  default: true
12856
- }
13012
+ },
13013
+ ...makeComponentProps()
12857
13014
  },
12858
13015
  emits: {
12859
13016
  'update:modelValue': v => true
@@ -12931,11 +13088,11 @@ const VSliderThumb = genericComponent()({
12931
13088
  "class": ['v-slider-thumb', {
12932
13089
  'v-slider-thumb--focused': props.focused,
12933
13090
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12934
- }],
12935
- "style": {
13091
+ }, props.class],
13092
+ "style": [{
12936
13093
  '--v-slider-thumb-position': positionPercentage,
12937
13094
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12938
- },
13095
+ }, props.style],
12939
13096
  "role": "slider",
12940
13097
  "tabindex": disabled.value ? -1 : 0,
12941
13098
  "aria-valuemin": props.min,
@@ -12981,7 +13138,8 @@ const VSliderTrack = genericComponent()({
12981
13138
  stop: {
12982
13139
  type: Number,
12983
13140
  required: true
12984
- }
13141
+ },
13142
+ ...makeComponentProps()
12985
13143
  },
12986
13144
  emits: {},
12987
13145
  setup(props, _ref) {
@@ -13056,12 +13214,12 @@ const VSliderTrack = genericComponent()({
13056
13214
  });
13057
13215
  useRender(() => {
13058
13216
  return createVNode("div", {
13059
- "class": ['v-slider-track', roundedClasses.value],
13060
- "style": {
13217
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13218
+ "style": [{
13061
13219
  '--v-slider-track-size': convertToUnit(trackSize.value),
13062
13220
  '--v-slider-tick-size': convertToUnit(tickSize.value),
13063
13221
  direction: !vertical.value ? horizontalDirection.value : undefined
13064
- }
13222
+ }, props.style]
13065
13223
  }, [createVNode("div", {
13066
13224
  "class": ['v-slider-track__background', trackColorClasses.value, {
13067
13225
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -13164,7 +13322,8 @@ const VSlider = genericComponent()({
13164
13322
  'v-slider--focused': isFocused.value,
13165
13323
  'v-slider--pressed': mousePressed.value,
13166
13324
  'v-slider--disabled': props.disabled
13167
- }]
13325
+ }, props.class],
13326
+ "style": props.style
13168
13327
  }, inputProps, {
13169
13328
  "focused": isFocused.value
13170
13329
  }), {
@@ -13227,7 +13386,8 @@ const VColorPickerPreview = defineComponent({
13227
13386
  type: Object
13228
13387
  },
13229
13388
  disabled: Boolean,
13230
- hideAlpha: Boolean
13389
+ hideAlpha: Boolean,
13390
+ ...makeComponentProps()
13231
13391
  },
13232
13392
  emits: {
13233
13393
  'update:color': color => true
@@ -13239,7 +13399,8 @@ const VColorPickerPreview = defineComponent({
13239
13399
  useRender(() => createVNode("div", {
13240
13400
  "class": ['v-color-picker-preview', {
13241
13401
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13242
- }]
13402
+ }, props.class],
13403
+ "style": props.style
13243
13404
  }, [createVNode("div", {
13244
13405
  "class": "v-color-picker-preview__dot"
13245
13406
  }, [createVNode("div", {
@@ -13620,7 +13781,8 @@ const VColorPickerSwatches = defineComponent({
13620
13781
  },
13621
13782
  disabled: Boolean,
13622
13783
  color: Object,
13623
- maxHeight: [Number, String]
13784
+ maxHeight: [Number, String],
13785
+ ...makeComponentProps()
13624
13786
  },
13625
13787
  emits: {
13626
13788
  'update:color': color => true
@@ -13630,20 +13792,22 @@ const VColorPickerSwatches = defineComponent({
13630
13792
  emit
13631
13793
  } = _ref;
13632
13794
  useRender(() => createVNode("div", {
13633
- "class": "v-color-picker-swatches",
13634
- "style": {
13795
+ "class": ['v-color-picker-swatches', props.class],
13796
+ "style": [{
13635
13797
  maxHeight: convertToUnit(props.maxHeight)
13636
- }
13798
+ }, props.style]
13637
13799
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13638
13800
  "class": "v-color-picker-swatches__swatch"
13639
13801
  }, [swatch.map(color => {
13640
- const hsva = parseColor(color);
13802
+ const rgba = parseColor(color);
13803
+ const hsva = RGBtoHSV(rgba);
13804
+ const background = RGBtoCSS(rgba);
13641
13805
  return createVNode("div", {
13642
13806
  "class": "v-color-picker-swatches__color",
13643
13807
  "onClick": () => hsva && emit('update:color', hsva)
13644
13808
  }, [createVNode("div", {
13645
13809
  "style": {
13646
- background: color
13810
+ background
13647
13811
  }
13648
13812
  }, [props.color && deepEqual(props.color, hsva) ? createVNode(VIcon, {
13649
13813
  "size": "x-small",
@@ -13703,8 +13867,13 @@ const VColorPicker = defineComponent({
13703
13867
  const mode = useProxiedModel(props, 'mode');
13704
13868
  const lastPickedColor = ref(null);
13705
13869
  const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
13706
- let c = parseColor(v);
13707
- if (!c) return null;
13870
+ let c;
13871
+ try {
13872
+ c = RGBtoHSV(parseColor(v));
13873
+ } catch (err) {
13874
+ consoleWarn(err);
13875
+ return null;
13876
+ }
13708
13877
  if (lastPickedColor.value) {
13709
13878
  c = {
13710
13879
  ...c,
@@ -13737,13 +13906,13 @@ const VColorPicker = defineComponent({
13737
13906
  "rounded": props.rounded,
13738
13907
  "elevation": props.elevation,
13739
13908
  "theme": props.theme,
13740
- "class": ['v-color-picker'],
13741
- "style": {
13909
+ "class": ['v-color-picker', props.class],
13910
+ "style": [{
13742
13911
  '--v-color-picker-color-hsv': HSVtoCSS({
13743
13912
  ...(currentColor.value ?? nullColor),
13744
13913
  a: 1
13745
13914
  })
13746
- }
13915
+ }, props.style]
13747
13916
  }, sheetProps, {
13748
13917
  "maxWidth": props.width
13749
13918
  }), {
@@ -14054,7 +14223,8 @@ const VCombobox = genericComponent()({
14054
14223
  'v-combobox--chips': !!props.chips,
14055
14224
  'v-combobox--selecting-index': selectionIndex.value > -1,
14056
14225
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
14057
- }],
14226
+ }, props.class],
14227
+ "style": props.style,
14058
14228
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
14059
14229
  "readonly": props.readonly,
14060
14230
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14100,11 +14270,13 @@ const VCombobox = genericComponent()({
14100
14270
  let {
14101
14271
  isSelected
14102
14272
  } = _ref2;
14103
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14273
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14104
14274
  "modelValue": isSelected,
14105
14275
  "ripple": false,
14106
14276
  "tabindex": "-1"
14107
- }, null) : undefined;
14277
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14278
+ "icon": item.props.prependIcon
14279
+ }, null)]);
14108
14280
  },
14109
14281
  title: () => {
14110
14282
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14119,6 +14291,10 @@ const VCombobox = genericComponent()({
14119
14291
  }
14120
14292
  const slotProps = {
14121
14293
  'onClick:close': onChipClose,
14294
+ onMousedown(e) {
14295
+ e.preventDefault();
14296
+ e.stopPropagation();
14297
+ },
14122
14298
  modelValue: true,
14123
14299
  'onUpdate:modelValue': undefined
14124
14300
  };
@@ -14211,7 +14387,7 @@ const VDialog = genericComponent()({
14211
14387
  ![document, overlay.value.contentEl].includes(after) &&
14212
14388
  // It isn't inside the dialog body
14213
14389
  !overlay.value.contentEl.contains(after)) {
14214
- 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"]'));
14390
+ const focusable = focusableChildren(overlay.value.contentEl);
14215
14391
  if (!focusable.length) return;
14216
14392
  const firstElement = focusable[0];
14217
14393
  const lastElement = focusable[focusable.length - 1];
@@ -14252,7 +14428,8 @@ const VDialog = genericComponent()({
14252
14428
  "class": ['v-dialog', {
14253
14429
  'v-dialog--fullscreen': props.fullscreen,
14254
14430
  'v-dialog--scrollable': props.scrollable
14255
- }]
14431
+ }, props.class],
14432
+ "style": props.style
14256
14433
  }, overlayProps, {
14257
14434
  "modelValue": isActive.value,
14258
14435
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14291,6 +14468,7 @@ const VExpansionPanels = genericComponent()({
14291
14468
  validator: v => allowedVariants.includes(v)
14292
14469
  },
14293
14470
  readonly: Boolean,
14471
+ ...makeComponentProps(),
14294
14472
  ...makeGroupProps(),
14295
14473
  ...makeTagProps(),
14296
14474
  ...makeThemeProps()
@@ -14316,7 +14494,8 @@ const VExpansionPanels = genericComponent()({
14316
14494
  }
14317
14495
  });
14318
14496
  useRender(() => createVNode(props.tag, {
14319
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14497
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14498
+ "style": props.style
14320
14499
  }, slots));
14321
14500
  return {};
14322
14501
  }
@@ -14345,6 +14524,7 @@ const VExpansionPanelTitle = genericComponent()({
14345
14524
  Ripple
14346
14525
  },
14347
14526
  props: {
14527
+ ...makeComponentProps(),
14348
14528
  ...makeVExpansionPanelTitleProps()
14349
14529
  },
14350
14530
  setup(props, _ref) {
@@ -14367,8 +14547,8 @@ const VExpansionPanelTitle = genericComponent()({
14367
14547
  useRender(() => withDirectives(createVNode("button", {
14368
14548
  "class": ['v-expansion-panel-title', {
14369
14549
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14370
- }, backgroundColorClasses.value],
14371
- "style": backgroundColorStyles.value,
14550
+ }, backgroundColorClasses.value, props.class],
14551
+ "style": [backgroundColorStyles.value, props.style],
14372
14552
  "type": "button",
14373
14553
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14374
14554
  "disabled": expansionPanel.disabled.value,
@@ -14388,6 +14568,7 @@ const VExpansionPanelTitle = genericComponent()({
14388
14568
  const VExpansionPanelText = genericComponent()({
14389
14569
  name: 'VExpansionPanelText',
14390
14570
  props: {
14571
+ ...makeComponentProps(),
14391
14572
  ...makeLazyProps()
14392
14573
  },
14393
14574
  setup(props, _ref) {
@@ -14404,7 +14585,8 @@ const VExpansionPanelText = genericComponent()({
14404
14585
  "onAfterLeave": onAfterLeave
14405
14586
  }, {
14406
14587
  default: () => [withDirectives(createVNode("div", {
14407
- "class": "v-expansion-panel-text"
14588
+ "class": ['v-expansion-panel-text', props.class],
14589
+ "style": props.style
14408
14590
  }, [slots.default && hasContent.value && createVNode("div", {
14409
14591
  "class": "v-expansion-panel-text__wrapper"
14410
14592
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14419,6 +14601,7 @@ const VExpansionPanel = genericComponent()({
14419
14601
  title: String,
14420
14602
  text: String,
14421
14603
  bgColor: String,
14604
+ ...makeComponentProps(),
14422
14605
  ...makeElevationProps(),
14423
14606
  ...makeGroupItemProps(),
14424
14607
  ...makeLazyProps(),
@@ -14467,8 +14650,8 @@ const VExpansionPanel = genericComponent()({
14467
14650
  'v-expansion-panel--before-active': isBeforeSelected.value,
14468
14651
  'v-expansion-panel--after-active': isAfterSelected.value,
14469
14652
  'v-expansion-panel--disabled': isDisabled.value
14470
- }, roundedClasses.value, backgroundColorClasses.value],
14471
- "style": backgroundColorStyles.value,
14653
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14654
+ "style": [backgroundColorStyles.value, props.style],
14472
14655
  "aria-expanded": groupItem.isSelected.value
14473
14656
  }, {
14474
14657
  default: () => [createVNode("div", {
@@ -14575,6 +14758,7 @@ const VFileInput = genericComponent()({
14575
14758
  const vInputRef = ref();
14576
14759
  const vFieldRef = ref();
14577
14760
  const inputRef = ref();
14761
+ const isActive = computed(() => isFocused.value || props.active);
14578
14762
  function onFocus() {
14579
14763
  if (inputRef.value !== document.activeElement) {
14580
14764
  inputRef.value?.focus();
@@ -14618,7 +14802,8 @@ const VFileInput = genericComponent()({
14618
14802
  "ref": vInputRef,
14619
14803
  "modelValue": model.value,
14620
14804
  "onUpdate:modelValue": $event => model.value = $event,
14621
- "class": "v-file-input",
14805
+ "class": ['v-file-input', props.class],
14806
+ "style": props.style,
14622
14807
  "onClick:prepend": onClickPrepend
14623
14808
  }, rootAttrs, inputProps, {
14624
14809
  "focused": isFocused.value
@@ -14642,7 +14827,7 @@ const VFileInput = genericComponent()({
14642
14827
  "onClick:appendInner": props['onClick:appendInner']
14643
14828
  }, fieldProps, {
14644
14829
  "id": id.value,
14645
- "active": isDirty.value || isFocused.value,
14830
+ "active": isActive.value || isDirty.value,
14646
14831
  "dirty": isDirty.value,
14647
14832
  "disabled": isDisabled.value,
14648
14833
  "focused": isFocused.value,
@@ -14710,6 +14895,7 @@ const VFooter = genericComponent()({
14710
14895
  default: 'auto'
14711
14896
  },
14712
14897
  ...makeBorderProps(),
14898
+ ...makeComponentProps(),
14713
14899
  ...makeElevationProps(),
14714
14900
  ...makeLayoutItemProps(),
14715
14901
  ...makeRoundedProps(),
@@ -14759,8 +14945,8 @@ const VFooter = genericComponent()({
14759
14945
  });
14760
14946
  useRender(() => createVNode(props.tag, {
14761
14947
  "ref": resizeRef,
14762
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14763
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14948
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14949
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14764
14950
  }, slots));
14765
14951
  return {};
14766
14952
  }
@@ -14771,6 +14957,7 @@ const VFooter = genericComponent()({
14771
14957
  const VForm = genericComponent()({
14772
14958
  name: 'VForm',
14773
14959
  props: {
14960
+ ...makeComponentProps(),
14774
14961
  ...makeFormProps()
14775
14962
  },
14776
14963
  emits: {
@@ -14809,7 +14996,8 @@ const VForm = genericComponent()({
14809
14996
  }
14810
14997
  useRender(() => createVNode("form", {
14811
14998
  "ref": formRef,
14812
- "class": "v-form",
14999
+ "class": ['v-form', props.class],
15000
+ "style": props.style,
14813
15001
  "novalidate": true,
14814
15002
  "onReset": onReset,
14815
15003
  "onSubmit": onSubmit
@@ -14825,6 +15013,7 @@ const VContainer = genericComponent()({
14825
15013
  type: Boolean,
14826
15014
  default: false
14827
15015
  },
15016
+ ...makeComponentProps(),
14828
15017
  ...makeTagProps()
14829
15018
  },
14830
15019
  setup(props, _ref) {
@@ -14834,7 +15023,8 @@ const VContainer = genericComponent()({
14834
15023
  useRender(() => createVNode(props.tag, {
14835
15024
  "class": ['v-container', {
14836
15025
  'v-container--fluid': props.fluid
14837
- }]
15026
+ }, props.class],
15027
+ "style": props.style
14838
15028
  }, slots));
14839
15029
  return {};
14840
15030
  }
@@ -14925,6 +15115,7 @@ const VCol = genericComponent()({
14925
15115
  default: null,
14926
15116
  validator: str => ALIGN_SELF_VALUES.includes(str)
14927
15117
  },
15118
+ ...makeComponentProps(),
14928
15119
  ...makeTagProps()
14929
15120
  },
14930
15121
  setup(props, _ref) {
@@ -14955,7 +15146,8 @@ const VCol = genericComponent()({
14955
15146
  return classList;
14956
15147
  });
14957
15148
  return () => h(props.tag, {
14958
- class: classes.value
15149
+ class: [classes.value, props.class],
15150
+ style: props.style
14959
15151
  }, slots.default?.());
14960
15152
  }
14961
15153
  });
@@ -15041,6 +15233,7 @@ const VRow = genericComponent()({
15041
15233
  validator: alignContentValidator
15042
15234
  },
15043
15235
  ...alignContentProps,
15236
+ ...makeComponentProps(),
15044
15237
  ...makeTagProps()
15045
15238
  },
15046
15239
  setup(props, _ref) {
@@ -15069,7 +15262,8 @@ const VRow = genericComponent()({
15069
15262
  return classList;
15070
15263
  });
15071
15264
  return () => h(props.tag, {
15072
- class: ['v-row', classes.value]
15265
+ class: ['v-row', classes.value, props.class],
15266
+ style: props.style
15073
15267
  }, slots.default?.());
15074
15268
  }
15075
15269
  });
@@ -15113,6 +15307,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
15113
15307
  const VItemGroup = genericComponent()({
15114
15308
  name: 'VItemGroup',
15115
15309
  props: {
15310
+ ...makeComponentProps(),
15116
15311
  ...makeGroupProps({
15117
15312
  selectedClass: 'v-item--selected'
15118
15313
  }),
@@ -15137,7 +15332,8 @@ const VItemGroup = genericComponent()({
15137
15332
  selected
15138
15333
  } = useGroup(props, VItemGroupSymbol);
15139
15334
  return () => createVNode(props.tag, {
15140
- "class": ['v-item-group', themeClasses.value]
15335
+ "class": ['v-item-group', themeClasses.value, props.class],
15336
+ "style": props.style
15141
15337
  }, {
15142
15338
  default: () => [slots.default?.({
15143
15339
  isSelected,
@@ -15187,7 +15383,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15187
15383
 
15188
15384
  const VLayout = genericComponent()({
15189
15385
  name: 'VLayout',
15190
- props: makeLayoutProps(),
15386
+ props: {
15387
+ ...makeComponentProps(),
15388
+ ...makeLayoutProps()
15389
+ },
15191
15390
  setup(props, _ref) {
15192
15391
  let {
15193
15392
  slots
@@ -15201,8 +15400,8 @@ const VLayout = genericComponent()({
15201
15400
  } = createLayout(props);
15202
15401
  useRender(() => createVNode("div", {
15203
15402
  "ref": layoutRef,
15204
- "class": layoutClasses.value,
15205
- "style": layoutStyles.value
15403
+ "class": [layoutClasses.value, props.class],
15404
+ "style": [layoutStyles.value, props.style]
15206
15405
  }, [slots.default?.()]));
15207
15406
  return {
15208
15407
  getLayoutItem,
@@ -15225,6 +15424,7 @@ const VLayoutItem = genericComponent()({
15225
15424
  default: 300
15226
15425
  },
15227
15426
  modelValue: Boolean,
15427
+ ...makeComponentProps(),
15228
15428
  ...makeLayoutItemProps()
15229
15429
  },
15230
15430
  setup(props, _ref) {
@@ -15243,8 +15443,8 @@ const VLayoutItem = genericComponent()({
15243
15443
  absolute: toRef(props, 'absolute')
15244
15444
  });
15245
15445
  return () => createVNode("div", {
15246
- "class": ['v-layout-item'],
15247
- "style": layoutItemStyles.value
15446
+ "class": ['v-layout-item', props.class],
15447
+ "style": [layoutItemStyles.value, props.style]
15248
15448
  }, [slots.default?.()]);
15249
15449
  }
15250
15450
  });
@@ -15268,6 +15468,7 @@ const VLazy = genericComponent()({
15268
15468
  threshold: undefined
15269
15469
  })
15270
15470
  },
15471
+ ...makeComponentProps(),
15271
15472
  ...makeDimensionProps(),
15272
15473
  ...makeTagProps(),
15273
15474
  ...makeTransitionProps({
@@ -15290,8 +15491,8 @@ const VLazy = genericComponent()({
15290
15491
  isActive.value = isIntersecting;
15291
15492
  }
15292
15493
  useRender(() => withDirectives(createVNode(props.tag, {
15293
- "class": "v-lazy",
15294
- "style": dimensionStyles.value
15494
+ "class": ['v-lazy', props.class],
15495
+ "style": [dimensionStyles.value, props.style]
15295
15496
  }, {
15296
15497
  default: () => [isActive.value && createVNode(MaybeTransition, {
15297
15498
  "transition": props.transition,
@@ -15316,7 +15517,8 @@ const VLocaleProvider = genericComponent()({
15316
15517
  rtl: {
15317
15518
  type: Boolean,
15318
15519
  default: undefined
15319
- }
15520
+ },
15521
+ ...makeComponentProps()
15320
15522
  },
15321
15523
  setup(props, _ref) {
15322
15524
  let {
@@ -15326,7 +15528,8 @@ const VLocaleProvider = genericComponent()({
15326
15528
  rtlClasses
15327
15529
  } = provideLocale(props);
15328
15530
  useRender(() => createVNode("div", {
15329
- "class": ['v-locale-provider', rtlClasses.value]
15531
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15532
+ "style": props.style
15330
15533
  }, [slots.default?.()]));
15331
15534
  return {};
15332
15535
  }
@@ -15336,6 +15539,7 @@ const VMain = genericComponent()({
15336
15539
  name: 'VMain',
15337
15540
  props: {
15338
15541
  scrollable: Boolean,
15542
+ ...makeComponentProps(),
15339
15543
  ...makeTagProps({
15340
15544
  tag: 'main'
15341
15545
  })
@@ -15353,8 +15557,8 @@ const VMain = genericComponent()({
15353
15557
  useRender(() => createVNode(props.tag, {
15354
15558
  "class": ['v-main', {
15355
15559
  'v-main--scrollable': props.scrollable
15356
- }],
15357
- "style": [mainStyles.value, ssrBootStyles.value]
15560
+ }, props.class],
15561
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15358
15562
  }, {
15359
15563
  default: () => [props.scrollable ? createVNode("div", {
15360
15564
  "class": "v-main__scroller"
@@ -15364,525 +15568,99 @@ const VMain = genericComponent()({
15364
15568
  }
15365
15569
  });
15366
15570
 
15367
- // Utilities
15368
-
15369
- // Types
15370
-
15371
- function getWeekArray(date) {
15372
- let currentWeek = [];
15373
- const weeks = [];
15374
- const firstDayOfMonth = startOfMonth(date);
15375
- const lastDayOfMonth = endOfMonth(date);
15376
- for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
15377
- currentWeek.push(null);
15571
+ function useSticky(_ref) {
15572
+ let {
15573
+ rootEl,
15574
+ isSticky,
15575
+ layoutItemStyles
15576
+ } = _ref;
15577
+ const isStuck = ref(false);
15578
+ const stuckPosition = ref(0);
15579
+ const stickyStyles = computed(() => {
15580
+ const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15581
+ return [isSticky.value ? {
15582
+ top: 'auto',
15583
+ bottom: 'auto',
15584
+ height: undefined
15585
+ } : undefined, isStuck.value ? {
15586
+ [side]: convertToUnit(stuckPosition.value)
15587
+ } : {
15588
+ top: layoutItemStyles.value.top
15589
+ }];
15590
+ });
15591
+ onMounted(() => {
15592
+ watch(isSticky, val => {
15593
+ if (val) {
15594
+ window.addEventListener('scroll', onScroll, {
15595
+ passive: true
15596
+ });
15597
+ } else {
15598
+ window.removeEventListener('scroll', onScroll);
15599
+ }
15600
+ }, {
15601
+ immediate: true
15602
+ });
15603
+ });
15604
+ onBeforeUnmount(() => {
15605
+ document.removeEventListener('scroll', onScroll);
15606
+ });
15607
+ let lastScrollTop = 0;
15608
+ function onScroll() {
15609
+ const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15610
+ const rect = rootEl.value.getBoundingClientRect();
15611
+ const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15612
+ const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15613
+ const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15614
+ if (rect.height < window.innerHeight - layoutTop) {
15615
+ isStuck.value = 'top';
15616
+ stuckPosition.value = layoutTop;
15617
+ } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15618
+ stuckPosition.value = window.scrollY + rect.top;
15619
+ isStuck.value = true;
15620
+ } else if (direction === 'down' && bottom <= 0) {
15621
+ stuckPosition.value = 0;
15622
+ isStuck.value = 'bottom';
15623
+ } else if (direction === 'up' && top <= 0) {
15624
+ stuckPosition.value = rect.top + top;
15625
+ isStuck.value = 'top';
15626
+ }
15627
+ lastScrollTop = window.scrollY;
15378
15628
  }
15379
- for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
15380
- const day = new Date(date.getFullYear(), date.getMonth(), i);
15629
+ return {
15630
+ isStuck,
15631
+ stickyStyles
15632
+ };
15633
+ }
15381
15634
 
15382
- // Add the day to the current week
15383
- currentWeek.push(day);
15635
+ const HORIZON = 100; // ms
15636
+ const HISTORY = 20; // number of samples to keep
15384
15637
 
15385
- // If the current week has 7 days, add it to the weeks array and start a new week
15386
- if (currentWeek.length === 7) {
15387
- weeks.push(currentWeek);
15388
- currentWeek = [];
15389
- }
15638
+ /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15639
+ function kineticEnergyToVelocity(work) {
15640
+ const sqrt2 = 1.41421356237;
15641
+ return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15642
+ }
15643
+
15644
+ /**
15645
+ * Returns pointer velocity in px/s
15646
+ */
15647
+ function calculateImpulseVelocity(samples) {
15648
+ // The input should be in reversed time order (most recent sample at index i=0)
15649
+ if (samples.length < 2) {
15650
+ // if 0 or 1 points, velocity is zero
15651
+ return 0;
15390
15652
  }
15391
- for (let i = currentWeek.length; i < 7; i++) {
15392
- currentWeek.push(null);
15393
- }
15394
- weeks.push(currentWeek);
15395
- return weeks;
15396
- }
15397
- function startOfMonth(date) {
15398
- return new Date(date.getFullYear(), date.getMonth(), 1);
15399
- }
15400
- function endOfMonth(date) {
15401
- return new Date(date.getFullYear(), date.getMonth() + 1, 0);
15402
- }
15403
- function date(value) {
15404
- if (value == null) return null;
15405
- if (value instanceof Date) return value;
15406
- if (typeof value === 'string') {
15407
- const parsed = Date.parse(value);
15408
- if (!isNaN(parsed)) return new Date(parsed);
15409
- }
15410
- return null;
15411
- }
15412
- const firstDay = {
15413
- '001': 1,
15414
- AD: 1,
15415
- AE: 6,
15416
- AF: 6,
15417
- AG: 0,
15418
- AI: 1,
15419
- AL: 1,
15420
- AM: 1,
15421
- AN: 1,
15422
- AR: 1,
15423
- AS: 0,
15424
- AT: 1,
15425
- AU: 0,
15426
- AX: 1,
15427
- AZ: 1,
15428
- BA: 1,
15429
- BD: 0,
15430
- BE: 1,
15431
- BG: 1,
15432
- BH: 6,
15433
- BM: 1,
15434
- BN: 1,
15435
- BR: 0,
15436
- BS: 0,
15437
- BT: 0,
15438
- BW: 0,
15439
- BY: 1,
15440
- BZ: 0,
15441
- CA: 0,
15442
- CH: 1,
15443
- CL: 1,
15444
- CM: 1,
15445
- CN: 0,
15446
- CO: 0,
15447
- CR: 1,
15448
- CY: 1,
15449
- CZ: 1,
15450
- DE: 1,
15451
- DJ: 6,
15452
- DK: 1,
15453
- DM: 0,
15454
- DO: 0,
15455
- DZ: 6,
15456
- EC: 1,
15457
- EE: 1,
15458
- EG: 6,
15459
- ES: 1,
15460
- ET: 0,
15461
- FI: 1,
15462
- FJ: 1,
15463
- FO: 1,
15464
- FR: 1,
15465
- GB: 1,
15466
- 'GB-alt-variant': 0,
15467
- GE: 1,
15468
- GF: 1,
15469
- GP: 1,
15470
- GR: 1,
15471
- GT: 0,
15472
- GU: 0,
15473
- HK: 0,
15474
- HN: 0,
15475
- HR: 1,
15476
- HU: 1,
15477
- ID: 0,
15478
- IE: 1,
15479
- IL: 0,
15480
- IN: 0,
15481
- IQ: 6,
15482
- IR: 6,
15483
- IS: 1,
15484
- IT: 1,
15485
- JM: 0,
15486
- JO: 6,
15487
- JP: 0,
15488
- KE: 0,
15489
- KG: 1,
15490
- KH: 0,
15491
- KR: 0,
15492
- KW: 6,
15493
- KZ: 1,
15494
- LA: 0,
15495
- LB: 1,
15496
- LI: 1,
15497
- LK: 1,
15498
- LT: 1,
15499
- LU: 1,
15500
- LV: 1,
15501
- LY: 6,
15502
- MC: 1,
15503
- MD: 1,
15504
- ME: 1,
15505
- MH: 0,
15506
- MK: 1,
15507
- MM: 0,
15508
- MN: 1,
15509
- MO: 0,
15510
- MQ: 1,
15511
- MT: 0,
15512
- MV: 5,
15513
- MX: 0,
15514
- MY: 1,
15515
- MZ: 0,
15516
- NI: 0,
15517
- NL: 1,
15518
- NO: 1,
15519
- NP: 0,
15520
- NZ: 1,
15521
- OM: 6,
15522
- PA: 0,
15523
- PE: 0,
15524
- PH: 0,
15525
- PK: 0,
15526
- PL: 1,
15527
- PR: 0,
15528
- PT: 0,
15529
- PY: 0,
15530
- QA: 6,
15531
- RE: 1,
15532
- RO: 1,
15533
- RS: 1,
15534
- RU: 1,
15535
- SA: 0,
15536
- SD: 6,
15537
- SE: 1,
15538
- SG: 0,
15539
- SI: 1,
15540
- SK: 1,
15541
- SM: 1,
15542
- SV: 0,
15543
- SY: 6,
15544
- TH: 0,
15545
- TJ: 1,
15546
- TM: 1,
15547
- TR: 1,
15548
- TT: 0,
15549
- TW: 0,
15550
- UA: 1,
15551
- UM: 0,
15552
- US: 0,
15553
- UY: 1,
15554
- UZ: 1,
15555
- VA: 1,
15556
- VE: 0,
15557
- VI: 0,
15558
- VN: 1,
15559
- WS: 0,
15560
- XK: 1,
15561
- YE: 0,
15562
- ZA: 0,
15563
- ZW: 0
15564
- };
15565
- const sundayJanuarySecond2000 = new Date(2000, 0, 2);
15566
- function getWeekdays(locale) {
15567
- const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
15568
- return createRange(7).map(i => {
15569
- const weekday = new Date(sundayJanuarySecond2000);
15570
- weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
15571
- return new Intl.DateTimeFormat(locale, {
15572
- weekday: 'long'
15573
- }).format(weekday);
15574
- });
15575
- }
15576
- function format(value, formatString, locale) {
15577
- const date = new Date(value);
15578
- let options = {};
15579
- switch (formatString) {
15580
- case 'fullDateWithWeekday':
15581
- options = {
15582
- weekday: 'long',
15583
- day: 'numeric',
15584
- month: 'long',
15585
- year: 'numeric'
15586
- };
15587
- break;
15588
- case 'normalDateWithWeekday':
15589
- options = {
15590
- weekday: 'short',
15591
- day: 'numeric',
15592
- month: 'short',
15593
- year: 'numeric'
15594
- };
15595
- break;
15596
- case 'keyboardDate':
15597
- options = {};
15598
- break;
15599
- case 'monthAndDate':
15600
- options = {
15601
- month: 'long',
15602
- day: 'numeric'
15603
- };
15604
- break;
15605
- case 'monthAndYear':
15606
- options = {
15607
- month: 'long',
15608
- year: 'numeric'
15609
- };
15610
- break;
15611
- default:
15612
- options = {
15613
- timeZone: 'UTC',
15614
- timeZoneName: 'short'
15615
- };
15616
- }
15617
- return new Intl.DateTimeFormat(locale, options).format(date);
15618
- }
15619
- function addDays(date, amount) {
15620
- const d = new Date(date);
15621
- d.setDate(d.getDate() + amount);
15622
- return d;
15623
- }
15624
- function addMonths(date, amount) {
15625
- const d = new Date(date);
15626
- d.setMonth(d.getMonth() + amount);
15627
- return d;
15628
- }
15629
- function getYear(date) {
15630
- return date.getFullYear();
15631
- }
15632
- function getMonth(date) {
15633
- return date.getMonth();
15634
- }
15635
- function startOfYear(date) {
15636
- return new Date(date.getFullYear(), 0, 1);
15637
- }
15638
- function endOfYear(date) {
15639
- return new Date(date.getFullYear(), 11, 31);
15640
- }
15641
- function getMondayOfFirstWeekOfYear(year) {
15642
- return new Date(year, 0, 1);
15643
- }
15644
-
15645
- // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
15646
- function getWeek(date) {
15647
- let year = date.getFullYear();
15648
- let d1w1 = getMondayOfFirstWeekOfYear(year);
15649
- if (date < d1w1) {
15650
- year = year - 1;
15651
- d1w1 = getMondayOfFirstWeekOfYear(year);
15652
- } else {
15653
- const tv = getMondayOfFirstWeekOfYear(year + 1);
15654
- if (date >= tv) {
15655
- year = year + 1;
15656
- d1w1 = tv;
15657
- }
15658
- }
15659
- const diffTime = Math.abs(date.getTime() - d1w1.getTime());
15660
- const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
15661
- return Math.floor(diffDays / 7) + 1;
15662
- }
15663
- function isWithinRange(date, range) {
15664
- return isAfter(date, range[0]) && isBefore(date, range[1]);
15665
- }
15666
- function isValid(date) {
15667
- const d = new Date(date);
15668
- return d instanceof Date && !isNaN(d.getTime());
15669
- }
15670
- function isAfter(date, comparing) {
15671
- return date.getTime() > comparing.getTime();
15672
- }
15673
- function isBefore(date, comparing) {
15674
- return date.getTime() < comparing.getTime();
15675
- }
15676
- function isEqual(date, comparing) {
15677
- return date.getTime() === comparing.getTime();
15678
- }
15679
- function isSameDay(date, comparing) {
15680
- return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
15681
- }
15682
- function isSameMonth(date, comparing) {
15683
- return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
15684
- }
15685
- function getDiff(date, comparing, unit) {
15686
- const d = new Date(date);
15687
- const c = new Date(comparing);
15688
- if (unit === 'month') {
15689
- return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
15690
- }
15691
- return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
15692
- }
15693
- function setYear(date, year) {
15694
- const d = new Date(date);
15695
- d.setFullYear(year);
15696
- return d;
15697
- }
15698
- class VuetifyDateAdapter {
15699
- constructor() {
15700
- let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
15701
- this.locale = locale;
15702
- }
15703
- date(value) {
15704
- return date(value);
15705
- }
15706
- addDays(date, amount) {
15707
- return addDays(date, amount);
15708
- }
15709
- addMonths(date, amount) {
15710
- return addMonths(date, amount);
15711
- }
15712
- getWeekArray(date) {
15713
- return getWeekArray(date);
15714
- }
15715
- startOfMonth(date) {
15716
- return startOfMonth(date);
15717
- }
15718
- endOfMonth(date) {
15719
- return endOfMonth(date);
15720
- }
15721
- format(date, formatString) {
15722
- return format(date, formatString, this.locale);
15723
- }
15724
- isEqual(date, comparing) {
15725
- return isEqual(date, comparing);
15726
- }
15727
- isValid(date) {
15728
- return isValid(date);
15729
- }
15730
- isWithinRange(date, range) {
15731
- return isWithinRange(date, range);
15732
- }
15733
- isAfter(date, comparing) {
15734
- return isAfter(date, comparing);
15735
- }
15736
- isSameDay(date, comparing) {
15737
- return isSameDay(date, comparing);
15738
- }
15739
- isSameMonth(date, comparing) {
15740
- return isSameMonth(date, comparing);
15741
- }
15742
- setYear(date, year) {
15743
- return setYear(date, year);
15744
- }
15745
- getDiff(date, comparing, unit) {
15746
- return getDiff(date, comparing, unit);
15747
- }
15748
- getWeek(date) {
15749
- return getWeek(date);
15750
- }
15751
- getWeekdays() {
15752
- return getWeekdays(this.locale);
15753
- }
15754
- getYear(date) {
15755
- return getYear(date);
15756
- }
15757
- getMonth(date) {
15758
- return getMonth(date);
15759
- }
15760
- startOfYear(date) {
15761
- return startOfYear(date);
15762
- }
15763
- endOfYear(date) {
15764
- return endOfYear(date);
15765
- }
15766
- }
15767
-
15768
- // Composables
15769
-
15770
- // Types
15771
-
15772
- const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
15773
- function createDate(options) {
15774
- return options ?? {
15775
- adapter: VuetifyDateAdapter
15776
- };
15777
- }
15778
- function useDate(props) {
15779
- const date = inject$1(DateAdapterSymbol);
15780
- const locale = useLocale();
15781
- if (!date) throw new Error('[Vuetify] Could not find injected date');
15782
-
15783
- // eslint-disable-next-line new-cap
15784
- const instance = new date.adapter(locale.current.value);
15785
- watch(locale.current, val => {
15786
- instance.locale = val;
15787
- }, {
15788
- immediate: true
15789
- });
15790
- return instance;
15791
- }
15792
-
15793
- function useSticky(_ref) {
15794
- let {
15795
- rootEl,
15796
- isSticky,
15797
- layoutItemStyles
15798
- } = _ref;
15799
- const isStuck = ref(false);
15800
- const stuckPosition = ref(0);
15801
- const stickyStyles = computed(() => {
15802
- const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15803
- return [isSticky.value ? {
15804
- top: 'auto',
15805
- bottom: 'auto',
15806
- height: undefined
15807
- } : undefined, isStuck.value ? {
15808
- [side]: convertToUnit(stuckPosition.value)
15809
- } : {
15810
- top: layoutItemStyles.value.top
15811
- }];
15812
- });
15813
- onMounted(() => {
15814
- watch(isSticky, val => {
15815
- if (val) {
15816
- window.addEventListener('scroll', onScroll, {
15817
- passive: true
15818
- });
15819
- } else {
15820
- window.removeEventListener('scroll', onScroll);
15821
- }
15822
- }, {
15823
- immediate: true
15824
- });
15825
- });
15826
- onBeforeUnmount(() => {
15827
- document.removeEventListener('scroll', onScroll);
15828
- });
15829
- let lastScrollTop = 0;
15830
- function onScroll() {
15831
- const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15832
- const rect = rootEl.value.getBoundingClientRect();
15833
- const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15834
- const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15835
- const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15836
- if (rect.height < window.innerHeight - layoutTop) {
15837
- isStuck.value = 'top';
15838
- stuckPosition.value = layoutTop;
15839
- } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15840
- stuckPosition.value = window.scrollY + rect.top;
15841
- isStuck.value = true;
15842
- } else if (direction === 'down' && bottom <= 0) {
15843
- stuckPosition.value = 0;
15844
- isStuck.value = 'bottom';
15845
- } else if (direction === 'up' && top <= 0) {
15846
- stuckPosition.value = rect.top + top;
15847
- isStuck.value = 'top';
15848
- }
15849
- lastScrollTop = window.scrollY;
15850
- }
15851
- return {
15852
- isStuck,
15853
- stickyStyles
15854
- };
15855
- }
15856
-
15857
- const HORIZON = 100; // ms
15858
- const HISTORY = 20; // number of samples to keep
15859
-
15860
- /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15861
- function kineticEnergyToVelocity(work) {
15862
- const sqrt2 = 1.41421356237;
15863
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15864
- }
15865
-
15866
- /**
15867
- * Returns pointer velocity in px/s
15868
- */
15869
- function calculateImpulseVelocity(samples) {
15870
- // The input should be in reversed time order (most recent sample at index i=0)
15871
- if (samples.length < 2) {
15872
- // if 0 or 1 points, velocity is zero
15873
- return 0;
15874
- }
15875
- // if (samples[1].t > samples[0].t) {
15876
- // // Algorithm will still work, but not perfectly
15877
- // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15878
- // }
15879
- if (samples.length === 2) {
15880
- // if 2 points, basic linear calculation
15881
- if (samples[1].t === samples[0].t) {
15882
- // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15883
- return 0;
15884
- }
15885
- return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15653
+ // if (samples[1].t > samples[0].t) {
15654
+ // // Algorithm will still work, but not perfectly
15655
+ // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15656
+ // }
15657
+ if (samples.length === 2) {
15658
+ // if 2 points, basic linear calculation
15659
+ if (samples[1].t === samples[0].t) {
15660
+ // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15661
+ return 0;
15662
+ }
15663
+ return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15886
15664
  }
15887
15665
  // Guaranteed to have at least 3 points here
15888
15666
  // start with the oldest sample and go forward in time
@@ -16126,6 +15904,7 @@ const VNavigationDrawer = genericComponent()({
16126
15904
  },
16127
15905
  sticky: Boolean,
16128
15906
  ...makeBorderProps(),
15907
+ ...makeComponentProps(),
16129
15908
  ...makeElevationProps(),
16130
15909
  ...makeLayoutItemProps(),
16131
15910
  ...makeRoundedProps(),
@@ -16214,7 +15993,6 @@ const VNavigationDrawer = genericComponent()({
16214
15993
  });
16215
15994
  const {
16216
15995
  layoutItemStyles,
16217
- layoutRect,
16218
15996
  layoutItemScrimStyles
16219
15997
  } = useLayoutItem({
16220
15998
  id: props.name,
@@ -16244,12 +16022,6 @@ const VNavigationDrawer = genericComponent()({
16244
16022
  opacity: dragProgress.value * 0.2,
16245
16023
  transition: 'none'
16246
16024
  } : undefined),
16247
- ...(layoutRect.value ? {
16248
- left: convertToUnit(layoutRect.value.left),
16249
- right: convertToUnit(layoutRect.value.right),
16250
- top: convertToUnit(layoutRect.value.top),
16251
- bottom: convertToUnit(layoutRect.value.bottom)
16252
- } : undefined),
16253
16025
  ...layoutItemScrimStyles.value
16254
16026
  }));
16255
16027
  provideDefaults({
@@ -16277,8 +16049,8 @@ const VNavigationDrawer = genericComponent()({
16277
16049
  'v-navigation-drawer--temporary': isTemporary.value,
16278
16050
  'v-navigation-drawer--active': isActive.value,
16279
16051
  'v-navigation-drawer--sticky': isSticky.value
16280
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
16281
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value]
16052
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16053
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
16282
16054
  }, attrs), {
16283
16055
  default: () => [hasImage && createVNode("div", {
16284
16056
  "key": "image",
@@ -16407,6 +16179,7 @@ const VPagination = genericComponent()({
16407
16179
  },
16408
16180
  showFirstLastPage: Boolean,
16409
16181
  ...makeBorderProps(),
16182
+ ...makeComponentProps(),
16410
16183
  ...makeDensityProps(),
16411
16184
  ...makeElevationProps(),
16412
16185
  ...makeRoundedProps(),
@@ -16603,7 +16376,8 @@ const VPagination = genericComponent()({
16603
16376
  }
16604
16377
  useRender(() => createVNode(props.tag, {
16605
16378
  "ref": resizeRef,
16606
- "class": ['v-pagination', themeClasses.value],
16379
+ "class": ['v-pagination', themeClasses.value, props.class],
16380
+ "style": props.style,
16607
16381
  "role": "navigation",
16608
16382
  "aria-label": t(props.ariaLabel),
16609
16383
  "onKeydown": onKeydown,
@@ -16662,7 +16436,8 @@ const VParallax = genericComponent()({
16662
16436
  scale: {
16663
16437
  type: [Number, String],
16664
16438
  default: 0.5
16665
- }
16439
+ },
16440
+ ...makeComponentProps()
16666
16441
  },
16667
16442
  setup(props, _ref) {
16668
16443
  let {
@@ -16724,7 +16499,8 @@ const VParallax = genericComponent()({
16724
16499
  useRender(() => createVNode(VImg, {
16725
16500
  "class": ['v-parallax', {
16726
16501
  'v-parallax--active': isIntersecting.value
16727
- }],
16502
+ }, props.class],
16503
+ "style": props.style,
16728
16504
  "ref": root,
16729
16505
  "cover": true,
16730
16506
  "onLoadstart": onScroll,
@@ -16749,7 +16525,8 @@ const VRadio = genericComponent()({
16749
16525
  slots
16750
16526
  } = _ref;
16751
16527
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16752
- "class": "v-radio",
16528
+ "class": ['v-radio', props.class],
16529
+ "style": props.style,
16753
16530
  "type": "radio"
16754
16531
  }), slots));
16755
16532
  return {};
@@ -16803,7 +16580,8 @@ const VRadioGroup = genericComponent()({
16803
16580
  }
16804
16581
  }) : props.label;
16805
16582
  return createVNode(VInput, mergeProps({
16806
- "class": "v-radio-group"
16583
+ "class": ['v-radio-group', props.class],
16584
+ "style": props.style
16807
16585
  }, inputAttrs, inputProps, {
16808
16586
  "modelValue": model.value,
16809
16587
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16941,7 +16719,8 @@ const VRangeSlider = genericComponent()({
16941
16719
  'v-slider--focused': isFocused.value,
16942
16720
  'v-slider--pressed': mousePressed.value,
16943
16721
  'v-slider--disabled': props.disabled
16944
- }],
16722
+ }, props.class],
16723
+ "style": props.style,
16945
16724
  "ref": inputRef
16946
16725
  }, inputProps, {
16947
16726
  "focused": isFocused.value
@@ -17084,6 +16863,7 @@ const VRating = genericComponent()({
17084
16863
  validator: v => ['top', 'bottom'].includes(v)
17085
16864
  },
17086
16865
  ripple: Boolean,
16866
+ ...makeComponentProps(),
17087
16867
  ...makeDensityProps(),
17088
16868
  ...makeSizeProps(),
17089
16869
  ...makeTagProps(),
@@ -17201,7 +16981,8 @@ const VRating = genericComponent()({
17201
16981
  "class": ['v-rating', {
17202
16982
  'v-rating--hover': props.hover,
17203
16983
  'v-rating--readonly': props.readonly
17204
- }, themeClasses.value]
16984
+ }, themeClasses.value, props.class],
16985
+ "style": props.style
17205
16986
  }, {
17206
16987
  default: () => [createVNode(VRatingItem, {
17207
16988
  "value": 0,
@@ -17301,6 +17082,7 @@ const makeVSlideGroupProps = propsFactory({
17301
17082
  type: [Boolean, String],
17302
17083
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
17303
17084
  },
17085
+ ...makeComponentProps(),
17304
17086
  ...makeTagProps(),
17305
17087
  ...makeGroupProps({
17306
17088
  selectedClass: 'v-slide-group-item--active'
@@ -17464,7 +17246,7 @@ const VSlideGroup = genericComponent()({
17464
17246
  function focus(location) {
17465
17247
  if (!contentRef.value) return;
17466
17248
  if (!location) {
17467
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
17249
+ const focusable = focusableChildren(contentRef.value);
17468
17250
  focusable[0]?.focus();
17469
17251
  } else if (location === 'next') {
17470
17252
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -17541,7 +17323,8 @@ const VSlideGroup = genericComponent()({
17541
17323
  'v-slide-group--vertical': !isHorizontal.value,
17542
17324
  'v-slide-group--has-affixes': hasAffixes.value,
17543
17325
  'v-slide-group--is-overflowing': isOverflowing.value
17544
- }],
17326
+ }, props.class],
17327
+ "style": props.style,
17545
17328
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
17546
17329
  "onFocus": onFocus
17547
17330
  }, {
@@ -17691,7 +17474,8 @@ const VSnackbar = genericComponent()({
17691
17474
  'v-snackbar--active': isActive.value,
17692
17475
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17693
17476
  'v-snackbar--vertical': props.vertical
17694
- }, positionClasses.value]
17477
+ }, positionClasses.value, props.class],
17478
+ "style": props.style
17695
17479
  }, overlayProps, {
17696
17480
  "modelValue": isActive.value,
17697
17481
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17791,7 +17575,8 @@ const VSwitch = genericComponent()({
17791
17575
  'v-switch--inset': props.inset
17792
17576
  }, {
17793
17577
  'v-switch--indeterminate': indeterminate.value
17794
- }, loaderClasses.value]
17578
+ }, loaderClasses.value, props.class],
17579
+ "style": props.style
17795
17580
  }, inputAttrs, inputProps, {
17796
17581
  "id": id.value,
17797
17582
  "focused": isFocused.value
@@ -17860,6 +17645,7 @@ const VSystemBar = genericComponent()({
17860
17645
  color: String,
17861
17646
  height: [Number, String],
17862
17647
  window: Boolean,
17648
+ ...makeComponentProps(),
17863
17649
  ...makeElevationProps(),
17864
17650
  ...makeLayoutItemProps(),
17865
17651
  ...makeRoundedProps(),
@@ -17901,8 +17687,8 @@ const VSystemBar = genericComponent()({
17901
17687
  useRender(() => createVNode(props.tag, {
17902
17688
  "class": ['v-system-bar', {
17903
17689
  'v-system-bar--window': props.window
17904
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17905
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17690
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17691
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17906
17692
  }, slots));
17907
17693
  return {};
17908
17694
  }
@@ -17975,10 +17761,10 @@ const VTab = genericComponent()({
17975
17761
  useRender(() => {
17976
17762
  const [btnProps] = VBtn.filterProps(props);
17977
17763
  return createVNode(VBtn, mergeProps({
17978
- "_as": "VTab",
17979
17764
  "symbol": VTabsSymbol,
17980
17765
  "ref": rootEl,
17981
- "class": ['v-tab'],
17766
+ "class": ['v-tab', props.class],
17767
+ "style": props.style,
17982
17768
  "tabindex": isSelected.value ? 0 : -1,
17983
17769
  "role": "tab",
17984
17770
  "aria-selected": String(isSelected.value),
@@ -18073,10 +17859,10 @@ const VTabs = genericComponent()({
18073
17859
  'v-tabs--fixed-tabs': props.fixedTabs,
18074
17860
  'v-tabs--grow': props.grow,
18075
17861
  'v-tabs--stacked': props.stacked
18076
- }, densityClasses.value, backgroundColorClasses.value],
17862
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
18077
17863
  "style": [{
18078
17864
  '--v-tabs-height': convertToUnit(props.height)
18079
- }, backgroundColorStyles.value],
17865
+ }, backgroundColorStyles.value, props.style],
18080
17866
  "role": "tablist",
18081
17867
  "symbol": VTabsSymbol
18082
17868
  }), {
@@ -18096,6 +17882,7 @@ const VTable = genericComponent()({
18096
17882
  fixedFooter: Boolean,
18097
17883
  height: [Number, String],
18098
17884
  hover: Boolean,
17885
+ ...makeComponentProps(),
18099
17886
  ...makeDensityProps(),
18100
17887
  ...makeTagProps(),
18101
17888
  ...makeThemeProps()
@@ -18118,7 +17905,8 @@ const VTable = genericComponent()({
18118
17905
  'v-table--has-top': !!slots.top,
18119
17906
  'v-table--has-bottom': !!slots.bottom,
18120
17907
  'v-table--hover': props.hover
18121
- }, themeClasses.value, densityClasses.value]
17908
+ }, themeClasses.value, densityClasses.value, props.class],
17909
+ "style": props.style
18122
17910
  }, {
18123
17911
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
18124
17912
  "class": "v-table__wrapper",
@@ -18197,7 +17985,7 @@ const VTextarea = genericComponent()({
18197
17985
  const vFieldRef = ref();
18198
17986
  const controlHeight = ref('');
18199
17987
  const textareaRef = ref();
18200
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
17988
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
18201
17989
  function onFocus() {
18202
17990
  if (textareaRef.value !== document.activeElement) {
18203
17991
  textareaRef.value?.focus();
@@ -18283,7 +18071,8 @@ const VTextarea = genericComponent()({
18283
18071
  'v-textarea--auto-grow': props.autoGrow,
18284
18072
  'v-textarea--no-resize': props.noResize || props.autoGrow,
18285
18073
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
18286
- }]
18074
+ }, props.class],
18075
+ "style": props.style
18287
18076
  }, rootAttrs, inputProps, {
18288
18077
  "focused": isFocused.value
18289
18078
  }), {
@@ -18367,6 +18156,7 @@ const VThemeProvider = genericComponent()({
18367
18156
  name: 'VThemeProvider',
18368
18157
  props: {
18369
18158
  withBackground: Boolean,
18159
+ ...makeComponentProps(),
18370
18160
  ...makeThemeProps(),
18371
18161
  ...makeTagProps()
18372
18162
  },
@@ -18380,7 +18170,8 @@ const VThemeProvider = genericComponent()({
18380
18170
  return () => {
18381
18171
  if (!props.withBackground) return slots.default?.();
18382
18172
  return createVNode(props.tag, {
18383
- "class": ['v-theme-provider', themeClasses.value]
18173
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18174
+ "style": props.style
18384
18175
  }, {
18385
18176
  default: () => [slots.default?.()]
18386
18177
  });
@@ -18425,6 +18216,7 @@ const VTimeline = genericComponent()({
18425
18216
  type: String,
18426
18217
  validator: v => ['start', 'end', 'both'].includes(v)
18427
18218
  },
18219
+ ...makeComponentProps(),
18428
18220
  ...makeDensityProps(),
18429
18221
  ...makeTagProps(),
18430
18222
  ...makeThemeProps()
@@ -18468,10 +18260,10 @@ const VTimeline = genericComponent()({
18468
18260
  useRender(() => createVNode(props.tag, {
18469
18261
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18470
18262
  'v-timeline--inset-line': !!props.lineInset
18471
- }, themeClasses.value, densityClasses.value, sideClasses.value],
18472
- "style": {
18263
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18264
+ "style": [{
18473
18265
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
18474
- }
18266
+ }, props.style]
18475
18267
  }, slots));
18476
18268
  return {};
18477
18269
  }
@@ -18486,6 +18278,7 @@ const VTimelineDivider = genericComponent()({
18486
18278
  icon: IconValue,
18487
18279
  iconColor: String,
18488
18280
  lineColor: String,
18281
+ ...makeComponentProps(),
18489
18282
  ...makeRoundedProps(),
18490
18283
  ...makeSizeProps(),
18491
18284
  ...makeElevationProps()
@@ -18515,7 +18308,8 @@ const VTimelineDivider = genericComponent()({
18515
18308
  useRender(() => createVNode("div", {
18516
18309
  "class": ['v-timeline-divider', {
18517
18310
  'v-timeline-divider--fill-dot': props.fillDot
18518
- }]
18311
+ }, props.class],
18312
+ "style": props.style
18519
18313
  }, [createVNode("div", {
18520
18314
  "class": ['v-timeline-divider__before', lineColorClasses.value],
18521
18315
  "style": lineColorStyles.value
@@ -18565,11 +18359,12 @@ const VTimelineItem = genericComponent()({
18565
18359
  icon: IconValue,
18566
18360
  iconColor: String,
18567
18361
  lineInset: [Number, String],
18568
- ...makeRoundedProps(),
18362
+ ...makeComponentProps(),
18363
+ ...makeDimensionProps(),
18569
18364
  ...makeElevationProps(),
18365
+ ...makeRoundedProps(),
18570
18366
  ...makeSizeProps(),
18571
- ...makeTagProps(),
18572
- ...makeDimensionProps()
18367
+ ...makeTagProps()
18573
18368
  },
18574
18369
  setup(props, _ref) {
18575
18370
  let {
@@ -18589,11 +18384,11 @@ const VTimelineItem = genericComponent()({
18589
18384
  useRender(() => createVNode("div", {
18590
18385
  "class": ['v-timeline-item', {
18591
18386
  'v-timeline-item--fill-dot': props.fillDot
18592
- }],
18593
- "style": {
18387
+ }, props.class],
18388
+ "style": [{
18594
18389
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18595
18390
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18596
- }
18391
+ }, props.style]
18597
18392
  }, [createVNode("div", {
18598
18393
  "class": "v-timeline-item__body",
18599
18394
  "style": dimensionStyles.value
@@ -18669,7 +18464,8 @@ const VTooltip = genericComponent()({
18669
18464
  const [overlayProps] = VOverlay.filterProps(props);
18670
18465
  return createVNode(VOverlay, mergeProps({
18671
18466
  "ref": overlay,
18672
- "class": ['v-tooltip'],
18467
+ "class": ['v-tooltip', props.class],
18468
+ "style": props.style,
18673
18469
  "id": id.value
18674
18470
  }, overlayProps, {
18675
18471
  "modelValue": isActive.value,
@@ -18717,7 +18513,8 @@ const VValidation = genericComponent()({
18717
18513
  const VVirtualScrollItem = genericComponent()({
18718
18514
  name: 'VVirtualScrollItem',
18719
18515
  props: {
18720
- dynamicHeight: Boolean
18516
+ dynamicHeight: Boolean,
18517
+ ...makeComponentProps()
18721
18518
  },
18722
18519
  emits: {
18723
18520
  'update:height': height => true
@@ -18744,7 +18541,8 @@ const VVirtualScrollItem = genericComponent()({
18744
18541
  onUpdated(updateHeight);
18745
18542
  useRender(() => createVNode("div", {
18746
18543
  "ref": props.dynamicHeight ? resizeRef : undefined,
18747
- "class": "v-virtual-scroll__item"
18544
+ "class": ['v-virtual-scroll__item', props.class],
18545
+ "style": props.style
18748
18546
  }, [slots.default?.()]));
18749
18547
  }
18750
18548
  });
@@ -18761,7 +18559,7 @@ const VVirtualScroll = genericComponent()({
18761
18559
  default: () => []
18762
18560
  },
18763
18561
  itemHeight: [Number, String],
18764
- visibleItems: [Number, String],
18562
+ ...makeComponentProps(),
18765
18563
  ...makeDimensionProps()
18766
18564
  },
18767
18565
  setup(props, _ref) {
@@ -18788,7 +18586,7 @@ const VVirtualScroll = genericComponent()({
18788
18586
  const sizeMap = new Map();
18789
18587
  let sizes = createRange(props.items.length).map(() => itemHeight.value);
18790
18588
  const visibleItems = computed(() => {
18791
- return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18589
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18792
18590
  });
18793
18591
  function handleItemResize(index, height) {
18794
18592
  itemHeight.value = Math.max(itemHeight.value, height);
@@ -18799,20 +18597,13 @@ const VVirtualScroll = genericComponent()({
18799
18597
  return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18800
18598
  }
18801
18599
  function calculateMidPointIndex(scrollTop) {
18802
- let start = 0;
18803
- let end = props.items.length;
18804
- while (start <= end) {
18805
- const middle = start + Math.floor((end - start) / 2);
18806
- const middleOffset = calculateOffset(middle);
18807
- if (middleOffset === scrollTop) {
18808
- return middle;
18809
- } else if (middleOffset < scrollTop) {
18810
- start = middle + 1;
18811
- } else if (middleOffset > scrollTop) {
18812
- end = middle - 1;
18813
- }
18600
+ const end = props.items.length;
18601
+ let middle = 0;
18602
+ let middleOffset = 0;
18603
+ while (middleOffset < scrollTop && middle < end) {
18604
+ middleOffset += sizes[middle++] || itemHeight.value;
18814
18605
  }
18815
- return start;
18606
+ return middle - 1;
18816
18607
  }
18817
18608
  let lastScrollTop = 0;
18818
18609
  function handleScroll() {
@@ -18834,8 +18625,12 @@ const VVirtualScroll = genericComponent()({
18834
18625
  const offset = calculateOffset(index);
18835
18626
  rootEl.value.scrollTop = offset;
18836
18627
  }
18628
+ const items = computed(() => props.items.map((item, index) => ({
18629
+ raw: item,
18630
+ index
18631
+ })));
18837
18632
  const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18838
- const computedItems = computed(() => props.items.slice(first.value, last.value));
18633
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18839
18634
  const paddingTop = computed(() => calculateOffset(first.value));
18840
18635
  const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18841
18636
  const {
@@ -18860,23 +18655,23 @@ const VVirtualScroll = genericComponent()({
18860
18655
  });
18861
18656
  useRender(() => createVNode("div", {
18862
18657
  "ref": rootEl,
18863
- "class": "v-virtual-scroll",
18658
+ "class": ['v-virtual-scroll', props.class],
18864
18659
  "onScroll": handleScroll,
18865
- "style": dimensionStyles.value
18660
+ "style": [dimensionStyles.value, props.style]
18866
18661
  }, [createVNode("div", {
18867
18662
  "class": "v-virtual-scroll__container",
18868
18663
  "style": {
18869
18664
  paddingTop: convertToUnit(paddingTop.value),
18870
18665
  paddingBottom: convertToUnit(paddingBottom.value)
18871
18666
  }
18872
- }, [computedItems.value.map((item, index) => createVNode(VVirtualScrollItem, {
18873
- "key": index,
18667
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18668
+ "key": item.index,
18874
18669
  "dynamicHeight": !props.itemHeight,
18875
- "onUpdate:height": height => handleItemResize(index + first.value, height)
18670
+ "onUpdate:height": height => handleItemResize(item.index, height)
18876
18671
  }, {
18877
18672
  default: () => [slots.default?.({
18878
- item,
18879
- index: index + first.value
18673
+ item: item.raw,
18674
+ index: item.index
18880
18675
  })]
18881
18676
  }))])]));
18882
18677
  return {
@@ -19310,6 +19105,17 @@ const VDataTableHeaders = genericComponent()({
19310
19105
  backgroundColorClasses,
19311
19106
  backgroundColorStyles
19312
19107
  } = useBackgroundColor(props, 'color');
19108
+ const slotProps = computed(() => ({
19109
+ headers: headers.value,
19110
+ columns: columns.value,
19111
+ toggleSort,
19112
+ sortBy: sortBy.value,
19113
+ someSelected: someSelected.value,
19114
+ allSelected: allSelected.value,
19115
+ selectAll,
19116
+ getSortIcon,
19117
+ getFixedStyles
19118
+ }));
19313
19119
  const VDataTableHeaderCell = _ref2 => {
19314
19120
  let {
19315
19121
  column,
@@ -19337,14 +19143,14 @@ const VDataTableHeaders = genericComponent()({
19337
19143
  "noPadding": noPadding
19338
19144
  }, {
19339
19145
  default: () => {
19340
- const slotName = `column.${column.key}`;
19341
- const slotProps = {
19146
+ const columnSlotName = `column.${column.key}`;
19147
+ const columnSlotProps = {
19342
19148
  column,
19343
19149
  selectAll
19344
19150
  };
19345
- if (slots[slotName]) return slots[slotName](slotProps);
19151
+ if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19346
19152
  if (column.key === 'data-table-select') {
19347
- return slots['column.data-table-select']?.(slotProps) ?? createVNode(VCheckboxBtn, {
19153
+ return slots['column.data-table-select']?.(columnSlotProps) ?? createVNode(VCheckboxBtn, {
19348
19154
  "modelValue": allSelected.value,
19349
19155
  "indeterminate": someSelected.value && !allSelected.value,
19350
19156
  "onUpdate:modelValue": selectAll
@@ -19364,22 +19170,24 @@ const VDataTableHeaders = genericComponent()({
19364
19170
  }
19365
19171
  });
19366
19172
  };
19367
- useRender(() => createVNode(Fragment, null, [headers.value.map((row, y) => createVNode("tr", null, [row.map((column, x) => createVNode(VDataTableHeaderCell, {
19368
- "column": column,
19369
- "x": x,
19370
- "y": y
19371
- }, null))])), props.loading && createVNode("tr", {
19372
- "class": "v-data-table__progress"
19373
- }, [createVNode("th", {
19374
- "colspan": columns.value.length
19375
- }, [createVNode(LoaderSlot, {
19376
- "name": "v-data-table-headers",
19377
- "active": true,
19378
- "color": typeof props.loading === 'boolean' ? undefined : props.loading,
19379
- "indeterminate": true
19380
- }, {
19381
- default: slots.loader
19382
- })])])]));
19173
+ useRender(() => {
19174
+ return createVNode(Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => createVNode("tr", null, [row.map((column, x) => createVNode(VDataTableHeaderCell, {
19175
+ "column": column,
19176
+ "x": x,
19177
+ "y": y
19178
+ }, null))])), props.loading && createVNode("tr", {
19179
+ "class": "v-data-table__progress"
19180
+ }, [createVNode("th", {
19181
+ "colspan": columns.value.length
19182
+ }, [createVNode(LoaderSlot, {
19183
+ "name": "v-data-table-headers",
19184
+ "active": true,
19185
+ "color": typeof props.loading === 'boolean' ? undefined : props.loading,
19186
+ "indeterminate": true
19187
+ }, {
19188
+ default: slots.loader
19189
+ })])])]);
19190
+ });
19383
19191
  }
19384
19192
  });
19385
19193
 
@@ -19678,9 +19486,7 @@ const VDataTableRow = defineComponent({
19678
19486
  'v-data-table__tr--clickable': !!props.onClick
19679
19487
  }],
19680
19488
  "onClick": props.onClick
19681
- }, [!columns.value.length && createVNode(VDataTableColumn, {
19682
- "key": "no-data"
19683
- }, slots), props.item && columns.value.map((column, i) => createVNode(VDataTableColumn, {
19489
+ }, [props.item && columns.value.map((column, i) => createVNode(VDataTableColumn, {
19684
19490
  "align": column.align,
19685
19491
  "fixed": column.fixed,
19686
19492
  "fixedOffset": column.fixedOffset,
@@ -19770,13 +19576,13 @@ const VDataTableRows = genericComponent()({
19770
19576
  useRender(() => {
19771
19577
  if (props.loading && slots.loading) {
19772
19578
  return createVNode("tr", {
19773
- "class": "v-data-table-rows-no-data",
19579
+ "class": "v-data-table-rows-loading",
19774
19580
  "key": "loading"
19775
19581
  }, [createVNode("td", {
19776
19582
  "colspan": columns.value.length
19777
19583
  }, [slots.loading()])]);
19778
19584
  }
19779
- if (!props.loading && !props.items.length && !props.hideNoData && slots['no-data']) {
19585
+ if (!props.loading && !props.items.length && !props.hideNoData) {
19780
19586
  return createVNode("tr", {
19781
19587
  "class": "v-data-table-rows-no-data",
19782
19588
  "key": "no-data"
@@ -19870,6 +19676,11 @@ function providePagination(options) {
19870
19676
  if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
19871
19677
  return Math.ceil(itemsLength.value / itemsPerPage.value);
19872
19678
  });
19679
+ watchEffect(() => {
19680
+ if (page.value > pageCount.value) {
19681
+ page.value = pageCount.value;
19682
+ }
19683
+ });
19873
19684
  function setItemsPerPage(value) {
19874
19685
  itemsPerPage.value = value;
19875
19686
  page.value = 1;
@@ -20133,6 +19944,11 @@ const makeVDataTableProps = propsFactory({
20133
19944
  width: [String, Number],
20134
19945
  fixedHeader: Boolean,
20135
19946
  fixedFooter: Boolean,
19947
+ loading: [Boolean, String],
19948
+ loadingText: {
19949
+ type: String,
19950
+ default: '$vuetify.dataIterator.loadingText'
19951
+ },
20136
19952
  'onClick:row': Function,
20137
19953
  search: String
20138
19954
  }, 'v-data-table');
@@ -20240,12 +20056,15 @@ const VDataTable = genericComponent()({
20240
20056
  provideDefaults({
20241
20057
  VDataTableRows: {
20242
20058
  hideNoData: toRef(props, 'hideNoData'),
20243
- noDataText: toRef(props, 'noDataText')
20059
+ noDataText: toRef(props, 'noDataText'),
20060
+ loading: toRef(props, 'loading'),
20061
+ loadingText: toRef(props, 'loadingText')
20244
20062
  }
20245
20063
  });
20246
20064
  useRender(() => createVNode(VTable, {
20247
20065
  "class": ['v-data-table', {
20248
- 'v-data-table--show-select': props.showSelect
20066
+ 'v-data-table--show-select': props.showSelect,
20067
+ 'v-data-table--loading': props.loading
20249
20068
  }],
20250
20069
  "fixedHeader": props.fixedHeader,
20251
20070
  "fixedFooter": props.fixedFooter,
@@ -20255,8 +20074,9 @@ const VDataTable = genericComponent()({
20255
20074
  top: slots.top,
20256
20075
  default: slots.default ?? (() => createVNode(Fragment, null, [slots.colgroup?.({
20257
20076
  columns
20258
- }), createVNode("thead", null, [slots.headers ? slots.headers() : createVNode(VDataTableHeaders, {
20077
+ }), createVNode("thead", null, [createVNode(VDataTableHeaders, {
20259
20078
  "sticky": props.fixedHeader,
20079
+ "loading": props.loading,
20260
20080
  "multiSort": props.multiSort
20261
20081
  }, slots)]), slots.thead?.(), createVNode("tbody", null, [slots.body ? slots.body() : createVNode(VDataTableRows, {
20262
20082
  "items": paginatedItems.value,
@@ -20446,11 +20266,15 @@ const VDataTableVirtual = genericComponent()({
20446
20266
  provideDefaults({
20447
20267
  VDataTableRows: {
20448
20268
  hideNoData: toRef(props, 'hideNoData'),
20449
- noDataText: toRef(props, 'noDataText')
20269
+ noDataText: toRef(props, 'noDataText'),
20270
+ loading: toRef(props, 'loading'),
20271
+ loadingText: toRef(props, 'loadingText')
20450
20272
  }
20451
20273
  });
20452
20274
  useRender(() => createVNode(VTable, {
20453
- "class": "v-data-table",
20275
+ "class": ['v-data-table', {
20276
+ 'v-data-table--loading': props.loading
20277
+ }],
20454
20278
  "style": {
20455
20279
  '--v-table-row-height': convertToUnit(itemHeight.value)
20456
20280
  },
@@ -20469,6 +20293,7 @@ const VDataTableVirtual = genericComponent()({
20469
20293
  }
20470
20294
  }, [createVNode("table", null, [createVNode("thead", null, [createVNode(VDataTableHeaders, {
20471
20295
  "sticky": props.fixedHeader,
20296
+ "loading": props.loading,
20472
20297
  "multiSort": props.multiSort
20473
20298
  }, slots)]), createVNode("tbody", null, [createVNode("tr", {
20474
20299
  "style": {
@@ -20507,11 +20332,6 @@ const VDataTableServer = genericComponent()({
20507
20332
  name: 'VDataTableServer',
20508
20333
  props: {
20509
20334
  color: String,
20510
- loading: [Boolean, String],
20511
- loadingText: {
20512
- type: String,
20513
- default: '$vuetify.dataIterator.loadingText'
20514
- },
20515
20335
  itemsLength: {
20516
20336
  type: [Number, String],
20517
20337
  required: true
@@ -20621,7 +20441,7 @@ const VDataTableServer = genericComponent()({
20621
20441
  }), createVNode("thead", {
20622
20442
  "class": "v-data-table__thead",
20623
20443
  "role": "rowgroup"
20624
- }, [slots.headers ? slots.headers() : createVNode(VDataTableHeaders, {
20444
+ }, [createVNode(VDataTableHeaders, {
20625
20445
  "sticky": props.fixedHeader,
20626
20446
  "loading": props.loading,
20627
20447
  "color": props.color
@@ -21123,130 +20943,542 @@ var components = /*#__PURE__*/Object.freeze({
21123
20943
 
21124
20944
  // Types
21125
20945
 
21126
- function mounted$2(el, binding) {
21127
- const modifiers = binding.modifiers || {};
21128
- const value = binding.value;
21129
- const {
21130
- once,
21131
- immediate,
21132
- ...modifierKeys
21133
- } = modifiers;
21134
- const defaultValue = !Object.keys(modifierKeys).length;
21135
- const {
21136
- handler,
21137
- options
21138
- } = typeof value === 'object' ? value : {
21139
- handler: value,
21140
- options: {
21141
- attributes: modifierKeys?.attr ?? defaultValue,
21142
- characterData: modifierKeys?.char ?? defaultValue,
21143
- childList: modifierKeys?.child ?? defaultValue,
21144
- subtree: modifierKeys?.sub ?? defaultValue
20946
+ function mounted$2(el, binding) {
20947
+ const modifiers = binding.modifiers || {};
20948
+ const value = binding.value;
20949
+ const {
20950
+ once,
20951
+ immediate,
20952
+ ...modifierKeys
20953
+ } = modifiers;
20954
+ const defaultValue = !Object.keys(modifierKeys).length;
20955
+ const {
20956
+ handler,
20957
+ options
20958
+ } = typeof value === 'object' ? value : {
20959
+ handler: value,
20960
+ options: {
20961
+ attributes: modifierKeys?.attr ?? defaultValue,
20962
+ characterData: modifierKeys?.char ?? defaultValue,
20963
+ childList: modifierKeys?.child ?? defaultValue,
20964
+ subtree: modifierKeys?.sub ?? defaultValue
20965
+ }
20966
+ };
20967
+ const observer = new MutationObserver(function () {
20968
+ let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
20969
+ let observer = arguments.length > 1 ? arguments[1] : undefined;
20970
+ handler?.(mutations, observer);
20971
+ if (once) unmounted$2(el, binding);
20972
+ });
20973
+ if (immediate) handler?.([], observer);
20974
+ el._mutate = Object(el._mutate);
20975
+ el._mutate[binding.instance.$.uid] = {
20976
+ observer
20977
+ };
20978
+ observer.observe(el, options);
20979
+ }
20980
+ function unmounted$2(el, binding) {
20981
+ if (!el._mutate?.[binding.instance.$.uid]) return;
20982
+ el._mutate[binding.instance.$.uid].observer.disconnect();
20983
+ delete el._mutate[binding.instance.$.uid];
20984
+ }
20985
+ const Mutate = {
20986
+ mounted: mounted$2,
20987
+ unmounted: unmounted$2
20988
+ };
20989
+
20990
+ function mounted$1(el, binding) {
20991
+ const handler = binding.value;
20992
+ const options = {
20993
+ passive: !binding.modifiers?.active
20994
+ };
20995
+ window.addEventListener('resize', handler, options);
20996
+ el._onResize = Object(el._onResize);
20997
+ el._onResize[binding.instance.$.uid] = {
20998
+ handler,
20999
+ options
21000
+ };
21001
+ if (!binding.modifiers?.quiet) {
21002
+ handler();
21003
+ }
21004
+ }
21005
+ function unmounted$1(el, binding) {
21006
+ if (!el._onResize?.[binding.instance.$.uid]) return;
21007
+ const {
21008
+ handler,
21009
+ options
21010
+ } = el._onResize[binding.instance.$.uid];
21011
+ window.removeEventListener('resize', handler, options);
21012
+ delete el._onResize[binding.instance.$.uid];
21013
+ }
21014
+ const Resize = {
21015
+ mounted: mounted$1,
21016
+ unmounted: unmounted$1
21017
+ };
21018
+
21019
+ function mounted(el, binding) {
21020
+ const {
21021
+ self = false
21022
+ } = binding.modifiers ?? {};
21023
+ const value = binding.value;
21024
+ const options = typeof value === 'object' && value.options || {
21025
+ passive: true
21026
+ };
21027
+ const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
21028
+ const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
21029
+ if (!target) return;
21030
+ target.addEventListener('scroll', handler, options);
21031
+ el._onScroll = Object(el._onScroll);
21032
+ el._onScroll[binding.instance.$.uid] = {
21033
+ handler,
21034
+ options,
21035
+ // Don't reference self
21036
+ target: self ? undefined : target
21037
+ };
21038
+ }
21039
+ function unmounted(el, binding) {
21040
+ if (!el._onScroll?.[binding.instance.$.uid]) return;
21041
+ const {
21042
+ handler,
21043
+ options,
21044
+ target = el
21045
+ } = el._onScroll[binding.instance.$.uid];
21046
+ target.removeEventListener('scroll', handler, options);
21047
+ delete el._onScroll[binding.instance.$.uid];
21048
+ }
21049
+ function updated(el, binding) {
21050
+ if (binding.value === binding.oldValue) return;
21051
+ unmounted(el, binding);
21052
+ mounted(el, binding);
21053
+ }
21054
+ const Scroll = {
21055
+ mounted,
21056
+ unmounted,
21057
+ updated
21058
+ };
21059
+
21060
+ var directives = /*#__PURE__*/Object.freeze({
21061
+ __proto__: null,
21062
+ ClickOutside: ClickOutside,
21063
+ Intersect: Intersect,
21064
+ Mutate: Mutate,
21065
+ Resize: Resize,
21066
+ Ripple: Ripple,
21067
+ Scroll: Scroll,
21068
+ Touch: Touch
21069
+ });
21070
+
21071
+ // Utilities
21072
+
21073
+ // Types
21074
+
21075
+ function getWeekArray(date) {
21076
+ let currentWeek = [];
21077
+ const weeks = [];
21078
+ const firstDayOfMonth = startOfMonth(date);
21079
+ const lastDayOfMonth = endOfMonth(date);
21080
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
21081
+ currentWeek.push(null);
21082
+ }
21083
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
21084
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
21085
+
21086
+ // Add the day to the current week
21087
+ currentWeek.push(day);
21088
+
21089
+ // If the current week has 7 days, add it to the weeks array and start a new week
21090
+ if (currentWeek.length === 7) {
21091
+ weeks.push(currentWeek);
21092
+ currentWeek = [];
21145
21093
  }
21146
- };
21147
- const observer = new MutationObserver(function () {
21148
- let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
21149
- let observer = arguments.length > 1 ? arguments[1] : undefined;
21150
- handler?.(mutations, observer);
21151
- if (once) unmounted$2(el, binding);
21094
+ }
21095
+ for (let i = currentWeek.length; i < 7; i++) {
21096
+ currentWeek.push(null);
21097
+ }
21098
+ weeks.push(currentWeek);
21099
+ return weeks;
21100
+ }
21101
+ function startOfMonth(date) {
21102
+ return new Date(date.getFullYear(), date.getMonth(), 1);
21103
+ }
21104
+ function endOfMonth(date) {
21105
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
21106
+ }
21107
+ function date(value) {
21108
+ if (value == null) return null;
21109
+ if (value instanceof Date) return value;
21110
+ if (typeof value === 'string') {
21111
+ const parsed = Date.parse(value);
21112
+ if (!isNaN(parsed)) return new Date(parsed);
21113
+ }
21114
+ return null;
21115
+ }
21116
+ const firstDay = {
21117
+ '001': 1,
21118
+ AD: 1,
21119
+ AE: 6,
21120
+ AF: 6,
21121
+ AG: 0,
21122
+ AI: 1,
21123
+ AL: 1,
21124
+ AM: 1,
21125
+ AN: 1,
21126
+ AR: 1,
21127
+ AS: 0,
21128
+ AT: 1,
21129
+ AU: 0,
21130
+ AX: 1,
21131
+ AZ: 1,
21132
+ BA: 1,
21133
+ BD: 0,
21134
+ BE: 1,
21135
+ BG: 1,
21136
+ BH: 6,
21137
+ BM: 1,
21138
+ BN: 1,
21139
+ BR: 0,
21140
+ BS: 0,
21141
+ BT: 0,
21142
+ BW: 0,
21143
+ BY: 1,
21144
+ BZ: 0,
21145
+ CA: 0,
21146
+ CH: 1,
21147
+ CL: 1,
21148
+ CM: 1,
21149
+ CN: 0,
21150
+ CO: 0,
21151
+ CR: 1,
21152
+ CY: 1,
21153
+ CZ: 1,
21154
+ DE: 1,
21155
+ DJ: 6,
21156
+ DK: 1,
21157
+ DM: 0,
21158
+ DO: 0,
21159
+ DZ: 6,
21160
+ EC: 1,
21161
+ EE: 1,
21162
+ EG: 6,
21163
+ ES: 1,
21164
+ ET: 0,
21165
+ FI: 1,
21166
+ FJ: 1,
21167
+ FO: 1,
21168
+ FR: 1,
21169
+ GB: 1,
21170
+ 'GB-alt-variant': 0,
21171
+ GE: 1,
21172
+ GF: 1,
21173
+ GP: 1,
21174
+ GR: 1,
21175
+ GT: 0,
21176
+ GU: 0,
21177
+ HK: 0,
21178
+ HN: 0,
21179
+ HR: 1,
21180
+ HU: 1,
21181
+ ID: 0,
21182
+ IE: 1,
21183
+ IL: 0,
21184
+ IN: 0,
21185
+ IQ: 6,
21186
+ IR: 6,
21187
+ IS: 1,
21188
+ IT: 1,
21189
+ JM: 0,
21190
+ JO: 6,
21191
+ JP: 0,
21192
+ KE: 0,
21193
+ KG: 1,
21194
+ KH: 0,
21195
+ KR: 0,
21196
+ KW: 6,
21197
+ KZ: 1,
21198
+ LA: 0,
21199
+ LB: 1,
21200
+ LI: 1,
21201
+ LK: 1,
21202
+ LT: 1,
21203
+ LU: 1,
21204
+ LV: 1,
21205
+ LY: 6,
21206
+ MC: 1,
21207
+ MD: 1,
21208
+ ME: 1,
21209
+ MH: 0,
21210
+ MK: 1,
21211
+ MM: 0,
21212
+ MN: 1,
21213
+ MO: 0,
21214
+ MQ: 1,
21215
+ MT: 0,
21216
+ MV: 5,
21217
+ MX: 0,
21218
+ MY: 1,
21219
+ MZ: 0,
21220
+ NI: 0,
21221
+ NL: 1,
21222
+ NO: 1,
21223
+ NP: 0,
21224
+ NZ: 1,
21225
+ OM: 6,
21226
+ PA: 0,
21227
+ PE: 0,
21228
+ PH: 0,
21229
+ PK: 0,
21230
+ PL: 1,
21231
+ PR: 0,
21232
+ PT: 0,
21233
+ PY: 0,
21234
+ QA: 6,
21235
+ RE: 1,
21236
+ RO: 1,
21237
+ RS: 1,
21238
+ RU: 1,
21239
+ SA: 0,
21240
+ SD: 6,
21241
+ SE: 1,
21242
+ SG: 0,
21243
+ SI: 1,
21244
+ SK: 1,
21245
+ SM: 1,
21246
+ SV: 0,
21247
+ SY: 6,
21248
+ TH: 0,
21249
+ TJ: 1,
21250
+ TM: 1,
21251
+ TR: 1,
21252
+ TT: 0,
21253
+ TW: 0,
21254
+ UA: 1,
21255
+ UM: 0,
21256
+ US: 0,
21257
+ UY: 1,
21258
+ UZ: 1,
21259
+ VA: 1,
21260
+ VE: 0,
21261
+ VI: 0,
21262
+ VN: 1,
21263
+ WS: 0,
21264
+ XK: 1,
21265
+ YE: 0,
21266
+ ZA: 0,
21267
+ ZW: 0
21268
+ };
21269
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
21270
+ function getWeekdays(locale) {
21271
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
21272
+ return createRange(7).map(i => {
21273
+ const weekday = new Date(sundayJanuarySecond2000);
21274
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
21275
+ return new Intl.DateTimeFormat(locale, {
21276
+ weekday: 'long'
21277
+ }).format(weekday);
21152
21278
  });
21153
- if (immediate) handler?.([], observer);
21154
- el._mutate = Object(el._mutate);
21155
- el._mutate[binding.instance.$.uid] = {
21156
- observer
21157
- };
21158
- observer.observe(el, options);
21159
21279
  }
21160
- function unmounted$2(el, binding) {
21161
- if (!el._mutate?.[binding.instance.$.uid]) return;
21162
- el._mutate[binding.instance.$.uid].observer.disconnect();
21163
- delete el._mutate[binding.instance.$.uid];
21280
+ function format(value, formatString, locale) {
21281
+ const date = new Date(value);
21282
+ let options = {};
21283
+ switch (formatString) {
21284
+ case 'fullDateWithWeekday':
21285
+ options = {
21286
+ weekday: 'long',
21287
+ day: 'numeric',
21288
+ month: 'long',
21289
+ year: 'numeric'
21290
+ };
21291
+ break;
21292
+ case 'normalDateWithWeekday':
21293
+ options = {
21294
+ weekday: 'short',
21295
+ day: 'numeric',
21296
+ month: 'short',
21297
+ year: 'numeric'
21298
+ };
21299
+ break;
21300
+ case 'keyboardDate':
21301
+ options = {};
21302
+ break;
21303
+ case 'monthAndDate':
21304
+ options = {
21305
+ month: 'long',
21306
+ day: 'numeric'
21307
+ };
21308
+ break;
21309
+ case 'monthAndYear':
21310
+ options = {
21311
+ month: 'long',
21312
+ year: 'numeric'
21313
+ };
21314
+ break;
21315
+ default:
21316
+ options = {
21317
+ timeZone: 'UTC',
21318
+ timeZoneName: 'short'
21319
+ };
21320
+ }
21321
+ return new Intl.DateTimeFormat(locale, options).format(date);
21322
+ }
21323
+ function addDays(date, amount) {
21324
+ const d = new Date(date);
21325
+ d.setDate(d.getDate() + amount);
21326
+ return d;
21327
+ }
21328
+ function addMonths(date, amount) {
21329
+ const d = new Date(date);
21330
+ d.setMonth(d.getMonth() + amount);
21331
+ return d;
21332
+ }
21333
+ function getYear(date) {
21334
+ return date.getFullYear();
21335
+ }
21336
+ function getMonth(date) {
21337
+ return date.getMonth();
21338
+ }
21339
+ function startOfYear(date) {
21340
+ return new Date(date.getFullYear(), 0, 1);
21341
+ }
21342
+ function endOfYear(date) {
21343
+ return new Date(date.getFullYear(), 11, 31);
21344
+ }
21345
+ function getMondayOfFirstWeekOfYear(year) {
21346
+ return new Date(year, 0, 1);
21164
21347
  }
21165
- const Mutate = {
21166
- mounted: mounted$2,
21167
- unmounted: unmounted$2
21168
- };
21169
21348
 
21170
- function mounted$1(el, binding) {
21171
- const handler = binding.value;
21172
- const options = {
21173
- passive: !binding.modifiers?.active
21174
- };
21175
- window.addEventListener('resize', handler, options);
21176
- el._onResize = Object(el._onResize);
21177
- el._onResize[binding.instance.$.uid] = {
21178
- handler,
21179
- options
21180
- };
21181
- if (!binding.modifiers?.quiet) {
21182
- handler();
21349
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
21350
+ function getWeek(date) {
21351
+ let year = date.getFullYear();
21352
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
21353
+ if (date < d1w1) {
21354
+ year = year - 1;
21355
+ d1w1 = getMondayOfFirstWeekOfYear(year);
21356
+ } else {
21357
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
21358
+ if (date >= tv) {
21359
+ year = year + 1;
21360
+ d1w1 = tv;
21361
+ }
21183
21362
  }
21363
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
21364
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
21365
+ return Math.floor(diffDays / 7) + 1;
21184
21366
  }
21185
- function unmounted$1(el, binding) {
21186
- if (!el._onResize?.[binding.instance.$.uid]) return;
21187
- const {
21188
- handler,
21189
- options
21190
- } = el._onResize[binding.instance.$.uid];
21191
- window.removeEventListener('resize', handler, options);
21192
- delete el._onResize[binding.instance.$.uid];
21367
+ function isWithinRange(date, range) {
21368
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
21193
21369
  }
21194
- const Resize = {
21195
- mounted: mounted$1,
21196
- unmounted: unmounted$1
21197
- };
21198
-
21199
- function mounted(el, binding) {
21200
- const {
21201
- self = false
21202
- } = binding.modifiers ?? {};
21203
- const value = binding.value;
21204
- const options = typeof value === 'object' && value.options || {
21205
- passive: true
21206
- };
21207
- const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
21208
- const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
21209
- if (!target) return;
21210
- target.addEventListener('scroll', handler, options);
21211
- el._onScroll = Object(el._onScroll);
21212
- el._onScroll[binding.instance.$.uid] = {
21213
- handler,
21214
- options,
21215
- // Don't reference self
21216
- target: self ? undefined : target
21217
- };
21370
+ function isValid(date) {
21371
+ const d = new Date(date);
21372
+ return d instanceof Date && !isNaN(d.getTime());
21218
21373
  }
21219
- function unmounted(el, binding) {
21220
- if (!el._onScroll?.[binding.instance.$.uid]) return;
21221
- const {
21222
- handler,
21223
- options,
21224
- target = el
21225
- } = el._onScroll[binding.instance.$.uid];
21226
- target.removeEventListener('scroll', handler, options);
21227
- delete el._onScroll[binding.instance.$.uid];
21374
+ function isAfter(date, comparing) {
21375
+ return date.getTime() > comparing.getTime();
21228
21376
  }
21229
- function updated(el, binding) {
21230
- if (binding.value === binding.oldValue) return;
21231
- unmounted(el, binding);
21232
- mounted(el, binding);
21377
+ function isBefore(date, comparing) {
21378
+ return date.getTime() < comparing.getTime();
21379
+ }
21380
+ function isEqual(date, comparing) {
21381
+ return date.getTime() === comparing.getTime();
21382
+ }
21383
+ function isSameDay(date, comparing) {
21384
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
21385
+ }
21386
+ function isSameMonth(date, comparing) {
21387
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
21388
+ }
21389
+ function getDiff(date, comparing, unit) {
21390
+ const d = new Date(date);
21391
+ const c = new Date(comparing);
21392
+ if (unit === 'month') {
21393
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
21394
+ }
21395
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
21396
+ }
21397
+ function setYear(date, year) {
21398
+ const d = new Date(date);
21399
+ d.setFullYear(year);
21400
+ return d;
21401
+ }
21402
+ class VuetifyDateAdapter {
21403
+ constructor() {
21404
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
21405
+ this.locale = locale;
21406
+ }
21407
+ date(value) {
21408
+ return date(value);
21409
+ }
21410
+ addDays(date, amount) {
21411
+ return addDays(date, amount);
21412
+ }
21413
+ addMonths(date, amount) {
21414
+ return addMonths(date, amount);
21415
+ }
21416
+ getWeekArray(date) {
21417
+ return getWeekArray(date);
21418
+ }
21419
+ startOfMonth(date) {
21420
+ return startOfMonth(date);
21421
+ }
21422
+ endOfMonth(date) {
21423
+ return endOfMonth(date);
21424
+ }
21425
+ format(date, formatString) {
21426
+ return format(date, formatString, this.locale);
21427
+ }
21428
+ isEqual(date, comparing) {
21429
+ return isEqual(date, comparing);
21430
+ }
21431
+ isValid(date) {
21432
+ return isValid(date);
21433
+ }
21434
+ isWithinRange(date, range) {
21435
+ return isWithinRange(date, range);
21436
+ }
21437
+ isAfter(date, comparing) {
21438
+ return isAfter(date, comparing);
21439
+ }
21440
+ isSameDay(date, comparing) {
21441
+ return isSameDay(date, comparing);
21442
+ }
21443
+ isSameMonth(date, comparing) {
21444
+ return isSameMonth(date, comparing);
21445
+ }
21446
+ setYear(date, year) {
21447
+ return setYear(date, year);
21448
+ }
21449
+ getDiff(date, comparing, unit) {
21450
+ return getDiff(date, comparing, unit);
21451
+ }
21452
+ getWeek(date) {
21453
+ return getWeek(date);
21454
+ }
21455
+ getWeekdays() {
21456
+ return getWeekdays(this.locale);
21457
+ }
21458
+ getYear(date) {
21459
+ return getYear(date);
21460
+ }
21461
+ getMonth(date) {
21462
+ return getMonth(date);
21463
+ }
21464
+ startOfYear(date) {
21465
+ return startOfYear(date);
21466
+ }
21467
+ endOfYear(date) {
21468
+ return endOfYear(date);
21469
+ }
21233
21470
  }
21234
- const Scroll = {
21235
- mounted,
21236
- unmounted,
21237
- updated
21238
- };
21239
21471
 
21240
- var directives = /*#__PURE__*/Object.freeze({
21241
- __proto__: null,
21242
- ClickOutside: ClickOutside,
21243
- Intersect: Intersect,
21244
- Mutate: Mutate,
21245
- Resize: Resize,
21246
- Ripple: Ripple,
21247
- Scroll: Scroll,
21248
- Touch: Touch
21249
- });
21472
+ // Composables
21473
+
21474
+ // Types
21475
+
21476
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
21477
+ function createDate(options) {
21478
+ return options ?? {
21479
+ adapter: VuetifyDateAdapter
21480
+ };
21481
+ }
21250
21482
 
21251
21483
  // Composables
21252
21484
  function createVuetify$1() {
@@ -21333,7 +21565,7 @@ function createVuetify$1() {
21333
21565
  date
21334
21566
  };
21335
21567
  }
21336
- const version$1 = "4.0.0-dev-20230426.0";
21568
+ const version$1 = "4.0.0-dev-20230511.0";
21337
21569
  createVuetify$1.version = version$1;
21338
21570
 
21339
21571
  // Vue's inject() can only be used in setup
@@ -21345,7 +21577,7 @@ function inject(key) {
21345
21577
  }
21346
21578
  }
21347
21579
 
21348
- const version = "4.0.0-dev-20230426.0";
21580
+ const version = "4.0.0-dev-20230511.0";
21349
21581
 
21350
21582
  const createVuetify = function () {
21351
21583
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -21356,5 +21588,5 @@ const createVuetify = function () {
21356
21588
  });
21357
21589
  };
21358
21590
 
21359
- export { components, createVuetify, directives, useDate, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
21591
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
21360
21592
  //# sourceMappingURL=vuetify-labs.esm.js.map