@vuetify/nightly 4.0.0-dev-20230422.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 (468) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +274 -198
  4. package/dist/json/importMap-labs.json +4 -0
  5. package/dist/json/importMap.json +60 -60
  6. package/dist/json/tags.json +25 -1
  7. package/dist/json/web-types.json +624 -344
  8. package/dist/vuetify-labs.css +110 -86
  9. package/dist/vuetify-labs.d.ts +5976 -8072
  10. package/dist/vuetify-labs.esm.js +1499 -1093
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +1498 -1092
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.css +21 -22
  15. package/dist/vuetify.d.ts +5999 -7524
  16. package/dist/vuetify.esm.js +1255 -1066
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +1254 -1065
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +744 -739
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/blueprints/index.d.ts +1 -1
  24. package/lib/blueprints/md1.d.ts +1 -1
  25. package/lib/blueprints/md2.d.ts +1 -1
  26. package/lib/blueprints/md3.d.ts +1 -1
  27. package/lib/components/VAlert/VAlert.mjs +6 -4
  28. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  29. package/lib/components/VAlert/index.d.ts +57 -55
  30. package/lib/components/VApp/VApp.mjs +4 -2
  31. package/lib/components/VApp/VApp.mjs.map +1 -1
  32. package/lib/components/VApp/index.d.ts +22 -13
  33. package/lib/components/VAppBar/VAppBar.mjs +3 -3
  34. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  35. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -4
  36. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  37. package/lib/components/VAppBar/index.d.ts +87 -92
  38. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -1
  39. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  40. package/lib/components/VAutocomplete/index.d.ts +225 -403
  41. package/lib/components/VAvatar/VAvatar.mjs +4 -2
  42. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  43. package/lib/components/VAvatar/index.d.ts +23 -14
  44. package/lib/components/VBadge/VBadge.mjs +6 -5
  45. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  46. package/lib/components/VBadge/index.d.ts +27 -22
  47. package/lib/components/VBanner/VBanner.mjs +6 -4
  48. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  49. package/lib/components/VBanner/VBannerActions.mjs +5 -2
  50. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  51. package/lib/components/VBanner/index.d.ts +92 -66
  52. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -2
  53. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  54. package/lib/components/VBottomNavigation/index.d.ts +22 -13
  55. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +35 -18
  56. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  57. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -3
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  59. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +4 -2
  60. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  61. package/lib/components/VBreadcrumbs/index.d.ts +134 -93
  62. package/lib/components/VBtn/VBtn.mjs +5 -3
  63. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  64. package/lib/components/VBtn/index.d.ts +33 -36
  65. package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -1
  66. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  67. package/lib/components/VBtnGroup/index.d.ts +22 -13
  68. package/lib/components/VBtnToggle/VBtnToggle.mjs +4 -2
  69. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  70. package/lib/components/VBtnToggle/index.d.ts +30 -21
  71. package/lib/components/VCard/VCard.mjs +5 -3
  72. package/lib/components/VCard/VCard.mjs.map +1 -1
  73. package/lib/components/VCard/VCardActions.mjs +7 -4
  74. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  75. package/lib/components/VCard/VCardItem.mjs +5 -2
  76. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  77. package/lib/components/VCard/index.d.ts +250 -141
  78. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  79. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  80. package/lib/components/VCarousel/VCarouselItem.mjs +6 -3
  81. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  82. package/lib/components/VCarousel/index.d.ts +78 -141
  83. package/lib/components/VCheckbox/VCheckbox.mjs +3 -2
  84. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  85. package/lib/components/VCheckbox/VCheckboxBtn.mjs +2 -1
  86. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  87. package/lib/components/VCheckbox/index.d.ts +69 -103
  88. package/lib/components/VChip/VChip.mjs +7 -8
  89. package/lib/components/VChip/VChip.mjs.map +1 -1
  90. package/lib/components/VChip/index.d.ts +27 -30
  91. package/lib/components/VChipGroup/VChipGroup.mjs +4 -1
  92. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  93. package/lib/components/VChipGroup/index.d.ts +22 -13
  94. package/lib/components/VCode/index.d.ts +30 -17
  95. package/lib/components/VColorPicker/VColorPicker.mjs +3 -3
  96. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  97. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -2
  98. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  99. package/lib/components/VColorPicker/VColorPickerEdit.mjs +6 -3
  100. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  101. package/lib/components/VColorPicker/VColorPickerPreview.mjs +6 -3
  102. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  103. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +7 -5
  104. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  105. package/lib/components/VColorPicker/index.d.ts +34 -1
  106. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  107. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  108. package/lib/components/VCombobox/index.d.ts +225 -403
  109. package/lib/components/VCounter/VCounter.mjs +4 -1
  110. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  111. package/lib/components/VCounter/index.d.ts +22 -145
  112. package/lib/components/VDefaultsProvider/index.d.ts +0 -12
  113. package/lib/components/VDialog/VDialog.mjs +4 -3
  114. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  115. package/lib/components/VDialog/index.d.ts +104 -282
  116. package/lib/components/VDivider/VDivider.mjs +4 -2
  117. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  118. package/lib/components/VDivider/index.d.ts +22 -13
  119. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +4 -2
  120. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  121. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +4 -1
  122. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  123. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +4 -2
  124. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  125. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -1
  126. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  127. package/lib/components/VExpansionPanel/index.d.ts +109 -81
  128. package/lib/components/VField/VField.css +0 -1
  129. package/lib/components/VField/VField.mjs +9 -6
  130. package/lib/components/VField/VField.mjs.map +1 -1
  131. package/lib/components/VField/VField.sass +0 -1
  132. package/lib/components/VField/VFieldLabel.mjs +6 -3
  133. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  134. package/lib/components/VField/index.d.ts +119 -70
  135. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  136. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  137. package/lib/components/VFileInput/index.d.ts +99 -150
  138. package/lib/components/VFooter/VFooter.mjs +4 -2
  139. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  140. package/lib/components/VFooter/index.d.ts +22 -13
  141. package/lib/components/VForm/VForm.mjs +5 -2
  142. package/lib/components/VForm/VForm.mjs.map +1 -1
  143. package/lib/components/VForm/index.d.ts +30 -17
  144. package/lib/components/VGrid/VCol.mjs +4 -1
  145. package/lib/components/VGrid/VCol.mjs.map +1 -1
  146. package/lib/components/VGrid/VContainer.mjs +4 -1
  147. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  148. package/lib/components/VGrid/VRow.mjs +4 -1
  149. package/lib/components/VGrid/VRow.mjs.map +1 -1
  150. package/lib/components/VGrid/index.d.ts +104 -60
  151. package/lib/components/VHover/index.d.ts +20 -44
  152. package/lib/components/VIcon/VIcon.mjs +4 -2
  153. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  154. package/lib/components/VIcon/index.d.ts +23 -26
  155. package/lib/components/VImg/VImg.mjs +5 -3
  156. package/lib/components/VImg/VImg.mjs.map +1 -1
  157. package/lib/components/VImg/index.d.ts +26 -29
  158. package/lib/components/VInput/VInput.mjs +4 -1
  159. package/lib/components/VInput/VInput.mjs.map +1 -1
  160. package/lib/components/VInput/index.d.ts +31 -34
  161. package/lib/components/VItemGroup/VItemGroup.mjs +4 -1
  162. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  163. package/lib/components/VItemGroup/index.d.ts +30 -33
  164. package/lib/components/VKbd/index.d.ts +30 -17
  165. package/lib/components/VLabel/VLabel.mjs +4 -1
  166. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  167. package/lib/components/VLabel/index.d.ts +22 -13
  168. package/lib/components/VLayout/VLayout.mjs +8 -4
  169. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  170. package/lib/components/VLayout/VLayoutItem.mjs +4 -2
  171. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  172. package/lib/components/VLayout/index.d.ts +44 -26
  173. package/lib/components/VLazy/VLazy.mjs +4 -2
  174. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  175. package/lib/components/VLazy/index.d.ts +22 -13
  176. package/lib/components/VList/VList.mjs +7 -24
  177. package/lib/components/VList/VList.mjs.map +1 -1
  178. package/lib/components/VList/VListChildren.mjs.map +1 -1
  179. package/lib/components/VList/VListGroup.mjs +5 -2
  180. package/lib/components/VList/VListGroup.mjs.map +1 -1
  181. package/lib/components/VList/VListItem.mjs +4 -2
  182. package/lib/components/VList/VListItem.mjs.map +1 -1
  183. package/lib/components/VList/VListItemAction.mjs +4 -1
  184. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  185. package/lib/components/VList/VListItemMedia.mjs +4 -1
  186. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  187. package/lib/components/VList/VListSubheader.mjs +5 -3
  188. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  189. package/lib/components/VList/index.d.ts +932 -826
  190. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -2
  191. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  192. package/lib/components/VLocaleProvider/index.d.ts +30 -17
  193. package/lib/components/VMain/VMain.mjs +4 -2
  194. package/lib/components/VMain/VMain.mjs.map +1 -1
  195. package/lib/components/VMain/index.d.ts +30 -17
  196. package/lib/components/VMenu/VMenu.mjs +2 -1
  197. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  198. package/lib/components/VMenu/index.d.ts +104 -282
  199. package/lib/components/VMessages/VMessages.mjs +4 -2
  200. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  201. package/lib/components/VMessages/index.d.ts +22 -145
  202. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +4 -2
  203. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  204. package/lib/components/VNavigationDrawer/index.d.ts +26 -29
  205. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  206. package/lib/components/VNoSsr/index.d.ts +3 -13
  207. package/lib/components/VOverlay/VOverlay.mjs +5 -3
  208. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  209. package/lib/components/VOverlay/index.d.ts +38 -45
  210. package/lib/components/VPagination/VPagination.mjs +4 -1
  211. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  212. package/lib/components/VPagination/index.d.ts +23 -30
  213. package/lib/components/VParallax/VParallax.mjs +5 -2
  214. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  215. package/lib/components/VParallax/index.d.ts +34 -33
  216. package/lib/components/VProgressCircular/VProgressCircular.mjs +4 -2
  217. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  218. package/lib/components/VProgressCircular/index.d.ts +22 -13
  219. package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -4
  220. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  221. package/lib/components/VProgressLinear/index.d.ts +42 -45
  222. package/lib/components/VRadio/VRadio.mjs +2 -1
  223. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  224. package/lib/components/VRadio/index.d.ts +27 -38
  225. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  226. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  227. package/lib/components/VRadioGroup/index.d.ts +39 -62
  228. package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -1
  229. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  230. package/lib/components/VRangeSlider/index.d.ts +27 -38
  231. package/lib/components/VRating/VRating.mjs +4 -1
  232. package/lib/components/VRating/VRating.mjs.map +1 -1
  233. package/lib/components/VRating/index.d.ts +23 -18
  234. package/lib/components/VResponsive/VResponsive.mjs +4 -2
  235. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  236. package/lib/components/VResponsive/index.d.ts +43 -31
  237. package/lib/components/VSelect/VSelect.mjs +2 -1
  238. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  239. package/lib/components/VSelect/index.d.ts +194 -552
  240. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -2
  241. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  242. package/lib/components/VSelectionControl/index.d.ts +76 -46
  243. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
  244. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  245. package/lib/components/VSelectionControlGroup/index.d.ts +23 -14
  246. package/lib/components/VSheet/VSheet.mjs +4 -2
  247. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  248. package/lib/components/VSheet/index.d.ts +22 -13
  249. package/lib/components/VSlideGroup/VSlideGroup.mjs +6 -3
  250. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  251. package/lib/components/VSlideGroup/index.d.ts +59 -90
  252. package/lib/components/VSlider/VSlider.mjs +2 -1
  253. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  254. package/lib/components/VSlider/VSliderThumb.mjs +6 -4
  255. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  256. package/lib/components/VSlider/VSliderTrack.mjs +6 -4
  257. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  258. package/lib/components/VSlider/index.d.ts +27 -38
  259. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  260. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  261. package/lib/components/VSnackbar/index.d.ts +92 -142
  262. package/lib/components/VSwitch/VSwitch.mjs +2 -1
  263. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  264. package/lib/components/VSwitch/index.d.ts +39 -66
  265. package/lib/components/VSystemBar/VSystemBar.mjs +4 -2
  266. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  267. package/lib/components/VSystemBar/index.d.ts +22 -13
  268. package/lib/components/VTable/VTable.mjs +4 -1
  269. package/lib/components/VTable/VTable.mjs.map +1 -1
  270. package/lib/components/VTable/index.d.ts +26 -29
  271. package/lib/components/VTabs/VTab.mjs +2 -2
  272. package/lib/components/VTabs/VTab.mjs.map +1 -1
  273. package/lib/components/VTabs/VTabs.mjs +2 -2
  274. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  275. package/lib/components/VTabs/index.d.ts +45 -27
  276. package/lib/components/VTextField/VTextField.mjs +2 -1
  277. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  278. package/lib/components/VTextField/index.d.ts +208 -269
  279. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  280. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  281. package/lib/components/VTextarea/index.d.ts +79 -122
  282. package/lib/components/VThemeProvider/VThemeProvider.mjs +6 -3
  283. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  284. package/lib/components/VThemeProvider/index.d.ts +22 -13
  285. package/lib/components/VTimeline/VTimeline.mjs +5 -3
  286. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  287. package/lib/components/VTimeline/VTimelineDivider.mjs +4 -1
  288. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  289. package/lib/components/VTimeline/VTimelineItem.mjs +8 -6
  290. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  291. package/lib/components/VTimeline/index.d.ts +67 -57
  292. package/lib/components/VToolbar/VToolbar.mjs +4 -2
  293. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  294. package/lib/components/VToolbar/VToolbarItems.mjs +9 -4
  295. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  296. package/lib/components/VToolbar/VToolbarTitle.mjs +5 -2
  297. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  298. package/lib/components/VToolbar/index.d.ts +74 -71
  299. package/lib/components/VTooltip/VTooltip.mjs +2 -1
  300. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  301. package/lib/components/VTooltip/index.d.ts +104 -150
  302. package/lib/components/VValidation/index.d.ts +0 -12
  303. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +21 -23
  304. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  305. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +5 -2
  306. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  307. package/lib/components/VVirtualScroll/index.d.ts +70 -30
  308. package/lib/components/VWindow/VWindow.mjs +4 -1
  309. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  310. package/lib/components/VWindow/VWindowItem.mjs +4 -1
  311. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  312. package/lib/components/VWindow/index.d.ts +61 -79
  313. package/lib/components/index.d.ts +5229 -6754
  314. package/lib/components/transitions/index.d.ts +0 -192
  315. package/lib/composables/component.mjs +11 -0
  316. package/lib/composables/component.mjs.map +1 -0
  317. package/lib/composables/defaults.mjs +51 -5
  318. package/lib/composables/defaults.mjs.map +1 -1
  319. package/lib/composables/icons.mjs +15 -4
  320. package/lib/composables/icons.mjs.map +1 -1
  321. package/lib/composables/index.mjs +1 -1
  322. package/lib/composables/index.mjs.map +1 -1
  323. package/lib/composables/intersectionObserver.mjs +2 -2
  324. package/lib/composables/intersectionObserver.mjs.map +1 -1
  325. package/lib/composables/loader.mjs.map +1 -1
  326. package/lib/entry-bundler.mjs +1 -1
  327. package/lib/framework.mjs +2 -2
  328. package/lib/framework.mjs.map +1 -1
  329. package/lib/iconsets/fa-svg.d.ts +1 -1
  330. package/lib/iconsets/fa.d.ts +1 -1
  331. package/lib/iconsets/fa4.d.ts +1 -1
  332. package/lib/iconsets/md.d.ts +1 -1
  333. package/lib/iconsets/mdi-svg.d.ts +1 -1
  334. package/lib/iconsets/mdi.d.ts +1 -1
  335. package/lib/index.d.ts +24 -24
  336. package/lib/labs/VDataTable/VDataTable.mjs +1 -1
  337. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  338. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  339. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  340. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  341. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  342. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -2
  343. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  344. package/lib/labs/VDataTable/VDataTableServer.mjs +1 -1
  345. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  346. package/lib/labs/VDataTable/index.d.ts +61 -933
  347. package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
  348. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
  349. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
  350. package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
  351. package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
  352. package/lib/labs/VInfiniteScroll/index.d.ts +321 -0
  353. package/lib/labs/VInfiniteScroll/index.mjs +2 -0
  354. package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
  355. package/lib/labs/VSkeletonLoader/index.d.ts +0 -12
  356. package/lib/labs/components.d.ts +398 -969
  357. package/lib/labs/components.mjs +1 -0
  358. package/lib/labs/components.mjs.map +1 -1
  359. package/lib/labs/date/DateAdapter.mjs +2 -0
  360. package/lib/labs/date/DateAdapter.mjs.map +1 -0
  361. package/lib/labs/date/adapters/vuetify.d.ts +52 -0
  362. package/lib/{adapters → labs/date/adapters}/vuetify.mjs +2 -2
  363. package/lib/labs/date/adapters/vuetify.mjs.map +1 -0
  364. package/lib/{composables → labs/date}/date.mjs +3 -3
  365. package/lib/labs/date/date.mjs.map +1 -0
  366. package/lib/labs/date/index.d.ts +40 -0
  367. package/lib/labs/date/index.mjs +2 -0
  368. package/lib/labs/date/index.mjs.map +1 -0
  369. package/lib/labs/index.mjs +3 -2
  370. package/lib/labs/index.mjs.map +1 -1
  371. package/lib/locale/af.mjs +5 -1
  372. package/lib/locale/af.mjs.map +1 -1
  373. package/lib/locale/ar.mjs +5 -1
  374. package/lib/locale/ar.mjs.map +1 -1
  375. package/lib/locale/az.mjs +5 -1
  376. package/lib/locale/az.mjs.map +1 -1
  377. package/lib/locale/bg.mjs +5 -1
  378. package/lib/locale/bg.mjs.map +1 -1
  379. package/lib/locale/ca.mjs +5 -1
  380. package/lib/locale/ca.mjs.map +1 -1
  381. package/lib/locale/ckb.mjs +5 -1
  382. package/lib/locale/ckb.mjs.map +1 -1
  383. package/lib/locale/cs.mjs +5 -1
  384. package/lib/locale/cs.mjs.map +1 -1
  385. package/lib/locale/da.mjs +5 -1
  386. package/lib/locale/da.mjs.map +1 -1
  387. package/lib/locale/de.mjs +5 -1
  388. package/lib/locale/de.mjs.map +1 -1
  389. package/lib/locale/el.mjs +5 -1
  390. package/lib/locale/el.mjs.map +1 -1
  391. package/lib/locale/en.mjs +5 -1
  392. package/lib/locale/en.mjs.map +1 -1
  393. package/lib/locale/es.mjs +5 -1
  394. package/lib/locale/es.mjs.map +1 -1
  395. package/lib/locale/et.mjs +5 -1
  396. package/lib/locale/et.mjs.map +1 -1
  397. package/lib/locale/fa.mjs +5 -1
  398. package/lib/locale/fa.mjs.map +1 -1
  399. package/lib/locale/fi.mjs +5 -1
  400. package/lib/locale/fi.mjs.map +1 -1
  401. package/lib/locale/fr.mjs +5 -1
  402. package/lib/locale/fr.mjs.map +1 -1
  403. package/lib/locale/he.mjs +5 -1
  404. package/lib/locale/he.mjs.map +1 -1
  405. package/lib/locale/hr.mjs +5 -1
  406. package/lib/locale/hr.mjs.map +1 -1
  407. package/lib/locale/hu.mjs +5 -1
  408. package/lib/locale/hu.mjs.map +1 -1
  409. package/lib/locale/id.mjs +5 -1
  410. package/lib/locale/id.mjs.map +1 -1
  411. package/lib/locale/index.d.ts +168 -0
  412. package/lib/locale/it.mjs +5 -1
  413. package/lib/locale/it.mjs.map +1 -1
  414. package/lib/locale/ja.mjs +5 -1
  415. package/lib/locale/ja.mjs.map +1 -1
  416. package/lib/locale/ko.mjs +5 -1
  417. package/lib/locale/ko.mjs.map +1 -1
  418. package/lib/locale/lt.mjs +5 -1
  419. package/lib/locale/lt.mjs.map +1 -1
  420. package/lib/locale/lv.mjs +5 -1
  421. package/lib/locale/lv.mjs.map +1 -1
  422. package/lib/locale/nl.mjs +5 -1
  423. package/lib/locale/nl.mjs.map +1 -1
  424. package/lib/locale/no.mjs +5 -1
  425. package/lib/locale/no.mjs.map +1 -1
  426. package/lib/locale/pl.mjs +5 -1
  427. package/lib/locale/pl.mjs.map +1 -1
  428. package/lib/locale/pt.mjs +5 -1
  429. package/lib/locale/pt.mjs.map +1 -1
  430. package/lib/locale/ro.mjs +5 -1
  431. package/lib/locale/ro.mjs.map +1 -1
  432. package/lib/locale/ru.mjs +5 -1
  433. package/lib/locale/ru.mjs.map +1 -1
  434. package/lib/locale/sk.mjs +5 -1
  435. package/lib/locale/sk.mjs.map +1 -1
  436. package/lib/locale/sl.mjs +5 -1
  437. package/lib/locale/sl.mjs.map +1 -1
  438. package/lib/locale/sr-Cyrl.mjs +5 -1
  439. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  440. package/lib/locale/sr-Latn.mjs +5 -1
  441. package/lib/locale/sr-Latn.mjs.map +1 -1
  442. package/lib/locale/sv.mjs +5 -1
  443. package/lib/locale/sv.mjs.map +1 -1
  444. package/lib/locale/th.mjs +5 -1
  445. package/lib/locale/th.mjs.map +1 -1
  446. package/lib/locale/tr.mjs +5 -1
  447. package/lib/locale/tr.mjs.map +1 -1
  448. package/lib/locale/uk.mjs +5 -1
  449. package/lib/locale/uk.mjs.map +1 -1
  450. package/lib/locale/vi.mjs +5 -1
  451. package/lib/locale/vi.mjs.map +1 -1
  452. package/lib/locale/zh-Hans.mjs +5 -1
  453. package/lib/locale/zh-Hans.mjs.map +1 -1
  454. package/lib/locale/zh-Hant.mjs +5 -1
  455. package/lib/locale/zh-Hant.mjs.map +1 -1
  456. package/lib/util/createSimpleFunctional.mjs +9 -4
  457. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  458. package/lib/util/defineComponent.mjs +11 -43
  459. package/lib/util/defineComponent.mjs.map +1 -1
  460. package/lib/util/helpers.mjs +28 -2
  461. package/lib/util/helpers.mjs.map +1 -1
  462. package/lib/util/index.mjs +1 -0
  463. package/lib/util/index.mjs.map +1 -1
  464. package/package.json +2 -1
  465. package/lib/adapters/date-adapter.mjs +0 -2
  466. package/lib/adapters/date-adapter.mjs.map +0 -1
  467. package/lib/adapters/vuetify.mjs.map +0 -1
  468. package/lib/composables/date.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v4.0.0-dev-20230422.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, withModifiers } 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, withModifiers } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,11 +167,11 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
- function pick(obj, paths) {
170
+ function pick(obj, paths, exclude) {
171
171
  const found = Object.create(null);
172
172
  const rest = Object.create(null);
173
173
  for (const key in obj) {
174
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key)) {
174
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
175
175
  found[key] = obj[key];
176
176
  } else {
177
177
  rest[key] = obj[key];
@@ -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
  }
@@ -1091,15 +1108,19 @@ function createSimpleFunctional(klass) {
1091
1108
  tag: {
1092
1109
  type: String,
1093
1110
  default: tag
1094
- }
1111
+ },
1112
+ ...makeComponentProps()
1095
1113
  },
1096
1114
  setup(props, _ref) {
1097
1115
  let {
1098
1116
  slots
1099
1117
  } = _ref;
1100
- return () => h(props.tag, {
1101
- class: klass
1102
- }, slots.default?.());
1118
+ return () => {
1119
+ return h(props.tag, {
1120
+ class: [klass, props.class],
1121
+ style: props.style
1122
+ }, slots.default?.());
1123
+ };
1103
1124
  }
1104
1125
  });
1105
1126
  }
@@ -1132,6 +1153,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1132
1153
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1133
1154
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1134
1155
 
1156
+ // Utilities
1157
+ function getCurrentInstance(name, message) {
1158
+ const vm = getCurrentInstance$1();
1159
+ if (!vm) {
1160
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1161
+ }
1162
+ return vm;
1163
+ }
1164
+ function getCurrentInstanceName() {
1165
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1166
+ const vm = getCurrentInstance(name).type;
1167
+ return toKebabCase(vm?.aliasName || vm?.name);
1168
+ }
1169
+ let _uid = 0;
1170
+ let _map = new WeakMap();
1171
+ function getUid() {
1172
+ const vm = getCurrentInstance('getUid');
1173
+ if (_map.has(vm)) return _map.get(vm);else {
1174
+ const uid = _uid++;
1175
+ _map.set(vm, uid);
1176
+ return uid;
1177
+ }
1178
+ }
1179
+ getUid.reset = () => {
1180
+ _uid = 0;
1181
+ _map = new WeakMap();
1182
+ };
1183
+
1135
1184
  function getScrollParent(el) {
1136
1185
  while (el) {
1137
1186
  if (hasScrollbar(el)) return el;
@@ -1155,6 +1204,16 @@ function hasScrollbar(el) {
1155
1204
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1156
1205
  }
1157
1206
 
1207
+ function injectSelf(key) {
1208
+ const {
1209
+ provides
1210
+ } = getCurrentInstance('injectSelf');
1211
+ if (provides && key in provides) {
1212
+ // TS doesn't allow symbol as index type
1213
+ return provides[key];
1214
+ }
1215
+ }
1216
+
1158
1217
  function isFixedPosition(el) {
1159
1218
  while (el) {
1160
1219
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1935,7 +1994,11 @@ var en = {
1935
1994
  item: 'Rating {0} of {1}'
1936
1995
  }
1937
1996
  },
1938
- loading: 'Loading...'
1997
+ loading: 'Loading...',
1998
+ infiniteScroll: {
1999
+ loadMore: 'Load more',
2000
+ empty: 'No more'
2001
+ }
1939
2002
  };
1940
2003
 
1941
2004
  const LANG_PREFIX = '$vuetify.';
@@ -2133,6 +2196,7 @@ function useRtl() {
2133
2196
  const VApp = genericComponent()({
2134
2197
  name: 'VApp',
2135
2198
  props: {
2199
+ ...makeComponentProps(),
2136
2200
  ...makeLayoutProps({
2137
2201
  fullHeight: true
2138
2202
  }),
@@ -2155,8 +2219,8 @@ const VApp = genericComponent()({
2155
2219
  } = useRtl();
2156
2220
  useRender(() => createVNode("div", {
2157
2221
  "ref": layoutRef,
2158
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2159
- "style": layoutStyles.value
2222
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2223
+ "style": [layoutStyles.value, props.style]
2160
2224
  }, [createVNode("div", {
2161
2225
  "class": "v-application__wrap"
2162
2226
  }, [slots.default?.()])]));
@@ -2581,6 +2645,7 @@ const VResponsive = genericComponent()({
2581
2645
  props: {
2582
2646
  aspectRatio: [String, Number],
2583
2647
  contentClass: String,
2648
+ ...makeComponentProps(),
2584
2649
  ...makeDimensionProps()
2585
2650
  },
2586
2651
  setup(props, _ref) {
@@ -2594,8 +2659,8 @@ const VResponsive = genericComponent()({
2594
2659
  dimensionStyles
2595
2660
  } = useDimension(props);
2596
2661
  useRender(() => createVNode("div", {
2597
- "class": "v-responsive",
2598
- "style": dimensionStyles.value
2662
+ "class": ['v-responsive', props.class],
2663
+ "style": [dimensionStyles.value, props.style]
2599
2664
  }, [createVNode("div", {
2600
2665
  "class": "v-responsive__sizer",
2601
2666
  "style": aspectStyles.value
@@ -2713,6 +2778,7 @@ const VImg = genericComponent()({
2713
2778
  },
2714
2779
  srcset: String,
2715
2780
  width: [String, Number],
2781
+ ...makeComponentProps(),
2716
2782
  ...makeTransitionProps()
2717
2783
  },
2718
2784
  emits: {
@@ -2900,10 +2966,10 @@ const VImg = genericComponent()({
2900
2966
  useRender(() => withDirectives(createVNode(VResponsive, {
2901
2967
  "class": ['v-img', {
2902
2968
  'v-img--booting': !isBooted.value
2903
- }],
2904
- "style": {
2969
+ }, props.class],
2970
+ "style": [{
2905
2971
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2906
- },
2972
+ }, props.style],
2907
2973
  "aspectRatio": aspectRatio.value,
2908
2974
  "aria-label": props.alt,
2909
2975
  "role": props.alt ? 'img' : undefined
@@ -2938,10 +3004,9 @@ const makeTagProps = propsFactory({
2938
3004
  }
2939
3005
  }, 'tag');
2940
3006
 
2941
- // Types
2942
-
2943
3007
  const makeVToolbarTitleProps = propsFactory({
2944
3008
  text: String,
3009
+ ...makeComponentProps(),
2945
3010
  ...makeTagProps()
2946
3011
  }, 'v-toolbar-title');
2947
3012
  const VToolbarTitle = genericComponent()({
@@ -2954,7 +3019,8 @@ const VToolbarTitle = genericComponent()({
2954
3019
  useRender(() => {
2955
3020
  const hasText = !!(slots.default || slots.text || props.text);
2956
3021
  return createVNode(props.tag, {
2957
- "class": "v-toolbar-title"
3022
+ "class": ['v-toolbar-title', props.class],
3023
+ "style": props.style
2958
3024
  }, {
2959
3025
  default: () => [hasText && createVNode("div", {
2960
3026
  "class": "v-toolbar-title__placeholder"
@@ -3135,6 +3201,7 @@ const makeVToolbarProps = propsFactory({
3135
3201
  image: String,
3136
3202
  title: String,
3137
3203
  ...makeBorderProps(),
3204
+ ...makeComponentProps(),
3138
3205
  ...makeElevationProps(),
3139
3206
  ...makeRoundedProps(),
3140
3207
  ...makeTagProps({
@@ -3185,8 +3252,8 @@ const VToolbar = genericComponent()({
3185
3252
  'v-toolbar--flat': props.flat,
3186
3253
  'v-toolbar--floating': props.floating,
3187
3254
  [`v-toolbar--density-${props.density}`]: true
3188
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3189
- "style": [backgroundColorStyles.value]
3255
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3256
+ "style": [backgroundColorStyles.value, props.style]
3190
3257
  }, {
3191
3258
  default: () => [hasImage && createVNode("div", {
3192
3259
  "key": "image",
@@ -3471,13 +3538,13 @@ const VAppBar = genericComponent()({
3471
3538
  "ref": vToolbarRef,
3472
3539
  "class": ['v-app-bar', {
3473
3540
  'v-app-bar--bottom': props.location === 'bottom'
3474
- }],
3475
- "style": {
3541
+ }, props.class],
3542
+ "style": [{
3476
3543
  ...layoutItemStyles.value,
3477
3544
  '--v-toolbar-image-opacity': opacity.value,
3478
3545
  height: undefined,
3479
3546
  ...ssrBootStyles.value
3480
- }
3547
+ }, props.style]
3481
3548
  }, toolbarProps, {
3482
3549
  "collapse": isCollapsed.value,
3483
3550
  "flat": isFlat.value
@@ -3564,6 +3631,7 @@ function useVariant(props) {
3564
3631
  const makeVBtnGroupProps = propsFactory({
3565
3632
  divided: Boolean,
3566
3633
  ...makeBorderProps(),
3634
+ ...makeComponentProps(),
3567
3635
  ...makeDensityProps(),
3568
3636
  ...makeElevationProps(),
3569
3637
  ...makeRoundedProps(),
@@ -3606,7 +3674,8 @@ const VBtnGroup = genericComponent()({
3606
3674
  return createVNode(props.tag, {
3607
3675
  "class": ['v-btn-group', {
3608
3676
  'v-btn-group--divided': props.divided
3609
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3677
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3678
+ "style": props.style
3610
3679
  }, slots);
3611
3680
  });
3612
3681
  }
@@ -3839,8 +3908,10 @@ const VBtnToggle = genericComponent()({
3839
3908
  useRender(() => {
3840
3909
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3841
3910
  return createVNode(VBtnGroup, mergeProps({
3842
- "class": "v-btn-toggle"
3843
- }, btnGroupProps), {
3911
+ "class": ['v-btn-toggle', props.class]
3912
+ }, btnGroupProps, {
3913
+ "style": props.style
3914
+ }), {
3844
3915
  default: () => [slots.default?.({
3845
3916
  isSelected,
3846
3917
  next,
@@ -3911,7 +3982,7 @@ const mdi = {
3911
3982
 
3912
3983
  // Types
3913
3984
 
3914
- const IconValue = [String, Function, Object];
3985
+ const IconValue = [String, Function, Object, Array];
3915
3986
  const IconSymbol = Symbol.for('vuetify:icons');
3916
3987
  const makeIconProps = propsFactory({
3917
3988
  icon: {
@@ -3931,8 +4002,9 @@ const VComponentIcon = genericComponent()({
3931
4002
  slots
3932
4003
  } = _ref;
3933
4004
  return () => {
4005
+ const Icon = props.icon;
3934
4006
  return createVNode(props.tag, null, {
3935
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4007
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3936
4008
  });
3937
4009
  };
3938
4010
  }
@@ -3955,7 +4027,12 @@ const VSvgIcon = defineComponent({
3955
4027
  "viewBox": "0 0 24 24",
3956
4028
  "role": "img",
3957
4029
  "aria-hidden": "true"
3958
- }, [createVNode("path", {
4030
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4031
+ "d": path[0],
4032
+ "fill-opacity": path[1]
4033
+ }, null) : createVNode("path", {
4034
+ "d": path
4035
+ }, null)) : createVNode("path", {
3959
4036
  "d": props.icon
3960
4037
  }, null)])]
3961
4038
  });
@@ -4020,7 +4097,12 @@ const useIcon = props => {
4020
4097
  }
4021
4098
  }
4022
4099
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
4023
- if (typeof icon !== 'string') {
4100
+ if (Array.isArray(icon)) {
4101
+ return {
4102
+ component: VSvgIcon,
4103
+ icon
4104
+ };
4105
+ } else if (typeof icon !== 'string') {
4024
4106
  return {
4025
4107
  component: VComponentIcon,
4026
4108
  icon
@@ -4077,6 +4159,7 @@ const makeVIconProps = propsFactory({
4077
4159
  start: Boolean,
4078
4160
  end: Boolean,
4079
4161
  icon: IconValue,
4162
+ ...makeComponentProps(),
4080
4163
  ...makeSizeProps(),
4081
4164
  ...makeTagProps({
4082
4165
  tag: 'i'
@@ -4119,12 +4202,12 @@ const VIcon = genericComponent()({
4119
4202
  'v-icon--clickable': !!attrs.onClick,
4120
4203
  'v-icon--start': props.start,
4121
4204
  'v-icon--end': props.end
4122
- }],
4205
+ }, props.class],
4123
4206
  "style": [!sizeClasses.value ? {
4124
4207
  fontSize: convertToUnit(props.size),
4125
4208
  height: convertToUnit(props.size),
4126
4209
  width: convertToUnit(props.size)
4127
- } : undefined, textColorStyles.value],
4210
+ } : undefined, textColorStyles.value, props.style],
4128
4211
  "role": attrs.onClick ? 'button' : undefined,
4129
4212
  "aria-hidden": !attrs.onClick
4130
4213
  }, {
@@ -4135,14 +4218,14 @@ const VIcon = genericComponent()({
4135
4218
  });
4136
4219
 
4137
4220
  // Utilities
4138
- function useIntersectionObserver(callback) {
4221
+ function useIntersectionObserver(callback, options) {
4139
4222
  const intersectionRef = ref();
4140
4223
  const isIntersecting = ref(false);
4141
4224
  if (SUPPORTS_INTERSECTION) {
4142
4225
  const observer = new IntersectionObserver(entries => {
4143
4226
  callback?.(entries, observer);
4144
4227
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4145
- });
4228
+ }, options);
4146
4229
  onBeforeUnmount(() => {
4147
4230
  observer.disconnect();
4148
4231
  });
@@ -4182,6 +4265,7 @@ const VProgressCircular = genericComponent()({
4182
4265
  type: [Number, String],
4183
4266
  default: 4
4184
4267
  },
4268
+ ...makeComponentProps(),
4185
4269
  ...makeSizeProps(),
4186
4270
  ...makeTagProps({
4187
4271
  tag: 'div'
@@ -4237,8 +4321,8 @@ const VProgressCircular = genericComponent()({
4237
4321
  'v-progress-circular--indeterminate': !!props.indeterminate,
4238
4322
  'v-progress-circular--visible': isIntersecting.value,
4239
4323
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4240
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4241
- "style": [sizeStyles.value, textColorStyles.value],
4324
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4325
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4242
4326
  "role": "progressbar",
4243
4327
  "aria-valuemin": "0",
4244
4328
  "aria-valuemax": "100",
@@ -4657,6 +4741,7 @@ const VProgressLinear = genericComponent()({
4657
4741
  stream: Boolean,
4658
4742
  striped: Boolean,
4659
4743
  roundedBar: Boolean,
4744
+ ...makeComponentProps(),
4660
4745
  ...makeLocationProps({
4661
4746
  location: 'top'
4662
4747
  }),
@@ -4728,14 +4813,14 @@ const VProgressLinear = genericComponent()({
4728
4813
  'v-progress-linear--rounded': props.rounded,
4729
4814
  'v-progress-linear--rounded-bar': props.roundedBar,
4730
4815
  'v-progress-linear--striped': props.striped
4731
- }, roundedClasses.value, themeClasses.value],
4732
- "style": {
4816
+ }, roundedClasses.value, themeClasses.value, props.class],
4817
+ "style": [{
4733
4818
  bottom: props.location === 'bottom' ? 0 : undefined,
4734
4819
  top: props.location === 'top' ? 0 : undefined,
4735
4820
  height: props.active ? convertToUnit(height.value) : 0,
4736
4821
  '--v-progress-linear-height': convertToUnit(height.value),
4737
4822
  ...locationStyles.value
4738
- },
4823
+ }, props.style],
4739
4824
  "role": "progressbar",
4740
4825
  "aria-hidden": props.active ? 'false' : 'true',
4741
4826
  "aria-valuemin": "0",
@@ -4946,7 +5031,7 @@ const makeVBtnProps = propsFactory({
4946
5031
  },
4947
5032
  text: String,
4948
5033
  ...makeBorderProps(),
4949
- ...makeRoundedProps(),
5034
+ ...makeComponentProps(),
4950
5035
  ...makeDensityProps(),
4951
5036
  ...makeDimensionProps(),
4952
5037
  ...makeElevationProps(),
@@ -4954,6 +5039,7 @@ const makeVBtnProps = propsFactory({
4954
5039
  ...makeLoaderProps(),
4955
5040
  ...makeLocationProps(),
4956
5041
  ...makePositionProps(),
5042
+ ...makeRoundedProps(),
4957
5043
  ...makeRouterProps(),
4958
5044
  ...makeSizeProps(),
4959
5045
  ...makeTagProps({
@@ -5051,8 +5137,8 @@ const VBtn = genericComponent()({
5051
5137
  'v-btn--icon': !!props.icon,
5052
5138
  'v-btn--loading': props.loading,
5053
5139
  '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],
5140
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5141
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5056
5142
  "disabled": isDisabled.value || undefined,
5057
5143
  "href": link.href.value,
5058
5144
  "onClick": e => {
@@ -5129,15 +5215,17 @@ const VAppBarNavIcon = genericComponent()({
5129
5215
  icon: {
5130
5216
  type: IconValue,
5131
5217
  default: '$menu'
5132
- }
5218
+ },
5219
+ ...makeComponentProps()
5133
5220
  },
5134
5221
  setup(props, _ref) {
5135
5222
  let {
5136
5223
  slots
5137
5224
  } = _ref;
5138
5225
  useRender(() => createVNode(VBtn, {
5139
- "class": "v-app-bar-nav-icon",
5140
- "icon": props.icon
5226
+ "class": ['v-app-bar-nav-icon', props.class],
5227
+ "icon": props.icon,
5228
+ "style": props.style
5141
5229
  }, slots));
5142
5230
  return {};
5143
5231
  }
@@ -5145,9 +5233,12 @@ const VAppBarNavIcon = genericComponent()({
5145
5233
 
5146
5234
  const VToolbarItems = genericComponent()({
5147
5235
  name: 'VToolbarItems',
5148
- props: makeVariantProps({
5149
- variant: 'text'
5150
- }),
5236
+ props: {
5237
+ ...makeComponentProps(),
5238
+ ...makeVariantProps({
5239
+ variant: 'text'
5240
+ })
5241
+ },
5151
5242
  setup(props, _ref) {
5152
5243
  let {
5153
5244
  slots
@@ -5160,7 +5251,8 @@ const VToolbarItems = genericComponent()({
5160
5251
  }
5161
5252
  });
5162
5253
  useRender(() => createVNode("div", {
5163
- "class": "v-toolbar-items"
5254
+ "class": ['v-toolbar-items', props.class],
5255
+ "style": props.style
5164
5256
  }, [slots.default?.()]));
5165
5257
  return {};
5166
5258
  }
@@ -5222,6 +5314,7 @@ const VAlert = genericComponent()({
5222
5314
  type: String,
5223
5315
  validator: val => allowedTypes.includes(val)
5224
5316
  },
5317
+ ...makeComponentProps(),
5225
5318
  ...makeDensityProps(),
5226
5319
  ...makeDimensionProps(),
5227
5320
  ...makeElevationProps(),
@@ -5304,8 +5397,8 @@ const VAlert = genericComponent()({
5304
5397
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5305
5398
  }, {
5306
5399
  '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],
5400
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5401
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5309
5402
  "role": "alert"
5310
5403
  }, {
5311
5404
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5399,6 +5492,7 @@ const VLabel = genericComponent()({
5399
5492
  props: {
5400
5493
  text: String,
5401
5494
  clickable: Boolean,
5495
+ ...makeComponentProps(),
5402
5496
  ...makeThemeProps()
5403
5497
  },
5404
5498
  setup(props, _ref) {
@@ -5408,7 +5502,8 @@ const VLabel = genericComponent()({
5408
5502
  useRender(() => createVNode("label", {
5409
5503
  "class": ['v-label', {
5410
5504
  'v-label--clickable': props.clickable
5411
- }]
5505
+ }, props.class],
5506
+ "style": props.style
5412
5507
  }, [props.text, slots.default?.()]));
5413
5508
  return {};
5414
5509
  }
@@ -5417,7 +5512,8 @@ const VLabel = genericComponent()({
5417
5512
  const VFieldLabel = genericComponent()({
5418
5513
  name: 'VFieldLabel',
5419
5514
  props: {
5420
- floating: Boolean
5515
+ floating: Boolean,
5516
+ ...makeComponentProps()
5421
5517
  },
5422
5518
  setup(props, _ref) {
5423
5519
  let {
@@ -5426,7 +5522,8 @@ const VFieldLabel = genericComponent()({
5426
5522
  useRender(() => createVNode(VLabel, {
5427
5523
  "class": ['v-field-label', {
5428
5524
  'v-field-label--floating': props.floating
5429
- }],
5525
+ }, props.class],
5526
+ "style": props.style,
5430
5527
  "aria-hidden": props.floating || undefined
5431
5528
  }, slots));
5432
5529
  return {};
@@ -5477,6 +5574,7 @@ const makeVFieldProps = propsFactory({
5477
5574
  },
5478
5575
  active: Boolean,
5479
5576
  color: String,
5577
+ baseColor: String,
5480
5578
  dirty: Boolean,
5481
5579
  disabled: Boolean,
5482
5580
  error: Boolean,
@@ -5494,9 +5592,10 @@ const makeVFieldProps = propsFactory({
5494
5592
  'onClick:clear': EventProp(),
5495
5593
  'onClick:appendInner': EventProp(),
5496
5594
  'onClick:prependInner': EventProp(),
5497
- ...makeThemeProps(),
5595
+ ...makeComponentProps(),
5498
5596
  ...makeLoaderProps(),
5499
- ...makeRoundedProps()
5597
+ ...makeRoundedProps(),
5598
+ ...makeThemeProps()
5500
5599
  }, 'v-field');
5501
5600
  const VField = genericComponent()({
5502
5601
  name: 'VField',
@@ -5550,7 +5649,7 @@ const VField = genericComponent()({
5550
5649
  textColorClasses,
5551
5650
  textColorStyles
5552
5651
  } = useTextColor(computed(() => {
5553
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5652
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5554
5653
  }));
5555
5654
  watch(isActive, val => {
5556
5655
  if (hasLabel.value) {
@@ -5627,8 +5726,8 @@ const VField = genericComponent()({
5627
5726
  'v-field--single-line': props.singleLine,
5628
5727
  'v-field--no-label': !label,
5629
5728
  [`v-field--variant-${props.variant}`]: true
5630
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value],
5631
- "style": [backgroundColorStyles.value, textColorStyles.value],
5729
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5730
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5632
5731
  "onClick": onClick
5633
5732
  }, attrs), [createVNode("div", {
5634
5733
  "class": "v-field__overlay"
@@ -5716,7 +5815,7 @@ const VField = genericComponent()({
5716
5815
  });
5717
5816
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5718
5817
  function filterFieldProps(attrs) {
5719
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5818
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5720
5819
  return pick(attrs, keys);
5721
5820
  }
5722
5821
 
@@ -5731,6 +5830,7 @@ const VMessages = genericComponent()({
5731
5830
  type: [Array, String],
5732
5831
  default: () => []
5733
5832
  },
5833
+ ...makeComponentProps(),
5734
5834
  ...makeTransitionProps({
5735
5835
  transition: {
5736
5836
  component: VSlideYTransition,
@@ -5751,8 +5851,8 @@ const VMessages = genericComponent()({
5751
5851
  useRender(() => createVNode(MaybeTransition, {
5752
5852
  "transition": props.transition,
5753
5853
  "tag": "div",
5754
- "class": ['v-messages', textColorClasses.value],
5755
- "style": textColorStyles.value,
5854
+ "class": ['v-messages', textColorClasses.value, props.class],
5855
+ "style": [textColorStyles.value, props.style],
5756
5856
  "role": "alert",
5757
5857
  "aria-live": "polite"
5758
5858
  }, {
@@ -6048,6 +6148,7 @@ const makeVInputProps = propsFactory({
6048
6148
  },
6049
6149
  'onClick:prepend': EventProp(),
6050
6150
  'onClick:append': EventProp(),
6151
+ ...makeComponentProps(),
6051
6152
  ...makeDensityProps(),
6052
6153
  ...makeValidationProps()
6053
6154
  }, 'v-input');
@@ -6115,7 +6216,8 @@ const VInput = genericComponent()({
6115
6216
  const hasMessages = messages.value.length > 0;
6116
6217
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
6117
6218
  return createVNode("div", {
6118
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6219
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6220
+ "style": props.style
6119
6221
  }, [hasPrepend && createVNode("div", {
6120
6222
  "key": "prepend",
6121
6223
  "class": "v-input__prepend"
@@ -6158,6 +6260,7 @@ const VCounter = genericComponent()({
6158
6260
  type: [Number, String],
6159
6261
  default: 0
6160
6262
  },
6263
+ ...makeComponentProps(),
6161
6264
  ...makeTransitionProps({
6162
6265
  transition: {
6163
6266
  component: VSlideYTransition
@@ -6175,7 +6278,8 @@ const VCounter = genericComponent()({
6175
6278
  "transition": props.transition
6176
6279
  }, {
6177
6280
  default: () => [withDirectives(createVNode("div", {
6178
- "class": "v-counter"
6281
+ "class": ['v-counter', props.class],
6282
+ "style": props.style
6179
6283
  }, [slots.default ? slots.default({
6180
6284
  counter: counter.value,
6181
6285
  max: props.max,
@@ -6378,7 +6482,8 @@ const VTextField = genericComponent()({
6378
6482
  'v-text-field--prefixed': props.prefix,
6379
6483
  'v-text-field--suffixed': props.suffix,
6380
6484
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6381
- }]
6485
+ }, props.class],
6486
+ "style": props.style
6382
6487
  }, rootAttrs, inputProps, {
6383
6488
  "focused": isFocused.value
6384
6489
  }), {
@@ -6494,6 +6599,7 @@ const VSelectionControlGroup = genericComponent()({
6494
6599
  type: String,
6495
6600
  default: 'VSelectionControl'
6496
6601
  },
6602
+ ...makeComponentProps(),
6497
6603
  ...makeSelectionControlGroupProps()
6498
6604
  },
6499
6605
  emits: {
@@ -6541,7 +6647,8 @@ const VSelectionControlGroup = genericComponent()({
6541
6647
  useRender(() => createVNode("div", {
6542
6648
  "class": ['v-selection-control-group', {
6543
6649
  'v-selection-control-group--inline': props.inline
6544
- }],
6650
+ }, props.class],
6651
+ "style": props.style,
6545
6652
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6546
6653
  }, [slots.default?.()]));
6547
6654
  return {};
@@ -6555,6 +6662,7 @@ const makeSelectionControlProps = propsFactory({
6555
6662
  trueValue: null,
6556
6663
  falseValue: null,
6557
6664
  value: null,
6665
+ ...makeComponentProps(),
6558
6666
  ...makeSelectionControlGroupProps()
6559
6667
  }, 'v-selection-control');
6560
6668
  function useSelectionControl(props) {
@@ -6669,8 +6777,10 @@ const VSelectionControl = genericComponent()({
6669
6777
  'v-selection-control--focused': isFocused.value,
6670
6778
  'v-selection-control--focus-visible': isFocusVisible.value,
6671
6779
  'v-selection-control--inline': props.inline
6672
- }, densityClasses.value]
6673
- }, rootAttrs), [createVNode("div", {
6780
+ }, densityClasses.value, props.class]
6781
+ }, rootAttrs, {
6782
+ "style": props.style
6783
+ }), [createVNode("div", {
6674
6784
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6675
6785
  "style": textColorStyles.value
6676
6786
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6752,7 +6862,8 @@ const VCheckboxBtn = genericComponent()({
6752
6862
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6753
6863
  "modelValue": model.value,
6754
6864
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6755
- "class": "v-checkbox-btn",
6865
+ "class": ['v-checkbox-btn', props.class],
6866
+ "style": props.style,
6756
6867
  "type": "checkbox",
6757
6868
  "inline": true,
6758
6869
  "falseIcon": falseIcon.value,
@@ -6792,10 +6903,11 @@ const VCheckbox = genericComponent()({
6792
6903
  const [inputProps, _1] = VInput.filterProps(props);
6793
6904
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6794
6905
  return createVNode(VInput, mergeProps({
6795
- "class": "v-checkbox"
6906
+ "class": ['v-checkbox', props.class]
6796
6907
  }, inputAttrs, inputProps, {
6797
6908
  "id": id.value,
6798
- "focused": isFocused.value
6909
+ "focused": isFocused.value,
6910
+ "style": props.style
6799
6911
  }), {
6800
6912
  ...slots,
6801
6913
  default: _ref2 => {
@@ -6826,6 +6938,7 @@ const makeVAvatarProps = propsFactory({
6826
6938
  end: Boolean,
6827
6939
  icon: IconValue,
6828
6940
  image: String,
6941
+ ...makeComponentProps(),
6829
6942
  ...makeDensityProps(),
6830
6943
  ...makeRoundedProps(),
6831
6944
  ...makeSizeProps(),
@@ -6864,8 +6977,8 @@ const VAvatar = genericComponent()({
6864
6977
  "class": ['v-avatar', {
6865
6978
  'v-avatar--start': props.start,
6866
6979
  'v-avatar--end': props.end
6867
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6868
- "style": [colorStyles.value, sizeStyles.value]
6980
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6981
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6869
6982
  }, {
6870
6983
  default: () => [props.image ? createVNode(VImg, {
6871
6984
  "key": "image",
@@ -6893,6 +7006,7 @@ const VChipGroup = genericComponent()({
6893
7006
  type: Function,
6894
7007
  default: deepEqual
6895
7008
  },
7009
+ ...makeComponentProps(),
6896
7010
  ...makeGroupProps({
6897
7011
  selectedClass: 'v-chip--selected'
6898
7012
  }),
@@ -6930,7 +7044,8 @@ const VChipGroup = genericComponent()({
6930
7044
  useRender(() => createVNode(props.tag, {
6931
7045
  "class": ['v-chip-group', {
6932
7046
  'v-chip-group--column': props.column
6933
- }, themeClasses.value]
7047
+ }, themeClasses.value, props.class],
7048
+ "style": props.style
6934
7049
  }, {
6935
7050
  default: () => [slots.default?.({
6936
7051
  isSelected,
@@ -6944,8 +7059,6 @@ const VChipGroup = genericComponent()({
6944
7059
  }
6945
7060
  });
6946
7061
 
6947
- // Types
6948
-
6949
7062
  const VChip = genericComponent()({
6950
7063
  name: 'VChip',
6951
7064
  directives: {
@@ -6990,6 +7103,7 @@ const VChip = genericComponent()({
6990
7103
  onClick: EventProp(),
6991
7104
  onClickOnce: EventProp(),
6992
7105
  ...makeBorderProps(),
7106
+ ...makeComponentProps(),
6993
7107
  ...makeDensityProps(),
6994
7108
  ...makeElevationProps(),
6995
7109
  ...makeGroupItemProps(),
@@ -7082,8 +7196,8 @@ const VChip = genericComponent()({
7082
7196
  'v-chip--link': isClickable.value,
7083
7197
  'v-chip--filter': hasFilter,
7084
7198
  '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],
7199
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7200
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
7087
7201
  "disabled": props.disabled || undefined,
7088
7202
  "draggable": props.draggable,
7089
7203
  "href": link.href.value,
@@ -7192,6 +7306,7 @@ const VDivider = genericComponent()({
7192
7306
  length: [Number, String],
7193
7307
  thickness: [Number, String],
7194
7308
  vertical: Boolean,
7309
+ ...makeComponentProps(),
7195
7310
  ...makeThemeProps()
7196
7311
  },
7197
7312
  setup(props, _ref) {
@@ -7220,8 +7335,8 @@ const VDivider = genericComponent()({
7220
7335
  'v-divider': true,
7221
7336
  'v-divider--inset': props.inset,
7222
7337
  'v-divider--vertical': props.vertical
7223
- }, themeClasses.value, textColorClasses.value],
7224
- "style": [dividerStyles.value, textColorStyles.value],
7338
+ }, themeClasses.value, textColorClasses.value, props.class],
7339
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7225
7340
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7226
7341
  "role": `${attrs.role || 'separator'}`
7227
7342
  }, null));
@@ -7720,6 +7835,7 @@ const makeVListGroupProps = propsFactory({
7720
7835
  fluid: Boolean,
7721
7836
  subgroup: Boolean,
7722
7837
  value: null,
7838
+ ...makeComponentProps(),
7723
7839
  ...makeTagProps()
7724
7840
  }, 'v-list-group');
7725
7841
  const VListGroup = genericComponent()({
@@ -7768,7 +7884,8 @@ const VListGroup = genericComponent()({
7768
7884
  'v-list-group--fluid': props.fluid,
7769
7885
  'v-list-group--subgroup': props.subgroup,
7770
7886
  'v-list-group--open': isOpen.value
7771
- }]
7887
+ }, props.class],
7888
+ "style": props.style
7772
7889
  }, {
7773
7890
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7774
7891
  "defaults": activatorDefaults.value
@@ -7835,6 +7952,7 @@ const VListItem = genericComponent()({
7835
7952
  onClick: EventProp(),
7836
7953
  onClickOnce: EventProp(),
7837
7954
  ...makeBorderProps(),
7955
+ ...makeComponentProps(),
7838
7956
  ...makeDensityProps(),
7839
7957
  ...makeDimensionProps(),
7840
7958
  ...makeElevationProps(),
@@ -7945,8 +8063,8 @@ const VListItem = genericComponent()({
7945
8063
  'v-list-item--nav': props.nav,
7946
8064
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7947
8065
  [`${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],
8066
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8067
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
7950
8068
  "href": link.href.value,
7951
8069
  "tabindex": isClickable.value ? 0 : undefined,
7952
8070
  "onClick": onClick,
@@ -8039,6 +8157,7 @@ const VListSubheader = genericComponent()({
8039
8157
  inset: Boolean,
8040
8158
  sticky: Boolean,
8041
8159
  title: String,
8160
+ ...makeComponentProps(),
8042
8161
  ...makeTagProps()
8043
8162
  },
8044
8163
  setup(props, _ref) {
@@ -8055,10 +8174,10 @@ const VListSubheader = genericComponent()({
8055
8174
  "class": ['v-list-subheader', {
8056
8175
  'v-list-subheader--inset': props.inset,
8057
8176
  'v-list-subheader--sticky': props.sticky
8058
- }, textColorClasses.value],
8059
- "style": {
8177
+ }, textColorClasses.value, props.class],
8178
+ "style": [{
8060
8179
  textColorStyles
8061
- }
8180
+ }, props.style]
8062
8181
  }, {
8063
8182
  default: () => [hasText && createVNode("div", {
8064
8183
  "class": "v-list-subheader__text"
@@ -8278,6 +8397,7 @@ const VList = genericComponent()({
8278
8397
  openStrategy: 'list'
8279
8398
  }),
8280
8399
  ...makeBorderProps(),
8400
+ ...makeComponentProps(),
8281
8401
  ...makeDensityProps(),
8282
8402
  ...makeDimensionProps(),
8283
8403
  ...makeElevationProps(),
@@ -8379,27 +8499,8 @@ const VList = genericComponent()({
8379
8499
  e.preventDefault();
8380
8500
  }
8381
8501
  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');
8502
+ if (contentRef.value) {
8503
+ return focusChild(contentRef.value, location);
8403
8504
  }
8404
8505
  }
8405
8506
  useRender(() => {
@@ -8408,8 +8509,8 @@ const VList = genericComponent()({
8408
8509
  "class": ['v-list', {
8409
8510
  'v-list--disabled': props.disabled,
8410
8511
  '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],
8512
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8513
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8413
8514
  "role": "listbox",
8414
8515
  "aria-activedescendant": undefined,
8415
8516
  "onFocusin": onFocusin,
@@ -8437,6 +8538,7 @@ const VListItemAction = genericComponent()({
8437
8538
  props: {
8438
8539
  start: Boolean,
8439
8540
  end: Boolean,
8541
+ ...makeComponentProps(),
8440
8542
  ...makeTagProps()
8441
8543
  },
8442
8544
  setup(props, _ref) {
@@ -8447,7 +8549,8 @@ const VListItemAction = genericComponent()({
8447
8549
  "class": ['v-list-item-action', {
8448
8550
  'v-list-item-action--start': props.start,
8449
8551
  'v-list-item-action--end': props.end
8450
- }]
8552
+ }, props.class],
8553
+ "style": props.style
8451
8554
  }, slots));
8452
8555
  return {};
8453
8556
  }
@@ -8458,6 +8561,7 @@ const VListItemMedia = genericComponent()({
8458
8561
  props: {
8459
8562
  start: Boolean,
8460
8563
  end: Boolean,
8564
+ ...makeComponentProps(),
8461
8565
  ...makeTagProps()
8462
8566
  },
8463
8567
  setup(props, _ref) {
@@ -8469,7 +8573,8 @@ const VListItemMedia = genericComponent()({
8469
8573
  "class": ['v-list-item-media', {
8470
8574
  'v-list-item-media--start': props.start,
8471
8575
  'v-list-item-media--end': props.end
8472
- }]
8576
+ }, props.class],
8577
+ "style": props.style
8473
8578
  }, slots);
8474
8579
  });
8475
8580
  return {};
@@ -9710,6 +9815,7 @@ const makeVOverlayProps = propsFactory({
9710
9815
  default: 2000
9711
9816
  },
9712
9817
  ...makeActivatorProps(),
9818
+ ...makeComponentProps(),
9713
9819
  ...makeDimensionProps(),
9714
9820
  ...makeLazyProps(),
9715
9821
  ...makeLocationStrategyProps(),
@@ -9877,10 +9983,10 @@ const VOverlay = genericComponent()({
9877
9983
  'v-overlay--absolute': props.absolute || props.contained,
9878
9984
  'v-overlay--active': isActive.value,
9879
9985
  'v-overlay--contained': props.contained
9880
- }, themeClasses.value, rtlClasses.value],
9986
+ }, themeClasses.value, rtlClasses.value, props.class],
9881
9987
  "style": [stackStyles.value, {
9882
9988
  top: convertToUnit(top.value)
9883
- }],
9989
+ }, props.style],
9884
9990
  "ref": root
9885
9991
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9886
9992
  "color": scrimColor,
@@ -9986,7 +10092,8 @@ const VMenu = genericComponent()({
9986
10092
  const [overlayProps] = VOverlay.filterProps(props);
9987
10093
  return createVNode(VOverlay, mergeProps({
9988
10094
  "ref": overlay,
9989
- "class": ['v-menu']
10095
+ "class": ['v-menu', props.class],
10096
+ "style": props.style
9990
10097
  }, overlayProps, {
9991
10098
  "modelValue": isActive.value,
9992
10099
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10205,7 +10312,8 @@ const VSelect = genericComponent()({
10205
10312
  'v-select--chips': !!props.chips,
10206
10313
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10207
10314
  'v-select--selected': model.value.length
10208
- }],
10315
+ }, props.class],
10316
+ "style": props.style,
10209
10317
  "appendInnerIcon": props.menuIcon,
10210
10318
  "readonly": true,
10211
10319
  "placeholder": placeholder,
@@ -10648,7 +10756,8 @@ const VAutocomplete = genericComponent()({
10648
10756
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10649
10757
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10650
10758
  'v-autocomplete--selection-slot': !!slots.selection
10651
- }],
10759
+ }, props.class],
10760
+ "style": props.style,
10652
10761
  "appendInnerIcon": props.menuIcon,
10653
10762
  "readonly": props.readonly,
10654
10763
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10762,8 +10871,6 @@ const VAutocomplete = genericComponent()({
10762
10871
  }
10763
10872
  });
10764
10873
 
10765
- // Types
10766
-
10767
10874
  const VBadge = genericComponent()({
10768
10875
  name: 'VBadge',
10769
10876
  inheritAttrs: false,
@@ -10787,6 +10894,7 @@ const VBadge = genericComponent()({
10787
10894
  offsetX: [Number, String],
10788
10895
  offsetY: [Number, String],
10789
10896
  textColor: String,
10897
+ ...makeComponentProps(),
10790
10898
  ...makeLocationProps({
10791
10899
  location: 'top end'
10792
10900
  }),
@@ -10831,8 +10939,10 @@ const VBadge = genericComponent()({
10831
10939
  'v-badge--dot': props.dot,
10832
10940
  'v-badge--floating': props.floating,
10833
10941
  'v-badge--inline': props.inline
10834
- }]
10835
- }, attrs), {
10942
+ }, props.class]
10943
+ }, attrs, {
10944
+ "style": props.style
10945
+ }), {
10836
10946
  default: () => [createVNode("div", {
10837
10947
  "class": "v-badge__wrapper"
10838
10948
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10859,7 +10969,8 @@ const VBannerActions = genericComponent()({
10859
10969
  name: 'VBannerActions',
10860
10970
  props: {
10861
10971
  color: String,
10862
- density: String
10972
+ density: String,
10973
+ ...makeComponentProps()
10863
10974
  },
10864
10975
  setup(props, _ref) {
10865
10976
  let {
@@ -10873,7 +10984,8 @@ const VBannerActions = genericComponent()({
10873
10984
  }
10874
10985
  });
10875
10986
  useRender(() => createVNode("div", {
10876
- "class": "v-banner-actions"
10987
+ "class": ['v-banner-actions', props.class],
10988
+ "style": props.style
10877
10989
  }, [slots.default?.()]));
10878
10990
  return {};
10879
10991
  }
@@ -10894,6 +11006,7 @@ const VBanner = genericComponent()({
10894
11006
  sticky: Boolean,
10895
11007
  text: String,
10896
11008
  ...makeBorderProps(),
11009
+ ...makeComponentProps(),
10897
11010
  ...makeDensityProps(),
10898
11011
  ...makeDimensionProps(),
10899
11012
  ...makeElevationProps(),
@@ -10951,8 +11064,8 @@ const VBanner = genericComponent()({
10951
11064
  'v-banner--stacked': props.stacked || mobile.value,
10952
11065
  'v-banner--sticky': props.sticky,
10953
11066
  [`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],
11067
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11068
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10956
11069
  "role": "banner"
10957
11070
  }, {
10958
11071
  default: () => [hasPrepend && createVNode("div", {
@@ -11008,6 +11121,7 @@ const VBottomNavigation = genericComponent()({
11008
11121
  default: true
11009
11122
  },
11010
11123
  ...makeBorderProps(),
11124
+ ...makeComponentProps(),
11011
11125
  ...makeDensityProps(),
11012
11126
  ...makeElevationProps(),
11013
11127
  ...makeRoundedProps(),
@@ -11082,11 +11196,11 @@ const VBottomNavigation = genericComponent()({
11082
11196
  'v-bottom-navigation--active': isActive.value,
11083
11197
  'v-bottom-navigation--grow': props.grow,
11084
11198
  'v-bottom-navigation--shift': props.mode === 'shift'
11085
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11199
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
11086
11200
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
11087
11201
  height: convertToUnit(height.value),
11088
11202
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
11089
- }, ssrBootStyles.value]
11203
+ }, ssrBootStyles.value, props.style]
11090
11204
  }, {
11091
11205
  default: () => [slots.default && createVNode("div", {
11092
11206
  "class": "v-bottom-navigation__content"
@@ -11100,14 +11214,16 @@ const VBottomNavigation = genericComponent()({
11100
11214
  const VBreadcrumbsDivider = genericComponent()({
11101
11215
  name: 'VBreadcrumbsDivider',
11102
11216
  props: {
11103
- divider: [Number, String]
11217
+ divider: [Number, String],
11218
+ ...makeComponentProps()
11104
11219
  },
11105
11220
  setup(props, _ref) {
11106
11221
  let {
11107
11222
  slots
11108
11223
  } = _ref;
11109
11224
  useRender(() => createVNode("li", {
11110
- "class": "v-breadcrumbs-divider"
11225
+ "class": ['v-breadcrumbs-divider', props.class],
11226
+ "style": props.style
11111
11227
  }, [slots?.default?.() ?? props.divider]));
11112
11228
  return {};
11113
11229
  }
@@ -11122,6 +11238,7 @@ const VBreadcrumbsItem = genericComponent()({
11122
11238
  color: String,
11123
11239
  disabled: Boolean,
11124
11240
  title: String,
11241
+ ...makeComponentProps(),
11125
11242
  ...makeRouterProps(),
11126
11243
  ...makeTagProps({
11127
11244
  tag: 'li'
@@ -11147,8 +11264,8 @@ const VBreadcrumbsItem = genericComponent()({
11147
11264
  'v-breadcrumbs-item--disabled': props.disabled,
11148
11265
  'v-breadcrumbs-item--link': link.isLink.value,
11149
11266
  [`${props.activeClass}`]: isActive.value && props.activeClass
11150
- }, textColorClasses.value],
11151
- "style": [textColorStyles.value],
11267
+ }, textColorClasses.value, props.class],
11268
+ "style": [textColorStyles.value, props.style],
11152
11269
  "href": link.href.value,
11153
11270
  "aria-current": isActive.value ? 'page' : undefined,
11154
11271
  "onClick": link.navigate
@@ -11179,6 +11296,7 @@ const VBreadcrumbs = genericComponent()({
11179
11296
  type: Array,
11180
11297
  default: () => []
11181
11298
  },
11299
+ ...makeComponentProps(),
11182
11300
  ...makeDensityProps(),
11183
11301
  ...makeRoundedProps(),
11184
11302
  ...makeTagProps({
@@ -11210,11 +11328,22 @@ const VBreadcrumbs = genericComponent()({
11210
11328
  disabled: toRef(props, 'disabled')
11211
11329
  }
11212
11330
  });
11331
+ const items = computed(() => props.items.map(item => {
11332
+ return typeof item === 'string' ? {
11333
+ item: {
11334
+ title: item
11335
+ },
11336
+ raw: item
11337
+ } : {
11338
+ item,
11339
+ raw: item
11340
+ };
11341
+ }));
11213
11342
  useRender(() => {
11214
11343
  const hasPrepend = !!(slots.prepend || props.icon);
11215
11344
  return createVNode(props.tag, {
11216
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11217
- "style": backgroundColorStyles.value
11345
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11346
+ "style": [backgroundColorStyles.value, props.style]
11218
11347
  }, {
11219
11348
  default: () => [hasPrepend && createVNode("div", {
11220
11349
  "key": "prepend",
@@ -11232,33 +11361,36 @@ const VBreadcrumbs = genericComponent()({
11232
11361
  start: true
11233
11362
  }
11234
11363
  }
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?.({
11364
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11365
+ let {
11247
11366
  item,
11248
- index
11249
- }) : undefined
11250
- })])), slots.default?.()]
11367
+ raw
11368
+ } = _ref2;
11369
+ return createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11370
+ "key": item.title,
11371
+ "disabled": index >= array.length - 1
11372
+ }, item), {
11373
+ default: slots.title ? () => slots.title?.({
11374
+ item: raw,
11375
+ index
11376
+ }) : undefined
11377
+ }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11378
+ default: slots.divider ? () => slots.divider?.({
11379
+ item: raw,
11380
+ index
11381
+ }) : undefined
11382
+ })]);
11383
+ }), slots.default?.()]
11251
11384
  });
11252
11385
  });
11253
11386
  return {};
11254
11387
  }
11255
11388
  });
11256
11389
 
11257
- // Types
11258
-
11259
- const VCardActions = defineComponent({
11390
+ const VCardActions = genericComponent()({
11260
11391
  name: 'VCardActions',
11261
- setup(_, _ref) {
11392
+ props: makeComponentProps(),
11393
+ setup(props, _ref) {
11262
11394
  let {
11263
11395
  slots
11264
11396
  } = _ref;
@@ -11268,7 +11400,8 @@ const VCardActions = defineComponent({
11268
11400
  }
11269
11401
  });
11270
11402
  useRender(() => createVNode("div", {
11271
- "class": "v-card-actions"
11403
+ "class": ['v-card-actions', props.class],
11404
+ "style": props.style
11272
11405
  }, [slots.default?.()]));
11273
11406
  return {};
11274
11407
  }
@@ -11278,8 +11411,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11278
11411
 
11279
11412
  const VCardTitle = createSimpleFunctional('v-card-title');
11280
11413
 
11281
- // Types
11282
-
11283
11414
  const VCardItem = genericComponent()({
11284
11415
  name: 'VCardItem',
11285
11416
  props: {
@@ -11289,6 +11420,7 @@ const VCardItem = genericComponent()({
11289
11420
  prependIcon: IconValue,
11290
11421
  subtitle: String,
11291
11422
  title: String,
11423
+ ...makeComponentProps(),
11292
11424
  ...makeDensityProps()
11293
11425
  },
11294
11426
  setup(props, _ref) {
@@ -11303,7 +11435,8 @@ const VCardItem = genericComponent()({
11303
11435
  const hasTitle = !!(props.title || slots.title);
11304
11436
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11305
11437
  return createVNode("div", {
11306
- "class": "v-card-item"
11438
+ "class": ['v-card-item', props.class],
11439
+ "style": props.style
11307
11440
  }, [hasPrepend && createVNode("div", {
11308
11441
  "key": "prepend",
11309
11442
  "class": "v-card-item__prepend"
@@ -11385,8 +11518,8 @@ const VCard = genericComponent()({
11385
11518
  subtitle: String,
11386
11519
  text: String,
11387
11520
  title: String,
11388
- ...makeThemeProps(),
11389
11521
  ...makeBorderProps(),
11522
+ ...makeComponentProps(),
11390
11523
  ...makeDensityProps(),
11391
11524
  ...makeDimensionProps(),
11392
11525
  ...makeElevationProps(),
@@ -11396,6 +11529,7 @@ const VCard = genericComponent()({
11396
11529
  ...makeRoundedProps(),
11397
11530
  ...makeRouterProps(),
11398
11531
  ...makeTagProps(),
11532
+ ...makeThemeProps(),
11399
11533
  ...makeVariantProps({
11400
11534
  variant: 'elevated'
11401
11535
  })
@@ -11456,8 +11590,8 @@ const VCard = genericComponent()({
11456
11590
  'v-card--flat': props.flat,
11457
11591
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11458
11592
  '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],
11593
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11594
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11461
11595
  "href": link.href.value,
11462
11596
  "onClick": isClickable.value && link.navigate,
11463
11597
  "tabindex": props.disabled ? -1 : undefined
@@ -11653,6 +11787,7 @@ const makeVWindowProps = propsFactory({
11653
11787
  mandatory: {
11654
11788
  default: 'force'
11655
11789
  },
11790
+ ...makeComponentProps(),
11656
11791
  ...makeTagProps(),
11657
11792
  ...makeThemeProps()
11658
11793
  }, 'v-window');
@@ -11768,7 +11903,8 @@ const VWindow = genericComponent()({
11768
11903
  "ref": rootRef,
11769
11904
  "class": ['v-window', {
11770
11905
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11771
- }, themeClasses.value]
11906
+ }, themeClasses.value, props.class],
11907
+ "style": props.style
11772
11908
  }, {
11773
11909
  default: () => [createVNode("div", {
11774
11910
  "class": "v-window__container",
@@ -11853,10 +11989,10 @@ const VCarousel = genericComponent()({
11853
11989
  "class": ['v-carousel', {
11854
11990
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11855
11991
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11856
- }],
11857
- "style": {
11992
+ }, props.class],
11993
+ "style": [{
11858
11994
  height: convertToUnit(props.height)
11859
- },
11995
+ }, props.style],
11860
11996
  "continuous": true,
11861
11997
  "mandatory": "force",
11862
11998
  "showArrows": props.showArrows
@@ -11922,6 +12058,7 @@ const VWindowItem = genericComponent()({
11922
12058
  type: [Boolean, String],
11923
12059
  default: undefined
11924
12060
  },
12061
+ ...makeComponentProps(),
11925
12062
  ...makeGroupItemProps(),
11926
12063
  ...makeLazyProps()
11927
12064
  },
@@ -12008,7 +12145,8 @@ const VWindowItem = genericComponent()({
12008
12145
  "disabled": !isBooted.value
12009
12146
  }, {
12010
12147
  default: () => [withDirectives(createVNode("div", {
12011
- "class": ['v-window-item', groupItem.selectedClass.value]
12148
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12149
+ "style": props.style
12012
12150
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
12013
12151
  }));
12014
12152
  return {};
@@ -12021,7 +12159,8 @@ const VCarouselItem = genericComponent()({
12021
12159
  name: 'VCarouselItem',
12022
12160
  inheritAttrs: false,
12023
12161
  props: {
12024
- value: null
12162
+ value: null,
12163
+ ...makeComponentProps()
12025
12164
  },
12026
12165
  setup(props, _ref) {
12027
12166
  let {
@@ -12029,7 +12168,8 @@ const VCarouselItem = genericComponent()({
12029
12168
  attrs
12030
12169
  } = _ref;
12031
12170
  useRender(() => createVNode(VWindowItem, {
12032
- "class": "v-carousel-item",
12171
+ "class": ['v-carousel-item', props.class],
12172
+ "style": props.style,
12033
12173
  "value": props.value
12034
12174
  }, {
12035
12175
  default: () => [createVNode(VImg, attrs, slots)]
@@ -12042,6 +12182,7 @@ const VCode = createSimpleFunctional('v-code');
12042
12182
  const makeVSheetProps = propsFactory({
12043
12183
  color: String,
12044
12184
  ...makeBorderProps(),
12185
+ ...makeComponentProps(),
12045
12186
  ...makeDimensionProps(),
12046
12187
  ...makeElevationProps(),
12047
12188
  ...makeLocationProps(),
@@ -12085,8 +12226,8 @@ const VSheet = genericComponent()({
12085
12226
  roundedClasses
12086
12227
  } = useRounded(props);
12087
12228
  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]
12229
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12230
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
12090
12231
  }, slots));
12091
12232
  return {};
12092
12233
  }
@@ -12112,7 +12253,8 @@ const VColorPickerCanvas = defineComponent({
12112
12253
  width: {
12113
12254
  type: [Number, String],
12114
12255
  default: 300
12115
- }
12256
+ },
12257
+ ...makeComponentProps()
12116
12258
  },
12117
12259
  emits: {
12118
12260
  'update:color': color => true,
@@ -12257,7 +12399,8 @@ const VColorPickerCanvas = defineComponent({
12257
12399
  onMounted(() => updateCanvas());
12258
12400
  useRender(() => createVNode("div", {
12259
12401
  "ref": resizeRef,
12260
- "class": "v-color-picker-canvas",
12402
+ "class": ['v-color-picker-canvas', props.class],
12403
+ "style": props.style,
12261
12404
  "onClick": handleClick,
12262
12405
  "onMousedown": handleMouseDown,
12263
12406
  "onTouchstart": handleMouseDown
@@ -12490,7 +12633,8 @@ const VColorPickerEdit = defineComponent({
12490
12633
  type: Array,
12491
12634
  default: () => Object.keys(modes),
12492
12635
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12493
- }
12636
+ },
12637
+ ...makeComponentProps()
12494
12638
  },
12495
12639
  emits: {
12496
12640
  'update:color': color => true,
@@ -12530,7 +12674,8 @@ const VColorPickerEdit = defineComponent({
12530
12674
  });
12531
12675
  });
12532
12676
  useRender(() => createVNode("div", {
12533
- "class": "v-color-picker-edit"
12677
+ "class": ['v-color-picker-edit', props.class],
12678
+ "style": props.style
12534
12679
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12535
12680
  "icon": "$unfold",
12536
12681
  "size": "x-small",
@@ -12849,7 +12994,8 @@ const VSliderThumb = genericComponent()({
12849
12994
  ripple: {
12850
12995
  type: Boolean,
12851
12996
  default: true
12852
- }
12997
+ },
12998
+ ...makeComponentProps()
12853
12999
  },
12854
13000
  emits: {
12855
13001
  'update:modelValue': v => true
@@ -12927,11 +13073,11 @@ const VSliderThumb = genericComponent()({
12927
13073
  "class": ['v-slider-thumb', {
12928
13074
  'v-slider-thumb--focused': props.focused,
12929
13075
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12930
- }],
12931
- "style": {
13076
+ }, props.class],
13077
+ "style": [{
12932
13078
  '--v-slider-thumb-position': positionPercentage,
12933
13079
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12934
- },
13080
+ }, props.style],
12935
13081
  "role": "slider",
12936
13082
  "tabindex": disabled.value ? -1 : 0,
12937
13083
  "aria-valuemin": props.min,
@@ -12977,7 +13123,8 @@ const VSliderTrack = genericComponent()({
12977
13123
  stop: {
12978
13124
  type: Number,
12979
13125
  required: true
12980
- }
13126
+ },
13127
+ ...makeComponentProps()
12981
13128
  },
12982
13129
  emits: {},
12983
13130
  setup(props, _ref) {
@@ -13052,12 +13199,12 @@ const VSliderTrack = genericComponent()({
13052
13199
  });
13053
13200
  useRender(() => {
13054
13201
  return createVNode("div", {
13055
- "class": ['v-slider-track', roundedClasses.value],
13056
- "style": {
13202
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13203
+ "style": [{
13057
13204
  '--v-slider-track-size': convertToUnit(trackSize.value),
13058
13205
  '--v-slider-tick-size': convertToUnit(tickSize.value),
13059
13206
  direction: !vertical.value ? horizontalDirection.value : undefined
13060
- }
13207
+ }, props.style]
13061
13208
  }, [createVNode("div", {
13062
13209
  "class": ['v-slider-track__background', trackColorClasses.value, {
13063
13210
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -13160,7 +13307,8 @@ const VSlider = genericComponent()({
13160
13307
  'v-slider--focused': isFocused.value,
13161
13308
  'v-slider--pressed': mousePressed.value,
13162
13309
  'v-slider--disabled': props.disabled
13163
- }]
13310
+ }, props.class],
13311
+ "style": props.style
13164
13312
  }, inputProps, {
13165
13313
  "focused": isFocused.value
13166
13314
  }), {
@@ -13223,7 +13371,8 @@ const VColorPickerPreview = defineComponent({
13223
13371
  type: Object
13224
13372
  },
13225
13373
  disabled: Boolean,
13226
- hideAlpha: Boolean
13374
+ hideAlpha: Boolean,
13375
+ ...makeComponentProps()
13227
13376
  },
13228
13377
  emits: {
13229
13378
  'update:color': color => true
@@ -13235,7 +13384,8 @@ const VColorPickerPreview = defineComponent({
13235
13384
  useRender(() => createVNode("div", {
13236
13385
  "class": ['v-color-picker-preview', {
13237
13386
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13238
- }]
13387
+ }, props.class],
13388
+ "style": props.style
13239
13389
  }, [createVNode("div", {
13240
13390
  "class": "v-color-picker-preview__dot"
13241
13391
  }, [createVNode("div", {
@@ -13616,7 +13766,8 @@ const VColorPickerSwatches = defineComponent({
13616
13766
  },
13617
13767
  disabled: Boolean,
13618
13768
  color: Object,
13619
- maxHeight: [Number, String]
13769
+ maxHeight: [Number, String],
13770
+ ...makeComponentProps()
13620
13771
  },
13621
13772
  emits: {
13622
13773
  'update:color': color => true
@@ -13626,10 +13777,10 @@ const VColorPickerSwatches = defineComponent({
13626
13777
  emit
13627
13778
  } = _ref;
13628
13779
  useRender(() => createVNode("div", {
13629
- "class": "v-color-picker-swatches",
13630
- "style": {
13780
+ "class": ['v-color-picker-swatches', props.class],
13781
+ "style": [{
13631
13782
  maxHeight: convertToUnit(props.maxHeight)
13632
- }
13783
+ }, props.style]
13633
13784
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13634
13785
  "class": "v-color-picker-swatches__swatch"
13635
13786
  }, [swatch.map(color => {
@@ -13733,13 +13884,13 @@ const VColorPicker = defineComponent({
13733
13884
  "rounded": props.rounded,
13734
13885
  "elevation": props.elevation,
13735
13886
  "theme": props.theme,
13736
- "class": ['v-color-picker'],
13737
- "style": {
13887
+ "class": ['v-color-picker', props.class],
13888
+ "style": [{
13738
13889
  '--v-color-picker-color-hsv': HSVtoCSS({
13739
13890
  ...(currentColor.value ?? nullColor),
13740
13891
  a: 1
13741
13892
  })
13742
- }
13893
+ }, props.style]
13743
13894
  }, sheetProps, {
13744
13895
  "maxWidth": props.width
13745
13896
  }), {
@@ -14050,7 +14201,8 @@ const VCombobox = genericComponent()({
14050
14201
  'v-combobox--chips': !!props.chips,
14051
14202
  'v-combobox--selecting-index': selectionIndex.value > -1,
14052
14203
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
14053
- }],
14204
+ }, props.class],
14205
+ "style": props.style,
14054
14206
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
14055
14207
  "readonly": props.readonly,
14056
14208
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14207,7 +14359,7 @@ const VDialog = genericComponent()({
14207
14359
  ![document, overlay.value.contentEl].includes(after) &&
14208
14360
  // It isn't inside the dialog body
14209
14361
  !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"]'));
14362
+ const focusable = focusableChildren(overlay.value.contentEl);
14211
14363
  if (!focusable.length) return;
14212
14364
  const firstElement = focusable[0];
14213
14365
  const lastElement = focusable[focusable.length - 1];
@@ -14248,7 +14400,8 @@ const VDialog = genericComponent()({
14248
14400
  "class": ['v-dialog', {
14249
14401
  'v-dialog--fullscreen': props.fullscreen,
14250
14402
  'v-dialog--scrollable': props.scrollable
14251
- }]
14403
+ }, props.class],
14404
+ "style": props.style
14252
14405
  }, overlayProps, {
14253
14406
  "modelValue": isActive.value,
14254
14407
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14287,6 +14440,7 @@ const VExpansionPanels = genericComponent()({
14287
14440
  validator: v => allowedVariants.includes(v)
14288
14441
  },
14289
14442
  readonly: Boolean,
14443
+ ...makeComponentProps(),
14290
14444
  ...makeGroupProps(),
14291
14445
  ...makeTagProps(),
14292
14446
  ...makeThemeProps()
@@ -14312,7 +14466,8 @@ const VExpansionPanels = genericComponent()({
14312
14466
  }
14313
14467
  });
14314
14468
  useRender(() => createVNode(props.tag, {
14315
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14469
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14470
+ "style": props.style
14316
14471
  }, slots));
14317
14472
  return {};
14318
14473
  }
@@ -14341,6 +14496,7 @@ const VExpansionPanelTitle = genericComponent()({
14341
14496
  Ripple
14342
14497
  },
14343
14498
  props: {
14499
+ ...makeComponentProps(),
14344
14500
  ...makeVExpansionPanelTitleProps()
14345
14501
  },
14346
14502
  setup(props, _ref) {
@@ -14363,8 +14519,8 @@ const VExpansionPanelTitle = genericComponent()({
14363
14519
  useRender(() => withDirectives(createVNode("button", {
14364
14520
  "class": ['v-expansion-panel-title', {
14365
14521
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14366
- }, backgroundColorClasses.value],
14367
- "style": backgroundColorStyles.value,
14522
+ }, backgroundColorClasses.value, props.class],
14523
+ "style": [backgroundColorStyles.value, props.style],
14368
14524
  "type": "button",
14369
14525
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14370
14526
  "disabled": expansionPanel.disabled.value,
@@ -14384,6 +14540,7 @@ const VExpansionPanelTitle = genericComponent()({
14384
14540
  const VExpansionPanelText = genericComponent()({
14385
14541
  name: 'VExpansionPanelText',
14386
14542
  props: {
14543
+ ...makeComponentProps(),
14387
14544
  ...makeLazyProps()
14388
14545
  },
14389
14546
  setup(props, _ref) {
@@ -14400,7 +14557,8 @@ const VExpansionPanelText = genericComponent()({
14400
14557
  "onAfterLeave": onAfterLeave
14401
14558
  }, {
14402
14559
  default: () => [withDirectives(createVNode("div", {
14403
- "class": "v-expansion-panel-text"
14560
+ "class": ['v-expansion-panel-text', props.class],
14561
+ "style": props.style
14404
14562
  }, [slots.default && hasContent.value && createVNode("div", {
14405
14563
  "class": "v-expansion-panel-text__wrapper"
14406
14564
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14415,6 +14573,7 @@ const VExpansionPanel = genericComponent()({
14415
14573
  title: String,
14416
14574
  text: String,
14417
14575
  bgColor: String,
14576
+ ...makeComponentProps(),
14418
14577
  ...makeElevationProps(),
14419
14578
  ...makeGroupItemProps(),
14420
14579
  ...makeLazyProps(),
@@ -14463,8 +14622,8 @@ const VExpansionPanel = genericComponent()({
14463
14622
  'v-expansion-panel--before-active': isBeforeSelected.value,
14464
14623
  'v-expansion-panel--after-active': isAfterSelected.value,
14465
14624
  'v-expansion-panel--disabled': isDisabled.value
14466
- }, roundedClasses.value, backgroundColorClasses.value],
14467
- "style": backgroundColorStyles.value,
14625
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14626
+ "style": [backgroundColorStyles.value, props.style],
14468
14627
  "aria-expanded": groupItem.isSelected.value
14469
14628
  }, {
14470
14629
  default: () => [createVNode("div", {
@@ -14614,7 +14773,8 @@ const VFileInput = genericComponent()({
14614
14773
  "ref": vInputRef,
14615
14774
  "modelValue": model.value,
14616
14775
  "onUpdate:modelValue": $event => model.value = $event,
14617
- "class": "v-file-input",
14776
+ "class": ['v-file-input', props.class],
14777
+ "style": props.style,
14618
14778
  "onClick:prepend": onClickPrepend
14619
14779
  }, rootAttrs, inputProps, {
14620
14780
  "focused": isFocused.value
@@ -14706,6 +14866,7 @@ const VFooter = genericComponent()({
14706
14866
  default: 'auto'
14707
14867
  },
14708
14868
  ...makeBorderProps(),
14869
+ ...makeComponentProps(),
14709
14870
  ...makeElevationProps(),
14710
14871
  ...makeLayoutItemProps(),
14711
14872
  ...makeRoundedProps(),
@@ -14755,8 +14916,8 @@ const VFooter = genericComponent()({
14755
14916
  });
14756
14917
  useRender(() => createVNode(props.tag, {
14757
14918
  "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]
14919
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14920
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14760
14921
  }, slots));
14761
14922
  return {};
14762
14923
  }
@@ -14767,6 +14928,7 @@ const VFooter = genericComponent()({
14767
14928
  const VForm = genericComponent()({
14768
14929
  name: 'VForm',
14769
14930
  props: {
14931
+ ...makeComponentProps(),
14770
14932
  ...makeFormProps()
14771
14933
  },
14772
14934
  emits: {
@@ -14805,7 +14967,8 @@ const VForm = genericComponent()({
14805
14967
  }
14806
14968
  useRender(() => createVNode("form", {
14807
14969
  "ref": formRef,
14808
- "class": "v-form",
14970
+ "class": ['v-form', props.class],
14971
+ "style": props.style,
14809
14972
  "novalidate": true,
14810
14973
  "onReset": onReset,
14811
14974
  "onSubmit": onSubmit
@@ -14821,6 +14984,7 @@ const VContainer = genericComponent()({
14821
14984
  type: Boolean,
14822
14985
  default: false
14823
14986
  },
14987
+ ...makeComponentProps(),
14824
14988
  ...makeTagProps()
14825
14989
  },
14826
14990
  setup(props, _ref) {
@@ -14830,7 +14994,8 @@ const VContainer = genericComponent()({
14830
14994
  useRender(() => createVNode(props.tag, {
14831
14995
  "class": ['v-container', {
14832
14996
  'v-container--fluid': props.fluid
14833
- }]
14997
+ }, props.class],
14998
+ "style": props.style
14834
14999
  }, slots));
14835
15000
  return {};
14836
15001
  }
@@ -14921,6 +15086,7 @@ const VCol = genericComponent()({
14921
15086
  default: null,
14922
15087
  validator: str => ALIGN_SELF_VALUES.includes(str)
14923
15088
  },
15089
+ ...makeComponentProps(),
14924
15090
  ...makeTagProps()
14925
15091
  },
14926
15092
  setup(props, _ref) {
@@ -14951,7 +15117,8 @@ const VCol = genericComponent()({
14951
15117
  return classList;
14952
15118
  });
14953
15119
  return () => h(props.tag, {
14954
- class: classes.value
15120
+ class: [classes.value, props.class],
15121
+ style: props.style
14955
15122
  }, slots.default?.());
14956
15123
  }
14957
15124
  });
@@ -15037,6 +15204,7 @@ const VRow = genericComponent()({
15037
15204
  validator: alignContentValidator
15038
15205
  },
15039
15206
  ...alignContentProps,
15207
+ ...makeComponentProps(),
15040
15208
  ...makeTagProps()
15041
15209
  },
15042
15210
  setup(props, _ref) {
@@ -15065,7 +15233,8 @@ const VRow = genericComponent()({
15065
15233
  return classList;
15066
15234
  });
15067
15235
  return () => h(props.tag, {
15068
- class: ['v-row', classes.value]
15236
+ class: ['v-row', classes.value, props.class],
15237
+ style: props.style
15069
15238
  }, slots.default?.());
15070
15239
  }
15071
15240
  });
@@ -15109,6 +15278,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
15109
15278
  const VItemGroup = genericComponent()({
15110
15279
  name: 'VItemGroup',
15111
15280
  props: {
15281
+ ...makeComponentProps(),
15112
15282
  ...makeGroupProps({
15113
15283
  selectedClass: 'v-item--selected'
15114
15284
  }),
@@ -15133,7 +15303,8 @@ const VItemGroup = genericComponent()({
15133
15303
  selected
15134
15304
  } = useGroup(props, VItemGroupSymbol);
15135
15305
  return () => createVNode(props.tag, {
15136
- "class": ['v-item-group', themeClasses.value]
15306
+ "class": ['v-item-group', themeClasses.value, props.class],
15307
+ "style": props.style
15137
15308
  }, {
15138
15309
  default: () => [slots.default?.({
15139
15310
  isSelected,
@@ -15183,7 +15354,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15183
15354
 
15184
15355
  const VLayout = genericComponent()({
15185
15356
  name: 'VLayout',
15186
- props: makeLayoutProps(),
15357
+ props: {
15358
+ ...makeComponentProps(),
15359
+ ...makeLayoutProps()
15360
+ },
15187
15361
  setup(props, _ref) {
15188
15362
  let {
15189
15363
  slots
@@ -15197,8 +15371,8 @@ const VLayout = genericComponent()({
15197
15371
  } = createLayout(props);
15198
15372
  useRender(() => createVNode("div", {
15199
15373
  "ref": layoutRef,
15200
- "class": layoutClasses.value,
15201
- "style": layoutStyles.value
15374
+ "class": [layoutClasses.value, props.class],
15375
+ "style": [layoutStyles.value, props.style]
15202
15376
  }, [slots.default?.()]));
15203
15377
  return {
15204
15378
  getLayoutItem,
@@ -15221,6 +15395,7 @@ const VLayoutItem = genericComponent()({
15221
15395
  default: 300
15222
15396
  },
15223
15397
  modelValue: Boolean,
15398
+ ...makeComponentProps(),
15224
15399
  ...makeLayoutItemProps()
15225
15400
  },
15226
15401
  setup(props, _ref) {
@@ -15239,8 +15414,8 @@ const VLayoutItem = genericComponent()({
15239
15414
  absolute: toRef(props, 'absolute')
15240
15415
  });
15241
15416
  return () => createVNode("div", {
15242
- "class": ['v-layout-item'],
15243
- "style": layoutItemStyles.value
15417
+ "class": ['v-layout-item', props.class],
15418
+ "style": [layoutItemStyles.value, props.style]
15244
15419
  }, [slots.default?.()]);
15245
15420
  }
15246
15421
  });
@@ -15264,6 +15439,7 @@ const VLazy = genericComponent()({
15264
15439
  threshold: undefined
15265
15440
  })
15266
15441
  },
15442
+ ...makeComponentProps(),
15267
15443
  ...makeDimensionProps(),
15268
15444
  ...makeTagProps(),
15269
15445
  ...makeTransitionProps({
@@ -15286,8 +15462,8 @@ const VLazy = genericComponent()({
15286
15462
  isActive.value = isIntersecting;
15287
15463
  }
15288
15464
  useRender(() => withDirectives(createVNode(props.tag, {
15289
- "class": "v-lazy",
15290
- "style": dimensionStyles.value
15465
+ "class": ['v-lazy', props.class],
15466
+ "style": [dimensionStyles.value, props.style]
15291
15467
  }, {
15292
15468
  default: () => [isActive.value && createVNode(MaybeTransition, {
15293
15469
  "transition": props.transition,
@@ -15312,7 +15488,8 @@ const VLocaleProvider = genericComponent()({
15312
15488
  rtl: {
15313
15489
  type: Boolean,
15314
15490
  default: undefined
15315
- }
15491
+ },
15492
+ ...makeComponentProps()
15316
15493
  },
15317
15494
  setup(props, _ref) {
15318
15495
  let {
@@ -15322,7 +15499,8 @@ const VLocaleProvider = genericComponent()({
15322
15499
  rtlClasses
15323
15500
  } = provideLocale(props);
15324
15501
  useRender(() => createVNode("div", {
15325
- "class": ['v-locale-provider', rtlClasses.value]
15502
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15503
+ "style": props.style
15326
15504
  }, [slots.default?.()]));
15327
15505
  return {};
15328
15506
  }
@@ -15332,6 +15510,7 @@ const VMain = genericComponent()({
15332
15510
  name: 'VMain',
15333
15511
  props: {
15334
15512
  scrollable: Boolean,
15513
+ ...makeComponentProps(),
15335
15514
  ...makeTagProps({
15336
15515
  tag: 'main'
15337
15516
  })
@@ -15349,8 +15528,8 @@ const VMain = genericComponent()({
15349
15528
  useRender(() => createVNode(props.tag, {
15350
15529
  "class": ['v-main', {
15351
15530
  'v-main--scrollable': props.scrollable
15352
- }],
15353
- "style": [mainStyles.value, ssrBootStyles.value]
15531
+ }, props.class],
15532
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15354
15533
  }, {
15355
15534
  default: () => [props.scrollable ? createVNode("div", {
15356
15535
  "class": "v-main__scroller"
@@ -15360,593 +15539,167 @@ const VMain = genericComponent()({
15360
15539
  }
15361
15540
  });
15362
15541
 
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);
15542
+ function useSticky(_ref) {
15543
+ let {
15544
+ rootEl,
15545
+ isSticky,
15546
+ layoutItemStyles
15547
+ } = _ref;
15548
+ const isStuck = ref(false);
15549
+ const stuckPosition = ref(0);
15550
+ const stickyStyles = computed(() => {
15551
+ const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15552
+ return [isSticky.value ? {
15553
+ top: 'auto',
15554
+ bottom: 'auto',
15555
+ height: undefined
15556
+ } : undefined, isStuck.value ? {
15557
+ [side]: convertToUnit(stuckPosition.value)
15558
+ } : {
15559
+ top: layoutItemStyles.value.top
15560
+ }];
15561
+ });
15562
+ onMounted(() => {
15563
+ watch(isSticky, val => {
15564
+ if (val) {
15565
+ window.addEventListener('scroll', onScroll, {
15566
+ passive: true
15567
+ });
15568
+ } else {
15569
+ window.removeEventListener('scroll', onScroll);
15570
+ }
15571
+ }, {
15572
+ immediate: true
15573
+ });
15574
+ });
15575
+ onBeforeUnmount(() => {
15576
+ document.removeEventListener('scroll', onScroll);
15577
+ });
15578
+ let lastScrollTop = 0;
15579
+ function onScroll() {
15580
+ const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15581
+ const rect = rootEl.value.getBoundingClientRect();
15582
+ const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15583
+ const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15584
+ const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15585
+ if (rect.height < window.innerHeight - layoutTop) {
15586
+ isStuck.value = 'top';
15587
+ stuckPosition.value = layoutTop;
15588
+ } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15589
+ stuckPosition.value = window.scrollY + rect.top;
15590
+ isStuck.value = true;
15591
+ } else if (direction === 'down' && bottom <= 0) {
15592
+ stuckPosition.value = 0;
15593
+ isStuck.value = 'bottom';
15594
+ } else if (direction === 'up' && top <= 0) {
15595
+ stuckPosition.value = rect.top + top;
15596
+ isStuck.value = 'top';
15597
+ }
15598
+ lastScrollTop = window.scrollY;
15374
15599
  }
15375
- for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
15376
- const day = new Date(date.getFullYear(), date.getMonth(), i);
15600
+ return {
15601
+ isStuck,
15602
+ stickyStyles
15603
+ };
15604
+ }
15377
15605
 
15378
- // Add the day to the current week
15379
- currentWeek.push(day);
15606
+ const HORIZON = 100; // ms
15607
+ const HISTORY = 20; // number of samples to keep
15380
15608
 
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 = [];
15609
+ /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15610
+ function kineticEnergyToVelocity(work) {
15611
+ const sqrt2 = 1.41421356237;
15612
+ return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15613
+ }
15614
+
15615
+ /**
15616
+ * Returns pointer velocity in px/s
15617
+ */
15618
+ function calculateImpulseVelocity(samples) {
15619
+ // The input should be in reversed time order (most recent sample at index i=0)
15620
+ if (samples.length < 2) {
15621
+ // if 0 or 1 points, velocity is zero
15622
+ return 0;
15623
+ }
15624
+ // if (samples[1].t > samples[0].t) {
15625
+ // // Algorithm will still work, but not perfectly
15626
+ // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15627
+ // }
15628
+ if (samples.length === 2) {
15629
+ // if 2 points, basic linear calculation
15630
+ if (samples[1].t === samples[0].t) {
15631
+ // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15632
+ return 0;
15385
15633
  }
15634
+ return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15386
15635
  }
15387
- for (let i = currentWeek.length; i < 7; i++) {
15388
- currentWeek.push(null);
15636
+ // Guaranteed to have at least 3 points here
15637
+ // start with the oldest sample and go forward in time
15638
+ let work = 0;
15639
+ for (let i = samples.length - 1; i > 0; i--) {
15640
+ if (samples[i].t === samples[i - 1].t) {
15641
+ // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)
15642
+ continue;
15643
+ }
15644
+ const vprev = kineticEnergyToVelocity(work); // v[i-1]
15645
+ const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]
15646
+ work += (vcurr - vprev) * Math.abs(vcurr);
15647
+ if (i === samples.length - 1) {
15648
+ work *= 0.5;
15649
+ }
15389
15650
  }
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);
15651
+ return kineticEnergyToVelocity(work) * 1000;
15398
15652
  }
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);
15653
+ function useVelocity() {
15654
+ const touches = {};
15655
+ function addMovement(e) {
15656
+ Array.from(e.changedTouches).forEach(touch => {
15657
+ const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
15658
+ samples.push([e.timeStamp, touch]);
15659
+ });
15405
15660
  }
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
- };
15661
+ function endTouch(e) {
15662
+ Array.from(e.changedTouches).forEach(touch => {
15663
+ delete touches[touch.identifier];
15664
+ });
15665
+ }
15666
+ function getVelocity(id) {
15667
+ const samples = touches[id]?.values().reverse();
15668
+ if (!samples) {
15669
+ throw new Error(`No samples for touch id ${id}`);
15670
+ }
15671
+ const newest = samples[0];
15672
+ const x = [];
15673
+ const y = [];
15674
+ for (const val of samples) {
15675
+ if (newest[0] - val[0] > HORIZON) break;
15676
+ x.push({
15677
+ t: val[0],
15678
+ d: val[1].clientX
15679
+ });
15680
+ y.push({
15681
+ t: val[0],
15682
+ d: val[1].clientY
15683
+ });
15684
+ }
15685
+ return {
15686
+ x: calculateImpulseVelocity(x),
15687
+ y: calculateImpulseVelocity(y),
15688
+ get direction() {
15689
+ const {
15690
+ x,
15691
+ y
15692
+ } = this;
15693
+ const [absX, absY] = [Math.abs(x), Math.abs(y)];
15694
+ return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops$1();
15695
+ }
15696
+ };
15697
+ }
15698
+ return {
15699
+ addMovement,
15700
+ endTouch,
15701
+ getVelocity
15702
+ };
15950
15703
  }
15951
15704
  function oops$1() {
15952
15705
  throw new Error();
@@ -16122,6 +15875,7 @@ const VNavigationDrawer = genericComponent()({
16122
15875
  },
16123
15876
  sticky: Boolean,
16124
15877
  ...makeBorderProps(),
15878
+ ...makeComponentProps(),
16125
15879
  ...makeElevationProps(),
16126
15880
  ...makeLayoutItemProps(),
16127
15881
  ...makeRoundedProps(),
@@ -16273,8 +16027,8 @@ const VNavigationDrawer = genericComponent()({
16273
16027
  'v-navigation-drawer--temporary': isTemporary.value,
16274
16028
  'v-navigation-drawer--active': isActive.value,
16275
16029
  '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]
16030
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16031
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
16278
16032
  }, attrs), {
16279
16033
  default: () => [hasImage && createVNode("div", {
16280
16034
  "key": "image",
@@ -16403,6 +16157,7 @@ const VPagination = genericComponent()({
16403
16157
  },
16404
16158
  showFirstLastPage: Boolean,
16405
16159
  ...makeBorderProps(),
16160
+ ...makeComponentProps(),
16406
16161
  ...makeDensityProps(),
16407
16162
  ...makeElevationProps(),
16408
16163
  ...makeRoundedProps(),
@@ -16599,7 +16354,8 @@ const VPagination = genericComponent()({
16599
16354
  }
16600
16355
  useRender(() => createVNode(props.tag, {
16601
16356
  "ref": resizeRef,
16602
- "class": ['v-pagination', themeClasses.value],
16357
+ "class": ['v-pagination', themeClasses.value, props.class],
16358
+ "style": props.style,
16603
16359
  "role": "navigation",
16604
16360
  "aria-label": t(props.ariaLabel),
16605
16361
  "onKeydown": onKeydown,
@@ -16658,7 +16414,8 @@ const VParallax = genericComponent()({
16658
16414
  scale: {
16659
16415
  type: [Number, String],
16660
16416
  default: 0.5
16661
- }
16417
+ },
16418
+ ...makeComponentProps()
16662
16419
  },
16663
16420
  setup(props, _ref) {
16664
16421
  let {
@@ -16720,7 +16477,8 @@ const VParallax = genericComponent()({
16720
16477
  useRender(() => createVNode(VImg, {
16721
16478
  "class": ['v-parallax', {
16722
16479
  'v-parallax--active': isIntersecting.value
16723
- }],
16480
+ }, props.class],
16481
+ "style": props.style,
16724
16482
  "ref": root,
16725
16483
  "cover": true,
16726
16484
  "onLoadstart": onScroll,
@@ -16745,7 +16503,8 @@ const VRadio = genericComponent()({
16745
16503
  slots
16746
16504
  } = _ref;
16747
16505
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16748
- "class": "v-radio",
16506
+ "class": ['v-radio', props.class],
16507
+ "style": props.style,
16749
16508
  "type": "radio"
16750
16509
  }), slots));
16751
16510
  return {};
@@ -16799,7 +16558,8 @@ const VRadioGroup = genericComponent()({
16799
16558
  }
16800
16559
  }) : props.label;
16801
16560
  return createVNode(VInput, mergeProps({
16802
- "class": "v-radio-group"
16561
+ "class": ['v-radio-group', props.class],
16562
+ "style": props.style
16803
16563
  }, inputAttrs, inputProps, {
16804
16564
  "modelValue": model.value,
16805
16565
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16937,7 +16697,8 @@ const VRangeSlider = genericComponent()({
16937
16697
  'v-slider--focused': isFocused.value,
16938
16698
  'v-slider--pressed': mousePressed.value,
16939
16699
  'v-slider--disabled': props.disabled
16940
- }],
16700
+ }, props.class],
16701
+ "style": props.style,
16941
16702
  "ref": inputRef
16942
16703
  }, inputProps, {
16943
16704
  "focused": isFocused.value
@@ -17080,6 +16841,7 @@ const VRating = genericComponent()({
17080
16841
  validator: v => ['top', 'bottom'].includes(v)
17081
16842
  },
17082
16843
  ripple: Boolean,
16844
+ ...makeComponentProps(),
17083
16845
  ...makeDensityProps(),
17084
16846
  ...makeSizeProps(),
17085
16847
  ...makeTagProps(),
@@ -17197,7 +16959,8 @@ const VRating = genericComponent()({
17197
16959
  "class": ['v-rating', {
17198
16960
  'v-rating--hover': props.hover,
17199
16961
  'v-rating--readonly': props.readonly
17200
- }, themeClasses.value]
16962
+ }, themeClasses.value, props.class],
16963
+ "style": props.style
17201
16964
  }, {
17202
16965
  default: () => [createVNode(VRatingItem, {
17203
16966
  "value": 0,
@@ -17297,6 +17060,7 @@ const makeVSlideGroupProps = propsFactory({
17297
17060
  type: [Boolean, String],
17298
17061
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
17299
17062
  },
17063
+ ...makeComponentProps(),
17300
17064
  ...makeTagProps(),
17301
17065
  ...makeGroupProps({
17302
17066
  selectedClass: 'v-slide-group-item--active'
@@ -17460,7 +17224,7 @@ const VSlideGroup = genericComponent()({
17460
17224
  function focus(location) {
17461
17225
  if (!contentRef.value) return;
17462
17226
  if (!location) {
17463
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
17227
+ const focusable = focusableChildren(contentRef.value);
17464
17228
  focusable[0]?.focus();
17465
17229
  } else if (location === 'next') {
17466
17230
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -17537,7 +17301,8 @@ const VSlideGroup = genericComponent()({
17537
17301
  'v-slide-group--vertical': !isHorizontal.value,
17538
17302
  'v-slide-group--has-affixes': hasAffixes.value,
17539
17303
  'v-slide-group--is-overflowing': isOverflowing.value
17540
- }],
17304
+ }, props.class],
17305
+ "style": props.style,
17541
17306
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
17542
17307
  "onFocus": onFocus
17543
17308
  }, {
@@ -17687,7 +17452,8 @@ const VSnackbar = genericComponent()({
17687
17452
  'v-snackbar--active': isActive.value,
17688
17453
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17689
17454
  'v-snackbar--vertical': props.vertical
17690
- }, positionClasses.value]
17455
+ }, positionClasses.value, props.class],
17456
+ "style": props.style
17691
17457
  }, overlayProps, {
17692
17458
  "modelValue": isActive.value,
17693
17459
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17787,7 +17553,8 @@ const VSwitch = genericComponent()({
17787
17553
  'v-switch--inset': props.inset
17788
17554
  }, {
17789
17555
  'v-switch--indeterminate': indeterminate.value
17790
- }, loaderClasses.value]
17556
+ }, loaderClasses.value, props.class],
17557
+ "style": props.style
17791
17558
  }, inputAttrs, inputProps, {
17792
17559
  "id": id.value,
17793
17560
  "focused": isFocused.value
@@ -17856,6 +17623,7 @@ const VSystemBar = genericComponent()({
17856
17623
  color: String,
17857
17624
  height: [Number, String],
17858
17625
  window: Boolean,
17626
+ ...makeComponentProps(),
17859
17627
  ...makeElevationProps(),
17860
17628
  ...makeLayoutItemProps(),
17861
17629
  ...makeRoundedProps(),
@@ -17897,8 +17665,8 @@ const VSystemBar = genericComponent()({
17897
17665
  useRender(() => createVNode(props.tag, {
17898
17666
  "class": ['v-system-bar', {
17899
17667
  'v-system-bar--window': props.window
17900
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17901
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17668
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17669
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17902
17670
  }, slots));
17903
17671
  return {};
17904
17672
  }
@@ -17971,10 +17739,10 @@ const VTab = genericComponent()({
17971
17739
  useRender(() => {
17972
17740
  const [btnProps] = VBtn.filterProps(props);
17973
17741
  return createVNode(VBtn, mergeProps({
17974
- "_as": "VTab",
17975
17742
  "symbol": VTabsSymbol,
17976
17743
  "ref": rootEl,
17977
- "class": ['v-tab'],
17744
+ "class": ['v-tab', props.class],
17745
+ "style": props.style,
17978
17746
  "tabindex": isSelected.value ? 0 : -1,
17979
17747
  "role": "tab",
17980
17748
  "aria-selected": String(isSelected.value),
@@ -18069,10 +17837,10 @@ const VTabs = genericComponent()({
18069
17837
  'v-tabs--fixed-tabs': props.fixedTabs,
18070
17838
  'v-tabs--grow': props.grow,
18071
17839
  'v-tabs--stacked': props.stacked
18072
- }, densityClasses.value, backgroundColorClasses.value],
17840
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
18073
17841
  "style": [{
18074
17842
  '--v-tabs-height': convertToUnit(props.height)
18075
- }, backgroundColorStyles.value],
17843
+ }, backgroundColorStyles.value, props.style],
18076
17844
  "role": "tablist",
18077
17845
  "symbol": VTabsSymbol
18078
17846
  }), {
@@ -18092,6 +17860,7 @@ const VTable = genericComponent()({
18092
17860
  fixedFooter: Boolean,
18093
17861
  height: [Number, String],
18094
17862
  hover: Boolean,
17863
+ ...makeComponentProps(),
18095
17864
  ...makeDensityProps(),
18096
17865
  ...makeTagProps(),
18097
17866
  ...makeThemeProps()
@@ -18114,7 +17883,8 @@ const VTable = genericComponent()({
18114
17883
  'v-table--has-top': !!slots.top,
18115
17884
  'v-table--has-bottom': !!slots.bottom,
18116
17885
  'v-table--hover': props.hover
18117
- }, themeClasses.value, densityClasses.value]
17886
+ }, themeClasses.value, densityClasses.value, props.class],
17887
+ "style": props.style
18118
17888
  }, {
18119
17889
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
18120
17890
  "class": "v-table__wrapper",
@@ -18279,7 +18049,8 @@ const VTextarea = genericComponent()({
18279
18049
  'v-textarea--auto-grow': props.autoGrow,
18280
18050
  'v-textarea--no-resize': props.noResize || props.autoGrow,
18281
18051
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
18282
- }]
18052
+ }, props.class],
18053
+ "style": props.style
18283
18054
  }, rootAttrs, inputProps, {
18284
18055
  "focused": isFocused.value
18285
18056
  }), {
@@ -18363,6 +18134,7 @@ const VThemeProvider = genericComponent()({
18363
18134
  name: 'VThemeProvider',
18364
18135
  props: {
18365
18136
  withBackground: Boolean,
18137
+ ...makeComponentProps(),
18366
18138
  ...makeThemeProps(),
18367
18139
  ...makeTagProps()
18368
18140
  },
@@ -18376,7 +18148,8 @@ const VThemeProvider = genericComponent()({
18376
18148
  return () => {
18377
18149
  if (!props.withBackground) return slots.default?.();
18378
18150
  return createVNode(props.tag, {
18379
- "class": ['v-theme-provider', themeClasses.value]
18151
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18152
+ "style": props.style
18380
18153
  }, {
18381
18154
  default: () => [slots.default?.()]
18382
18155
  });
@@ -18421,6 +18194,7 @@ const VTimeline = genericComponent()({
18421
18194
  type: String,
18422
18195
  validator: v => ['start', 'end', 'both'].includes(v)
18423
18196
  },
18197
+ ...makeComponentProps(),
18424
18198
  ...makeDensityProps(),
18425
18199
  ...makeTagProps(),
18426
18200
  ...makeThemeProps()
@@ -18464,10 +18238,10 @@ const VTimeline = genericComponent()({
18464
18238
  useRender(() => createVNode(props.tag, {
18465
18239
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18466
18240
  'v-timeline--inset-line': !!props.lineInset
18467
- }, themeClasses.value, densityClasses.value, sideClasses.value],
18468
- "style": {
18241
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18242
+ "style": [{
18469
18243
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
18470
- }
18244
+ }, props.style]
18471
18245
  }, slots));
18472
18246
  return {};
18473
18247
  }
@@ -18482,6 +18256,7 @@ const VTimelineDivider = genericComponent()({
18482
18256
  icon: IconValue,
18483
18257
  iconColor: String,
18484
18258
  lineColor: String,
18259
+ ...makeComponentProps(),
18485
18260
  ...makeRoundedProps(),
18486
18261
  ...makeSizeProps(),
18487
18262
  ...makeElevationProps()
@@ -18511,7 +18286,8 @@ const VTimelineDivider = genericComponent()({
18511
18286
  useRender(() => createVNode("div", {
18512
18287
  "class": ['v-timeline-divider', {
18513
18288
  'v-timeline-divider--fill-dot': props.fillDot
18514
- }]
18289
+ }, props.class],
18290
+ "style": props.style
18515
18291
  }, [createVNode("div", {
18516
18292
  "class": ['v-timeline-divider__before', lineColorClasses.value],
18517
18293
  "style": lineColorStyles.value
@@ -18561,11 +18337,12 @@ const VTimelineItem = genericComponent()({
18561
18337
  icon: IconValue,
18562
18338
  iconColor: String,
18563
18339
  lineInset: [Number, String],
18564
- ...makeRoundedProps(),
18340
+ ...makeComponentProps(),
18341
+ ...makeDimensionProps(),
18565
18342
  ...makeElevationProps(),
18343
+ ...makeRoundedProps(),
18566
18344
  ...makeSizeProps(),
18567
- ...makeTagProps(),
18568
- ...makeDimensionProps()
18345
+ ...makeTagProps()
18569
18346
  },
18570
18347
  setup(props, _ref) {
18571
18348
  let {
@@ -18585,11 +18362,11 @@ const VTimelineItem = genericComponent()({
18585
18362
  useRender(() => createVNode("div", {
18586
18363
  "class": ['v-timeline-item', {
18587
18364
  'v-timeline-item--fill-dot': props.fillDot
18588
- }],
18589
- "style": {
18365
+ }, props.class],
18366
+ "style": [{
18590
18367
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18591
18368
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18592
- }
18369
+ }, props.style]
18593
18370
  }, [createVNode("div", {
18594
18371
  "class": "v-timeline-item__body",
18595
18372
  "style": dimensionStyles.value
@@ -18665,7 +18442,8 @@ const VTooltip = genericComponent()({
18665
18442
  const [overlayProps] = VOverlay.filterProps(props);
18666
18443
  return createVNode(VOverlay, mergeProps({
18667
18444
  "ref": overlay,
18668
- "class": ['v-tooltip'],
18445
+ "class": ['v-tooltip', props.class],
18446
+ "style": props.style,
18669
18447
  "id": id.value
18670
18448
  }, overlayProps, {
18671
18449
  "modelValue": isActive.value,
@@ -18713,7 +18491,8 @@ const VValidation = genericComponent()({
18713
18491
  const VVirtualScrollItem = genericComponent()({
18714
18492
  name: 'VVirtualScrollItem',
18715
18493
  props: {
18716
- dynamicHeight: Boolean
18494
+ dynamicHeight: Boolean,
18495
+ ...makeComponentProps()
18717
18496
  },
18718
18497
  emits: {
18719
18498
  'update:height': height => true
@@ -18740,7 +18519,8 @@ const VVirtualScrollItem = genericComponent()({
18740
18519
  onUpdated(updateHeight);
18741
18520
  useRender(() => createVNode("div", {
18742
18521
  "ref": props.dynamicHeight ? resizeRef : undefined,
18743
- "class": "v-virtual-scroll__item"
18522
+ "class": ['v-virtual-scroll__item', props.class],
18523
+ "style": props.style
18744
18524
  }, [slots.default?.()]));
18745
18525
  }
18746
18526
  });
@@ -18757,7 +18537,7 @@ const VVirtualScroll = genericComponent()({
18757
18537
  default: () => []
18758
18538
  },
18759
18539
  itemHeight: [Number, String],
18760
- visibleItems: [Number, String],
18540
+ ...makeComponentProps(),
18761
18541
  ...makeDimensionProps()
18762
18542
  },
18763
18543
  setup(props, _ref) {
@@ -18784,7 +18564,7 @@ const VVirtualScroll = genericComponent()({
18784
18564
  const sizeMap = new Map();
18785
18565
  let sizes = createRange(props.items.length).map(() => itemHeight.value);
18786
18566
  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));
18567
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18788
18568
  });
18789
18569
  function handleItemResize(index, height) {
18790
18570
  itemHeight.value = Math.max(itemHeight.value, height);
@@ -18795,20 +18575,13 @@ const VVirtualScroll = genericComponent()({
18795
18575
  return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18796
18576
  }
18797
18577
  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
- }
18578
+ const end = props.items.length;
18579
+ let middle = 0;
18580
+ let middleOffset = 0;
18581
+ while (middleOffset < scrollTop && middle < end) {
18582
+ middleOffset += sizes[middle++] || itemHeight.value;
18810
18583
  }
18811
- return start;
18584
+ return middle - 1;
18812
18585
  }
18813
18586
  let lastScrollTop = 0;
18814
18587
  function handleScroll() {
@@ -18830,8 +18603,12 @@ const VVirtualScroll = genericComponent()({
18830
18603
  const offset = calculateOffset(index);
18831
18604
  rootEl.value.scrollTop = offset;
18832
18605
  }
18606
+ const items = computed(() => props.items.map((item, index) => ({
18607
+ raw: item,
18608
+ index
18609
+ })));
18833
18610
  const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18834
- const computedItems = computed(() => props.items.slice(first.value, last.value));
18611
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18835
18612
  const paddingTop = computed(() => calculateOffset(first.value));
18836
18613
  const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18837
18614
  const {
@@ -18856,23 +18633,23 @@ const VVirtualScroll = genericComponent()({
18856
18633
  });
18857
18634
  useRender(() => createVNode("div", {
18858
18635
  "ref": rootEl,
18859
- "class": "v-virtual-scroll",
18636
+ "class": ['v-virtual-scroll', props.class],
18860
18637
  "onScroll": handleScroll,
18861
- "style": dimensionStyles.value
18638
+ "style": [dimensionStyles.value, props.style]
18862
18639
  }, [createVNode("div", {
18863
18640
  "class": "v-virtual-scroll__container",
18864
18641
  "style": {
18865
18642
  paddingTop: convertToUnit(paddingTop.value),
18866
18643
  paddingBottom: convertToUnit(paddingBottom.value)
18867
18644
  }
18868
- }, [computedItems.value.map((item, index) => createVNode(VVirtualScrollItem, {
18869
- "key": index,
18645
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18646
+ "key": item.index,
18870
18647
  "dynamicHeight": !props.itemHeight,
18871
- "onUpdate:height": height => handleItemResize(index + first.value, height)
18648
+ "onUpdate:height": height => handleItemResize(item.index, height)
18872
18649
  }, {
18873
18650
  default: () => [slots.default?.({
18874
- item,
18875
- index: index + first.value
18651
+ item: item.raw,
18652
+ index: item.index
18876
18653
  })]
18877
18654
  }))])]));
18878
18655
  return {
@@ -19306,6 +19083,17 @@ const VDataTableHeaders = genericComponent()({
19306
19083
  backgroundColorClasses,
19307
19084
  backgroundColorStyles
19308
19085
  } = useBackgroundColor(props, 'color');
19086
+ const slotProps = computed(() => ({
19087
+ headers: headers.value,
19088
+ columns: columns.value,
19089
+ toggleSort,
19090
+ sortBy: sortBy.value,
19091
+ someSelected: someSelected.value,
19092
+ allSelected: allSelected.value,
19093
+ selectAll,
19094
+ getSortIcon,
19095
+ getFixedStyles
19096
+ }));
19309
19097
  const VDataTableHeaderCell = _ref2 => {
19310
19098
  let {
19311
19099
  column,
@@ -19333,14 +19121,14 @@ const VDataTableHeaders = genericComponent()({
19333
19121
  "noPadding": noPadding
19334
19122
  }, {
19335
19123
  default: () => {
19336
- const slotName = `column.${column.key}`;
19337
- const slotProps = {
19124
+ const columnSlotName = `column.${column.key}`;
19125
+ const columnSlotProps = {
19338
19126
  column,
19339
19127
  selectAll
19340
19128
  };
19341
- if (slots[slotName]) return slots[slotName](slotProps);
19129
+ if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
19342
19130
  if (column.key === 'data-table-select') {
19343
- return slots['column.data-table-select']?.(slotProps) ?? createVNode(VCheckboxBtn, {
19131
+ return slots['column.data-table-select']?.(columnSlotProps) ?? createVNode(VCheckboxBtn, {
19344
19132
  "modelValue": allSelected.value,
19345
19133
  "indeterminate": someSelected.value && !allSelected.value,
19346
19134
  "onUpdate:modelValue": selectAll
@@ -19360,22 +19148,24 @@ const VDataTableHeaders = genericComponent()({
19360
19148
  }
19361
19149
  });
19362
19150
  };
19363
- useRender(() => createVNode(Fragment, null, [headers.value.map((row, y) => createVNode("tr", null, [row.map((column, x) => createVNode(VDataTableHeaderCell, {
19364
- "column": column,
19365
- "x": x,
19366
- "y": y
19367
- }, null))])), props.loading && createVNode("tr", {
19368
- "class": "v-data-table__progress"
19369
- }, [createVNode("th", {
19370
- "colspan": columns.value.length
19371
- }, [createVNode(LoaderSlot, {
19372
- "name": "v-data-table-headers",
19373
- "active": true,
19374
- "color": typeof props.loading === 'boolean' ? undefined : props.loading,
19375
- "indeterminate": true
19376
- }, {
19377
- default: slots.loader
19378
- })])])]));
19151
+ useRender(() => {
19152
+ return createVNode(Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => createVNode("tr", null, [row.map((column, x) => createVNode(VDataTableHeaderCell, {
19153
+ "column": column,
19154
+ "x": x,
19155
+ "y": y
19156
+ }, null))])), props.loading && createVNode("tr", {
19157
+ "class": "v-data-table__progress"
19158
+ }, [createVNode("th", {
19159
+ "colspan": columns.value.length
19160
+ }, [createVNode(LoaderSlot, {
19161
+ "name": "v-data-table-headers",
19162
+ "active": true,
19163
+ "color": typeof props.loading === 'boolean' ? undefined : props.loading,
19164
+ "indeterminate": true
19165
+ }, {
19166
+ default: slots.loader
19167
+ })])])]);
19168
+ });
19379
19169
  }
19380
19170
  });
19381
19171
 
@@ -19674,9 +19464,7 @@ const VDataTableRow = defineComponent({
19674
19464
  'v-data-table__tr--clickable': !!props.onClick
19675
19465
  }],
19676
19466
  "onClick": props.onClick
19677
- }, [!columns.value.length && createVNode(VDataTableColumn, {
19678
- "key": "no-data"
19679
- }, slots), props.item && columns.value.map((column, i) => createVNode(VDataTableColumn, {
19467
+ }, [props.item && columns.value.map((column, i) => createVNode(VDataTableColumn, {
19680
19468
  "align": column.align,
19681
19469
  "fixed": column.fixed,
19682
19470
  "fixedOffset": column.fixedOffset,
@@ -19766,13 +19554,13 @@ const VDataTableRows = genericComponent()({
19766
19554
  useRender(() => {
19767
19555
  if (props.loading && slots.loading) {
19768
19556
  return createVNode("tr", {
19769
- "class": "v-data-table-rows-no-data",
19557
+ "class": "v-data-table-rows-loading",
19770
19558
  "key": "loading"
19771
19559
  }, [createVNode("td", {
19772
19560
  "colspan": columns.value.length
19773
19561
  }, [slots.loading()])]);
19774
19562
  }
19775
- if (!props.loading && !props.items.length && !props.hideNoData && slots['no-data']) {
19563
+ if (!props.loading && !props.items.length && !props.hideNoData) {
19776
19564
  return createVNode("tr", {
19777
19565
  "class": "v-data-table-rows-no-data",
19778
19566
  "key": "no-data"
@@ -20251,7 +20039,7 @@ const VDataTable = genericComponent()({
20251
20039
  top: slots.top,
20252
20040
  default: slots.default ?? (() => createVNode(Fragment, null, [slots.colgroup?.({
20253
20041
  columns
20254
- }), createVNode("thead", null, [slots.headers ? slots.headers() : createVNode(VDataTableHeaders, {
20042
+ }), createVNode("thead", null, [createVNode(VDataTableHeaders, {
20255
20043
  "sticky": props.fixedHeader,
20256
20044
  "multiSort": props.multiSort
20257
20045
  }, slots)]), slots.thead?.(), createVNode("tbody", null, [slots.body ? slots.body() : createVNode(VDataTableRows, {
@@ -20617,7 +20405,7 @@ const VDataTableServer = genericComponent()({
20617
20405
  }), createVNode("thead", {
20618
20406
  "class": "v-data-table__thead",
20619
20407
  "role": "rowgroup"
20620
- }, [slots.headers ? slots.headers() : createVNode(VDataTableHeaders, {
20408
+ }, [createVNode(VDataTableHeaders, {
20621
20409
  "sticky": props.fixedHeader,
20622
20410
  "loading": props.loading,
20623
20411
  "color": props.color
@@ -20637,6 +20425,211 @@ const VDataTableServer = genericComponent()({
20637
20425
 
20638
20426
  // Types
20639
20427
 
20428
+ const VInfiniteScrollIntersect = defineComponent({
20429
+ name: 'VInfiniteScrollIntersect',
20430
+ props: {
20431
+ side: {
20432
+ type: String,
20433
+ required: true
20434
+ },
20435
+ rootRef: null,
20436
+ rootMargin: String
20437
+ },
20438
+ emits: {
20439
+ intersect: side => true
20440
+ },
20441
+ setup(props, _ref) {
20442
+ let {
20443
+ emit
20444
+ } = _ref;
20445
+ const {
20446
+ intersectionRef,
20447
+ isIntersecting
20448
+ } = useIntersectionObserver(entries => {}, props.rootMargin ? {
20449
+ root: props.rootRef,
20450
+ rootMargin: props.rootMargin
20451
+ } : undefined);
20452
+ watch(isIntersecting, async val => {
20453
+ if (val) emit('intersect', props.side);
20454
+ });
20455
+ useRender(() => createVNode("div", {
20456
+ "class": "v-infinite-scroll-intersect",
20457
+ "ref": intersectionRef
20458
+ }, [createTextVNode("\xA0")]));
20459
+ return {};
20460
+ }
20461
+ });
20462
+ const VInfiniteScroll = genericComponent()({
20463
+ name: 'VInfiniteScroll',
20464
+ props: {
20465
+ color: String,
20466
+ direction: {
20467
+ type: String,
20468
+ default: 'vertical',
20469
+ validator: v => ['vertical', 'horizontal'].includes(v)
20470
+ },
20471
+ side: {
20472
+ type: String,
20473
+ default: 'end',
20474
+ validator: v => ['start', 'end', 'both'].includes(v)
20475
+ },
20476
+ mode: {
20477
+ type: String,
20478
+ default: 'intersect',
20479
+ validator: v => ['intersect', 'manual'].includes(v)
20480
+ },
20481
+ margin: [Number, String],
20482
+ loadMoreText: {
20483
+ type: String,
20484
+ default: '$vuetify.infiniteScroll.loadMore'
20485
+ },
20486
+ emptyText: {
20487
+ type: String,
20488
+ default: '$vuetify.infiniteScroll.empty'
20489
+ },
20490
+ ...makeDimensionProps()
20491
+ },
20492
+ emits: {
20493
+ load: options => true
20494
+ },
20495
+ setup(props, _ref2) {
20496
+ let {
20497
+ slots,
20498
+ emit
20499
+ } = _ref2;
20500
+ const rootEl = ref();
20501
+ const startStatus = ref('ok');
20502
+ const endStatus = ref('ok');
20503
+ const margin = computed(() => convertToUnit(props.margin));
20504
+ function setScrollAmount(amount) {
20505
+ if (!rootEl.value) return;
20506
+ const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
20507
+ rootEl.value[property] = amount;
20508
+ }
20509
+ function getScrollAmount() {
20510
+ if (!rootEl.value) return 0;
20511
+ const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
20512
+ return rootEl.value[property];
20513
+ }
20514
+ function getScrollSize() {
20515
+ if (!rootEl.value) return 0;
20516
+ const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';
20517
+ return rootEl.value[property];
20518
+ }
20519
+ function getContainerSize() {
20520
+ if (!rootEl.value) return 0;
20521
+ const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';
20522
+ return rootEl.value[property];
20523
+ }
20524
+ onMounted(() => {
20525
+ if (!rootEl.value) return;
20526
+ if (props.side === 'start') {
20527
+ setScrollAmount(getScrollSize());
20528
+ } else if (props.side === 'both') {
20529
+ setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);
20530
+ }
20531
+ });
20532
+ function setStatus(side, status) {
20533
+ if (side === 'start') {
20534
+ startStatus.value = status;
20535
+ } else if (side === 'end') {
20536
+ endStatus.value = status;
20537
+ }
20538
+ }
20539
+ function getStatus(side) {
20540
+ return side === 'start' ? startStatus.value : endStatus.value;
20541
+ }
20542
+ let previousScrollSize = 0;
20543
+ function handleIntersect(side) {
20544
+ const status = getStatus(side);
20545
+ if (!rootEl.value || status === 'loading') return;
20546
+ previousScrollSize = getScrollSize();
20547
+ setStatus(side, 'loading');
20548
+ function done(status) {
20549
+ setStatus(side, status);
20550
+ nextTick(() => {
20551
+ if (status === 'ok' && side === 'start') {
20552
+ setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
20553
+ }
20554
+ });
20555
+ }
20556
+ emit('load', {
20557
+ side,
20558
+ done
20559
+ });
20560
+ }
20561
+ const {
20562
+ t
20563
+ } = useLocale();
20564
+ function renderSide(side, status) {
20565
+ if (props.side !== side && props.side !== 'both') return;
20566
+ const onClick = () => handleIntersect(side);
20567
+ const slotProps = {
20568
+ side,
20569
+ props: {
20570
+ onClick,
20571
+ color: props.color
20572
+ }
20573
+ };
20574
+ if (status === 'error') return slots.error?.(slotProps);
20575
+ if (status === 'empty') return slots.empty?.(slotProps) ?? createVNode("div", null, [t(props.emptyText)]);
20576
+ if (props.mode === 'manual') {
20577
+ if (status === 'loading') {
20578
+ return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
20579
+ "indeterminate": true,
20580
+ "color": props.color
20581
+ }, null);
20582
+ }
20583
+ return slots['load-more']?.(slotProps) ?? createVNode(VBtn, {
20584
+ "variant": "outlined",
20585
+ "color": props.color,
20586
+ "onClick": onClick
20587
+ }, {
20588
+ default: () => [t(props.loadMoreText)]
20589
+ });
20590
+ }
20591
+ return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
20592
+ "indeterminate": true,
20593
+ "color": props.color
20594
+ }, null);
20595
+ }
20596
+ const {
20597
+ dimensionStyles
20598
+ } = useDimension(props);
20599
+ useRender(() => {
20600
+ const hasStartIntersect = props.side === 'start' || props.side === 'both';
20601
+ const hasEndIntersect = props.side === 'end' || props.side === 'both';
20602
+ const intersectMode = props.mode === 'intersect';
20603
+ return createVNode("div", {
20604
+ "ref": rootEl,
20605
+ "class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
20606
+ 'v-infinite-scroll--start': hasStartIntersect,
20607
+ 'v-infinite-scroll--end': hasEndIntersect
20608
+ }],
20609
+ "style": dimensionStyles.value
20610
+ }, [createVNode("div", {
20611
+ "class": "v-infinite-scroll__side"
20612
+ }, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
20613
+ "key": "start",
20614
+ "side": "start",
20615
+ "onIntersect": handleIntersect,
20616
+ "rootRef": rootEl.value,
20617
+ "rootMargin": margin.value
20618
+ }, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
20619
+ "key": "end",
20620
+ "side": "end",
20621
+ "onIntersect": handleIntersect,
20622
+ "rootRef": rootEl.value,
20623
+ "rootMargin": margin.value
20624
+ }, null), createVNode("div", {
20625
+ "class": "v-infinite-scroll__side"
20626
+ }, [renderSide('end', endStatus.value)])]);
20627
+ });
20628
+ }
20629
+ });
20630
+
20631
+ // Types
20632
+
20640
20633
  const rootTypes = {
20641
20634
  actions: 'button@2',
20642
20635
  article: 'heading, paragraph',
@@ -20836,6 +20829,7 @@ var components = /*#__PURE__*/Object.freeze({
20836
20829
  VHover: VHover,
20837
20830
  VIcon: VIcon,
20838
20831
  VImg: VImg,
20832
+ VInfiniteScroll: VInfiniteScroll,
20839
20833
  VInput: VInput,
20840
20834
  VItem: VItem,
20841
20835
  VItemGroup: VItemGroup,
@@ -20913,130 +20907,542 @@ var components = /*#__PURE__*/Object.freeze({
20913
20907
 
20914
20908
  // Types
20915
20909
 
20916
- function mounted$2(el, binding) {
20917
- const modifiers = binding.modifiers || {};
20918
- const value = binding.value;
20919
- const {
20920
- once,
20921
- immediate,
20922
- ...modifierKeys
20923
- } = modifiers;
20924
- const defaultValue = !Object.keys(modifierKeys).length;
20925
- const {
20926
- handler,
20927
- options
20928
- } = typeof value === 'object' ? value : {
20929
- handler: value,
20930
- options: {
20931
- attributes: modifierKeys?.attr ?? defaultValue,
20932
- characterData: modifierKeys?.char ?? defaultValue,
20933
- childList: modifierKeys?.child ?? defaultValue,
20934
- subtree: modifierKeys?.sub ?? defaultValue
20910
+ function mounted$2(el, binding) {
20911
+ const modifiers = binding.modifiers || {};
20912
+ const value = binding.value;
20913
+ const {
20914
+ once,
20915
+ immediate,
20916
+ ...modifierKeys
20917
+ } = modifiers;
20918
+ const defaultValue = !Object.keys(modifierKeys).length;
20919
+ const {
20920
+ handler,
20921
+ options
20922
+ } = typeof value === 'object' ? value : {
20923
+ handler: value,
20924
+ options: {
20925
+ attributes: modifierKeys?.attr ?? defaultValue,
20926
+ characterData: modifierKeys?.char ?? defaultValue,
20927
+ childList: modifierKeys?.child ?? defaultValue,
20928
+ subtree: modifierKeys?.sub ?? defaultValue
20929
+ }
20930
+ };
20931
+ const observer = new MutationObserver(function () {
20932
+ let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
20933
+ let observer = arguments.length > 1 ? arguments[1] : undefined;
20934
+ handler?.(mutations, observer);
20935
+ if (once) unmounted$2(el, binding);
20936
+ });
20937
+ if (immediate) handler?.([], observer);
20938
+ el._mutate = Object(el._mutate);
20939
+ el._mutate[binding.instance.$.uid] = {
20940
+ observer
20941
+ };
20942
+ observer.observe(el, options);
20943
+ }
20944
+ function unmounted$2(el, binding) {
20945
+ if (!el._mutate?.[binding.instance.$.uid]) return;
20946
+ el._mutate[binding.instance.$.uid].observer.disconnect();
20947
+ delete el._mutate[binding.instance.$.uid];
20948
+ }
20949
+ const Mutate = {
20950
+ mounted: mounted$2,
20951
+ unmounted: unmounted$2
20952
+ };
20953
+
20954
+ function mounted$1(el, binding) {
20955
+ const handler = binding.value;
20956
+ const options = {
20957
+ passive: !binding.modifiers?.active
20958
+ };
20959
+ window.addEventListener('resize', handler, options);
20960
+ el._onResize = Object(el._onResize);
20961
+ el._onResize[binding.instance.$.uid] = {
20962
+ handler,
20963
+ options
20964
+ };
20965
+ if (!binding.modifiers?.quiet) {
20966
+ handler();
20967
+ }
20968
+ }
20969
+ function unmounted$1(el, binding) {
20970
+ if (!el._onResize?.[binding.instance.$.uid]) return;
20971
+ const {
20972
+ handler,
20973
+ options
20974
+ } = el._onResize[binding.instance.$.uid];
20975
+ window.removeEventListener('resize', handler, options);
20976
+ delete el._onResize[binding.instance.$.uid];
20977
+ }
20978
+ const Resize = {
20979
+ mounted: mounted$1,
20980
+ unmounted: unmounted$1
20981
+ };
20982
+
20983
+ function mounted(el, binding) {
20984
+ const {
20985
+ self = false
20986
+ } = binding.modifiers ?? {};
20987
+ const value = binding.value;
20988
+ const options = typeof value === 'object' && value.options || {
20989
+ passive: true
20990
+ };
20991
+ const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
20992
+ const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
20993
+ if (!target) return;
20994
+ target.addEventListener('scroll', handler, options);
20995
+ el._onScroll = Object(el._onScroll);
20996
+ el._onScroll[binding.instance.$.uid] = {
20997
+ handler,
20998
+ options,
20999
+ // Don't reference self
21000
+ target: self ? undefined : target
21001
+ };
21002
+ }
21003
+ function unmounted(el, binding) {
21004
+ if (!el._onScroll?.[binding.instance.$.uid]) return;
21005
+ const {
21006
+ handler,
21007
+ options,
21008
+ target = el
21009
+ } = el._onScroll[binding.instance.$.uid];
21010
+ target.removeEventListener('scroll', handler, options);
21011
+ delete el._onScroll[binding.instance.$.uid];
21012
+ }
21013
+ function updated(el, binding) {
21014
+ if (binding.value === binding.oldValue) return;
21015
+ unmounted(el, binding);
21016
+ mounted(el, binding);
21017
+ }
21018
+ const Scroll = {
21019
+ mounted,
21020
+ unmounted,
21021
+ updated
21022
+ };
21023
+
21024
+ var directives = /*#__PURE__*/Object.freeze({
21025
+ __proto__: null,
21026
+ ClickOutside: ClickOutside,
21027
+ Intersect: Intersect,
21028
+ Mutate: Mutate,
21029
+ Resize: Resize,
21030
+ Ripple: Ripple,
21031
+ Scroll: Scroll,
21032
+ Touch: Touch
21033
+ });
21034
+
21035
+ // Utilities
21036
+
21037
+ // Types
21038
+
21039
+ function getWeekArray(date) {
21040
+ let currentWeek = [];
21041
+ const weeks = [];
21042
+ const firstDayOfMonth = startOfMonth(date);
21043
+ const lastDayOfMonth = endOfMonth(date);
21044
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
21045
+ currentWeek.push(null);
21046
+ }
21047
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
21048
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
21049
+
21050
+ // Add the day to the current week
21051
+ currentWeek.push(day);
21052
+
21053
+ // If the current week has 7 days, add it to the weeks array and start a new week
21054
+ if (currentWeek.length === 7) {
21055
+ weeks.push(currentWeek);
21056
+ currentWeek = [];
20935
21057
  }
20936
- };
20937
- const observer = new MutationObserver(function () {
20938
- let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
20939
- let observer = arguments.length > 1 ? arguments[1] : undefined;
20940
- handler?.(mutations, observer);
20941
- if (once) unmounted$2(el, binding);
21058
+ }
21059
+ for (let i = currentWeek.length; i < 7; i++) {
21060
+ currentWeek.push(null);
21061
+ }
21062
+ weeks.push(currentWeek);
21063
+ return weeks;
21064
+ }
21065
+ function startOfMonth(date) {
21066
+ return new Date(date.getFullYear(), date.getMonth(), 1);
21067
+ }
21068
+ function endOfMonth(date) {
21069
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
21070
+ }
21071
+ function date(value) {
21072
+ if (value == null) return null;
21073
+ if (value instanceof Date) return value;
21074
+ if (typeof value === 'string') {
21075
+ const parsed = Date.parse(value);
21076
+ if (!isNaN(parsed)) return new Date(parsed);
21077
+ }
21078
+ return null;
21079
+ }
21080
+ const firstDay = {
21081
+ '001': 1,
21082
+ AD: 1,
21083
+ AE: 6,
21084
+ AF: 6,
21085
+ AG: 0,
21086
+ AI: 1,
21087
+ AL: 1,
21088
+ AM: 1,
21089
+ AN: 1,
21090
+ AR: 1,
21091
+ AS: 0,
21092
+ AT: 1,
21093
+ AU: 0,
21094
+ AX: 1,
21095
+ AZ: 1,
21096
+ BA: 1,
21097
+ BD: 0,
21098
+ BE: 1,
21099
+ BG: 1,
21100
+ BH: 6,
21101
+ BM: 1,
21102
+ BN: 1,
21103
+ BR: 0,
21104
+ BS: 0,
21105
+ BT: 0,
21106
+ BW: 0,
21107
+ BY: 1,
21108
+ BZ: 0,
21109
+ CA: 0,
21110
+ CH: 1,
21111
+ CL: 1,
21112
+ CM: 1,
21113
+ CN: 0,
21114
+ CO: 0,
21115
+ CR: 1,
21116
+ CY: 1,
21117
+ CZ: 1,
21118
+ DE: 1,
21119
+ DJ: 6,
21120
+ DK: 1,
21121
+ DM: 0,
21122
+ DO: 0,
21123
+ DZ: 6,
21124
+ EC: 1,
21125
+ EE: 1,
21126
+ EG: 6,
21127
+ ES: 1,
21128
+ ET: 0,
21129
+ FI: 1,
21130
+ FJ: 1,
21131
+ FO: 1,
21132
+ FR: 1,
21133
+ GB: 1,
21134
+ 'GB-alt-variant': 0,
21135
+ GE: 1,
21136
+ GF: 1,
21137
+ GP: 1,
21138
+ GR: 1,
21139
+ GT: 0,
21140
+ GU: 0,
21141
+ HK: 0,
21142
+ HN: 0,
21143
+ HR: 1,
21144
+ HU: 1,
21145
+ ID: 0,
21146
+ IE: 1,
21147
+ IL: 0,
21148
+ IN: 0,
21149
+ IQ: 6,
21150
+ IR: 6,
21151
+ IS: 1,
21152
+ IT: 1,
21153
+ JM: 0,
21154
+ JO: 6,
21155
+ JP: 0,
21156
+ KE: 0,
21157
+ KG: 1,
21158
+ KH: 0,
21159
+ KR: 0,
21160
+ KW: 6,
21161
+ KZ: 1,
21162
+ LA: 0,
21163
+ LB: 1,
21164
+ LI: 1,
21165
+ LK: 1,
21166
+ LT: 1,
21167
+ LU: 1,
21168
+ LV: 1,
21169
+ LY: 6,
21170
+ MC: 1,
21171
+ MD: 1,
21172
+ ME: 1,
21173
+ MH: 0,
21174
+ MK: 1,
21175
+ MM: 0,
21176
+ MN: 1,
21177
+ MO: 0,
21178
+ MQ: 1,
21179
+ MT: 0,
21180
+ MV: 5,
21181
+ MX: 0,
21182
+ MY: 1,
21183
+ MZ: 0,
21184
+ NI: 0,
21185
+ NL: 1,
21186
+ NO: 1,
21187
+ NP: 0,
21188
+ NZ: 1,
21189
+ OM: 6,
21190
+ PA: 0,
21191
+ PE: 0,
21192
+ PH: 0,
21193
+ PK: 0,
21194
+ PL: 1,
21195
+ PR: 0,
21196
+ PT: 0,
21197
+ PY: 0,
21198
+ QA: 6,
21199
+ RE: 1,
21200
+ RO: 1,
21201
+ RS: 1,
21202
+ RU: 1,
21203
+ SA: 0,
21204
+ SD: 6,
21205
+ SE: 1,
21206
+ SG: 0,
21207
+ SI: 1,
21208
+ SK: 1,
21209
+ SM: 1,
21210
+ SV: 0,
21211
+ SY: 6,
21212
+ TH: 0,
21213
+ TJ: 1,
21214
+ TM: 1,
21215
+ TR: 1,
21216
+ TT: 0,
21217
+ TW: 0,
21218
+ UA: 1,
21219
+ UM: 0,
21220
+ US: 0,
21221
+ UY: 1,
21222
+ UZ: 1,
21223
+ VA: 1,
21224
+ VE: 0,
21225
+ VI: 0,
21226
+ VN: 1,
21227
+ WS: 0,
21228
+ XK: 1,
21229
+ YE: 0,
21230
+ ZA: 0,
21231
+ ZW: 0
21232
+ };
21233
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
21234
+ function getWeekdays(locale) {
21235
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
21236
+ return createRange(7).map(i => {
21237
+ const weekday = new Date(sundayJanuarySecond2000);
21238
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
21239
+ return new Intl.DateTimeFormat(locale, {
21240
+ weekday: 'long'
21241
+ }).format(weekday);
20942
21242
  });
20943
- if (immediate) handler?.([], observer);
20944
- el._mutate = Object(el._mutate);
20945
- el._mutate[binding.instance.$.uid] = {
20946
- observer
20947
- };
20948
- observer.observe(el, options);
20949
21243
  }
20950
- function unmounted$2(el, binding) {
20951
- if (!el._mutate?.[binding.instance.$.uid]) return;
20952
- el._mutate[binding.instance.$.uid].observer.disconnect();
20953
- delete el._mutate[binding.instance.$.uid];
21244
+ function format(value, formatString, locale) {
21245
+ const date = new Date(value);
21246
+ let options = {};
21247
+ switch (formatString) {
21248
+ case 'fullDateWithWeekday':
21249
+ options = {
21250
+ weekday: 'long',
21251
+ day: 'numeric',
21252
+ month: 'long',
21253
+ year: 'numeric'
21254
+ };
21255
+ break;
21256
+ case 'normalDateWithWeekday':
21257
+ options = {
21258
+ weekday: 'short',
21259
+ day: 'numeric',
21260
+ month: 'short',
21261
+ year: 'numeric'
21262
+ };
21263
+ break;
21264
+ case 'keyboardDate':
21265
+ options = {};
21266
+ break;
21267
+ case 'monthAndDate':
21268
+ options = {
21269
+ month: 'long',
21270
+ day: 'numeric'
21271
+ };
21272
+ break;
21273
+ case 'monthAndYear':
21274
+ options = {
21275
+ month: 'long',
21276
+ year: 'numeric'
21277
+ };
21278
+ break;
21279
+ default:
21280
+ options = {
21281
+ timeZone: 'UTC',
21282
+ timeZoneName: 'short'
21283
+ };
21284
+ }
21285
+ return new Intl.DateTimeFormat(locale, options).format(date);
21286
+ }
21287
+ function addDays(date, amount) {
21288
+ const d = new Date(date);
21289
+ d.setDate(d.getDate() + amount);
21290
+ return d;
21291
+ }
21292
+ function addMonths(date, amount) {
21293
+ const d = new Date(date);
21294
+ d.setMonth(d.getMonth() + amount);
21295
+ return d;
21296
+ }
21297
+ function getYear(date) {
21298
+ return date.getFullYear();
21299
+ }
21300
+ function getMonth(date) {
21301
+ return date.getMonth();
21302
+ }
21303
+ function startOfYear(date) {
21304
+ return new Date(date.getFullYear(), 0, 1);
21305
+ }
21306
+ function endOfYear(date) {
21307
+ return new Date(date.getFullYear(), 11, 31);
21308
+ }
21309
+ function getMondayOfFirstWeekOfYear(year) {
21310
+ return new Date(year, 0, 1);
20954
21311
  }
20955
- const Mutate = {
20956
- mounted: mounted$2,
20957
- unmounted: unmounted$2
20958
- };
20959
21312
 
20960
- function mounted$1(el, binding) {
20961
- const handler = binding.value;
20962
- const options = {
20963
- passive: !binding.modifiers?.active
20964
- };
20965
- window.addEventListener('resize', handler, options);
20966
- el._onResize = Object(el._onResize);
20967
- el._onResize[binding.instance.$.uid] = {
20968
- handler,
20969
- options
20970
- };
20971
- if (!binding.modifiers?.quiet) {
20972
- handler();
21313
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
21314
+ function getWeek(date) {
21315
+ let year = date.getFullYear();
21316
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
21317
+ if (date < d1w1) {
21318
+ year = year - 1;
21319
+ d1w1 = getMondayOfFirstWeekOfYear(year);
21320
+ } else {
21321
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
21322
+ if (date >= tv) {
21323
+ year = year + 1;
21324
+ d1w1 = tv;
21325
+ }
20973
21326
  }
21327
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
21328
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
21329
+ return Math.floor(diffDays / 7) + 1;
20974
21330
  }
20975
- function unmounted$1(el, binding) {
20976
- if (!el._onResize?.[binding.instance.$.uid]) return;
20977
- const {
20978
- handler,
20979
- options
20980
- } = el._onResize[binding.instance.$.uid];
20981
- window.removeEventListener('resize', handler, options);
20982
- delete el._onResize[binding.instance.$.uid];
21331
+ function isWithinRange(date, range) {
21332
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
20983
21333
  }
20984
- const Resize = {
20985
- mounted: mounted$1,
20986
- unmounted: unmounted$1
20987
- };
20988
-
20989
- function mounted(el, binding) {
20990
- const {
20991
- self = false
20992
- } = binding.modifiers ?? {};
20993
- const value = binding.value;
20994
- const options = typeof value === 'object' && value.options || {
20995
- passive: true
20996
- };
20997
- const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
20998
- const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
20999
- if (!target) return;
21000
- target.addEventListener('scroll', handler, options);
21001
- el._onScroll = Object(el._onScroll);
21002
- el._onScroll[binding.instance.$.uid] = {
21003
- handler,
21004
- options,
21005
- // Don't reference self
21006
- target: self ? undefined : target
21007
- };
21334
+ function isValid(date) {
21335
+ const d = new Date(date);
21336
+ return d instanceof Date && !isNaN(d.getTime());
21008
21337
  }
21009
- function unmounted(el, binding) {
21010
- if (!el._onScroll?.[binding.instance.$.uid]) return;
21011
- const {
21012
- handler,
21013
- options,
21014
- target = el
21015
- } = el._onScroll[binding.instance.$.uid];
21016
- target.removeEventListener('scroll', handler, options);
21017
- delete el._onScroll[binding.instance.$.uid];
21338
+ function isAfter(date, comparing) {
21339
+ return date.getTime() > comparing.getTime();
21018
21340
  }
21019
- function updated(el, binding) {
21020
- if (binding.value === binding.oldValue) return;
21021
- unmounted(el, binding);
21022
- mounted(el, binding);
21341
+ function isBefore(date, comparing) {
21342
+ return date.getTime() < comparing.getTime();
21343
+ }
21344
+ function isEqual(date, comparing) {
21345
+ return date.getTime() === comparing.getTime();
21346
+ }
21347
+ function isSameDay(date, comparing) {
21348
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
21349
+ }
21350
+ function isSameMonth(date, comparing) {
21351
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
21352
+ }
21353
+ function getDiff(date, comparing, unit) {
21354
+ const d = new Date(date);
21355
+ const c = new Date(comparing);
21356
+ if (unit === 'month') {
21357
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
21358
+ }
21359
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
21360
+ }
21361
+ function setYear(date, year) {
21362
+ const d = new Date(date);
21363
+ d.setFullYear(year);
21364
+ return d;
21365
+ }
21366
+ class VuetifyDateAdapter {
21367
+ constructor() {
21368
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
21369
+ this.locale = locale;
21370
+ }
21371
+ date(value) {
21372
+ return date(value);
21373
+ }
21374
+ addDays(date, amount) {
21375
+ return addDays(date, amount);
21376
+ }
21377
+ addMonths(date, amount) {
21378
+ return addMonths(date, amount);
21379
+ }
21380
+ getWeekArray(date) {
21381
+ return getWeekArray(date);
21382
+ }
21383
+ startOfMonth(date) {
21384
+ return startOfMonth(date);
21385
+ }
21386
+ endOfMonth(date) {
21387
+ return endOfMonth(date);
21388
+ }
21389
+ format(date, formatString) {
21390
+ return format(date, formatString, this.locale);
21391
+ }
21392
+ isEqual(date, comparing) {
21393
+ return isEqual(date, comparing);
21394
+ }
21395
+ isValid(date) {
21396
+ return isValid(date);
21397
+ }
21398
+ isWithinRange(date, range) {
21399
+ return isWithinRange(date, range);
21400
+ }
21401
+ isAfter(date, comparing) {
21402
+ return isAfter(date, comparing);
21403
+ }
21404
+ isSameDay(date, comparing) {
21405
+ return isSameDay(date, comparing);
21406
+ }
21407
+ isSameMonth(date, comparing) {
21408
+ return isSameMonth(date, comparing);
21409
+ }
21410
+ setYear(date, year) {
21411
+ return setYear(date, year);
21412
+ }
21413
+ getDiff(date, comparing, unit) {
21414
+ return getDiff(date, comparing, unit);
21415
+ }
21416
+ getWeek(date) {
21417
+ return getWeek(date);
21418
+ }
21419
+ getWeekdays() {
21420
+ return getWeekdays(this.locale);
21421
+ }
21422
+ getYear(date) {
21423
+ return getYear(date);
21424
+ }
21425
+ getMonth(date) {
21426
+ return getMonth(date);
21427
+ }
21428
+ startOfYear(date) {
21429
+ return startOfYear(date);
21430
+ }
21431
+ endOfYear(date) {
21432
+ return endOfYear(date);
21433
+ }
21023
21434
  }
21024
- const Scroll = {
21025
- mounted,
21026
- unmounted,
21027
- updated
21028
- };
21029
21435
 
21030
- var directives = /*#__PURE__*/Object.freeze({
21031
- __proto__: null,
21032
- ClickOutside: ClickOutside,
21033
- Intersect: Intersect,
21034
- Mutate: Mutate,
21035
- Resize: Resize,
21036
- Ripple: Ripple,
21037
- Scroll: Scroll,
21038
- Touch: Touch
21039
- });
21436
+ // Composables
21437
+
21438
+ // Types
21439
+
21440
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
21441
+ function createDate(options) {
21442
+ return options ?? {
21443
+ adapter: VuetifyDateAdapter
21444
+ };
21445
+ }
21040
21446
 
21041
21447
  // Composables
21042
21448
  function createVuetify$1() {
@@ -21123,7 +21529,7 @@ function createVuetify$1() {
21123
21529
  date
21124
21530
  };
21125
21531
  }
21126
- const version$1 = "4.0.0-dev-20230422.0";
21532
+ const version$1 = "4.0.0-dev-20230427.0";
21127
21533
  createVuetify$1.version = version$1;
21128
21534
 
21129
21535
  // Vue's inject() can only be used in setup
@@ -21135,7 +21541,7 @@ function inject(key) {
21135
21541
  }
21136
21542
  }
21137
21543
 
21138
- const version = "4.0.0-dev-20230422.0";
21544
+ const version = "4.0.0-dev-20230427.0";
21139
21545
 
21140
21546
  const createVuetify = function () {
21141
21547
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -21146,5 +21552,5 @@ const createVuetify = function () {
21146
21552
  });
21147
21553
  };
21148
21554
 
21149
- export { components, createVuetify, directives, useDate, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
21555
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
21150
21556
  //# sourceMappingURL=vuetify-labs.esm.js.map