@vuetify/nightly 4.0.0-dev-20230426.0 → 4.0.0-dev-20230427.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 (370) hide show
  1. package/CHANGELOG.md +10 -2
  2. package/dist/json/attributes.json +218 -194
  3. package/dist/json/importMap.json +12 -12
  4. package/dist/json/tags.json +7 -1
  5. package/dist/json/web-types.json +379 -326
  6. package/dist/vuetify-labs.css +1361 -1362
  7. package/dist/vuetify-labs.d.ts +5791 -8230
  8. package/dist/vuetify-labs.esm.js +1286 -1090
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +1285 -1089
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +29 -30
  13. package/dist/vuetify.d.ts +5991 -7516
  14. package/dist/vuetify.esm.js +1248 -1063
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +1247 -1062
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +743 -738
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.ts +1 -1
  22. package/lib/blueprints/md1.d.ts +1 -1
  23. package/lib/blueprints/md2.d.ts +1 -1
  24. package/lib/blueprints/md3.d.ts +1 -1
  25. package/lib/components/VAlert/VAlert.mjs +6 -4
  26. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  27. package/lib/components/VAlert/index.d.ts +57 -55
  28. package/lib/components/VApp/VApp.mjs +4 -2
  29. package/lib/components/VApp/VApp.mjs.map +1 -1
  30. package/lib/components/VApp/index.d.ts +22 -13
  31. package/lib/components/VAppBar/VAppBar.mjs +3 -3
  32. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  33. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -4
  34. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  35. package/lib/components/VAppBar/index.d.ts +87 -92
  36. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -1
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  38. package/lib/components/VAutocomplete/index.d.ts +225 -403
  39. package/lib/components/VAvatar/VAvatar.mjs +4 -2
  40. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  41. package/lib/components/VAvatar/index.d.ts +23 -14
  42. package/lib/components/VBadge/VBadge.mjs +6 -5
  43. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  44. package/lib/components/VBadge/index.d.ts +27 -22
  45. package/lib/components/VBanner/VBanner.mjs +6 -4
  46. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  47. package/lib/components/VBanner/VBannerActions.mjs +5 -2
  48. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  49. package/lib/components/VBanner/index.d.ts +92 -66
  50. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -2
  51. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  52. package/lib/components/VBottomNavigation/index.d.ts +22 -13
  53. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +35 -18
  54. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  55. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -3
  56. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  57. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +4 -2
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  59. package/lib/components/VBreadcrumbs/index.d.ts +134 -93
  60. package/lib/components/VBtn/VBtn.mjs +5 -3
  61. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  62. package/lib/components/VBtn/index.d.ts +33 -36
  63. package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -1
  64. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  65. package/lib/components/VBtnGroup/index.d.ts +22 -13
  66. package/lib/components/VBtnToggle/VBtnToggle.mjs +4 -2
  67. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  68. package/lib/components/VBtnToggle/index.d.ts +30 -21
  69. package/lib/components/VCard/VCard.mjs +5 -3
  70. package/lib/components/VCard/VCard.mjs.map +1 -1
  71. package/lib/components/VCard/VCardActions.mjs +7 -4
  72. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  73. package/lib/components/VCard/VCardItem.mjs +5 -2
  74. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  75. package/lib/components/VCard/index.d.ts +250 -141
  76. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  77. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  78. package/lib/components/VCarousel/VCarouselItem.mjs +6 -3
  79. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  80. package/lib/components/VCarousel/index.d.ts +78 -141
  81. package/lib/components/VCheckbox/VCheckbox.mjs +3 -2
  82. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  83. package/lib/components/VCheckbox/VCheckboxBtn.mjs +2 -1
  84. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  85. package/lib/components/VCheckbox/index.d.ts +69 -103
  86. package/lib/components/VChip/VChip.mjs +7 -8
  87. package/lib/components/VChip/VChip.mjs.map +1 -1
  88. package/lib/components/VChip/index.d.ts +27 -30
  89. package/lib/components/VChipGroup/VChipGroup.mjs +4 -1
  90. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  91. package/lib/components/VChipGroup/index.d.ts +22 -13
  92. package/lib/components/VCode/index.d.ts +30 -17
  93. package/lib/components/VColorPicker/VColorPicker.mjs +3 -3
  94. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  95. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -2
  96. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  97. package/lib/components/VColorPicker/VColorPickerEdit.mjs +6 -3
  98. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  99. package/lib/components/VColorPicker/VColorPickerPreview.mjs +6 -3
  100. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  101. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +7 -5
  102. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  103. package/lib/components/VColorPicker/index.d.ts +34 -1
  104. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  105. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  106. package/lib/components/VCombobox/index.d.ts +225 -403
  107. package/lib/components/VCounter/VCounter.mjs +4 -1
  108. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  109. package/lib/components/VCounter/index.d.ts +22 -145
  110. package/lib/components/VDefaultsProvider/index.d.ts +0 -12
  111. package/lib/components/VDialog/VDialog.mjs +4 -3
  112. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  113. package/lib/components/VDialog/index.d.ts +104 -282
  114. package/lib/components/VDivider/VDivider.mjs +4 -2
  115. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  116. package/lib/components/VDivider/index.d.ts +22 -13
  117. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +4 -2
  118. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  119. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +4 -1
  120. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  121. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +4 -2
  122. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  123. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -1
  124. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  125. package/lib/components/VExpansionPanel/index.d.ts +109 -81
  126. package/lib/components/VField/VField.css +0 -1
  127. package/lib/components/VField/VField.mjs +9 -6
  128. package/lib/components/VField/VField.mjs.map +1 -1
  129. package/lib/components/VField/VField.sass +0 -1
  130. package/lib/components/VField/VFieldLabel.mjs +6 -3
  131. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  132. package/lib/components/VField/index.d.ts +119 -70
  133. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  134. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  135. package/lib/components/VFileInput/index.d.ts +99 -150
  136. package/lib/components/VFooter/VFooter.mjs +4 -2
  137. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  138. package/lib/components/VFooter/index.d.ts +22 -13
  139. package/lib/components/VForm/VForm.mjs +5 -2
  140. package/lib/components/VForm/VForm.mjs.map +1 -1
  141. package/lib/components/VForm/index.d.ts +30 -17
  142. package/lib/components/VGrid/VCol.mjs +4 -1
  143. package/lib/components/VGrid/VCol.mjs.map +1 -1
  144. package/lib/components/VGrid/VContainer.mjs +4 -1
  145. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  146. package/lib/components/VGrid/VRow.mjs +4 -1
  147. package/lib/components/VGrid/VRow.mjs.map +1 -1
  148. package/lib/components/VGrid/index.d.ts +104 -60
  149. package/lib/components/VHover/index.d.ts +20 -44
  150. package/lib/components/VIcon/VIcon.mjs +4 -2
  151. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  152. package/lib/components/VIcon/index.d.ts +23 -26
  153. package/lib/components/VImg/VImg.mjs +5 -3
  154. package/lib/components/VImg/VImg.mjs.map +1 -1
  155. package/lib/components/VImg/index.d.ts +26 -29
  156. package/lib/components/VInput/VInput.mjs +4 -1
  157. package/lib/components/VInput/VInput.mjs.map +1 -1
  158. package/lib/components/VInput/index.d.ts +31 -34
  159. package/lib/components/VItemGroup/VItemGroup.mjs +4 -1
  160. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  161. package/lib/components/VItemGroup/index.d.ts +30 -33
  162. package/lib/components/VKbd/index.d.ts +30 -17
  163. package/lib/components/VLabel/VLabel.mjs +4 -1
  164. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  165. package/lib/components/VLabel/index.d.ts +22 -13
  166. package/lib/components/VLayout/VLayout.mjs +8 -4
  167. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  168. package/lib/components/VLayout/VLayoutItem.mjs +4 -2
  169. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  170. package/lib/components/VLayout/index.d.ts +44 -26
  171. package/lib/components/VLazy/VLazy.mjs +4 -2
  172. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  173. package/lib/components/VLazy/index.d.ts +22 -13
  174. package/lib/components/VList/VList.mjs +7 -24
  175. package/lib/components/VList/VList.mjs.map +1 -1
  176. package/lib/components/VList/VListChildren.mjs.map +1 -1
  177. package/lib/components/VList/VListGroup.mjs +5 -2
  178. package/lib/components/VList/VListGroup.mjs.map +1 -1
  179. package/lib/components/VList/VListItem.mjs +4 -2
  180. package/lib/components/VList/VListItem.mjs.map +1 -1
  181. package/lib/components/VList/VListItemAction.mjs +4 -1
  182. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  183. package/lib/components/VList/VListItemMedia.mjs +4 -1
  184. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  185. package/lib/components/VList/VListSubheader.mjs +5 -3
  186. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  187. package/lib/components/VList/index.d.ts +932 -826
  188. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -2
  189. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  190. package/lib/components/VLocaleProvider/index.d.ts +30 -17
  191. package/lib/components/VMain/VMain.mjs +4 -2
  192. package/lib/components/VMain/VMain.mjs.map +1 -1
  193. package/lib/components/VMain/index.d.ts +30 -17
  194. package/lib/components/VMenu/VMenu.mjs +2 -1
  195. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  196. package/lib/components/VMenu/index.d.ts +104 -282
  197. package/lib/components/VMessages/VMessages.mjs +4 -2
  198. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  199. package/lib/components/VMessages/index.d.ts +22 -145
  200. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +4 -2
  201. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  202. package/lib/components/VNavigationDrawer/index.d.ts +26 -29
  203. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  204. package/lib/components/VNoSsr/index.d.ts +3 -13
  205. package/lib/components/VOverlay/VOverlay.mjs +5 -3
  206. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  207. package/lib/components/VOverlay/index.d.ts +38 -45
  208. package/lib/components/VPagination/VPagination.mjs +4 -1
  209. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  210. package/lib/components/VPagination/index.d.ts +23 -30
  211. package/lib/components/VParallax/VParallax.mjs +5 -2
  212. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  213. package/lib/components/VParallax/index.d.ts +34 -33
  214. package/lib/components/VProgressCircular/VProgressCircular.mjs +4 -2
  215. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  216. package/lib/components/VProgressCircular/index.d.ts +22 -13
  217. package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -4
  218. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  219. package/lib/components/VProgressLinear/index.d.ts +42 -45
  220. package/lib/components/VRadio/VRadio.mjs +2 -1
  221. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  222. package/lib/components/VRadio/index.d.ts +27 -38
  223. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  224. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  225. package/lib/components/VRadioGroup/index.d.ts +39 -62
  226. package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -1
  227. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  228. package/lib/components/VRangeSlider/index.d.ts +27 -38
  229. package/lib/components/VRating/VRating.mjs +4 -1
  230. package/lib/components/VRating/VRating.mjs.map +1 -1
  231. package/lib/components/VRating/index.d.ts +23 -18
  232. package/lib/components/VResponsive/VResponsive.mjs +4 -2
  233. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  234. package/lib/components/VResponsive/index.d.ts +43 -31
  235. package/lib/components/VSelect/VSelect.mjs +2 -1
  236. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  237. package/lib/components/VSelect/index.d.ts +194 -552
  238. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -2
  239. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  240. package/lib/components/VSelectionControl/index.d.ts +76 -46
  241. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
  242. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  243. package/lib/components/VSelectionControlGroup/index.d.ts +23 -14
  244. package/lib/components/VSheet/VSheet.mjs +4 -2
  245. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  246. package/lib/components/VSheet/index.d.ts +22 -13
  247. package/lib/components/VSlideGroup/VSlideGroup.mjs +6 -3
  248. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  249. package/lib/components/VSlideGroup/index.d.ts +59 -90
  250. package/lib/components/VSlider/VSlider.mjs +2 -1
  251. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  252. package/lib/components/VSlider/VSliderThumb.mjs +6 -4
  253. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  254. package/lib/components/VSlider/VSliderTrack.mjs +6 -4
  255. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  256. package/lib/components/VSlider/index.d.ts +27 -38
  257. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  258. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  259. package/lib/components/VSnackbar/index.d.ts +92 -142
  260. package/lib/components/VSwitch/VSwitch.mjs +2 -1
  261. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  262. package/lib/components/VSwitch/index.d.ts +39 -66
  263. package/lib/components/VSystemBar/VSystemBar.mjs +4 -2
  264. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  265. package/lib/components/VSystemBar/index.d.ts +22 -13
  266. package/lib/components/VTable/VTable.mjs +4 -1
  267. package/lib/components/VTable/VTable.mjs.map +1 -1
  268. package/lib/components/VTable/index.d.ts +26 -29
  269. package/lib/components/VTabs/VTab.mjs +2 -2
  270. package/lib/components/VTabs/VTab.mjs.map +1 -1
  271. package/lib/components/VTabs/VTabs.mjs +2 -2
  272. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  273. package/lib/components/VTabs/index.d.ts +45 -27
  274. package/lib/components/VTextField/VTextField.mjs +2 -1
  275. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  276. package/lib/components/VTextField/index.d.ts +208 -269
  277. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  278. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  279. package/lib/components/VTextarea/index.d.ts +79 -122
  280. package/lib/components/VThemeProvider/VThemeProvider.mjs +6 -3
  281. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  282. package/lib/components/VThemeProvider/index.d.ts +22 -13
  283. package/lib/components/VTimeline/VTimeline.mjs +5 -3
  284. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  285. package/lib/components/VTimeline/VTimelineDivider.mjs +4 -1
  286. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  287. package/lib/components/VTimeline/VTimelineItem.mjs +8 -6
  288. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  289. package/lib/components/VTimeline/index.d.ts +67 -57
  290. package/lib/components/VToolbar/VToolbar.mjs +4 -2
  291. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  292. package/lib/components/VToolbar/VToolbarItems.mjs +9 -4
  293. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  294. package/lib/components/VToolbar/VToolbarTitle.mjs +5 -2
  295. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  296. package/lib/components/VToolbar/index.d.ts +74 -71
  297. package/lib/components/VTooltip/VTooltip.mjs +2 -1
  298. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  299. package/lib/components/VTooltip/index.d.ts +104 -150
  300. package/lib/components/VValidation/index.d.ts +0 -12
  301. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +21 -23
  302. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  303. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +5 -2
  304. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  305. package/lib/components/VVirtualScroll/index.d.ts +70 -30
  306. package/lib/components/VWindow/VWindow.mjs +4 -1
  307. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  308. package/lib/components/VWindow/VWindowItem.mjs +4 -1
  309. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  310. package/lib/components/VWindow/index.d.ts +61 -79
  311. package/lib/components/index.d.ts +5229 -6754
  312. package/lib/components/transitions/index.d.ts +0 -192
  313. package/lib/composables/component.mjs +11 -0
  314. package/lib/composables/component.mjs.map +1 -0
  315. package/lib/composables/defaults.mjs +51 -5
  316. package/lib/composables/defaults.mjs.map +1 -1
  317. package/lib/composables/icons.mjs +15 -4
  318. package/lib/composables/icons.mjs.map +1 -1
  319. package/lib/composables/index.mjs +1 -1
  320. package/lib/composables/index.mjs.map +1 -1
  321. package/lib/composables/loader.mjs.map +1 -1
  322. package/lib/entry-bundler.mjs +1 -1
  323. package/lib/framework.mjs +2 -2
  324. package/lib/framework.mjs.map +1 -1
  325. package/lib/iconsets/fa-svg.d.ts +1 -1
  326. package/lib/iconsets/fa.d.ts +1 -1
  327. package/lib/iconsets/fa4.d.ts +1 -1
  328. package/lib/iconsets/md.d.ts +1 -1
  329. package/lib/iconsets/mdi-svg.d.ts +1 -1
  330. package/lib/iconsets/mdi.d.ts +1 -1
  331. package/lib/index.d.ts +11 -11
  332. package/lib/labs/VDataTable/VDataTable.mjs +1 -1
  333. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  334. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  335. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  336. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  337. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  338. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -2
  339. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  340. package/lib/labs/VDataTable/VDataTableServer.mjs +1 -1
  341. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  342. package/lib/labs/VDataTable/index.d.ts +61 -933
  343. package/lib/labs/VInfiniteScroll/index.d.ts +8 -36
  344. package/lib/labs/VSkeletonLoader/index.d.ts +0 -12
  345. package/lib/labs/components.d.ts +115 -1027
  346. package/lib/labs/date/DateAdapter.mjs +2 -0
  347. package/lib/labs/date/DateAdapter.mjs.map +1 -0
  348. package/lib/labs/date/adapters/vuetify.d.ts +52 -0
  349. package/lib/{adapters → labs/date/adapters}/vuetify.mjs +2 -2
  350. package/lib/labs/date/adapters/vuetify.mjs.map +1 -0
  351. package/lib/{composables → labs/date}/date.mjs +3 -3
  352. package/lib/labs/date/date.mjs.map +1 -0
  353. package/lib/labs/date/index.d.ts +40 -0
  354. package/lib/labs/date/index.mjs +2 -0
  355. package/lib/labs/date/index.mjs.map +1 -0
  356. package/lib/labs/index.mjs +3 -2
  357. package/lib/labs/index.mjs.map +1 -1
  358. package/lib/util/createSimpleFunctional.mjs +9 -4
  359. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  360. package/lib/util/defineComponent.mjs +11 -43
  361. package/lib/util/defineComponent.mjs.map +1 -1
  362. package/lib/util/helpers.mjs +28 -2
  363. package/lib/util/helpers.mjs.map +1 -1
  364. package/lib/util/index.mjs +1 -0
  365. package/lib/util/index.mjs.map +1 -1
  366. package/package.json +2 -1
  367. package/lib/adapters/date-adapter.mjs +0 -2
  368. package/lib/adapters/date-adapter.mjs.map +0 -1
  369. package/lib/adapters/vuetify.mjs.map +0 -1
  370. package/lib/composables/date.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v4.0.0-dev-20230426.0
2
+ * Vuetify v4.0.0-dev-20230427.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, onScopeDispose, effectScope, shallowRef, inject as inject$1, unref, provide, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,11 +167,11 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
- function pick(obj, paths) {
170
+ function pick(obj, paths, exclude) {
171
171
  const found = Object.create(null);
172
172
  const rest = Object.create(null);
173
173
  for (const key in obj) {
174
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key)) {
174
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
175
175
  found[key] = obj[key];
176
176
  } else {
177
177
  rest[key] = obj[key];
@@ -356,6 +356,32 @@ function callEvent(handler) {
356
356
  handler(...args);
357
357
  }
358
358
  }
359
+ function focusableChildren(el) {
360
+ const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"]):not([disabled])`).join(', ');
361
+ return [...el.querySelectorAll(targets)];
362
+ }
363
+ function focusChild(el, location) {
364
+ const focusable = focusableChildren(el);
365
+ const idx = focusable.indexOf(document.activeElement);
366
+ if (!location) {
367
+ if (!el.contains(document.activeElement)) {
368
+ focusable[0]?.focus();
369
+ }
370
+ } else if (location === 'first') {
371
+ focusable[0]?.focus();
372
+ } else if (location === 'last') {
373
+ focusable.at(-1)?.focus();
374
+ } else {
375
+ let _el;
376
+ let idxx = idx;
377
+ const inc = location === 'next' ? 1 : -1;
378
+ do {
379
+ idxx += inc;
380
+ _el = focusable[idxx];
381
+ } while ((!_el || _el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
382
+ if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
383
+ }
384
+ }
359
385
 
360
386
  const block = ['top', 'bottom'];
361
387
  const inline = ['start', 'end', 'left', 'right'];
@@ -856,44 +882,6 @@ function getContrast(first, second) {
856
882
  return (light + 0.05) / (dark + 0.05);
857
883
  }
858
884
 
859
- // Utilities
860
- function getCurrentInstance(name, message) {
861
- const vm = getCurrentInstance$1();
862
- if (!vm) {
863
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
864
- }
865
- return vm;
866
- }
867
- function getCurrentInstanceName() {
868
- let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
869
- const vm = getCurrentInstance(name).type;
870
- return toKebabCase(vm?.aliasName || vm?.name);
871
- }
872
- let _uid = 0;
873
- let _map = new WeakMap();
874
- function getUid() {
875
- const vm = getCurrentInstance('getUid');
876
- if (_map.has(vm)) return _map.get(vm);else {
877
- const uid = _uid++;
878
- _map.set(vm, uid);
879
- return uid;
880
- }
881
- }
882
- getUid.reset = () => {
883
- _uid = 0;
884
- _map = new WeakMap();
885
- };
886
-
887
- function injectSelf(key) {
888
- const {
889
- provides
890
- } = getCurrentInstance('injectSelf');
891
- if (provides && key in provides) {
892
- // TS doesn't allow symbol as index type
893
- return provides[key];
894
- }
895
- }
896
-
897
885
  /**
898
886
  * Creates a factory function for props definitions.
899
887
  * This is used to define props in a composable then override
@@ -947,17 +935,54 @@ function propsFactory(props, source) {
947
935
 
948
936
  // Types
949
937
 
938
+ // Composables
939
+ const makeComponentProps = propsFactory({
940
+ class: [String, Array],
941
+ style: {
942
+ type: [String, Array, Object],
943
+ default: null
944
+ }
945
+ }, 'component');
946
+
947
+ function useToggleScope(source, fn) {
948
+ let scope;
949
+ function start() {
950
+ scope = effectScope();
951
+ scope.run(() => fn.length ? fn(() => {
952
+ scope?.stop();
953
+ start();
954
+ }) : fn());
955
+ }
956
+ watch(source, active => {
957
+ if (active && !scope) {
958
+ start();
959
+ } else if (!active) {
960
+ scope?.stop();
961
+ scope = undefined;
962
+ }
963
+ }, {
964
+ immediate: true
965
+ });
966
+ onScopeDispose(() => {
967
+ scope?.stop();
968
+ });
969
+ }
970
+
971
+ // Composables
972
+
973
+ // Types
974
+
950
975
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
951
976
  function createDefaults(options) {
952
977
  return ref(options);
953
978
  }
954
- function useDefaults() {
979
+ function injectDefaults() {
955
980
  const defaults = inject$1(DefaultsSymbol);
956
981
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
957
982
  return defaults;
958
983
  }
959
984
  function provideDefaults(defaults, options) {
960
- const injectedDefaults = useDefaults();
985
+ const injectedDefaults = injectDefaults();
961
986
  const providedDefaults = ref(defaults);
962
987
  const newDefaults = computed(() => {
963
988
  const disabled = unref(options?.disabled);
@@ -984,41 +1009,56 @@ function provideDefaults(defaults, options) {
984
1009
  provide(DefaultsSymbol, newDefaults);
985
1010
  return newDefaults;
986
1011
  }
987
-
988
- function useToggleScope(source, fn) {
989
- let scope;
990
- function start() {
991
- scope = effectScope();
992
- scope.run(() => fn.length ? fn(() => {
993
- scope?.stop();
994
- start();
995
- }) : fn());
996
- }
997
- watch(source, active => {
998
- if (active && !scope) {
999
- start();
1000
- } else if (!active) {
1001
- scope?.stop();
1002
- scope = undefined;
1012
+ function propIsDefined(vnode, prop) {
1013
+ return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1014
+ }
1015
+ function useDefaults(props, name) {
1016
+ let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
1017
+ const vm = getCurrentInstance('useDefaults');
1018
+ name = name ?? vm.type.name ?? vm.type.__name;
1019
+ if (!name) {
1020
+ throw new Error('[Vuetify] Could not determine component name');
1021
+ }
1022
+ const componentDefaults = computed(() => defaults.value[props._as ?? name]);
1023
+ const _props = new Proxy(props, {
1024
+ get(target, prop) {
1025
+ const propValue = Reflect.get(target, prop);
1026
+ if (prop === 'class' || prop === 'style') {
1027
+ return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1028
+ } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1029
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1030
+ }
1031
+ return propValue;
1003
1032
  }
1004
- }, {
1005
- immediate: true
1006
1033
  });
1007
- onScopeDispose(() => {
1008
- scope?.stop();
1034
+ const _subcomponentDefaults = shallowRef();
1035
+ watchEffect(() => {
1036
+ if (componentDefaults.value) {
1037
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1038
+ let [key] = _ref;
1039
+ return key.startsWith(key[0].toUpperCase());
1040
+ });
1041
+ if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1042
+ }
1009
1043
  });
1044
+ function provideSubDefaults() {
1045
+ // If subcomponent defaults are provided, override any
1046
+ // subcomponents provided by the component's setup function.
1047
+ // This uses injectSelf so must be done after the original setup to work.
1048
+ useToggleScope(_subcomponentDefaults, () => {
1049
+ provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1050
+ });
1051
+ }
1052
+ return {
1053
+ props: _props,
1054
+ provideSubDefaults
1055
+ };
1010
1056
  }
1011
1057
 
1012
1058
  // Utils
1013
1059
 
1014
1060
  // Types
1015
1061
 
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
1062
  // Implementation
1023
1063
  function defineComponent(options) {
1024
1064
  options._setup = options._setup ?? options.setup;
@@ -1030,43 +1070,20 @@ function defineComponent(options) {
1030
1070
  options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1031
1071
  const propKeys = Object.keys(options.props);
1032
1072
  options.filterProps = function filterProps(props) {
1033
- return pick(props, propKeys);
1073
+ return pick(props, propKeys, ['class', 'style']);
1034
1074
  };
1035
1075
  options.props._as = String;
1036
1076
  options.setup = function setup(props, ctx) {
1037
- const defaults = useDefaults();
1077
+ const defaults = injectDefaults();
1038
1078
 
1039
1079
  // Skip props proxy if defaults are not provided
1040
1080
  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
- });
1081
+ const {
1082
+ props: _props,
1083
+ provideSubDefaults
1084
+ } = useDefaults(props, props._as ?? options.name, defaults);
1062
1085
  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
- });
1086
+ provideSubDefaults();
1070
1087
  return setupBindings;
1071
1088
  };
1072
1089
  }
@@ -1087,15 +1104,19 @@ function createSimpleFunctional(klass) {
1087
1104
  tag: {
1088
1105
  type: String,
1089
1106
  default: tag
1090
- }
1107
+ },
1108
+ ...makeComponentProps()
1091
1109
  },
1092
1110
  setup(props, _ref) {
1093
1111
  let {
1094
1112
  slots
1095
1113
  } = _ref;
1096
- return () => h(props.tag, {
1097
- class: klass
1098
- }, slots.default?.());
1114
+ return () => {
1115
+ return h(props.tag, {
1116
+ class: [klass, props.class],
1117
+ style: props.style
1118
+ }, slots.default?.());
1119
+ };
1099
1120
  }
1100
1121
  });
1101
1122
  }
@@ -1128,6 +1149,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1128
1149
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1129
1150
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1130
1151
 
1152
+ // Utilities
1153
+ function getCurrentInstance(name, message) {
1154
+ const vm = getCurrentInstance$1();
1155
+ if (!vm) {
1156
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1157
+ }
1158
+ return vm;
1159
+ }
1160
+ function getCurrentInstanceName() {
1161
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1162
+ const vm = getCurrentInstance(name).type;
1163
+ return toKebabCase(vm?.aliasName || vm?.name);
1164
+ }
1165
+ let _uid = 0;
1166
+ let _map = new WeakMap();
1167
+ function getUid() {
1168
+ const vm = getCurrentInstance('getUid');
1169
+ if (_map.has(vm)) return _map.get(vm);else {
1170
+ const uid = _uid++;
1171
+ _map.set(vm, uid);
1172
+ return uid;
1173
+ }
1174
+ }
1175
+ getUid.reset = () => {
1176
+ _uid = 0;
1177
+ _map = new WeakMap();
1178
+ };
1179
+
1131
1180
  function getScrollParent(el) {
1132
1181
  while (el) {
1133
1182
  if (hasScrollbar(el)) return el;
@@ -1151,6 +1200,16 @@ function hasScrollbar(el) {
1151
1200
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1152
1201
  }
1153
1202
 
1203
+ function injectSelf(key) {
1204
+ const {
1205
+ provides
1206
+ } = getCurrentInstance('injectSelf');
1207
+ if (provides && key in provides) {
1208
+ // TS doesn't allow symbol as index type
1209
+ return provides[key];
1210
+ }
1211
+ }
1212
+
1154
1213
  function isFixedPosition(el) {
1155
1214
  while (el) {
1156
1215
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -2133,6 +2192,7 @@ function useRtl() {
2133
2192
  const VApp = genericComponent()({
2134
2193
  name: 'VApp',
2135
2194
  props: {
2195
+ ...makeComponentProps(),
2136
2196
  ...makeLayoutProps({
2137
2197
  fullHeight: true
2138
2198
  }),
@@ -2155,8 +2215,8 @@ const VApp = genericComponent()({
2155
2215
  } = useRtl();
2156
2216
  useRender(() => createVNode("div", {
2157
2217
  "ref": layoutRef,
2158
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2159
- "style": layoutStyles.value
2218
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2219
+ "style": [layoutStyles.value, props.style]
2160
2220
  }, [createVNode("div", {
2161
2221
  "class": "v-application__wrap"
2162
2222
  }, [slots.default?.()])]));
@@ -2581,6 +2641,7 @@ const VResponsive = genericComponent()({
2581
2641
  props: {
2582
2642
  aspectRatio: [String, Number],
2583
2643
  contentClass: String,
2644
+ ...makeComponentProps(),
2584
2645
  ...makeDimensionProps()
2585
2646
  },
2586
2647
  setup(props, _ref) {
@@ -2594,8 +2655,8 @@ const VResponsive = genericComponent()({
2594
2655
  dimensionStyles
2595
2656
  } = useDimension(props);
2596
2657
  useRender(() => createVNode("div", {
2597
- "class": "v-responsive",
2598
- "style": dimensionStyles.value
2658
+ "class": ['v-responsive', props.class],
2659
+ "style": [dimensionStyles.value, props.style]
2599
2660
  }, [createVNode("div", {
2600
2661
  "class": "v-responsive__sizer",
2601
2662
  "style": aspectStyles.value
@@ -2713,6 +2774,7 @@ const VImg = genericComponent()({
2713
2774
  },
2714
2775
  srcset: String,
2715
2776
  width: [String, Number],
2777
+ ...makeComponentProps(),
2716
2778
  ...makeTransitionProps()
2717
2779
  },
2718
2780
  emits: {
@@ -2900,10 +2962,10 @@ const VImg = genericComponent()({
2900
2962
  useRender(() => withDirectives(createVNode(VResponsive, {
2901
2963
  "class": ['v-img', {
2902
2964
  'v-img--booting': !isBooted.value
2903
- }],
2904
- "style": {
2965
+ }, props.class],
2966
+ "style": [{
2905
2967
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2906
- },
2968
+ }, props.style],
2907
2969
  "aspectRatio": aspectRatio.value,
2908
2970
  "aria-label": props.alt,
2909
2971
  "role": props.alt ? 'img' : undefined
@@ -2938,10 +3000,9 @@ const makeTagProps = propsFactory({
2938
3000
  }
2939
3001
  }, 'tag');
2940
3002
 
2941
- // Types
2942
-
2943
3003
  const makeVToolbarTitleProps = propsFactory({
2944
3004
  text: String,
3005
+ ...makeComponentProps(),
2945
3006
  ...makeTagProps()
2946
3007
  }, 'v-toolbar-title');
2947
3008
  const VToolbarTitle = genericComponent()({
@@ -2954,7 +3015,8 @@ const VToolbarTitle = genericComponent()({
2954
3015
  useRender(() => {
2955
3016
  const hasText = !!(slots.default || slots.text || props.text);
2956
3017
  return createVNode(props.tag, {
2957
- "class": "v-toolbar-title"
3018
+ "class": ['v-toolbar-title', props.class],
3019
+ "style": props.style
2958
3020
  }, {
2959
3021
  default: () => [hasText && createVNode("div", {
2960
3022
  "class": "v-toolbar-title__placeholder"
@@ -3135,6 +3197,7 @@ const makeVToolbarProps = propsFactory({
3135
3197
  image: String,
3136
3198
  title: String,
3137
3199
  ...makeBorderProps(),
3200
+ ...makeComponentProps(),
3138
3201
  ...makeElevationProps(),
3139
3202
  ...makeRoundedProps(),
3140
3203
  ...makeTagProps({
@@ -3185,8 +3248,8 @@ const VToolbar = genericComponent()({
3185
3248
  'v-toolbar--flat': props.flat,
3186
3249
  'v-toolbar--floating': props.floating,
3187
3250
  [`v-toolbar--density-${props.density}`]: true
3188
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3189
- "style": [backgroundColorStyles.value]
3251
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3252
+ "style": [backgroundColorStyles.value, props.style]
3190
3253
  }, {
3191
3254
  default: () => [hasImage && createVNode("div", {
3192
3255
  "key": "image",
@@ -3471,13 +3534,13 @@ const VAppBar = genericComponent()({
3471
3534
  "ref": vToolbarRef,
3472
3535
  "class": ['v-app-bar', {
3473
3536
  'v-app-bar--bottom': props.location === 'bottom'
3474
- }],
3475
- "style": {
3537
+ }, props.class],
3538
+ "style": [{
3476
3539
  ...layoutItemStyles.value,
3477
3540
  '--v-toolbar-image-opacity': opacity.value,
3478
3541
  height: undefined,
3479
3542
  ...ssrBootStyles.value
3480
- }
3543
+ }, props.style]
3481
3544
  }, toolbarProps, {
3482
3545
  "collapse": isCollapsed.value,
3483
3546
  "flat": isFlat.value
@@ -3564,6 +3627,7 @@ function useVariant(props) {
3564
3627
  const makeVBtnGroupProps = propsFactory({
3565
3628
  divided: Boolean,
3566
3629
  ...makeBorderProps(),
3630
+ ...makeComponentProps(),
3567
3631
  ...makeDensityProps(),
3568
3632
  ...makeElevationProps(),
3569
3633
  ...makeRoundedProps(),
@@ -3606,7 +3670,8 @@ const VBtnGroup = genericComponent()({
3606
3670
  return createVNode(props.tag, {
3607
3671
  "class": ['v-btn-group', {
3608
3672
  'v-btn-group--divided': props.divided
3609
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3673
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3674
+ "style": props.style
3610
3675
  }, slots);
3611
3676
  });
3612
3677
  }
@@ -3839,8 +3904,10 @@ const VBtnToggle = genericComponent()({
3839
3904
  useRender(() => {
3840
3905
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3841
3906
  return createVNode(VBtnGroup, mergeProps({
3842
- "class": "v-btn-toggle"
3843
- }, btnGroupProps), {
3907
+ "class": ['v-btn-toggle', props.class]
3908
+ }, btnGroupProps, {
3909
+ "style": props.style
3910
+ }), {
3844
3911
  default: () => [slots.default?.({
3845
3912
  isSelected,
3846
3913
  next,
@@ -3911,7 +3978,7 @@ const mdi = {
3911
3978
 
3912
3979
  // Types
3913
3980
 
3914
- const IconValue = [String, Function, Object];
3981
+ const IconValue = [String, Function, Object, Array];
3915
3982
  const IconSymbol = Symbol.for('vuetify:icons');
3916
3983
  const makeIconProps = propsFactory({
3917
3984
  icon: {
@@ -3931,8 +3998,9 @@ const VComponentIcon = genericComponent()({
3931
3998
  slots
3932
3999
  } = _ref;
3933
4000
  return () => {
4001
+ const Icon = props.icon;
3934
4002
  return createVNode(props.tag, null, {
3935
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4003
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3936
4004
  });
3937
4005
  };
3938
4006
  }
@@ -3955,7 +4023,12 @@ const VSvgIcon = defineComponent({
3955
4023
  "viewBox": "0 0 24 24",
3956
4024
  "role": "img",
3957
4025
  "aria-hidden": "true"
3958
- }, [createVNode("path", {
4026
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4027
+ "d": path[0],
4028
+ "fill-opacity": path[1]
4029
+ }, null) : createVNode("path", {
4030
+ "d": path
4031
+ }, null)) : createVNode("path", {
3959
4032
  "d": props.icon
3960
4033
  }, null)])]
3961
4034
  });
@@ -4020,7 +4093,12 @@ const useIcon = props => {
4020
4093
  }
4021
4094
  }
4022
4095
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
4023
- if (typeof icon !== 'string') {
4096
+ if (Array.isArray(icon)) {
4097
+ return {
4098
+ component: VSvgIcon,
4099
+ icon
4100
+ };
4101
+ } else if (typeof icon !== 'string') {
4024
4102
  return {
4025
4103
  component: VComponentIcon,
4026
4104
  icon
@@ -4077,6 +4155,7 @@ const makeVIconProps = propsFactory({
4077
4155
  start: Boolean,
4078
4156
  end: Boolean,
4079
4157
  icon: IconValue,
4158
+ ...makeComponentProps(),
4080
4159
  ...makeSizeProps(),
4081
4160
  ...makeTagProps({
4082
4161
  tag: 'i'
@@ -4119,12 +4198,12 @@ const VIcon = genericComponent()({
4119
4198
  'v-icon--clickable': !!attrs.onClick,
4120
4199
  'v-icon--start': props.start,
4121
4200
  'v-icon--end': props.end
4122
- }],
4201
+ }, props.class],
4123
4202
  "style": [!sizeClasses.value ? {
4124
4203
  fontSize: convertToUnit(props.size),
4125
4204
  height: convertToUnit(props.size),
4126
4205
  width: convertToUnit(props.size)
4127
- } : undefined, textColorStyles.value],
4206
+ } : undefined, textColorStyles.value, props.style],
4128
4207
  "role": attrs.onClick ? 'button' : undefined,
4129
4208
  "aria-hidden": !attrs.onClick
4130
4209
  }, {
@@ -4182,6 +4261,7 @@ const VProgressCircular = genericComponent()({
4182
4261
  type: [Number, String],
4183
4262
  default: 4
4184
4263
  },
4264
+ ...makeComponentProps(),
4185
4265
  ...makeSizeProps(),
4186
4266
  ...makeTagProps({
4187
4267
  tag: 'div'
@@ -4237,8 +4317,8 @@ const VProgressCircular = genericComponent()({
4237
4317
  'v-progress-circular--indeterminate': !!props.indeterminate,
4238
4318
  'v-progress-circular--visible': isIntersecting.value,
4239
4319
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4240
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4241
- "style": [sizeStyles.value, textColorStyles.value],
4320
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4321
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4242
4322
  "role": "progressbar",
4243
4323
  "aria-valuemin": "0",
4244
4324
  "aria-valuemax": "100",
@@ -4657,6 +4737,7 @@ const VProgressLinear = genericComponent()({
4657
4737
  stream: Boolean,
4658
4738
  striped: Boolean,
4659
4739
  roundedBar: Boolean,
4740
+ ...makeComponentProps(),
4660
4741
  ...makeLocationProps({
4661
4742
  location: 'top'
4662
4743
  }),
@@ -4728,14 +4809,14 @@ const VProgressLinear = genericComponent()({
4728
4809
  'v-progress-linear--rounded': props.rounded,
4729
4810
  'v-progress-linear--rounded-bar': props.roundedBar,
4730
4811
  'v-progress-linear--striped': props.striped
4731
- }, roundedClasses.value, themeClasses.value],
4732
- "style": {
4812
+ }, roundedClasses.value, themeClasses.value, props.class],
4813
+ "style": [{
4733
4814
  bottom: props.location === 'bottom' ? 0 : undefined,
4734
4815
  top: props.location === 'top' ? 0 : undefined,
4735
4816
  height: props.active ? convertToUnit(height.value) : 0,
4736
4817
  '--v-progress-linear-height': convertToUnit(height.value),
4737
4818
  ...locationStyles.value
4738
- },
4819
+ }, props.style],
4739
4820
  "role": "progressbar",
4740
4821
  "aria-hidden": props.active ? 'false' : 'true',
4741
4822
  "aria-valuemin": "0",
@@ -4946,7 +5027,7 @@ const makeVBtnProps = propsFactory({
4946
5027
  },
4947
5028
  text: String,
4948
5029
  ...makeBorderProps(),
4949
- ...makeRoundedProps(),
5030
+ ...makeComponentProps(),
4950
5031
  ...makeDensityProps(),
4951
5032
  ...makeDimensionProps(),
4952
5033
  ...makeElevationProps(),
@@ -4954,6 +5035,7 @@ const makeVBtnProps = propsFactory({
4954
5035
  ...makeLoaderProps(),
4955
5036
  ...makeLocationProps(),
4956
5037
  ...makePositionProps(),
5038
+ ...makeRoundedProps(),
4957
5039
  ...makeRouterProps(),
4958
5040
  ...makeSizeProps(),
4959
5041
  ...makeTagProps({
@@ -5051,8 +5133,8 @@ const VBtn = genericComponent()({
5051
5133
  'v-btn--icon': !!props.icon,
5052
5134
  'v-btn--loading': props.loading,
5053
5135
  '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],
5136
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5137
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5056
5138
  "disabled": isDisabled.value || undefined,
5057
5139
  "href": link.href.value,
5058
5140
  "onClick": e => {
@@ -5129,15 +5211,17 @@ const VAppBarNavIcon = genericComponent()({
5129
5211
  icon: {
5130
5212
  type: IconValue,
5131
5213
  default: '$menu'
5132
- }
5214
+ },
5215
+ ...makeComponentProps()
5133
5216
  },
5134
5217
  setup(props, _ref) {
5135
5218
  let {
5136
5219
  slots
5137
5220
  } = _ref;
5138
5221
  useRender(() => createVNode(VBtn, {
5139
- "class": "v-app-bar-nav-icon",
5140
- "icon": props.icon
5222
+ "class": ['v-app-bar-nav-icon', props.class],
5223
+ "icon": props.icon,
5224
+ "style": props.style
5141
5225
  }, slots));
5142
5226
  return {};
5143
5227
  }
@@ -5145,9 +5229,12 @@ const VAppBarNavIcon = genericComponent()({
5145
5229
 
5146
5230
  const VToolbarItems = genericComponent()({
5147
5231
  name: 'VToolbarItems',
5148
- props: makeVariantProps({
5149
- variant: 'text'
5150
- }),
5232
+ props: {
5233
+ ...makeComponentProps(),
5234
+ ...makeVariantProps({
5235
+ variant: 'text'
5236
+ })
5237
+ },
5151
5238
  setup(props, _ref) {
5152
5239
  let {
5153
5240
  slots
@@ -5160,7 +5247,8 @@ const VToolbarItems = genericComponent()({
5160
5247
  }
5161
5248
  });
5162
5249
  useRender(() => createVNode("div", {
5163
- "class": "v-toolbar-items"
5250
+ "class": ['v-toolbar-items', props.class],
5251
+ "style": props.style
5164
5252
  }, [slots.default?.()]));
5165
5253
  return {};
5166
5254
  }
@@ -5222,6 +5310,7 @@ const VAlert = genericComponent()({
5222
5310
  type: String,
5223
5311
  validator: val => allowedTypes.includes(val)
5224
5312
  },
5313
+ ...makeComponentProps(),
5225
5314
  ...makeDensityProps(),
5226
5315
  ...makeDimensionProps(),
5227
5316
  ...makeElevationProps(),
@@ -5304,8 +5393,8 @@ const VAlert = genericComponent()({
5304
5393
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5305
5394
  }, {
5306
5395
  '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],
5396
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5397
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5309
5398
  "role": "alert"
5310
5399
  }, {
5311
5400
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5399,6 +5488,7 @@ const VLabel = genericComponent()({
5399
5488
  props: {
5400
5489
  text: String,
5401
5490
  clickable: Boolean,
5491
+ ...makeComponentProps(),
5402
5492
  ...makeThemeProps()
5403
5493
  },
5404
5494
  setup(props, _ref) {
@@ -5408,7 +5498,8 @@ const VLabel = genericComponent()({
5408
5498
  useRender(() => createVNode("label", {
5409
5499
  "class": ['v-label', {
5410
5500
  'v-label--clickable': props.clickable
5411
- }]
5501
+ }, props.class],
5502
+ "style": props.style
5412
5503
  }, [props.text, slots.default?.()]));
5413
5504
  return {};
5414
5505
  }
@@ -5417,7 +5508,8 @@ const VLabel = genericComponent()({
5417
5508
  const VFieldLabel = genericComponent()({
5418
5509
  name: 'VFieldLabel',
5419
5510
  props: {
5420
- floating: Boolean
5511
+ floating: Boolean,
5512
+ ...makeComponentProps()
5421
5513
  },
5422
5514
  setup(props, _ref) {
5423
5515
  let {
@@ -5426,7 +5518,8 @@ const VFieldLabel = genericComponent()({
5426
5518
  useRender(() => createVNode(VLabel, {
5427
5519
  "class": ['v-field-label', {
5428
5520
  'v-field-label--floating': props.floating
5429
- }],
5521
+ }, props.class],
5522
+ "style": props.style,
5430
5523
  "aria-hidden": props.floating || undefined
5431
5524
  }, slots));
5432
5525
  return {};
@@ -5477,6 +5570,7 @@ const makeVFieldProps = propsFactory({
5477
5570
  },
5478
5571
  active: Boolean,
5479
5572
  color: String,
5573
+ baseColor: String,
5480
5574
  dirty: Boolean,
5481
5575
  disabled: Boolean,
5482
5576
  error: Boolean,
@@ -5494,9 +5588,10 @@ const makeVFieldProps = propsFactory({
5494
5588
  'onClick:clear': EventProp(),
5495
5589
  'onClick:appendInner': EventProp(),
5496
5590
  'onClick:prependInner': EventProp(),
5497
- ...makeThemeProps(),
5591
+ ...makeComponentProps(),
5498
5592
  ...makeLoaderProps(),
5499
- ...makeRoundedProps()
5593
+ ...makeRoundedProps(),
5594
+ ...makeThemeProps()
5500
5595
  }, 'v-field');
5501
5596
  const VField = genericComponent()({
5502
5597
  name: 'VField',
@@ -5550,7 +5645,7 @@ const VField = genericComponent()({
5550
5645
  textColorClasses,
5551
5646
  textColorStyles
5552
5647
  } = useTextColor(computed(() => {
5553
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5648
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5554
5649
  }));
5555
5650
  watch(isActive, val => {
5556
5651
  if (hasLabel.value) {
@@ -5627,8 +5722,8 @@ const VField = genericComponent()({
5627
5722
  'v-field--single-line': props.singleLine,
5628
5723
  'v-field--no-label': !label,
5629
5724
  [`v-field--variant-${props.variant}`]: true
5630
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value],
5631
- "style": [backgroundColorStyles.value, textColorStyles.value],
5725
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5726
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5632
5727
  "onClick": onClick
5633
5728
  }, attrs), [createVNode("div", {
5634
5729
  "class": "v-field__overlay"
@@ -5716,7 +5811,7 @@ const VField = genericComponent()({
5716
5811
  });
5717
5812
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5718
5813
  function filterFieldProps(attrs) {
5719
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5814
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5720
5815
  return pick(attrs, keys);
5721
5816
  }
5722
5817
 
@@ -5731,6 +5826,7 @@ const VMessages = genericComponent()({
5731
5826
  type: [Array, String],
5732
5827
  default: () => []
5733
5828
  },
5829
+ ...makeComponentProps(),
5734
5830
  ...makeTransitionProps({
5735
5831
  transition: {
5736
5832
  component: VSlideYTransition,
@@ -5751,8 +5847,8 @@ const VMessages = genericComponent()({
5751
5847
  useRender(() => createVNode(MaybeTransition, {
5752
5848
  "transition": props.transition,
5753
5849
  "tag": "div",
5754
- "class": ['v-messages', textColorClasses.value],
5755
- "style": textColorStyles.value,
5850
+ "class": ['v-messages', textColorClasses.value, props.class],
5851
+ "style": [textColorStyles.value, props.style],
5756
5852
  "role": "alert",
5757
5853
  "aria-live": "polite"
5758
5854
  }, {
@@ -6048,6 +6144,7 @@ const makeVInputProps = propsFactory({
6048
6144
  },
6049
6145
  'onClick:prepend': EventProp(),
6050
6146
  'onClick:append': EventProp(),
6147
+ ...makeComponentProps(),
6051
6148
  ...makeDensityProps(),
6052
6149
  ...makeValidationProps()
6053
6150
  }, 'v-input');
@@ -6115,7 +6212,8 @@ const VInput = genericComponent()({
6115
6212
  const hasMessages = messages.value.length > 0;
6116
6213
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
6117
6214
  return createVNode("div", {
6118
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6215
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6216
+ "style": props.style
6119
6217
  }, [hasPrepend && createVNode("div", {
6120
6218
  "key": "prepend",
6121
6219
  "class": "v-input__prepend"
@@ -6158,6 +6256,7 @@ const VCounter = genericComponent()({
6158
6256
  type: [Number, String],
6159
6257
  default: 0
6160
6258
  },
6259
+ ...makeComponentProps(),
6161
6260
  ...makeTransitionProps({
6162
6261
  transition: {
6163
6262
  component: VSlideYTransition
@@ -6175,7 +6274,8 @@ const VCounter = genericComponent()({
6175
6274
  "transition": props.transition
6176
6275
  }, {
6177
6276
  default: () => [withDirectives(createVNode("div", {
6178
- "class": "v-counter"
6277
+ "class": ['v-counter', props.class],
6278
+ "style": props.style
6179
6279
  }, [slots.default ? slots.default({
6180
6280
  counter: counter.value,
6181
6281
  max: props.max,
@@ -6378,7 +6478,8 @@ const VTextField = genericComponent()({
6378
6478
  'v-text-field--prefixed': props.prefix,
6379
6479
  'v-text-field--suffixed': props.suffix,
6380
6480
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6381
- }]
6481
+ }, props.class],
6482
+ "style": props.style
6382
6483
  }, rootAttrs, inputProps, {
6383
6484
  "focused": isFocused.value
6384
6485
  }), {
@@ -6494,6 +6595,7 @@ const VSelectionControlGroup = genericComponent()({
6494
6595
  type: String,
6495
6596
  default: 'VSelectionControl'
6496
6597
  },
6598
+ ...makeComponentProps(),
6497
6599
  ...makeSelectionControlGroupProps()
6498
6600
  },
6499
6601
  emits: {
@@ -6541,7 +6643,8 @@ const VSelectionControlGroup = genericComponent()({
6541
6643
  useRender(() => createVNode("div", {
6542
6644
  "class": ['v-selection-control-group', {
6543
6645
  'v-selection-control-group--inline': props.inline
6544
- }],
6646
+ }, props.class],
6647
+ "style": props.style,
6545
6648
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6546
6649
  }, [slots.default?.()]));
6547
6650
  return {};
@@ -6555,6 +6658,7 @@ const makeSelectionControlProps = propsFactory({
6555
6658
  trueValue: null,
6556
6659
  falseValue: null,
6557
6660
  value: null,
6661
+ ...makeComponentProps(),
6558
6662
  ...makeSelectionControlGroupProps()
6559
6663
  }, 'v-selection-control');
6560
6664
  function useSelectionControl(props) {
@@ -6669,8 +6773,10 @@ const VSelectionControl = genericComponent()({
6669
6773
  'v-selection-control--focused': isFocused.value,
6670
6774
  'v-selection-control--focus-visible': isFocusVisible.value,
6671
6775
  'v-selection-control--inline': props.inline
6672
- }, densityClasses.value]
6673
- }, rootAttrs), [createVNode("div", {
6776
+ }, densityClasses.value, props.class]
6777
+ }, rootAttrs, {
6778
+ "style": props.style
6779
+ }), [createVNode("div", {
6674
6780
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6675
6781
  "style": textColorStyles.value
6676
6782
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6752,7 +6858,8 @@ const VCheckboxBtn = genericComponent()({
6752
6858
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6753
6859
  "modelValue": model.value,
6754
6860
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6755
- "class": "v-checkbox-btn",
6861
+ "class": ['v-checkbox-btn', props.class],
6862
+ "style": props.style,
6756
6863
  "type": "checkbox",
6757
6864
  "inline": true,
6758
6865
  "falseIcon": falseIcon.value,
@@ -6792,10 +6899,11 @@ const VCheckbox = genericComponent()({
6792
6899
  const [inputProps, _1] = VInput.filterProps(props);
6793
6900
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6794
6901
  return createVNode(VInput, mergeProps({
6795
- "class": "v-checkbox"
6902
+ "class": ['v-checkbox', props.class]
6796
6903
  }, inputAttrs, inputProps, {
6797
6904
  "id": id.value,
6798
- "focused": isFocused.value
6905
+ "focused": isFocused.value,
6906
+ "style": props.style
6799
6907
  }), {
6800
6908
  ...slots,
6801
6909
  default: _ref2 => {
@@ -6826,6 +6934,7 @@ const makeVAvatarProps = propsFactory({
6826
6934
  end: Boolean,
6827
6935
  icon: IconValue,
6828
6936
  image: String,
6937
+ ...makeComponentProps(),
6829
6938
  ...makeDensityProps(),
6830
6939
  ...makeRoundedProps(),
6831
6940
  ...makeSizeProps(),
@@ -6864,8 +6973,8 @@ const VAvatar = genericComponent()({
6864
6973
  "class": ['v-avatar', {
6865
6974
  'v-avatar--start': props.start,
6866
6975
  'v-avatar--end': props.end
6867
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6868
- "style": [colorStyles.value, sizeStyles.value]
6976
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6977
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6869
6978
  }, {
6870
6979
  default: () => [props.image ? createVNode(VImg, {
6871
6980
  "key": "image",
@@ -6893,6 +7002,7 @@ const VChipGroup = genericComponent()({
6893
7002
  type: Function,
6894
7003
  default: deepEqual
6895
7004
  },
7005
+ ...makeComponentProps(),
6896
7006
  ...makeGroupProps({
6897
7007
  selectedClass: 'v-chip--selected'
6898
7008
  }),
@@ -6930,7 +7040,8 @@ const VChipGroup = genericComponent()({
6930
7040
  useRender(() => createVNode(props.tag, {
6931
7041
  "class": ['v-chip-group', {
6932
7042
  'v-chip-group--column': props.column
6933
- }, themeClasses.value]
7043
+ }, themeClasses.value, props.class],
7044
+ "style": props.style
6934
7045
  }, {
6935
7046
  default: () => [slots.default?.({
6936
7047
  isSelected,
@@ -6944,8 +7055,6 @@ const VChipGroup = genericComponent()({
6944
7055
  }
6945
7056
  });
6946
7057
 
6947
- // Types
6948
-
6949
7058
  const VChip = genericComponent()({
6950
7059
  name: 'VChip',
6951
7060
  directives: {
@@ -6990,6 +7099,7 @@ const VChip = genericComponent()({
6990
7099
  onClick: EventProp(),
6991
7100
  onClickOnce: EventProp(),
6992
7101
  ...makeBorderProps(),
7102
+ ...makeComponentProps(),
6993
7103
  ...makeDensityProps(),
6994
7104
  ...makeElevationProps(),
6995
7105
  ...makeGroupItemProps(),
@@ -7082,8 +7192,8 @@ const VChip = genericComponent()({
7082
7192
  'v-chip--link': isClickable.value,
7083
7193
  'v-chip--filter': hasFilter,
7084
7194
  '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],
7195
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7196
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
7087
7197
  "disabled": props.disabled || undefined,
7088
7198
  "draggable": props.draggable,
7089
7199
  "href": link.href.value,
@@ -7192,6 +7302,7 @@ const VDivider = genericComponent()({
7192
7302
  length: [Number, String],
7193
7303
  thickness: [Number, String],
7194
7304
  vertical: Boolean,
7305
+ ...makeComponentProps(),
7195
7306
  ...makeThemeProps()
7196
7307
  },
7197
7308
  setup(props, _ref) {
@@ -7220,8 +7331,8 @@ const VDivider = genericComponent()({
7220
7331
  'v-divider': true,
7221
7332
  'v-divider--inset': props.inset,
7222
7333
  'v-divider--vertical': props.vertical
7223
- }, themeClasses.value, textColorClasses.value],
7224
- "style": [dividerStyles.value, textColorStyles.value],
7334
+ }, themeClasses.value, textColorClasses.value, props.class],
7335
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7225
7336
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7226
7337
  "role": `${attrs.role || 'separator'}`
7227
7338
  }, null));
@@ -7720,6 +7831,7 @@ const makeVListGroupProps = propsFactory({
7720
7831
  fluid: Boolean,
7721
7832
  subgroup: Boolean,
7722
7833
  value: null,
7834
+ ...makeComponentProps(),
7723
7835
  ...makeTagProps()
7724
7836
  }, 'v-list-group');
7725
7837
  const VListGroup = genericComponent()({
@@ -7768,7 +7880,8 @@ const VListGroup = genericComponent()({
7768
7880
  'v-list-group--fluid': props.fluid,
7769
7881
  'v-list-group--subgroup': props.subgroup,
7770
7882
  'v-list-group--open': isOpen.value
7771
- }]
7883
+ }, props.class],
7884
+ "style": props.style
7772
7885
  }, {
7773
7886
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7774
7887
  "defaults": activatorDefaults.value
@@ -7835,6 +7948,7 @@ const VListItem = genericComponent()({
7835
7948
  onClick: EventProp(),
7836
7949
  onClickOnce: EventProp(),
7837
7950
  ...makeBorderProps(),
7951
+ ...makeComponentProps(),
7838
7952
  ...makeDensityProps(),
7839
7953
  ...makeDimensionProps(),
7840
7954
  ...makeElevationProps(),
@@ -7945,8 +8059,8 @@ const VListItem = genericComponent()({
7945
8059
  'v-list-item--nav': props.nav,
7946
8060
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7947
8061
  [`${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],
8062
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8063
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
7950
8064
  "href": link.href.value,
7951
8065
  "tabindex": isClickable.value ? 0 : undefined,
7952
8066
  "onClick": onClick,
@@ -8039,6 +8153,7 @@ const VListSubheader = genericComponent()({
8039
8153
  inset: Boolean,
8040
8154
  sticky: Boolean,
8041
8155
  title: String,
8156
+ ...makeComponentProps(),
8042
8157
  ...makeTagProps()
8043
8158
  },
8044
8159
  setup(props, _ref) {
@@ -8055,10 +8170,10 @@ const VListSubheader = genericComponent()({
8055
8170
  "class": ['v-list-subheader', {
8056
8171
  'v-list-subheader--inset': props.inset,
8057
8172
  'v-list-subheader--sticky': props.sticky
8058
- }, textColorClasses.value],
8059
- "style": {
8173
+ }, textColorClasses.value, props.class],
8174
+ "style": [{
8060
8175
  textColorStyles
8061
- }
8176
+ }, props.style]
8062
8177
  }, {
8063
8178
  default: () => [hasText && createVNode("div", {
8064
8179
  "class": "v-list-subheader__text"
@@ -8278,6 +8393,7 @@ const VList = genericComponent()({
8278
8393
  openStrategy: 'list'
8279
8394
  }),
8280
8395
  ...makeBorderProps(),
8396
+ ...makeComponentProps(),
8281
8397
  ...makeDensityProps(),
8282
8398
  ...makeDimensionProps(),
8283
8399
  ...makeElevationProps(),
@@ -8379,27 +8495,8 @@ const VList = genericComponent()({
8379
8495
  e.preventDefault();
8380
8496
  }
8381
8497
  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');
8498
+ if (contentRef.value) {
8499
+ return focusChild(contentRef.value, location);
8403
8500
  }
8404
8501
  }
8405
8502
  useRender(() => {
@@ -8408,8 +8505,8 @@ const VList = genericComponent()({
8408
8505
  "class": ['v-list', {
8409
8506
  'v-list--disabled': props.disabled,
8410
8507
  '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],
8508
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8509
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8413
8510
  "role": "listbox",
8414
8511
  "aria-activedescendant": undefined,
8415
8512
  "onFocusin": onFocusin,
@@ -8437,6 +8534,7 @@ const VListItemAction = genericComponent()({
8437
8534
  props: {
8438
8535
  start: Boolean,
8439
8536
  end: Boolean,
8537
+ ...makeComponentProps(),
8440
8538
  ...makeTagProps()
8441
8539
  },
8442
8540
  setup(props, _ref) {
@@ -8447,7 +8545,8 @@ const VListItemAction = genericComponent()({
8447
8545
  "class": ['v-list-item-action', {
8448
8546
  'v-list-item-action--start': props.start,
8449
8547
  'v-list-item-action--end': props.end
8450
- }]
8548
+ }, props.class],
8549
+ "style": props.style
8451
8550
  }, slots));
8452
8551
  return {};
8453
8552
  }
@@ -8458,6 +8557,7 @@ const VListItemMedia = genericComponent()({
8458
8557
  props: {
8459
8558
  start: Boolean,
8460
8559
  end: Boolean,
8560
+ ...makeComponentProps(),
8461
8561
  ...makeTagProps()
8462
8562
  },
8463
8563
  setup(props, _ref) {
@@ -8469,7 +8569,8 @@ const VListItemMedia = genericComponent()({
8469
8569
  "class": ['v-list-item-media', {
8470
8570
  'v-list-item-media--start': props.start,
8471
8571
  'v-list-item-media--end': props.end
8472
- }]
8572
+ }, props.class],
8573
+ "style": props.style
8473
8574
  }, slots);
8474
8575
  });
8475
8576
  return {};
@@ -9710,6 +9811,7 @@ const makeVOverlayProps = propsFactory({
9710
9811
  default: 2000
9711
9812
  },
9712
9813
  ...makeActivatorProps(),
9814
+ ...makeComponentProps(),
9713
9815
  ...makeDimensionProps(),
9714
9816
  ...makeLazyProps(),
9715
9817
  ...makeLocationStrategyProps(),
@@ -9877,10 +9979,10 @@ const VOverlay = genericComponent()({
9877
9979
  'v-overlay--absolute': props.absolute || props.contained,
9878
9980
  'v-overlay--active': isActive.value,
9879
9981
  'v-overlay--contained': props.contained
9880
- }, themeClasses.value, rtlClasses.value],
9982
+ }, themeClasses.value, rtlClasses.value, props.class],
9881
9983
  "style": [stackStyles.value, {
9882
9984
  top: convertToUnit(top.value)
9883
- }],
9985
+ }, props.style],
9884
9986
  "ref": root
9885
9987
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9886
9988
  "color": scrimColor,
@@ -9986,7 +10088,8 @@ const VMenu = genericComponent()({
9986
10088
  const [overlayProps] = VOverlay.filterProps(props);
9987
10089
  return createVNode(VOverlay, mergeProps({
9988
10090
  "ref": overlay,
9989
- "class": ['v-menu']
10091
+ "class": ['v-menu', props.class],
10092
+ "style": props.style
9990
10093
  }, overlayProps, {
9991
10094
  "modelValue": isActive.value,
9992
10095
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10205,7 +10308,8 @@ const VSelect = genericComponent()({
10205
10308
  'v-select--chips': !!props.chips,
10206
10309
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10207
10310
  'v-select--selected': model.value.length
10208
- }],
10311
+ }, props.class],
10312
+ "style": props.style,
10209
10313
  "appendInnerIcon": props.menuIcon,
10210
10314
  "readonly": true,
10211
10315
  "placeholder": placeholder,
@@ -10648,7 +10752,8 @@ const VAutocomplete = genericComponent()({
10648
10752
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10649
10753
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10650
10754
  'v-autocomplete--selection-slot': !!slots.selection
10651
- }],
10755
+ }, props.class],
10756
+ "style": props.style,
10652
10757
  "appendInnerIcon": props.menuIcon,
10653
10758
  "readonly": props.readonly,
10654
10759
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10762,8 +10867,6 @@ const VAutocomplete = genericComponent()({
10762
10867
  }
10763
10868
  });
10764
10869
 
10765
- // Types
10766
-
10767
10870
  const VBadge = genericComponent()({
10768
10871
  name: 'VBadge',
10769
10872
  inheritAttrs: false,
@@ -10787,6 +10890,7 @@ const VBadge = genericComponent()({
10787
10890
  offsetX: [Number, String],
10788
10891
  offsetY: [Number, String],
10789
10892
  textColor: String,
10893
+ ...makeComponentProps(),
10790
10894
  ...makeLocationProps({
10791
10895
  location: 'top end'
10792
10896
  }),
@@ -10831,8 +10935,10 @@ const VBadge = genericComponent()({
10831
10935
  'v-badge--dot': props.dot,
10832
10936
  'v-badge--floating': props.floating,
10833
10937
  'v-badge--inline': props.inline
10834
- }]
10835
- }, attrs), {
10938
+ }, props.class]
10939
+ }, attrs, {
10940
+ "style": props.style
10941
+ }), {
10836
10942
  default: () => [createVNode("div", {
10837
10943
  "class": "v-badge__wrapper"
10838
10944
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10859,7 +10965,8 @@ const VBannerActions = genericComponent()({
10859
10965
  name: 'VBannerActions',
10860
10966
  props: {
10861
10967
  color: String,
10862
- density: String
10968
+ density: String,
10969
+ ...makeComponentProps()
10863
10970
  },
10864
10971
  setup(props, _ref) {
10865
10972
  let {
@@ -10873,7 +10980,8 @@ const VBannerActions = genericComponent()({
10873
10980
  }
10874
10981
  });
10875
10982
  useRender(() => createVNode("div", {
10876
- "class": "v-banner-actions"
10983
+ "class": ['v-banner-actions', props.class],
10984
+ "style": props.style
10877
10985
  }, [slots.default?.()]));
10878
10986
  return {};
10879
10987
  }
@@ -10894,6 +11002,7 @@ const VBanner = genericComponent()({
10894
11002
  sticky: Boolean,
10895
11003
  text: String,
10896
11004
  ...makeBorderProps(),
11005
+ ...makeComponentProps(),
10897
11006
  ...makeDensityProps(),
10898
11007
  ...makeDimensionProps(),
10899
11008
  ...makeElevationProps(),
@@ -10951,8 +11060,8 @@ const VBanner = genericComponent()({
10951
11060
  'v-banner--stacked': props.stacked || mobile.value,
10952
11061
  'v-banner--sticky': props.sticky,
10953
11062
  [`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],
11063
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11064
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10956
11065
  "role": "banner"
10957
11066
  }, {
10958
11067
  default: () => [hasPrepend && createVNode("div", {
@@ -11008,6 +11117,7 @@ const VBottomNavigation = genericComponent()({
11008
11117
  default: true
11009
11118
  },
11010
11119
  ...makeBorderProps(),
11120
+ ...makeComponentProps(),
11011
11121
  ...makeDensityProps(),
11012
11122
  ...makeElevationProps(),
11013
11123
  ...makeRoundedProps(),
@@ -11082,11 +11192,11 @@ const VBottomNavigation = genericComponent()({
11082
11192
  'v-bottom-navigation--active': isActive.value,
11083
11193
  'v-bottom-navigation--grow': props.grow,
11084
11194
  'v-bottom-navigation--shift': props.mode === 'shift'
11085
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11195
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
11086
11196
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
11087
11197
  height: convertToUnit(height.value),
11088
11198
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
11089
- }, ssrBootStyles.value]
11199
+ }, ssrBootStyles.value, props.style]
11090
11200
  }, {
11091
11201
  default: () => [slots.default && createVNode("div", {
11092
11202
  "class": "v-bottom-navigation__content"
@@ -11100,14 +11210,16 @@ const VBottomNavigation = genericComponent()({
11100
11210
  const VBreadcrumbsDivider = genericComponent()({
11101
11211
  name: 'VBreadcrumbsDivider',
11102
11212
  props: {
11103
- divider: [Number, String]
11213
+ divider: [Number, String],
11214
+ ...makeComponentProps()
11104
11215
  },
11105
11216
  setup(props, _ref) {
11106
11217
  let {
11107
11218
  slots
11108
11219
  } = _ref;
11109
11220
  useRender(() => createVNode("li", {
11110
- "class": "v-breadcrumbs-divider"
11221
+ "class": ['v-breadcrumbs-divider', props.class],
11222
+ "style": props.style
11111
11223
  }, [slots?.default?.() ?? props.divider]));
11112
11224
  return {};
11113
11225
  }
@@ -11122,6 +11234,7 @@ const VBreadcrumbsItem = genericComponent()({
11122
11234
  color: String,
11123
11235
  disabled: Boolean,
11124
11236
  title: String,
11237
+ ...makeComponentProps(),
11125
11238
  ...makeRouterProps(),
11126
11239
  ...makeTagProps({
11127
11240
  tag: 'li'
@@ -11147,8 +11260,8 @@ const VBreadcrumbsItem = genericComponent()({
11147
11260
  'v-breadcrumbs-item--disabled': props.disabled,
11148
11261
  'v-breadcrumbs-item--link': link.isLink.value,
11149
11262
  [`${props.activeClass}`]: isActive.value && props.activeClass
11150
- }, textColorClasses.value],
11151
- "style": [textColorStyles.value],
11263
+ }, textColorClasses.value, props.class],
11264
+ "style": [textColorStyles.value, props.style],
11152
11265
  "href": link.href.value,
11153
11266
  "aria-current": isActive.value ? 'page' : undefined,
11154
11267
  "onClick": link.navigate
@@ -11179,6 +11292,7 @@ const VBreadcrumbs = genericComponent()({
11179
11292
  type: Array,
11180
11293
  default: () => []
11181
11294
  },
11295
+ ...makeComponentProps(),
11182
11296
  ...makeDensityProps(),
11183
11297
  ...makeRoundedProps(),
11184
11298
  ...makeTagProps({
@@ -11210,11 +11324,22 @@ const VBreadcrumbs = genericComponent()({
11210
11324
  disabled: toRef(props, 'disabled')
11211
11325
  }
11212
11326
  });
11327
+ const items = computed(() => props.items.map(item => {
11328
+ return typeof item === 'string' ? {
11329
+ item: {
11330
+ title: item
11331
+ },
11332
+ raw: item
11333
+ } : {
11334
+ item,
11335
+ raw: item
11336
+ };
11337
+ }));
11213
11338
  useRender(() => {
11214
11339
  const hasPrepend = !!(slots.prepend || props.icon);
11215
11340
  return createVNode(props.tag, {
11216
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11217
- "style": backgroundColorStyles.value
11341
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11342
+ "style": [backgroundColorStyles.value, props.style]
11218
11343
  }, {
11219
11344
  default: () => [hasPrepend && createVNode("div", {
11220
11345
  "key": "prepend",
@@ -11232,33 +11357,36 @@ const VBreadcrumbs = genericComponent()({
11232
11357
  start: true
11233
11358
  }
11234
11359
  }
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?.({
11360
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11361
+ let {
11247
11362
  item,
11248
- index
11249
- }) : undefined
11250
- })])), slots.default?.()]
11363
+ raw
11364
+ } = _ref2;
11365
+ return createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11366
+ "key": item.title,
11367
+ "disabled": index >= array.length - 1
11368
+ }, item), {
11369
+ default: slots.title ? () => slots.title?.({
11370
+ item: raw,
11371
+ index
11372
+ }) : undefined
11373
+ }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11374
+ default: slots.divider ? () => slots.divider?.({
11375
+ item: raw,
11376
+ index
11377
+ }) : undefined
11378
+ })]);
11379
+ }), slots.default?.()]
11251
11380
  });
11252
11381
  });
11253
11382
  return {};
11254
11383
  }
11255
11384
  });
11256
11385
 
11257
- // Types
11258
-
11259
- const VCardActions = defineComponent({
11386
+ const VCardActions = genericComponent()({
11260
11387
  name: 'VCardActions',
11261
- setup(_, _ref) {
11388
+ props: makeComponentProps(),
11389
+ setup(props, _ref) {
11262
11390
  let {
11263
11391
  slots
11264
11392
  } = _ref;
@@ -11268,7 +11396,8 @@ const VCardActions = defineComponent({
11268
11396
  }
11269
11397
  });
11270
11398
  useRender(() => createVNode("div", {
11271
- "class": "v-card-actions"
11399
+ "class": ['v-card-actions', props.class],
11400
+ "style": props.style
11272
11401
  }, [slots.default?.()]));
11273
11402
  return {};
11274
11403
  }
@@ -11278,8 +11407,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11278
11407
 
11279
11408
  const VCardTitle = createSimpleFunctional('v-card-title');
11280
11409
 
11281
- // Types
11282
-
11283
11410
  const VCardItem = genericComponent()({
11284
11411
  name: 'VCardItem',
11285
11412
  props: {
@@ -11289,6 +11416,7 @@ const VCardItem = genericComponent()({
11289
11416
  prependIcon: IconValue,
11290
11417
  subtitle: String,
11291
11418
  title: String,
11419
+ ...makeComponentProps(),
11292
11420
  ...makeDensityProps()
11293
11421
  },
11294
11422
  setup(props, _ref) {
@@ -11303,7 +11431,8 @@ const VCardItem = genericComponent()({
11303
11431
  const hasTitle = !!(props.title || slots.title);
11304
11432
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11305
11433
  return createVNode("div", {
11306
- "class": "v-card-item"
11434
+ "class": ['v-card-item', props.class],
11435
+ "style": props.style
11307
11436
  }, [hasPrepend && createVNode("div", {
11308
11437
  "key": "prepend",
11309
11438
  "class": "v-card-item__prepend"
@@ -11385,8 +11514,8 @@ const VCard = genericComponent()({
11385
11514
  subtitle: String,
11386
11515
  text: String,
11387
11516
  title: String,
11388
- ...makeThemeProps(),
11389
11517
  ...makeBorderProps(),
11518
+ ...makeComponentProps(),
11390
11519
  ...makeDensityProps(),
11391
11520
  ...makeDimensionProps(),
11392
11521
  ...makeElevationProps(),
@@ -11396,6 +11525,7 @@ const VCard = genericComponent()({
11396
11525
  ...makeRoundedProps(),
11397
11526
  ...makeRouterProps(),
11398
11527
  ...makeTagProps(),
11528
+ ...makeThemeProps(),
11399
11529
  ...makeVariantProps({
11400
11530
  variant: 'elevated'
11401
11531
  })
@@ -11456,8 +11586,8 @@ const VCard = genericComponent()({
11456
11586
  'v-card--flat': props.flat,
11457
11587
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11458
11588
  '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],
11589
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11590
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11461
11591
  "href": link.href.value,
11462
11592
  "onClick": isClickable.value && link.navigate,
11463
11593
  "tabindex": props.disabled ? -1 : undefined
@@ -11653,6 +11783,7 @@ const makeVWindowProps = propsFactory({
11653
11783
  mandatory: {
11654
11784
  default: 'force'
11655
11785
  },
11786
+ ...makeComponentProps(),
11656
11787
  ...makeTagProps(),
11657
11788
  ...makeThemeProps()
11658
11789
  }, 'v-window');
@@ -11768,7 +11899,8 @@ const VWindow = genericComponent()({
11768
11899
  "ref": rootRef,
11769
11900
  "class": ['v-window', {
11770
11901
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11771
- }, themeClasses.value]
11902
+ }, themeClasses.value, props.class],
11903
+ "style": props.style
11772
11904
  }, {
11773
11905
  default: () => [createVNode("div", {
11774
11906
  "class": "v-window__container",
@@ -11853,10 +11985,10 @@ const VCarousel = genericComponent()({
11853
11985
  "class": ['v-carousel', {
11854
11986
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11855
11987
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11856
- }],
11857
- "style": {
11988
+ }, props.class],
11989
+ "style": [{
11858
11990
  height: convertToUnit(props.height)
11859
- },
11991
+ }, props.style],
11860
11992
  "continuous": true,
11861
11993
  "mandatory": "force",
11862
11994
  "showArrows": props.showArrows
@@ -11922,6 +12054,7 @@ const VWindowItem = genericComponent()({
11922
12054
  type: [Boolean, String],
11923
12055
  default: undefined
11924
12056
  },
12057
+ ...makeComponentProps(),
11925
12058
  ...makeGroupItemProps(),
11926
12059
  ...makeLazyProps()
11927
12060
  },
@@ -12008,7 +12141,8 @@ const VWindowItem = genericComponent()({
12008
12141
  "disabled": !isBooted.value
12009
12142
  }, {
12010
12143
  default: () => [withDirectives(createVNode("div", {
12011
- "class": ['v-window-item', groupItem.selectedClass.value]
12144
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12145
+ "style": props.style
12012
12146
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
12013
12147
  }));
12014
12148
  return {};
@@ -12021,7 +12155,8 @@ const VCarouselItem = genericComponent()({
12021
12155
  name: 'VCarouselItem',
12022
12156
  inheritAttrs: false,
12023
12157
  props: {
12024
- value: null
12158
+ value: null,
12159
+ ...makeComponentProps()
12025
12160
  },
12026
12161
  setup(props, _ref) {
12027
12162
  let {
@@ -12029,7 +12164,8 @@ const VCarouselItem = genericComponent()({
12029
12164
  attrs
12030
12165
  } = _ref;
12031
12166
  useRender(() => createVNode(VWindowItem, {
12032
- "class": "v-carousel-item",
12167
+ "class": ['v-carousel-item', props.class],
12168
+ "style": props.style,
12033
12169
  "value": props.value
12034
12170
  }, {
12035
12171
  default: () => [createVNode(VImg, attrs, slots)]
@@ -12042,6 +12178,7 @@ const VCode = createSimpleFunctional('v-code');
12042
12178
  const makeVSheetProps = propsFactory({
12043
12179
  color: String,
12044
12180
  ...makeBorderProps(),
12181
+ ...makeComponentProps(),
12045
12182
  ...makeDimensionProps(),
12046
12183
  ...makeElevationProps(),
12047
12184
  ...makeLocationProps(),
@@ -12085,8 +12222,8 @@ const VSheet = genericComponent()({
12085
12222
  roundedClasses
12086
12223
  } = useRounded(props);
12087
12224
  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]
12225
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12226
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
12090
12227
  }, slots));
12091
12228
  return {};
12092
12229
  }
@@ -12112,7 +12249,8 @@ const VColorPickerCanvas = defineComponent({
12112
12249
  width: {
12113
12250
  type: [Number, String],
12114
12251
  default: 300
12115
- }
12252
+ },
12253
+ ...makeComponentProps()
12116
12254
  },
12117
12255
  emits: {
12118
12256
  'update:color': color => true,
@@ -12257,7 +12395,8 @@ const VColorPickerCanvas = defineComponent({
12257
12395
  onMounted(() => updateCanvas());
12258
12396
  useRender(() => createVNode("div", {
12259
12397
  "ref": resizeRef,
12260
- "class": "v-color-picker-canvas",
12398
+ "class": ['v-color-picker-canvas', props.class],
12399
+ "style": props.style,
12261
12400
  "onClick": handleClick,
12262
12401
  "onMousedown": handleMouseDown,
12263
12402
  "onTouchstart": handleMouseDown
@@ -12490,7 +12629,8 @@ const VColorPickerEdit = defineComponent({
12490
12629
  type: Array,
12491
12630
  default: () => Object.keys(modes),
12492
12631
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12493
- }
12632
+ },
12633
+ ...makeComponentProps()
12494
12634
  },
12495
12635
  emits: {
12496
12636
  'update:color': color => true,
@@ -12530,7 +12670,8 @@ const VColorPickerEdit = defineComponent({
12530
12670
  });
12531
12671
  });
12532
12672
  useRender(() => createVNode("div", {
12533
- "class": "v-color-picker-edit"
12673
+ "class": ['v-color-picker-edit', props.class],
12674
+ "style": props.style
12534
12675
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12535
12676
  "icon": "$unfold",
12536
12677
  "size": "x-small",
@@ -12849,7 +12990,8 @@ const VSliderThumb = genericComponent()({
12849
12990
  ripple: {
12850
12991
  type: Boolean,
12851
12992
  default: true
12852
- }
12993
+ },
12994
+ ...makeComponentProps()
12853
12995
  },
12854
12996
  emits: {
12855
12997
  'update:modelValue': v => true
@@ -12927,11 +13069,11 @@ const VSliderThumb = genericComponent()({
12927
13069
  "class": ['v-slider-thumb', {
12928
13070
  'v-slider-thumb--focused': props.focused,
12929
13071
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12930
- }],
12931
- "style": {
13072
+ }, props.class],
13073
+ "style": [{
12932
13074
  '--v-slider-thumb-position': positionPercentage,
12933
13075
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12934
- },
13076
+ }, props.style],
12935
13077
  "role": "slider",
12936
13078
  "tabindex": disabled.value ? -1 : 0,
12937
13079
  "aria-valuemin": props.min,
@@ -12977,7 +13119,8 @@ const VSliderTrack = genericComponent()({
12977
13119
  stop: {
12978
13120
  type: Number,
12979
13121
  required: true
12980
- }
13122
+ },
13123
+ ...makeComponentProps()
12981
13124
  },
12982
13125
  emits: {},
12983
13126
  setup(props, _ref) {
@@ -13052,12 +13195,12 @@ const VSliderTrack = genericComponent()({
13052
13195
  });
13053
13196
  useRender(() => {
13054
13197
  return createVNode("div", {
13055
- "class": ['v-slider-track', roundedClasses.value],
13056
- "style": {
13198
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13199
+ "style": [{
13057
13200
  '--v-slider-track-size': convertToUnit(trackSize.value),
13058
13201
  '--v-slider-tick-size': convertToUnit(tickSize.value),
13059
13202
  direction: !vertical.value ? horizontalDirection.value : undefined
13060
- }
13203
+ }, props.style]
13061
13204
  }, [createVNode("div", {
13062
13205
  "class": ['v-slider-track__background', trackColorClasses.value, {
13063
13206
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -13160,7 +13303,8 @@ const VSlider = genericComponent()({
13160
13303
  'v-slider--focused': isFocused.value,
13161
13304
  'v-slider--pressed': mousePressed.value,
13162
13305
  'v-slider--disabled': props.disabled
13163
- }]
13306
+ }, props.class],
13307
+ "style": props.style
13164
13308
  }, inputProps, {
13165
13309
  "focused": isFocused.value
13166
13310
  }), {
@@ -13223,7 +13367,8 @@ const VColorPickerPreview = defineComponent({
13223
13367
  type: Object
13224
13368
  },
13225
13369
  disabled: Boolean,
13226
- hideAlpha: Boolean
13370
+ hideAlpha: Boolean,
13371
+ ...makeComponentProps()
13227
13372
  },
13228
13373
  emits: {
13229
13374
  'update:color': color => true
@@ -13235,7 +13380,8 @@ const VColorPickerPreview = defineComponent({
13235
13380
  useRender(() => createVNode("div", {
13236
13381
  "class": ['v-color-picker-preview', {
13237
13382
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13238
- }]
13383
+ }, props.class],
13384
+ "style": props.style
13239
13385
  }, [createVNode("div", {
13240
13386
  "class": "v-color-picker-preview__dot"
13241
13387
  }, [createVNode("div", {
@@ -13616,7 +13762,8 @@ const VColorPickerSwatches = defineComponent({
13616
13762
  },
13617
13763
  disabled: Boolean,
13618
13764
  color: Object,
13619
- maxHeight: [Number, String]
13765
+ maxHeight: [Number, String],
13766
+ ...makeComponentProps()
13620
13767
  },
13621
13768
  emits: {
13622
13769
  'update:color': color => true
@@ -13626,10 +13773,10 @@ const VColorPickerSwatches = defineComponent({
13626
13773
  emit
13627
13774
  } = _ref;
13628
13775
  useRender(() => createVNode("div", {
13629
- "class": "v-color-picker-swatches",
13630
- "style": {
13776
+ "class": ['v-color-picker-swatches', props.class],
13777
+ "style": [{
13631
13778
  maxHeight: convertToUnit(props.maxHeight)
13632
- }
13779
+ }, props.style]
13633
13780
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13634
13781
  "class": "v-color-picker-swatches__swatch"
13635
13782
  }, [swatch.map(color => {
@@ -13733,13 +13880,13 @@ const VColorPicker = defineComponent({
13733
13880
  "rounded": props.rounded,
13734
13881
  "elevation": props.elevation,
13735
13882
  "theme": props.theme,
13736
- "class": ['v-color-picker'],
13737
- "style": {
13883
+ "class": ['v-color-picker', props.class],
13884
+ "style": [{
13738
13885
  '--v-color-picker-color-hsv': HSVtoCSS({
13739
13886
  ...(currentColor.value ?? nullColor),
13740
13887
  a: 1
13741
13888
  })
13742
- }
13889
+ }, props.style]
13743
13890
  }, sheetProps, {
13744
13891
  "maxWidth": props.width
13745
13892
  }), {
@@ -14050,7 +14197,8 @@ const VCombobox = genericComponent()({
14050
14197
  'v-combobox--chips': !!props.chips,
14051
14198
  'v-combobox--selecting-index': selectionIndex.value > -1,
14052
14199
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
14053
- }],
14200
+ }, props.class],
14201
+ "style": props.style,
14054
14202
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
14055
14203
  "readonly": props.readonly,
14056
14204
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14207,7 +14355,7 @@ const VDialog = genericComponent()({
14207
14355
  ![document, overlay.value.contentEl].includes(after) &&
14208
14356
  // It isn't inside the dialog body
14209
14357
  !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"]'));
14358
+ const focusable = focusableChildren(overlay.value.contentEl);
14211
14359
  if (!focusable.length) return;
14212
14360
  const firstElement = focusable[0];
14213
14361
  const lastElement = focusable[focusable.length - 1];
@@ -14248,7 +14396,8 @@ const VDialog = genericComponent()({
14248
14396
  "class": ['v-dialog', {
14249
14397
  'v-dialog--fullscreen': props.fullscreen,
14250
14398
  'v-dialog--scrollable': props.scrollable
14251
- }]
14399
+ }, props.class],
14400
+ "style": props.style
14252
14401
  }, overlayProps, {
14253
14402
  "modelValue": isActive.value,
14254
14403
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14287,6 +14436,7 @@ const VExpansionPanels = genericComponent()({
14287
14436
  validator: v => allowedVariants.includes(v)
14288
14437
  },
14289
14438
  readonly: Boolean,
14439
+ ...makeComponentProps(),
14290
14440
  ...makeGroupProps(),
14291
14441
  ...makeTagProps(),
14292
14442
  ...makeThemeProps()
@@ -14312,7 +14462,8 @@ const VExpansionPanels = genericComponent()({
14312
14462
  }
14313
14463
  });
14314
14464
  useRender(() => createVNode(props.tag, {
14315
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14465
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14466
+ "style": props.style
14316
14467
  }, slots));
14317
14468
  return {};
14318
14469
  }
@@ -14341,6 +14492,7 @@ const VExpansionPanelTitle = genericComponent()({
14341
14492
  Ripple
14342
14493
  },
14343
14494
  props: {
14495
+ ...makeComponentProps(),
14344
14496
  ...makeVExpansionPanelTitleProps()
14345
14497
  },
14346
14498
  setup(props, _ref) {
@@ -14363,8 +14515,8 @@ const VExpansionPanelTitle = genericComponent()({
14363
14515
  useRender(() => withDirectives(createVNode("button", {
14364
14516
  "class": ['v-expansion-panel-title', {
14365
14517
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14366
- }, backgroundColorClasses.value],
14367
- "style": backgroundColorStyles.value,
14518
+ }, backgroundColorClasses.value, props.class],
14519
+ "style": [backgroundColorStyles.value, props.style],
14368
14520
  "type": "button",
14369
14521
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14370
14522
  "disabled": expansionPanel.disabled.value,
@@ -14384,6 +14536,7 @@ const VExpansionPanelTitle = genericComponent()({
14384
14536
  const VExpansionPanelText = genericComponent()({
14385
14537
  name: 'VExpansionPanelText',
14386
14538
  props: {
14539
+ ...makeComponentProps(),
14387
14540
  ...makeLazyProps()
14388
14541
  },
14389
14542
  setup(props, _ref) {
@@ -14400,7 +14553,8 @@ const VExpansionPanelText = genericComponent()({
14400
14553
  "onAfterLeave": onAfterLeave
14401
14554
  }, {
14402
14555
  default: () => [withDirectives(createVNode("div", {
14403
- "class": "v-expansion-panel-text"
14556
+ "class": ['v-expansion-panel-text', props.class],
14557
+ "style": props.style
14404
14558
  }, [slots.default && hasContent.value && createVNode("div", {
14405
14559
  "class": "v-expansion-panel-text__wrapper"
14406
14560
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14415,6 +14569,7 @@ const VExpansionPanel = genericComponent()({
14415
14569
  title: String,
14416
14570
  text: String,
14417
14571
  bgColor: String,
14572
+ ...makeComponentProps(),
14418
14573
  ...makeElevationProps(),
14419
14574
  ...makeGroupItemProps(),
14420
14575
  ...makeLazyProps(),
@@ -14463,8 +14618,8 @@ const VExpansionPanel = genericComponent()({
14463
14618
  'v-expansion-panel--before-active': isBeforeSelected.value,
14464
14619
  'v-expansion-panel--after-active': isAfterSelected.value,
14465
14620
  'v-expansion-panel--disabled': isDisabled.value
14466
- }, roundedClasses.value, backgroundColorClasses.value],
14467
- "style": backgroundColorStyles.value,
14621
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14622
+ "style": [backgroundColorStyles.value, props.style],
14468
14623
  "aria-expanded": groupItem.isSelected.value
14469
14624
  }, {
14470
14625
  default: () => [createVNode("div", {
@@ -14614,7 +14769,8 @@ const VFileInput = genericComponent()({
14614
14769
  "ref": vInputRef,
14615
14770
  "modelValue": model.value,
14616
14771
  "onUpdate:modelValue": $event => model.value = $event,
14617
- "class": "v-file-input",
14772
+ "class": ['v-file-input', props.class],
14773
+ "style": props.style,
14618
14774
  "onClick:prepend": onClickPrepend
14619
14775
  }, rootAttrs, inputProps, {
14620
14776
  "focused": isFocused.value
@@ -14706,6 +14862,7 @@ const VFooter = genericComponent()({
14706
14862
  default: 'auto'
14707
14863
  },
14708
14864
  ...makeBorderProps(),
14865
+ ...makeComponentProps(),
14709
14866
  ...makeElevationProps(),
14710
14867
  ...makeLayoutItemProps(),
14711
14868
  ...makeRoundedProps(),
@@ -14755,8 +14912,8 @@ const VFooter = genericComponent()({
14755
14912
  });
14756
14913
  useRender(() => createVNode(props.tag, {
14757
14914
  "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]
14915
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14916
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14760
14917
  }, slots));
14761
14918
  return {};
14762
14919
  }
@@ -14767,6 +14924,7 @@ const VFooter = genericComponent()({
14767
14924
  const VForm = genericComponent()({
14768
14925
  name: 'VForm',
14769
14926
  props: {
14927
+ ...makeComponentProps(),
14770
14928
  ...makeFormProps()
14771
14929
  },
14772
14930
  emits: {
@@ -14805,7 +14963,8 @@ const VForm = genericComponent()({
14805
14963
  }
14806
14964
  useRender(() => createVNode("form", {
14807
14965
  "ref": formRef,
14808
- "class": "v-form",
14966
+ "class": ['v-form', props.class],
14967
+ "style": props.style,
14809
14968
  "novalidate": true,
14810
14969
  "onReset": onReset,
14811
14970
  "onSubmit": onSubmit
@@ -14821,6 +14980,7 @@ const VContainer = genericComponent()({
14821
14980
  type: Boolean,
14822
14981
  default: false
14823
14982
  },
14983
+ ...makeComponentProps(),
14824
14984
  ...makeTagProps()
14825
14985
  },
14826
14986
  setup(props, _ref) {
@@ -14830,7 +14990,8 @@ const VContainer = genericComponent()({
14830
14990
  useRender(() => createVNode(props.tag, {
14831
14991
  "class": ['v-container', {
14832
14992
  'v-container--fluid': props.fluid
14833
- }]
14993
+ }, props.class],
14994
+ "style": props.style
14834
14995
  }, slots));
14835
14996
  return {};
14836
14997
  }
@@ -14921,6 +15082,7 @@ const VCol = genericComponent()({
14921
15082
  default: null,
14922
15083
  validator: str => ALIGN_SELF_VALUES.includes(str)
14923
15084
  },
15085
+ ...makeComponentProps(),
14924
15086
  ...makeTagProps()
14925
15087
  },
14926
15088
  setup(props, _ref) {
@@ -14951,7 +15113,8 @@ const VCol = genericComponent()({
14951
15113
  return classList;
14952
15114
  });
14953
15115
  return () => h(props.tag, {
14954
- class: classes.value
15116
+ class: [classes.value, props.class],
15117
+ style: props.style
14955
15118
  }, slots.default?.());
14956
15119
  }
14957
15120
  });
@@ -15037,6 +15200,7 @@ const VRow = genericComponent()({
15037
15200
  validator: alignContentValidator
15038
15201
  },
15039
15202
  ...alignContentProps,
15203
+ ...makeComponentProps(),
15040
15204
  ...makeTagProps()
15041
15205
  },
15042
15206
  setup(props, _ref) {
@@ -15065,7 +15229,8 @@ const VRow = genericComponent()({
15065
15229
  return classList;
15066
15230
  });
15067
15231
  return () => h(props.tag, {
15068
- class: ['v-row', classes.value]
15232
+ class: ['v-row', classes.value, props.class],
15233
+ style: props.style
15069
15234
  }, slots.default?.());
15070
15235
  }
15071
15236
  });
@@ -15109,6 +15274,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
15109
15274
  const VItemGroup = genericComponent()({
15110
15275
  name: 'VItemGroup',
15111
15276
  props: {
15277
+ ...makeComponentProps(),
15112
15278
  ...makeGroupProps({
15113
15279
  selectedClass: 'v-item--selected'
15114
15280
  }),
@@ -15133,7 +15299,8 @@ const VItemGroup = genericComponent()({
15133
15299
  selected
15134
15300
  } = useGroup(props, VItemGroupSymbol);
15135
15301
  return () => createVNode(props.tag, {
15136
- "class": ['v-item-group', themeClasses.value]
15302
+ "class": ['v-item-group', themeClasses.value, props.class],
15303
+ "style": props.style
15137
15304
  }, {
15138
15305
  default: () => [slots.default?.({
15139
15306
  isSelected,
@@ -15183,7 +15350,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15183
15350
 
15184
15351
  const VLayout = genericComponent()({
15185
15352
  name: 'VLayout',
15186
- props: makeLayoutProps(),
15353
+ props: {
15354
+ ...makeComponentProps(),
15355
+ ...makeLayoutProps()
15356
+ },
15187
15357
  setup(props, _ref) {
15188
15358
  let {
15189
15359
  slots
@@ -15197,8 +15367,8 @@ const VLayout = genericComponent()({
15197
15367
  } = createLayout(props);
15198
15368
  useRender(() => createVNode("div", {
15199
15369
  "ref": layoutRef,
15200
- "class": layoutClasses.value,
15201
- "style": layoutStyles.value
15370
+ "class": [layoutClasses.value, props.class],
15371
+ "style": [layoutStyles.value, props.style]
15202
15372
  }, [slots.default?.()]));
15203
15373
  return {
15204
15374
  getLayoutItem,
@@ -15221,6 +15391,7 @@ const VLayoutItem = genericComponent()({
15221
15391
  default: 300
15222
15392
  },
15223
15393
  modelValue: Boolean,
15394
+ ...makeComponentProps(),
15224
15395
  ...makeLayoutItemProps()
15225
15396
  },
15226
15397
  setup(props, _ref) {
@@ -15239,8 +15410,8 @@ const VLayoutItem = genericComponent()({
15239
15410
  absolute: toRef(props, 'absolute')
15240
15411
  });
15241
15412
  return () => createVNode("div", {
15242
- "class": ['v-layout-item'],
15243
- "style": layoutItemStyles.value
15413
+ "class": ['v-layout-item', props.class],
15414
+ "style": [layoutItemStyles.value, props.style]
15244
15415
  }, [slots.default?.()]);
15245
15416
  }
15246
15417
  });
@@ -15264,6 +15435,7 @@ const VLazy = genericComponent()({
15264
15435
  threshold: undefined
15265
15436
  })
15266
15437
  },
15438
+ ...makeComponentProps(),
15267
15439
  ...makeDimensionProps(),
15268
15440
  ...makeTagProps(),
15269
15441
  ...makeTransitionProps({
@@ -15286,8 +15458,8 @@ const VLazy = genericComponent()({
15286
15458
  isActive.value = isIntersecting;
15287
15459
  }
15288
15460
  useRender(() => withDirectives(createVNode(props.tag, {
15289
- "class": "v-lazy",
15290
- "style": dimensionStyles.value
15461
+ "class": ['v-lazy', props.class],
15462
+ "style": [dimensionStyles.value, props.style]
15291
15463
  }, {
15292
15464
  default: () => [isActive.value && createVNode(MaybeTransition, {
15293
15465
  "transition": props.transition,
@@ -15312,7 +15484,8 @@ const VLocaleProvider = genericComponent()({
15312
15484
  rtl: {
15313
15485
  type: Boolean,
15314
15486
  default: undefined
15315
- }
15487
+ },
15488
+ ...makeComponentProps()
15316
15489
  },
15317
15490
  setup(props, _ref) {
15318
15491
  let {
@@ -15322,7 +15495,8 @@ const VLocaleProvider = genericComponent()({
15322
15495
  rtlClasses
15323
15496
  } = provideLocale(props);
15324
15497
  useRender(() => createVNode("div", {
15325
- "class": ['v-locale-provider', rtlClasses.value]
15498
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15499
+ "style": props.style
15326
15500
  }, [slots.default?.()]));
15327
15501
  return {};
15328
15502
  }
@@ -15332,6 +15506,7 @@ const VMain = genericComponent()({
15332
15506
  name: 'VMain',
15333
15507
  props: {
15334
15508
  scrollable: Boolean,
15509
+ ...makeComponentProps(),
15335
15510
  ...makeTagProps({
15336
15511
  tag: 'main'
15337
15512
  })
@@ -15349,8 +15524,8 @@ const VMain = genericComponent()({
15349
15524
  useRender(() => createVNode(props.tag, {
15350
15525
  "class": ['v-main', {
15351
15526
  'v-main--scrollable': props.scrollable
15352
- }],
15353
- "style": [mainStyles.value, ssrBootStyles.value]
15527
+ }, props.class],
15528
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15354
15529
  }, {
15355
15530
  default: () => [props.scrollable ? createVNode("div", {
15356
15531
  "class": "v-main__scroller"
@@ -15360,593 +15535,167 @@ const VMain = genericComponent()({
15360
15535
  }
15361
15536
  });
15362
15537
 
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);
15538
+ function useSticky(_ref) {
15539
+ let {
15540
+ rootEl,
15541
+ isSticky,
15542
+ layoutItemStyles
15543
+ } = _ref;
15544
+ const isStuck = ref(false);
15545
+ const stuckPosition = ref(0);
15546
+ const stickyStyles = computed(() => {
15547
+ const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15548
+ return [isSticky.value ? {
15549
+ top: 'auto',
15550
+ bottom: 'auto',
15551
+ height: undefined
15552
+ } : undefined, isStuck.value ? {
15553
+ [side]: convertToUnit(stuckPosition.value)
15554
+ } : {
15555
+ top: layoutItemStyles.value.top
15556
+ }];
15557
+ });
15558
+ onMounted(() => {
15559
+ watch(isSticky, val => {
15560
+ if (val) {
15561
+ window.addEventListener('scroll', onScroll, {
15562
+ passive: true
15563
+ });
15564
+ } else {
15565
+ window.removeEventListener('scroll', onScroll);
15566
+ }
15567
+ }, {
15568
+ immediate: true
15569
+ });
15570
+ });
15571
+ onBeforeUnmount(() => {
15572
+ document.removeEventListener('scroll', onScroll);
15573
+ });
15574
+ let lastScrollTop = 0;
15575
+ function onScroll() {
15576
+ const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15577
+ const rect = rootEl.value.getBoundingClientRect();
15578
+ const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15579
+ const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15580
+ const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15581
+ if (rect.height < window.innerHeight - layoutTop) {
15582
+ isStuck.value = 'top';
15583
+ stuckPosition.value = layoutTop;
15584
+ } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15585
+ stuckPosition.value = window.scrollY + rect.top;
15586
+ isStuck.value = true;
15587
+ } else if (direction === 'down' && bottom <= 0) {
15588
+ stuckPosition.value = 0;
15589
+ isStuck.value = 'bottom';
15590
+ } else if (direction === 'up' && top <= 0) {
15591
+ stuckPosition.value = rect.top + top;
15592
+ isStuck.value = 'top';
15593
+ }
15594
+ lastScrollTop = window.scrollY;
15374
15595
  }
15375
- for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
15376
- const day = new Date(date.getFullYear(), date.getMonth(), i);
15596
+ return {
15597
+ isStuck,
15598
+ stickyStyles
15599
+ };
15600
+ }
15377
15601
 
15378
- // Add the day to the current week
15379
- currentWeek.push(day);
15602
+ const HORIZON = 100; // ms
15603
+ const HISTORY = 20; // number of samples to keep
15380
15604
 
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 = [];
15605
+ /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15606
+ function kineticEnergyToVelocity(work) {
15607
+ const sqrt2 = 1.41421356237;
15608
+ return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15609
+ }
15610
+
15611
+ /**
15612
+ * Returns pointer velocity in px/s
15613
+ */
15614
+ function calculateImpulseVelocity(samples) {
15615
+ // The input should be in reversed time order (most recent sample at index i=0)
15616
+ if (samples.length < 2) {
15617
+ // if 0 or 1 points, velocity is zero
15618
+ return 0;
15619
+ }
15620
+ // if (samples[1].t > samples[0].t) {
15621
+ // // Algorithm will still work, but not perfectly
15622
+ // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15623
+ // }
15624
+ if (samples.length === 2) {
15625
+ // if 2 points, basic linear calculation
15626
+ if (samples[1].t === samples[0].t) {
15627
+ // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15628
+ return 0;
15385
15629
  }
15630
+ return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15386
15631
  }
15387
- for (let i = currentWeek.length; i < 7; i++) {
15388
- currentWeek.push(null);
15632
+ // Guaranteed to have at least 3 points here
15633
+ // start with the oldest sample and go forward in time
15634
+ let work = 0;
15635
+ for (let i = samples.length - 1; i > 0; i--) {
15636
+ if (samples[i].t === samples[i - 1].t) {
15637
+ // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)
15638
+ continue;
15639
+ }
15640
+ const vprev = kineticEnergyToVelocity(work); // v[i-1]
15641
+ const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]
15642
+ work += (vcurr - vprev) * Math.abs(vcurr);
15643
+ if (i === samples.length - 1) {
15644
+ work *= 0.5;
15645
+ }
15389
15646
  }
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);
15647
+ return kineticEnergyToVelocity(work) * 1000;
15398
15648
  }
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);
15649
+ function useVelocity() {
15650
+ const touches = {};
15651
+ function addMovement(e) {
15652
+ Array.from(e.changedTouches).forEach(touch => {
15653
+ const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
15654
+ samples.push([e.timeStamp, touch]);
15655
+ });
15405
15656
  }
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);
15882
- }
15883
- // Guaranteed to have at least 3 points here
15884
- // start with the oldest sample and go forward in time
15885
- let work = 0;
15886
- for (let i = samples.length - 1; i > 0; i--) {
15887
- if (samples[i].t === samples[i - 1].t) {
15888
- // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)
15889
- continue;
15890
- }
15891
- const vprev = kineticEnergyToVelocity(work); // v[i-1]
15892
- const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]
15893
- work += (vcurr - vprev) * Math.abs(vcurr);
15894
- if (i === samples.length - 1) {
15895
- work *= 0.5;
15896
- }
15897
- }
15898
- return kineticEnergyToVelocity(work) * 1000;
15899
- }
15900
- function useVelocity() {
15901
- const touches = {};
15902
- function addMovement(e) {
15903
- Array.from(e.changedTouches).forEach(touch => {
15904
- const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
15905
- samples.push([e.timeStamp, touch]);
15906
- });
15907
- }
15908
- function endTouch(e) {
15909
- Array.from(e.changedTouches).forEach(touch => {
15910
- delete touches[touch.identifier];
15911
- });
15912
- }
15913
- function getVelocity(id) {
15914
- const samples = touches[id]?.values().reverse();
15915
- if (!samples) {
15916
- throw new Error(`No samples for touch id ${id}`);
15917
- }
15918
- const newest = samples[0];
15919
- const x = [];
15920
- const y = [];
15921
- for (const val of samples) {
15922
- if (newest[0] - val[0] > HORIZON) break;
15923
- x.push({
15924
- t: val[0],
15925
- d: val[1].clientX
15926
- });
15927
- y.push({
15928
- t: val[0],
15929
- d: val[1].clientY
15930
- });
15931
- }
15932
- return {
15933
- x: calculateImpulseVelocity(x),
15934
- y: calculateImpulseVelocity(y),
15935
- get direction() {
15936
- const {
15937
- x,
15938
- y
15939
- } = this;
15940
- const [absX, absY] = [Math.abs(x), Math.abs(y)];
15941
- return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops$1();
15942
- }
15943
- };
15944
- }
15945
- return {
15946
- addMovement,
15947
- endTouch,
15948
- getVelocity
15949
- };
15657
+ function endTouch(e) {
15658
+ Array.from(e.changedTouches).forEach(touch => {
15659
+ delete touches[touch.identifier];
15660
+ });
15661
+ }
15662
+ function getVelocity(id) {
15663
+ const samples = touches[id]?.values().reverse();
15664
+ if (!samples) {
15665
+ throw new Error(`No samples for touch id ${id}`);
15666
+ }
15667
+ const newest = samples[0];
15668
+ const x = [];
15669
+ const y = [];
15670
+ for (const val of samples) {
15671
+ if (newest[0] - val[0] > HORIZON) break;
15672
+ x.push({
15673
+ t: val[0],
15674
+ d: val[1].clientX
15675
+ });
15676
+ y.push({
15677
+ t: val[0],
15678
+ d: val[1].clientY
15679
+ });
15680
+ }
15681
+ return {
15682
+ x: calculateImpulseVelocity(x),
15683
+ y: calculateImpulseVelocity(y),
15684
+ get direction() {
15685
+ const {
15686
+ x,
15687
+ y
15688
+ } = this;
15689
+ const [absX, absY] = [Math.abs(x), Math.abs(y)];
15690
+ return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops$1();
15691
+ }
15692
+ };
15693
+ }
15694
+ return {
15695
+ addMovement,
15696
+ endTouch,
15697
+ getVelocity
15698
+ };
15950
15699
  }
15951
15700
  function oops$1() {
15952
15701
  throw new Error();
@@ -16122,6 +15871,7 @@ const VNavigationDrawer = genericComponent()({
16122
15871
  },
16123
15872
  sticky: Boolean,
16124
15873
  ...makeBorderProps(),
15874
+ ...makeComponentProps(),
16125
15875
  ...makeElevationProps(),
16126
15876
  ...makeLayoutItemProps(),
16127
15877
  ...makeRoundedProps(),
@@ -16273,8 +16023,8 @@ const VNavigationDrawer = genericComponent()({
16273
16023
  'v-navigation-drawer--temporary': isTemporary.value,
16274
16024
  'v-navigation-drawer--active': isActive.value,
16275
16025
  '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]
16026
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16027
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
16278
16028
  }, attrs), {
16279
16029
  default: () => [hasImage && createVNode("div", {
16280
16030
  "key": "image",
@@ -16403,6 +16153,7 @@ const VPagination = genericComponent()({
16403
16153
  },
16404
16154
  showFirstLastPage: Boolean,
16405
16155
  ...makeBorderProps(),
16156
+ ...makeComponentProps(),
16406
16157
  ...makeDensityProps(),
16407
16158
  ...makeElevationProps(),
16408
16159
  ...makeRoundedProps(),
@@ -16599,7 +16350,8 @@ const VPagination = genericComponent()({
16599
16350
  }
16600
16351
  useRender(() => createVNode(props.tag, {
16601
16352
  "ref": resizeRef,
16602
- "class": ['v-pagination', themeClasses.value],
16353
+ "class": ['v-pagination', themeClasses.value, props.class],
16354
+ "style": props.style,
16603
16355
  "role": "navigation",
16604
16356
  "aria-label": t(props.ariaLabel),
16605
16357
  "onKeydown": onKeydown,
@@ -16658,7 +16410,8 @@ const VParallax = genericComponent()({
16658
16410
  scale: {
16659
16411
  type: [Number, String],
16660
16412
  default: 0.5
16661
- }
16413
+ },
16414
+ ...makeComponentProps()
16662
16415
  },
16663
16416
  setup(props, _ref) {
16664
16417
  let {
@@ -16720,7 +16473,8 @@ const VParallax = genericComponent()({
16720
16473
  useRender(() => createVNode(VImg, {
16721
16474
  "class": ['v-parallax', {
16722
16475
  'v-parallax--active': isIntersecting.value
16723
- }],
16476
+ }, props.class],
16477
+ "style": props.style,
16724
16478
  "ref": root,
16725
16479
  "cover": true,
16726
16480
  "onLoadstart": onScroll,
@@ -16745,7 +16499,8 @@ const VRadio = genericComponent()({
16745
16499
  slots
16746
16500
  } = _ref;
16747
16501
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16748
- "class": "v-radio",
16502
+ "class": ['v-radio', props.class],
16503
+ "style": props.style,
16749
16504
  "type": "radio"
16750
16505
  }), slots));
16751
16506
  return {};
@@ -16799,7 +16554,8 @@ const VRadioGroup = genericComponent()({
16799
16554
  }
16800
16555
  }) : props.label;
16801
16556
  return createVNode(VInput, mergeProps({
16802
- "class": "v-radio-group"
16557
+ "class": ['v-radio-group', props.class],
16558
+ "style": props.style
16803
16559
  }, inputAttrs, inputProps, {
16804
16560
  "modelValue": model.value,
16805
16561
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16937,7 +16693,8 @@ const VRangeSlider = genericComponent()({
16937
16693
  'v-slider--focused': isFocused.value,
16938
16694
  'v-slider--pressed': mousePressed.value,
16939
16695
  'v-slider--disabled': props.disabled
16940
- }],
16696
+ }, props.class],
16697
+ "style": props.style,
16941
16698
  "ref": inputRef
16942
16699
  }, inputProps, {
16943
16700
  "focused": isFocused.value
@@ -17080,6 +16837,7 @@ const VRating = genericComponent()({
17080
16837
  validator: v => ['top', 'bottom'].includes(v)
17081
16838
  },
17082
16839
  ripple: Boolean,
16840
+ ...makeComponentProps(),
17083
16841
  ...makeDensityProps(),
17084
16842
  ...makeSizeProps(),
17085
16843
  ...makeTagProps(),
@@ -17197,7 +16955,8 @@ const VRating = genericComponent()({
17197
16955
  "class": ['v-rating', {
17198
16956
  'v-rating--hover': props.hover,
17199
16957
  'v-rating--readonly': props.readonly
17200
- }, themeClasses.value]
16958
+ }, themeClasses.value, props.class],
16959
+ "style": props.style
17201
16960
  }, {
17202
16961
  default: () => [createVNode(VRatingItem, {
17203
16962
  "value": 0,
@@ -17297,6 +17056,7 @@ const makeVSlideGroupProps = propsFactory({
17297
17056
  type: [Boolean, String],
17298
17057
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
17299
17058
  },
17059
+ ...makeComponentProps(),
17300
17060
  ...makeTagProps(),
17301
17061
  ...makeGroupProps({
17302
17062
  selectedClass: 'v-slide-group-item--active'
@@ -17460,7 +17220,7 @@ const VSlideGroup = genericComponent()({
17460
17220
  function focus(location) {
17461
17221
  if (!contentRef.value) return;
17462
17222
  if (!location) {
17463
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
17223
+ const focusable = focusableChildren(contentRef.value);
17464
17224
  focusable[0]?.focus();
17465
17225
  } else if (location === 'next') {
17466
17226
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -17537,7 +17297,8 @@ const VSlideGroup = genericComponent()({
17537
17297
  'v-slide-group--vertical': !isHorizontal.value,
17538
17298
  'v-slide-group--has-affixes': hasAffixes.value,
17539
17299
  'v-slide-group--is-overflowing': isOverflowing.value
17540
- }],
17300
+ }, props.class],
17301
+ "style": props.style,
17541
17302
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
17542
17303
  "onFocus": onFocus
17543
17304
  }, {
@@ -17687,7 +17448,8 @@ const VSnackbar = genericComponent()({
17687
17448
  'v-snackbar--active': isActive.value,
17688
17449
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17689
17450
  'v-snackbar--vertical': props.vertical
17690
- }, positionClasses.value]
17451
+ }, positionClasses.value, props.class],
17452
+ "style": props.style
17691
17453
  }, overlayProps, {
17692
17454
  "modelValue": isActive.value,
17693
17455
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17787,7 +17549,8 @@ const VSwitch = genericComponent()({
17787
17549
  'v-switch--inset': props.inset
17788
17550
  }, {
17789
17551
  'v-switch--indeterminate': indeterminate.value
17790
- }, loaderClasses.value]
17552
+ }, loaderClasses.value, props.class],
17553
+ "style": props.style
17791
17554
  }, inputAttrs, inputProps, {
17792
17555
  "id": id.value,
17793
17556
  "focused": isFocused.value
@@ -17856,6 +17619,7 @@ const VSystemBar = genericComponent()({
17856
17619
  color: String,
17857
17620
  height: [Number, String],
17858
17621
  window: Boolean,
17622
+ ...makeComponentProps(),
17859
17623
  ...makeElevationProps(),
17860
17624
  ...makeLayoutItemProps(),
17861
17625
  ...makeRoundedProps(),
@@ -17897,8 +17661,8 @@ const VSystemBar = genericComponent()({
17897
17661
  useRender(() => createVNode(props.tag, {
17898
17662
  "class": ['v-system-bar', {
17899
17663
  'v-system-bar--window': props.window
17900
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17901
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17664
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17665
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17902
17666
  }, slots));
17903
17667
  return {};
17904
17668
  }
@@ -17971,10 +17735,10 @@ const VTab = genericComponent()({
17971
17735
  useRender(() => {
17972
17736
  const [btnProps] = VBtn.filterProps(props);
17973
17737
  return createVNode(VBtn, mergeProps({
17974
- "_as": "VTab",
17975
17738
  "symbol": VTabsSymbol,
17976
17739
  "ref": rootEl,
17977
- "class": ['v-tab'],
17740
+ "class": ['v-tab', props.class],
17741
+ "style": props.style,
17978
17742
  "tabindex": isSelected.value ? 0 : -1,
17979
17743
  "role": "tab",
17980
17744
  "aria-selected": String(isSelected.value),
@@ -18069,10 +17833,10 @@ const VTabs = genericComponent()({
18069
17833
  'v-tabs--fixed-tabs': props.fixedTabs,
18070
17834
  'v-tabs--grow': props.grow,
18071
17835
  'v-tabs--stacked': props.stacked
18072
- }, densityClasses.value, backgroundColorClasses.value],
17836
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
18073
17837
  "style": [{
18074
17838
  '--v-tabs-height': convertToUnit(props.height)
18075
- }, backgroundColorStyles.value],
17839
+ }, backgroundColorStyles.value, props.style],
18076
17840
  "role": "tablist",
18077
17841
  "symbol": VTabsSymbol
18078
17842
  }), {
@@ -18092,6 +17856,7 @@ const VTable = genericComponent()({
18092
17856
  fixedFooter: Boolean,
18093
17857
  height: [Number, String],
18094
17858
  hover: Boolean,
17859
+ ...makeComponentProps(),
18095
17860
  ...makeDensityProps(),
18096
17861
  ...makeTagProps(),
18097
17862
  ...makeThemeProps()
@@ -18114,7 +17879,8 @@ const VTable = genericComponent()({
18114
17879
  'v-table--has-top': !!slots.top,
18115
17880
  'v-table--has-bottom': !!slots.bottom,
18116
17881
  'v-table--hover': props.hover
18117
- }, themeClasses.value, densityClasses.value]
17882
+ }, themeClasses.value, densityClasses.value, props.class],
17883
+ "style": props.style
18118
17884
  }, {
18119
17885
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
18120
17886
  "class": "v-table__wrapper",
@@ -18279,7 +18045,8 @@ const VTextarea = genericComponent()({
18279
18045
  'v-textarea--auto-grow': props.autoGrow,
18280
18046
  'v-textarea--no-resize': props.noResize || props.autoGrow,
18281
18047
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
18282
- }]
18048
+ }, props.class],
18049
+ "style": props.style
18283
18050
  }, rootAttrs, inputProps, {
18284
18051
  "focused": isFocused.value
18285
18052
  }), {
@@ -18363,6 +18130,7 @@ const VThemeProvider = genericComponent()({
18363
18130
  name: 'VThemeProvider',
18364
18131
  props: {
18365
18132
  withBackground: Boolean,
18133
+ ...makeComponentProps(),
18366
18134
  ...makeThemeProps(),
18367
18135
  ...makeTagProps()
18368
18136
  },
@@ -18376,7 +18144,8 @@ const VThemeProvider = genericComponent()({
18376
18144
  return () => {
18377
18145
  if (!props.withBackground) return slots.default?.();
18378
18146
  return createVNode(props.tag, {
18379
- "class": ['v-theme-provider', themeClasses.value]
18147
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18148
+ "style": props.style
18380
18149
  }, {
18381
18150
  default: () => [slots.default?.()]
18382
18151
  });
@@ -18421,6 +18190,7 @@ const VTimeline = genericComponent()({
18421
18190
  type: String,
18422
18191
  validator: v => ['start', 'end', 'both'].includes(v)
18423
18192
  },
18193
+ ...makeComponentProps(),
18424
18194
  ...makeDensityProps(),
18425
18195
  ...makeTagProps(),
18426
18196
  ...makeThemeProps()
@@ -18464,10 +18234,10 @@ const VTimeline = genericComponent()({
18464
18234
  useRender(() => createVNode(props.tag, {
18465
18235
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18466
18236
  'v-timeline--inset-line': !!props.lineInset
18467
- }, themeClasses.value, densityClasses.value, sideClasses.value],
18468
- "style": {
18237
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18238
+ "style": [{
18469
18239
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
18470
- }
18240
+ }, props.style]
18471
18241
  }, slots));
18472
18242
  return {};
18473
18243
  }
@@ -18482,6 +18252,7 @@ const VTimelineDivider = genericComponent()({
18482
18252
  icon: IconValue,
18483
18253
  iconColor: String,
18484
18254
  lineColor: String,
18255
+ ...makeComponentProps(),
18485
18256
  ...makeRoundedProps(),
18486
18257
  ...makeSizeProps(),
18487
18258
  ...makeElevationProps()
@@ -18511,7 +18282,8 @@ const VTimelineDivider = genericComponent()({
18511
18282
  useRender(() => createVNode("div", {
18512
18283
  "class": ['v-timeline-divider', {
18513
18284
  'v-timeline-divider--fill-dot': props.fillDot
18514
- }]
18285
+ }, props.class],
18286
+ "style": props.style
18515
18287
  }, [createVNode("div", {
18516
18288
  "class": ['v-timeline-divider__before', lineColorClasses.value],
18517
18289
  "style": lineColorStyles.value
@@ -18561,11 +18333,12 @@ const VTimelineItem = genericComponent()({
18561
18333
  icon: IconValue,
18562
18334
  iconColor: String,
18563
18335
  lineInset: [Number, String],
18564
- ...makeRoundedProps(),
18336
+ ...makeComponentProps(),
18337
+ ...makeDimensionProps(),
18565
18338
  ...makeElevationProps(),
18339
+ ...makeRoundedProps(),
18566
18340
  ...makeSizeProps(),
18567
- ...makeTagProps(),
18568
- ...makeDimensionProps()
18341
+ ...makeTagProps()
18569
18342
  },
18570
18343
  setup(props, _ref) {
18571
18344
  let {
@@ -18585,11 +18358,11 @@ const VTimelineItem = genericComponent()({
18585
18358
  useRender(() => createVNode("div", {
18586
18359
  "class": ['v-timeline-item', {
18587
18360
  'v-timeline-item--fill-dot': props.fillDot
18588
- }],
18589
- "style": {
18361
+ }, props.class],
18362
+ "style": [{
18590
18363
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18591
18364
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18592
- }
18365
+ }, props.style]
18593
18366
  }, [createVNode("div", {
18594
18367
  "class": "v-timeline-item__body",
18595
18368
  "style": dimensionStyles.value
@@ -18665,7 +18438,8 @@ const VTooltip = genericComponent()({
18665
18438
  const [overlayProps] = VOverlay.filterProps(props);
18666
18439
  return createVNode(VOverlay, mergeProps({
18667
18440
  "ref": overlay,
18668
- "class": ['v-tooltip'],
18441
+ "class": ['v-tooltip', props.class],
18442
+ "style": props.style,
18669
18443
  "id": id.value
18670
18444
  }, overlayProps, {
18671
18445
  "modelValue": isActive.value,
@@ -18713,7 +18487,8 @@ const VValidation = genericComponent()({
18713
18487
  const VVirtualScrollItem = genericComponent()({
18714
18488
  name: 'VVirtualScrollItem',
18715
18489
  props: {
18716
- dynamicHeight: Boolean
18490
+ dynamicHeight: Boolean,
18491
+ ...makeComponentProps()
18717
18492
  },
18718
18493
  emits: {
18719
18494
  'update:height': height => true
@@ -18740,7 +18515,8 @@ const VVirtualScrollItem = genericComponent()({
18740
18515
  onUpdated(updateHeight);
18741
18516
  useRender(() => createVNode("div", {
18742
18517
  "ref": props.dynamicHeight ? resizeRef : undefined,
18743
- "class": "v-virtual-scroll__item"
18518
+ "class": ['v-virtual-scroll__item', props.class],
18519
+ "style": props.style
18744
18520
  }, [slots.default?.()]));
18745
18521
  }
18746
18522
  });
@@ -18757,7 +18533,7 @@ const VVirtualScroll = genericComponent()({
18757
18533
  default: () => []
18758
18534
  },
18759
18535
  itemHeight: [Number, String],
18760
- visibleItems: [Number, String],
18536
+ ...makeComponentProps(),
18761
18537
  ...makeDimensionProps()
18762
18538
  },
18763
18539
  setup(props, _ref) {
@@ -18784,7 +18560,7 @@ const VVirtualScroll = genericComponent()({
18784
18560
  const sizeMap = new Map();
18785
18561
  let sizes = createRange(props.items.length).map(() => itemHeight.value);
18786
18562
  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));
18563
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18788
18564
  });
18789
18565
  function handleItemResize(index, height) {
18790
18566
  itemHeight.value = Math.max(itemHeight.value, height);
@@ -18795,20 +18571,13 @@ const VVirtualScroll = genericComponent()({
18795
18571
  return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18796
18572
  }
18797
18573
  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
- }
18574
+ const end = props.items.length;
18575
+ let middle = 0;
18576
+ let middleOffset = 0;
18577
+ while (middleOffset < scrollTop && middle < end) {
18578
+ middleOffset += sizes[middle++] || itemHeight.value;
18810
18579
  }
18811
- return start;
18580
+ return middle - 1;
18812
18581
  }
18813
18582
  let lastScrollTop = 0;
18814
18583
  function handleScroll() {
@@ -18830,8 +18599,12 @@ const VVirtualScroll = genericComponent()({
18830
18599
  const offset = calculateOffset(index);
18831
18600
  rootEl.value.scrollTop = offset;
18832
18601
  }
18602
+ const items = computed(() => props.items.map((item, index) => ({
18603
+ raw: item,
18604
+ index
18605
+ })));
18833
18606
  const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18834
- const computedItems = computed(() => props.items.slice(first.value, last.value));
18607
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18835
18608
  const paddingTop = computed(() => calculateOffset(first.value));
18836
18609
  const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18837
18610
  const {
@@ -18856,23 +18629,23 @@ const VVirtualScroll = genericComponent()({
18856
18629
  });
18857
18630
  useRender(() => createVNode("div", {
18858
18631
  "ref": rootEl,
18859
- "class": "v-virtual-scroll",
18632
+ "class": ['v-virtual-scroll', props.class],
18860
18633
  "onScroll": handleScroll,
18861
- "style": dimensionStyles.value
18634
+ "style": [dimensionStyles.value, props.style]
18862
18635
  }, [createVNode("div", {
18863
18636
  "class": "v-virtual-scroll__container",
18864
18637
  "style": {
18865
18638
  paddingTop: convertToUnit(paddingTop.value),
18866
18639
  paddingBottom: convertToUnit(paddingBottom.value)
18867
18640
  }
18868
- }, [computedItems.value.map((item, index) => createVNode(VVirtualScrollItem, {
18869
- "key": index,
18641
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18642
+ "key": item.index,
18870
18643
  "dynamicHeight": !props.itemHeight,
18871
- "onUpdate:height": height => handleItemResize(index + first.value, height)
18644
+ "onUpdate:height": height => handleItemResize(item.index, height)
18872
18645
  }, {
18873
18646
  default: () => [slots.default?.({
18874
- item,
18875
- index: index + first.value
18647
+ item: item.raw,
18648
+ index: item.index
18876
18649
  })]
18877
18650
  }))])]));
18878
18651
  return {
@@ -19020,130 +18793,542 @@ var components = /*#__PURE__*/Object.freeze({
19020
18793
 
19021
18794
  // Types
19022
18795
 
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
18796
+ function mounted$2(el, binding) {
18797
+ const modifiers = binding.modifiers || {};
18798
+ const value = binding.value;
18799
+ const {
18800
+ once,
18801
+ immediate,
18802
+ ...modifierKeys
18803
+ } = modifiers;
18804
+ const defaultValue = !Object.keys(modifierKeys).length;
18805
+ const {
18806
+ handler,
18807
+ options
18808
+ } = typeof value === 'object' ? value : {
18809
+ handler: value,
18810
+ options: {
18811
+ attributes: modifierKeys?.attr ?? defaultValue,
18812
+ characterData: modifierKeys?.char ?? defaultValue,
18813
+ childList: modifierKeys?.child ?? defaultValue,
18814
+ subtree: modifierKeys?.sub ?? defaultValue
18815
+ }
18816
+ };
18817
+ const observer = new MutationObserver(function () {
18818
+ let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18819
+ let observer = arguments.length > 1 ? arguments[1] : undefined;
18820
+ handler?.(mutations, observer);
18821
+ if (once) unmounted$2(el, binding);
18822
+ });
18823
+ if (immediate) handler?.([], observer);
18824
+ el._mutate = Object(el._mutate);
18825
+ el._mutate[binding.instance.$.uid] = {
18826
+ observer
18827
+ };
18828
+ observer.observe(el, options);
18829
+ }
18830
+ function unmounted$2(el, binding) {
18831
+ if (!el._mutate?.[binding.instance.$.uid]) return;
18832
+ el._mutate[binding.instance.$.uid].observer.disconnect();
18833
+ delete el._mutate[binding.instance.$.uid];
18834
+ }
18835
+ const Mutate = {
18836
+ mounted: mounted$2,
18837
+ unmounted: unmounted$2
18838
+ };
18839
+
18840
+ function mounted$1(el, binding) {
18841
+ const handler = binding.value;
18842
+ const options = {
18843
+ passive: !binding.modifiers?.active
18844
+ };
18845
+ window.addEventListener('resize', handler, options);
18846
+ el._onResize = Object(el._onResize);
18847
+ el._onResize[binding.instance.$.uid] = {
18848
+ handler,
18849
+ options
18850
+ };
18851
+ if (!binding.modifiers?.quiet) {
18852
+ handler();
18853
+ }
18854
+ }
18855
+ function unmounted$1(el, binding) {
18856
+ if (!el._onResize?.[binding.instance.$.uid]) return;
18857
+ const {
18858
+ handler,
18859
+ options
18860
+ } = el._onResize[binding.instance.$.uid];
18861
+ window.removeEventListener('resize', handler, options);
18862
+ delete el._onResize[binding.instance.$.uid];
18863
+ }
18864
+ const Resize = {
18865
+ mounted: mounted$1,
18866
+ unmounted: unmounted$1
18867
+ };
18868
+
18869
+ function mounted(el, binding) {
18870
+ const {
18871
+ self = false
18872
+ } = binding.modifiers ?? {};
18873
+ const value = binding.value;
18874
+ const options = typeof value === 'object' && value.options || {
18875
+ passive: true
18876
+ };
18877
+ const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
18878
+ const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
18879
+ if (!target) return;
18880
+ target.addEventListener('scroll', handler, options);
18881
+ el._onScroll = Object(el._onScroll);
18882
+ el._onScroll[binding.instance.$.uid] = {
18883
+ handler,
18884
+ options,
18885
+ // Don't reference self
18886
+ target: self ? undefined : target
18887
+ };
18888
+ }
18889
+ function unmounted(el, binding) {
18890
+ if (!el._onScroll?.[binding.instance.$.uid]) return;
18891
+ const {
18892
+ handler,
18893
+ options,
18894
+ target = el
18895
+ } = el._onScroll[binding.instance.$.uid];
18896
+ target.removeEventListener('scroll', handler, options);
18897
+ delete el._onScroll[binding.instance.$.uid];
18898
+ }
18899
+ function updated(el, binding) {
18900
+ if (binding.value === binding.oldValue) return;
18901
+ unmounted(el, binding);
18902
+ mounted(el, binding);
18903
+ }
18904
+ const Scroll = {
18905
+ mounted,
18906
+ unmounted,
18907
+ updated
18908
+ };
18909
+
18910
+ var directives = /*#__PURE__*/Object.freeze({
18911
+ __proto__: null,
18912
+ ClickOutside: ClickOutside,
18913
+ Intersect: Intersect,
18914
+ Mutate: Mutate,
18915
+ Resize: Resize,
18916
+ Ripple: Ripple,
18917
+ Scroll: Scroll,
18918
+ Touch: Touch
18919
+ });
18920
+
18921
+ // Utilities
18922
+
18923
+ // Types
18924
+
18925
+ function getWeekArray(date) {
18926
+ let currentWeek = [];
18927
+ const weeks = [];
18928
+ const firstDayOfMonth = startOfMonth(date);
18929
+ const lastDayOfMonth = endOfMonth(date);
18930
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
18931
+ currentWeek.push(null);
18932
+ }
18933
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
18934
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
18935
+
18936
+ // Add the day to the current week
18937
+ currentWeek.push(day);
18938
+
18939
+ // If the current week has 7 days, add it to the weeks array and start a new week
18940
+ if (currentWeek.length === 7) {
18941
+ weeks.push(currentWeek);
18942
+ currentWeek = [];
19042
18943
  }
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);
18944
+ }
18945
+ for (let i = currentWeek.length; i < 7; i++) {
18946
+ currentWeek.push(null);
18947
+ }
18948
+ weeks.push(currentWeek);
18949
+ return weeks;
18950
+ }
18951
+ function startOfMonth(date) {
18952
+ return new Date(date.getFullYear(), date.getMonth(), 1);
18953
+ }
18954
+ function endOfMonth(date) {
18955
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
18956
+ }
18957
+ function date(value) {
18958
+ if (value == null) return null;
18959
+ if (value instanceof Date) return value;
18960
+ if (typeof value === 'string') {
18961
+ const parsed = Date.parse(value);
18962
+ if (!isNaN(parsed)) return new Date(parsed);
18963
+ }
18964
+ return null;
18965
+ }
18966
+ const firstDay = {
18967
+ '001': 1,
18968
+ AD: 1,
18969
+ AE: 6,
18970
+ AF: 6,
18971
+ AG: 0,
18972
+ AI: 1,
18973
+ AL: 1,
18974
+ AM: 1,
18975
+ AN: 1,
18976
+ AR: 1,
18977
+ AS: 0,
18978
+ AT: 1,
18979
+ AU: 0,
18980
+ AX: 1,
18981
+ AZ: 1,
18982
+ BA: 1,
18983
+ BD: 0,
18984
+ BE: 1,
18985
+ BG: 1,
18986
+ BH: 6,
18987
+ BM: 1,
18988
+ BN: 1,
18989
+ BR: 0,
18990
+ BS: 0,
18991
+ BT: 0,
18992
+ BW: 0,
18993
+ BY: 1,
18994
+ BZ: 0,
18995
+ CA: 0,
18996
+ CH: 1,
18997
+ CL: 1,
18998
+ CM: 1,
18999
+ CN: 0,
19000
+ CO: 0,
19001
+ CR: 1,
19002
+ CY: 1,
19003
+ CZ: 1,
19004
+ DE: 1,
19005
+ DJ: 6,
19006
+ DK: 1,
19007
+ DM: 0,
19008
+ DO: 0,
19009
+ DZ: 6,
19010
+ EC: 1,
19011
+ EE: 1,
19012
+ EG: 6,
19013
+ ES: 1,
19014
+ ET: 0,
19015
+ FI: 1,
19016
+ FJ: 1,
19017
+ FO: 1,
19018
+ FR: 1,
19019
+ GB: 1,
19020
+ 'GB-alt-variant': 0,
19021
+ GE: 1,
19022
+ GF: 1,
19023
+ GP: 1,
19024
+ GR: 1,
19025
+ GT: 0,
19026
+ GU: 0,
19027
+ HK: 0,
19028
+ HN: 0,
19029
+ HR: 1,
19030
+ HU: 1,
19031
+ ID: 0,
19032
+ IE: 1,
19033
+ IL: 0,
19034
+ IN: 0,
19035
+ IQ: 6,
19036
+ IR: 6,
19037
+ IS: 1,
19038
+ IT: 1,
19039
+ JM: 0,
19040
+ JO: 6,
19041
+ JP: 0,
19042
+ KE: 0,
19043
+ KG: 1,
19044
+ KH: 0,
19045
+ KR: 0,
19046
+ KW: 6,
19047
+ KZ: 1,
19048
+ LA: 0,
19049
+ LB: 1,
19050
+ LI: 1,
19051
+ LK: 1,
19052
+ LT: 1,
19053
+ LU: 1,
19054
+ LV: 1,
19055
+ LY: 6,
19056
+ MC: 1,
19057
+ MD: 1,
19058
+ ME: 1,
19059
+ MH: 0,
19060
+ MK: 1,
19061
+ MM: 0,
19062
+ MN: 1,
19063
+ MO: 0,
19064
+ MQ: 1,
19065
+ MT: 0,
19066
+ MV: 5,
19067
+ MX: 0,
19068
+ MY: 1,
19069
+ MZ: 0,
19070
+ NI: 0,
19071
+ NL: 1,
19072
+ NO: 1,
19073
+ NP: 0,
19074
+ NZ: 1,
19075
+ OM: 6,
19076
+ PA: 0,
19077
+ PE: 0,
19078
+ PH: 0,
19079
+ PK: 0,
19080
+ PL: 1,
19081
+ PR: 0,
19082
+ PT: 0,
19083
+ PY: 0,
19084
+ QA: 6,
19085
+ RE: 1,
19086
+ RO: 1,
19087
+ RS: 1,
19088
+ RU: 1,
19089
+ SA: 0,
19090
+ SD: 6,
19091
+ SE: 1,
19092
+ SG: 0,
19093
+ SI: 1,
19094
+ SK: 1,
19095
+ SM: 1,
19096
+ SV: 0,
19097
+ SY: 6,
19098
+ TH: 0,
19099
+ TJ: 1,
19100
+ TM: 1,
19101
+ TR: 1,
19102
+ TT: 0,
19103
+ TW: 0,
19104
+ UA: 1,
19105
+ UM: 0,
19106
+ US: 0,
19107
+ UY: 1,
19108
+ UZ: 1,
19109
+ VA: 1,
19110
+ VE: 0,
19111
+ VI: 0,
19112
+ VN: 1,
19113
+ WS: 0,
19114
+ XK: 1,
19115
+ YE: 0,
19116
+ ZA: 0,
19117
+ ZW: 0
19118
+ };
19119
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
19120
+ function getWeekdays(locale) {
19121
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
19122
+ return createRange(7).map(i => {
19123
+ const weekday = new Date(sundayJanuarySecond2000);
19124
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
19125
+ return new Intl.DateTimeFormat(locale, {
19126
+ weekday: 'long'
19127
+ }).format(weekday);
19049
19128
  });
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
19129
  }
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];
19130
+ function format(value, formatString, locale) {
19131
+ const date = new Date(value);
19132
+ let options = {};
19133
+ switch (formatString) {
19134
+ case 'fullDateWithWeekday':
19135
+ options = {
19136
+ weekday: 'long',
19137
+ day: 'numeric',
19138
+ month: 'long',
19139
+ year: 'numeric'
19140
+ };
19141
+ break;
19142
+ case 'normalDateWithWeekday':
19143
+ options = {
19144
+ weekday: 'short',
19145
+ day: 'numeric',
19146
+ month: 'short',
19147
+ year: 'numeric'
19148
+ };
19149
+ break;
19150
+ case 'keyboardDate':
19151
+ options = {};
19152
+ break;
19153
+ case 'monthAndDate':
19154
+ options = {
19155
+ month: 'long',
19156
+ day: 'numeric'
19157
+ };
19158
+ break;
19159
+ case 'monthAndYear':
19160
+ options = {
19161
+ month: 'long',
19162
+ year: 'numeric'
19163
+ };
19164
+ break;
19165
+ default:
19166
+ options = {
19167
+ timeZone: 'UTC',
19168
+ timeZoneName: 'short'
19169
+ };
19170
+ }
19171
+ return new Intl.DateTimeFormat(locale, options).format(date);
19172
+ }
19173
+ function addDays(date, amount) {
19174
+ const d = new Date(date);
19175
+ d.setDate(d.getDate() + amount);
19176
+ return d;
19177
+ }
19178
+ function addMonths(date, amount) {
19179
+ const d = new Date(date);
19180
+ d.setMonth(d.getMonth() + amount);
19181
+ return d;
19182
+ }
19183
+ function getYear(date) {
19184
+ return date.getFullYear();
19185
+ }
19186
+ function getMonth(date) {
19187
+ return date.getMonth();
19188
+ }
19189
+ function startOfYear(date) {
19190
+ return new Date(date.getFullYear(), 0, 1);
19191
+ }
19192
+ function endOfYear(date) {
19193
+ return new Date(date.getFullYear(), 11, 31);
19194
+ }
19195
+ function getMondayOfFirstWeekOfYear(year) {
19196
+ return new Date(year, 0, 1);
19061
19197
  }
19062
- const Mutate = {
19063
- mounted: mounted$2,
19064
- unmounted: unmounted$2
19065
- };
19066
19198
 
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();
19199
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
19200
+ function getWeek(date) {
19201
+ let year = date.getFullYear();
19202
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
19203
+ if (date < d1w1) {
19204
+ year = year - 1;
19205
+ d1w1 = getMondayOfFirstWeekOfYear(year);
19206
+ } else {
19207
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
19208
+ if (date >= tv) {
19209
+ year = year + 1;
19210
+ d1w1 = tv;
19211
+ }
19080
19212
  }
19213
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
19214
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
19215
+ return Math.floor(diffDays / 7) + 1;
19081
19216
  }
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];
19217
+ function isWithinRange(date, range) {
19218
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
19090
19219
  }
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
- };
19220
+ function isValid(date) {
19221
+ const d = new Date(date);
19222
+ return d instanceof Date && !isNaN(d.getTime());
19115
19223
  }
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];
19224
+ function isAfter(date, comparing) {
19225
+ return date.getTime() > comparing.getTime();
19125
19226
  }
19126
- function updated(el, binding) {
19127
- if (binding.value === binding.oldValue) return;
19128
- unmounted(el, binding);
19129
- mounted(el, binding);
19227
+ function isBefore(date, comparing) {
19228
+ return date.getTime() < comparing.getTime();
19229
+ }
19230
+ function isEqual(date, comparing) {
19231
+ return date.getTime() === comparing.getTime();
19232
+ }
19233
+ function isSameDay(date, comparing) {
19234
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19235
+ }
19236
+ function isSameMonth(date, comparing) {
19237
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19238
+ }
19239
+ function getDiff(date, comparing, unit) {
19240
+ const d = new Date(date);
19241
+ const c = new Date(comparing);
19242
+ if (unit === 'month') {
19243
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
19244
+ }
19245
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
19246
+ }
19247
+ function setYear(date, year) {
19248
+ const d = new Date(date);
19249
+ d.setFullYear(year);
19250
+ return d;
19251
+ }
19252
+ class VuetifyDateAdapter {
19253
+ constructor() {
19254
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
19255
+ this.locale = locale;
19256
+ }
19257
+ date(value) {
19258
+ return date(value);
19259
+ }
19260
+ addDays(date, amount) {
19261
+ return addDays(date, amount);
19262
+ }
19263
+ addMonths(date, amount) {
19264
+ return addMonths(date, amount);
19265
+ }
19266
+ getWeekArray(date) {
19267
+ return getWeekArray(date);
19268
+ }
19269
+ startOfMonth(date) {
19270
+ return startOfMonth(date);
19271
+ }
19272
+ endOfMonth(date) {
19273
+ return endOfMonth(date);
19274
+ }
19275
+ format(date, formatString) {
19276
+ return format(date, formatString, this.locale);
19277
+ }
19278
+ isEqual(date, comparing) {
19279
+ return isEqual(date, comparing);
19280
+ }
19281
+ isValid(date) {
19282
+ return isValid(date);
19283
+ }
19284
+ isWithinRange(date, range) {
19285
+ return isWithinRange(date, range);
19286
+ }
19287
+ isAfter(date, comparing) {
19288
+ return isAfter(date, comparing);
19289
+ }
19290
+ isSameDay(date, comparing) {
19291
+ return isSameDay(date, comparing);
19292
+ }
19293
+ isSameMonth(date, comparing) {
19294
+ return isSameMonth(date, comparing);
19295
+ }
19296
+ setYear(date, year) {
19297
+ return setYear(date, year);
19298
+ }
19299
+ getDiff(date, comparing, unit) {
19300
+ return getDiff(date, comparing, unit);
19301
+ }
19302
+ getWeek(date) {
19303
+ return getWeek(date);
19304
+ }
19305
+ getWeekdays() {
19306
+ return getWeekdays(this.locale);
19307
+ }
19308
+ getYear(date) {
19309
+ return getYear(date);
19310
+ }
19311
+ getMonth(date) {
19312
+ return getMonth(date);
19313
+ }
19314
+ startOfYear(date) {
19315
+ return startOfYear(date);
19316
+ }
19317
+ endOfYear(date) {
19318
+ return endOfYear(date);
19319
+ }
19130
19320
  }
19131
- const Scroll = {
19132
- mounted,
19133
- unmounted,
19134
- updated
19135
- };
19136
19321
 
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
- });
19322
+ // Composables
19323
+
19324
+ // Types
19325
+
19326
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
19327
+ function createDate(options) {
19328
+ return options ?? {
19329
+ adapter: VuetifyDateAdapter
19330
+ };
19331
+ }
19147
19332
 
19148
19333
  // Composables
19149
19334
  function createVuetify$1() {
@@ -19230,7 +19415,7 @@ function createVuetify$1() {
19230
19415
  date
19231
19416
  };
19232
19417
  }
19233
- const version$1 = "4.0.0-dev-20230426.0";
19418
+ const version$1 = "4.0.0-dev-20230427.0";
19234
19419
  createVuetify$1.version = version$1;
19235
19420
 
19236
19421
  // Vue's inject() can only be used in setup
@@ -19250,8 +19435,8 @@ const createVuetify = function () {
19250
19435
  ...options
19251
19436
  });
19252
19437
  };
19253
- const version = "4.0.0-dev-20230426.0";
19438
+ const version = "4.0.0-dev-20230427.0";
19254
19439
  createVuetify.version = version;
19255
19440
 
19256
- export { components, createVuetify, directives, useDate, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19441
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19257
19442
  //# sourceMappingURL=vuetify.esm.js.map