@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 } 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 } 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
  }
@@ -1087,15 +1120,19 @@ function createSimpleFunctional(klass) {
1087
1120
  tag: {
1088
1121
  type: String,
1089
1122
  default: tag
1090
- }
1123
+ },
1124
+ ...makeComponentProps()
1091
1125
  },
1092
1126
  setup(props, _ref) {
1093
1127
  let {
1094
1128
  slots
1095
1129
  } = _ref;
1096
- return () => h(props.tag, {
1097
- class: klass
1098
- }, slots.default?.());
1130
+ return () => {
1131
+ return h(props.tag, {
1132
+ class: [klass, props.class],
1133
+ style: props.style
1134
+ }, slots.default?.());
1135
+ };
1099
1136
  }
1100
1137
  });
1101
1138
  }
@@ -1128,6 +1165,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1128
1165
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1129
1166
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1130
1167
 
1168
+ // Utilities
1169
+ function getCurrentInstance(name, message) {
1170
+ const vm = getCurrentInstance$1();
1171
+ if (!vm) {
1172
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1173
+ }
1174
+ return vm;
1175
+ }
1176
+ function getCurrentInstanceName() {
1177
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1178
+ const vm = getCurrentInstance(name).type;
1179
+ return toKebabCase(vm?.aliasName || vm?.name);
1180
+ }
1181
+ let _uid = 0;
1182
+ let _map = new WeakMap();
1183
+ function getUid() {
1184
+ const vm = getCurrentInstance('getUid');
1185
+ if (_map.has(vm)) return _map.get(vm);else {
1186
+ const uid = _uid++;
1187
+ _map.set(vm, uid);
1188
+ return uid;
1189
+ }
1190
+ }
1191
+ getUid.reset = () => {
1192
+ _uid = 0;
1193
+ _map = new WeakMap();
1194
+ };
1195
+
1131
1196
  function getScrollParent(el) {
1132
1197
  while (el) {
1133
1198
  if (hasScrollbar(el)) return el;
@@ -1151,6 +1216,16 @@ function hasScrollbar(el) {
1151
1216
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1152
1217
  }
1153
1218
 
1219
+ function injectSelf(key) {
1220
+ const {
1221
+ provides
1222
+ } = getCurrentInstance('injectSelf');
1223
+ if (provides && key in provides) {
1224
+ // TS doesn't allow symbol as index type
1225
+ return provides[key];
1226
+ }
1227
+ }
1228
+
1154
1229
  function isFixedPosition(el) {
1155
1230
  while (el) {
1156
1231
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1655,7 +1730,7 @@ function createTheme(options) {
1655
1730
  for (const variation of ['lighten', 'darken']) {
1656
1731
  const fn = variation === 'lighten' ? lighten : darken;
1657
1732
  for (const amount of createRange(parsedOptions.variations[variation], 1)) {
1658
- theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor$1(color), amount));
1733
+ theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
1659
1734
  }
1660
1735
  }
1661
1736
  }
@@ -1663,9 +1738,9 @@ function createTheme(options) {
1663
1738
  for (const color of Object.keys(theme.colors)) {
1664
1739
  if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
1665
1740
  const onColor = `on-${color}`;
1666
- const colorVal = parseColor$1(theme.colors[color]);
1667
- const blackContrast = Math.abs(APCAcontrast(parseColor$1(0), colorVal));
1668
- const whiteContrast = Math.abs(APCAcontrast(parseColor$1(0xffffff), colorVal));
1741
+ const colorVal = parseColor(theme.colors[color]);
1742
+ const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal));
1743
+ const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal));
1669
1744
 
1670
1745
  // TODO: warn about poor color selections
1671
1746
  // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
@@ -1797,14 +1872,14 @@ function genCssVariables(theme) {
1797
1872
  const darkOverlay = theme.dark ? 1 : 2;
1798
1873
  const variables = [];
1799
1874
  for (const [key, value] of Object.entries(theme.colors)) {
1800
- const rgb = parseColor$1(value);
1875
+ const rgb = parseColor(value);
1801
1876
  variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
1802
1877
  if (!key.startsWith('on-')) {
1803
1878
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1804
1879
  }
1805
1880
  }
1806
1881
  for (const [key, value] of Object.entries(theme.variables)) {
1807
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1882
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
1808
1883
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1809
1884
  variables.push(`--v-${key}: ${rgb ?? value}`);
1810
1885
  }
@@ -2133,6 +2208,7 @@ function useRtl() {
2133
2208
  const VApp = genericComponent()({
2134
2209
  name: 'VApp',
2135
2210
  props: {
2211
+ ...makeComponentProps(),
2136
2212
  ...makeLayoutProps({
2137
2213
  fullHeight: true
2138
2214
  }),
@@ -2155,8 +2231,8 @@ const VApp = genericComponent()({
2155
2231
  } = useRtl();
2156
2232
  useRender(() => createVNode("div", {
2157
2233
  "ref": layoutRef,
2158
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2159
- "style": layoutStyles.value
2234
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2235
+ "style": [layoutStyles.value, props.style]
2160
2236
  }, [createVNode("div", {
2161
2237
  "class": "v-application__wrap"
2162
2238
  }, [slots.default?.()])]));
@@ -2576,13 +2652,16 @@ function useAspectStyles(props) {
2576
2652
  })
2577
2653
  };
2578
2654
  }
2655
+ const makeVResponsiveProps = propsFactory({
2656
+ aspectRatio: [String, Number],
2657
+ contentClass: String,
2658
+ inline: Boolean,
2659
+ ...makeComponentProps(),
2660
+ ...makeDimensionProps()
2661
+ }, 'v-responsive');
2579
2662
  const VResponsive = genericComponent()({
2580
2663
  name: 'VResponsive',
2581
- props: {
2582
- aspectRatio: [String, Number],
2583
- contentClass: String,
2584
- ...makeDimensionProps()
2585
- },
2664
+ props: makeVResponsiveProps(),
2586
2665
  setup(props, _ref) {
2587
2666
  let {
2588
2667
  slots
@@ -2594,8 +2673,10 @@ const VResponsive = genericComponent()({
2594
2673
  dimensionStyles
2595
2674
  } = useDimension(props);
2596
2675
  useRender(() => createVNode("div", {
2597
- "class": "v-responsive",
2598
- "style": dimensionStyles.value
2676
+ "class": ['v-responsive', {
2677
+ 'v-responsive--inline': props.inline
2678
+ }, props.class],
2679
+ "style": [dimensionStyles.value, props.style]
2599
2680
  }, [createVNode("div", {
2600
2681
  "class": "v-responsive__sizer",
2601
2682
  "style": aspectStyles.value
@@ -2690,7 +2771,6 @@ const VImg = genericComponent()({
2690
2771
  intersect: Intersect
2691
2772
  },
2692
2773
  props: {
2693
- aspectRatio: [String, Number],
2694
2774
  alt: String,
2695
2775
  cover: Boolean,
2696
2776
  eager: Boolean,
@@ -2712,7 +2792,8 @@ const VImg = genericComponent()({
2712
2792
  default: ''
2713
2793
  },
2714
2794
  srcset: String,
2715
- width: [String, Number],
2795
+ ...makeVResponsiveProps(),
2796
+ ...makeComponentProps(),
2716
2797
  ...makeTransitionProps()
2717
2798
  },
2718
2799
  emits: {
@@ -2897,25 +2978,27 @@ const VImg = genericComponent()({
2897
2978
  }
2898
2979
  });
2899
2980
  }
2900
- useRender(() => withDirectives(createVNode(VResponsive, {
2901
- "class": ['v-img', {
2902
- 'v-img--booting': !isBooted.value
2903
- }],
2904
- "style": {
2905
- width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2906
- },
2907
- "aspectRatio": aspectRatio.value,
2908
- "aria-label": props.alt,
2909
- "role": props.alt ? 'img' : undefined
2910
- }, {
2911
- additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
2912
- default: slots.default
2913
- }), [[resolveDirective("intersect"), {
2914
- handler: init,
2915
- options: props.options
2916
- }, null, {
2917
- once: true
2918
- }]]));
2981
+ useRender(() => {
2982
+ const [responsiveProps] = VResponsive.filterProps(props);
2983
+ return withDirectives(createVNode(VResponsive, mergeProps({
2984
+ "class": ['v-img', {
2985
+ 'v-img--booting': !isBooted.value
2986
+ }, props.class],
2987
+ "style": props.style
2988
+ }, responsiveProps, {
2989
+ "aspectRatio": aspectRatio.value,
2990
+ "aria-label": props.alt,
2991
+ "role": props.alt ? 'img' : undefined
2992
+ }), {
2993
+ additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
2994
+ default: slots.default
2995
+ }), [[resolveDirective("intersect"), {
2996
+ handler: init,
2997
+ options: props.options
2998
+ }, null, {
2999
+ once: true
3000
+ }]]);
3001
+ });
2919
3002
  return {
2920
3003
  currentSrc,
2921
3004
  image,
@@ -2938,10 +3021,9 @@ const makeTagProps = propsFactory({
2938
3021
  }
2939
3022
  }, 'tag');
2940
3023
 
2941
- // Types
2942
-
2943
3024
  const makeVToolbarTitleProps = propsFactory({
2944
3025
  text: String,
3026
+ ...makeComponentProps(),
2945
3027
  ...makeTagProps()
2946
3028
  }, 'v-toolbar-title');
2947
3029
  const VToolbarTitle = genericComponent()({
@@ -2954,7 +3036,8 @@ const VToolbarTitle = genericComponent()({
2954
3036
  useRender(() => {
2955
3037
  const hasText = !!(slots.default || slots.text || props.text);
2956
3038
  return createVNode(props.tag, {
2957
- "class": "v-toolbar-title"
3039
+ "class": ['v-toolbar-title', props.class],
3040
+ "style": props.style
2958
3041
  }, {
2959
3042
  default: () => [hasText && createVNode("div", {
2960
3043
  "class": "v-toolbar-title__placeholder"
@@ -3135,6 +3218,7 @@ const makeVToolbarProps = propsFactory({
3135
3218
  image: String,
3136
3219
  title: String,
3137
3220
  ...makeBorderProps(),
3221
+ ...makeComponentProps(),
3138
3222
  ...makeElevationProps(),
3139
3223
  ...makeRoundedProps(),
3140
3224
  ...makeTagProps({
@@ -3185,8 +3269,8 @@ const VToolbar = genericComponent()({
3185
3269
  'v-toolbar--flat': props.flat,
3186
3270
  'v-toolbar--floating': props.floating,
3187
3271
  [`v-toolbar--density-${props.density}`]: true
3188
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3189
- "style": [backgroundColorStyles.value]
3272
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3273
+ "style": [backgroundColorStyles.value, props.style]
3190
3274
  }, {
3191
3275
  default: () => [hasImage && createVNode("div", {
3192
3276
  "key": "image",
@@ -3261,14 +3345,13 @@ const makeScrollProps = propsFactory({
3261
3345
  type: String
3262
3346
  },
3263
3347
  scrollThreshold: {
3264
- type: [String, Number]
3348
+ type: [String, Number],
3349
+ default: 300
3265
3350
  }
3266
3351
  }, 'scroll');
3267
3352
  function useScroll(props) {
3268
3353
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3269
3354
  const {
3270
- thresholdMetCallback,
3271
- scrollThreshold,
3272
3355
  canScroll
3273
3356
  } = args;
3274
3357
  let previousScroll = 0;
@@ -3278,8 +3361,16 @@ function useScroll(props) {
3278
3361
  const currentThreshold = ref(0);
3279
3362
  const isScrollActive = ref(false);
3280
3363
  const isScrollingUp = ref(false);
3281
- const computedScrollThreshold = computed(() => {
3282
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3364
+ const scrollThreshold = computed(() => {
3365
+ return Number(props.scrollThreshold);
3366
+ });
3367
+
3368
+ /**
3369
+ * 1: at top
3370
+ * 0: at threshold
3371
+ */
3372
+ const scrollRatio = computed(() => {
3373
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3283
3374
  });
3284
3375
  const onScroll = () => {
3285
3376
  const targetEl = target.value;
@@ -3287,7 +3378,7 @@ function useScroll(props) {
3287
3378
  previousScroll = currentScroll.value;
3288
3379
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3289
3380
  isScrollingUp.value = currentScroll.value < previousScroll;
3290
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3381
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3291
3382
  };
3292
3383
  watch(isScrollingUp, () => {
3293
3384
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3299,7 +3390,7 @@ function useScroll(props) {
3299
3390
  watch(() => props.scrollTarget, scrollTarget => {
3300
3391
  const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3301
3392
  if (!newTarget) {
3302
- consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance$1());
3393
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);
3303
3394
  return;
3304
3395
  }
3305
3396
  if (newTarget === target.value) return;
@@ -3315,15 +3406,6 @@ function useScroll(props) {
3315
3406
  onBeforeUnmount(() => {
3316
3407
  target.value?.removeEventListener('scroll', onScroll);
3317
3408
  });
3318
- thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3319
- thresholdMet && thresholdMetCallback({
3320
- currentThreshold: currentThreshold.value,
3321
- isScrollingUp: isScrollingUp.value,
3322
- savedScroll
3323
- });
3324
- }, {
3325
- immediate: true
3326
- });
3327
3409
 
3328
3410
  // Do we need this? If yes - seems that
3329
3411
  // there's no need to expose onScroll
@@ -3331,10 +3413,11 @@ function useScroll(props) {
3331
3413
  immediate: true
3332
3414
  });
3333
3415
  return {
3334
- computedScrollThreshold,
3416
+ scrollThreshold,
3335
3417
  currentScroll,
3336
3418
  currentThreshold,
3337
3419
  isScrollActive,
3420
+ scrollRatio,
3338
3421
  // required only for testing
3339
3422
  // probably can be removed
3340
3423
  // later (2 chars chlng)
@@ -3417,15 +3500,14 @@ const VAppBar = genericComponent()({
3417
3500
  });
3418
3501
  const {
3419
3502
  currentScroll,
3420
- currentThreshold,
3421
- computedScrollThreshold,
3422
- isScrollingUp
3503
+ scrollThreshold,
3504
+ isScrollingUp,
3505
+ scrollRatio
3423
3506
  } = useScroll(props, {
3424
3507
  canScroll
3425
3508
  });
3426
- const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3427
- const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3428
- const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3509
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3510
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3429
3511
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3430
3512
  const height = computed(() => {
3431
3513
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3434,15 +3516,12 @@ const VAppBar = genericComponent()({
3434
3516
  return height + extensionHeight;
3435
3517
  });
3436
3518
  function setActive() {
3437
- const val = currentScroll.value;
3438
3519
  if (scrollBehavior.value.hide) {
3439
3520
  if (scrollBehavior.value.inverted) {
3440
- isActive.value = val > computedScrollThreshold.value;
3521
+ isActive.value = currentScroll.value > scrollThreshold.value;
3441
3522
  } else {
3442
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3523
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3443
3524
  }
3444
- } else if (scrollBehavior.value.inverted) {
3445
- isActive.value = currentScroll.value === 0;
3446
3525
  } else {
3447
3526
  isActive.value = true;
3448
3527
  }
@@ -3471,13 +3550,13 @@ const VAppBar = genericComponent()({
3471
3550
  "ref": vToolbarRef,
3472
3551
  "class": ['v-app-bar', {
3473
3552
  'v-app-bar--bottom': props.location === 'bottom'
3474
- }],
3475
- "style": {
3553
+ }, props.class],
3554
+ "style": [{
3476
3555
  ...layoutItemStyles.value,
3477
3556
  '--v-toolbar-image-opacity': opacity.value,
3478
3557
  height: undefined,
3479
3558
  ...ssrBootStyles.value
3480
- }
3559
+ }, props.style]
3481
3560
  }, toolbarProps, {
3482
3561
  "collapse": isCollapsed.value,
3483
3562
  "flat": isFlat.value
@@ -3564,6 +3643,7 @@ function useVariant(props) {
3564
3643
  const makeVBtnGroupProps = propsFactory({
3565
3644
  divided: Boolean,
3566
3645
  ...makeBorderProps(),
3646
+ ...makeComponentProps(),
3567
3647
  ...makeDensityProps(),
3568
3648
  ...makeElevationProps(),
3569
3649
  ...makeRoundedProps(),
@@ -3606,7 +3686,8 @@ const VBtnGroup = genericComponent()({
3606
3686
  return createVNode(props.tag, {
3607
3687
  "class": ['v-btn-group', {
3608
3688
  'v-btn-group--divided': props.divided
3609
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3689
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3690
+ "style": props.style
3610
3691
  }, slots);
3611
3692
  });
3612
3693
  }
@@ -3839,8 +3920,10 @@ const VBtnToggle = genericComponent()({
3839
3920
  useRender(() => {
3840
3921
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3841
3922
  return createVNode(VBtnGroup, mergeProps({
3842
- "class": "v-btn-toggle"
3843
- }, btnGroupProps), {
3923
+ "class": ['v-btn-toggle', props.class]
3924
+ }, btnGroupProps, {
3925
+ "style": props.style
3926
+ }), {
3844
3927
  default: () => [slots.default?.({
3845
3928
  isSelected,
3846
3929
  next,
@@ -3911,7 +3994,7 @@ const mdi = {
3911
3994
 
3912
3995
  // Types
3913
3996
 
3914
- const IconValue = [String, Function, Object];
3997
+ const IconValue = [String, Function, Object, Array];
3915
3998
  const IconSymbol = Symbol.for('vuetify:icons');
3916
3999
  const makeIconProps = propsFactory({
3917
4000
  icon: {
@@ -3931,8 +4014,9 @@ const VComponentIcon = genericComponent()({
3931
4014
  slots
3932
4015
  } = _ref;
3933
4016
  return () => {
4017
+ const Icon = props.icon;
3934
4018
  return createVNode(props.tag, null, {
3935
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4019
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3936
4020
  });
3937
4021
  };
3938
4022
  }
@@ -3955,7 +4039,12 @@ const VSvgIcon = defineComponent({
3955
4039
  "viewBox": "0 0 24 24",
3956
4040
  "role": "img",
3957
4041
  "aria-hidden": "true"
3958
- }, [createVNode("path", {
4042
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4043
+ "d": path[0],
4044
+ "fill-opacity": path[1]
4045
+ }, null) : createVNode("path", {
4046
+ "d": path
4047
+ }, null)) : createVNode("path", {
3959
4048
  "d": props.icon
3960
4049
  }, null)])]
3961
4050
  });
@@ -4020,7 +4109,12 @@ const useIcon = props => {
4020
4109
  }
4021
4110
  }
4022
4111
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
4023
- if (typeof icon !== 'string') {
4112
+ if (Array.isArray(icon)) {
4113
+ return {
4114
+ component: VSvgIcon,
4115
+ icon
4116
+ };
4117
+ } else if (typeof icon !== 'string') {
4024
4118
  return {
4025
4119
  component: VComponentIcon,
4026
4120
  icon
@@ -4077,6 +4171,7 @@ const makeVIconProps = propsFactory({
4077
4171
  start: Boolean,
4078
4172
  end: Boolean,
4079
4173
  icon: IconValue,
4174
+ ...makeComponentProps(),
4080
4175
  ...makeSizeProps(),
4081
4176
  ...makeTagProps({
4082
4177
  tag: 'i'
@@ -4119,12 +4214,12 @@ const VIcon = genericComponent()({
4119
4214
  'v-icon--clickable': !!attrs.onClick,
4120
4215
  'v-icon--start': props.start,
4121
4216
  'v-icon--end': props.end
4122
- }],
4217
+ }, props.class],
4123
4218
  "style": [!sizeClasses.value ? {
4124
4219
  fontSize: convertToUnit(props.size),
4125
4220
  height: convertToUnit(props.size),
4126
4221
  width: convertToUnit(props.size)
4127
- } : undefined, textColorStyles.value],
4222
+ } : undefined, textColorStyles.value, props.style],
4128
4223
  "role": attrs.onClick ? 'button' : undefined,
4129
4224
  "aria-hidden": !attrs.onClick
4130
4225
  }, {
@@ -4182,6 +4277,7 @@ const VProgressCircular = genericComponent()({
4182
4277
  type: [Number, String],
4183
4278
  default: 4
4184
4279
  },
4280
+ ...makeComponentProps(),
4185
4281
  ...makeSizeProps(),
4186
4282
  ...makeTagProps({
4187
4283
  tag: 'div'
@@ -4237,8 +4333,8 @@ const VProgressCircular = genericComponent()({
4237
4333
  'v-progress-circular--indeterminate': !!props.indeterminate,
4238
4334
  'v-progress-circular--visible': isIntersecting.value,
4239
4335
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4240
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4241
- "style": [sizeStyles.value, textColorStyles.value],
4336
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4337
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4242
4338
  "role": "progressbar",
4243
4339
  "aria-valuemin": "0",
4244
4340
  "aria-valuemax": "100",
@@ -4657,6 +4753,7 @@ const VProgressLinear = genericComponent()({
4657
4753
  stream: Boolean,
4658
4754
  striped: Boolean,
4659
4755
  roundedBar: Boolean,
4756
+ ...makeComponentProps(),
4660
4757
  ...makeLocationProps({
4661
4758
  location: 'top'
4662
4759
  }),
@@ -4728,14 +4825,14 @@ const VProgressLinear = genericComponent()({
4728
4825
  'v-progress-linear--rounded': props.rounded,
4729
4826
  'v-progress-linear--rounded-bar': props.roundedBar,
4730
4827
  'v-progress-linear--striped': props.striped
4731
- }, roundedClasses.value, themeClasses.value],
4732
- "style": {
4828
+ }, roundedClasses.value, themeClasses.value, props.class],
4829
+ "style": [{
4733
4830
  bottom: props.location === 'bottom' ? 0 : undefined,
4734
4831
  top: props.location === 'top' ? 0 : undefined,
4735
4832
  height: props.active ? convertToUnit(height.value) : 0,
4736
4833
  '--v-progress-linear-height': convertToUnit(height.value),
4737
4834
  ...locationStyles.value
4738
- },
4835
+ }, props.style],
4739
4836
  "role": "progressbar",
4740
4837
  "aria-hidden": props.active ? 'false' : 'true',
4741
4838
  "aria-valuemin": "0",
@@ -4946,7 +5043,7 @@ const makeVBtnProps = propsFactory({
4946
5043
  },
4947
5044
  text: String,
4948
5045
  ...makeBorderProps(),
4949
- ...makeRoundedProps(),
5046
+ ...makeComponentProps(),
4950
5047
  ...makeDensityProps(),
4951
5048
  ...makeDimensionProps(),
4952
5049
  ...makeElevationProps(),
@@ -4954,6 +5051,7 @@ const makeVBtnProps = propsFactory({
4954
5051
  ...makeLoaderProps(),
4955
5052
  ...makeLocationProps(),
4956
5053
  ...makePositionProps(),
5054
+ ...makeRoundedProps(),
4957
5055
  ...makeRouterProps(),
4958
5056
  ...makeSizeProps(),
4959
5057
  ...makeTagProps({
@@ -4963,7 +5061,7 @@ const makeVBtnProps = propsFactory({
4963
5061
  ...makeVariantProps({
4964
5062
  variant: 'elevated'
4965
5063
  })
4966
- }, 'VBtn');
5064
+ }, 'v-btn');
4967
5065
  const VBtn = genericComponent()({
4968
5066
  name: 'VBtn',
4969
5067
  directives: {
@@ -5033,6 +5131,11 @@ const VBtn = genericComponent()({
5033
5131
  if (props.value === undefined) return undefined;
5034
5132
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5035
5133
  });
5134
+ function onClick(e) {
5135
+ if (isDisabled.value) return;
5136
+ link.navigate?.(e);
5137
+ group?.toggle();
5138
+ }
5036
5139
  useSelectLink(link, group?.select);
5037
5140
  useRender(() => {
5038
5141
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5051,15 +5154,11 @@ const VBtn = genericComponent()({
5051
5154
  'v-btn--icon': !!props.icon,
5052
5155
  'v-btn--loading': props.loading,
5053
5156
  'v-btn--stacked': props.stacked
5054
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
5055
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
5157
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5158
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5056
5159
  "disabled": isDisabled.value || undefined,
5057
5160
  "href": link.href.value,
5058
- "onClick": e => {
5059
- if (isDisabled.value) return;
5060
- link.navigate?.(e);
5061
- group?.toggle();
5062
- },
5161
+ "onClick": onClick,
5063
5162
  "value": valueAttr.value
5064
5163
  }, {
5065
5164
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
@@ -5125,29 +5224,29 @@ const VBtn = genericComponent()({
5125
5224
 
5126
5225
  const VAppBarNavIcon = genericComponent()({
5127
5226
  name: 'VAppBarNavIcon',
5128
- props: {
5129
- icon: {
5130
- type: IconValue,
5131
- default: '$menu'
5132
- }
5133
- },
5227
+ props: makeVBtnProps({
5228
+ icon: '$menu',
5229
+ variant: 'text'
5230
+ }),
5134
5231
  setup(props, _ref) {
5135
5232
  let {
5136
5233
  slots
5137
5234
  } = _ref;
5138
- useRender(() => createVNode(VBtn, {
5139
- "class": "v-app-bar-nav-icon",
5140
- "icon": props.icon
5141
- }, slots));
5235
+ useRender(() => createVNode(VBtn, mergeProps(props, {
5236
+ "class": ['v-app-bar-nav-icon']
5237
+ }), slots));
5142
5238
  return {};
5143
5239
  }
5144
5240
  });
5145
5241
 
5146
5242
  const VToolbarItems = genericComponent()({
5147
5243
  name: 'VToolbarItems',
5148
- props: makeVariantProps({
5149
- variant: 'text'
5150
- }),
5244
+ props: {
5245
+ ...makeComponentProps(),
5246
+ ...makeVariantProps({
5247
+ variant: 'text'
5248
+ })
5249
+ },
5151
5250
  setup(props, _ref) {
5152
5251
  let {
5153
5252
  slots
@@ -5160,7 +5259,8 @@ const VToolbarItems = genericComponent()({
5160
5259
  }
5161
5260
  });
5162
5261
  useRender(() => createVNode("div", {
5163
- "class": "v-toolbar-items"
5262
+ "class": ['v-toolbar-items', props.class],
5263
+ "style": props.style
5164
5264
  }, [slots.default?.()]));
5165
5265
  return {};
5166
5266
  }
@@ -5222,6 +5322,7 @@ const VAlert = genericComponent()({
5222
5322
  type: String,
5223
5323
  validator: val => allowedTypes.includes(val)
5224
5324
  },
5325
+ ...makeComponentProps(),
5225
5326
  ...makeDensityProps(),
5226
5327
  ...makeDimensionProps(),
5227
5328
  ...makeElevationProps(),
@@ -5304,8 +5405,8 @@ const VAlert = genericComponent()({
5304
5405
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5305
5406
  }, {
5306
5407
  'v-alert--prominent': props.prominent
5307
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
5308
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
5408
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5409
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5309
5410
  "role": "alert"
5310
5411
  }, {
5311
5412
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5399,6 +5500,7 @@ const VLabel = genericComponent()({
5399
5500
  props: {
5400
5501
  text: String,
5401
5502
  clickable: Boolean,
5503
+ ...makeComponentProps(),
5402
5504
  ...makeThemeProps()
5403
5505
  },
5404
5506
  setup(props, _ref) {
@@ -5408,7 +5510,8 @@ const VLabel = genericComponent()({
5408
5510
  useRender(() => createVNode("label", {
5409
5511
  "class": ['v-label', {
5410
5512
  'v-label--clickable': props.clickable
5411
- }]
5513
+ }, props.class],
5514
+ "style": props.style
5412
5515
  }, [props.text, slots.default?.()]));
5413
5516
  return {};
5414
5517
  }
@@ -5417,7 +5520,8 @@ const VLabel = genericComponent()({
5417
5520
  const VFieldLabel = genericComponent()({
5418
5521
  name: 'VFieldLabel',
5419
5522
  props: {
5420
- floating: Boolean
5523
+ floating: Boolean,
5524
+ ...makeComponentProps()
5421
5525
  },
5422
5526
  setup(props, _ref) {
5423
5527
  let {
@@ -5426,7 +5530,8 @@ const VFieldLabel = genericComponent()({
5426
5530
  useRender(() => createVNode(VLabel, {
5427
5531
  "class": ['v-field-label', {
5428
5532
  'v-field-label--floating': props.floating
5429
- }],
5533
+ }, props.class],
5534
+ "style": props.style,
5430
5535
  "aria-hidden": props.floating || undefined
5431
5536
  }, slots));
5432
5537
  return {};
@@ -5477,6 +5582,7 @@ const makeVFieldProps = propsFactory({
5477
5582
  },
5478
5583
  active: Boolean,
5479
5584
  color: String,
5585
+ baseColor: String,
5480
5586
  dirty: Boolean,
5481
5587
  disabled: Boolean,
5482
5588
  error: Boolean,
@@ -5494,9 +5600,10 @@ const makeVFieldProps = propsFactory({
5494
5600
  'onClick:clear': EventProp(),
5495
5601
  'onClick:appendInner': EventProp(),
5496
5602
  'onClick:prependInner': EventProp(),
5497
- ...makeThemeProps(),
5603
+ ...makeComponentProps(),
5498
5604
  ...makeLoaderProps(),
5499
- ...makeRoundedProps()
5605
+ ...makeRoundedProps(),
5606
+ ...makeThemeProps()
5500
5607
  }, 'v-field');
5501
5608
  const VField = genericComponent()({
5502
5609
  name: 'VField',
@@ -5550,7 +5657,7 @@ const VField = genericComponent()({
5550
5657
  textColorClasses,
5551
5658
  textColorStyles
5552
5659
  } = useTextColor(computed(() => {
5553
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5660
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5554
5661
  }));
5555
5662
  watch(isActive, val => {
5556
5663
  if (hasLabel.value) {
@@ -5627,8 +5734,8 @@ const VField = genericComponent()({
5627
5734
  'v-field--single-line': props.singleLine,
5628
5735
  'v-field--no-label': !label,
5629
5736
  [`v-field--variant-${props.variant}`]: true
5630
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value],
5631
- "style": [backgroundColorStyles.value, textColorStyles.value],
5737
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5738
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5632
5739
  "onClick": onClick
5633
5740
  }, attrs), [createVNode("div", {
5634
5741
  "class": "v-field__overlay"
@@ -5716,7 +5823,7 @@ const VField = genericComponent()({
5716
5823
  });
5717
5824
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5718
5825
  function filterFieldProps(attrs) {
5719
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5826
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5720
5827
  return pick(attrs, keys);
5721
5828
  }
5722
5829
 
@@ -5731,6 +5838,7 @@ const VMessages = genericComponent()({
5731
5838
  type: [Array, String],
5732
5839
  default: () => []
5733
5840
  },
5841
+ ...makeComponentProps(),
5734
5842
  ...makeTransitionProps({
5735
5843
  transition: {
5736
5844
  component: VSlideYTransition,
@@ -5751,8 +5859,8 @@ const VMessages = genericComponent()({
5751
5859
  useRender(() => createVNode(MaybeTransition, {
5752
5860
  "transition": props.transition,
5753
5861
  "tag": "div",
5754
- "class": ['v-messages', textColorClasses.value],
5755
- "style": textColorStyles.value,
5862
+ "class": ['v-messages', textColorClasses.value, props.class],
5863
+ "style": [textColorStyles.value, props.style],
5756
5864
  "role": "alert",
5757
5865
  "aria-live": "polite"
5758
5866
  }, {
@@ -6048,6 +6156,7 @@ const makeVInputProps = propsFactory({
6048
6156
  },
6049
6157
  'onClick:prepend': EventProp(),
6050
6158
  'onClick:append': EventProp(),
6159
+ ...makeComponentProps(),
6051
6160
  ...makeDensityProps(),
6052
6161
  ...makeValidationProps()
6053
6162
  }, 'v-input');
@@ -6115,7 +6224,8 @@ const VInput = genericComponent()({
6115
6224
  const hasMessages = messages.value.length > 0;
6116
6225
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
6117
6226
  return createVNode("div", {
6118
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6227
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6228
+ "style": props.style
6119
6229
  }, [hasPrepend && createVNode("div", {
6120
6230
  "key": "prepend",
6121
6231
  "class": "v-input__prepend"
@@ -6158,6 +6268,7 @@ const VCounter = genericComponent()({
6158
6268
  type: [Number, String],
6159
6269
  default: 0
6160
6270
  },
6271
+ ...makeComponentProps(),
6161
6272
  ...makeTransitionProps({
6162
6273
  transition: {
6163
6274
  component: VSlideYTransition
@@ -6175,7 +6286,8 @@ const VCounter = genericComponent()({
6175
6286
  "transition": props.transition
6176
6287
  }, {
6177
6288
  default: () => [withDirectives(createVNode("div", {
6178
- "class": "v-counter"
6289
+ "class": ['v-counter', props.class],
6290
+ "style": props.style
6179
6291
  }, [slots.default ? slots.default({
6180
6292
  counter: counter.value,
6181
6293
  max: props.max,
@@ -6325,7 +6437,7 @@ const VTextField = genericComponent()({
6325
6437
  const vInputRef = ref();
6326
6438
  const vFieldRef = ref();
6327
6439
  const inputRef = ref();
6328
- const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6440
+ const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6329
6441
  function onFocus() {
6330
6442
  if (inputRef.value !== document.activeElement) {
6331
6443
  inputRef.value?.focus();
@@ -6378,7 +6490,8 @@ const VTextField = genericComponent()({
6378
6490
  'v-text-field--prefixed': props.prefix,
6379
6491
  'v-text-field--suffixed': props.suffix,
6380
6492
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6381
- }]
6493
+ }, props.class],
6494
+ "style": props.style
6382
6495
  }, rootAttrs, inputProps, {
6383
6496
  "focused": isFocused.value
6384
6497
  }), {
@@ -6494,6 +6607,7 @@ const VSelectionControlGroup = genericComponent()({
6494
6607
  type: String,
6495
6608
  default: 'VSelectionControl'
6496
6609
  },
6610
+ ...makeComponentProps(),
6497
6611
  ...makeSelectionControlGroupProps()
6498
6612
  },
6499
6613
  emits: {
@@ -6541,7 +6655,8 @@ const VSelectionControlGroup = genericComponent()({
6541
6655
  useRender(() => createVNode("div", {
6542
6656
  "class": ['v-selection-control-group', {
6543
6657
  'v-selection-control-group--inline': props.inline
6544
- }],
6658
+ }, props.class],
6659
+ "style": props.style,
6545
6660
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6546
6661
  }, [slots.default?.()]));
6547
6662
  return {};
@@ -6555,6 +6670,7 @@ const makeSelectionControlProps = propsFactory({
6555
6670
  trueValue: null,
6556
6671
  falseValue: null,
6557
6672
  value: null,
6673
+ ...makeComponentProps(),
6558
6674
  ...makeSelectionControlGroupProps()
6559
6675
  }, 'v-selection-control');
6560
6676
  function useSelectionControl(props) {
@@ -6669,8 +6785,10 @@ const VSelectionControl = genericComponent()({
6669
6785
  'v-selection-control--focused': isFocused.value,
6670
6786
  'v-selection-control--focus-visible': isFocusVisible.value,
6671
6787
  'v-selection-control--inline': props.inline
6672
- }, densityClasses.value]
6673
- }, rootAttrs), [createVNode("div", {
6788
+ }, densityClasses.value, props.class]
6789
+ }, rootAttrs, {
6790
+ "style": props.style
6791
+ }), [createVNode("div", {
6674
6792
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6675
6793
  "style": textColorStyles.value
6676
6794
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6752,9 +6870,9 @@ const VCheckboxBtn = genericComponent()({
6752
6870
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6753
6871
  "modelValue": model.value,
6754
6872
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6755
- "class": "v-checkbox-btn",
6873
+ "class": ['v-checkbox-btn', props.class],
6874
+ "style": props.style,
6756
6875
  "type": "checkbox",
6757
- "inline": true,
6758
6876
  "falseIcon": falseIcon.value,
6759
6877
  "trueIcon": trueIcon.value,
6760
6878
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -6792,10 +6910,11 @@ const VCheckbox = genericComponent()({
6792
6910
  const [inputProps, _1] = VInput.filterProps(props);
6793
6911
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6794
6912
  return createVNode(VInput, mergeProps({
6795
- "class": "v-checkbox"
6913
+ "class": ['v-checkbox', props.class]
6796
6914
  }, inputAttrs, inputProps, {
6797
6915
  "id": id.value,
6798
- "focused": isFocused.value
6916
+ "focused": isFocused.value,
6917
+ "style": props.style
6799
6918
  }), {
6800
6919
  ...slots,
6801
6920
  default: _ref2 => {
@@ -6826,6 +6945,7 @@ const makeVAvatarProps = propsFactory({
6826
6945
  end: Boolean,
6827
6946
  icon: IconValue,
6828
6947
  image: String,
6948
+ ...makeComponentProps(),
6829
6949
  ...makeDensityProps(),
6830
6950
  ...makeRoundedProps(),
6831
6951
  ...makeSizeProps(),
@@ -6864,8 +6984,8 @@ const VAvatar = genericComponent()({
6864
6984
  "class": ['v-avatar', {
6865
6985
  'v-avatar--start': props.start,
6866
6986
  'v-avatar--end': props.end
6867
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6868
- "style": [colorStyles.value, sizeStyles.value]
6987
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6988
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6869
6989
  }, {
6870
6990
  default: () => [props.image ? createVNode(VImg, {
6871
6991
  "key": "image",
@@ -6893,6 +7013,7 @@ const VChipGroup = genericComponent()({
6893
7013
  type: Function,
6894
7014
  default: deepEqual
6895
7015
  },
7016
+ ...makeComponentProps(),
6896
7017
  ...makeGroupProps({
6897
7018
  selectedClass: 'v-chip--selected'
6898
7019
  }),
@@ -6930,7 +7051,8 @@ const VChipGroup = genericComponent()({
6930
7051
  useRender(() => createVNode(props.tag, {
6931
7052
  "class": ['v-chip-group', {
6932
7053
  'v-chip-group--column': props.column
6933
- }, themeClasses.value]
7054
+ }, themeClasses.value, props.class],
7055
+ "style": props.style
6934
7056
  }, {
6935
7057
  default: () => [slots.default?.({
6936
7058
  isSelected,
@@ -6944,8 +7066,6 @@ const VChipGroup = genericComponent()({
6944
7066
  }
6945
7067
  });
6946
7068
 
6947
- // Types
6948
-
6949
7069
  const VChip = genericComponent()({
6950
7070
  name: 'VChip',
6951
7071
  directives: {
@@ -6990,6 +7110,7 @@ const VChip = genericComponent()({
6990
7110
  onClick: EventProp(),
6991
7111
  onClickOnce: EventProp(),
6992
7112
  ...makeBorderProps(),
7113
+ ...makeComponentProps(),
6993
7114
  ...makeDensityProps(),
6994
7115
  ...makeElevationProps(),
6995
7116
  ...makeGroupItemProps(),
@@ -7082,8 +7203,8 @@ const VChip = genericComponent()({
7082
7203
  'v-chip--link': isClickable.value,
7083
7204
  'v-chip--filter': hasFilter,
7084
7205
  'v-chip--pill': props.pill
7085
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value],
7086
- "style": [hasColor ? colorStyles.value : undefined],
7206
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7207
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
7087
7208
  "disabled": props.disabled || undefined,
7088
7209
  "draggable": props.draggable,
7089
7210
  "href": link.href.value,
@@ -7192,6 +7313,7 @@ const VDivider = genericComponent()({
7192
7313
  length: [Number, String],
7193
7314
  thickness: [Number, String],
7194
7315
  vertical: Boolean,
7316
+ ...makeComponentProps(),
7195
7317
  ...makeThemeProps()
7196
7318
  },
7197
7319
  setup(props, _ref) {
@@ -7220,8 +7342,8 @@ const VDivider = genericComponent()({
7220
7342
  'v-divider': true,
7221
7343
  'v-divider--inset': props.inset,
7222
7344
  'v-divider--vertical': props.vertical
7223
- }, themeClasses.value, textColorClasses.value],
7224
- "style": [dividerStyles.value, textColorStyles.value],
7345
+ }, themeClasses.value, textColorClasses.value, props.class],
7346
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7225
7347
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7226
7348
  "role": `${attrs.role || 'separator'}`
7227
7349
  }, null));
@@ -7705,7 +7827,9 @@ const VListGroupActivator = defineComponent({
7705
7827
  }
7706
7828
  });
7707
7829
  const makeVListGroupProps = propsFactory({
7830
+ /* @deprecated */
7708
7831
  activeColor: String,
7832
+ baseColor: String,
7709
7833
  color: String,
7710
7834
  collapseIcon: {
7711
7835
  type: IconValue,
@@ -7720,6 +7844,7 @@ const makeVListGroupProps = propsFactory({
7720
7844
  fluid: Boolean,
7721
7845
  subgroup: Boolean,
7722
7846
  value: null,
7847
+ ...makeComponentProps(),
7723
7848
  ...makeTagProps()
7724
7849
  }, 'v-list-group');
7725
7850
  const VListGroup = genericComponent()({
@@ -7755,6 +7880,7 @@ const VListGroup = genericComponent()({
7755
7880
  VListItem: {
7756
7881
  active: isOpen.value,
7757
7882
  activeColor: props.activeColor,
7883
+ baseColor: props.baseColor,
7758
7884
  color: props.color,
7759
7885
  prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
7760
7886
  appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
@@ -7768,7 +7894,8 @@ const VListGroup = genericComponent()({
7768
7894
  'v-list-group--fluid': props.fluid,
7769
7895
  'v-list-group--subgroup': props.subgroup,
7770
7896
  'v-list-group--open': isOpen.value
7771
- }]
7897
+ }, props.class],
7898
+ "style": props.style
7772
7899
  }, {
7773
7900
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7774
7901
  "defaults": activatorDefaults.value
@@ -7813,9 +7940,11 @@ const VListItem = genericComponent()({
7813
7940
  default: undefined
7814
7941
  },
7815
7942
  activeClass: String,
7943
+ /* @deprecated */
7816
7944
  activeColor: String,
7817
7945
  appendAvatar: String,
7818
7946
  appendIcon: IconValue,
7947
+ baseColor: String,
7819
7948
  disabled: Boolean,
7820
7949
  lines: String,
7821
7950
  link: {
@@ -7835,6 +7964,7 @@ const VListItem = genericComponent()({
7835
7964
  onClick: EventProp(),
7836
7965
  onClickOnce: EventProp(),
7837
7966
  ...makeBorderProps(),
7967
+ ...makeComponentProps(),
7838
7968
  ...makeDensityProps(),
7839
7969
  ...makeDimensionProps(),
7840
7970
  ...makeElevationProps(),
@@ -7871,8 +8001,9 @@ const VListItem = genericComponent()({
7871
8001
  const isLink = computed(() => props.link !== false && link.isLink.value);
7872
8002
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
7873
8003
  const roundedProps = computed(() => props.rounded || props.nav);
8004
+ const color = computed(() => props.color ?? props.activeColor);
7874
8005
  const variantProps = computed(() => ({
7875
- color: isActive.value ? props.activeColor ?? props.color : props.color,
8006
+ color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
7876
8007
  variant: props.variant
7877
8008
  }));
7878
8009
  watch(() => link.isActive?.value, val => {
@@ -7929,7 +8060,6 @@ const VListItem = genericComponent()({
7929
8060
  }
7930
8061
  useRender(() => {
7931
8062
  const Tag = isLink.value ? 'a' : props.tag;
7932
- const hasColor = !list || isSelected.value || isActive.value;
7933
8063
  const hasTitle = slots.title || props.title;
7934
8064
  const hasSubtitle = slots.subtitle || props.subtitle;
7935
8065
  const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
@@ -7937,6 +8067,9 @@ const VListItem = genericComponent()({
7937
8067
  const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7938
8068
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
7939
8069
  list?.updateHasPrepend(hasPrepend);
8070
+ if (props.activeColor) {
8071
+ deprecate('active-color', ['color', 'base-color']);
8072
+ }
7940
8073
  return withDirectives(createVNode(Tag, {
7941
8074
  "class": ['v-list-item', {
7942
8075
  'v-list-item--active': isActive.value,
@@ -7945,8 +8078,8 @@ const VListItem = genericComponent()({
7945
8078
  'v-list-item--nav': props.nav,
7946
8079
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7947
8080
  [`${props.activeClass}`]: props.activeClass && isActive.value
7948
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
7949
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
8081
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8082
+ "style": [colorStyles.value, dimensionStyles.value, props.style],
7950
8083
  "href": link.href.value,
7951
8084
  "tabindex": isClickable.value ? 0 : undefined,
7952
8085
  "onClick": onClick,
@@ -8039,6 +8172,7 @@ const VListSubheader = genericComponent()({
8039
8172
  inset: Boolean,
8040
8173
  sticky: Boolean,
8041
8174
  title: String,
8175
+ ...makeComponentProps(),
8042
8176
  ...makeTagProps()
8043
8177
  },
8044
8178
  setup(props, _ref) {
@@ -8055,10 +8189,10 @@ const VListSubheader = genericComponent()({
8055
8189
  "class": ['v-list-subheader', {
8056
8190
  'v-list-subheader--inset': props.inset,
8057
8191
  'v-list-subheader--sticky': props.sticky
8058
- }, textColorClasses.value],
8059
- "style": {
8192
+ }, textColorClasses.value, props.class],
8193
+ "style": [{
8060
8194
  textColorStyles
8061
- }
8195
+ }, props.style]
8062
8196
  }, {
8063
8197
  default: () => [hasText && createVNode("div", {
8064
8198
  "class": "v-list-subheader__text"
@@ -8264,6 +8398,8 @@ function useListItems(props) {
8264
8398
  const VList = genericComponent()({
8265
8399
  name: 'VList',
8266
8400
  props: {
8401
+ baseColor: String,
8402
+ /* @deprecated */
8267
8403
  activeColor: String,
8268
8404
  activeClass: String,
8269
8405
  bgColor: String,
@@ -8278,6 +8414,7 @@ const VList = genericComponent()({
8278
8414
  openStrategy: 'list'
8279
8415
  }),
8280
8416
  ...makeBorderProps(),
8417
+ ...makeComponentProps(),
8281
8418
  ...makeDensityProps(),
8282
8419
  ...makeDimensionProps(),
8283
8420
  ...makeElevationProps(),
@@ -8334,16 +8471,19 @@ const VList = genericComponent()({
8334
8471
  } = useNested(props);
8335
8472
  const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
8336
8473
  const activeColor = toRef(props, 'activeColor');
8474
+ const baseColor = toRef(props, 'baseColor');
8337
8475
  const color = toRef(props, 'color');
8338
8476
  createList();
8339
8477
  provideDefaults({
8340
8478
  VListGroup: {
8341
8479
  activeColor,
8480
+ baseColor,
8342
8481
  color
8343
8482
  },
8344
8483
  VListItem: {
8345
8484
  activeClass: toRef(props, 'activeClass'),
8346
8485
  activeColor,
8486
+ baseColor,
8347
8487
  color,
8348
8488
  density: toRef(props, 'density'),
8349
8489
  disabled: toRef(props, 'disabled'),
@@ -8379,27 +8519,8 @@ const VList = genericComponent()({
8379
8519
  e.preventDefault();
8380
8520
  }
8381
8521
  function focus(location) {
8382
- if (!contentRef.value) return;
8383
- const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8384
- const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8385
- const idx = focusable.indexOf(document.activeElement);
8386
- if (!location) {
8387
- if (!contentRef.value.contains(document.activeElement)) {
8388
- focusable[0]?.focus();
8389
- }
8390
- } else if (location === 'first') {
8391
- focusable[0]?.focus();
8392
- } else if (location === 'last') {
8393
- focusable.at(-1)?.focus();
8394
- } else {
8395
- let el;
8396
- let idxx = idx;
8397
- const inc = location === 'next' ? 1 : -1;
8398
- do {
8399
- idxx += inc;
8400
- el = focusable[idxx];
8401
- } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
8402
- if (el) el.focus();else focus(location === 'next' ? 'first' : 'last');
8522
+ if (contentRef.value) {
8523
+ return focusChild(contentRef.value, location);
8403
8524
  }
8404
8525
  }
8405
8526
  useRender(() => {
@@ -8408,8 +8529,8 @@ const VList = genericComponent()({
8408
8529
  "class": ['v-list', {
8409
8530
  'v-list--disabled': props.disabled,
8410
8531
  'v-list--nav': props.nav
8411
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
8412
- "style": [backgroundColorStyles.value, dimensionStyles.value],
8532
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8533
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8413
8534
  "role": "listbox",
8414
8535
  "aria-activedescendant": undefined,
8415
8536
  "onFocusin": onFocusin,
@@ -8437,6 +8558,7 @@ const VListItemAction = genericComponent()({
8437
8558
  props: {
8438
8559
  start: Boolean,
8439
8560
  end: Boolean,
8561
+ ...makeComponentProps(),
8440
8562
  ...makeTagProps()
8441
8563
  },
8442
8564
  setup(props, _ref) {
@@ -8447,7 +8569,8 @@ const VListItemAction = genericComponent()({
8447
8569
  "class": ['v-list-item-action', {
8448
8570
  'v-list-item-action--start': props.start,
8449
8571
  'v-list-item-action--end': props.end
8450
- }]
8572
+ }, props.class],
8573
+ "style": props.style
8451
8574
  }, slots));
8452
8575
  return {};
8453
8576
  }
@@ -8458,6 +8581,7 @@ const VListItemMedia = genericComponent()({
8458
8581
  props: {
8459
8582
  start: Boolean,
8460
8583
  end: Boolean,
8584
+ ...makeComponentProps(),
8461
8585
  ...makeTagProps()
8462
8586
  },
8463
8587
  setup(props, _ref) {
@@ -8469,7 +8593,8 @@ const VListItemMedia = genericComponent()({
8469
8593
  "class": ['v-list-item-media', {
8470
8594
  'v-list-item-media--start': props.start,
8471
8595
  'v-list-item-media--end': props.end
8472
- }]
8596
+ }, props.class],
8597
+ "style": props.style
8473
8598
  }, slots);
8474
8599
  });
8475
8600
  return {};
@@ -9379,14 +9504,14 @@ const parseDisplayOptions = function () {
9379
9504
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
9380
9505
  return mergeDeep(defaultDisplayOptions, options);
9381
9506
  };
9382
- function getClientWidth(isHydrate) {
9383
- return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
9507
+ function getClientWidth(ssr) {
9508
+ return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;
9384
9509
  }
9385
- function getClientHeight(isHydrate) {
9386
- return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9510
+ function getClientHeight(ssr) {
9511
+ return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;
9387
9512
  }
9388
- function getPlatform(isHydrate) {
9389
- const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9513
+ function getPlatform(ssr) {
9514
+ const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';
9390
9515
  function match(regexp) {
9391
9516
  return Boolean(userAgent.match(regexp));
9392
9517
  }
@@ -9710,6 +9835,7 @@ const makeVOverlayProps = propsFactory({
9710
9835
  default: 2000
9711
9836
  },
9712
9837
  ...makeActivatorProps(),
9838
+ ...makeComponentProps(),
9713
9839
  ...makeDimensionProps(),
9714
9840
  ...makeLazyProps(),
9715
9841
  ...makeLocationStrategyProps(),
@@ -9877,10 +10003,10 @@ const VOverlay = genericComponent()({
9877
10003
  'v-overlay--absolute': props.absolute || props.contained,
9878
10004
  'v-overlay--active': isActive.value,
9879
10005
  'v-overlay--contained': props.contained
9880
- }, themeClasses.value, rtlClasses.value],
10006
+ }, themeClasses.value, rtlClasses.value, props.class],
9881
10007
  "style": [stackStyles.value, {
9882
10008
  top: convertToUnit(top.value)
9883
- }],
10009
+ }, props.style],
9884
10010
  "ref": root
9885
10011
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9886
10012
  "color": scrimColor,
@@ -9986,7 +10112,8 @@ const VMenu = genericComponent()({
9986
10112
  const [overlayProps] = VOverlay.filterProps(props);
9987
10113
  return createVNode(VOverlay, mergeProps({
9988
10114
  "ref": overlay,
9989
- "class": ['v-menu']
10115
+ "class": ['v-menu', props.class],
10116
+ "style": props.style
9990
10117
  }, overlayProps, {
9991
10118
  "modelValue": isActive.value,
9992
10119
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10205,7 +10332,8 @@ const VSelect = genericComponent()({
10205
10332
  'v-select--chips': !!props.chips,
10206
10333
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10207
10334
  'v-select--selected': model.value.length
10208
- }],
10335
+ }, props.class],
10336
+ "style": props.style,
10209
10337
  "appendInnerIcon": props.menuIcon,
10210
10338
  "readonly": true,
10211
10339
  "placeholder": placeholder,
@@ -10256,11 +10384,13 @@ const VSelect = genericComponent()({
10256
10384
  let {
10257
10385
  isSelected
10258
10386
  } = _ref2;
10259
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10387
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10260
10388
  "modelValue": isSelected,
10261
10389
  "ripple": false,
10262
10390
  "tabindex": "-1"
10263
- }, null) : undefined;
10391
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10392
+ "icon": item.props.prependIcon
10393
+ }, null)]);
10264
10394
  }
10265
10395
  });
10266
10396
  }), slots['append-item']?.()]
@@ -10273,6 +10403,10 @@ const VSelect = genericComponent()({
10273
10403
  }
10274
10404
  const slotProps = {
10275
10405
  'onClick:close': onChipClose,
10406
+ onMousedown(e) {
10407
+ e.preventDefault();
10408
+ e.stopPropagation();
10409
+ },
10276
10410
  modelValue: true,
10277
10411
  'onUpdate:modelValue': undefined
10278
10412
  };
@@ -10648,7 +10782,8 @@ const VAutocomplete = genericComponent()({
10648
10782
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10649
10783
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10650
10784
  'v-autocomplete--selection-slot': !!slots.selection
10651
- }],
10785
+ }, props.class],
10786
+ "style": props.style,
10652
10787
  "appendInnerIcon": props.menuIcon,
10653
10788
  "readonly": props.readonly,
10654
10789
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10694,11 +10829,13 @@ const VAutocomplete = genericComponent()({
10694
10829
  let {
10695
10830
  isSelected
10696
10831
  } = _ref2;
10697
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10832
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10698
10833
  "modelValue": isSelected,
10699
10834
  "ripple": false,
10700
10835
  "tabindex": "-1"
10701
- }, null) : undefined;
10836
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10837
+ "icon": item.props.prependIcon
10838
+ }, null)]);
10702
10839
  },
10703
10840
  title: () => {
10704
10841
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10713,6 +10850,10 @@ const VAutocomplete = genericComponent()({
10713
10850
  }
10714
10851
  const slotProps = {
10715
10852
  'onClick:close': onChipClose,
10853
+ onMousedown(e) {
10854
+ e.preventDefault();
10855
+ e.stopPropagation();
10856
+ },
10716
10857
  modelValue: true,
10717
10858
  'onUpdate:modelValue': undefined
10718
10859
  };
@@ -10762,8 +10903,6 @@ const VAutocomplete = genericComponent()({
10762
10903
  }
10763
10904
  });
10764
10905
 
10765
- // Types
10766
-
10767
10906
  const VBadge = genericComponent()({
10768
10907
  name: 'VBadge',
10769
10908
  inheritAttrs: false,
@@ -10787,6 +10926,7 @@ const VBadge = genericComponent()({
10787
10926
  offsetX: [Number, String],
10788
10927
  offsetY: [Number, String],
10789
10928
  textColor: String,
10929
+ ...makeComponentProps(),
10790
10930
  ...makeLocationProps({
10791
10931
  location: 'top end'
10792
10932
  }),
@@ -10831,8 +10971,10 @@ const VBadge = genericComponent()({
10831
10971
  'v-badge--dot': props.dot,
10832
10972
  'v-badge--floating': props.floating,
10833
10973
  'v-badge--inline': props.inline
10834
- }]
10835
- }, attrs), {
10974
+ }, props.class]
10975
+ }, attrs, {
10976
+ "style": props.style
10977
+ }), {
10836
10978
  default: () => [createVNode("div", {
10837
10979
  "class": "v-badge__wrapper"
10838
10980
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10859,7 +11001,8 @@ const VBannerActions = genericComponent()({
10859
11001
  name: 'VBannerActions',
10860
11002
  props: {
10861
11003
  color: String,
10862
- density: String
11004
+ density: String,
11005
+ ...makeComponentProps()
10863
11006
  },
10864
11007
  setup(props, _ref) {
10865
11008
  let {
@@ -10873,7 +11016,8 @@ const VBannerActions = genericComponent()({
10873
11016
  }
10874
11017
  });
10875
11018
  useRender(() => createVNode("div", {
10876
- "class": "v-banner-actions"
11019
+ "class": ['v-banner-actions', props.class],
11020
+ "style": props.style
10877
11021
  }, [slots.default?.()]));
10878
11022
  return {};
10879
11023
  }
@@ -10894,6 +11038,7 @@ const VBanner = genericComponent()({
10894
11038
  sticky: Boolean,
10895
11039
  text: String,
10896
11040
  ...makeBorderProps(),
11041
+ ...makeComponentProps(),
10897
11042
  ...makeDensityProps(),
10898
11043
  ...makeDimensionProps(),
10899
11044
  ...makeElevationProps(),
@@ -10951,8 +11096,8 @@ const VBanner = genericComponent()({
10951
11096
  'v-banner--stacked': props.stacked || mobile.value,
10952
11097
  'v-banner--sticky': props.sticky,
10953
11098
  [`v-banner--${props.lines}-line`]: !!props.lines
10954
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
10955
- "style": [dimensionStyles.value, locationStyles.value],
11099
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11100
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10956
11101
  "role": "banner"
10957
11102
  }, {
10958
11103
  default: () => [hasPrepend && createVNode("div", {
@@ -11008,6 +11153,7 @@ const VBottomNavigation = genericComponent()({
11008
11153
  default: true
11009
11154
  },
11010
11155
  ...makeBorderProps(),
11156
+ ...makeComponentProps(),
11011
11157
  ...makeDensityProps(),
11012
11158
  ...makeElevationProps(),
11013
11159
  ...makeRoundedProps(),
@@ -11082,11 +11228,11 @@ const VBottomNavigation = genericComponent()({
11082
11228
  'v-bottom-navigation--active': isActive.value,
11083
11229
  'v-bottom-navigation--grow': props.grow,
11084
11230
  'v-bottom-navigation--shift': props.mode === 'shift'
11085
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11231
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
11086
11232
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
11087
11233
  height: convertToUnit(height.value),
11088
11234
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
11089
- }, ssrBootStyles.value]
11235
+ }, ssrBootStyles.value, props.style]
11090
11236
  }, {
11091
11237
  default: () => [slots.default && createVNode("div", {
11092
11238
  "class": "v-bottom-navigation__content"
@@ -11100,14 +11246,16 @@ const VBottomNavigation = genericComponent()({
11100
11246
  const VBreadcrumbsDivider = genericComponent()({
11101
11247
  name: 'VBreadcrumbsDivider',
11102
11248
  props: {
11103
- divider: [Number, String]
11249
+ divider: [Number, String],
11250
+ ...makeComponentProps()
11104
11251
  },
11105
11252
  setup(props, _ref) {
11106
11253
  let {
11107
11254
  slots
11108
11255
  } = _ref;
11109
11256
  useRender(() => createVNode("li", {
11110
- "class": "v-breadcrumbs-divider"
11257
+ "class": ['v-breadcrumbs-divider', props.class],
11258
+ "style": props.style
11111
11259
  }, [slots?.default?.() ?? props.divider]));
11112
11260
  return {};
11113
11261
  }
@@ -11122,6 +11270,7 @@ const VBreadcrumbsItem = genericComponent()({
11122
11270
  color: String,
11123
11271
  disabled: Boolean,
11124
11272
  title: String,
11273
+ ...makeComponentProps(),
11125
11274
  ...makeRouterProps(),
11126
11275
  ...makeTagProps({
11127
11276
  tag: 'li'
@@ -11147,8 +11296,8 @@ const VBreadcrumbsItem = genericComponent()({
11147
11296
  'v-breadcrumbs-item--disabled': props.disabled,
11148
11297
  'v-breadcrumbs-item--link': link.isLink.value,
11149
11298
  [`${props.activeClass}`]: isActive.value && props.activeClass
11150
- }, textColorClasses.value],
11151
- "style": [textColorStyles.value],
11299
+ }, textColorClasses.value, props.class],
11300
+ "style": [textColorStyles.value, props.style],
11152
11301
  "href": link.href.value,
11153
11302
  "aria-current": isActive.value ? 'page' : undefined,
11154
11303
  "onClick": link.navigate
@@ -11179,6 +11328,7 @@ const VBreadcrumbs = genericComponent()({
11179
11328
  type: Array,
11180
11329
  default: () => []
11181
11330
  },
11331
+ ...makeComponentProps(),
11182
11332
  ...makeDensityProps(),
11183
11333
  ...makeRoundedProps(),
11184
11334
  ...makeTagProps({
@@ -11210,11 +11360,22 @@ const VBreadcrumbs = genericComponent()({
11210
11360
  disabled: toRef(props, 'disabled')
11211
11361
  }
11212
11362
  });
11363
+ const items = computed(() => props.items.map(item => {
11364
+ return typeof item === 'string' ? {
11365
+ item: {
11366
+ title: item
11367
+ },
11368
+ raw: item
11369
+ } : {
11370
+ item,
11371
+ raw: item
11372
+ };
11373
+ }));
11213
11374
  useRender(() => {
11214
11375
  const hasPrepend = !!(slots.prepend || props.icon);
11215
11376
  return createVNode(props.tag, {
11216
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11217
- "style": backgroundColorStyles.value
11377
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11378
+ "style": [backgroundColorStyles.value, props.style]
11218
11379
  }, {
11219
11380
  default: () => [hasPrepend && createVNode("div", {
11220
11381
  "key": "prepend",
@@ -11232,33 +11393,36 @@ const VBreadcrumbs = genericComponent()({
11232
11393
  start: true
11233
11394
  }
11234
11395
  }
11235
- }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11236
- "key": index,
11237
- "disabled": index >= array.length - 1
11238
- }, typeof item === 'string' ? {
11239
- title: item
11240
- } : item), {
11241
- default: slots.title ? () => slots.title?.({
11242
- item,
11243
- index
11244
- }) : undefined
11245
- }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11246
- default: slots.divider ? () => slots.divider?.({
11396
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11397
+ let {
11247
11398
  item,
11248
- index
11249
- }) : undefined
11250
- })])), slots.default?.()]
11399
+ raw
11400
+ } = _ref2;
11401
+ return createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11402
+ "key": item.title,
11403
+ "disabled": index >= array.length - 1
11404
+ }, item), {
11405
+ default: slots.title ? () => slots.title?.({
11406
+ item: raw,
11407
+ index
11408
+ }) : undefined
11409
+ }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11410
+ default: slots.divider ? () => slots.divider?.({
11411
+ item: raw,
11412
+ index
11413
+ }) : undefined
11414
+ })]);
11415
+ }), slots.default?.()]
11251
11416
  });
11252
11417
  });
11253
11418
  return {};
11254
11419
  }
11255
11420
  });
11256
11421
 
11257
- // Types
11258
-
11259
- const VCardActions = defineComponent({
11422
+ const VCardActions = genericComponent()({
11260
11423
  name: 'VCardActions',
11261
- setup(_, _ref) {
11424
+ props: makeComponentProps(),
11425
+ setup(props, _ref) {
11262
11426
  let {
11263
11427
  slots
11264
11428
  } = _ref;
@@ -11268,7 +11432,8 @@ const VCardActions = defineComponent({
11268
11432
  }
11269
11433
  });
11270
11434
  useRender(() => createVNode("div", {
11271
- "class": "v-card-actions"
11435
+ "class": ['v-card-actions', props.class],
11436
+ "style": props.style
11272
11437
  }, [slots.default?.()]));
11273
11438
  return {};
11274
11439
  }
@@ -11278,8 +11443,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11278
11443
 
11279
11444
  const VCardTitle = createSimpleFunctional('v-card-title');
11280
11445
 
11281
- // Types
11282
-
11283
11446
  const VCardItem = genericComponent()({
11284
11447
  name: 'VCardItem',
11285
11448
  props: {
@@ -11289,6 +11452,7 @@ const VCardItem = genericComponent()({
11289
11452
  prependIcon: IconValue,
11290
11453
  subtitle: String,
11291
11454
  title: String,
11455
+ ...makeComponentProps(),
11292
11456
  ...makeDensityProps()
11293
11457
  },
11294
11458
  setup(props, _ref) {
@@ -11303,7 +11467,8 @@ const VCardItem = genericComponent()({
11303
11467
  const hasTitle = !!(props.title || slots.title);
11304
11468
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11305
11469
  return createVNode("div", {
11306
- "class": "v-card-item"
11470
+ "class": ['v-card-item', props.class],
11471
+ "style": props.style
11307
11472
  }, [hasPrepend && createVNode("div", {
11308
11473
  "key": "prepend",
11309
11474
  "class": "v-card-item__prepend"
@@ -11385,8 +11550,8 @@ const VCard = genericComponent()({
11385
11550
  subtitle: String,
11386
11551
  text: String,
11387
11552
  title: String,
11388
- ...makeThemeProps(),
11389
11553
  ...makeBorderProps(),
11554
+ ...makeComponentProps(),
11390
11555
  ...makeDensityProps(),
11391
11556
  ...makeDimensionProps(),
11392
11557
  ...makeElevationProps(),
@@ -11396,6 +11561,7 @@ const VCard = genericComponent()({
11396
11561
  ...makeRoundedProps(),
11397
11562
  ...makeRouterProps(),
11398
11563
  ...makeTagProps(),
11564
+ ...makeThemeProps(),
11399
11565
  ...makeVariantProps({
11400
11566
  variant: 'elevated'
11401
11567
  })
@@ -11456,8 +11622,8 @@ const VCard = genericComponent()({
11456
11622
  'v-card--flat': props.flat,
11457
11623
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11458
11624
  'v-card--link': isClickable.value
11459
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
11460
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
11625
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11626
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11461
11627
  "href": link.href.value,
11462
11628
  "onClick": isClickable.value && link.navigate,
11463
11629
  "tabindex": props.disabled ? -1 : undefined
@@ -11653,6 +11819,7 @@ const makeVWindowProps = propsFactory({
11653
11819
  mandatory: {
11654
11820
  default: 'force'
11655
11821
  },
11822
+ ...makeComponentProps(),
11656
11823
  ...makeTagProps(),
11657
11824
  ...makeThemeProps()
11658
11825
  }, 'v-window');
@@ -11768,7 +11935,8 @@ const VWindow = genericComponent()({
11768
11935
  "ref": rootRef,
11769
11936
  "class": ['v-window', {
11770
11937
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11771
- }, themeClasses.value]
11938
+ }, themeClasses.value, props.class],
11939
+ "style": props.style
11772
11940
  }, {
11773
11941
  default: () => [createVNode("div", {
11774
11942
  "class": "v-window__container",
@@ -11853,10 +12021,10 @@ const VCarousel = genericComponent()({
11853
12021
  "class": ['v-carousel', {
11854
12022
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11855
12023
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11856
- }],
11857
- "style": {
12024
+ }, props.class],
12025
+ "style": [{
11858
12026
  height: convertToUnit(props.height)
11859
- },
12027
+ }, props.style],
11860
12028
  "continuous": true,
11861
12029
  "mandatory": "force",
11862
12030
  "showArrows": props.showArrows
@@ -11922,6 +12090,7 @@ const VWindowItem = genericComponent()({
11922
12090
  type: [Boolean, String],
11923
12091
  default: undefined
11924
12092
  },
12093
+ ...makeComponentProps(),
11925
12094
  ...makeGroupItemProps(),
11926
12095
  ...makeLazyProps()
11927
12096
  },
@@ -12008,7 +12177,8 @@ const VWindowItem = genericComponent()({
12008
12177
  "disabled": !isBooted.value
12009
12178
  }, {
12010
12179
  default: () => [withDirectives(createVNode("div", {
12011
- "class": ['v-window-item', groupItem.selectedClass.value]
12180
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12181
+ "style": props.style
12012
12182
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
12013
12183
  }));
12014
12184
  return {};
@@ -12021,7 +12191,8 @@ const VCarouselItem = genericComponent()({
12021
12191
  name: 'VCarouselItem',
12022
12192
  inheritAttrs: false,
12023
12193
  props: {
12024
- value: null
12194
+ value: null,
12195
+ ...makeComponentProps()
12025
12196
  },
12026
12197
  setup(props, _ref) {
12027
12198
  let {
@@ -12029,7 +12200,8 @@ const VCarouselItem = genericComponent()({
12029
12200
  attrs
12030
12201
  } = _ref;
12031
12202
  useRender(() => createVNode(VWindowItem, {
12032
- "class": "v-carousel-item",
12203
+ "class": ['v-carousel-item', props.class],
12204
+ "style": props.style,
12033
12205
  "value": props.value
12034
12206
  }, {
12035
12207
  default: () => [createVNode(VImg, attrs, slots)]
@@ -12042,6 +12214,7 @@ const VCode = createSimpleFunctional('v-code');
12042
12214
  const makeVSheetProps = propsFactory({
12043
12215
  color: String,
12044
12216
  ...makeBorderProps(),
12217
+ ...makeComponentProps(),
12045
12218
  ...makeDimensionProps(),
12046
12219
  ...makeElevationProps(),
12047
12220
  ...makeLocationProps(),
@@ -12085,8 +12258,8 @@ const VSheet = genericComponent()({
12085
12258
  roundedClasses
12086
12259
  } = useRounded(props);
12087
12260
  useRender(() => createVNode(props.tag, {
12088
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
12089
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
12261
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12262
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
12090
12263
  }, slots));
12091
12264
  return {};
12092
12265
  }
@@ -12112,7 +12285,8 @@ const VColorPickerCanvas = defineComponent({
12112
12285
  width: {
12113
12286
  type: [Number, String],
12114
12287
  default: 300
12115
- }
12288
+ },
12289
+ ...makeComponentProps()
12116
12290
  },
12117
12291
  emits: {
12118
12292
  'update:color': color => true,
@@ -12257,7 +12431,8 @@ const VColorPickerCanvas = defineComponent({
12257
12431
  onMounted(() => updateCanvas());
12258
12432
  useRender(() => createVNode("div", {
12259
12433
  "ref": resizeRef,
12260
- "class": "v-color-picker-canvas",
12434
+ "class": ['v-color-picker-canvas', props.class],
12435
+ "style": props.style,
12261
12436
  "onClick": handleClick,
12262
12437
  "onMousedown": handleMouseDown,
12263
12438
  "onTouchstart": handleMouseDown
@@ -12279,27 +12454,6 @@ const VColorPickerCanvas = defineComponent({
12279
12454
 
12280
12455
  // Types
12281
12456
 
12282
- function has(obj, key) {
12283
- return key.every(k => obj.hasOwnProperty(k));
12284
- }
12285
- function parseColor(color) {
12286
- if (!color) return null;
12287
- let hsva = null;
12288
- if (typeof color === 'string') {
12289
- const hex = parseHex(color);
12290
- hsva = HexToHSV(hex);
12291
- }
12292
- if (typeof color === 'object') {
12293
- if (has(color, ['r', 'g', 'b'])) {
12294
- hsva = RGBtoHSV(color);
12295
- } else if (has(color, ['h', 's', 'l'])) {
12296
- hsva = HSLtoHSV(color);
12297
- } else if (has(color, ['h', 's', 'v'])) {
12298
- hsva = color;
12299
- }
12300
- }
12301
- return hsva;
12302
- }
12303
12457
  function stripAlpha(color, stripAlpha) {
12304
12458
  if (stripAlpha) {
12305
12459
  const {
@@ -12490,7 +12644,8 @@ const VColorPickerEdit = defineComponent({
12490
12644
  type: Array,
12491
12645
  default: () => Object.keys(modes),
12492
12646
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12493
- }
12647
+ },
12648
+ ...makeComponentProps()
12494
12649
  },
12495
12650
  emits: {
12496
12651
  'update:color': color => true,
@@ -12530,7 +12685,8 @@ const VColorPickerEdit = defineComponent({
12530
12685
  });
12531
12686
  });
12532
12687
  useRender(() => createVNode("div", {
12533
- "class": "v-color-picker-edit"
12688
+ "class": ['v-color-picker-edit', props.class],
12689
+ "style": props.style
12534
12690
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12535
12691
  "icon": "$unfold",
12536
12692
  "size": "x-small",
@@ -12849,7 +13005,8 @@ const VSliderThumb = genericComponent()({
12849
13005
  ripple: {
12850
13006
  type: Boolean,
12851
13007
  default: true
12852
- }
13008
+ },
13009
+ ...makeComponentProps()
12853
13010
  },
12854
13011
  emits: {
12855
13012
  'update:modelValue': v => true
@@ -12927,11 +13084,11 @@ const VSliderThumb = genericComponent()({
12927
13084
  "class": ['v-slider-thumb', {
12928
13085
  'v-slider-thumb--focused': props.focused,
12929
13086
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12930
- }],
12931
- "style": {
13087
+ }, props.class],
13088
+ "style": [{
12932
13089
  '--v-slider-thumb-position': positionPercentage,
12933
13090
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12934
- },
13091
+ }, props.style],
12935
13092
  "role": "slider",
12936
13093
  "tabindex": disabled.value ? -1 : 0,
12937
13094
  "aria-valuemin": props.min,
@@ -12977,7 +13134,8 @@ const VSliderTrack = genericComponent()({
12977
13134
  stop: {
12978
13135
  type: Number,
12979
13136
  required: true
12980
- }
13137
+ },
13138
+ ...makeComponentProps()
12981
13139
  },
12982
13140
  emits: {},
12983
13141
  setup(props, _ref) {
@@ -13052,12 +13210,12 @@ const VSliderTrack = genericComponent()({
13052
13210
  });
13053
13211
  useRender(() => {
13054
13212
  return createVNode("div", {
13055
- "class": ['v-slider-track', roundedClasses.value],
13056
- "style": {
13213
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13214
+ "style": [{
13057
13215
  '--v-slider-track-size': convertToUnit(trackSize.value),
13058
13216
  '--v-slider-tick-size': convertToUnit(tickSize.value),
13059
13217
  direction: !vertical.value ? horizontalDirection.value : undefined
13060
- }
13218
+ }, props.style]
13061
13219
  }, [createVNode("div", {
13062
13220
  "class": ['v-slider-track__background', trackColorClasses.value, {
13063
13221
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -13160,7 +13318,8 @@ const VSlider = genericComponent()({
13160
13318
  'v-slider--focused': isFocused.value,
13161
13319
  'v-slider--pressed': mousePressed.value,
13162
13320
  'v-slider--disabled': props.disabled
13163
- }]
13321
+ }, props.class],
13322
+ "style": props.style
13164
13323
  }, inputProps, {
13165
13324
  "focused": isFocused.value
13166
13325
  }), {
@@ -13223,7 +13382,8 @@ const VColorPickerPreview = defineComponent({
13223
13382
  type: Object
13224
13383
  },
13225
13384
  disabled: Boolean,
13226
- hideAlpha: Boolean
13385
+ hideAlpha: Boolean,
13386
+ ...makeComponentProps()
13227
13387
  },
13228
13388
  emits: {
13229
13389
  'update:color': color => true
@@ -13235,7 +13395,8 @@ const VColorPickerPreview = defineComponent({
13235
13395
  useRender(() => createVNode("div", {
13236
13396
  "class": ['v-color-picker-preview', {
13237
13397
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13238
- }]
13398
+ }, props.class],
13399
+ "style": props.style
13239
13400
  }, [createVNode("div", {
13240
13401
  "class": "v-color-picker-preview__dot"
13241
13402
  }, [createVNode("div", {
@@ -13616,7 +13777,8 @@ const VColorPickerSwatches = defineComponent({
13616
13777
  },
13617
13778
  disabled: Boolean,
13618
13779
  color: Object,
13619
- maxHeight: [Number, String]
13780
+ maxHeight: [Number, String],
13781
+ ...makeComponentProps()
13620
13782
  },
13621
13783
  emits: {
13622
13784
  'update:color': color => true
@@ -13626,20 +13788,22 @@ const VColorPickerSwatches = defineComponent({
13626
13788
  emit
13627
13789
  } = _ref;
13628
13790
  useRender(() => createVNode("div", {
13629
- "class": "v-color-picker-swatches",
13630
- "style": {
13791
+ "class": ['v-color-picker-swatches', props.class],
13792
+ "style": [{
13631
13793
  maxHeight: convertToUnit(props.maxHeight)
13632
- }
13794
+ }, props.style]
13633
13795
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13634
13796
  "class": "v-color-picker-swatches__swatch"
13635
13797
  }, [swatch.map(color => {
13636
- const hsva = parseColor(color);
13798
+ const rgba = parseColor(color);
13799
+ const hsva = RGBtoHSV(rgba);
13800
+ const background = RGBtoCSS(rgba);
13637
13801
  return createVNode("div", {
13638
13802
  "class": "v-color-picker-swatches__color",
13639
13803
  "onClick": () => hsva && emit('update:color', hsva)
13640
13804
  }, [createVNode("div", {
13641
13805
  "style": {
13642
- background: color
13806
+ background
13643
13807
  }
13644
13808
  }, [props.color && deepEqual(props.color, hsva) ? createVNode(VIcon, {
13645
13809
  "size": "x-small",
@@ -13699,8 +13863,13 @@ const VColorPicker = defineComponent({
13699
13863
  const mode = useProxiedModel(props, 'mode');
13700
13864
  const lastPickedColor = ref(null);
13701
13865
  const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
13702
- let c = parseColor(v);
13703
- if (!c) return null;
13866
+ let c;
13867
+ try {
13868
+ c = RGBtoHSV(parseColor(v));
13869
+ } catch (err) {
13870
+ consoleWarn(err);
13871
+ return null;
13872
+ }
13704
13873
  if (lastPickedColor.value) {
13705
13874
  c = {
13706
13875
  ...c,
@@ -13733,13 +13902,13 @@ const VColorPicker = defineComponent({
13733
13902
  "rounded": props.rounded,
13734
13903
  "elevation": props.elevation,
13735
13904
  "theme": props.theme,
13736
- "class": ['v-color-picker'],
13737
- "style": {
13905
+ "class": ['v-color-picker', props.class],
13906
+ "style": [{
13738
13907
  '--v-color-picker-color-hsv': HSVtoCSS({
13739
13908
  ...(currentColor.value ?? nullColor),
13740
13909
  a: 1
13741
13910
  })
13742
- }
13911
+ }, props.style]
13743
13912
  }, sheetProps, {
13744
13913
  "maxWidth": props.width
13745
13914
  }), {
@@ -14050,7 +14219,8 @@ const VCombobox = genericComponent()({
14050
14219
  'v-combobox--chips': !!props.chips,
14051
14220
  'v-combobox--selecting-index': selectionIndex.value > -1,
14052
14221
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
14053
- }],
14222
+ }, props.class],
14223
+ "style": props.style,
14054
14224
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
14055
14225
  "readonly": props.readonly,
14056
14226
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14096,11 +14266,13 @@ const VCombobox = genericComponent()({
14096
14266
  let {
14097
14267
  isSelected
14098
14268
  } = _ref2;
14099
- return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14269
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14100
14270
  "modelValue": isSelected,
14101
14271
  "ripple": false,
14102
14272
  "tabindex": "-1"
14103
- }, null) : undefined;
14273
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14274
+ "icon": item.props.prependIcon
14275
+ }, null)]);
14104
14276
  },
14105
14277
  title: () => {
14106
14278
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14115,6 +14287,10 @@ const VCombobox = genericComponent()({
14115
14287
  }
14116
14288
  const slotProps = {
14117
14289
  'onClick:close': onChipClose,
14290
+ onMousedown(e) {
14291
+ e.preventDefault();
14292
+ e.stopPropagation();
14293
+ },
14118
14294
  modelValue: true,
14119
14295
  'onUpdate:modelValue': undefined
14120
14296
  };
@@ -14207,7 +14383,7 @@ const VDialog = genericComponent()({
14207
14383
  ![document, overlay.value.contentEl].includes(after) &&
14208
14384
  // It isn't inside the dialog body
14209
14385
  !overlay.value.contentEl.contains(after)) {
14210
- 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"]'));
14386
+ const focusable = focusableChildren(overlay.value.contentEl);
14211
14387
  if (!focusable.length) return;
14212
14388
  const firstElement = focusable[0];
14213
14389
  const lastElement = focusable[focusable.length - 1];
@@ -14248,7 +14424,8 @@ const VDialog = genericComponent()({
14248
14424
  "class": ['v-dialog', {
14249
14425
  'v-dialog--fullscreen': props.fullscreen,
14250
14426
  'v-dialog--scrollable': props.scrollable
14251
- }]
14427
+ }, props.class],
14428
+ "style": props.style
14252
14429
  }, overlayProps, {
14253
14430
  "modelValue": isActive.value,
14254
14431
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14287,6 +14464,7 @@ const VExpansionPanels = genericComponent()({
14287
14464
  validator: v => allowedVariants.includes(v)
14288
14465
  },
14289
14466
  readonly: Boolean,
14467
+ ...makeComponentProps(),
14290
14468
  ...makeGroupProps(),
14291
14469
  ...makeTagProps(),
14292
14470
  ...makeThemeProps()
@@ -14312,7 +14490,8 @@ const VExpansionPanels = genericComponent()({
14312
14490
  }
14313
14491
  });
14314
14492
  useRender(() => createVNode(props.tag, {
14315
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14493
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14494
+ "style": props.style
14316
14495
  }, slots));
14317
14496
  return {};
14318
14497
  }
@@ -14341,6 +14520,7 @@ const VExpansionPanelTitle = genericComponent()({
14341
14520
  Ripple
14342
14521
  },
14343
14522
  props: {
14523
+ ...makeComponentProps(),
14344
14524
  ...makeVExpansionPanelTitleProps()
14345
14525
  },
14346
14526
  setup(props, _ref) {
@@ -14363,8 +14543,8 @@ const VExpansionPanelTitle = genericComponent()({
14363
14543
  useRender(() => withDirectives(createVNode("button", {
14364
14544
  "class": ['v-expansion-panel-title', {
14365
14545
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14366
- }, backgroundColorClasses.value],
14367
- "style": backgroundColorStyles.value,
14546
+ }, backgroundColorClasses.value, props.class],
14547
+ "style": [backgroundColorStyles.value, props.style],
14368
14548
  "type": "button",
14369
14549
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14370
14550
  "disabled": expansionPanel.disabled.value,
@@ -14384,6 +14564,7 @@ const VExpansionPanelTitle = genericComponent()({
14384
14564
  const VExpansionPanelText = genericComponent()({
14385
14565
  name: 'VExpansionPanelText',
14386
14566
  props: {
14567
+ ...makeComponentProps(),
14387
14568
  ...makeLazyProps()
14388
14569
  },
14389
14570
  setup(props, _ref) {
@@ -14400,7 +14581,8 @@ const VExpansionPanelText = genericComponent()({
14400
14581
  "onAfterLeave": onAfterLeave
14401
14582
  }, {
14402
14583
  default: () => [withDirectives(createVNode("div", {
14403
- "class": "v-expansion-panel-text"
14584
+ "class": ['v-expansion-panel-text', props.class],
14585
+ "style": props.style
14404
14586
  }, [slots.default && hasContent.value && createVNode("div", {
14405
14587
  "class": "v-expansion-panel-text__wrapper"
14406
14588
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14415,6 +14597,7 @@ const VExpansionPanel = genericComponent()({
14415
14597
  title: String,
14416
14598
  text: String,
14417
14599
  bgColor: String,
14600
+ ...makeComponentProps(),
14418
14601
  ...makeElevationProps(),
14419
14602
  ...makeGroupItemProps(),
14420
14603
  ...makeLazyProps(),
@@ -14463,8 +14646,8 @@ const VExpansionPanel = genericComponent()({
14463
14646
  'v-expansion-panel--before-active': isBeforeSelected.value,
14464
14647
  'v-expansion-panel--after-active': isAfterSelected.value,
14465
14648
  'v-expansion-panel--disabled': isDisabled.value
14466
- }, roundedClasses.value, backgroundColorClasses.value],
14467
- "style": backgroundColorStyles.value,
14649
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14650
+ "style": [backgroundColorStyles.value, props.style],
14468
14651
  "aria-expanded": groupItem.isSelected.value
14469
14652
  }, {
14470
14653
  default: () => [createVNode("div", {
@@ -14571,6 +14754,7 @@ const VFileInput = genericComponent()({
14571
14754
  const vInputRef = ref();
14572
14755
  const vFieldRef = ref();
14573
14756
  const inputRef = ref();
14757
+ const isActive = computed(() => isFocused.value || props.active);
14574
14758
  function onFocus() {
14575
14759
  if (inputRef.value !== document.activeElement) {
14576
14760
  inputRef.value?.focus();
@@ -14614,7 +14798,8 @@ const VFileInput = genericComponent()({
14614
14798
  "ref": vInputRef,
14615
14799
  "modelValue": model.value,
14616
14800
  "onUpdate:modelValue": $event => model.value = $event,
14617
- "class": "v-file-input",
14801
+ "class": ['v-file-input', props.class],
14802
+ "style": props.style,
14618
14803
  "onClick:prepend": onClickPrepend
14619
14804
  }, rootAttrs, inputProps, {
14620
14805
  "focused": isFocused.value
@@ -14638,7 +14823,7 @@ const VFileInput = genericComponent()({
14638
14823
  "onClick:appendInner": props['onClick:appendInner']
14639
14824
  }, fieldProps, {
14640
14825
  "id": id.value,
14641
- "active": isDirty.value || isFocused.value,
14826
+ "active": isActive.value || isDirty.value,
14642
14827
  "dirty": isDirty.value,
14643
14828
  "disabled": isDisabled.value,
14644
14829
  "focused": isFocused.value,
@@ -14706,6 +14891,7 @@ const VFooter = genericComponent()({
14706
14891
  default: 'auto'
14707
14892
  },
14708
14893
  ...makeBorderProps(),
14894
+ ...makeComponentProps(),
14709
14895
  ...makeElevationProps(),
14710
14896
  ...makeLayoutItemProps(),
14711
14897
  ...makeRoundedProps(),
@@ -14755,8 +14941,8 @@ const VFooter = genericComponent()({
14755
14941
  });
14756
14942
  useRender(() => createVNode(props.tag, {
14757
14943
  "ref": resizeRef,
14758
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14759
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14944
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14945
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14760
14946
  }, slots));
14761
14947
  return {};
14762
14948
  }
@@ -14767,6 +14953,7 @@ const VFooter = genericComponent()({
14767
14953
  const VForm = genericComponent()({
14768
14954
  name: 'VForm',
14769
14955
  props: {
14956
+ ...makeComponentProps(),
14770
14957
  ...makeFormProps()
14771
14958
  },
14772
14959
  emits: {
@@ -14805,7 +14992,8 @@ const VForm = genericComponent()({
14805
14992
  }
14806
14993
  useRender(() => createVNode("form", {
14807
14994
  "ref": formRef,
14808
- "class": "v-form",
14995
+ "class": ['v-form', props.class],
14996
+ "style": props.style,
14809
14997
  "novalidate": true,
14810
14998
  "onReset": onReset,
14811
14999
  "onSubmit": onSubmit
@@ -14821,6 +15009,7 @@ const VContainer = genericComponent()({
14821
15009
  type: Boolean,
14822
15010
  default: false
14823
15011
  },
15012
+ ...makeComponentProps(),
14824
15013
  ...makeTagProps()
14825
15014
  },
14826
15015
  setup(props, _ref) {
@@ -14830,7 +15019,8 @@ const VContainer = genericComponent()({
14830
15019
  useRender(() => createVNode(props.tag, {
14831
15020
  "class": ['v-container', {
14832
15021
  'v-container--fluid': props.fluid
14833
- }]
15022
+ }, props.class],
15023
+ "style": props.style
14834
15024
  }, slots));
14835
15025
  return {};
14836
15026
  }
@@ -14921,6 +15111,7 @@ const VCol = genericComponent()({
14921
15111
  default: null,
14922
15112
  validator: str => ALIGN_SELF_VALUES.includes(str)
14923
15113
  },
15114
+ ...makeComponentProps(),
14924
15115
  ...makeTagProps()
14925
15116
  },
14926
15117
  setup(props, _ref) {
@@ -14951,7 +15142,8 @@ const VCol = genericComponent()({
14951
15142
  return classList;
14952
15143
  });
14953
15144
  return () => h(props.tag, {
14954
- class: classes.value
15145
+ class: [classes.value, props.class],
15146
+ style: props.style
14955
15147
  }, slots.default?.());
14956
15148
  }
14957
15149
  });
@@ -15037,6 +15229,7 @@ const VRow = genericComponent()({
15037
15229
  validator: alignContentValidator
15038
15230
  },
15039
15231
  ...alignContentProps,
15232
+ ...makeComponentProps(),
15040
15233
  ...makeTagProps()
15041
15234
  },
15042
15235
  setup(props, _ref) {
@@ -15065,7 +15258,8 @@ const VRow = genericComponent()({
15065
15258
  return classList;
15066
15259
  });
15067
15260
  return () => h(props.tag, {
15068
- class: ['v-row', classes.value]
15261
+ class: ['v-row', classes.value, props.class],
15262
+ style: props.style
15069
15263
  }, slots.default?.());
15070
15264
  }
15071
15265
  });
@@ -15109,6 +15303,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
15109
15303
  const VItemGroup = genericComponent()({
15110
15304
  name: 'VItemGroup',
15111
15305
  props: {
15306
+ ...makeComponentProps(),
15112
15307
  ...makeGroupProps({
15113
15308
  selectedClass: 'v-item--selected'
15114
15309
  }),
@@ -15133,7 +15328,8 @@ const VItemGroup = genericComponent()({
15133
15328
  selected
15134
15329
  } = useGroup(props, VItemGroupSymbol);
15135
15330
  return () => createVNode(props.tag, {
15136
- "class": ['v-item-group', themeClasses.value]
15331
+ "class": ['v-item-group', themeClasses.value, props.class],
15332
+ "style": props.style
15137
15333
  }, {
15138
15334
  default: () => [slots.default?.({
15139
15335
  isSelected,
@@ -15183,7 +15379,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15183
15379
 
15184
15380
  const VLayout = genericComponent()({
15185
15381
  name: 'VLayout',
15186
- props: makeLayoutProps(),
15382
+ props: {
15383
+ ...makeComponentProps(),
15384
+ ...makeLayoutProps()
15385
+ },
15187
15386
  setup(props, _ref) {
15188
15387
  let {
15189
15388
  slots
@@ -15197,8 +15396,8 @@ const VLayout = genericComponent()({
15197
15396
  } = createLayout(props);
15198
15397
  useRender(() => createVNode("div", {
15199
15398
  "ref": layoutRef,
15200
- "class": layoutClasses.value,
15201
- "style": layoutStyles.value
15399
+ "class": [layoutClasses.value, props.class],
15400
+ "style": [layoutStyles.value, props.style]
15202
15401
  }, [slots.default?.()]));
15203
15402
  return {
15204
15403
  getLayoutItem,
@@ -15221,6 +15420,7 @@ const VLayoutItem = genericComponent()({
15221
15420
  default: 300
15222
15421
  },
15223
15422
  modelValue: Boolean,
15423
+ ...makeComponentProps(),
15224
15424
  ...makeLayoutItemProps()
15225
15425
  },
15226
15426
  setup(props, _ref) {
@@ -15239,8 +15439,8 @@ const VLayoutItem = genericComponent()({
15239
15439
  absolute: toRef(props, 'absolute')
15240
15440
  });
15241
15441
  return () => createVNode("div", {
15242
- "class": ['v-layout-item'],
15243
- "style": layoutItemStyles.value
15442
+ "class": ['v-layout-item', props.class],
15443
+ "style": [layoutItemStyles.value, props.style]
15244
15444
  }, [slots.default?.()]);
15245
15445
  }
15246
15446
  });
@@ -15264,6 +15464,7 @@ const VLazy = genericComponent()({
15264
15464
  threshold: undefined
15265
15465
  })
15266
15466
  },
15467
+ ...makeComponentProps(),
15267
15468
  ...makeDimensionProps(),
15268
15469
  ...makeTagProps(),
15269
15470
  ...makeTransitionProps({
@@ -15286,8 +15487,8 @@ const VLazy = genericComponent()({
15286
15487
  isActive.value = isIntersecting;
15287
15488
  }
15288
15489
  useRender(() => withDirectives(createVNode(props.tag, {
15289
- "class": "v-lazy",
15290
- "style": dimensionStyles.value
15490
+ "class": ['v-lazy', props.class],
15491
+ "style": [dimensionStyles.value, props.style]
15291
15492
  }, {
15292
15493
  default: () => [isActive.value && createVNode(MaybeTransition, {
15293
15494
  "transition": props.transition,
@@ -15312,7 +15513,8 @@ const VLocaleProvider = genericComponent()({
15312
15513
  rtl: {
15313
15514
  type: Boolean,
15314
15515
  default: undefined
15315
- }
15516
+ },
15517
+ ...makeComponentProps()
15316
15518
  },
15317
15519
  setup(props, _ref) {
15318
15520
  let {
@@ -15322,7 +15524,8 @@ const VLocaleProvider = genericComponent()({
15322
15524
  rtlClasses
15323
15525
  } = provideLocale(props);
15324
15526
  useRender(() => createVNode("div", {
15325
- "class": ['v-locale-provider', rtlClasses.value]
15527
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15528
+ "style": props.style
15326
15529
  }, [slots.default?.()]));
15327
15530
  return {};
15328
15531
  }
@@ -15332,6 +15535,7 @@ const VMain = genericComponent()({
15332
15535
  name: 'VMain',
15333
15536
  props: {
15334
15537
  scrollable: Boolean,
15538
+ ...makeComponentProps(),
15335
15539
  ...makeTagProps({
15336
15540
  tag: 'main'
15337
15541
  })
@@ -15349,8 +15553,8 @@ const VMain = genericComponent()({
15349
15553
  useRender(() => createVNode(props.tag, {
15350
15554
  "class": ['v-main', {
15351
15555
  'v-main--scrollable': props.scrollable
15352
- }],
15353
- "style": [mainStyles.value, ssrBootStyles.value]
15556
+ }, props.class],
15557
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15354
15558
  }, {
15355
15559
  default: () => [props.scrollable ? createVNode("div", {
15356
15560
  "class": "v-main__scroller"
@@ -15360,525 +15564,99 @@ const VMain = genericComponent()({
15360
15564
  }
15361
15565
  });
15362
15566
 
15363
- // Utilities
15364
-
15365
- // Types
15366
-
15367
- function getWeekArray(date) {
15368
- let currentWeek = [];
15369
- const weeks = [];
15370
- const firstDayOfMonth = startOfMonth(date);
15371
- const lastDayOfMonth = endOfMonth(date);
15372
- for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
15373
- currentWeek.push(null);
15567
+ function useSticky(_ref) {
15568
+ let {
15569
+ rootEl,
15570
+ isSticky,
15571
+ layoutItemStyles
15572
+ } = _ref;
15573
+ const isStuck = ref(false);
15574
+ const stuckPosition = ref(0);
15575
+ const stickyStyles = computed(() => {
15576
+ const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15577
+ return [isSticky.value ? {
15578
+ top: 'auto',
15579
+ bottom: 'auto',
15580
+ height: undefined
15581
+ } : undefined, isStuck.value ? {
15582
+ [side]: convertToUnit(stuckPosition.value)
15583
+ } : {
15584
+ top: layoutItemStyles.value.top
15585
+ }];
15586
+ });
15587
+ onMounted(() => {
15588
+ watch(isSticky, val => {
15589
+ if (val) {
15590
+ window.addEventListener('scroll', onScroll, {
15591
+ passive: true
15592
+ });
15593
+ } else {
15594
+ window.removeEventListener('scroll', onScroll);
15595
+ }
15596
+ }, {
15597
+ immediate: true
15598
+ });
15599
+ });
15600
+ onBeforeUnmount(() => {
15601
+ document.removeEventListener('scroll', onScroll);
15602
+ });
15603
+ let lastScrollTop = 0;
15604
+ function onScroll() {
15605
+ const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15606
+ const rect = rootEl.value.getBoundingClientRect();
15607
+ const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15608
+ const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15609
+ const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15610
+ if (rect.height < window.innerHeight - layoutTop) {
15611
+ isStuck.value = 'top';
15612
+ stuckPosition.value = layoutTop;
15613
+ } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15614
+ stuckPosition.value = window.scrollY + rect.top;
15615
+ isStuck.value = true;
15616
+ } else if (direction === 'down' && bottom <= 0) {
15617
+ stuckPosition.value = 0;
15618
+ isStuck.value = 'bottom';
15619
+ } else if (direction === 'up' && top <= 0) {
15620
+ stuckPosition.value = rect.top + top;
15621
+ isStuck.value = 'top';
15622
+ }
15623
+ lastScrollTop = window.scrollY;
15374
15624
  }
15375
- for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
15376
- const day = new Date(date.getFullYear(), date.getMonth(), i);
15625
+ return {
15626
+ isStuck,
15627
+ stickyStyles
15628
+ };
15629
+ }
15377
15630
 
15378
- // Add the day to the current week
15379
- currentWeek.push(day);
15631
+ const HORIZON = 100; // ms
15632
+ const HISTORY = 20; // number of samples to keep
15380
15633
 
15381
- // If the current week has 7 days, add it to the weeks array and start a new week
15382
- if (currentWeek.length === 7) {
15383
- weeks.push(currentWeek);
15384
- currentWeek = [];
15385
- }
15634
+ /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15635
+ function kineticEnergyToVelocity(work) {
15636
+ const sqrt2 = 1.41421356237;
15637
+ return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15638
+ }
15639
+
15640
+ /**
15641
+ * Returns pointer velocity in px/s
15642
+ */
15643
+ function calculateImpulseVelocity(samples) {
15644
+ // The input should be in reversed time order (most recent sample at index i=0)
15645
+ if (samples.length < 2) {
15646
+ // if 0 or 1 points, velocity is zero
15647
+ return 0;
15386
15648
  }
15387
- for (let i = currentWeek.length; i < 7; i++) {
15388
- currentWeek.push(null);
15389
- }
15390
- weeks.push(currentWeek);
15391
- return weeks;
15392
- }
15393
- function startOfMonth(date) {
15394
- return new Date(date.getFullYear(), date.getMonth(), 1);
15395
- }
15396
- function endOfMonth(date) {
15397
- return new Date(date.getFullYear(), date.getMonth() + 1, 0);
15398
- }
15399
- function date(value) {
15400
- if (value == null) return null;
15401
- if (value instanceof Date) return value;
15402
- if (typeof value === 'string') {
15403
- const parsed = Date.parse(value);
15404
- if (!isNaN(parsed)) return new Date(parsed);
15405
- }
15406
- return null;
15407
- }
15408
- const firstDay = {
15409
- '001': 1,
15410
- AD: 1,
15411
- AE: 6,
15412
- AF: 6,
15413
- AG: 0,
15414
- AI: 1,
15415
- AL: 1,
15416
- AM: 1,
15417
- AN: 1,
15418
- AR: 1,
15419
- AS: 0,
15420
- AT: 1,
15421
- AU: 0,
15422
- AX: 1,
15423
- AZ: 1,
15424
- BA: 1,
15425
- BD: 0,
15426
- BE: 1,
15427
- BG: 1,
15428
- BH: 6,
15429
- BM: 1,
15430
- BN: 1,
15431
- BR: 0,
15432
- BS: 0,
15433
- BT: 0,
15434
- BW: 0,
15435
- BY: 1,
15436
- BZ: 0,
15437
- CA: 0,
15438
- CH: 1,
15439
- CL: 1,
15440
- CM: 1,
15441
- CN: 0,
15442
- CO: 0,
15443
- CR: 1,
15444
- CY: 1,
15445
- CZ: 1,
15446
- DE: 1,
15447
- DJ: 6,
15448
- DK: 1,
15449
- DM: 0,
15450
- DO: 0,
15451
- DZ: 6,
15452
- EC: 1,
15453
- EE: 1,
15454
- EG: 6,
15455
- ES: 1,
15456
- ET: 0,
15457
- FI: 1,
15458
- FJ: 1,
15459
- FO: 1,
15460
- FR: 1,
15461
- GB: 1,
15462
- 'GB-alt-variant': 0,
15463
- GE: 1,
15464
- GF: 1,
15465
- GP: 1,
15466
- GR: 1,
15467
- GT: 0,
15468
- GU: 0,
15469
- HK: 0,
15470
- HN: 0,
15471
- HR: 1,
15472
- HU: 1,
15473
- ID: 0,
15474
- IE: 1,
15475
- IL: 0,
15476
- IN: 0,
15477
- IQ: 6,
15478
- IR: 6,
15479
- IS: 1,
15480
- IT: 1,
15481
- JM: 0,
15482
- JO: 6,
15483
- JP: 0,
15484
- KE: 0,
15485
- KG: 1,
15486
- KH: 0,
15487
- KR: 0,
15488
- KW: 6,
15489
- KZ: 1,
15490
- LA: 0,
15491
- LB: 1,
15492
- LI: 1,
15493
- LK: 1,
15494
- LT: 1,
15495
- LU: 1,
15496
- LV: 1,
15497
- LY: 6,
15498
- MC: 1,
15499
- MD: 1,
15500
- ME: 1,
15501
- MH: 0,
15502
- MK: 1,
15503
- MM: 0,
15504
- MN: 1,
15505
- MO: 0,
15506
- MQ: 1,
15507
- MT: 0,
15508
- MV: 5,
15509
- MX: 0,
15510
- MY: 1,
15511
- MZ: 0,
15512
- NI: 0,
15513
- NL: 1,
15514
- NO: 1,
15515
- NP: 0,
15516
- NZ: 1,
15517
- OM: 6,
15518
- PA: 0,
15519
- PE: 0,
15520
- PH: 0,
15521
- PK: 0,
15522
- PL: 1,
15523
- PR: 0,
15524
- PT: 0,
15525
- PY: 0,
15526
- QA: 6,
15527
- RE: 1,
15528
- RO: 1,
15529
- RS: 1,
15530
- RU: 1,
15531
- SA: 0,
15532
- SD: 6,
15533
- SE: 1,
15534
- SG: 0,
15535
- SI: 1,
15536
- SK: 1,
15537
- SM: 1,
15538
- SV: 0,
15539
- SY: 6,
15540
- TH: 0,
15541
- TJ: 1,
15542
- TM: 1,
15543
- TR: 1,
15544
- TT: 0,
15545
- TW: 0,
15546
- UA: 1,
15547
- UM: 0,
15548
- US: 0,
15549
- UY: 1,
15550
- UZ: 1,
15551
- VA: 1,
15552
- VE: 0,
15553
- VI: 0,
15554
- VN: 1,
15555
- WS: 0,
15556
- XK: 1,
15557
- YE: 0,
15558
- ZA: 0,
15559
- ZW: 0
15560
- };
15561
- const sundayJanuarySecond2000 = new Date(2000, 0, 2);
15562
- function getWeekdays(locale) {
15563
- const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
15564
- return createRange(7).map(i => {
15565
- const weekday = new Date(sundayJanuarySecond2000);
15566
- weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
15567
- return new Intl.DateTimeFormat(locale, {
15568
- weekday: 'long'
15569
- }).format(weekday);
15570
- });
15571
- }
15572
- function format(value, formatString, locale) {
15573
- const date = new Date(value);
15574
- let options = {};
15575
- switch (formatString) {
15576
- case 'fullDateWithWeekday':
15577
- options = {
15578
- weekday: 'long',
15579
- day: 'numeric',
15580
- month: 'long',
15581
- year: 'numeric'
15582
- };
15583
- break;
15584
- case 'normalDateWithWeekday':
15585
- options = {
15586
- weekday: 'short',
15587
- day: 'numeric',
15588
- month: 'short',
15589
- year: 'numeric'
15590
- };
15591
- break;
15592
- case 'keyboardDate':
15593
- options = {};
15594
- break;
15595
- case 'monthAndDate':
15596
- options = {
15597
- month: 'long',
15598
- day: 'numeric'
15599
- };
15600
- break;
15601
- case 'monthAndYear':
15602
- options = {
15603
- month: 'long',
15604
- year: 'numeric'
15605
- };
15606
- break;
15607
- default:
15608
- options = {
15609
- timeZone: 'UTC',
15610
- timeZoneName: 'short'
15611
- };
15612
- }
15613
- return new Intl.DateTimeFormat(locale, options).format(date);
15614
- }
15615
- function addDays(date, amount) {
15616
- const d = new Date(date);
15617
- d.setDate(d.getDate() + amount);
15618
- return d;
15619
- }
15620
- function addMonths(date, amount) {
15621
- const d = new Date(date);
15622
- d.setMonth(d.getMonth() + amount);
15623
- return d;
15624
- }
15625
- function getYear(date) {
15626
- return date.getFullYear();
15627
- }
15628
- function getMonth(date) {
15629
- return date.getMonth();
15630
- }
15631
- function startOfYear(date) {
15632
- return new Date(date.getFullYear(), 0, 1);
15633
- }
15634
- function endOfYear(date) {
15635
- return new Date(date.getFullYear(), 11, 31);
15636
- }
15637
- function getMondayOfFirstWeekOfYear(year) {
15638
- return new Date(year, 0, 1);
15639
- }
15640
-
15641
- // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
15642
- function getWeek(date) {
15643
- let year = date.getFullYear();
15644
- let d1w1 = getMondayOfFirstWeekOfYear(year);
15645
- if (date < d1w1) {
15646
- year = year - 1;
15647
- d1w1 = getMondayOfFirstWeekOfYear(year);
15648
- } else {
15649
- const tv = getMondayOfFirstWeekOfYear(year + 1);
15650
- if (date >= tv) {
15651
- year = year + 1;
15652
- d1w1 = tv;
15653
- }
15654
- }
15655
- const diffTime = Math.abs(date.getTime() - d1w1.getTime());
15656
- const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
15657
- return Math.floor(diffDays / 7) + 1;
15658
- }
15659
- function isWithinRange(date, range) {
15660
- return isAfter(date, range[0]) && isBefore(date, range[1]);
15661
- }
15662
- function isValid(date) {
15663
- const d = new Date(date);
15664
- return d instanceof Date && !isNaN(d.getTime());
15665
- }
15666
- function isAfter(date, comparing) {
15667
- return date.getTime() > comparing.getTime();
15668
- }
15669
- function isBefore(date, comparing) {
15670
- return date.getTime() < comparing.getTime();
15671
- }
15672
- function isEqual(date, comparing) {
15673
- return date.getTime() === comparing.getTime();
15674
- }
15675
- function isSameDay(date, comparing) {
15676
- return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
15677
- }
15678
- function isSameMonth(date, comparing) {
15679
- return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
15680
- }
15681
- function getDiff(date, comparing, unit) {
15682
- const d = new Date(date);
15683
- const c = new Date(comparing);
15684
- if (unit === 'month') {
15685
- return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
15686
- }
15687
- return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
15688
- }
15689
- function setYear(date, year) {
15690
- const d = new Date(date);
15691
- d.setFullYear(year);
15692
- return d;
15693
- }
15694
- class VuetifyDateAdapter {
15695
- constructor() {
15696
- let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
15697
- this.locale = locale;
15698
- }
15699
- date(value) {
15700
- return date(value);
15701
- }
15702
- addDays(date, amount) {
15703
- return addDays(date, amount);
15704
- }
15705
- addMonths(date, amount) {
15706
- return addMonths(date, amount);
15707
- }
15708
- getWeekArray(date) {
15709
- return getWeekArray(date);
15710
- }
15711
- startOfMonth(date) {
15712
- return startOfMonth(date);
15713
- }
15714
- endOfMonth(date) {
15715
- return endOfMonth(date);
15716
- }
15717
- format(date, formatString) {
15718
- return format(date, formatString, this.locale);
15719
- }
15720
- isEqual(date, comparing) {
15721
- return isEqual(date, comparing);
15722
- }
15723
- isValid(date) {
15724
- return isValid(date);
15725
- }
15726
- isWithinRange(date, range) {
15727
- return isWithinRange(date, range);
15728
- }
15729
- isAfter(date, comparing) {
15730
- return isAfter(date, comparing);
15731
- }
15732
- isSameDay(date, comparing) {
15733
- return isSameDay(date, comparing);
15734
- }
15735
- isSameMonth(date, comparing) {
15736
- return isSameMonth(date, comparing);
15737
- }
15738
- setYear(date, year) {
15739
- return setYear(date, year);
15740
- }
15741
- getDiff(date, comparing, unit) {
15742
- return getDiff(date, comparing, unit);
15743
- }
15744
- getWeek(date) {
15745
- return getWeek(date);
15746
- }
15747
- getWeekdays() {
15748
- return getWeekdays(this.locale);
15749
- }
15750
- getYear(date) {
15751
- return getYear(date);
15752
- }
15753
- getMonth(date) {
15754
- return getMonth(date);
15755
- }
15756
- startOfYear(date) {
15757
- return startOfYear(date);
15758
- }
15759
- endOfYear(date) {
15760
- return endOfYear(date);
15761
- }
15762
- }
15763
-
15764
- // Composables
15765
-
15766
- // Types
15767
-
15768
- const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
15769
- function createDate(options) {
15770
- return options ?? {
15771
- adapter: VuetifyDateAdapter
15772
- };
15773
- }
15774
- function useDate(props) {
15775
- const date = inject$1(DateAdapterSymbol);
15776
- const locale = useLocale();
15777
- if (!date) throw new Error('[Vuetify] Could not find injected date');
15778
-
15779
- // eslint-disable-next-line new-cap
15780
- const instance = new date.adapter(locale.current.value);
15781
- watch(locale.current, val => {
15782
- instance.locale = val;
15783
- }, {
15784
- immediate: true
15785
- });
15786
- return instance;
15787
- }
15788
-
15789
- function useSticky(_ref) {
15790
- let {
15791
- rootEl,
15792
- isSticky,
15793
- layoutItemStyles
15794
- } = _ref;
15795
- const isStuck = ref(false);
15796
- const stuckPosition = ref(0);
15797
- const stickyStyles = computed(() => {
15798
- const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15799
- return [isSticky.value ? {
15800
- top: 'auto',
15801
- bottom: 'auto',
15802
- height: undefined
15803
- } : undefined, isStuck.value ? {
15804
- [side]: convertToUnit(stuckPosition.value)
15805
- } : {
15806
- top: layoutItemStyles.value.top
15807
- }];
15808
- });
15809
- onMounted(() => {
15810
- watch(isSticky, val => {
15811
- if (val) {
15812
- window.addEventListener('scroll', onScroll, {
15813
- passive: true
15814
- });
15815
- } else {
15816
- window.removeEventListener('scroll', onScroll);
15817
- }
15818
- }, {
15819
- immediate: true
15820
- });
15821
- });
15822
- onBeforeUnmount(() => {
15823
- document.removeEventListener('scroll', onScroll);
15824
- });
15825
- let lastScrollTop = 0;
15826
- function onScroll() {
15827
- const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15828
- const rect = rootEl.value.getBoundingClientRect();
15829
- const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15830
- const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15831
- const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15832
- if (rect.height < window.innerHeight - layoutTop) {
15833
- isStuck.value = 'top';
15834
- stuckPosition.value = layoutTop;
15835
- } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15836
- stuckPosition.value = window.scrollY + rect.top;
15837
- isStuck.value = true;
15838
- } else if (direction === 'down' && bottom <= 0) {
15839
- stuckPosition.value = 0;
15840
- isStuck.value = 'bottom';
15841
- } else if (direction === 'up' && top <= 0) {
15842
- stuckPosition.value = rect.top + top;
15843
- isStuck.value = 'top';
15844
- }
15845
- lastScrollTop = window.scrollY;
15846
- }
15847
- return {
15848
- isStuck,
15849
- stickyStyles
15850
- };
15851
- }
15852
-
15853
- const HORIZON = 100; // ms
15854
- const HISTORY = 20; // number of samples to keep
15855
-
15856
- /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15857
- function kineticEnergyToVelocity(work) {
15858
- const sqrt2 = 1.41421356237;
15859
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15860
- }
15861
-
15862
- /**
15863
- * Returns pointer velocity in px/s
15864
- */
15865
- function calculateImpulseVelocity(samples) {
15866
- // The input should be in reversed time order (most recent sample at index i=0)
15867
- if (samples.length < 2) {
15868
- // if 0 or 1 points, velocity is zero
15869
- return 0;
15870
- }
15871
- // if (samples[1].t > samples[0].t) {
15872
- // // Algorithm will still work, but not perfectly
15873
- // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15874
- // }
15875
- if (samples.length === 2) {
15876
- // if 2 points, basic linear calculation
15877
- if (samples[1].t === samples[0].t) {
15878
- // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15879
- return 0;
15880
- }
15881
- return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15649
+ // if (samples[1].t > samples[0].t) {
15650
+ // // Algorithm will still work, but not perfectly
15651
+ // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15652
+ // }
15653
+ if (samples.length === 2) {
15654
+ // if 2 points, basic linear calculation
15655
+ if (samples[1].t === samples[0].t) {
15656
+ // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15657
+ return 0;
15658
+ }
15659
+ return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15882
15660
  }
15883
15661
  // Guaranteed to have at least 3 points here
15884
15662
  // start with the oldest sample and go forward in time
@@ -16122,6 +15900,7 @@ const VNavigationDrawer = genericComponent()({
16122
15900
  },
16123
15901
  sticky: Boolean,
16124
15902
  ...makeBorderProps(),
15903
+ ...makeComponentProps(),
16125
15904
  ...makeElevationProps(),
16126
15905
  ...makeLayoutItemProps(),
16127
15906
  ...makeRoundedProps(),
@@ -16210,7 +15989,6 @@ const VNavigationDrawer = genericComponent()({
16210
15989
  });
16211
15990
  const {
16212
15991
  layoutItemStyles,
16213
- layoutRect,
16214
15992
  layoutItemScrimStyles
16215
15993
  } = useLayoutItem({
16216
15994
  id: props.name,
@@ -16240,12 +16018,6 @@ const VNavigationDrawer = genericComponent()({
16240
16018
  opacity: dragProgress.value * 0.2,
16241
16019
  transition: 'none'
16242
16020
  } : undefined),
16243
- ...(layoutRect.value ? {
16244
- left: convertToUnit(layoutRect.value.left),
16245
- right: convertToUnit(layoutRect.value.right),
16246
- top: convertToUnit(layoutRect.value.top),
16247
- bottom: convertToUnit(layoutRect.value.bottom)
16248
- } : undefined),
16249
16021
  ...layoutItemScrimStyles.value
16250
16022
  }));
16251
16023
  provideDefaults({
@@ -16273,8 +16045,8 @@ const VNavigationDrawer = genericComponent()({
16273
16045
  'v-navigation-drawer--temporary': isTemporary.value,
16274
16046
  'v-navigation-drawer--active': isActive.value,
16275
16047
  'v-navigation-drawer--sticky': isSticky.value
16276
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
16277
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value]
16048
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16049
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
16278
16050
  }, attrs), {
16279
16051
  default: () => [hasImage && createVNode("div", {
16280
16052
  "key": "image",
@@ -16403,6 +16175,7 @@ const VPagination = genericComponent()({
16403
16175
  },
16404
16176
  showFirstLastPage: Boolean,
16405
16177
  ...makeBorderProps(),
16178
+ ...makeComponentProps(),
16406
16179
  ...makeDensityProps(),
16407
16180
  ...makeElevationProps(),
16408
16181
  ...makeRoundedProps(),
@@ -16599,7 +16372,8 @@ const VPagination = genericComponent()({
16599
16372
  }
16600
16373
  useRender(() => createVNode(props.tag, {
16601
16374
  "ref": resizeRef,
16602
- "class": ['v-pagination', themeClasses.value],
16375
+ "class": ['v-pagination', themeClasses.value, props.class],
16376
+ "style": props.style,
16603
16377
  "role": "navigation",
16604
16378
  "aria-label": t(props.ariaLabel),
16605
16379
  "onKeydown": onKeydown,
@@ -16658,7 +16432,8 @@ const VParallax = genericComponent()({
16658
16432
  scale: {
16659
16433
  type: [Number, String],
16660
16434
  default: 0.5
16661
- }
16435
+ },
16436
+ ...makeComponentProps()
16662
16437
  },
16663
16438
  setup(props, _ref) {
16664
16439
  let {
@@ -16720,7 +16495,8 @@ const VParallax = genericComponent()({
16720
16495
  useRender(() => createVNode(VImg, {
16721
16496
  "class": ['v-parallax', {
16722
16497
  'v-parallax--active': isIntersecting.value
16723
- }],
16498
+ }, props.class],
16499
+ "style": props.style,
16724
16500
  "ref": root,
16725
16501
  "cover": true,
16726
16502
  "onLoadstart": onScroll,
@@ -16745,7 +16521,8 @@ const VRadio = genericComponent()({
16745
16521
  slots
16746
16522
  } = _ref;
16747
16523
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16748
- "class": "v-radio",
16524
+ "class": ['v-radio', props.class],
16525
+ "style": props.style,
16749
16526
  "type": "radio"
16750
16527
  }), slots));
16751
16528
  return {};
@@ -16799,7 +16576,8 @@ const VRadioGroup = genericComponent()({
16799
16576
  }
16800
16577
  }) : props.label;
16801
16578
  return createVNode(VInput, mergeProps({
16802
- "class": "v-radio-group"
16579
+ "class": ['v-radio-group', props.class],
16580
+ "style": props.style
16803
16581
  }, inputAttrs, inputProps, {
16804
16582
  "modelValue": model.value,
16805
16583
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16937,7 +16715,8 @@ const VRangeSlider = genericComponent()({
16937
16715
  'v-slider--focused': isFocused.value,
16938
16716
  'v-slider--pressed': mousePressed.value,
16939
16717
  'v-slider--disabled': props.disabled
16940
- }],
16718
+ }, props.class],
16719
+ "style": props.style,
16941
16720
  "ref": inputRef
16942
16721
  }, inputProps, {
16943
16722
  "focused": isFocused.value
@@ -17080,6 +16859,7 @@ const VRating = genericComponent()({
17080
16859
  validator: v => ['top', 'bottom'].includes(v)
17081
16860
  },
17082
16861
  ripple: Boolean,
16862
+ ...makeComponentProps(),
17083
16863
  ...makeDensityProps(),
17084
16864
  ...makeSizeProps(),
17085
16865
  ...makeTagProps(),
@@ -17197,7 +16977,8 @@ const VRating = genericComponent()({
17197
16977
  "class": ['v-rating', {
17198
16978
  'v-rating--hover': props.hover,
17199
16979
  'v-rating--readonly': props.readonly
17200
- }, themeClasses.value]
16980
+ }, themeClasses.value, props.class],
16981
+ "style": props.style
17201
16982
  }, {
17202
16983
  default: () => [createVNode(VRatingItem, {
17203
16984
  "value": 0,
@@ -17297,6 +17078,7 @@ const makeVSlideGroupProps = propsFactory({
17297
17078
  type: [Boolean, String],
17298
17079
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
17299
17080
  },
17081
+ ...makeComponentProps(),
17300
17082
  ...makeTagProps(),
17301
17083
  ...makeGroupProps({
17302
17084
  selectedClass: 'v-slide-group-item--active'
@@ -17460,7 +17242,7 @@ const VSlideGroup = genericComponent()({
17460
17242
  function focus(location) {
17461
17243
  if (!contentRef.value) return;
17462
17244
  if (!location) {
17463
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
17245
+ const focusable = focusableChildren(contentRef.value);
17464
17246
  focusable[0]?.focus();
17465
17247
  } else if (location === 'next') {
17466
17248
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -17537,7 +17319,8 @@ const VSlideGroup = genericComponent()({
17537
17319
  'v-slide-group--vertical': !isHorizontal.value,
17538
17320
  'v-slide-group--has-affixes': hasAffixes.value,
17539
17321
  'v-slide-group--is-overflowing': isOverflowing.value
17540
- }],
17322
+ }, props.class],
17323
+ "style": props.style,
17541
17324
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
17542
17325
  "onFocus": onFocus
17543
17326
  }, {
@@ -17687,7 +17470,8 @@ const VSnackbar = genericComponent()({
17687
17470
  'v-snackbar--active': isActive.value,
17688
17471
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17689
17472
  'v-snackbar--vertical': props.vertical
17690
- }, positionClasses.value]
17473
+ }, positionClasses.value, props.class],
17474
+ "style": props.style
17691
17475
  }, overlayProps, {
17692
17476
  "modelValue": isActive.value,
17693
17477
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17787,7 +17571,8 @@ const VSwitch = genericComponent()({
17787
17571
  'v-switch--inset': props.inset
17788
17572
  }, {
17789
17573
  'v-switch--indeterminate': indeterminate.value
17790
- }, loaderClasses.value]
17574
+ }, loaderClasses.value, props.class],
17575
+ "style": props.style
17791
17576
  }, inputAttrs, inputProps, {
17792
17577
  "id": id.value,
17793
17578
  "focused": isFocused.value
@@ -17856,6 +17641,7 @@ const VSystemBar = genericComponent()({
17856
17641
  color: String,
17857
17642
  height: [Number, String],
17858
17643
  window: Boolean,
17644
+ ...makeComponentProps(),
17859
17645
  ...makeElevationProps(),
17860
17646
  ...makeLayoutItemProps(),
17861
17647
  ...makeRoundedProps(),
@@ -17897,8 +17683,8 @@ const VSystemBar = genericComponent()({
17897
17683
  useRender(() => createVNode(props.tag, {
17898
17684
  "class": ['v-system-bar', {
17899
17685
  'v-system-bar--window': props.window
17900
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17901
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17686
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17687
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17902
17688
  }, slots));
17903
17689
  return {};
17904
17690
  }
@@ -17971,10 +17757,10 @@ const VTab = genericComponent()({
17971
17757
  useRender(() => {
17972
17758
  const [btnProps] = VBtn.filterProps(props);
17973
17759
  return createVNode(VBtn, mergeProps({
17974
- "_as": "VTab",
17975
17760
  "symbol": VTabsSymbol,
17976
17761
  "ref": rootEl,
17977
- "class": ['v-tab'],
17762
+ "class": ['v-tab', props.class],
17763
+ "style": props.style,
17978
17764
  "tabindex": isSelected.value ? 0 : -1,
17979
17765
  "role": "tab",
17980
17766
  "aria-selected": String(isSelected.value),
@@ -18069,10 +17855,10 @@ const VTabs = genericComponent()({
18069
17855
  'v-tabs--fixed-tabs': props.fixedTabs,
18070
17856
  'v-tabs--grow': props.grow,
18071
17857
  'v-tabs--stacked': props.stacked
18072
- }, densityClasses.value, backgroundColorClasses.value],
17858
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
18073
17859
  "style": [{
18074
17860
  '--v-tabs-height': convertToUnit(props.height)
18075
- }, backgroundColorStyles.value],
17861
+ }, backgroundColorStyles.value, props.style],
18076
17862
  "role": "tablist",
18077
17863
  "symbol": VTabsSymbol
18078
17864
  }), {
@@ -18092,6 +17878,7 @@ const VTable = genericComponent()({
18092
17878
  fixedFooter: Boolean,
18093
17879
  height: [Number, String],
18094
17880
  hover: Boolean,
17881
+ ...makeComponentProps(),
18095
17882
  ...makeDensityProps(),
18096
17883
  ...makeTagProps(),
18097
17884
  ...makeThemeProps()
@@ -18114,7 +17901,8 @@ const VTable = genericComponent()({
18114
17901
  'v-table--has-top': !!slots.top,
18115
17902
  'v-table--has-bottom': !!slots.bottom,
18116
17903
  'v-table--hover': props.hover
18117
- }, themeClasses.value, densityClasses.value]
17904
+ }, themeClasses.value, densityClasses.value, props.class],
17905
+ "style": props.style
18118
17906
  }, {
18119
17907
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
18120
17908
  "class": "v-table__wrapper",
@@ -18193,7 +17981,7 @@ const VTextarea = genericComponent()({
18193
17981
  const vFieldRef = ref();
18194
17982
  const controlHeight = ref('');
18195
17983
  const textareaRef = ref();
18196
- const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
17984
+ const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
18197
17985
  function onFocus() {
18198
17986
  if (textareaRef.value !== document.activeElement) {
18199
17987
  textareaRef.value?.focus();
@@ -18279,7 +18067,8 @@ const VTextarea = genericComponent()({
18279
18067
  'v-textarea--auto-grow': props.autoGrow,
18280
18068
  'v-textarea--no-resize': props.noResize || props.autoGrow,
18281
18069
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
18282
- }]
18070
+ }, props.class],
18071
+ "style": props.style
18283
18072
  }, rootAttrs, inputProps, {
18284
18073
  "focused": isFocused.value
18285
18074
  }), {
@@ -18363,6 +18152,7 @@ const VThemeProvider = genericComponent()({
18363
18152
  name: 'VThemeProvider',
18364
18153
  props: {
18365
18154
  withBackground: Boolean,
18155
+ ...makeComponentProps(),
18366
18156
  ...makeThemeProps(),
18367
18157
  ...makeTagProps()
18368
18158
  },
@@ -18376,7 +18166,8 @@ const VThemeProvider = genericComponent()({
18376
18166
  return () => {
18377
18167
  if (!props.withBackground) return slots.default?.();
18378
18168
  return createVNode(props.tag, {
18379
- "class": ['v-theme-provider', themeClasses.value]
18169
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18170
+ "style": props.style
18380
18171
  }, {
18381
18172
  default: () => [slots.default?.()]
18382
18173
  });
@@ -18421,6 +18212,7 @@ const VTimeline = genericComponent()({
18421
18212
  type: String,
18422
18213
  validator: v => ['start', 'end', 'both'].includes(v)
18423
18214
  },
18215
+ ...makeComponentProps(),
18424
18216
  ...makeDensityProps(),
18425
18217
  ...makeTagProps(),
18426
18218
  ...makeThemeProps()
@@ -18464,10 +18256,10 @@ const VTimeline = genericComponent()({
18464
18256
  useRender(() => createVNode(props.tag, {
18465
18257
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18466
18258
  'v-timeline--inset-line': !!props.lineInset
18467
- }, themeClasses.value, densityClasses.value, sideClasses.value],
18468
- "style": {
18259
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18260
+ "style": [{
18469
18261
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
18470
- }
18262
+ }, props.style]
18471
18263
  }, slots));
18472
18264
  return {};
18473
18265
  }
@@ -18482,6 +18274,7 @@ const VTimelineDivider = genericComponent()({
18482
18274
  icon: IconValue,
18483
18275
  iconColor: String,
18484
18276
  lineColor: String,
18277
+ ...makeComponentProps(),
18485
18278
  ...makeRoundedProps(),
18486
18279
  ...makeSizeProps(),
18487
18280
  ...makeElevationProps()
@@ -18511,7 +18304,8 @@ const VTimelineDivider = genericComponent()({
18511
18304
  useRender(() => createVNode("div", {
18512
18305
  "class": ['v-timeline-divider', {
18513
18306
  'v-timeline-divider--fill-dot': props.fillDot
18514
- }]
18307
+ }, props.class],
18308
+ "style": props.style
18515
18309
  }, [createVNode("div", {
18516
18310
  "class": ['v-timeline-divider__before', lineColorClasses.value],
18517
18311
  "style": lineColorStyles.value
@@ -18561,11 +18355,12 @@ const VTimelineItem = genericComponent()({
18561
18355
  icon: IconValue,
18562
18356
  iconColor: String,
18563
18357
  lineInset: [Number, String],
18564
- ...makeRoundedProps(),
18358
+ ...makeComponentProps(),
18359
+ ...makeDimensionProps(),
18565
18360
  ...makeElevationProps(),
18361
+ ...makeRoundedProps(),
18566
18362
  ...makeSizeProps(),
18567
- ...makeTagProps(),
18568
- ...makeDimensionProps()
18363
+ ...makeTagProps()
18569
18364
  },
18570
18365
  setup(props, _ref) {
18571
18366
  let {
@@ -18585,11 +18380,11 @@ const VTimelineItem = genericComponent()({
18585
18380
  useRender(() => createVNode("div", {
18586
18381
  "class": ['v-timeline-item', {
18587
18382
  'v-timeline-item--fill-dot': props.fillDot
18588
- }],
18589
- "style": {
18383
+ }, props.class],
18384
+ "style": [{
18590
18385
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18591
18386
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18592
- }
18387
+ }, props.style]
18593
18388
  }, [createVNode("div", {
18594
18389
  "class": "v-timeline-item__body",
18595
18390
  "style": dimensionStyles.value
@@ -18665,7 +18460,8 @@ const VTooltip = genericComponent()({
18665
18460
  const [overlayProps] = VOverlay.filterProps(props);
18666
18461
  return createVNode(VOverlay, mergeProps({
18667
18462
  "ref": overlay,
18668
- "class": ['v-tooltip'],
18463
+ "class": ['v-tooltip', props.class],
18464
+ "style": props.style,
18669
18465
  "id": id.value
18670
18466
  }, overlayProps, {
18671
18467
  "modelValue": isActive.value,
@@ -18713,7 +18509,8 @@ const VValidation = genericComponent()({
18713
18509
  const VVirtualScrollItem = genericComponent()({
18714
18510
  name: 'VVirtualScrollItem',
18715
18511
  props: {
18716
- dynamicHeight: Boolean
18512
+ dynamicHeight: Boolean,
18513
+ ...makeComponentProps()
18717
18514
  },
18718
18515
  emits: {
18719
18516
  'update:height': height => true
@@ -18740,7 +18537,8 @@ const VVirtualScrollItem = genericComponent()({
18740
18537
  onUpdated(updateHeight);
18741
18538
  useRender(() => createVNode("div", {
18742
18539
  "ref": props.dynamicHeight ? resizeRef : undefined,
18743
- "class": "v-virtual-scroll__item"
18540
+ "class": ['v-virtual-scroll__item', props.class],
18541
+ "style": props.style
18744
18542
  }, [slots.default?.()]));
18745
18543
  }
18746
18544
  });
@@ -18757,7 +18555,7 @@ const VVirtualScroll = genericComponent()({
18757
18555
  default: () => []
18758
18556
  },
18759
18557
  itemHeight: [Number, String],
18760
- visibleItems: [Number, String],
18558
+ ...makeComponentProps(),
18761
18559
  ...makeDimensionProps()
18762
18560
  },
18763
18561
  setup(props, _ref) {
@@ -18784,7 +18582,7 @@ const VVirtualScroll = genericComponent()({
18784
18582
  const sizeMap = new Map();
18785
18583
  let sizes = createRange(props.items.length).map(() => itemHeight.value);
18786
18584
  const visibleItems = computed(() => {
18787
- return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18585
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18788
18586
  });
18789
18587
  function handleItemResize(index, height) {
18790
18588
  itemHeight.value = Math.max(itemHeight.value, height);
@@ -18795,20 +18593,13 @@ const VVirtualScroll = genericComponent()({
18795
18593
  return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18796
18594
  }
18797
18595
  function calculateMidPointIndex(scrollTop) {
18798
- let start = 0;
18799
- let end = props.items.length;
18800
- while (start <= end) {
18801
- const middle = start + Math.floor((end - start) / 2);
18802
- const middleOffset = calculateOffset(middle);
18803
- if (middleOffset === scrollTop) {
18804
- return middle;
18805
- } else if (middleOffset < scrollTop) {
18806
- start = middle + 1;
18807
- } else if (middleOffset > scrollTop) {
18808
- end = middle - 1;
18809
- }
18596
+ const end = props.items.length;
18597
+ let middle = 0;
18598
+ let middleOffset = 0;
18599
+ while (middleOffset < scrollTop && middle < end) {
18600
+ middleOffset += sizes[middle++] || itemHeight.value;
18810
18601
  }
18811
- return start;
18602
+ return middle - 1;
18812
18603
  }
18813
18604
  let lastScrollTop = 0;
18814
18605
  function handleScroll() {
@@ -18830,8 +18621,12 @@ const VVirtualScroll = genericComponent()({
18830
18621
  const offset = calculateOffset(index);
18831
18622
  rootEl.value.scrollTop = offset;
18832
18623
  }
18624
+ const items = computed(() => props.items.map((item, index) => ({
18625
+ raw: item,
18626
+ index
18627
+ })));
18833
18628
  const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18834
- const computedItems = computed(() => props.items.slice(first.value, last.value));
18629
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18835
18630
  const paddingTop = computed(() => calculateOffset(first.value));
18836
18631
  const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18837
18632
  const {
@@ -18856,23 +18651,23 @@ const VVirtualScroll = genericComponent()({
18856
18651
  });
18857
18652
  useRender(() => createVNode("div", {
18858
18653
  "ref": rootEl,
18859
- "class": "v-virtual-scroll",
18654
+ "class": ['v-virtual-scroll', props.class],
18860
18655
  "onScroll": handleScroll,
18861
- "style": dimensionStyles.value
18656
+ "style": [dimensionStyles.value, props.style]
18862
18657
  }, [createVNode("div", {
18863
18658
  "class": "v-virtual-scroll__container",
18864
18659
  "style": {
18865
18660
  paddingTop: convertToUnit(paddingTop.value),
18866
18661
  paddingBottom: convertToUnit(paddingBottom.value)
18867
18662
  }
18868
- }, [computedItems.value.map((item, index) => createVNode(VVirtualScrollItem, {
18869
- "key": index,
18663
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18664
+ "key": item.index,
18870
18665
  "dynamicHeight": !props.itemHeight,
18871
- "onUpdate:height": height => handleItemResize(index + first.value, height)
18666
+ "onUpdate:height": height => handleItemResize(item.index, height)
18872
18667
  }, {
18873
18668
  default: () => [slots.default?.({
18874
- item,
18875
- index: index + first.value
18669
+ item: item.raw,
18670
+ index: item.index
18876
18671
  })]
18877
18672
  }))])]));
18878
18673
  return {
@@ -19020,130 +18815,542 @@ var components = /*#__PURE__*/Object.freeze({
19020
18815
 
19021
18816
  // Types
19022
18817
 
19023
- function mounted$2(el, binding) {
19024
- const modifiers = binding.modifiers || {};
19025
- const value = binding.value;
19026
- const {
19027
- once,
19028
- immediate,
19029
- ...modifierKeys
19030
- } = modifiers;
19031
- const defaultValue = !Object.keys(modifierKeys).length;
19032
- const {
19033
- handler,
19034
- options
19035
- } = typeof value === 'object' ? value : {
19036
- handler: value,
19037
- options: {
19038
- attributes: modifierKeys?.attr ?? defaultValue,
19039
- characterData: modifierKeys?.char ?? defaultValue,
19040
- childList: modifierKeys?.child ?? defaultValue,
19041
- subtree: modifierKeys?.sub ?? defaultValue
18818
+ function mounted$2(el, binding) {
18819
+ const modifiers = binding.modifiers || {};
18820
+ const value = binding.value;
18821
+ const {
18822
+ once,
18823
+ immediate,
18824
+ ...modifierKeys
18825
+ } = modifiers;
18826
+ const defaultValue = !Object.keys(modifierKeys).length;
18827
+ const {
18828
+ handler,
18829
+ options
18830
+ } = typeof value === 'object' ? value : {
18831
+ handler: value,
18832
+ options: {
18833
+ attributes: modifierKeys?.attr ?? defaultValue,
18834
+ characterData: modifierKeys?.char ?? defaultValue,
18835
+ childList: modifierKeys?.child ?? defaultValue,
18836
+ subtree: modifierKeys?.sub ?? defaultValue
18837
+ }
18838
+ };
18839
+ const observer = new MutationObserver(function () {
18840
+ let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18841
+ let observer = arguments.length > 1 ? arguments[1] : undefined;
18842
+ handler?.(mutations, observer);
18843
+ if (once) unmounted$2(el, binding);
18844
+ });
18845
+ if (immediate) handler?.([], observer);
18846
+ el._mutate = Object(el._mutate);
18847
+ el._mutate[binding.instance.$.uid] = {
18848
+ observer
18849
+ };
18850
+ observer.observe(el, options);
18851
+ }
18852
+ function unmounted$2(el, binding) {
18853
+ if (!el._mutate?.[binding.instance.$.uid]) return;
18854
+ el._mutate[binding.instance.$.uid].observer.disconnect();
18855
+ delete el._mutate[binding.instance.$.uid];
18856
+ }
18857
+ const Mutate = {
18858
+ mounted: mounted$2,
18859
+ unmounted: unmounted$2
18860
+ };
18861
+
18862
+ function mounted$1(el, binding) {
18863
+ const handler = binding.value;
18864
+ const options = {
18865
+ passive: !binding.modifiers?.active
18866
+ };
18867
+ window.addEventListener('resize', handler, options);
18868
+ el._onResize = Object(el._onResize);
18869
+ el._onResize[binding.instance.$.uid] = {
18870
+ handler,
18871
+ options
18872
+ };
18873
+ if (!binding.modifiers?.quiet) {
18874
+ handler();
18875
+ }
18876
+ }
18877
+ function unmounted$1(el, binding) {
18878
+ if (!el._onResize?.[binding.instance.$.uid]) return;
18879
+ const {
18880
+ handler,
18881
+ options
18882
+ } = el._onResize[binding.instance.$.uid];
18883
+ window.removeEventListener('resize', handler, options);
18884
+ delete el._onResize[binding.instance.$.uid];
18885
+ }
18886
+ const Resize = {
18887
+ mounted: mounted$1,
18888
+ unmounted: unmounted$1
18889
+ };
18890
+
18891
+ function mounted(el, binding) {
18892
+ const {
18893
+ self = false
18894
+ } = binding.modifiers ?? {};
18895
+ const value = binding.value;
18896
+ const options = typeof value === 'object' && value.options || {
18897
+ passive: true
18898
+ };
18899
+ const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
18900
+ const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
18901
+ if (!target) return;
18902
+ target.addEventListener('scroll', handler, options);
18903
+ el._onScroll = Object(el._onScroll);
18904
+ el._onScroll[binding.instance.$.uid] = {
18905
+ handler,
18906
+ options,
18907
+ // Don't reference self
18908
+ target: self ? undefined : target
18909
+ };
18910
+ }
18911
+ function unmounted(el, binding) {
18912
+ if (!el._onScroll?.[binding.instance.$.uid]) return;
18913
+ const {
18914
+ handler,
18915
+ options,
18916
+ target = el
18917
+ } = el._onScroll[binding.instance.$.uid];
18918
+ target.removeEventListener('scroll', handler, options);
18919
+ delete el._onScroll[binding.instance.$.uid];
18920
+ }
18921
+ function updated(el, binding) {
18922
+ if (binding.value === binding.oldValue) return;
18923
+ unmounted(el, binding);
18924
+ mounted(el, binding);
18925
+ }
18926
+ const Scroll = {
18927
+ mounted,
18928
+ unmounted,
18929
+ updated
18930
+ };
18931
+
18932
+ var directives = /*#__PURE__*/Object.freeze({
18933
+ __proto__: null,
18934
+ ClickOutside: ClickOutside,
18935
+ Intersect: Intersect,
18936
+ Mutate: Mutate,
18937
+ Resize: Resize,
18938
+ Ripple: Ripple,
18939
+ Scroll: Scroll,
18940
+ Touch: Touch
18941
+ });
18942
+
18943
+ // Utilities
18944
+
18945
+ // Types
18946
+
18947
+ function getWeekArray(date) {
18948
+ let currentWeek = [];
18949
+ const weeks = [];
18950
+ const firstDayOfMonth = startOfMonth(date);
18951
+ const lastDayOfMonth = endOfMonth(date);
18952
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
18953
+ currentWeek.push(null);
18954
+ }
18955
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
18956
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
18957
+
18958
+ // Add the day to the current week
18959
+ currentWeek.push(day);
18960
+
18961
+ // If the current week has 7 days, add it to the weeks array and start a new week
18962
+ if (currentWeek.length === 7) {
18963
+ weeks.push(currentWeek);
18964
+ currentWeek = [];
19042
18965
  }
19043
- };
19044
- const observer = new MutationObserver(function () {
19045
- let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
19046
- let observer = arguments.length > 1 ? arguments[1] : undefined;
19047
- handler?.(mutations, observer);
19048
- if (once) unmounted$2(el, binding);
18966
+ }
18967
+ for (let i = currentWeek.length; i < 7; i++) {
18968
+ currentWeek.push(null);
18969
+ }
18970
+ weeks.push(currentWeek);
18971
+ return weeks;
18972
+ }
18973
+ function startOfMonth(date) {
18974
+ return new Date(date.getFullYear(), date.getMonth(), 1);
18975
+ }
18976
+ function endOfMonth(date) {
18977
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
18978
+ }
18979
+ function date(value) {
18980
+ if (value == null) return null;
18981
+ if (value instanceof Date) return value;
18982
+ if (typeof value === 'string') {
18983
+ const parsed = Date.parse(value);
18984
+ if (!isNaN(parsed)) return new Date(parsed);
18985
+ }
18986
+ return null;
18987
+ }
18988
+ const firstDay = {
18989
+ '001': 1,
18990
+ AD: 1,
18991
+ AE: 6,
18992
+ AF: 6,
18993
+ AG: 0,
18994
+ AI: 1,
18995
+ AL: 1,
18996
+ AM: 1,
18997
+ AN: 1,
18998
+ AR: 1,
18999
+ AS: 0,
19000
+ AT: 1,
19001
+ AU: 0,
19002
+ AX: 1,
19003
+ AZ: 1,
19004
+ BA: 1,
19005
+ BD: 0,
19006
+ BE: 1,
19007
+ BG: 1,
19008
+ BH: 6,
19009
+ BM: 1,
19010
+ BN: 1,
19011
+ BR: 0,
19012
+ BS: 0,
19013
+ BT: 0,
19014
+ BW: 0,
19015
+ BY: 1,
19016
+ BZ: 0,
19017
+ CA: 0,
19018
+ CH: 1,
19019
+ CL: 1,
19020
+ CM: 1,
19021
+ CN: 0,
19022
+ CO: 0,
19023
+ CR: 1,
19024
+ CY: 1,
19025
+ CZ: 1,
19026
+ DE: 1,
19027
+ DJ: 6,
19028
+ DK: 1,
19029
+ DM: 0,
19030
+ DO: 0,
19031
+ DZ: 6,
19032
+ EC: 1,
19033
+ EE: 1,
19034
+ EG: 6,
19035
+ ES: 1,
19036
+ ET: 0,
19037
+ FI: 1,
19038
+ FJ: 1,
19039
+ FO: 1,
19040
+ FR: 1,
19041
+ GB: 1,
19042
+ 'GB-alt-variant': 0,
19043
+ GE: 1,
19044
+ GF: 1,
19045
+ GP: 1,
19046
+ GR: 1,
19047
+ GT: 0,
19048
+ GU: 0,
19049
+ HK: 0,
19050
+ HN: 0,
19051
+ HR: 1,
19052
+ HU: 1,
19053
+ ID: 0,
19054
+ IE: 1,
19055
+ IL: 0,
19056
+ IN: 0,
19057
+ IQ: 6,
19058
+ IR: 6,
19059
+ IS: 1,
19060
+ IT: 1,
19061
+ JM: 0,
19062
+ JO: 6,
19063
+ JP: 0,
19064
+ KE: 0,
19065
+ KG: 1,
19066
+ KH: 0,
19067
+ KR: 0,
19068
+ KW: 6,
19069
+ KZ: 1,
19070
+ LA: 0,
19071
+ LB: 1,
19072
+ LI: 1,
19073
+ LK: 1,
19074
+ LT: 1,
19075
+ LU: 1,
19076
+ LV: 1,
19077
+ LY: 6,
19078
+ MC: 1,
19079
+ MD: 1,
19080
+ ME: 1,
19081
+ MH: 0,
19082
+ MK: 1,
19083
+ MM: 0,
19084
+ MN: 1,
19085
+ MO: 0,
19086
+ MQ: 1,
19087
+ MT: 0,
19088
+ MV: 5,
19089
+ MX: 0,
19090
+ MY: 1,
19091
+ MZ: 0,
19092
+ NI: 0,
19093
+ NL: 1,
19094
+ NO: 1,
19095
+ NP: 0,
19096
+ NZ: 1,
19097
+ OM: 6,
19098
+ PA: 0,
19099
+ PE: 0,
19100
+ PH: 0,
19101
+ PK: 0,
19102
+ PL: 1,
19103
+ PR: 0,
19104
+ PT: 0,
19105
+ PY: 0,
19106
+ QA: 6,
19107
+ RE: 1,
19108
+ RO: 1,
19109
+ RS: 1,
19110
+ RU: 1,
19111
+ SA: 0,
19112
+ SD: 6,
19113
+ SE: 1,
19114
+ SG: 0,
19115
+ SI: 1,
19116
+ SK: 1,
19117
+ SM: 1,
19118
+ SV: 0,
19119
+ SY: 6,
19120
+ TH: 0,
19121
+ TJ: 1,
19122
+ TM: 1,
19123
+ TR: 1,
19124
+ TT: 0,
19125
+ TW: 0,
19126
+ UA: 1,
19127
+ UM: 0,
19128
+ US: 0,
19129
+ UY: 1,
19130
+ UZ: 1,
19131
+ VA: 1,
19132
+ VE: 0,
19133
+ VI: 0,
19134
+ VN: 1,
19135
+ WS: 0,
19136
+ XK: 1,
19137
+ YE: 0,
19138
+ ZA: 0,
19139
+ ZW: 0
19140
+ };
19141
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
19142
+ function getWeekdays(locale) {
19143
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
19144
+ return createRange(7).map(i => {
19145
+ const weekday = new Date(sundayJanuarySecond2000);
19146
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
19147
+ return new Intl.DateTimeFormat(locale, {
19148
+ weekday: 'long'
19149
+ }).format(weekday);
19049
19150
  });
19050
- if (immediate) handler?.([], observer);
19051
- el._mutate = Object(el._mutate);
19052
- el._mutate[binding.instance.$.uid] = {
19053
- observer
19054
- };
19055
- observer.observe(el, options);
19056
19151
  }
19057
- function unmounted$2(el, binding) {
19058
- if (!el._mutate?.[binding.instance.$.uid]) return;
19059
- el._mutate[binding.instance.$.uid].observer.disconnect();
19060
- delete el._mutate[binding.instance.$.uid];
19152
+ function format(value, formatString, locale) {
19153
+ const date = new Date(value);
19154
+ let options = {};
19155
+ switch (formatString) {
19156
+ case 'fullDateWithWeekday':
19157
+ options = {
19158
+ weekday: 'long',
19159
+ day: 'numeric',
19160
+ month: 'long',
19161
+ year: 'numeric'
19162
+ };
19163
+ break;
19164
+ case 'normalDateWithWeekday':
19165
+ options = {
19166
+ weekday: 'short',
19167
+ day: 'numeric',
19168
+ month: 'short',
19169
+ year: 'numeric'
19170
+ };
19171
+ break;
19172
+ case 'keyboardDate':
19173
+ options = {};
19174
+ break;
19175
+ case 'monthAndDate':
19176
+ options = {
19177
+ month: 'long',
19178
+ day: 'numeric'
19179
+ };
19180
+ break;
19181
+ case 'monthAndYear':
19182
+ options = {
19183
+ month: 'long',
19184
+ year: 'numeric'
19185
+ };
19186
+ break;
19187
+ default:
19188
+ options = {
19189
+ timeZone: 'UTC',
19190
+ timeZoneName: 'short'
19191
+ };
19192
+ }
19193
+ return new Intl.DateTimeFormat(locale, options).format(date);
19194
+ }
19195
+ function addDays(date, amount) {
19196
+ const d = new Date(date);
19197
+ d.setDate(d.getDate() + amount);
19198
+ return d;
19199
+ }
19200
+ function addMonths(date, amount) {
19201
+ const d = new Date(date);
19202
+ d.setMonth(d.getMonth() + amount);
19203
+ return d;
19204
+ }
19205
+ function getYear(date) {
19206
+ return date.getFullYear();
19207
+ }
19208
+ function getMonth(date) {
19209
+ return date.getMonth();
19210
+ }
19211
+ function startOfYear(date) {
19212
+ return new Date(date.getFullYear(), 0, 1);
19213
+ }
19214
+ function endOfYear(date) {
19215
+ return new Date(date.getFullYear(), 11, 31);
19216
+ }
19217
+ function getMondayOfFirstWeekOfYear(year) {
19218
+ return new Date(year, 0, 1);
19061
19219
  }
19062
- const Mutate = {
19063
- mounted: mounted$2,
19064
- unmounted: unmounted$2
19065
- };
19066
19220
 
19067
- function mounted$1(el, binding) {
19068
- const handler = binding.value;
19069
- const options = {
19070
- passive: !binding.modifiers?.active
19071
- };
19072
- window.addEventListener('resize', handler, options);
19073
- el._onResize = Object(el._onResize);
19074
- el._onResize[binding.instance.$.uid] = {
19075
- handler,
19076
- options
19077
- };
19078
- if (!binding.modifiers?.quiet) {
19079
- handler();
19221
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
19222
+ function getWeek(date) {
19223
+ let year = date.getFullYear();
19224
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
19225
+ if (date < d1w1) {
19226
+ year = year - 1;
19227
+ d1w1 = getMondayOfFirstWeekOfYear(year);
19228
+ } else {
19229
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
19230
+ if (date >= tv) {
19231
+ year = year + 1;
19232
+ d1w1 = tv;
19233
+ }
19080
19234
  }
19235
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
19236
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
19237
+ return Math.floor(diffDays / 7) + 1;
19081
19238
  }
19082
- function unmounted$1(el, binding) {
19083
- if (!el._onResize?.[binding.instance.$.uid]) return;
19084
- const {
19085
- handler,
19086
- options
19087
- } = el._onResize[binding.instance.$.uid];
19088
- window.removeEventListener('resize', handler, options);
19089
- delete el._onResize[binding.instance.$.uid];
19239
+ function isWithinRange(date, range) {
19240
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
19090
19241
  }
19091
- const Resize = {
19092
- mounted: mounted$1,
19093
- unmounted: unmounted$1
19094
- };
19095
-
19096
- function mounted(el, binding) {
19097
- const {
19098
- self = false
19099
- } = binding.modifiers ?? {};
19100
- const value = binding.value;
19101
- const options = typeof value === 'object' && value.options || {
19102
- passive: true
19103
- };
19104
- const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
19105
- const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
19106
- if (!target) return;
19107
- target.addEventListener('scroll', handler, options);
19108
- el._onScroll = Object(el._onScroll);
19109
- el._onScroll[binding.instance.$.uid] = {
19110
- handler,
19111
- options,
19112
- // Don't reference self
19113
- target: self ? undefined : target
19114
- };
19242
+ function isValid(date) {
19243
+ const d = new Date(date);
19244
+ return d instanceof Date && !isNaN(d.getTime());
19115
19245
  }
19116
- function unmounted(el, binding) {
19117
- if (!el._onScroll?.[binding.instance.$.uid]) return;
19118
- const {
19119
- handler,
19120
- options,
19121
- target = el
19122
- } = el._onScroll[binding.instance.$.uid];
19123
- target.removeEventListener('scroll', handler, options);
19124
- delete el._onScroll[binding.instance.$.uid];
19246
+ function isAfter(date, comparing) {
19247
+ return date.getTime() > comparing.getTime();
19125
19248
  }
19126
- function updated(el, binding) {
19127
- if (binding.value === binding.oldValue) return;
19128
- unmounted(el, binding);
19129
- mounted(el, binding);
19249
+ function isBefore(date, comparing) {
19250
+ return date.getTime() < comparing.getTime();
19251
+ }
19252
+ function isEqual(date, comparing) {
19253
+ return date.getTime() === comparing.getTime();
19254
+ }
19255
+ function isSameDay(date, comparing) {
19256
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19257
+ }
19258
+ function isSameMonth(date, comparing) {
19259
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19260
+ }
19261
+ function getDiff(date, comparing, unit) {
19262
+ const d = new Date(date);
19263
+ const c = new Date(comparing);
19264
+ if (unit === 'month') {
19265
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
19266
+ }
19267
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
19268
+ }
19269
+ function setYear(date, year) {
19270
+ const d = new Date(date);
19271
+ d.setFullYear(year);
19272
+ return d;
19273
+ }
19274
+ class VuetifyDateAdapter {
19275
+ constructor() {
19276
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
19277
+ this.locale = locale;
19278
+ }
19279
+ date(value) {
19280
+ return date(value);
19281
+ }
19282
+ addDays(date, amount) {
19283
+ return addDays(date, amount);
19284
+ }
19285
+ addMonths(date, amount) {
19286
+ return addMonths(date, amount);
19287
+ }
19288
+ getWeekArray(date) {
19289
+ return getWeekArray(date);
19290
+ }
19291
+ startOfMonth(date) {
19292
+ return startOfMonth(date);
19293
+ }
19294
+ endOfMonth(date) {
19295
+ return endOfMonth(date);
19296
+ }
19297
+ format(date, formatString) {
19298
+ return format(date, formatString, this.locale);
19299
+ }
19300
+ isEqual(date, comparing) {
19301
+ return isEqual(date, comparing);
19302
+ }
19303
+ isValid(date) {
19304
+ return isValid(date);
19305
+ }
19306
+ isWithinRange(date, range) {
19307
+ return isWithinRange(date, range);
19308
+ }
19309
+ isAfter(date, comparing) {
19310
+ return isAfter(date, comparing);
19311
+ }
19312
+ isSameDay(date, comparing) {
19313
+ return isSameDay(date, comparing);
19314
+ }
19315
+ isSameMonth(date, comparing) {
19316
+ return isSameMonth(date, comparing);
19317
+ }
19318
+ setYear(date, year) {
19319
+ return setYear(date, year);
19320
+ }
19321
+ getDiff(date, comparing, unit) {
19322
+ return getDiff(date, comparing, unit);
19323
+ }
19324
+ getWeek(date) {
19325
+ return getWeek(date);
19326
+ }
19327
+ getWeekdays() {
19328
+ return getWeekdays(this.locale);
19329
+ }
19330
+ getYear(date) {
19331
+ return getYear(date);
19332
+ }
19333
+ getMonth(date) {
19334
+ return getMonth(date);
19335
+ }
19336
+ startOfYear(date) {
19337
+ return startOfYear(date);
19338
+ }
19339
+ endOfYear(date) {
19340
+ return endOfYear(date);
19341
+ }
19130
19342
  }
19131
- const Scroll = {
19132
- mounted,
19133
- unmounted,
19134
- updated
19135
- };
19136
19343
 
19137
- var directives = /*#__PURE__*/Object.freeze({
19138
- __proto__: null,
19139
- ClickOutside: ClickOutside,
19140
- Intersect: Intersect,
19141
- Mutate: Mutate,
19142
- Resize: Resize,
19143
- Ripple: Ripple,
19144
- Scroll: Scroll,
19145
- Touch: Touch
19146
- });
19344
+ // Composables
19345
+
19346
+ // Types
19347
+
19348
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
19349
+ function createDate(options) {
19350
+ return options ?? {
19351
+ adapter: VuetifyDateAdapter
19352
+ };
19353
+ }
19147
19354
 
19148
19355
  // Composables
19149
19356
  function createVuetify$1() {
@@ -19230,7 +19437,7 @@ function createVuetify$1() {
19230
19437
  date
19231
19438
  };
19232
19439
  }
19233
- const version$1 = "4.0.0-dev-20230426.0";
19440
+ const version$1 = "4.0.0-dev-20230511.0";
19234
19441
  createVuetify$1.version = version$1;
19235
19442
 
19236
19443
  // Vue's inject() can only be used in setup
@@ -19250,8 +19457,8 @@ const createVuetify = function () {
19250
19457
  ...options
19251
19458
  });
19252
19459
  };
19253
- const version = "4.0.0-dev-20230426.0";
19460
+ const version = "4.0.0-dev-20230511.0";
19254
19461
  createVuetify.version = version;
19255
19462
 
19256
- export { components, createVuetify, directives, useDate, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19463
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19257
19464
  //# sourceMappingURL=vuetify.esm.js.map