@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 } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, shallowRef, inject as inject$1, unref, provide, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,11 +167,11 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
- function pick(obj, paths) {
170
+ function pick(obj, paths, exclude) {
171
171
  const found = Object.create(null);
172
172
  const rest = Object.create(null);
173
173
  for (const key in obj) {
174
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key)) {
174
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
175
175
  found[key] = obj[key];
176
176
  } else {
177
177
  rest[key] = obj[key];
@@ -356,6 +356,32 @@ function callEvent(handler) {
356
356
  handler(...args);
357
357
  }
358
358
  }
359
+ function focusableChildren(el) {
360
+ const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"]):not([disabled])`).join(', ');
361
+ return [...el.querySelectorAll(targets)];
362
+ }
363
+ function focusChild(el, location) {
364
+ const focusable = focusableChildren(el);
365
+ const idx = focusable.indexOf(document.activeElement);
366
+ if (!location) {
367
+ if (!el.contains(document.activeElement)) {
368
+ focusable[0]?.focus();
369
+ }
370
+ } else if (location === 'first') {
371
+ focusable[0]?.focus();
372
+ } else if (location === 'last') {
373
+ focusable.at(-1)?.focus();
374
+ } else {
375
+ let _el;
376
+ let idxx = idx;
377
+ const inc = location === 'next' ? 1 : -1;
378
+ do {
379
+ idxx += inc;
380
+ _el = focusable[idxx];
381
+ } while ((!_el || _el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
382
+ if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
383
+ }
384
+ }
359
385
 
360
386
  const block = ['top', 'bottom'];
361
387
  const inline = ['start', 'end', 'left', 'right'];
@@ -856,44 +882,6 @@ function getContrast(first, second) {
856
882
  return (light + 0.05) / (dark + 0.05);
857
883
  }
858
884
 
859
- // Utilities
860
- function getCurrentInstance(name, message) {
861
- const vm = getCurrentInstance$1();
862
- if (!vm) {
863
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
864
- }
865
- return vm;
866
- }
867
- function getCurrentInstanceName() {
868
- let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
869
- const vm = getCurrentInstance(name).type;
870
- return toKebabCase(vm?.aliasName || vm?.name);
871
- }
872
- let _uid = 0;
873
- let _map = new WeakMap();
874
- function getUid() {
875
- const vm = getCurrentInstance('getUid');
876
- if (_map.has(vm)) return _map.get(vm);else {
877
- const uid = _uid++;
878
- _map.set(vm, uid);
879
- return uid;
880
- }
881
- }
882
- getUid.reset = () => {
883
- _uid = 0;
884
- _map = new WeakMap();
885
- };
886
-
887
- function injectSelf(key) {
888
- const {
889
- provides
890
- } = getCurrentInstance('injectSelf');
891
- if (provides && key in provides) {
892
- // TS doesn't allow symbol as index type
893
- return provides[key];
894
- }
895
- }
896
-
897
885
  /**
898
886
  * Creates a factory function for props definitions.
899
887
  * This is used to define props in a composable then override
@@ -947,17 +935,54 @@ function propsFactory(props, source) {
947
935
 
948
936
  // Types
949
937
 
938
+ // Composables
939
+ const makeComponentProps = propsFactory({
940
+ class: [String, Array],
941
+ style: {
942
+ type: [String, Array, Object],
943
+ default: null
944
+ }
945
+ }, 'component');
946
+
947
+ function useToggleScope(source, fn) {
948
+ let scope;
949
+ function start() {
950
+ scope = effectScope();
951
+ scope.run(() => fn.length ? fn(() => {
952
+ scope?.stop();
953
+ start();
954
+ }) : fn());
955
+ }
956
+ watch(source, active => {
957
+ if (active && !scope) {
958
+ start();
959
+ } else if (!active) {
960
+ scope?.stop();
961
+ scope = undefined;
962
+ }
963
+ }, {
964
+ immediate: true
965
+ });
966
+ onScopeDispose(() => {
967
+ scope?.stop();
968
+ });
969
+ }
970
+
971
+ // Composables
972
+
973
+ // Types
974
+
950
975
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
951
976
  function createDefaults(options) {
952
977
  return ref(options);
953
978
  }
954
- function useDefaults() {
979
+ function injectDefaults() {
955
980
  const defaults = inject$1(DefaultsSymbol);
956
981
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
957
982
  return defaults;
958
983
  }
959
984
  function provideDefaults(defaults, options) {
960
- const injectedDefaults = useDefaults();
985
+ const injectedDefaults = injectDefaults();
961
986
  const providedDefaults = ref(defaults);
962
987
  const newDefaults = computed(() => {
963
988
  const disabled = unref(options?.disabled);
@@ -984,41 +1009,56 @@ function provideDefaults(defaults, options) {
984
1009
  provide(DefaultsSymbol, newDefaults);
985
1010
  return newDefaults;
986
1011
  }
987
-
988
- function useToggleScope(source, fn) {
989
- let scope;
990
- function start() {
991
- scope = effectScope();
992
- scope.run(() => fn.length ? fn(() => {
993
- scope?.stop();
994
- start();
995
- }) : fn());
996
- }
997
- watch(source, active => {
998
- if (active && !scope) {
999
- start();
1000
- } else if (!active) {
1001
- scope?.stop();
1002
- scope = undefined;
1012
+ function propIsDefined(vnode, prop) {
1013
+ return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1014
+ }
1015
+ function useDefaults(props, name) {
1016
+ let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
1017
+ const vm = getCurrentInstance('useDefaults');
1018
+ name = name ?? vm.type.name ?? vm.type.__name;
1019
+ if (!name) {
1020
+ throw new Error('[Vuetify] Could not determine component name');
1021
+ }
1022
+ const componentDefaults = computed(() => defaults.value[props._as ?? name]);
1023
+ const _props = new Proxy(props, {
1024
+ get(target, prop) {
1025
+ const propValue = Reflect.get(target, prop);
1026
+ if (prop === 'class' || prop === 'style') {
1027
+ return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1028
+ } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1029
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1030
+ }
1031
+ return propValue;
1003
1032
  }
1004
- }, {
1005
- immediate: true
1006
1033
  });
1007
- onScopeDispose(() => {
1008
- scope?.stop();
1034
+ const _subcomponentDefaults = shallowRef();
1035
+ watchEffect(() => {
1036
+ if (componentDefaults.value) {
1037
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1038
+ let [key] = _ref;
1039
+ return key.startsWith(key[0].toUpperCase());
1040
+ });
1041
+ if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1042
+ }
1009
1043
  });
1044
+ function provideSubDefaults() {
1045
+ // If subcomponent defaults are provided, override any
1046
+ // subcomponents provided by the component's setup function.
1047
+ // This uses injectSelf so must be done after the original setup to work.
1048
+ useToggleScope(_subcomponentDefaults, () => {
1049
+ provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1050
+ });
1051
+ }
1052
+ return {
1053
+ props: _props,
1054
+ provideSubDefaults
1055
+ };
1010
1056
  }
1011
1057
 
1012
1058
  // Utils
1013
1059
 
1014
1060
  // Types
1015
1061
 
1016
- function propIsDefined(vnode, prop) {
1017
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1018
- }
1019
-
1020
- // No props
1021
-
1022
1062
  // Implementation
1023
1063
  function defineComponent(options) {
1024
1064
  options._setup = options._setup ?? options.setup;
@@ -1030,43 +1070,20 @@ function defineComponent(options) {
1030
1070
  options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1031
1071
  const propKeys = Object.keys(options.props);
1032
1072
  options.filterProps = function filterProps(props) {
1033
- return pick(props, propKeys);
1073
+ return pick(props, propKeys, ['class', 'style']);
1034
1074
  };
1035
1075
  options.props._as = String;
1036
1076
  options.setup = function setup(props, ctx) {
1037
- const defaults = useDefaults();
1077
+ const defaults = injectDefaults();
1038
1078
 
1039
1079
  // Skip props proxy if defaults are not provided
1040
1080
  if (!defaults.value) return options._setup(props, ctx);
1041
- const vm = getCurrentInstance$1();
1042
- const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1043
- const _props = new Proxy(props, {
1044
- get(target, prop) {
1045
- const propValue = Reflect.get(target, prop);
1046
- if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1047
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1048
- }
1049
- return propValue;
1050
- }
1051
- });
1052
- const _subcomponentDefaults = shallowRef();
1053
- watchEffect(() => {
1054
- if (componentDefaults.value) {
1055
- const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1056
- let [key] = _ref;
1057
- return key.startsWith(key[0].toUpperCase());
1058
- });
1059
- if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1060
- }
1061
- });
1081
+ const {
1082
+ props: _props,
1083
+ provideSubDefaults
1084
+ } = useDefaults(props, props._as ?? options.name, defaults);
1062
1085
  const setupBindings = options._setup(_props, ctx);
1063
-
1064
- // If subcomponent defaults are provided, override any
1065
- // subcomponents provided by the component's setup function.
1066
- // This uses injectSelf so must be done after the original setup to work.
1067
- useToggleScope(_subcomponentDefaults, () => {
1068
- provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1069
- });
1086
+ provideSubDefaults();
1070
1087
  return setupBindings;
1071
1088
  };
1072
1089
  }
@@ -1087,15 +1104,19 @@ function createSimpleFunctional(klass) {
1087
1104
  tag: {
1088
1105
  type: String,
1089
1106
  default: tag
1090
- }
1107
+ },
1108
+ ...makeComponentProps()
1091
1109
  },
1092
1110
  setup(props, _ref) {
1093
1111
  let {
1094
1112
  slots
1095
1113
  } = _ref;
1096
- return () => h(props.tag, {
1097
- class: klass
1098
- }, slots.default?.());
1114
+ return () => {
1115
+ return h(props.tag, {
1116
+ class: [klass, props.class],
1117
+ style: props.style
1118
+ }, slots.default?.());
1119
+ };
1099
1120
  }
1100
1121
  });
1101
1122
  }
@@ -1128,6 +1149,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1128
1149
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1129
1150
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1130
1151
 
1152
+ // Utilities
1153
+ function getCurrentInstance(name, message) {
1154
+ const vm = getCurrentInstance$1();
1155
+ if (!vm) {
1156
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1157
+ }
1158
+ return vm;
1159
+ }
1160
+ function getCurrentInstanceName() {
1161
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1162
+ const vm = getCurrentInstance(name).type;
1163
+ return toKebabCase(vm?.aliasName || vm?.name);
1164
+ }
1165
+ let _uid = 0;
1166
+ let _map = new WeakMap();
1167
+ function getUid() {
1168
+ const vm = getCurrentInstance('getUid');
1169
+ if (_map.has(vm)) return _map.get(vm);else {
1170
+ const uid = _uid++;
1171
+ _map.set(vm, uid);
1172
+ return uid;
1173
+ }
1174
+ }
1175
+ getUid.reset = () => {
1176
+ _uid = 0;
1177
+ _map = new WeakMap();
1178
+ };
1179
+
1131
1180
  function getScrollParent(el) {
1132
1181
  while (el) {
1133
1182
  if (hasScrollbar(el)) return el;
@@ -1151,6 +1200,16 @@ function hasScrollbar(el) {
1151
1200
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1152
1201
  }
1153
1202
 
1203
+ function injectSelf(key) {
1204
+ const {
1205
+ provides
1206
+ } = getCurrentInstance('injectSelf');
1207
+ if (provides && key in provides) {
1208
+ // TS doesn't allow symbol as index type
1209
+ return provides[key];
1210
+ }
1211
+ }
1212
+
1154
1213
  function isFixedPosition(el) {
1155
1214
  while (el) {
1156
1215
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1931,7 +1990,11 @@ var en = {
1931
1990
  item: 'Rating {0} of {1}'
1932
1991
  }
1933
1992
  },
1934
- loading: 'Loading...'
1993
+ loading: 'Loading...',
1994
+ infiniteScroll: {
1995
+ loadMore: 'Load more',
1996
+ empty: 'No more'
1997
+ }
1935
1998
  };
1936
1999
 
1937
2000
  const LANG_PREFIX = '$vuetify.';
@@ -2129,6 +2192,7 @@ function useRtl() {
2129
2192
  const VApp = genericComponent()({
2130
2193
  name: 'VApp',
2131
2194
  props: {
2195
+ ...makeComponentProps(),
2132
2196
  ...makeLayoutProps({
2133
2197
  fullHeight: true
2134
2198
  }),
@@ -2151,8 +2215,8 @@ const VApp = genericComponent()({
2151
2215
  } = useRtl();
2152
2216
  useRender(() => createVNode("div", {
2153
2217
  "ref": layoutRef,
2154
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2155
- "style": layoutStyles.value
2218
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2219
+ "style": [layoutStyles.value, props.style]
2156
2220
  }, [createVNode("div", {
2157
2221
  "class": "v-application__wrap"
2158
2222
  }, [slots.default?.()])]));
@@ -2577,6 +2641,7 @@ const VResponsive = genericComponent()({
2577
2641
  props: {
2578
2642
  aspectRatio: [String, Number],
2579
2643
  contentClass: String,
2644
+ ...makeComponentProps(),
2580
2645
  ...makeDimensionProps()
2581
2646
  },
2582
2647
  setup(props, _ref) {
@@ -2590,8 +2655,8 @@ const VResponsive = genericComponent()({
2590
2655
  dimensionStyles
2591
2656
  } = useDimension(props);
2592
2657
  useRender(() => createVNode("div", {
2593
- "class": "v-responsive",
2594
- "style": dimensionStyles.value
2658
+ "class": ['v-responsive', props.class],
2659
+ "style": [dimensionStyles.value, props.style]
2595
2660
  }, [createVNode("div", {
2596
2661
  "class": "v-responsive__sizer",
2597
2662
  "style": aspectStyles.value
@@ -2709,6 +2774,7 @@ const VImg = genericComponent()({
2709
2774
  },
2710
2775
  srcset: String,
2711
2776
  width: [String, Number],
2777
+ ...makeComponentProps(),
2712
2778
  ...makeTransitionProps()
2713
2779
  },
2714
2780
  emits: {
@@ -2896,10 +2962,10 @@ const VImg = genericComponent()({
2896
2962
  useRender(() => withDirectives(createVNode(VResponsive, {
2897
2963
  "class": ['v-img', {
2898
2964
  'v-img--booting': !isBooted.value
2899
- }],
2900
- "style": {
2965
+ }, props.class],
2966
+ "style": [{
2901
2967
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2902
- },
2968
+ }, props.style],
2903
2969
  "aspectRatio": aspectRatio.value,
2904
2970
  "aria-label": props.alt,
2905
2971
  "role": props.alt ? 'img' : undefined
@@ -2934,10 +3000,9 @@ const makeTagProps = propsFactory({
2934
3000
  }
2935
3001
  }, 'tag');
2936
3002
 
2937
- // Types
2938
-
2939
3003
  const makeVToolbarTitleProps = propsFactory({
2940
3004
  text: String,
3005
+ ...makeComponentProps(),
2941
3006
  ...makeTagProps()
2942
3007
  }, 'v-toolbar-title');
2943
3008
  const VToolbarTitle = genericComponent()({
@@ -2950,7 +3015,8 @@ const VToolbarTitle = genericComponent()({
2950
3015
  useRender(() => {
2951
3016
  const hasText = !!(slots.default || slots.text || props.text);
2952
3017
  return createVNode(props.tag, {
2953
- "class": "v-toolbar-title"
3018
+ "class": ['v-toolbar-title', props.class],
3019
+ "style": props.style
2954
3020
  }, {
2955
3021
  default: () => [hasText && createVNode("div", {
2956
3022
  "class": "v-toolbar-title__placeholder"
@@ -3131,6 +3197,7 @@ const makeVToolbarProps = propsFactory({
3131
3197
  image: String,
3132
3198
  title: String,
3133
3199
  ...makeBorderProps(),
3200
+ ...makeComponentProps(),
3134
3201
  ...makeElevationProps(),
3135
3202
  ...makeRoundedProps(),
3136
3203
  ...makeTagProps({
@@ -3181,8 +3248,8 @@ const VToolbar = genericComponent()({
3181
3248
  'v-toolbar--flat': props.flat,
3182
3249
  'v-toolbar--floating': props.floating,
3183
3250
  [`v-toolbar--density-${props.density}`]: true
3184
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3185
- "style": [backgroundColorStyles.value]
3251
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3252
+ "style": [backgroundColorStyles.value, props.style]
3186
3253
  }, {
3187
3254
  default: () => [hasImage && createVNode("div", {
3188
3255
  "key": "image",
@@ -3467,13 +3534,13 @@ const VAppBar = genericComponent()({
3467
3534
  "ref": vToolbarRef,
3468
3535
  "class": ['v-app-bar', {
3469
3536
  'v-app-bar--bottom': props.location === 'bottom'
3470
- }],
3471
- "style": {
3537
+ }, props.class],
3538
+ "style": [{
3472
3539
  ...layoutItemStyles.value,
3473
3540
  '--v-toolbar-image-opacity': opacity.value,
3474
3541
  height: undefined,
3475
3542
  ...ssrBootStyles.value
3476
- }
3543
+ }, props.style]
3477
3544
  }, toolbarProps, {
3478
3545
  "collapse": isCollapsed.value,
3479
3546
  "flat": isFlat.value
@@ -3560,6 +3627,7 @@ function useVariant(props) {
3560
3627
  const makeVBtnGroupProps = propsFactory({
3561
3628
  divided: Boolean,
3562
3629
  ...makeBorderProps(),
3630
+ ...makeComponentProps(),
3563
3631
  ...makeDensityProps(),
3564
3632
  ...makeElevationProps(),
3565
3633
  ...makeRoundedProps(),
@@ -3602,7 +3670,8 @@ const VBtnGroup = genericComponent()({
3602
3670
  return createVNode(props.tag, {
3603
3671
  "class": ['v-btn-group', {
3604
3672
  'v-btn-group--divided': props.divided
3605
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3673
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3674
+ "style": props.style
3606
3675
  }, slots);
3607
3676
  });
3608
3677
  }
@@ -3835,8 +3904,10 @@ const VBtnToggle = genericComponent()({
3835
3904
  useRender(() => {
3836
3905
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3837
3906
  return createVNode(VBtnGroup, mergeProps({
3838
- "class": "v-btn-toggle"
3839
- }, btnGroupProps), {
3907
+ "class": ['v-btn-toggle', props.class]
3908
+ }, btnGroupProps, {
3909
+ "style": props.style
3910
+ }), {
3840
3911
  default: () => [slots.default?.({
3841
3912
  isSelected,
3842
3913
  next,
@@ -3907,7 +3978,7 @@ const mdi = {
3907
3978
 
3908
3979
  // Types
3909
3980
 
3910
- const IconValue = [String, Function, Object];
3981
+ const IconValue = [String, Function, Object, Array];
3911
3982
  const IconSymbol = Symbol.for('vuetify:icons');
3912
3983
  const makeIconProps = propsFactory({
3913
3984
  icon: {
@@ -3927,8 +3998,9 @@ const VComponentIcon = genericComponent()({
3927
3998
  slots
3928
3999
  } = _ref;
3929
4000
  return () => {
4001
+ const Icon = props.icon;
3930
4002
  return createVNode(props.tag, null, {
3931
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4003
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3932
4004
  });
3933
4005
  };
3934
4006
  }
@@ -3951,7 +4023,12 @@ const VSvgIcon = defineComponent({
3951
4023
  "viewBox": "0 0 24 24",
3952
4024
  "role": "img",
3953
4025
  "aria-hidden": "true"
3954
- }, [createVNode("path", {
4026
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4027
+ "d": path[0],
4028
+ "fill-opacity": path[1]
4029
+ }, null) : createVNode("path", {
4030
+ "d": path
4031
+ }, null)) : createVNode("path", {
3955
4032
  "d": props.icon
3956
4033
  }, null)])]
3957
4034
  });
@@ -4016,7 +4093,12 @@ const useIcon = props => {
4016
4093
  }
4017
4094
  }
4018
4095
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
4019
- if (typeof icon !== 'string') {
4096
+ if (Array.isArray(icon)) {
4097
+ return {
4098
+ component: VSvgIcon,
4099
+ icon
4100
+ };
4101
+ } else if (typeof icon !== 'string') {
4020
4102
  return {
4021
4103
  component: VComponentIcon,
4022
4104
  icon
@@ -4073,6 +4155,7 @@ const makeVIconProps = propsFactory({
4073
4155
  start: Boolean,
4074
4156
  end: Boolean,
4075
4157
  icon: IconValue,
4158
+ ...makeComponentProps(),
4076
4159
  ...makeSizeProps(),
4077
4160
  ...makeTagProps({
4078
4161
  tag: 'i'
@@ -4115,12 +4198,12 @@ const VIcon = genericComponent()({
4115
4198
  'v-icon--clickable': !!attrs.onClick,
4116
4199
  'v-icon--start': props.start,
4117
4200
  'v-icon--end': props.end
4118
- }],
4201
+ }, props.class],
4119
4202
  "style": [!sizeClasses.value ? {
4120
4203
  fontSize: convertToUnit(props.size),
4121
4204
  height: convertToUnit(props.size),
4122
4205
  width: convertToUnit(props.size)
4123
- } : undefined, textColorStyles.value],
4206
+ } : undefined, textColorStyles.value, props.style],
4124
4207
  "role": attrs.onClick ? 'button' : undefined,
4125
4208
  "aria-hidden": !attrs.onClick
4126
4209
  }, {
@@ -4131,14 +4214,14 @@ const VIcon = genericComponent()({
4131
4214
  });
4132
4215
 
4133
4216
  // Utilities
4134
- function useIntersectionObserver(callback) {
4217
+ function useIntersectionObserver(callback, options) {
4135
4218
  const intersectionRef = ref();
4136
4219
  const isIntersecting = ref(false);
4137
4220
  if (SUPPORTS_INTERSECTION) {
4138
4221
  const observer = new IntersectionObserver(entries => {
4139
4222
  callback?.(entries, observer);
4140
4223
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4141
- });
4224
+ }, options);
4142
4225
  onBeforeUnmount(() => {
4143
4226
  observer.disconnect();
4144
4227
  });
@@ -4178,6 +4261,7 @@ const VProgressCircular = genericComponent()({
4178
4261
  type: [Number, String],
4179
4262
  default: 4
4180
4263
  },
4264
+ ...makeComponentProps(),
4181
4265
  ...makeSizeProps(),
4182
4266
  ...makeTagProps({
4183
4267
  tag: 'div'
@@ -4233,8 +4317,8 @@ const VProgressCircular = genericComponent()({
4233
4317
  'v-progress-circular--indeterminate': !!props.indeterminate,
4234
4318
  'v-progress-circular--visible': isIntersecting.value,
4235
4319
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4236
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4237
- "style": [sizeStyles.value, textColorStyles.value],
4320
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4321
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4238
4322
  "role": "progressbar",
4239
4323
  "aria-valuemin": "0",
4240
4324
  "aria-valuemax": "100",
@@ -4653,6 +4737,7 @@ const VProgressLinear = genericComponent()({
4653
4737
  stream: Boolean,
4654
4738
  striped: Boolean,
4655
4739
  roundedBar: Boolean,
4740
+ ...makeComponentProps(),
4656
4741
  ...makeLocationProps({
4657
4742
  location: 'top'
4658
4743
  }),
@@ -4724,14 +4809,14 @@ const VProgressLinear = genericComponent()({
4724
4809
  'v-progress-linear--rounded': props.rounded,
4725
4810
  'v-progress-linear--rounded-bar': props.roundedBar,
4726
4811
  'v-progress-linear--striped': props.striped
4727
- }, roundedClasses.value, themeClasses.value],
4728
- "style": {
4812
+ }, roundedClasses.value, themeClasses.value, props.class],
4813
+ "style": [{
4729
4814
  bottom: props.location === 'bottom' ? 0 : undefined,
4730
4815
  top: props.location === 'top' ? 0 : undefined,
4731
4816
  height: props.active ? convertToUnit(height.value) : 0,
4732
4817
  '--v-progress-linear-height': convertToUnit(height.value),
4733
4818
  ...locationStyles.value
4734
- },
4819
+ }, props.style],
4735
4820
  "role": "progressbar",
4736
4821
  "aria-hidden": props.active ? 'false' : 'true',
4737
4822
  "aria-valuemin": "0",
@@ -4942,7 +5027,7 @@ const makeVBtnProps = propsFactory({
4942
5027
  },
4943
5028
  text: String,
4944
5029
  ...makeBorderProps(),
4945
- ...makeRoundedProps(),
5030
+ ...makeComponentProps(),
4946
5031
  ...makeDensityProps(),
4947
5032
  ...makeDimensionProps(),
4948
5033
  ...makeElevationProps(),
@@ -4950,6 +5035,7 @@ const makeVBtnProps = propsFactory({
4950
5035
  ...makeLoaderProps(),
4951
5036
  ...makeLocationProps(),
4952
5037
  ...makePositionProps(),
5038
+ ...makeRoundedProps(),
4953
5039
  ...makeRouterProps(),
4954
5040
  ...makeSizeProps(),
4955
5041
  ...makeTagProps({
@@ -5047,8 +5133,8 @@ const VBtn = genericComponent()({
5047
5133
  'v-btn--icon': !!props.icon,
5048
5134
  'v-btn--loading': props.loading,
5049
5135
  'v-btn--stacked': props.stacked
5050
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
5051
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
5136
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5137
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5052
5138
  "disabled": isDisabled.value || undefined,
5053
5139
  "href": link.href.value,
5054
5140
  "onClick": e => {
@@ -5125,15 +5211,17 @@ const VAppBarNavIcon = genericComponent()({
5125
5211
  icon: {
5126
5212
  type: IconValue,
5127
5213
  default: '$menu'
5128
- }
5214
+ },
5215
+ ...makeComponentProps()
5129
5216
  },
5130
5217
  setup(props, _ref) {
5131
5218
  let {
5132
5219
  slots
5133
5220
  } = _ref;
5134
5221
  useRender(() => createVNode(VBtn, {
5135
- "class": "v-app-bar-nav-icon",
5136
- "icon": props.icon
5222
+ "class": ['v-app-bar-nav-icon', props.class],
5223
+ "icon": props.icon,
5224
+ "style": props.style
5137
5225
  }, slots));
5138
5226
  return {};
5139
5227
  }
@@ -5141,9 +5229,12 @@ const VAppBarNavIcon = genericComponent()({
5141
5229
 
5142
5230
  const VToolbarItems = genericComponent()({
5143
5231
  name: 'VToolbarItems',
5144
- props: makeVariantProps({
5145
- variant: 'text'
5146
- }),
5232
+ props: {
5233
+ ...makeComponentProps(),
5234
+ ...makeVariantProps({
5235
+ variant: 'text'
5236
+ })
5237
+ },
5147
5238
  setup(props, _ref) {
5148
5239
  let {
5149
5240
  slots
@@ -5156,7 +5247,8 @@ const VToolbarItems = genericComponent()({
5156
5247
  }
5157
5248
  });
5158
5249
  useRender(() => createVNode("div", {
5159
- "class": "v-toolbar-items"
5250
+ "class": ['v-toolbar-items', props.class],
5251
+ "style": props.style
5160
5252
  }, [slots.default?.()]));
5161
5253
  return {};
5162
5254
  }
@@ -5218,6 +5310,7 @@ const VAlert = genericComponent()({
5218
5310
  type: String,
5219
5311
  validator: val => allowedTypes.includes(val)
5220
5312
  },
5313
+ ...makeComponentProps(),
5221
5314
  ...makeDensityProps(),
5222
5315
  ...makeDimensionProps(),
5223
5316
  ...makeElevationProps(),
@@ -5300,8 +5393,8 @@ const VAlert = genericComponent()({
5300
5393
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5301
5394
  }, {
5302
5395
  'v-alert--prominent': props.prominent
5303
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
5304
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
5396
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5397
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5305
5398
  "role": "alert"
5306
5399
  }, {
5307
5400
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5395,6 +5488,7 @@ const VLabel = genericComponent()({
5395
5488
  props: {
5396
5489
  text: String,
5397
5490
  clickable: Boolean,
5491
+ ...makeComponentProps(),
5398
5492
  ...makeThemeProps()
5399
5493
  },
5400
5494
  setup(props, _ref) {
@@ -5404,7 +5498,8 @@ const VLabel = genericComponent()({
5404
5498
  useRender(() => createVNode("label", {
5405
5499
  "class": ['v-label', {
5406
5500
  'v-label--clickable': props.clickable
5407
- }]
5501
+ }, props.class],
5502
+ "style": props.style
5408
5503
  }, [props.text, slots.default?.()]));
5409
5504
  return {};
5410
5505
  }
@@ -5413,7 +5508,8 @@ const VLabel = genericComponent()({
5413
5508
  const VFieldLabel = genericComponent()({
5414
5509
  name: 'VFieldLabel',
5415
5510
  props: {
5416
- floating: Boolean
5511
+ floating: Boolean,
5512
+ ...makeComponentProps()
5417
5513
  },
5418
5514
  setup(props, _ref) {
5419
5515
  let {
@@ -5422,7 +5518,8 @@ const VFieldLabel = genericComponent()({
5422
5518
  useRender(() => createVNode(VLabel, {
5423
5519
  "class": ['v-field-label', {
5424
5520
  'v-field-label--floating': props.floating
5425
- }],
5521
+ }, props.class],
5522
+ "style": props.style,
5426
5523
  "aria-hidden": props.floating || undefined
5427
5524
  }, slots));
5428
5525
  return {};
@@ -5473,6 +5570,7 @@ const makeVFieldProps = propsFactory({
5473
5570
  },
5474
5571
  active: Boolean,
5475
5572
  color: String,
5573
+ baseColor: String,
5476
5574
  dirty: Boolean,
5477
5575
  disabled: Boolean,
5478
5576
  error: Boolean,
@@ -5490,9 +5588,10 @@ const makeVFieldProps = propsFactory({
5490
5588
  'onClick:clear': EventProp(),
5491
5589
  'onClick:appendInner': EventProp(),
5492
5590
  'onClick:prependInner': EventProp(),
5493
- ...makeThemeProps(),
5591
+ ...makeComponentProps(),
5494
5592
  ...makeLoaderProps(),
5495
- ...makeRoundedProps()
5593
+ ...makeRoundedProps(),
5594
+ ...makeThemeProps()
5496
5595
  }, 'v-field');
5497
5596
  const VField = genericComponent()({
5498
5597
  name: 'VField',
@@ -5546,7 +5645,7 @@ const VField = genericComponent()({
5546
5645
  textColorClasses,
5547
5646
  textColorStyles
5548
5647
  } = useTextColor(computed(() => {
5549
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5648
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5550
5649
  }));
5551
5650
  watch(isActive, val => {
5552
5651
  if (hasLabel.value) {
@@ -5623,8 +5722,8 @@ const VField = genericComponent()({
5623
5722
  'v-field--single-line': props.singleLine,
5624
5723
  'v-field--no-label': !label,
5625
5724
  [`v-field--variant-${props.variant}`]: true
5626
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value],
5627
- "style": [backgroundColorStyles.value, textColorStyles.value],
5725
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5726
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5628
5727
  "onClick": onClick
5629
5728
  }, attrs), [createVNode("div", {
5630
5729
  "class": "v-field__overlay"
@@ -5712,7 +5811,7 @@ const VField = genericComponent()({
5712
5811
  });
5713
5812
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5714
5813
  function filterFieldProps(attrs) {
5715
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5814
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5716
5815
  return pick(attrs, keys);
5717
5816
  }
5718
5817
 
@@ -5727,6 +5826,7 @@ const VMessages = genericComponent()({
5727
5826
  type: [Array, String],
5728
5827
  default: () => []
5729
5828
  },
5829
+ ...makeComponentProps(),
5730
5830
  ...makeTransitionProps({
5731
5831
  transition: {
5732
5832
  component: VSlideYTransition,
@@ -5747,8 +5847,8 @@ const VMessages = genericComponent()({
5747
5847
  useRender(() => createVNode(MaybeTransition, {
5748
5848
  "transition": props.transition,
5749
5849
  "tag": "div",
5750
- "class": ['v-messages', textColorClasses.value],
5751
- "style": textColorStyles.value,
5850
+ "class": ['v-messages', textColorClasses.value, props.class],
5851
+ "style": [textColorStyles.value, props.style],
5752
5852
  "role": "alert",
5753
5853
  "aria-live": "polite"
5754
5854
  }, {
@@ -6044,6 +6144,7 @@ const makeVInputProps = propsFactory({
6044
6144
  },
6045
6145
  'onClick:prepend': EventProp(),
6046
6146
  'onClick:append': EventProp(),
6147
+ ...makeComponentProps(),
6047
6148
  ...makeDensityProps(),
6048
6149
  ...makeValidationProps()
6049
6150
  }, 'v-input');
@@ -6111,7 +6212,8 @@ const VInput = genericComponent()({
6111
6212
  const hasMessages = messages.value.length > 0;
6112
6213
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
6113
6214
  return createVNode("div", {
6114
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6215
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6216
+ "style": props.style
6115
6217
  }, [hasPrepend && createVNode("div", {
6116
6218
  "key": "prepend",
6117
6219
  "class": "v-input__prepend"
@@ -6154,6 +6256,7 @@ const VCounter = genericComponent()({
6154
6256
  type: [Number, String],
6155
6257
  default: 0
6156
6258
  },
6259
+ ...makeComponentProps(),
6157
6260
  ...makeTransitionProps({
6158
6261
  transition: {
6159
6262
  component: VSlideYTransition
@@ -6171,7 +6274,8 @@ const VCounter = genericComponent()({
6171
6274
  "transition": props.transition
6172
6275
  }, {
6173
6276
  default: () => [withDirectives(createVNode("div", {
6174
- "class": "v-counter"
6277
+ "class": ['v-counter', props.class],
6278
+ "style": props.style
6175
6279
  }, [slots.default ? slots.default({
6176
6280
  counter: counter.value,
6177
6281
  max: props.max,
@@ -6374,7 +6478,8 @@ const VTextField = genericComponent()({
6374
6478
  'v-text-field--prefixed': props.prefix,
6375
6479
  'v-text-field--suffixed': props.suffix,
6376
6480
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6377
- }]
6481
+ }, props.class],
6482
+ "style": props.style
6378
6483
  }, rootAttrs, inputProps, {
6379
6484
  "focused": isFocused.value
6380
6485
  }), {
@@ -6490,6 +6595,7 @@ const VSelectionControlGroup = genericComponent()({
6490
6595
  type: String,
6491
6596
  default: 'VSelectionControl'
6492
6597
  },
6598
+ ...makeComponentProps(),
6493
6599
  ...makeSelectionControlGroupProps()
6494
6600
  },
6495
6601
  emits: {
@@ -6537,7 +6643,8 @@ const VSelectionControlGroup = genericComponent()({
6537
6643
  useRender(() => createVNode("div", {
6538
6644
  "class": ['v-selection-control-group', {
6539
6645
  'v-selection-control-group--inline': props.inline
6540
- }],
6646
+ }, props.class],
6647
+ "style": props.style,
6541
6648
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6542
6649
  }, [slots.default?.()]));
6543
6650
  return {};
@@ -6551,6 +6658,7 @@ const makeSelectionControlProps = propsFactory({
6551
6658
  trueValue: null,
6552
6659
  falseValue: null,
6553
6660
  value: null,
6661
+ ...makeComponentProps(),
6554
6662
  ...makeSelectionControlGroupProps()
6555
6663
  }, 'v-selection-control');
6556
6664
  function useSelectionControl(props) {
@@ -6665,8 +6773,10 @@ const VSelectionControl = genericComponent()({
6665
6773
  'v-selection-control--focused': isFocused.value,
6666
6774
  'v-selection-control--focus-visible': isFocusVisible.value,
6667
6775
  'v-selection-control--inline': props.inline
6668
- }, densityClasses.value]
6669
- }, rootAttrs), [createVNode("div", {
6776
+ }, densityClasses.value, props.class]
6777
+ }, rootAttrs, {
6778
+ "style": props.style
6779
+ }), [createVNode("div", {
6670
6780
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6671
6781
  "style": textColorStyles.value
6672
6782
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6748,7 +6858,8 @@ const VCheckboxBtn = genericComponent()({
6748
6858
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6749
6859
  "modelValue": model.value,
6750
6860
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6751
- "class": "v-checkbox-btn",
6861
+ "class": ['v-checkbox-btn', props.class],
6862
+ "style": props.style,
6752
6863
  "type": "checkbox",
6753
6864
  "inline": true,
6754
6865
  "falseIcon": falseIcon.value,
@@ -6788,10 +6899,11 @@ const VCheckbox = genericComponent()({
6788
6899
  const [inputProps, _1] = VInput.filterProps(props);
6789
6900
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6790
6901
  return createVNode(VInput, mergeProps({
6791
- "class": "v-checkbox"
6902
+ "class": ['v-checkbox', props.class]
6792
6903
  }, inputAttrs, inputProps, {
6793
6904
  "id": id.value,
6794
- "focused": isFocused.value
6905
+ "focused": isFocused.value,
6906
+ "style": props.style
6795
6907
  }), {
6796
6908
  ...slots,
6797
6909
  default: _ref2 => {
@@ -6822,6 +6934,7 @@ const makeVAvatarProps = propsFactory({
6822
6934
  end: Boolean,
6823
6935
  icon: IconValue,
6824
6936
  image: String,
6937
+ ...makeComponentProps(),
6825
6938
  ...makeDensityProps(),
6826
6939
  ...makeRoundedProps(),
6827
6940
  ...makeSizeProps(),
@@ -6860,8 +6973,8 @@ const VAvatar = genericComponent()({
6860
6973
  "class": ['v-avatar', {
6861
6974
  'v-avatar--start': props.start,
6862
6975
  'v-avatar--end': props.end
6863
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6864
- "style": [colorStyles.value, sizeStyles.value]
6976
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6977
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6865
6978
  }, {
6866
6979
  default: () => [props.image ? createVNode(VImg, {
6867
6980
  "key": "image",
@@ -6889,6 +7002,7 @@ const VChipGroup = genericComponent()({
6889
7002
  type: Function,
6890
7003
  default: deepEqual
6891
7004
  },
7005
+ ...makeComponentProps(),
6892
7006
  ...makeGroupProps({
6893
7007
  selectedClass: 'v-chip--selected'
6894
7008
  }),
@@ -6926,7 +7040,8 @@ const VChipGroup = genericComponent()({
6926
7040
  useRender(() => createVNode(props.tag, {
6927
7041
  "class": ['v-chip-group', {
6928
7042
  'v-chip-group--column': props.column
6929
- }, themeClasses.value]
7043
+ }, themeClasses.value, props.class],
7044
+ "style": props.style
6930
7045
  }, {
6931
7046
  default: () => [slots.default?.({
6932
7047
  isSelected,
@@ -6940,8 +7055,6 @@ const VChipGroup = genericComponent()({
6940
7055
  }
6941
7056
  });
6942
7057
 
6943
- // Types
6944
-
6945
7058
  const VChip = genericComponent()({
6946
7059
  name: 'VChip',
6947
7060
  directives: {
@@ -6986,6 +7099,7 @@ const VChip = genericComponent()({
6986
7099
  onClick: EventProp(),
6987
7100
  onClickOnce: EventProp(),
6988
7101
  ...makeBorderProps(),
7102
+ ...makeComponentProps(),
6989
7103
  ...makeDensityProps(),
6990
7104
  ...makeElevationProps(),
6991
7105
  ...makeGroupItemProps(),
@@ -7078,8 +7192,8 @@ const VChip = genericComponent()({
7078
7192
  'v-chip--link': isClickable.value,
7079
7193
  'v-chip--filter': hasFilter,
7080
7194
  'v-chip--pill': props.pill
7081
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value],
7082
- "style": [hasColor ? colorStyles.value : undefined],
7195
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7196
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
7083
7197
  "disabled": props.disabled || undefined,
7084
7198
  "draggable": props.draggable,
7085
7199
  "href": link.href.value,
@@ -7188,6 +7302,7 @@ const VDivider = genericComponent()({
7188
7302
  length: [Number, String],
7189
7303
  thickness: [Number, String],
7190
7304
  vertical: Boolean,
7305
+ ...makeComponentProps(),
7191
7306
  ...makeThemeProps()
7192
7307
  },
7193
7308
  setup(props, _ref) {
@@ -7216,8 +7331,8 @@ const VDivider = genericComponent()({
7216
7331
  'v-divider': true,
7217
7332
  'v-divider--inset': props.inset,
7218
7333
  'v-divider--vertical': props.vertical
7219
- }, themeClasses.value, textColorClasses.value],
7220
- "style": [dividerStyles.value, textColorStyles.value],
7334
+ }, themeClasses.value, textColorClasses.value, props.class],
7335
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7221
7336
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7222
7337
  "role": `${attrs.role || 'separator'}`
7223
7338
  }, null));
@@ -7716,6 +7831,7 @@ const makeVListGroupProps = propsFactory({
7716
7831
  fluid: Boolean,
7717
7832
  subgroup: Boolean,
7718
7833
  value: null,
7834
+ ...makeComponentProps(),
7719
7835
  ...makeTagProps()
7720
7836
  }, 'v-list-group');
7721
7837
  const VListGroup = genericComponent()({
@@ -7764,7 +7880,8 @@ const VListGroup = genericComponent()({
7764
7880
  'v-list-group--fluid': props.fluid,
7765
7881
  'v-list-group--subgroup': props.subgroup,
7766
7882
  'v-list-group--open': isOpen.value
7767
- }]
7883
+ }, props.class],
7884
+ "style": props.style
7768
7885
  }, {
7769
7886
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7770
7887
  "defaults": activatorDefaults.value
@@ -7831,6 +7948,7 @@ const VListItem = genericComponent()({
7831
7948
  onClick: EventProp(),
7832
7949
  onClickOnce: EventProp(),
7833
7950
  ...makeBorderProps(),
7951
+ ...makeComponentProps(),
7834
7952
  ...makeDensityProps(),
7835
7953
  ...makeDimensionProps(),
7836
7954
  ...makeElevationProps(),
@@ -7941,8 +8059,8 @@ const VListItem = genericComponent()({
7941
8059
  'v-list-item--nav': props.nav,
7942
8060
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7943
8061
  [`${props.activeClass}`]: props.activeClass && isActive.value
7944
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
7945
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
8062
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8063
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
7946
8064
  "href": link.href.value,
7947
8065
  "tabindex": isClickable.value ? 0 : undefined,
7948
8066
  "onClick": onClick,
@@ -8035,6 +8153,7 @@ const VListSubheader = genericComponent()({
8035
8153
  inset: Boolean,
8036
8154
  sticky: Boolean,
8037
8155
  title: String,
8156
+ ...makeComponentProps(),
8038
8157
  ...makeTagProps()
8039
8158
  },
8040
8159
  setup(props, _ref) {
@@ -8051,10 +8170,10 @@ const VListSubheader = genericComponent()({
8051
8170
  "class": ['v-list-subheader', {
8052
8171
  'v-list-subheader--inset': props.inset,
8053
8172
  'v-list-subheader--sticky': props.sticky
8054
- }, textColorClasses.value],
8055
- "style": {
8173
+ }, textColorClasses.value, props.class],
8174
+ "style": [{
8056
8175
  textColorStyles
8057
- }
8176
+ }, props.style]
8058
8177
  }, {
8059
8178
  default: () => [hasText && createVNode("div", {
8060
8179
  "class": "v-list-subheader__text"
@@ -8274,6 +8393,7 @@ const VList = genericComponent()({
8274
8393
  openStrategy: 'list'
8275
8394
  }),
8276
8395
  ...makeBorderProps(),
8396
+ ...makeComponentProps(),
8277
8397
  ...makeDensityProps(),
8278
8398
  ...makeDimensionProps(),
8279
8399
  ...makeElevationProps(),
@@ -8375,27 +8495,8 @@ const VList = genericComponent()({
8375
8495
  e.preventDefault();
8376
8496
  }
8377
8497
  function focus(location) {
8378
- if (!contentRef.value) return;
8379
- const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8380
- const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8381
- const idx = focusable.indexOf(document.activeElement);
8382
- if (!location) {
8383
- if (!contentRef.value.contains(document.activeElement)) {
8384
- focusable[0]?.focus();
8385
- }
8386
- } else if (location === 'first') {
8387
- focusable[0]?.focus();
8388
- } else if (location === 'last') {
8389
- focusable.at(-1)?.focus();
8390
- } else {
8391
- let el;
8392
- let idxx = idx;
8393
- const inc = location === 'next' ? 1 : -1;
8394
- do {
8395
- idxx += inc;
8396
- el = focusable[idxx];
8397
- } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
8398
- if (el) el.focus();else focus(location === 'next' ? 'first' : 'last');
8498
+ if (contentRef.value) {
8499
+ return focusChild(contentRef.value, location);
8399
8500
  }
8400
8501
  }
8401
8502
  useRender(() => {
@@ -8404,8 +8505,8 @@ const VList = genericComponent()({
8404
8505
  "class": ['v-list', {
8405
8506
  'v-list--disabled': props.disabled,
8406
8507
  'v-list--nav': props.nav
8407
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
8408
- "style": [backgroundColorStyles.value, dimensionStyles.value],
8508
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8509
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8409
8510
  "role": "listbox",
8410
8511
  "aria-activedescendant": undefined,
8411
8512
  "onFocusin": onFocusin,
@@ -8433,6 +8534,7 @@ const VListItemAction = genericComponent()({
8433
8534
  props: {
8434
8535
  start: Boolean,
8435
8536
  end: Boolean,
8537
+ ...makeComponentProps(),
8436
8538
  ...makeTagProps()
8437
8539
  },
8438
8540
  setup(props, _ref) {
@@ -8443,7 +8545,8 @@ const VListItemAction = genericComponent()({
8443
8545
  "class": ['v-list-item-action', {
8444
8546
  'v-list-item-action--start': props.start,
8445
8547
  'v-list-item-action--end': props.end
8446
- }]
8548
+ }, props.class],
8549
+ "style": props.style
8447
8550
  }, slots));
8448
8551
  return {};
8449
8552
  }
@@ -8454,6 +8557,7 @@ const VListItemMedia = genericComponent()({
8454
8557
  props: {
8455
8558
  start: Boolean,
8456
8559
  end: Boolean,
8560
+ ...makeComponentProps(),
8457
8561
  ...makeTagProps()
8458
8562
  },
8459
8563
  setup(props, _ref) {
@@ -8465,7 +8569,8 @@ const VListItemMedia = genericComponent()({
8465
8569
  "class": ['v-list-item-media', {
8466
8570
  'v-list-item-media--start': props.start,
8467
8571
  'v-list-item-media--end': props.end
8468
- }]
8572
+ }, props.class],
8573
+ "style": props.style
8469
8574
  }, slots);
8470
8575
  });
8471
8576
  return {};
@@ -9706,6 +9811,7 @@ const makeVOverlayProps = propsFactory({
9706
9811
  default: 2000
9707
9812
  },
9708
9813
  ...makeActivatorProps(),
9814
+ ...makeComponentProps(),
9709
9815
  ...makeDimensionProps(),
9710
9816
  ...makeLazyProps(),
9711
9817
  ...makeLocationStrategyProps(),
@@ -9873,10 +9979,10 @@ const VOverlay = genericComponent()({
9873
9979
  'v-overlay--absolute': props.absolute || props.contained,
9874
9980
  'v-overlay--active': isActive.value,
9875
9981
  'v-overlay--contained': props.contained
9876
- }, themeClasses.value, rtlClasses.value],
9982
+ }, themeClasses.value, rtlClasses.value, props.class],
9877
9983
  "style": [stackStyles.value, {
9878
9984
  top: convertToUnit(top.value)
9879
- }],
9985
+ }, props.style],
9880
9986
  "ref": root
9881
9987
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9882
9988
  "color": scrimColor,
@@ -9982,7 +10088,8 @@ const VMenu = genericComponent()({
9982
10088
  const [overlayProps] = VOverlay.filterProps(props);
9983
10089
  return createVNode(VOverlay, mergeProps({
9984
10090
  "ref": overlay,
9985
- "class": ['v-menu']
10091
+ "class": ['v-menu', props.class],
10092
+ "style": props.style
9986
10093
  }, overlayProps, {
9987
10094
  "modelValue": isActive.value,
9988
10095
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10201,7 +10308,8 @@ const VSelect = genericComponent()({
10201
10308
  'v-select--chips': !!props.chips,
10202
10309
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10203
10310
  'v-select--selected': model.value.length
10204
- }],
10311
+ }, props.class],
10312
+ "style": props.style,
10205
10313
  "appendInnerIcon": props.menuIcon,
10206
10314
  "readonly": true,
10207
10315
  "placeholder": placeholder,
@@ -10644,7 +10752,8 @@ const VAutocomplete = genericComponent()({
10644
10752
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10645
10753
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10646
10754
  'v-autocomplete--selection-slot': !!slots.selection
10647
- }],
10755
+ }, props.class],
10756
+ "style": props.style,
10648
10757
  "appendInnerIcon": props.menuIcon,
10649
10758
  "readonly": props.readonly,
10650
10759
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10758,8 +10867,6 @@ const VAutocomplete = genericComponent()({
10758
10867
  }
10759
10868
  });
10760
10869
 
10761
- // Types
10762
-
10763
10870
  const VBadge = genericComponent()({
10764
10871
  name: 'VBadge',
10765
10872
  inheritAttrs: false,
@@ -10783,6 +10890,7 @@ const VBadge = genericComponent()({
10783
10890
  offsetX: [Number, String],
10784
10891
  offsetY: [Number, String],
10785
10892
  textColor: String,
10893
+ ...makeComponentProps(),
10786
10894
  ...makeLocationProps({
10787
10895
  location: 'top end'
10788
10896
  }),
@@ -10827,8 +10935,10 @@ const VBadge = genericComponent()({
10827
10935
  'v-badge--dot': props.dot,
10828
10936
  'v-badge--floating': props.floating,
10829
10937
  'v-badge--inline': props.inline
10830
- }]
10831
- }, attrs), {
10938
+ }, props.class]
10939
+ }, attrs, {
10940
+ "style": props.style
10941
+ }), {
10832
10942
  default: () => [createVNode("div", {
10833
10943
  "class": "v-badge__wrapper"
10834
10944
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10855,7 +10965,8 @@ const VBannerActions = genericComponent()({
10855
10965
  name: 'VBannerActions',
10856
10966
  props: {
10857
10967
  color: String,
10858
- density: String
10968
+ density: String,
10969
+ ...makeComponentProps()
10859
10970
  },
10860
10971
  setup(props, _ref) {
10861
10972
  let {
@@ -10869,7 +10980,8 @@ const VBannerActions = genericComponent()({
10869
10980
  }
10870
10981
  });
10871
10982
  useRender(() => createVNode("div", {
10872
- "class": "v-banner-actions"
10983
+ "class": ['v-banner-actions', props.class],
10984
+ "style": props.style
10873
10985
  }, [slots.default?.()]));
10874
10986
  return {};
10875
10987
  }
@@ -10890,6 +11002,7 @@ const VBanner = genericComponent()({
10890
11002
  sticky: Boolean,
10891
11003
  text: String,
10892
11004
  ...makeBorderProps(),
11005
+ ...makeComponentProps(),
10893
11006
  ...makeDensityProps(),
10894
11007
  ...makeDimensionProps(),
10895
11008
  ...makeElevationProps(),
@@ -10947,8 +11060,8 @@ const VBanner = genericComponent()({
10947
11060
  'v-banner--stacked': props.stacked || mobile.value,
10948
11061
  'v-banner--sticky': props.sticky,
10949
11062
  [`v-banner--${props.lines}-line`]: !!props.lines
10950
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
10951
- "style": [dimensionStyles.value, locationStyles.value],
11063
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11064
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10952
11065
  "role": "banner"
10953
11066
  }, {
10954
11067
  default: () => [hasPrepend && createVNode("div", {
@@ -11004,6 +11117,7 @@ const VBottomNavigation = genericComponent()({
11004
11117
  default: true
11005
11118
  },
11006
11119
  ...makeBorderProps(),
11120
+ ...makeComponentProps(),
11007
11121
  ...makeDensityProps(),
11008
11122
  ...makeElevationProps(),
11009
11123
  ...makeRoundedProps(),
@@ -11078,11 +11192,11 @@ const VBottomNavigation = genericComponent()({
11078
11192
  'v-bottom-navigation--active': isActive.value,
11079
11193
  'v-bottom-navigation--grow': props.grow,
11080
11194
  'v-bottom-navigation--shift': props.mode === 'shift'
11081
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11195
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
11082
11196
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
11083
11197
  height: convertToUnit(height.value),
11084
11198
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
11085
- }, ssrBootStyles.value]
11199
+ }, ssrBootStyles.value, props.style]
11086
11200
  }, {
11087
11201
  default: () => [slots.default && createVNode("div", {
11088
11202
  "class": "v-bottom-navigation__content"
@@ -11096,14 +11210,16 @@ const VBottomNavigation = genericComponent()({
11096
11210
  const VBreadcrumbsDivider = genericComponent()({
11097
11211
  name: 'VBreadcrumbsDivider',
11098
11212
  props: {
11099
- divider: [Number, String]
11213
+ divider: [Number, String],
11214
+ ...makeComponentProps()
11100
11215
  },
11101
11216
  setup(props, _ref) {
11102
11217
  let {
11103
11218
  slots
11104
11219
  } = _ref;
11105
11220
  useRender(() => createVNode("li", {
11106
- "class": "v-breadcrumbs-divider"
11221
+ "class": ['v-breadcrumbs-divider', props.class],
11222
+ "style": props.style
11107
11223
  }, [slots?.default?.() ?? props.divider]));
11108
11224
  return {};
11109
11225
  }
@@ -11118,6 +11234,7 @@ const VBreadcrumbsItem = genericComponent()({
11118
11234
  color: String,
11119
11235
  disabled: Boolean,
11120
11236
  title: String,
11237
+ ...makeComponentProps(),
11121
11238
  ...makeRouterProps(),
11122
11239
  ...makeTagProps({
11123
11240
  tag: 'li'
@@ -11143,8 +11260,8 @@ const VBreadcrumbsItem = genericComponent()({
11143
11260
  'v-breadcrumbs-item--disabled': props.disabled,
11144
11261
  'v-breadcrumbs-item--link': link.isLink.value,
11145
11262
  [`${props.activeClass}`]: isActive.value && props.activeClass
11146
- }, textColorClasses.value],
11147
- "style": [textColorStyles.value],
11263
+ }, textColorClasses.value, props.class],
11264
+ "style": [textColorStyles.value, props.style],
11148
11265
  "href": link.href.value,
11149
11266
  "aria-current": isActive.value ? 'page' : undefined,
11150
11267
  "onClick": link.navigate
@@ -11175,6 +11292,7 @@ const VBreadcrumbs = genericComponent()({
11175
11292
  type: Array,
11176
11293
  default: () => []
11177
11294
  },
11295
+ ...makeComponentProps(),
11178
11296
  ...makeDensityProps(),
11179
11297
  ...makeRoundedProps(),
11180
11298
  ...makeTagProps({
@@ -11206,11 +11324,22 @@ const VBreadcrumbs = genericComponent()({
11206
11324
  disabled: toRef(props, 'disabled')
11207
11325
  }
11208
11326
  });
11327
+ const items = computed(() => props.items.map(item => {
11328
+ return typeof item === 'string' ? {
11329
+ item: {
11330
+ title: item
11331
+ },
11332
+ raw: item
11333
+ } : {
11334
+ item,
11335
+ raw: item
11336
+ };
11337
+ }));
11209
11338
  useRender(() => {
11210
11339
  const hasPrepend = !!(slots.prepend || props.icon);
11211
11340
  return createVNode(props.tag, {
11212
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11213
- "style": backgroundColorStyles.value
11341
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11342
+ "style": [backgroundColorStyles.value, props.style]
11214
11343
  }, {
11215
11344
  default: () => [hasPrepend && createVNode("div", {
11216
11345
  "key": "prepend",
@@ -11228,33 +11357,36 @@ const VBreadcrumbs = genericComponent()({
11228
11357
  start: true
11229
11358
  }
11230
11359
  }
11231
- }, slots.prepend)]), props.items.map((item, index, array) => createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11232
- "key": index,
11233
- "disabled": index >= array.length - 1
11234
- }, typeof item === 'string' ? {
11235
- title: item
11236
- } : item), {
11237
- default: slots.title ? () => slots.title?.({
11238
- item,
11239
- index
11240
- }) : undefined
11241
- }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11242
- default: slots.divider ? () => slots.divider?.({
11360
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11361
+ let {
11243
11362
  item,
11244
- index
11245
- }) : undefined
11246
- })])), slots.default?.()]
11363
+ raw
11364
+ } = _ref2;
11365
+ return createVNode(Fragment, null, [createVNode(VBreadcrumbsItem, mergeProps({
11366
+ "key": item.title,
11367
+ "disabled": index >= array.length - 1
11368
+ }, item), {
11369
+ default: slots.title ? () => slots.title?.({
11370
+ item: raw,
11371
+ index
11372
+ }) : undefined
11373
+ }), index < array.length - 1 && createVNode(VBreadcrumbsDivider, null, {
11374
+ default: slots.divider ? () => slots.divider?.({
11375
+ item: raw,
11376
+ index
11377
+ }) : undefined
11378
+ })]);
11379
+ }), slots.default?.()]
11247
11380
  });
11248
11381
  });
11249
11382
  return {};
11250
11383
  }
11251
11384
  });
11252
11385
 
11253
- // Types
11254
-
11255
- const VCardActions = defineComponent({
11386
+ const VCardActions = genericComponent()({
11256
11387
  name: 'VCardActions',
11257
- setup(_, _ref) {
11388
+ props: makeComponentProps(),
11389
+ setup(props, _ref) {
11258
11390
  let {
11259
11391
  slots
11260
11392
  } = _ref;
@@ -11264,7 +11396,8 @@ const VCardActions = defineComponent({
11264
11396
  }
11265
11397
  });
11266
11398
  useRender(() => createVNode("div", {
11267
- "class": "v-card-actions"
11399
+ "class": ['v-card-actions', props.class],
11400
+ "style": props.style
11268
11401
  }, [slots.default?.()]));
11269
11402
  return {};
11270
11403
  }
@@ -11274,8 +11407,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11274
11407
 
11275
11408
  const VCardTitle = createSimpleFunctional('v-card-title');
11276
11409
 
11277
- // Types
11278
-
11279
11410
  const VCardItem = genericComponent()({
11280
11411
  name: 'VCardItem',
11281
11412
  props: {
@@ -11285,6 +11416,7 @@ const VCardItem = genericComponent()({
11285
11416
  prependIcon: IconValue,
11286
11417
  subtitle: String,
11287
11418
  title: String,
11419
+ ...makeComponentProps(),
11288
11420
  ...makeDensityProps()
11289
11421
  },
11290
11422
  setup(props, _ref) {
@@ -11299,7 +11431,8 @@ const VCardItem = genericComponent()({
11299
11431
  const hasTitle = !!(props.title || slots.title);
11300
11432
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11301
11433
  return createVNode("div", {
11302
- "class": "v-card-item"
11434
+ "class": ['v-card-item', props.class],
11435
+ "style": props.style
11303
11436
  }, [hasPrepend && createVNode("div", {
11304
11437
  "key": "prepend",
11305
11438
  "class": "v-card-item__prepend"
@@ -11381,8 +11514,8 @@ const VCard = genericComponent()({
11381
11514
  subtitle: String,
11382
11515
  text: String,
11383
11516
  title: String,
11384
- ...makeThemeProps(),
11385
11517
  ...makeBorderProps(),
11518
+ ...makeComponentProps(),
11386
11519
  ...makeDensityProps(),
11387
11520
  ...makeDimensionProps(),
11388
11521
  ...makeElevationProps(),
@@ -11392,6 +11525,7 @@ const VCard = genericComponent()({
11392
11525
  ...makeRoundedProps(),
11393
11526
  ...makeRouterProps(),
11394
11527
  ...makeTagProps(),
11528
+ ...makeThemeProps(),
11395
11529
  ...makeVariantProps({
11396
11530
  variant: 'elevated'
11397
11531
  })
@@ -11452,8 +11586,8 @@ const VCard = genericComponent()({
11452
11586
  'v-card--flat': props.flat,
11453
11587
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11454
11588
  'v-card--link': isClickable.value
11455
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
11456
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
11589
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11590
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11457
11591
  "href": link.href.value,
11458
11592
  "onClick": isClickable.value && link.navigate,
11459
11593
  "tabindex": props.disabled ? -1 : undefined
@@ -11649,6 +11783,7 @@ const makeVWindowProps = propsFactory({
11649
11783
  mandatory: {
11650
11784
  default: 'force'
11651
11785
  },
11786
+ ...makeComponentProps(),
11652
11787
  ...makeTagProps(),
11653
11788
  ...makeThemeProps()
11654
11789
  }, 'v-window');
@@ -11764,7 +11899,8 @@ const VWindow = genericComponent()({
11764
11899
  "ref": rootRef,
11765
11900
  "class": ['v-window', {
11766
11901
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11767
- }, themeClasses.value]
11902
+ }, themeClasses.value, props.class],
11903
+ "style": props.style
11768
11904
  }, {
11769
11905
  default: () => [createVNode("div", {
11770
11906
  "class": "v-window__container",
@@ -11849,10 +11985,10 @@ const VCarousel = genericComponent()({
11849
11985
  "class": ['v-carousel', {
11850
11986
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11851
11987
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11852
- }],
11853
- "style": {
11988
+ }, props.class],
11989
+ "style": [{
11854
11990
  height: convertToUnit(props.height)
11855
- },
11991
+ }, props.style],
11856
11992
  "continuous": true,
11857
11993
  "mandatory": "force",
11858
11994
  "showArrows": props.showArrows
@@ -11918,6 +12054,7 @@ const VWindowItem = genericComponent()({
11918
12054
  type: [Boolean, String],
11919
12055
  default: undefined
11920
12056
  },
12057
+ ...makeComponentProps(),
11921
12058
  ...makeGroupItemProps(),
11922
12059
  ...makeLazyProps()
11923
12060
  },
@@ -12004,7 +12141,8 @@ const VWindowItem = genericComponent()({
12004
12141
  "disabled": !isBooted.value
12005
12142
  }, {
12006
12143
  default: () => [withDirectives(createVNode("div", {
12007
- "class": ['v-window-item', groupItem.selectedClass.value]
12144
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12145
+ "style": props.style
12008
12146
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
12009
12147
  }));
12010
12148
  return {};
@@ -12017,7 +12155,8 @@ const VCarouselItem = genericComponent()({
12017
12155
  name: 'VCarouselItem',
12018
12156
  inheritAttrs: false,
12019
12157
  props: {
12020
- value: null
12158
+ value: null,
12159
+ ...makeComponentProps()
12021
12160
  },
12022
12161
  setup(props, _ref) {
12023
12162
  let {
@@ -12025,7 +12164,8 @@ const VCarouselItem = genericComponent()({
12025
12164
  attrs
12026
12165
  } = _ref;
12027
12166
  useRender(() => createVNode(VWindowItem, {
12028
- "class": "v-carousel-item",
12167
+ "class": ['v-carousel-item', props.class],
12168
+ "style": props.style,
12029
12169
  "value": props.value
12030
12170
  }, {
12031
12171
  default: () => [createVNode(VImg, attrs, slots)]
@@ -12038,6 +12178,7 @@ const VCode = createSimpleFunctional('v-code');
12038
12178
  const makeVSheetProps = propsFactory({
12039
12179
  color: String,
12040
12180
  ...makeBorderProps(),
12181
+ ...makeComponentProps(),
12041
12182
  ...makeDimensionProps(),
12042
12183
  ...makeElevationProps(),
12043
12184
  ...makeLocationProps(),
@@ -12081,8 +12222,8 @@ const VSheet = genericComponent()({
12081
12222
  roundedClasses
12082
12223
  } = useRounded(props);
12083
12224
  useRender(() => createVNode(props.tag, {
12084
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
12085
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
12225
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12226
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
12086
12227
  }, slots));
12087
12228
  return {};
12088
12229
  }
@@ -12108,7 +12249,8 @@ const VColorPickerCanvas = defineComponent({
12108
12249
  width: {
12109
12250
  type: [Number, String],
12110
12251
  default: 300
12111
- }
12252
+ },
12253
+ ...makeComponentProps()
12112
12254
  },
12113
12255
  emits: {
12114
12256
  'update:color': color => true,
@@ -12253,7 +12395,8 @@ const VColorPickerCanvas = defineComponent({
12253
12395
  onMounted(() => updateCanvas());
12254
12396
  useRender(() => createVNode("div", {
12255
12397
  "ref": resizeRef,
12256
- "class": "v-color-picker-canvas",
12398
+ "class": ['v-color-picker-canvas', props.class],
12399
+ "style": props.style,
12257
12400
  "onClick": handleClick,
12258
12401
  "onMousedown": handleMouseDown,
12259
12402
  "onTouchstart": handleMouseDown
@@ -12486,7 +12629,8 @@ const VColorPickerEdit = defineComponent({
12486
12629
  type: Array,
12487
12630
  default: () => Object.keys(modes),
12488
12631
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12489
- }
12632
+ },
12633
+ ...makeComponentProps()
12490
12634
  },
12491
12635
  emits: {
12492
12636
  'update:color': color => true,
@@ -12526,7 +12670,8 @@ const VColorPickerEdit = defineComponent({
12526
12670
  });
12527
12671
  });
12528
12672
  useRender(() => createVNode("div", {
12529
- "class": "v-color-picker-edit"
12673
+ "class": ['v-color-picker-edit', props.class],
12674
+ "style": props.style
12530
12675
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12531
12676
  "icon": "$unfold",
12532
12677
  "size": "x-small",
@@ -12845,7 +12990,8 @@ const VSliderThumb = genericComponent()({
12845
12990
  ripple: {
12846
12991
  type: Boolean,
12847
12992
  default: true
12848
- }
12993
+ },
12994
+ ...makeComponentProps()
12849
12995
  },
12850
12996
  emits: {
12851
12997
  'update:modelValue': v => true
@@ -12923,11 +13069,11 @@ const VSliderThumb = genericComponent()({
12923
13069
  "class": ['v-slider-thumb', {
12924
13070
  'v-slider-thumb--focused': props.focused,
12925
13071
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12926
- }],
12927
- "style": {
13072
+ }, props.class],
13073
+ "style": [{
12928
13074
  '--v-slider-thumb-position': positionPercentage,
12929
13075
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12930
- },
13076
+ }, props.style],
12931
13077
  "role": "slider",
12932
13078
  "tabindex": disabled.value ? -1 : 0,
12933
13079
  "aria-valuemin": props.min,
@@ -12973,7 +13119,8 @@ const VSliderTrack = genericComponent()({
12973
13119
  stop: {
12974
13120
  type: Number,
12975
13121
  required: true
12976
- }
13122
+ },
13123
+ ...makeComponentProps()
12977
13124
  },
12978
13125
  emits: {},
12979
13126
  setup(props, _ref) {
@@ -13048,12 +13195,12 @@ const VSliderTrack = genericComponent()({
13048
13195
  });
13049
13196
  useRender(() => {
13050
13197
  return createVNode("div", {
13051
- "class": ['v-slider-track', roundedClasses.value],
13052
- "style": {
13198
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13199
+ "style": [{
13053
13200
  '--v-slider-track-size': convertToUnit(trackSize.value),
13054
13201
  '--v-slider-tick-size': convertToUnit(tickSize.value),
13055
13202
  direction: !vertical.value ? horizontalDirection.value : undefined
13056
- }
13203
+ }, props.style]
13057
13204
  }, [createVNode("div", {
13058
13205
  "class": ['v-slider-track__background', trackColorClasses.value, {
13059
13206
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -13156,7 +13303,8 @@ const VSlider = genericComponent()({
13156
13303
  'v-slider--focused': isFocused.value,
13157
13304
  'v-slider--pressed': mousePressed.value,
13158
13305
  'v-slider--disabled': props.disabled
13159
- }]
13306
+ }, props.class],
13307
+ "style": props.style
13160
13308
  }, inputProps, {
13161
13309
  "focused": isFocused.value
13162
13310
  }), {
@@ -13219,7 +13367,8 @@ const VColorPickerPreview = defineComponent({
13219
13367
  type: Object
13220
13368
  },
13221
13369
  disabled: Boolean,
13222
- hideAlpha: Boolean
13370
+ hideAlpha: Boolean,
13371
+ ...makeComponentProps()
13223
13372
  },
13224
13373
  emits: {
13225
13374
  'update:color': color => true
@@ -13231,7 +13380,8 @@ const VColorPickerPreview = defineComponent({
13231
13380
  useRender(() => createVNode("div", {
13232
13381
  "class": ['v-color-picker-preview', {
13233
13382
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13234
- }]
13383
+ }, props.class],
13384
+ "style": props.style
13235
13385
  }, [createVNode("div", {
13236
13386
  "class": "v-color-picker-preview__dot"
13237
13387
  }, [createVNode("div", {
@@ -13612,7 +13762,8 @@ const VColorPickerSwatches = defineComponent({
13612
13762
  },
13613
13763
  disabled: Boolean,
13614
13764
  color: Object,
13615
- maxHeight: [Number, String]
13765
+ maxHeight: [Number, String],
13766
+ ...makeComponentProps()
13616
13767
  },
13617
13768
  emits: {
13618
13769
  'update:color': color => true
@@ -13622,10 +13773,10 @@ const VColorPickerSwatches = defineComponent({
13622
13773
  emit
13623
13774
  } = _ref;
13624
13775
  useRender(() => createVNode("div", {
13625
- "class": "v-color-picker-swatches",
13626
- "style": {
13776
+ "class": ['v-color-picker-swatches', props.class],
13777
+ "style": [{
13627
13778
  maxHeight: convertToUnit(props.maxHeight)
13628
- }
13779
+ }, props.style]
13629
13780
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13630
13781
  "class": "v-color-picker-swatches__swatch"
13631
13782
  }, [swatch.map(color => {
@@ -13729,13 +13880,13 @@ const VColorPicker = defineComponent({
13729
13880
  "rounded": props.rounded,
13730
13881
  "elevation": props.elevation,
13731
13882
  "theme": props.theme,
13732
- "class": ['v-color-picker'],
13733
- "style": {
13883
+ "class": ['v-color-picker', props.class],
13884
+ "style": [{
13734
13885
  '--v-color-picker-color-hsv': HSVtoCSS({
13735
13886
  ...(currentColor.value ?? nullColor),
13736
13887
  a: 1
13737
13888
  })
13738
- }
13889
+ }, props.style]
13739
13890
  }, sheetProps, {
13740
13891
  "maxWidth": props.width
13741
13892
  }), {
@@ -14046,7 +14197,8 @@ const VCombobox = genericComponent()({
14046
14197
  'v-combobox--chips': !!props.chips,
14047
14198
  'v-combobox--selecting-index': selectionIndex.value > -1,
14048
14199
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
14049
- }],
14200
+ }, props.class],
14201
+ "style": props.style,
14050
14202
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
14051
14203
  "readonly": props.readonly,
14052
14204
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14203,7 +14355,7 @@ const VDialog = genericComponent()({
14203
14355
  ![document, overlay.value.contentEl].includes(after) &&
14204
14356
  // It isn't inside the dialog body
14205
14357
  !overlay.value.contentEl.contains(after)) {
14206
- const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled') && !el.matches('[tabindex="-1"]'));
14358
+ const focusable = focusableChildren(overlay.value.contentEl);
14207
14359
  if (!focusable.length) return;
14208
14360
  const firstElement = focusable[0];
14209
14361
  const lastElement = focusable[focusable.length - 1];
@@ -14244,7 +14396,8 @@ const VDialog = genericComponent()({
14244
14396
  "class": ['v-dialog', {
14245
14397
  'v-dialog--fullscreen': props.fullscreen,
14246
14398
  'v-dialog--scrollable': props.scrollable
14247
- }]
14399
+ }, props.class],
14400
+ "style": props.style
14248
14401
  }, overlayProps, {
14249
14402
  "modelValue": isActive.value,
14250
14403
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14283,6 +14436,7 @@ const VExpansionPanels = genericComponent()({
14283
14436
  validator: v => allowedVariants.includes(v)
14284
14437
  },
14285
14438
  readonly: Boolean,
14439
+ ...makeComponentProps(),
14286
14440
  ...makeGroupProps(),
14287
14441
  ...makeTagProps(),
14288
14442
  ...makeThemeProps()
@@ -14308,7 +14462,8 @@ const VExpansionPanels = genericComponent()({
14308
14462
  }
14309
14463
  });
14310
14464
  useRender(() => createVNode(props.tag, {
14311
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14465
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14466
+ "style": props.style
14312
14467
  }, slots));
14313
14468
  return {};
14314
14469
  }
@@ -14337,6 +14492,7 @@ const VExpansionPanelTitle = genericComponent()({
14337
14492
  Ripple
14338
14493
  },
14339
14494
  props: {
14495
+ ...makeComponentProps(),
14340
14496
  ...makeVExpansionPanelTitleProps()
14341
14497
  },
14342
14498
  setup(props, _ref) {
@@ -14359,8 +14515,8 @@ const VExpansionPanelTitle = genericComponent()({
14359
14515
  useRender(() => withDirectives(createVNode("button", {
14360
14516
  "class": ['v-expansion-panel-title', {
14361
14517
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14362
- }, backgroundColorClasses.value],
14363
- "style": backgroundColorStyles.value,
14518
+ }, backgroundColorClasses.value, props.class],
14519
+ "style": [backgroundColorStyles.value, props.style],
14364
14520
  "type": "button",
14365
14521
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14366
14522
  "disabled": expansionPanel.disabled.value,
@@ -14380,6 +14536,7 @@ const VExpansionPanelTitle = genericComponent()({
14380
14536
  const VExpansionPanelText = genericComponent()({
14381
14537
  name: 'VExpansionPanelText',
14382
14538
  props: {
14539
+ ...makeComponentProps(),
14383
14540
  ...makeLazyProps()
14384
14541
  },
14385
14542
  setup(props, _ref) {
@@ -14396,7 +14553,8 @@ const VExpansionPanelText = genericComponent()({
14396
14553
  "onAfterLeave": onAfterLeave
14397
14554
  }, {
14398
14555
  default: () => [withDirectives(createVNode("div", {
14399
- "class": "v-expansion-panel-text"
14556
+ "class": ['v-expansion-panel-text', props.class],
14557
+ "style": props.style
14400
14558
  }, [slots.default && hasContent.value && createVNode("div", {
14401
14559
  "class": "v-expansion-panel-text__wrapper"
14402
14560
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14411,6 +14569,7 @@ const VExpansionPanel = genericComponent()({
14411
14569
  title: String,
14412
14570
  text: String,
14413
14571
  bgColor: String,
14572
+ ...makeComponentProps(),
14414
14573
  ...makeElevationProps(),
14415
14574
  ...makeGroupItemProps(),
14416
14575
  ...makeLazyProps(),
@@ -14459,8 +14618,8 @@ const VExpansionPanel = genericComponent()({
14459
14618
  'v-expansion-panel--before-active': isBeforeSelected.value,
14460
14619
  'v-expansion-panel--after-active': isAfterSelected.value,
14461
14620
  'v-expansion-panel--disabled': isDisabled.value
14462
- }, roundedClasses.value, backgroundColorClasses.value],
14463
- "style": backgroundColorStyles.value,
14621
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14622
+ "style": [backgroundColorStyles.value, props.style],
14464
14623
  "aria-expanded": groupItem.isSelected.value
14465
14624
  }, {
14466
14625
  default: () => [createVNode("div", {
@@ -14610,7 +14769,8 @@ const VFileInput = genericComponent()({
14610
14769
  "ref": vInputRef,
14611
14770
  "modelValue": model.value,
14612
14771
  "onUpdate:modelValue": $event => model.value = $event,
14613
- "class": "v-file-input",
14772
+ "class": ['v-file-input', props.class],
14773
+ "style": props.style,
14614
14774
  "onClick:prepend": onClickPrepend
14615
14775
  }, rootAttrs, inputProps, {
14616
14776
  "focused": isFocused.value
@@ -14702,6 +14862,7 @@ const VFooter = genericComponent()({
14702
14862
  default: 'auto'
14703
14863
  },
14704
14864
  ...makeBorderProps(),
14865
+ ...makeComponentProps(),
14705
14866
  ...makeElevationProps(),
14706
14867
  ...makeLayoutItemProps(),
14707
14868
  ...makeRoundedProps(),
@@ -14751,8 +14912,8 @@ const VFooter = genericComponent()({
14751
14912
  });
14752
14913
  useRender(() => createVNode(props.tag, {
14753
14914
  "ref": resizeRef,
14754
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14755
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14915
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14916
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14756
14917
  }, slots));
14757
14918
  return {};
14758
14919
  }
@@ -14763,6 +14924,7 @@ const VFooter = genericComponent()({
14763
14924
  const VForm = genericComponent()({
14764
14925
  name: 'VForm',
14765
14926
  props: {
14927
+ ...makeComponentProps(),
14766
14928
  ...makeFormProps()
14767
14929
  },
14768
14930
  emits: {
@@ -14801,7 +14963,8 @@ const VForm = genericComponent()({
14801
14963
  }
14802
14964
  useRender(() => createVNode("form", {
14803
14965
  "ref": formRef,
14804
- "class": "v-form",
14966
+ "class": ['v-form', props.class],
14967
+ "style": props.style,
14805
14968
  "novalidate": true,
14806
14969
  "onReset": onReset,
14807
14970
  "onSubmit": onSubmit
@@ -14817,6 +14980,7 @@ const VContainer = genericComponent()({
14817
14980
  type: Boolean,
14818
14981
  default: false
14819
14982
  },
14983
+ ...makeComponentProps(),
14820
14984
  ...makeTagProps()
14821
14985
  },
14822
14986
  setup(props, _ref) {
@@ -14826,7 +14990,8 @@ const VContainer = genericComponent()({
14826
14990
  useRender(() => createVNode(props.tag, {
14827
14991
  "class": ['v-container', {
14828
14992
  'v-container--fluid': props.fluid
14829
- }]
14993
+ }, props.class],
14994
+ "style": props.style
14830
14995
  }, slots));
14831
14996
  return {};
14832
14997
  }
@@ -14917,6 +15082,7 @@ const VCol = genericComponent()({
14917
15082
  default: null,
14918
15083
  validator: str => ALIGN_SELF_VALUES.includes(str)
14919
15084
  },
15085
+ ...makeComponentProps(),
14920
15086
  ...makeTagProps()
14921
15087
  },
14922
15088
  setup(props, _ref) {
@@ -14947,7 +15113,8 @@ const VCol = genericComponent()({
14947
15113
  return classList;
14948
15114
  });
14949
15115
  return () => h(props.tag, {
14950
- class: classes.value
15116
+ class: [classes.value, props.class],
15117
+ style: props.style
14951
15118
  }, slots.default?.());
14952
15119
  }
14953
15120
  });
@@ -15033,6 +15200,7 @@ const VRow = genericComponent()({
15033
15200
  validator: alignContentValidator
15034
15201
  },
15035
15202
  ...alignContentProps,
15203
+ ...makeComponentProps(),
15036
15204
  ...makeTagProps()
15037
15205
  },
15038
15206
  setup(props, _ref) {
@@ -15061,7 +15229,8 @@ const VRow = genericComponent()({
15061
15229
  return classList;
15062
15230
  });
15063
15231
  return () => h(props.tag, {
15064
- class: ['v-row', classes.value]
15232
+ class: ['v-row', classes.value, props.class],
15233
+ style: props.style
15065
15234
  }, slots.default?.());
15066
15235
  }
15067
15236
  });
@@ -15105,6 +15274,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
15105
15274
  const VItemGroup = genericComponent()({
15106
15275
  name: 'VItemGroup',
15107
15276
  props: {
15277
+ ...makeComponentProps(),
15108
15278
  ...makeGroupProps({
15109
15279
  selectedClass: 'v-item--selected'
15110
15280
  }),
@@ -15129,7 +15299,8 @@ const VItemGroup = genericComponent()({
15129
15299
  selected
15130
15300
  } = useGroup(props, VItemGroupSymbol);
15131
15301
  return () => createVNode(props.tag, {
15132
- "class": ['v-item-group', themeClasses.value]
15302
+ "class": ['v-item-group', themeClasses.value, props.class],
15303
+ "style": props.style
15133
15304
  }, {
15134
15305
  default: () => [slots.default?.({
15135
15306
  isSelected,
@@ -15179,7 +15350,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15179
15350
 
15180
15351
  const VLayout = genericComponent()({
15181
15352
  name: 'VLayout',
15182
- props: makeLayoutProps(),
15353
+ props: {
15354
+ ...makeComponentProps(),
15355
+ ...makeLayoutProps()
15356
+ },
15183
15357
  setup(props, _ref) {
15184
15358
  let {
15185
15359
  slots
@@ -15193,8 +15367,8 @@ const VLayout = genericComponent()({
15193
15367
  } = createLayout(props);
15194
15368
  useRender(() => createVNode("div", {
15195
15369
  "ref": layoutRef,
15196
- "class": layoutClasses.value,
15197
- "style": layoutStyles.value
15370
+ "class": [layoutClasses.value, props.class],
15371
+ "style": [layoutStyles.value, props.style]
15198
15372
  }, [slots.default?.()]));
15199
15373
  return {
15200
15374
  getLayoutItem,
@@ -15217,6 +15391,7 @@ const VLayoutItem = genericComponent()({
15217
15391
  default: 300
15218
15392
  },
15219
15393
  modelValue: Boolean,
15394
+ ...makeComponentProps(),
15220
15395
  ...makeLayoutItemProps()
15221
15396
  },
15222
15397
  setup(props, _ref) {
@@ -15235,8 +15410,8 @@ const VLayoutItem = genericComponent()({
15235
15410
  absolute: toRef(props, 'absolute')
15236
15411
  });
15237
15412
  return () => createVNode("div", {
15238
- "class": ['v-layout-item'],
15239
- "style": layoutItemStyles.value
15413
+ "class": ['v-layout-item', props.class],
15414
+ "style": [layoutItemStyles.value, props.style]
15240
15415
  }, [slots.default?.()]);
15241
15416
  }
15242
15417
  });
@@ -15260,6 +15435,7 @@ const VLazy = genericComponent()({
15260
15435
  threshold: undefined
15261
15436
  })
15262
15437
  },
15438
+ ...makeComponentProps(),
15263
15439
  ...makeDimensionProps(),
15264
15440
  ...makeTagProps(),
15265
15441
  ...makeTransitionProps({
@@ -15282,8 +15458,8 @@ const VLazy = genericComponent()({
15282
15458
  isActive.value = isIntersecting;
15283
15459
  }
15284
15460
  useRender(() => withDirectives(createVNode(props.tag, {
15285
- "class": "v-lazy",
15286
- "style": dimensionStyles.value
15461
+ "class": ['v-lazy', props.class],
15462
+ "style": [dimensionStyles.value, props.style]
15287
15463
  }, {
15288
15464
  default: () => [isActive.value && createVNode(MaybeTransition, {
15289
15465
  "transition": props.transition,
@@ -15308,7 +15484,8 @@ const VLocaleProvider = genericComponent()({
15308
15484
  rtl: {
15309
15485
  type: Boolean,
15310
15486
  default: undefined
15311
- }
15487
+ },
15488
+ ...makeComponentProps()
15312
15489
  },
15313
15490
  setup(props, _ref) {
15314
15491
  let {
@@ -15318,7 +15495,8 @@ const VLocaleProvider = genericComponent()({
15318
15495
  rtlClasses
15319
15496
  } = provideLocale(props);
15320
15497
  useRender(() => createVNode("div", {
15321
- "class": ['v-locale-provider', rtlClasses.value]
15498
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15499
+ "style": props.style
15322
15500
  }, [slots.default?.()]));
15323
15501
  return {};
15324
15502
  }
@@ -15328,6 +15506,7 @@ const VMain = genericComponent()({
15328
15506
  name: 'VMain',
15329
15507
  props: {
15330
15508
  scrollable: Boolean,
15509
+ ...makeComponentProps(),
15331
15510
  ...makeTagProps({
15332
15511
  tag: 'main'
15333
15512
  })
@@ -15345,8 +15524,8 @@ const VMain = genericComponent()({
15345
15524
  useRender(() => createVNode(props.tag, {
15346
15525
  "class": ['v-main', {
15347
15526
  'v-main--scrollable': props.scrollable
15348
- }],
15349
- "style": [mainStyles.value, ssrBootStyles.value]
15527
+ }, props.class],
15528
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15350
15529
  }, {
15351
15530
  default: () => [props.scrollable ? createVNode("div", {
15352
15531
  "class": "v-main__scroller"
@@ -15356,593 +15535,167 @@ const VMain = genericComponent()({
15356
15535
  }
15357
15536
  });
15358
15537
 
15359
- // Utilities
15360
-
15361
- // Types
15362
-
15363
- function getWeekArray(date) {
15364
- let currentWeek = [];
15365
- const weeks = [];
15366
- const firstDayOfMonth = startOfMonth(date);
15367
- const lastDayOfMonth = endOfMonth(date);
15368
- for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
15369
- currentWeek.push(null);
15538
+ function useSticky(_ref) {
15539
+ let {
15540
+ rootEl,
15541
+ isSticky,
15542
+ layoutItemStyles
15543
+ } = _ref;
15544
+ const isStuck = ref(false);
15545
+ const stuckPosition = ref(0);
15546
+ const stickyStyles = computed(() => {
15547
+ const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15548
+ return [isSticky.value ? {
15549
+ top: 'auto',
15550
+ bottom: 'auto',
15551
+ height: undefined
15552
+ } : undefined, isStuck.value ? {
15553
+ [side]: convertToUnit(stuckPosition.value)
15554
+ } : {
15555
+ top: layoutItemStyles.value.top
15556
+ }];
15557
+ });
15558
+ onMounted(() => {
15559
+ watch(isSticky, val => {
15560
+ if (val) {
15561
+ window.addEventListener('scroll', onScroll, {
15562
+ passive: true
15563
+ });
15564
+ } else {
15565
+ window.removeEventListener('scroll', onScroll);
15566
+ }
15567
+ }, {
15568
+ immediate: true
15569
+ });
15570
+ });
15571
+ onBeforeUnmount(() => {
15572
+ document.removeEventListener('scroll', onScroll);
15573
+ });
15574
+ let lastScrollTop = 0;
15575
+ function onScroll() {
15576
+ const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15577
+ const rect = rootEl.value.getBoundingClientRect();
15578
+ const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15579
+ const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15580
+ const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15581
+ if (rect.height < window.innerHeight - layoutTop) {
15582
+ isStuck.value = 'top';
15583
+ stuckPosition.value = layoutTop;
15584
+ } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15585
+ stuckPosition.value = window.scrollY + rect.top;
15586
+ isStuck.value = true;
15587
+ } else if (direction === 'down' && bottom <= 0) {
15588
+ stuckPosition.value = 0;
15589
+ isStuck.value = 'bottom';
15590
+ } else if (direction === 'up' && top <= 0) {
15591
+ stuckPosition.value = rect.top + top;
15592
+ isStuck.value = 'top';
15593
+ }
15594
+ lastScrollTop = window.scrollY;
15370
15595
  }
15371
- for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
15372
- const day = new Date(date.getFullYear(), date.getMonth(), i);
15596
+ return {
15597
+ isStuck,
15598
+ stickyStyles
15599
+ };
15600
+ }
15373
15601
 
15374
- // Add the day to the current week
15375
- currentWeek.push(day);
15602
+ const HORIZON = 100; // ms
15603
+ const HISTORY = 20; // number of samples to keep
15376
15604
 
15377
- // If the current week has 7 days, add it to the weeks array and start a new week
15378
- if (currentWeek.length === 7) {
15379
- weeks.push(currentWeek);
15380
- currentWeek = [];
15605
+ /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15606
+ function kineticEnergyToVelocity(work) {
15607
+ const sqrt2 = 1.41421356237;
15608
+ return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15609
+ }
15610
+
15611
+ /**
15612
+ * Returns pointer velocity in px/s
15613
+ */
15614
+ function calculateImpulseVelocity(samples) {
15615
+ // The input should be in reversed time order (most recent sample at index i=0)
15616
+ if (samples.length < 2) {
15617
+ // if 0 or 1 points, velocity is zero
15618
+ return 0;
15619
+ }
15620
+ // if (samples[1].t > samples[0].t) {
15621
+ // // Algorithm will still work, but not perfectly
15622
+ // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15623
+ // }
15624
+ if (samples.length === 2) {
15625
+ // if 2 points, basic linear calculation
15626
+ if (samples[1].t === samples[0].t) {
15627
+ // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15628
+ return 0;
15381
15629
  }
15630
+ return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15382
15631
  }
15383
- for (let i = currentWeek.length; i < 7; i++) {
15384
- currentWeek.push(null);
15632
+ // Guaranteed to have at least 3 points here
15633
+ // start with the oldest sample and go forward in time
15634
+ let work = 0;
15635
+ for (let i = samples.length - 1; i > 0; i--) {
15636
+ if (samples[i].t === samples[i - 1].t) {
15637
+ // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)
15638
+ continue;
15639
+ }
15640
+ const vprev = kineticEnergyToVelocity(work); // v[i-1]
15641
+ const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]
15642
+ work += (vcurr - vprev) * Math.abs(vcurr);
15643
+ if (i === samples.length - 1) {
15644
+ work *= 0.5;
15645
+ }
15385
15646
  }
15386
- weeks.push(currentWeek);
15387
- return weeks;
15388
- }
15389
- function startOfMonth(date) {
15390
- return new Date(date.getFullYear(), date.getMonth(), 1);
15391
- }
15392
- function endOfMonth(date) {
15393
- return new Date(date.getFullYear(), date.getMonth() + 1, 0);
15647
+ return kineticEnergyToVelocity(work) * 1000;
15394
15648
  }
15395
- function date(value) {
15396
- if (value == null) return null;
15397
- if (value instanceof Date) return value;
15398
- if (typeof value === 'string') {
15399
- const parsed = Date.parse(value);
15400
- if (!isNaN(parsed)) return new Date(parsed);
15649
+ function useVelocity() {
15650
+ const touches = {};
15651
+ function addMovement(e) {
15652
+ Array.from(e.changedTouches).forEach(touch => {
15653
+ const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
15654
+ samples.push([e.timeStamp, touch]);
15655
+ });
15401
15656
  }
15402
- return null;
15403
- }
15404
- const firstDay = {
15405
- '001': 1,
15406
- AD: 1,
15407
- AE: 6,
15408
- AF: 6,
15409
- AG: 0,
15410
- AI: 1,
15411
- AL: 1,
15412
- AM: 1,
15413
- AN: 1,
15414
- AR: 1,
15415
- AS: 0,
15416
- AT: 1,
15417
- AU: 0,
15418
- AX: 1,
15419
- AZ: 1,
15420
- BA: 1,
15421
- BD: 0,
15422
- BE: 1,
15423
- BG: 1,
15424
- BH: 6,
15425
- BM: 1,
15426
- BN: 1,
15427
- BR: 0,
15428
- BS: 0,
15429
- BT: 0,
15430
- BW: 0,
15431
- BY: 1,
15432
- BZ: 0,
15433
- CA: 0,
15434
- CH: 1,
15435
- CL: 1,
15436
- CM: 1,
15437
- CN: 0,
15438
- CO: 0,
15439
- CR: 1,
15440
- CY: 1,
15441
- CZ: 1,
15442
- DE: 1,
15443
- DJ: 6,
15444
- DK: 1,
15445
- DM: 0,
15446
- DO: 0,
15447
- DZ: 6,
15448
- EC: 1,
15449
- EE: 1,
15450
- EG: 6,
15451
- ES: 1,
15452
- ET: 0,
15453
- FI: 1,
15454
- FJ: 1,
15455
- FO: 1,
15456
- FR: 1,
15457
- GB: 1,
15458
- 'GB-alt-variant': 0,
15459
- GE: 1,
15460
- GF: 1,
15461
- GP: 1,
15462
- GR: 1,
15463
- GT: 0,
15464
- GU: 0,
15465
- HK: 0,
15466
- HN: 0,
15467
- HR: 1,
15468
- HU: 1,
15469
- ID: 0,
15470
- IE: 1,
15471
- IL: 0,
15472
- IN: 0,
15473
- IQ: 6,
15474
- IR: 6,
15475
- IS: 1,
15476
- IT: 1,
15477
- JM: 0,
15478
- JO: 6,
15479
- JP: 0,
15480
- KE: 0,
15481
- KG: 1,
15482
- KH: 0,
15483
- KR: 0,
15484
- KW: 6,
15485
- KZ: 1,
15486
- LA: 0,
15487
- LB: 1,
15488
- LI: 1,
15489
- LK: 1,
15490
- LT: 1,
15491
- LU: 1,
15492
- LV: 1,
15493
- LY: 6,
15494
- MC: 1,
15495
- MD: 1,
15496
- ME: 1,
15497
- MH: 0,
15498
- MK: 1,
15499
- MM: 0,
15500
- MN: 1,
15501
- MO: 0,
15502
- MQ: 1,
15503
- MT: 0,
15504
- MV: 5,
15505
- MX: 0,
15506
- MY: 1,
15507
- MZ: 0,
15508
- NI: 0,
15509
- NL: 1,
15510
- NO: 1,
15511
- NP: 0,
15512
- NZ: 1,
15513
- OM: 6,
15514
- PA: 0,
15515
- PE: 0,
15516
- PH: 0,
15517
- PK: 0,
15518
- PL: 1,
15519
- PR: 0,
15520
- PT: 0,
15521
- PY: 0,
15522
- QA: 6,
15523
- RE: 1,
15524
- RO: 1,
15525
- RS: 1,
15526
- RU: 1,
15527
- SA: 0,
15528
- SD: 6,
15529
- SE: 1,
15530
- SG: 0,
15531
- SI: 1,
15532
- SK: 1,
15533
- SM: 1,
15534
- SV: 0,
15535
- SY: 6,
15536
- TH: 0,
15537
- TJ: 1,
15538
- TM: 1,
15539
- TR: 1,
15540
- TT: 0,
15541
- TW: 0,
15542
- UA: 1,
15543
- UM: 0,
15544
- US: 0,
15545
- UY: 1,
15546
- UZ: 1,
15547
- VA: 1,
15548
- VE: 0,
15549
- VI: 0,
15550
- VN: 1,
15551
- WS: 0,
15552
- XK: 1,
15553
- YE: 0,
15554
- ZA: 0,
15555
- ZW: 0
15556
- };
15557
- const sundayJanuarySecond2000 = new Date(2000, 0, 2);
15558
- function getWeekdays(locale) {
15559
- const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
15560
- return createRange(7).map(i => {
15561
- const weekday = new Date(sundayJanuarySecond2000);
15562
- weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
15563
- return new Intl.DateTimeFormat(locale, {
15564
- weekday: 'long'
15565
- }).format(weekday);
15566
- });
15567
- }
15568
- function format(value, formatString, locale) {
15569
- const date = new Date(value);
15570
- let options = {};
15571
- switch (formatString) {
15572
- case 'fullDateWithWeekday':
15573
- options = {
15574
- weekday: 'long',
15575
- day: 'numeric',
15576
- month: 'long',
15577
- year: 'numeric'
15578
- };
15579
- break;
15580
- case 'normalDateWithWeekday':
15581
- options = {
15582
- weekday: 'short',
15583
- day: 'numeric',
15584
- month: 'short',
15585
- year: 'numeric'
15586
- };
15587
- break;
15588
- case 'keyboardDate':
15589
- options = {};
15590
- break;
15591
- case 'monthAndDate':
15592
- options = {
15593
- month: 'long',
15594
- day: 'numeric'
15595
- };
15596
- break;
15597
- case 'monthAndYear':
15598
- options = {
15599
- month: 'long',
15600
- year: 'numeric'
15601
- };
15602
- break;
15603
- default:
15604
- options = {
15605
- timeZone: 'UTC',
15606
- timeZoneName: 'short'
15607
- };
15608
- }
15609
- return new Intl.DateTimeFormat(locale, options).format(date);
15610
- }
15611
- function addDays(date, amount) {
15612
- const d = new Date(date);
15613
- d.setDate(d.getDate() + amount);
15614
- return d;
15615
- }
15616
- function addMonths(date, amount) {
15617
- const d = new Date(date);
15618
- d.setMonth(d.getMonth() + amount);
15619
- return d;
15620
- }
15621
- function getYear(date) {
15622
- return date.getFullYear();
15623
- }
15624
- function getMonth(date) {
15625
- return date.getMonth();
15626
- }
15627
- function startOfYear(date) {
15628
- return new Date(date.getFullYear(), 0, 1);
15629
- }
15630
- function endOfYear(date) {
15631
- return new Date(date.getFullYear(), 11, 31);
15632
- }
15633
- function getMondayOfFirstWeekOfYear(year) {
15634
- return new Date(year, 0, 1);
15635
- }
15636
-
15637
- // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
15638
- function getWeek(date) {
15639
- let year = date.getFullYear();
15640
- let d1w1 = getMondayOfFirstWeekOfYear(year);
15641
- if (date < d1w1) {
15642
- year = year - 1;
15643
- d1w1 = getMondayOfFirstWeekOfYear(year);
15644
- } else {
15645
- const tv = getMondayOfFirstWeekOfYear(year + 1);
15646
- if (date >= tv) {
15647
- year = year + 1;
15648
- d1w1 = tv;
15649
- }
15650
- }
15651
- const diffTime = Math.abs(date.getTime() - d1w1.getTime());
15652
- const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
15653
- return Math.floor(diffDays / 7) + 1;
15654
- }
15655
- function isWithinRange(date, range) {
15656
- return isAfter(date, range[0]) && isBefore(date, range[1]);
15657
- }
15658
- function isValid(date) {
15659
- const d = new Date(date);
15660
- return d instanceof Date && !isNaN(d.getTime());
15661
- }
15662
- function isAfter(date, comparing) {
15663
- return date.getTime() > comparing.getTime();
15664
- }
15665
- function isBefore(date, comparing) {
15666
- return date.getTime() < comparing.getTime();
15667
- }
15668
- function isEqual(date, comparing) {
15669
- return date.getTime() === comparing.getTime();
15670
- }
15671
- function isSameDay(date, comparing) {
15672
- return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
15673
- }
15674
- function isSameMonth(date, comparing) {
15675
- return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
15676
- }
15677
- function getDiff(date, comparing, unit) {
15678
- const d = new Date(date);
15679
- const c = new Date(comparing);
15680
- if (unit === 'month') {
15681
- return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
15682
- }
15683
- return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
15684
- }
15685
- function setYear(date, year) {
15686
- const d = new Date(date);
15687
- d.setFullYear(year);
15688
- return d;
15689
- }
15690
- class VuetifyDateAdapter {
15691
- constructor() {
15692
- let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
15693
- this.locale = locale;
15694
- }
15695
- date(value) {
15696
- return date(value);
15697
- }
15698
- addDays(date, amount) {
15699
- return addDays(date, amount);
15700
- }
15701
- addMonths(date, amount) {
15702
- return addMonths(date, amount);
15703
- }
15704
- getWeekArray(date) {
15705
- return getWeekArray(date);
15706
- }
15707
- startOfMonth(date) {
15708
- return startOfMonth(date);
15709
- }
15710
- endOfMonth(date) {
15711
- return endOfMonth(date);
15712
- }
15713
- format(date, formatString) {
15714
- return format(date, formatString, this.locale);
15715
- }
15716
- isEqual(date, comparing) {
15717
- return isEqual(date, comparing);
15718
- }
15719
- isValid(date) {
15720
- return isValid(date);
15721
- }
15722
- isWithinRange(date, range) {
15723
- return isWithinRange(date, range);
15724
- }
15725
- isAfter(date, comparing) {
15726
- return isAfter(date, comparing);
15727
- }
15728
- isSameDay(date, comparing) {
15729
- return isSameDay(date, comparing);
15730
- }
15731
- isSameMonth(date, comparing) {
15732
- return isSameMonth(date, comparing);
15733
- }
15734
- setYear(date, year) {
15735
- return setYear(date, year);
15736
- }
15737
- getDiff(date, comparing, unit) {
15738
- return getDiff(date, comparing, unit);
15739
- }
15740
- getWeek(date) {
15741
- return getWeek(date);
15742
- }
15743
- getWeekdays() {
15744
- return getWeekdays(this.locale);
15745
- }
15746
- getYear(date) {
15747
- return getYear(date);
15748
- }
15749
- getMonth(date) {
15750
- return getMonth(date);
15751
- }
15752
- startOfYear(date) {
15753
- return startOfYear(date);
15754
- }
15755
- endOfYear(date) {
15756
- return endOfYear(date);
15757
- }
15758
- }
15759
-
15760
- // Composables
15761
-
15762
- // Types
15763
-
15764
- const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
15765
- function createDate(options) {
15766
- return options ?? {
15767
- adapter: VuetifyDateAdapter
15768
- };
15769
- }
15770
- function useDate(props) {
15771
- const date = inject$1(DateAdapterSymbol);
15772
- const locale = useLocale();
15773
- if (!date) throw new Error('[Vuetify] Could not find injected date');
15774
-
15775
- // eslint-disable-next-line new-cap
15776
- const instance = new date.adapter(locale.current.value);
15777
- watch(locale.current, val => {
15778
- instance.locale = val;
15779
- }, {
15780
- immediate: true
15781
- });
15782
- return instance;
15783
- }
15784
-
15785
- function useSticky(_ref) {
15786
- let {
15787
- rootEl,
15788
- isSticky,
15789
- layoutItemStyles
15790
- } = _ref;
15791
- const isStuck = ref(false);
15792
- const stuckPosition = ref(0);
15793
- const stickyStyles = computed(() => {
15794
- const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15795
- return [isSticky.value ? {
15796
- top: 'auto',
15797
- bottom: 'auto',
15798
- height: undefined
15799
- } : undefined, isStuck.value ? {
15800
- [side]: convertToUnit(stuckPosition.value)
15801
- } : {
15802
- top: layoutItemStyles.value.top
15803
- }];
15804
- });
15805
- onMounted(() => {
15806
- watch(isSticky, val => {
15807
- if (val) {
15808
- window.addEventListener('scroll', onScroll, {
15809
- passive: true
15810
- });
15811
- } else {
15812
- window.removeEventListener('scroll', onScroll);
15813
- }
15814
- }, {
15815
- immediate: true
15816
- });
15817
- });
15818
- onBeforeUnmount(() => {
15819
- document.removeEventListener('scroll', onScroll);
15820
- });
15821
- let lastScrollTop = 0;
15822
- function onScroll() {
15823
- const direction = lastScrollTop > window.scrollY ? 'up' : 'down';
15824
- const rect = rootEl.value.getBoundingClientRect();
15825
- const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
15826
- const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
15827
- const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
15828
- if (rect.height < window.innerHeight - layoutTop) {
15829
- isStuck.value = 'top';
15830
- stuckPosition.value = layoutTop;
15831
- } else if (direction === 'up' && isStuck.value === 'bottom' || direction === 'down' && isStuck.value === 'top') {
15832
- stuckPosition.value = window.scrollY + rect.top;
15833
- isStuck.value = true;
15834
- } else if (direction === 'down' && bottom <= 0) {
15835
- stuckPosition.value = 0;
15836
- isStuck.value = 'bottom';
15837
- } else if (direction === 'up' && top <= 0) {
15838
- stuckPosition.value = rect.top + top;
15839
- isStuck.value = 'top';
15840
- }
15841
- lastScrollTop = window.scrollY;
15842
- }
15843
- return {
15844
- isStuck,
15845
- stickyStyles
15846
- };
15847
- }
15848
-
15849
- const HORIZON = 100; // ms
15850
- const HISTORY = 20; // number of samples to keep
15851
-
15852
- /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
15853
- function kineticEnergyToVelocity(work) {
15854
- const sqrt2 = 1.41421356237;
15855
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
15856
- }
15857
-
15858
- /**
15859
- * Returns pointer velocity in px/s
15860
- */
15861
- function calculateImpulseVelocity(samples) {
15862
- // The input should be in reversed time order (most recent sample at index i=0)
15863
- if (samples.length < 2) {
15864
- // if 0 or 1 points, velocity is zero
15865
- return 0;
15866
- }
15867
- // if (samples[1].t > samples[0].t) {
15868
- // // Algorithm will still work, but not perfectly
15869
- // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
15870
- // }
15871
- if (samples.length === 2) {
15872
- // if 2 points, basic linear calculation
15873
- if (samples[1].t === samples[0].t) {
15874
- // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
15875
- return 0;
15876
- }
15877
- return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
15878
- }
15879
- // Guaranteed to have at least 3 points here
15880
- // start with the oldest sample and go forward in time
15881
- let work = 0;
15882
- for (let i = samples.length - 1; i > 0; i--) {
15883
- if (samples[i].t === samples[i - 1].t) {
15884
- // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)
15885
- continue;
15886
- }
15887
- const vprev = kineticEnergyToVelocity(work); // v[i-1]
15888
- const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]
15889
- work += (vcurr - vprev) * Math.abs(vcurr);
15890
- if (i === samples.length - 1) {
15891
- work *= 0.5;
15892
- }
15893
- }
15894
- return kineticEnergyToVelocity(work) * 1000;
15895
- }
15896
- function useVelocity() {
15897
- const touches = {};
15898
- function addMovement(e) {
15899
- Array.from(e.changedTouches).forEach(touch => {
15900
- const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
15901
- samples.push([e.timeStamp, touch]);
15902
- });
15903
- }
15904
- function endTouch(e) {
15905
- Array.from(e.changedTouches).forEach(touch => {
15906
- delete touches[touch.identifier];
15907
- });
15908
- }
15909
- function getVelocity(id) {
15910
- const samples = touches[id]?.values().reverse();
15911
- if (!samples) {
15912
- throw new Error(`No samples for touch id ${id}`);
15913
- }
15914
- const newest = samples[0];
15915
- const x = [];
15916
- const y = [];
15917
- for (const val of samples) {
15918
- if (newest[0] - val[0] > HORIZON) break;
15919
- x.push({
15920
- t: val[0],
15921
- d: val[1].clientX
15922
- });
15923
- y.push({
15924
- t: val[0],
15925
- d: val[1].clientY
15926
- });
15927
- }
15928
- return {
15929
- x: calculateImpulseVelocity(x),
15930
- y: calculateImpulseVelocity(y),
15931
- get direction() {
15932
- const {
15933
- x,
15934
- y
15935
- } = this;
15936
- const [absX, absY] = [Math.abs(x), Math.abs(y)];
15937
- return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops$1();
15938
- }
15939
- };
15940
- }
15941
- return {
15942
- addMovement,
15943
- endTouch,
15944
- getVelocity
15945
- };
15657
+ function endTouch(e) {
15658
+ Array.from(e.changedTouches).forEach(touch => {
15659
+ delete touches[touch.identifier];
15660
+ });
15661
+ }
15662
+ function getVelocity(id) {
15663
+ const samples = touches[id]?.values().reverse();
15664
+ if (!samples) {
15665
+ throw new Error(`No samples for touch id ${id}`);
15666
+ }
15667
+ const newest = samples[0];
15668
+ const x = [];
15669
+ const y = [];
15670
+ for (const val of samples) {
15671
+ if (newest[0] - val[0] > HORIZON) break;
15672
+ x.push({
15673
+ t: val[0],
15674
+ d: val[1].clientX
15675
+ });
15676
+ y.push({
15677
+ t: val[0],
15678
+ d: val[1].clientY
15679
+ });
15680
+ }
15681
+ return {
15682
+ x: calculateImpulseVelocity(x),
15683
+ y: calculateImpulseVelocity(y),
15684
+ get direction() {
15685
+ const {
15686
+ x,
15687
+ y
15688
+ } = this;
15689
+ const [absX, absY] = [Math.abs(x), Math.abs(y)];
15690
+ return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops$1();
15691
+ }
15692
+ };
15693
+ }
15694
+ return {
15695
+ addMovement,
15696
+ endTouch,
15697
+ getVelocity
15698
+ };
15946
15699
  }
15947
15700
  function oops$1() {
15948
15701
  throw new Error();
@@ -16118,6 +15871,7 @@ const VNavigationDrawer = genericComponent()({
16118
15871
  },
16119
15872
  sticky: Boolean,
16120
15873
  ...makeBorderProps(),
15874
+ ...makeComponentProps(),
16121
15875
  ...makeElevationProps(),
16122
15876
  ...makeLayoutItemProps(),
16123
15877
  ...makeRoundedProps(),
@@ -16269,8 +16023,8 @@ const VNavigationDrawer = genericComponent()({
16269
16023
  'v-navigation-drawer--temporary': isTemporary.value,
16270
16024
  'v-navigation-drawer--active': isActive.value,
16271
16025
  'v-navigation-drawer--sticky': isSticky.value
16272
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
16273
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value]
16026
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16027
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
16274
16028
  }, attrs), {
16275
16029
  default: () => [hasImage && createVNode("div", {
16276
16030
  "key": "image",
@@ -16399,6 +16153,7 @@ const VPagination = genericComponent()({
16399
16153
  },
16400
16154
  showFirstLastPage: Boolean,
16401
16155
  ...makeBorderProps(),
16156
+ ...makeComponentProps(),
16402
16157
  ...makeDensityProps(),
16403
16158
  ...makeElevationProps(),
16404
16159
  ...makeRoundedProps(),
@@ -16595,7 +16350,8 @@ const VPagination = genericComponent()({
16595
16350
  }
16596
16351
  useRender(() => createVNode(props.tag, {
16597
16352
  "ref": resizeRef,
16598
- "class": ['v-pagination', themeClasses.value],
16353
+ "class": ['v-pagination', themeClasses.value, props.class],
16354
+ "style": props.style,
16599
16355
  "role": "navigation",
16600
16356
  "aria-label": t(props.ariaLabel),
16601
16357
  "onKeydown": onKeydown,
@@ -16654,7 +16410,8 @@ const VParallax = genericComponent()({
16654
16410
  scale: {
16655
16411
  type: [Number, String],
16656
16412
  default: 0.5
16657
- }
16413
+ },
16414
+ ...makeComponentProps()
16658
16415
  },
16659
16416
  setup(props, _ref) {
16660
16417
  let {
@@ -16716,7 +16473,8 @@ const VParallax = genericComponent()({
16716
16473
  useRender(() => createVNode(VImg, {
16717
16474
  "class": ['v-parallax', {
16718
16475
  'v-parallax--active': isIntersecting.value
16719
- }],
16476
+ }, props.class],
16477
+ "style": props.style,
16720
16478
  "ref": root,
16721
16479
  "cover": true,
16722
16480
  "onLoadstart": onScroll,
@@ -16741,7 +16499,8 @@ const VRadio = genericComponent()({
16741
16499
  slots
16742
16500
  } = _ref;
16743
16501
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16744
- "class": "v-radio",
16502
+ "class": ['v-radio', props.class],
16503
+ "style": props.style,
16745
16504
  "type": "radio"
16746
16505
  }), slots));
16747
16506
  return {};
@@ -16795,7 +16554,8 @@ const VRadioGroup = genericComponent()({
16795
16554
  }
16796
16555
  }) : props.label;
16797
16556
  return createVNode(VInput, mergeProps({
16798
- "class": "v-radio-group"
16557
+ "class": ['v-radio-group', props.class],
16558
+ "style": props.style
16799
16559
  }, inputAttrs, inputProps, {
16800
16560
  "modelValue": model.value,
16801
16561
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16933,7 +16693,8 @@ const VRangeSlider = genericComponent()({
16933
16693
  'v-slider--focused': isFocused.value,
16934
16694
  'v-slider--pressed': mousePressed.value,
16935
16695
  'v-slider--disabled': props.disabled
16936
- }],
16696
+ }, props.class],
16697
+ "style": props.style,
16937
16698
  "ref": inputRef
16938
16699
  }, inputProps, {
16939
16700
  "focused": isFocused.value
@@ -17076,6 +16837,7 @@ const VRating = genericComponent()({
17076
16837
  validator: v => ['top', 'bottom'].includes(v)
17077
16838
  },
17078
16839
  ripple: Boolean,
16840
+ ...makeComponentProps(),
17079
16841
  ...makeDensityProps(),
17080
16842
  ...makeSizeProps(),
17081
16843
  ...makeTagProps(),
@@ -17193,7 +16955,8 @@ const VRating = genericComponent()({
17193
16955
  "class": ['v-rating', {
17194
16956
  'v-rating--hover': props.hover,
17195
16957
  'v-rating--readonly': props.readonly
17196
- }, themeClasses.value]
16958
+ }, themeClasses.value, props.class],
16959
+ "style": props.style
17197
16960
  }, {
17198
16961
  default: () => [createVNode(VRatingItem, {
17199
16962
  "value": 0,
@@ -17293,6 +17056,7 @@ const makeVSlideGroupProps = propsFactory({
17293
17056
  type: [Boolean, String],
17294
17057
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
17295
17058
  },
17059
+ ...makeComponentProps(),
17296
17060
  ...makeTagProps(),
17297
17061
  ...makeGroupProps({
17298
17062
  selectedClass: 'v-slide-group-item--active'
@@ -17456,7 +17220,7 @@ const VSlideGroup = genericComponent()({
17456
17220
  function focus(location) {
17457
17221
  if (!contentRef.value) return;
17458
17222
  if (!location) {
17459
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
17223
+ const focusable = focusableChildren(contentRef.value);
17460
17224
  focusable[0]?.focus();
17461
17225
  } else if (location === 'next') {
17462
17226
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -17533,7 +17297,8 @@ const VSlideGroup = genericComponent()({
17533
17297
  'v-slide-group--vertical': !isHorizontal.value,
17534
17298
  'v-slide-group--has-affixes': hasAffixes.value,
17535
17299
  'v-slide-group--is-overflowing': isOverflowing.value
17536
- }],
17300
+ }, props.class],
17301
+ "style": props.style,
17537
17302
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
17538
17303
  "onFocus": onFocus
17539
17304
  }, {
@@ -17683,7 +17448,8 @@ const VSnackbar = genericComponent()({
17683
17448
  'v-snackbar--active': isActive.value,
17684
17449
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17685
17450
  'v-snackbar--vertical': props.vertical
17686
- }, positionClasses.value]
17451
+ }, positionClasses.value, props.class],
17452
+ "style": props.style
17687
17453
  }, overlayProps, {
17688
17454
  "modelValue": isActive.value,
17689
17455
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17783,7 +17549,8 @@ const VSwitch = genericComponent()({
17783
17549
  'v-switch--inset': props.inset
17784
17550
  }, {
17785
17551
  'v-switch--indeterminate': indeterminate.value
17786
- }, loaderClasses.value]
17552
+ }, loaderClasses.value, props.class],
17553
+ "style": props.style
17787
17554
  }, inputAttrs, inputProps, {
17788
17555
  "id": id.value,
17789
17556
  "focused": isFocused.value
@@ -17852,6 +17619,7 @@ const VSystemBar = genericComponent()({
17852
17619
  color: String,
17853
17620
  height: [Number, String],
17854
17621
  window: Boolean,
17622
+ ...makeComponentProps(),
17855
17623
  ...makeElevationProps(),
17856
17624
  ...makeLayoutItemProps(),
17857
17625
  ...makeRoundedProps(),
@@ -17893,8 +17661,8 @@ const VSystemBar = genericComponent()({
17893
17661
  useRender(() => createVNode(props.tag, {
17894
17662
  "class": ['v-system-bar', {
17895
17663
  'v-system-bar--window': props.window
17896
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17897
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17664
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17665
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17898
17666
  }, slots));
17899
17667
  return {};
17900
17668
  }
@@ -17967,10 +17735,10 @@ const VTab = genericComponent()({
17967
17735
  useRender(() => {
17968
17736
  const [btnProps] = VBtn.filterProps(props);
17969
17737
  return createVNode(VBtn, mergeProps({
17970
- "_as": "VTab",
17971
17738
  "symbol": VTabsSymbol,
17972
17739
  "ref": rootEl,
17973
- "class": ['v-tab'],
17740
+ "class": ['v-tab', props.class],
17741
+ "style": props.style,
17974
17742
  "tabindex": isSelected.value ? 0 : -1,
17975
17743
  "role": "tab",
17976
17744
  "aria-selected": String(isSelected.value),
@@ -18065,10 +17833,10 @@ const VTabs = genericComponent()({
18065
17833
  'v-tabs--fixed-tabs': props.fixedTabs,
18066
17834
  'v-tabs--grow': props.grow,
18067
17835
  'v-tabs--stacked': props.stacked
18068
- }, densityClasses.value, backgroundColorClasses.value],
17836
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
18069
17837
  "style": [{
18070
17838
  '--v-tabs-height': convertToUnit(props.height)
18071
- }, backgroundColorStyles.value],
17839
+ }, backgroundColorStyles.value, props.style],
18072
17840
  "role": "tablist",
18073
17841
  "symbol": VTabsSymbol
18074
17842
  }), {
@@ -18088,6 +17856,7 @@ const VTable = genericComponent()({
18088
17856
  fixedFooter: Boolean,
18089
17857
  height: [Number, String],
18090
17858
  hover: Boolean,
17859
+ ...makeComponentProps(),
18091
17860
  ...makeDensityProps(),
18092
17861
  ...makeTagProps(),
18093
17862
  ...makeThemeProps()
@@ -18110,7 +17879,8 @@ const VTable = genericComponent()({
18110
17879
  'v-table--has-top': !!slots.top,
18111
17880
  'v-table--has-bottom': !!slots.bottom,
18112
17881
  'v-table--hover': props.hover
18113
- }, themeClasses.value, densityClasses.value]
17882
+ }, themeClasses.value, densityClasses.value, props.class],
17883
+ "style": props.style
18114
17884
  }, {
18115
17885
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
18116
17886
  "class": "v-table__wrapper",
@@ -18275,7 +18045,8 @@ const VTextarea = genericComponent()({
18275
18045
  'v-textarea--auto-grow': props.autoGrow,
18276
18046
  'v-textarea--no-resize': props.noResize || props.autoGrow,
18277
18047
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
18278
- }]
18048
+ }, props.class],
18049
+ "style": props.style
18279
18050
  }, rootAttrs, inputProps, {
18280
18051
  "focused": isFocused.value
18281
18052
  }), {
@@ -18359,6 +18130,7 @@ const VThemeProvider = genericComponent()({
18359
18130
  name: 'VThemeProvider',
18360
18131
  props: {
18361
18132
  withBackground: Boolean,
18133
+ ...makeComponentProps(),
18362
18134
  ...makeThemeProps(),
18363
18135
  ...makeTagProps()
18364
18136
  },
@@ -18372,7 +18144,8 @@ const VThemeProvider = genericComponent()({
18372
18144
  return () => {
18373
18145
  if (!props.withBackground) return slots.default?.();
18374
18146
  return createVNode(props.tag, {
18375
- "class": ['v-theme-provider', themeClasses.value]
18147
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18148
+ "style": props.style
18376
18149
  }, {
18377
18150
  default: () => [slots.default?.()]
18378
18151
  });
@@ -18417,6 +18190,7 @@ const VTimeline = genericComponent()({
18417
18190
  type: String,
18418
18191
  validator: v => ['start', 'end', 'both'].includes(v)
18419
18192
  },
18193
+ ...makeComponentProps(),
18420
18194
  ...makeDensityProps(),
18421
18195
  ...makeTagProps(),
18422
18196
  ...makeThemeProps()
@@ -18460,10 +18234,10 @@ const VTimeline = genericComponent()({
18460
18234
  useRender(() => createVNode(props.tag, {
18461
18235
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18462
18236
  'v-timeline--inset-line': !!props.lineInset
18463
- }, themeClasses.value, densityClasses.value, sideClasses.value],
18464
- "style": {
18237
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18238
+ "style": [{
18465
18239
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
18466
- }
18240
+ }, props.style]
18467
18241
  }, slots));
18468
18242
  return {};
18469
18243
  }
@@ -18478,6 +18252,7 @@ const VTimelineDivider = genericComponent()({
18478
18252
  icon: IconValue,
18479
18253
  iconColor: String,
18480
18254
  lineColor: String,
18255
+ ...makeComponentProps(),
18481
18256
  ...makeRoundedProps(),
18482
18257
  ...makeSizeProps(),
18483
18258
  ...makeElevationProps()
@@ -18507,7 +18282,8 @@ const VTimelineDivider = genericComponent()({
18507
18282
  useRender(() => createVNode("div", {
18508
18283
  "class": ['v-timeline-divider', {
18509
18284
  'v-timeline-divider--fill-dot': props.fillDot
18510
- }]
18285
+ }, props.class],
18286
+ "style": props.style
18511
18287
  }, [createVNode("div", {
18512
18288
  "class": ['v-timeline-divider__before', lineColorClasses.value],
18513
18289
  "style": lineColorStyles.value
@@ -18557,11 +18333,12 @@ const VTimelineItem = genericComponent()({
18557
18333
  icon: IconValue,
18558
18334
  iconColor: String,
18559
18335
  lineInset: [Number, String],
18560
- ...makeRoundedProps(),
18336
+ ...makeComponentProps(),
18337
+ ...makeDimensionProps(),
18561
18338
  ...makeElevationProps(),
18339
+ ...makeRoundedProps(),
18562
18340
  ...makeSizeProps(),
18563
- ...makeTagProps(),
18564
- ...makeDimensionProps()
18341
+ ...makeTagProps()
18565
18342
  },
18566
18343
  setup(props, _ref) {
18567
18344
  let {
@@ -18581,11 +18358,11 @@ const VTimelineItem = genericComponent()({
18581
18358
  useRender(() => createVNode("div", {
18582
18359
  "class": ['v-timeline-item', {
18583
18360
  'v-timeline-item--fill-dot': props.fillDot
18584
- }],
18585
- "style": {
18361
+ }, props.class],
18362
+ "style": [{
18586
18363
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18587
18364
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18588
- }
18365
+ }, props.style]
18589
18366
  }, [createVNode("div", {
18590
18367
  "class": "v-timeline-item__body",
18591
18368
  "style": dimensionStyles.value
@@ -18661,7 +18438,8 @@ const VTooltip = genericComponent()({
18661
18438
  const [overlayProps] = VOverlay.filterProps(props);
18662
18439
  return createVNode(VOverlay, mergeProps({
18663
18440
  "ref": overlay,
18664
- "class": ['v-tooltip'],
18441
+ "class": ['v-tooltip', props.class],
18442
+ "style": props.style,
18665
18443
  "id": id.value
18666
18444
  }, overlayProps, {
18667
18445
  "modelValue": isActive.value,
@@ -18709,7 +18487,8 @@ const VValidation = genericComponent()({
18709
18487
  const VVirtualScrollItem = genericComponent()({
18710
18488
  name: 'VVirtualScrollItem',
18711
18489
  props: {
18712
- dynamicHeight: Boolean
18490
+ dynamicHeight: Boolean,
18491
+ ...makeComponentProps()
18713
18492
  },
18714
18493
  emits: {
18715
18494
  'update:height': height => true
@@ -18736,7 +18515,8 @@ const VVirtualScrollItem = genericComponent()({
18736
18515
  onUpdated(updateHeight);
18737
18516
  useRender(() => createVNode("div", {
18738
18517
  "ref": props.dynamicHeight ? resizeRef : undefined,
18739
- "class": "v-virtual-scroll__item"
18518
+ "class": ['v-virtual-scroll__item', props.class],
18519
+ "style": props.style
18740
18520
  }, [slots.default?.()]));
18741
18521
  }
18742
18522
  });
@@ -18753,7 +18533,7 @@ const VVirtualScroll = genericComponent()({
18753
18533
  default: () => []
18754
18534
  },
18755
18535
  itemHeight: [Number, String],
18756
- visibleItems: [Number, String],
18536
+ ...makeComponentProps(),
18757
18537
  ...makeDimensionProps()
18758
18538
  },
18759
18539
  setup(props, _ref) {
@@ -18780,7 +18560,7 @@ const VVirtualScroll = genericComponent()({
18780
18560
  const sizeMap = new Map();
18781
18561
  let sizes = createRange(props.items.length).map(() => itemHeight.value);
18782
18562
  const visibleItems = computed(() => {
18783
- return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18563
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18784
18564
  });
18785
18565
  function handleItemResize(index, height) {
18786
18566
  itemHeight.value = Math.max(itemHeight.value, height);
@@ -18791,20 +18571,13 @@ const VVirtualScroll = genericComponent()({
18791
18571
  return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18792
18572
  }
18793
18573
  function calculateMidPointIndex(scrollTop) {
18794
- let start = 0;
18795
- let end = props.items.length;
18796
- while (start <= end) {
18797
- const middle = start + Math.floor((end - start) / 2);
18798
- const middleOffset = calculateOffset(middle);
18799
- if (middleOffset === scrollTop) {
18800
- return middle;
18801
- } else if (middleOffset < scrollTop) {
18802
- start = middle + 1;
18803
- } else if (middleOffset > scrollTop) {
18804
- end = middle - 1;
18805
- }
18574
+ const end = props.items.length;
18575
+ let middle = 0;
18576
+ let middleOffset = 0;
18577
+ while (middleOffset < scrollTop && middle < end) {
18578
+ middleOffset += sizes[middle++] || itemHeight.value;
18806
18579
  }
18807
- return start;
18580
+ return middle - 1;
18808
18581
  }
18809
18582
  let lastScrollTop = 0;
18810
18583
  function handleScroll() {
@@ -18826,8 +18599,12 @@ const VVirtualScroll = genericComponent()({
18826
18599
  const offset = calculateOffset(index);
18827
18600
  rootEl.value.scrollTop = offset;
18828
18601
  }
18602
+ const items = computed(() => props.items.map((item, index) => ({
18603
+ raw: item,
18604
+ index
18605
+ })));
18829
18606
  const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18830
- const computedItems = computed(() => props.items.slice(first.value, last.value));
18607
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18831
18608
  const paddingTop = computed(() => calculateOffset(first.value));
18832
18609
  const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18833
18610
  const {
@@ -18852,23 +18629,23 @@ const VVirtualScroll = genericComponent()({
18852
18629
  });
18853
18630
  useRender(() => createVNode("div", {
18854
18631
  "ref": rootEl,
18855
- "class": "v-virtual-scroll",
18632
+ "class": ['v-virtual-scroll', props.class],
18856
18633
  "onScroll": handleScroll,
18857
- "style": dimensionStyles.value
18634
+ "style": [dimensionStyles.value, props.style]
18858
18635
  }, [createVNode("div", {
18859
18636
  "class": "v-virtual-scroll__container",
18860
18637
  "style": {
18861
18638
  paddingTop: convertToUnit(paddingTop.value),
18862
18639
  paddingBottom: convertToUnit(paddingBottom.value)
18863
18640
  }
18864
- }, [computedItems.value.map((item, index) => createVNode(VVirtualScrollItem, {
18865
- "key": index,
18641
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18642
+ "key": item.index,
18866
18643
  "dynamicHeight": !props.itemHeight,
18867
- "onUpdate:height": height => handleItemResize(index + first.value, height)
18644
+ "onUpdate:height": height => handleItemResize(item.index, height)
18868
18645
  }, {
18869
18646
  default: () => [slots.default?.({
18870
- item,
18871
- index: index + first.value
18647
+ item: item.raw,
18648
+ index: item.index
18872
18649
  })]
18873
18650
  }))])]));
18874
18651
  return {
@@ -19016,130 +18793,542 @@ var components = /*#__PURE__*/Object.freeze({
19016
18793
 
19017
18794
  // Types
19018
18795
 
19019
- function mounted$2(el, binding) {
19020
- const modifiers = binding.modifiers || {};
19021
- const value = binding.value;
19022
- const {
19023
- once,
19024
- immediate,
19025
- ...modifierKeys
19026
- } = modifiers;
19027
- const defaultValue = !Object.keys(modifierKeys).length;
19028
- const {
19029
- handler,
19030
- options
19031
- } = typeof value === 'object' ? value : {
19032
- handler: value,
19033
- options: {
19034
- attributes: modifierKeys?.attr ?? defaultValue,
19035
- characterData: modifierKeys?.char ?? defaultValue,
19036
- childList: modifierKeys?.child ?? defaultValue,
19037
- subtree: modifierKeys?.sub ?? defaultValue
18796
+ function mounted$2(el, binding) {
18797
+ const modifiers = binding.modifiers || {};
18798
+ const value = binding.value;
18799
+ const {
18800
+ once,
18801
+ immediate,
18802
+ ...modifierKeys
18803
+ } = modifiers;
18804
+ const defaultValue = !Object.keys(modifierKeys).length;
18805
+ const {
18806
+ handler,
18807
+ options
18808
+ } = typeof value === 'object' ? value : {
18809
+ handler: value,
18810
+ options: {
18811
+ attributes: modifierKeys?.attr ?? defaultValue,
18812
+ characterData: modifierKeys?.char ?? defaultValue,
18813
+ childList: modifierKeys?.child ?? defaultValue,
18814
+ subtree: modifierKeys?.sub ?? defaultValue
18815
+ }
18816
+ };
18817
+ const observer = new MutationObserver(function () {
18818
+ let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
18819
+ let observer = arguments.length > 1 ? arguments[1] : undefined;
18820
+ handler?.(mutations, observer);
18821
+ if (once) unmounted$2(el, binding);
18822
+ });
18823
+ if (immediate) handler?.([], observer);
18824
+ el._mutate = Object(el._mutate);
18825
+ el._mutate[binding.instance.$.uid] = {
18826
+ observer
18827
+ };
18828
+ observer.observe(el, options);
18829
+ }
18830
+ function unmounted$2(el, binding) {
18831
+ if (!el._mutate?.[binding.instance.$.uid]) return;
18832
+ el._mutate[binding.instance.$.uid].observer.disconnect();
18833
+ delete el._mutate[binding.instance.$.uid];
18834
+ }
18835
+ const Mutate = {
18836
+ mounted: mounted$2,
18837
+ unmounted: unmounted$2
18838
+ };
18839
+
18840
+ function mounted$1(el, binding) {
18841
+ const handler = binding.value;
18842
+ const options = {
18843
+ passive: !binding.modifiers?.active
18844
+ };
18845
+ window.addEventListener('resize', handler, options);
18846
+ el._onResize = Object(el._onResize);
18847
+ el._onResize[binding.instance.$.uid] = {
18848
+ handler,
18849
+ options
18850
+ };
18851
+ if (!binding.modifiers?.quiet) {
18852
+ handler();
18853
+ }
18854
+ }
18855
+ function unmounted$1(el, binding) {
18856
+ if (!el._onResize?.[binding.instance.$.uid]) return;
18857
+ const {
18858
+ handler,
18859
+ options
18860
+ } = el._onResize[binding.instance.$.uid];
18861
+ window.removeEventListener('resize', handler, options);
18862
+ delete el._onResize[binding.instance.$.uid];
18863
+ }
18864
+ const Resize = {
18865
+ mounted: mounted$1,
18866
+ unmounted: unmounted$1
18867
+ };
18868
+
18869
+ function mounted(el, binding) {
18870
+ const {
18871
+ self = false
18872
+ } = binding.modifiers ?? {};
18873
+ const value = binding.value;
18874
+ const options = typeof value === 'object' && value.options || {
18875
+ passive: true
18876
+ };
18877
+ const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
18878
+ const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
18879
+ if (!target) return;
18880
+ target.addEventListener('scroll', handler, options);
18881
+ el._onScroll = Object(el._onScroll);
18882
+ el._onScroll[binding.instance.$.uid] = {
18883
+ handler,
18884
+ options,
18885
+ // Don't reference self
18886
+ target: self ? undefined : target
18887
+ };
18888
+ }
18889
+ function unmounted(el, binding) {
18890
+ if (!el._onScroll?.[binding.instance.$.uid]) return;
18891
+ const {
18892
+ handler,
18893
+ options,
18894
+ target = el
18895
+ } = el._onScroll[binding.instance.$.uid];
18896
+ target.removeEventListener('scroll', handler, options);
18897
+ delete el._onScroll[binding.instance.$.uid];
18898
+ }
18899
+ function updated(el, binding) {
18900
+ if (binding.value === binding.oldValue) return;
18901
+ unmounted(el, binding);
18902
+ mounted(el, binding);
18903
+ }
18904
+ const Scroll = {
18905
+ mounted,
18906
+ unmounted,
18907
+ updated
18908
+ };
18909
+
18910
+ var directives = /*#__PURE__*/Object.freeze({
18911
+ __proto__: null,
18912
+ ClickOutside: ClickOutside,
18913
+ Intersect: Intersect,
18914
+ Mutate: Mutate,
18915
+ Resize: Resize,
18916
+ Ripple: Ripple,
18917
+ Scroll: Scroll,
18918
+ Touch: Touch
18919
+ });
18920
+
18921
+ // Utilities
18922
+
18923
+ // Types
18924
+
18925
+ function getWeekArray(date) {
18926
+ let currentWeek = [];
18927
+ const weeks = [];
18928
+ const firstDayOfMonth = startOfMonth(date);
18929
+ const lastDayOfMonth = endOfMonth(date);
18930
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
18931
+ currentWeek.push(null);
18932
+ }
18933
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
18934
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
18935
+
18936
+ // Add the day to the current week
18937
+ currentWeek.push(day);
18938
+
18939
+ // If the current week has 7 days, add it to the weeks array and start a new week
18940
+ if (currentWeek.length === 7) {
18941
+ weeks.push(currentWeek);
18942
+ currentWeek = [];
19038
18943
  }
19039
- };
19040
- const observer = new MutationObserver(function () {
19041
- let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
19042
- let observer = arguments.length > 1 ? arguments[1] : undefined;
19043
- handler?.(mutations, observer);
19044
- if (once) unmounted$2(el, binding);
18944
+ }
18945
+ for (let i = currentWeek.length; i < 7; i++) {
18946
+ currentWeek.push(null);
18947
+ }
18948
+ weeks.push(currentWeek);
18949
+ return weeks;
18950
+ }
18951
+ function startOfMonth(date) {
18952
+ return new Date(date.getFullYear(), date.getMonth(), 1);
18953
+ }
18954
+ function endOfMonth(date) {
18955
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
18956
+ }
18957
+ function date(value) {
18958
+ if (value == null) return null;
18959
+ if (value instanceof Date) return value;
18960
+ if (typeof value === 'string') {
18961
+ const parsed = Date.parse(value);
18962
+ if (!isNaN(parsed)) return new Date(parsed);
18963
+ }
18964
+ return null;
18965
+ }
18966
+ const firstDay = {
18967
+ '001': 1,
18968
+ AD: 1,
18969
+ AE: 6,
18970
+ AF: 6,
18971
+ AG: 0,
18972
+ AI: 1,
18973
+ AL: 1,
18974
+ AM: 1,
18975
+ AN: 1,
18976
+ AR: 1,
18977
+ AS: 0,
18978
+ AT: 1,
18979
+ AU: 0,
18980
+ AX: 1,
18981
+ AZ: 1,
18982
+ BA: 1,
18983
+ BD: 0,
18984
+ BE: 1,
18985
+ BG: 1,
18986
+ BH: 6,
18987
+ BM: 1,
18988
+ BN: 1,
18989
+ BR: 0,
18990
+ BS: 0,
18991
+ BT: 0,
18992
+ BW: 0,
18993
+ BY: 1,
18994
+ BZ: 0,
18995
+ CA: 0,
18996
+ CH: 1,
18997
+ CL: 1,
18998
+ CM: 1,
18999
+ CN: 0,
19000
+ CO: 0,
19001
+ CR: 1,
19002
+ CY: 1,
19003
+ CZ: 1,
19004
+ DE: 1,
19005
+ DJ: 6,
19006
+ DK: 1,
19007
+ DM: 0,
19008
+ DO: 0,
19009
+ DZ: 6,
19010
+ EC: 1,
19011
+ EE: 1,
19012
+ EG: 6,
19013
+ ES: 1,
19014
+ ET: 0,
19015
+ FI: 1,
19016
+ FJ: 1,
19017
+ FO: 1,
19018
+ FR: 1,
19019
+ GB: 1,
19020
+ 'GB-alt-variant': 0,
19021
+ GE: 1,
19022
+ GF: 1,
19023
+ GP: 1,
19024
+ GR: 1,
19025
+ GT: 0,
19026
+ GU: 0,
19027
+ HK: 0,
19028
+ HN: 0,
19029
+ HR: 1,
19030
+ HU: 1,
19031
+ ID: 0,
19032
+ IE: 1,
19033
+ IL: 0,
19034
+ IN: 0,
19035
+ IQ: 6,
19036
+ IR: 6,
19037
+ IS: 1,
19038
+ IT: 1,
19039
+ JM: 0,
19040
+ JO: 6,
19041
+ JP: 0,
19042
+ KE: 0,
19043
+ KG: 1,
19044
+ KH: 0,
19045
+ KR: 0,
19046
+ KW: 6,
19047
+ KZ: 1,
19048
+ LA: 0,
19049
+ LB: 1,
19050
+ LI: 1,
19051
+ LK: 1,
19052
+ LT: 1,
19053
+ LU: 1,
19054
+ LV: 1,
19055
+ LY: 6,
19056
+ MC: 1,
19057
+ MD: 1,
19058
+ ME: 1,
19059
+ MH: 0,
19060
+ MK: 1,
19061
+ MM: 0,
19062
+ MN: 1,
19063
+ MO: 0,
19064
+ MQ: 1,
19065
+ MT: 0,
19066
+ MV: 5,
19067
+ MX: 0,
19068
+ MY: 1,
19069
+ MZ: 0,
19070
+ NI: 0,
19071
+ NL: 1,
19072
+ NO: 1,
19073
+ NP: 0,
19074
+ NZ: 1,
19075
+ OM: 6,
19076
+ PA: 0,
19077
+ PE: 0,
19078
+ PH: 0,
19079
+ PK: 0,
19080
+ PL: 1,
19081
+ PR: 0,
19082
+ PT: 0,
19083
+ PY: 0,
19084
+ QA: 6,
19085
+ RE: 1,
19086
+ RO: 1,
19087
+ RS: 1,
19088
+ RU: 1,
19089
+ SA: 0,
19090
+ SD: 6,
19091
+ SE: 1,
19092
+ SG: 0,
19093
+ SI: 1,
19094
+ SK: 1,
19095
+ SM: 1,
19096
+ SV: 0,
19097
+ SY: 6,
19098
+ TH: 0,
19099
+ TJ: 1,
19100
+ TM: 1,
19101
+ TR: 1,
19102
+ TT: 0,
19103
+ TW: 0,
19104
+ UA: 1,
19105
+ UM: 0,
19106
+ US: 0,
19107
+ UY: 1,
19108
+ UZ: 1,
19109
+ VA: 1,
19110
+ VE: 0,
19111
+ VI: 0,
19112
+ VN: 1,
19113
+ WS: 0,
19114
+ XK: 1,
19115
+ YE: 0,
19116
+ ZA: 0,
19117
+ ZW: 0
19118
+ };
19119
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
19120
+ function getWeekdays(locale) {
19121
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
19122
+ return createRange(7).map(i => {
19123
+ const weekday = new Date(sundayJanuarySecond2000);
19124
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
19125
+ return new Intl.DateTimeFormat(locale, {
19126
+ weekday: 'long'
19127
+ }).format(weekday);
19045
19128
  });
19046
- if (immediate) handler?.([], observer);
19047
- el._mutate = Object(el._mutate);
19048
- el._mutate[binding.instance.$.uid] = {
19049
- observer
19050
- };
19051
- observer.observe(el, options);
19052
19129
  }
19053
- function unmounted$2(el, binding) {
19054
- if (!el._mutate?.[binding.instance.$.uid]) return;
19055
- el._mutate[binding.instance.$.uid].observer.disconnect();
19056
- delete el._mutate[binding.instance.$.uid];
19130
+ function format(value, formatString, locale) {
19131
+ const date = new Date(value);
19132
+ let options = {};
19133
+ switch (formatString) {
19134
+ case 'fullDateWithWeekday':
19135
+ options = {
19136
+ weekday: 'long',
19137
+ day: 'numeric',
19138
+ month: 'long',
19139
+ year: 'numeric'
19140
+ };
19141
+ break;
19142
+ case 'normalDateWithWeekday':
19143
+ options = {
19144
+ weekday: 'short',
19145
+ day: 'numeric',
19146
+ month: 'short',
19147
+ year: 'numeric'
19148
+ };
19149
+ break;
19150
+ case 'keyboardDate':
19151
+ options = {};
19152
+ break;
19153
+ case 'monthAndDate':
19154
+ options = {
19155
+ month: 'long',
19156
+ day: 'numeric'
19157
+ };
19158
+ break;
19159
+ case 'monthAndYear':
19160
+ options = {
19161
+ month: 'long',
19162
+ year: 'numeric'
19163
+ };
19164
+ break;
19165
+ default:
19166
+ options = {
19167
+ timeZone: 'UTC',
19168
+ timeZoneName: 'short'
19169
+ };
19170
+ }
19171
+ return new Intl.DateTimeFormat(locale, options).format(date);
19172
+ }
19173
+ function addDays(date, amount) {
19174
+ const d = new Date(date);
19175
+ d.setDate(d.getDate() + amount);
19176
+ return d;
19177
+ }
19178
+ function addMonths(date, amount) {
19179
+ const d = new Date(date);
19180
+ d.setMonth(d.getMonth() + amount);
19181
+ return d;
19182
+ }
19183
+ function getYear(date) {
19184
+ return date.getFullYear();
19185
+ }
19186
+ function getMonth(date) {
19187
+ return date.getMonth();
19188
+ }
19189
+ function startOfYear(date) {
19190
+ return new Date(date.getFullYear(), 0, 1);
19191
+ }
19192
+ function endOfYear(date) {
19193
+ return new Date(date.getFullYear(), 11, 31);
19194
+ }
19195
+ function getMondayOfFirstWeekOfYear(year) {
19196
+ return new Date(year, 0, 1);
19057
19197
  }
19058
- const Mutate = {
19059
- mounted: mounted$2,
19060
- unmounted: unmounted$2
19061
- };
19062
19198
 
19063
- function mounted$1(el, binding) {
19064
- const handler = binding.value;
19065
- const options = {
19066
- passive: !binding.modifiers?.active
19067
- };
19068
- window.addEventListener('resize', handler, options);
19069
- el._onResize = Object(el._onResize);
19070
- el._onResize[binding.instance.$.uid] = {
19071
- handler,
19072
- options
19073
- };
19074
- if (!binding.modifiers?.quiet) {
19075
- handler();
19199
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
19200
+ function getWeek(date) {
19201
+ let year = date.getFullYear();
19202
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
19203
+ if (date < d1w1) {
19204
+ year = year - 1;
19205
+ d1w1 = getMondayOfFirstWeekOfYear(year);
19206
+ } else {
19207
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
19208
+ if (date >= tv) {
19209
+ year = year + 1;
19210
+ d1w1 = tv;
19211
+ }
19076
19212
  }
19213
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
19214
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
19215
+ return Math.floor(diffDays / 7) + 1;
19077
19216
  }
19078
- function unmounted$1(el, binding) {
19079
- if (!el._onResize?.[binding.instance.$.uid]) return;
19080
- const {
19081
- handler,
19082
- options
19083
- } = el._onResize[binding.instance.$.uid];
19084
- window.removeEventListener('resize', handler, options);
19085
- delete el._onResize[binding.instance.$.uid];
19217
+ function isWithinRange(date, range) {
19218
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
19086
19219
  }
19087
- const Resize = {
19088
- mounted: mounted$1,
19089
- unmounted: unmounted$1
19090
- };
19091
-
19092
- function mounted(el, binding) {
19093
- const {
19094
- self = false
19095
- } = binding.modifiers ?? {};
19096
- const value = binding.value;
19097
- const options = typeof value === 'object' && value.options || {
19098
- passive: true
19099
- };
19100
- const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;
19101
- const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
19102
- if (!target) return;
19103
- target.addEventListener('scroll', handler, options);
19104
- el._onScroll = Object(el._onScroll);
19105
- el._onScroll[binding.instance.$.uid] = {
19106
- handler,
19107
- options,
19108
- // Don't reference self
19109
- target: self ? undefined : target
19110
- };
19220
+ function isValid(date) {
19221
+ const d = new Date(date);
19222
+ return d instanceof Date && !isNaN(d.getTime());
19111
19223
  }
19112
- function unmounted(el, binding) {
19113
- if (!el._onScroll?.[binding.instance.$.uid]) return;
19114
- const {
19115
- handler,
19116
- options,
19117
- target = el
19118
- } = el._onScroll[binding.instance.$.uid];
19119
- target.removeEventListener('scroll', handler, options);
19120
- delete el._onScroll[binding.instance.$.uid];
19224
+ function isAfter(date, comparing) {
19225
+ return date.getTime() > comparing.getTime();
19121
19226
  }
19122
- function updated(el, binding) {
19123
- if (binding.value === binding.oldValue) return;
19124
- unmounted(el, binding);
19125
- mounted(el, binding);
19227
+ function isBefore(date, comparing) {
19228
+ return date.getTime() < comparing.getTime();
19229
+ }
19230
+ function isEqual(date, comparing) {
19231
+ return date.getTime() === comparing.getTime();
19232
+ }
19233
+ function isSameDay(date, comparing) {
19234
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19235
+ }
19236
+ function isSameMonth(date, comparing) {
19237
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19238
+ }
19239
+ function getDiff(date, comparing, unit) {
19240
+ const d = new Date(date);
19241
+ const c = new Date(comparing);
19242
+ if (unit === 'month') {
19243
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
19244
+ }
19245
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
19246
+ }
19247
+ function setYear(date, year) {
19248
+ const d = new Date(date);
19249
+ d.setFullYear(year);
19250
+ return d;
19251
+ }
19252
+ class VuetifyDateAdapter {
19253
+ constructor() {
19254
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
19255
+ this.locale = locale;
19256
+ }
19257
+ date(value) {
19258
+ return date(value);
19259
+ }
19260
+ addDays(date, amount) {
19261
+ return addDays(date, amount);
19262
+ }
19263
+ addMonths(date, amount) {
19264
+ return addMonths(date, amount);
19265
+ }
19266
+ getWeekArray(date) {
19267
+ return getWeekArray(date);
19268
+ }
19269
+ startOfMonth(date) {
19270
+ return startOfMonth(date);
19271
+ }
19272
+ endOfMonth(date) {
19273
+ return endOfMonth(date);
19274
+ }
19275
+ format(date, formatString) {
19276
+ return format(date, formatString, this.locale);
19277
+ }
19278
+ isEqual(date, comparing) {
19279
+ return isEqual(date, comparing);
19280
+ }
19281
+ isValid(date) {
19282
+ return isValid(date);
19283
+ }
19284
+ isWithinRange(date, range) {
19285
+ return isWithinRange(date, range);
19286
+ }
19287
+ isAfter(date, comparing) {
19288
+ return isAfter(date, comparing);
19289
+ }
19290
+ isSameDay(date, comparing) {
19291
+ return isSameDay(date, comparing);
19292
+ }
19293
+ isSameMonth(date, comparing) {
19294
+ return isSameMonth(date, comparing);
19295
+ }
19296
+ setYear(date, year) {
19297
+ return setYear(date, year);
19298
+ }
19299
+ getDiff(date, comparing, unit) {
19300
+ return getDiff(date, comparing, unit);
19301
+ }
19302
+ getWeek(date) {
19303
+ return getWeek(date);
19304
+ }
19305
+ getWeekdays() {
19306
+ return getWeekdays(this.locale);
19307
+ }
19308
+ getYear(date) {
19309
+ return getYear(date);
19310
+ }
19311
+ getMonth(date) {
19312
+ return getMonth(date);
19313
+ }
19314
+ startOfYear(date) {
19315
+ return startOfYear(date);
19316
+ }
19317
+ endOfYear(date) {
19318
+ return endOfYear(date);
19319
+ }
19126
19320
  }
19127
- const Scroll = {
19128
- mounted,
19129
- unmounted,
19130
- updated
19131
- };
19132
19321
 
19133
- var directives = /*#__PURE__*/Object.freeze({
19134
- __proto__: null,
19135
- ClickOutside: ClickOutside,
19136
- Intersect: Intersect,
19137
- Mutate: Mutate,
19138
- Resize: Resize,
19139
- Ripple: Ripple,
19140
- Scroll: Scroll,
19141
- Touch: Touch
19142
- });
19322
+ // Composables
19323
+
19324
+ // Types
19325
+
19326
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
19327
+ function createDate(options) {
19328
+ return options ?? {
19329
+ adapter: VuetifyDateAdapter
19330
+ };
19331
+ }
19143
19332
 
19144
19333
  // Composables
19145
19334
  function createVuetify$1() {
@@ -19226,7 +19415,7 @@ function createVuetify$1() {
19226
19415
  date
19227
19416
  };
19228
19417
  }
19229
- const version$1 = "4.0.0-dev-20230422.0";
19418
+ const version$1 = "4.0.0-dev-20230427.0";
19230
19419
  createVuetify$1.version = version$1;
19231
19420
 
19232
19421
  // Vue's inject() can only be used in setup
@@ -19246,8 +19435,8 @@ const createVuetify = function () {
19246
19435
  ...options
19247
19436
  });
19248
19437
  };
19249
- const version = "4.0.0-dev-20230422.0";
19438
+ const version = "4.0.0-dev-20230427.0";
19250
19439
  createVuetify.version = version;
19251
19440
 
19252
- export { components, createVuetify, directives, useDate, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19441
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19253
19442
  //# sourceMappingURL=vuetify.esm.js.map