vuetify 3.8.6 → 3.8.8

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 (360) hide show
  1. package/dist/json/attributes.json +3281 -3257
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +162 -162
  4. package/dist/json/tags.json +6 -0
  5. package/dist/json/web-types.json +5914 -5860
  6. package/dist/vuetify-labs.cjs +1059 -881
  7. package/dist/vuetify-labs.css +3481 -3475
  8. package/dist/vuetify-labs.d.ts +94 -60
  9. package/dist/vuetify-labs.esm.js +1060 -882
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1059 -881
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +946 -764
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3916 -3910
  16. package/dist/vuetify.d.ts +84 -60
  17. package/dist/vuetify.esm.js +947 -765
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +946 -764
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +1180 -1159
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.js +11 -11
  25. package/lib/components/VAlert/VAlert.js.map +1 -1
  26. package/lib/components/VApp/VApp.js +5 -5
  27. package/lib/components/VApp/VApp.js.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.css +6 -6
  29. package/lib/components/VAutocomplete/VAutocomplete.js +9 -9
  30. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  31. package/lib/components/VAutocomplete/VAutocomplete.sass +3 -9
  32. package/lib/components/VAvatar/VAvatar.js +4 -4
  33. package/lib/components/VAvatar/VAvatar.js.map +1 -1
  34. package/lib/components/VBadge/VBadge.js +3 -3
  35. package/lib/components/VBadge/VBadge.js.map +1 -1
  36. package/lib/components/VBanner/VBanner.js +6 -6
  37. package/lib/components/VBanner/VBanner.js.map +1 -1
  38. package/lib/components/VBanner/VBannerActions.js +4 -4
  39. package/lib/components/VBanner/VBannerActions.js.map +1 -1
  40. package/lib/components/VBottomNavigation/VBottomNavigation.js +6 -6
  41. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  42. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +5 -5
  43. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  44. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.js +4 -4
  45. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.js.map +1 -1
  46. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +5 -5
  47. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  48. package/lib/components/VBtn/VBtn.js +7 -7
  49. package/lib/components/VBtn/VBtn.js.map +1 -1
  50. package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
  51. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  52. package/lib/components/VCard/VCard.js +5 -5
  53. package/lib/components/VCard/VCard.js.map +1 -1
  54. package/lib/components/VCard/VCardActions.js +4 -4
  55. package/lib/components/VCard/VCardActions.js.map +1 -1
  56. package/lib/components/VCard/VCardItem.js +9 -9
  57. package/lib/components/VCard/VCardItem.js.map +1 -1
  58. package/lib/components/VCard/VCardSubtitle.js +4 -4
  59. package/lib/components/VCard/VCardSubtitle.js.map +1 -1
  60. package/lib/components/VCard/VCardText.js +4 -4
  61. package/lib/components/VCard/VCardText.js.map +1 -1
  62. package/lib/components/VCarousel/VCarousel.js +2 -2
  63. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  64. package/lib/components/VChip/VChip.js +12 -11
  65. package/lib/components/VChip/VChip.js.map +1 -1
  66. package/lib/components/VColorPicker/VColorPicker.js +3 -3
  67. package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
  68. package/lib/components/VColorPicker/VColorPickerCanvas.js +9 -9
  69. package/lib/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
  70. package/lib/components/VColorPicker/VColorPickerEdit.js +6 -6
  71. package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  72. package/lib/components/VColorPicker/VColorPickerPreview.js +9 -9
  73. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  74. package/lib/components/VColorPicker/VColorPickerSwatches.js +8 -8
  75. package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
  76. package/lib/components/VCombobox/VCombobox.css +6 -6
  77. package/lib/components/VCombobox/VCombobox.js +9 -9
  78. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  79. package/lib/components/VCombobox/VCombobox.sass +3 -9
  80. package/lib/components/VConfirmEdit/VConfirmEdit.js +3 -3
  81. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  82. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.js +3 -3
  83. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.js.map +1 -1
  84. package/lib/components/VCounter/VCounter.js +5 -5
  85. package/lib/components/VCounter/VCounter.js.map +1 -1
  86. package/lib/components/VDataIterator/VDataIterator.js +5 -5
  87. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  88. package/lib/components/VDataTable/VDataTable.js +4 -4
  89. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  90. package/lib/components/VDataTable/VDataTableColumn.js +3 -3
  91. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  92. package/lib/components/VDataTable/VDataTableFooter.js +6 -6
  93. package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
  94. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +5 -5
  95. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  96. package/lib/components/VDataTable/VDataTableHeaders.js +11 -11
  97. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  98. package/lib/components/VDataTable/VDataTableRow.js +6 -6
  99. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  100. package/lib/components/VDataTable/VDataTableRows.js +7 -7
  101. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  102. package/lib/components/VDataTable/VDataTableServer.js +4 -4
  103. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  104. package/lib/components/VDataTable/VDataTableVirtual.js +8 -8
  105. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  106. package/lib/components/VDatePicker/VDatePicker.d.ts +20 -0
  107. package/lib/components/VDatePicker/VDatePicker.js +42 -5
  108. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  109. package/lib/components/VDatePicker/VDatePickerControls.js +4 -4
  110. package/lib/components/VDatePicker/VDatePickerControls.js.map +1 -1
  111. package/lib/components/VDatePicker/VDatePickerHeader.js +8 -8
  112. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  113. package/lib/components/VDatePicker/VDatePickerMonth.js +13 -20
  114. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  115. package/lib/components/VDatePicker/VDatePickerMonths.d.ts +10 -0
  116. package/lib/components/VDatePicker/VDatePickerMonths.js +15 -5
  117. package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
  118. package/lib/components/VDatePicker/VDatePickerYears.d.ts +10 -0
  119. package/lib/components/VDatePicker/VDatePickerYears.js +17 -5
  120. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  121. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +5 -5
  122. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  123. package/lib/components/VDivider/VDivider.js +10 -10
  124. package/lib/components/VDivider/VDivider.js.map +1 -1
  125. package/lib/components/VEmptyState/VEmptyState.js +12 -12
  126. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  127. package/lib/components/VExpansionPanel/VExpansionPanel.js +6 -6
  128. package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
  129. package/lib/components/VExpansionPanel/VExpansionPanelText.js +5 -5
  130. package/lib/components/VExpansionPanel/VExpansionPanelText.js.map +1 -1
  131. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +10 -10
  132. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
  133. package/lib/components/VExpansionPanel/VExpansionPanels.js +4 -4
  134. package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  135. package/lib/components/VFab/VFab.js +7 -7
  136. package/lib/components/VFab/VFab.js.map +1 -1
  137. package/lib/components/VField/VField.js +20 -18
  138. package/lib/components/VField/VField.js.map +1 -1
  139. package/lib/components/VField/VFieldLabel.js +4 -4
  140. package/lib/components/VField/VFieldLabel.js.map +1 -1
  141. package/lib/components/VFileInput/VFileInput.js +5 -5
  142. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  143. package/lib/components/VFooter/VFooter.js +4 -4
  144. package/lib/components/VFooter/VFooter.js.map +1 -1
  145. package/lib/components/VForm/VForm.js +4 -4
  146. package/lib/components/VForm/VForm.js.map +1 -1
  147. package/lib/components/VGrid/VContainer.js +4 -4
  148. package/lib/components/VGrid/VContainer.js.map +1 -1
  149. package/lib/components/VIcon/VIcon.js +5 -5
  150. package/lib/components/VIcon/VIcon.js.map +1 -1
  151. package/lib/components/VImg/VImg.js +13 -13
  152. package/lib/components/VImg/VImg.js.map +1 -1
  153. package/lib/components/VInfiniteScroll/VInfiniteScroll.js +8 -8
  154. package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
  155. package/lib/components/VInput/InputIcon.d.ts +1 -1
  156. package/lib/components/VInput/InputIcon.js +5 -4
  157. package/lib/components/VInput/InputIcon.js.map +1 -1
  158. package/lib/components/VInput/VInput.js +9 -9
  159. package/lib/components/VInput/VInput.js.map +1 -1
  160. package/lib/components/VItemGroup/VItemGroup.js +3 -3
  161. package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
  162. package/lib/components/VLabel/VLabel.js +5 -5
  163. package/lib/components/VLabel/VLabel.js.map +1 -1
  164. package/lib/components/VLayout/VLayout.js +4 -4
  165. package/lib/components/VLayout/VLayout.js.map +1 -1
  166. package/lib/components/VLayout/VLayoutItem.js +4 -4
  167. package/lib/components/VLayout/VLayoutItem.js.map +1 -1
  168. package/lib/components/VLazy/VLazy.js +6 -6
  169. package/lib/components/VLazy/VLazy.js.map +1 -1
  170. package/lib/components/VList/VList.js +4 -4
  171. package/lib/components/VList/VList.js.map +1 -1
  172. package/lib/components/VList/VListGroup.js +5 -5
  173. package/lib/components/VList/VListGroup.js.map +1 -1
  174. package/lib/components/VList/VListItem.js +11 -11
  175. package/lib/components/VList/VListItem.js.map +1 -1
  176. package/lib/components/VList/VListItemAction.js +4 -4
  177. package/lib/components/VList/VListItemAction.js.map +1 -1
  178. package/lib/components/VList/VListItemMedia.js +4 -4
  179. package/lib/components/VList/VListItemMedia.js.map +1 -1
  180. package/lib/components/VList/VListItemSubtitle.js +4 -4
  181. package/lib/components/VList/VListItemSubtitle.js.map +1 -1
  182. package/lib/components/VList/VListSubheader.js +6 -6
  183. package/lib/components/VList/VListSubheader.js.map +1 -1
  184. package/lib/components/VLocaleProvider/VLocaleProvider.js +4 -4
  185. package/lib/components/VLocaleProvider/VLocaleProvider.js.map +1 -1
  186. package/lib/components/VMain/VMain.js +5 -5
  187. package/lib/components/VMain/VMain.js.map +1 -1
  188. package/lib/components/VMessages/VMessages.js +4 -4
  189. package/lib/components/VMessages/VMessages.js.map +1 -1
  190. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +7 -7
  191. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  192. package/lib/components/VNavigationDrawer/touch.js +2 -4
  193. package/lib/components/VNavigationDrawer/touch.js.map +1 -1
  194. package/lib/components/VNumberInput/VNumberInput.js +41 -24
  195. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  196. package/lib/components/VOtpInput/VOtpInput.js +8 -8
  197. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  198. package/lib/components/VOverlay/VOverlay.js +8 -8
  199. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  200. package/lib/components/VOverlay/locationStrategies.js +16 -8
  201. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  202. package/lib/components/VPagination/VPagination.js +11 -11
  203. package/lib/components/VPagination/VPagination.js.map +1 -1
  204. package/lib/components/VParallax/VParallax.js +4 -4
  205. package/lib/components/VParallax/VParallax.js.map +1 -1
  206. package/lib/components/VProgressCircular/VProgressCircular.js +12 -12
  207. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  208. package/lib/components/VProgressLinear/VProgressLinear.js +24 -24
  209. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  210. package/lib/components/VRadioGroup/VRadioGroup.js +2 -2
  211. package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
  212. package/lib/components/VRangeSlider/VRangeSlider.js +5 -5
  213. package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
  214. package/lib/components/VRating/VRating.js +14 -14
  215. package/lib/components/VRating/VRating.js.map +1 -1
  216. package/lib/components/VResponsive/VResponsive.js +9 -9
  217. package/lib/components/VResponsive/VResponsive.js.map +1 -1
  218. package/lib/components/VSelect/VSelect.css +6 -0
  219. package/lib/components/VSelect/VSelect.js +43 -14
  220. package/lib/components/VSelect/VSelect.js.map +1 -1
  221. package/lib/components/VSelect/VSelect.sass +3 -0
  222. package/lib/components/VSelect/_mixins.scss +14 -0
  223. package/lib/components/VSelectionControl/VSelectionControl.js +12 -12
  224. package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
  225. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +5 -5
  226. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
  227. package/lib/components/VSheet/VSheet.js +3 -3
  228. package/lib/components/VSheet/VSheet.js.map +1 -1
  229. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +4 -4
  230. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  231. package/lib/components/VSlideGroup/VSlideGroup.js +12 -12
  232. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  233. package/lib/components/VSlider/VSlider.js +4 -4
  234. package/lib/components/VSlider/VSlider.js.map +1 -1
  235. package/lib/components/VSlider/VSliderThumb.js +30 -24
  236. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  237. package/lib/components/VSlider/VSliderTrack.js +17 -17
  238. package/lib/components/VSlider/VSliderTrack.js.map +1 -1
  239. package/lib/components/VSlider/slider.js +5 -2
  240. package/lib/components/VSlider/slider.js.map +1 -1
  241. package/lib/components/VSnackbar/VSnackbar.js +4 -4
  242. package/lib/components/VSnackbar/VSnackbar.js.map +1 -1
  243. package/lib/components/VSnackbarQueue/VSnackbarQueue.js +3 -3
  244. package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
  245. package/lib/components/VSparkline/VBarline.js +12 -12
  246. package/lib/components/VSparkline/VBarline.js.map +1 -1
  247. package/lib/components/VSparkline/VTrendline.js +8 -8
  248. package/lib/components/VSparkline/VTrendline.js.map +1 -1
  249. package/lib/components/VStepper/VStepper.js +2 -2
  250. package/lib/components/VStepper/VStepper.js.map +1 -1
  251. package/lib/components/VStepper/VStepperActions.js +2 -2
  252. package/lib/components/VStepper/VStepperActions.js.map +1 -1
  253. package/lib/components/VStepper/VStepperItem.js +10 -10
  254. package/lib/components/VStepper/VStepperItem.js.map +1 -1
  255. package/lib/components/VSwitch/VSwitch.js +10 -10
  256. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  257. package/lib/components/VSystemBar/VSystemBar.js +4 -4
  258. package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
  259. package/lib/components/VTable/VTable.js +6 -6
  260. package/lib/components/VTable/VTable.js.map +1 -1
  261. package/lib/components/VTabs/VTab.js +4 -4
  262. package/lib/components/VTabs/VTab.js.map +1 -1
  263. package/lib/components/VTabs/VTabs.js +2 -2
  264. package/lib/components/VTabs/VTabs.js.map +1 -1
  265. package/lib/components/VTextField/VTextField.js +12 -12
  266. package/lib/components/VTextField/VTextField.js.map +1 -1
  267. package/lib/components/VTextarea/VTextarea.js +10 -10
  268. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  269. package/lib/components/VThemeProvider/VThemeProvider.js +3 -3
  270. package/lib/components/VThemeProvider/VThemeProvider.js.map +1 -1
  271. package/lib/components/VTimeline/VTimeline.js +5 -5
  272. package/lib/components/VTimeline/VTimeline.js.map +1 -1
  273. package/lib/components/VTimeline/VTimelineDivider.js +17 -17
  274. package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
  275. package/lib/components/VTimeline/VTimelineItem.js +9 -9
  276. package/lib/components/VTimeline/VTimelineItem.js.map +1 -1
  277. package/lib/components/VToolbar/VToolbar.js +9 -9
  278. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  279. package/lib/components/VToolbar/VToolbarItems.js +4 -4
  280. package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
  281. package/lib/components/VToolbar/VToolbarTitle.js +4 -4
  282. package/lib/components/VToolbar/VToolbarTitle.js.map +1 -1
  283. package/lib/components/VVirtualScroll/VVirtualScroll.js +7 -7
  284. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  285. package/lib/components/VVirtualScroll/VVirtualScrollItem.js +3 -3
  286. package/lib/components/VVirtualScroll/VVirtualScrollItem.js.map +1 -1
  287. package/lib/components/VWindow/VWindow.js +11 -11
  288. package/lib/components/VWindow/VWindow.js.map +1 -1
  289. package/lib/components/VWindow/VWindowItem.js +6 -6
  290. package/lib/components/VWindow/VWindowItem.js.map +1 -1
  291. package/lib/composables/date/date.d.ts +4 -0
  292. package/lib/composables/date/date.js +14 -1
  293. package/lib/composables/date/date.js.map +1 -1
  294. package/lib/composables/filter.js +8 -8
  295. package/lib/composables/filter.js.map +1 -1
  296. package/lib/composables/goto.js +1 -1
  297. package/lib/composables/goto.js.map +1 -1
  298. package/lib/composables/icons.js +6 -6
  299. package/lib/composables/icons.js.map +1 -1
  300. package/lib/composables/list-items.js +2 -2
  301. package/lib/composables/list-items.js.map +1 -1
  302. package/lib/composables/loader.js +3 -3
  303. package/lib/composables/loader.js.map +1 -1
  304. package/lib/composables/variant.js +5 -5
  305. package/lib/composables/variant.js.map +1 -1
  306. package/lib/entry-bundler.d.ts +3 -0
  307. package/lib/entry-bundler.js +1 -1
  308. package/lib/framework.d.ts +64 -60
  309. package/lib/framework.js +1 -1
  310. package/lib/labs/VCalendar/VCalendar.js +15 -15
  311. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  312. package/lib/labs/VCalendar/VCalendarDay.js +4 -4
  313. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  314. package/lib/labs/VCalendar/VCalendarHeader.js +4 -4
  315. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  316. package/lib/labs/VCalendar/VCalendarInterval.js +10 -10
  317. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  318. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +2 -2
  319. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  320. package/lib/labs/VCalendar/VCalendarMonthDay.js +6 -6
  321. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  322. package/lib/labs/VColorInput/VColorInput.js +3 -3
  323. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  324. package/lib/labs/VDateInput/VDateInput.d.ts +20 -0
  325. package/lib/labs/VDateInput/VDateInput.js +5 -9
  326. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  327. package/lib/labs/VFileUpload/VFileUpload.js +9 -9
  328. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  329. package/lib/labs/VFileUpload/VFileUploadItem.js +3 -3
  330. package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
  331. package/lib/labs/VIconBtn/VIconBtn.js +7 -7
  332. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  333. package/lib/labs/VPicker/VPicker.js +7 -7
  334. package/lib/labs/VPicker/VPicker.js.map +1 -1
  335. package/lib/labs/VPullToRefresh/VPullToRefresh.js +11 -11
  336. package/lib/labs/VPullToRefresh/VPullToRefresh.js.map +1 -1
  337. package/lib/labs/VStepperVertical/VStepperVertical.js +2 -2
  338. package/lib/labs/VStepperVertical/VStepperVertical.js.map +1 -1
  339. package/lib/labs/VStepperVertical/VStepperVerticalItem.js +5 -5
  340. package/lib/labs/VStepperVertical/VStepperVerticalItem.js.map +1 -1
  341. package/lib/labs/VTimePicker/VTimePicker.js +2 -2
  342. package/lib/labs/VTimePicker/VTimePicker.js.map +1 -1
  343. package/lib/labs/VTimePicker/VTimePickerClock.js +15 -15
  344. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  345. package/lib/labs/VTimePicker/VTimePickerControls.js +24 -24
  346. package/lib/labs/VTimePicker/VTimePickerControls.js.map +1 -1
  347. package/lib/labs/VTreeview/VTreeviewChildren.js +2 -2
  348. package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
  349. package/lib/labs/VTreeview/VTreeviewGroup.js +2 -2
  350. package/lib/labs/VTreeview/VTreeviewGroup.js.map +1 -1
  351. package/lib/labs/VTreeview/VTreeviewItem.js +3 -3
  352. package/lib/labs/VTreeview/VTreeviewItem.js.map +1 -1
  353. package/lib/labs/entry-bundler.d.ts +3 -0
  354. package/lib/util/box.d.ts +1 -0
  355. package/lib/util/box.js +27 -0
  356. package/lib/util/box.js.map +1 -1
  357. package/lib/util/helpers.d.ts +2 -0
  358. package/lib/util/helpers.js +24 -1
  359. package/lib/util/helpers.js.map +1 -1
  360. package/package.json +7 -7
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.8.6
2
+ * Vuetify v3.8.8
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, createVNode, mergeProps, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, watchEffect, toRef, capitalize, camelize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, normalizeStyle, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -510,6 +510,29 @@ function checkPrintable(e) {
510
510
  function isPrimitive(value) {
511
511
  return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
512
512
  }
513
+ function extractNumber(text, decimalDigitsLimit) {
514
+ const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
515
+ // sign allowed at the start
516
+ x === '.' && i === all.indexOf('.') ||
517
+ // decimal separator allowed only once
518
+ /\d/.test(x)).join('');
519
+ if (decimalDigitsLimit === 0) {
520
+ return cleanText.split('.')[0];
521
+ }
522
+ if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
523
+ const parts = cleanText.split('.');
524
+ return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
525
+ }
526
+ return cleanText;
527
+ }
528
+ function camelizeProps(props) {
529
+ if (!props) return;
530
+ const out = {};
531
+ for (const prop in props) {
532
+ out[camelize(prop)] = props[prop];
533
+ }
534
+ return out;
535
+ }
513
536
 
514
537
  // Utilities
515
538
  const block = ['top', 'bottom'];
@@ -614,6 +637,33 @@ function getTargetBox(target) {
614
637
  return target.getBoundingClientRect();
615
638
  }
616
639
  }
640
+ function getElementBox(el) {
641
+ if (el === document.documentElement) {
642
+ if (!visualViewport) {
643
+ return new Box({
644
+ x: 0,
645
+ y: 0,
646
+ width: document.documentElement.clientWidth,
647
+ height: document.documentElement.clientHeight
648
+ });
649
+ } else {
650
+ return new Box({
651
+ x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
652
+ y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
653
+ width: visualViewport.width * visualViewport.scale,
654
+ height: visualViewport.height * visualViewport.scale
655
+ });
656
+ }
657
+ } else {
658
+ const rect = el.getBoundingClientRect();
659
+ return new Box({
660
+ x: rect.x,
661
+ y: rect.y,
662
+ width: el.clientWidth,
663
+ height: el.clientHeight
664
+ });
665
+ }
666
+ }
617
667
 
618
668
  // Utilities
619
669
 
@@ -1612,18 +1662,18 @@ const VSvgIcon = defineComponent({
1612
1662
  return createVNode(props.tag, mergeProps(attrs, {
1613
1663
  "style": null
1614
1664
  }), {
1615
- default: () => [createVNode("svg", {
1665
+ default: () => [createElementVNode("svg", {
1616
1666
  "class": "v-icon__svg",
1617
1667
  "xmlns": "http://www.w3.org/2000/svg",
1618
1668
  "viewBox": "0 0 24 24",
1619
1669
  "role": "img",
1620
1670
  "aria-hidden": "true"
1621
- }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
1671
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createElementVNode("path", {
1622
1672
  "d": path[0],
1623
1673
  "fill-opacity": path[1]
1624
- }, null) : createVNode("path", {
1674
+ }, null) : createElementVNode("path", {
1625
1675
  "d": path
1626
- }, null)) : createVNode("path", {
1676
+ }, null)) : createElementVNode("path", {
1627
1677
  "d": props.icon
1628
1678
  }, null)])]
1629
1679
  });
@@ -1647,7 +1697,7 @@ const VClassIcon = defineComponent({
1647
1697
  setup(props) {
1648
1698
  return () => {
1649
1699
  return createVNode(props.tag, {
1650
- "class": props.icon
1700
+ "class": normalizeClass(props.icon)
1651
1701
  }, null);
1652
1702
  };
1653
1703
  }
@@ -3112,11 +3162,11 @@ const VApp = genericComponent()({
3112
3162
  const {
3113
3163
  rtlClasses
3114
3164
  } = useRtl();
3115
- useRender(() => createVNode("div", {
3165
+ useRender(() => createElementVNode("div", {
3116
3166
  "ref": layoutRef,
3117
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
3118
- "style": [props.style]
3119
- }, [createVNode("div", {
3167
+ "class": normalizeClass(['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class]),
3168
+ "style": normalizeStyle([props.style])
3169
+ }, [createElementVNode("div", {
3120
3170
  "class": "v-application__wrap"
3121
3171
  }, [slots.default?.()])]));
3122
3172
  return {
@@ -3156,10 +3206,10 @@ const VToolbarTitle = genericComponent()({
3156
3206
  useRender(() => {
3157
3207
  const hasText = !!(slots.default || slots.text || props.text);
3158
3208
  return createVNode(props.tag, {
3159
- "class": ['v-toolbar-title', props.class],
3160
- "style": props.style
3209
+ "class": normalizeClass(['v-toolbar-title', props.class]),
3210
+ "style": normalizeStyle(props.style)
3161
3211
  }, {
3162
- default: () => [hasText && createVNode("div", {
3212
+ default: () => [hasText && createElementVNode("div", {
3163
3213
  "class": "v-toolbar-title__placeholder"
3164
3214
  }, [slots.text ? slots.text() : props.text, slots.default?.()])]
3165
3215
  });
@@ -3619,16 +3669,16 @@ const VResponsive = genericComponent()({
3619
3669
  const {
3620
3670
  dimensionStyles
3621
3671
  } = useDimension(props);
3622
- useRender(() => createVNode("div", {
3623
- "class": ['v-responsive', {
3672
+ useRender(() => createElementVNode("div", {
3673
+ "class": normalizeClass(['v-responsive', {
3624
3674
  'v-responsive--inline': props.inline
3625
- }, props.class],
3626
- "style": [dimensionStyles.value, props.style]
3627
- }, [createVNode("div", {
3675
+ }, props.class]),
3676
+ "style": normalizeStyle([dimensionStyles.value, props.style])
3677
+ }, [createElementVNode("div", {
3628
3678
  "class": "v-responsive__sizer",
3629
- "style": aspectStyles.value
3630
- }, null), slots.additional?.(), slots.default && createVNode("div", {
3631
- "class": ['v-responsive__content', props.contentClass]
3679
+ "style": normalizeStyle(aspectStyles.value)
3680
+ }, null), slots.additional?.(), slots.default && createElementVNode("div", {
3681
+ "class": normalizeClass(['v-responsive__content', props.contentClass])
3632
3682
  }, [slots.default()])]));
3633
3683
  return {};
3634
3684
  }
@@ -3862,7 +3912,7 @@ const makeVImgProps = propsFactory({
3862
3912
  const VImg = genericComponent()({
3863
3913
  name: 'VImg',
3864
3914
  directives: {
3865
- intersect: Intersect
3915
+ vIntersect: Intersect
3866
3916
  },
3867
3917
  props: makeVImgProps(),
3868
3918
  emits: {
@@ -3991,8 +4041,8 @@ const VImg = genericComponent()({
3991
4041
  }));
3992
4042
  const __image = () => {
3993
4043
  if (!normalisedSrc.value.src || state.value === 'idle') return null;
3994
- const img = createVNode("img", {
3995
- "class": ['v-img__img', containClasses.value],
4044
+ const img = createElementVNode("img", {
4045
+ "class": normalizeClass(['v-img__img', containClasses.value]),
3996
4046
  "style": {
3997
4047
  objectPosition: props.position
3998
4048
  },
@@ -4012,7 +4062,7 @@ const VImg = genericComponent()({
4012
4062
  "transition": props.transition,
4013
4063
  "appear": true
4014
4064
  }, {
4015
- default: () => [withDirectives(sources ? createVNode("picture", {
4065
+ default: () => [withDirectives(sources ? createElementVNode("picture", {
4016
4066
  "class": "v-img__picture"
4017
4067
  }, [sources, img]) : img, [[vShow, state.value === 'loaded']])]
4018
4068
  });
@@ -4020,8 +4070,8 @@ const VImg = genericComponent()({
4020
4070
  const __preloadImage = () => createVNode(MaybeTransition, {
4021
4071
  "transition": props.transition
4022
4072
  }, {
4023
- default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && createVNode("img", {
4024
- "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
4073
+ default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && createElementVNode("img", {
4074
+ "class": normalizeClass(['v-img__img', 'v-img__img--preload', containClasses.value]),
4025
4075
  "style": {
4026
4076
  objectPosition: props.position
4027
4077
  },
@@ -4038,7 +4088,7 @@ const VImg = genericComponent()({
4038
4088
  "transition": props.transition,
4039
4089
  "appear": true
4040
4090
  }, {
4041
- default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && createVNode("div", {
4091
+ default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && createElementVNode("div", {
4042
4092
  "class": "v-img__placeholder"
4043
4093
  }, [slots.placeholder()])]
4044
4094
  });
@@ -4049,14 +4099,14 @@ const VImg = genericComponent()({
4049
4099
  "transition": props.transition,
4050
4100
  "appear": true
4051
4101
  }, {
4052
- default: () => [state.value === 'error' && createVNode("div", {
4102
+ default: () => [state.value === 'error' && createElementVNode("div", {
4053
4103
  "class": "v-img__error"
4054
4104
  }, [slots.error()])]
4055
4105
  });
4056
4106
  };
4057
4107
  const __gradient = () => {
4058
4108
  if (!props.gradient) return null;
4059
- return createVNode("div", {
4109
+ return createElementVNode("div", {
4060
4110
  "class": "v-img__gradient",
4061
4111
  "style": {
4062
4112
  backgroundImage: `linear-gradient(${props.gradient})`
@@ -4092,9 +4142,9 @@ const VImg = genericComponent()({
4092
4142
  "aria-label": props.alt,
4093
4143
  "role": props.alt ? 'img' : undefined
4094
4144
  }), {
4095
- additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
4145
+ additional: () => createElementVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
4096
4146
  default: slots.default
4097
- }), [[resolveDirective("intersect"), {
4147
+ }), [[Intersect, {
4098
4148
  handler: init,
4099
4149
  options: props.options
4100
4150
  }, null, {
@@ -4237,16 +4287,16 @@ const VToolbar = genericComponent()({
4237
4287
  const extension = slots.extension?.();
4238
4288
  isExtended.value = !!(props.extended || extension);
4239
4289
  return createVNode(props.tag, {
4240
- "class": ['v-toolbar', {
4290
+ "class": normalizeClass(['v-toolbar', {
4241
4291
  'v-toolbar--absolute': props.absolute,
4242
4292
  'v-toolbar--collapse': props.collapse,
4243
4293
  'v-toolbar--flat': props.flat,
4244
4294
  'v-toolbar--floating': props.floating,
4245
4295
  [`v-toolbar--density-${props.density}`]: true
4246
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
4247
- "style": [backgroundColorStyles.value, props.style]
4296
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class]),
4297
+ "style": normalizeStyle([backgroundColorStyles.value, props.style])
4248
4298
  }, {
4249
- default: () => [hasImage && createVNode("div", {
4299
+ default: () => [hasImage && createElementVNode("div", {
4250
4300
  "key": "image",
4251
4301
  "class": "v-toolbar__image"
4252
4302
  }, [!slots.image ? createVNode(VImg, {
@@ -4269,19 +4319,19 @@ const VToolbar = genericComponent()({
4269
4319
  }
4270
4320
  }
4271
4321
  }, {
4272
- default: () => [createVNode("div", {
4322
+ default: () => [createElementVNode("div", {
4273
4323
  "class": "v-toolbar__content",
4274
4324
  "style": {
4275
4325
  height: convertToUnit(contentHeight.value)
4276
4326
  }
4277
- }, [slots.prepend && createVNode("div", {
4327
+ }, [slots.prepend && createElementVNode("div", {
4278
4328
  "class": "v-toolbar__prepend"
4279
4329
  }, [slots.prepend?.()]), hasTitle && createVNode(VToolbarTitle, {
4280
4330
  "key": "title",
4281
4331
  "text": props.title
4282
4332
  }, {
4283
4333
  text: slots.title
4284
- }), slots.default?.(), slots.append && createVNode("div", {
4334
+ }), slots.default?.(), slots.append && createElementVNode("div", {
4285
4335
  "class": "v-toolbar__append"
4286
4336
  }, [slots.append?.()])])]
4287
4337
  }), createVNode(VDefaultsProvider, {
@@ -4292,7 +4342,7 @@ const VToolbar = genericComponent()({
4292
4342
  }
4293
4343
  }, {
4294
4344
  default: () => [createVNode(VExpandTransition, null, {
4295
- default: () => [isExtended.value && createVNode("div", {
4345
+ default: () => [isExtended.value && createElementVNode("div", {
4296
4346
  "class": "v-toolbar__extension",
4297
4347
  "style": {
4298
4348
  height: convertToUnit(extensionHeight.value)
@@ -4575,12 +4625,12 @@ function useDensity(props) {
4575
4625
 
4576
4626
  const allowedVariants$2 = ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'];
4577
4627
  function genOverlays(isClickable, name) {
4578
- return createVNode(Fragment, null, [isClickable && createVNode("span", {
4628
+ return createElementVNode(Fragment, null, [isClickable && createElementVNode("span", {
4579
4629
  "key": "overlay",
4580
- "class": `${name}__overlay`
4581
- }, null), createVNode("span", {
4630
+ "class": normalizeClass(`${name}__overlay`)
4631
+ }, null), createElementVNode("span", {
4582
4632
  "key": "underlay",
4583
- "class": `${name}__underlay`
4633
+ "class": normalizeClass(`${name}__underlay`)
4584
4634
  }, null)]);
4585
4635
  }
4586
4636
  const makeVariantProps = propsFactory({
@@ -4664,10 +4714,10 @@ const VBtnGroup = genericComponent()({
4664
4714
  });
4665
4715
  useRender(() => {
4666
4716
  return createVNode(props.tag, {
4667
- "class": ['v-btn-group', {
4717
+ "class": normalizeClass(['v-btn-group', {
4668
4718
  'v-btn-group--divided': props.divided
4669
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
4670
- "style": props.style
4719
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
4720
+ "style": normalizeStyle(props.style)
4671
4721
  }, slots);
4672
4722
  });
4673
4723
  }
@@ -5024,19 +5074,19 @@ const VIcon = genericComponent()({
5024
5074
  return createVNode(iconData.value.component, {
5025
5075
  "tag": props.tag,
5026
5076
  "icon": iconData.value.icon,
5027
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
5077
+ "class": normalizeClass(['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
5028
5078
  'v-icon--clickable': hasClick,
5029
5079
  'v-icon--disabled': props.disabled,
5030
5080
  'v-icon--start': props.start,
5031
5081
  'v-icon--end': props.end
5032
- }, props.class],
5033
- "style": [{
5082
+ }, props.class]),
5083
+ "style": normalizeStyle([{
5034
5084
  '--v-icon-opacity': props.opacity
5035
5085
  }, !sizeClasses.value ? {
5036
5086
  fontSize: convertToUnit(props.size),
5037
5087
  height: convertToUnit(props.size),
5038
5088
  width: convertToUnit(props.size)
5039
- } : undefined, textColorStyles.value, props.style],
5089
+ } : undefined, textColorStyles.value, props.style]),
5040
5090
  "role": hasClick ? 'button' : undefined,
5041
5091
  "aria-hidden": !hasClick,
5042
5092
  "tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
@@ -5133,7 +5183,7 @@ const VProgressCircular = genericComponent()({
5133
5183
  resizeRef,
5134
5184
  contentRect
5135
5185
  } = useResizeObserver();
5136
- const normalizedValue = toRef(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
5186
+ const normalizedValue = toRef(() => clamp(parseFloat(props.modelValue), 0, 100));
5137
5187
  const width = toRef(() => Number(props.width));
5138
5188
  const size = toRef(() => {
5139
5189
  // Get size from element if size prop value is small, large etc
@@ -5148,26 +5198,26 @@ const VProgressCircular = genericComponent()({
5148
5198
  });
5149
5199
  useRender(() => createVNode(props.tag, {
5150
5200
  "ref": root,
5151
- "class": ['v-progress-circular', {
5201
+ "class": normalizeClass(['v-progress-circular', {
5152
5202
  'v-progress-circular--indeterminate': !!props.indeterminate,
5153
5203
  'v-progress-circular--visible': isIntersecting.value,
5154
5204
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
5155
- }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
5156
- "style": [sizeStyles.value, textColorStyles.value, props.style],
5205
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class]),
5206
+ "style": normalizeStyle([sizeStyles.value, textColorStyles.value, props.style]),
5157
5207
  "role": "progressbar",
5158
5208
  "aria-valuemin": "0",
5159
5209
  "aria-valuemax": "100",
5160
5210
  "aria-valuenow": props.indeterminate ? undefined : normalizedValue.value
5161
5211
  }, {
5162
- default: () => [createVNode("svg", {
5212
+ default: () => [createElementVNode("svg", {
5163
5213
  "style": {
5164
5214
  transform: `rotate(calc(-90deg + ${Number(props.rotate)}deg))`
5165
5215
  },
5166
5216
  "xmlns": "http://www.w3.org/2000/svg",
5167
5217
  "viewBox": `0 0 ${diameter.value} ${diameter.value}`
5168
- }, [createVNode("circle", {
5169
- "class": ['v-progress-circular__underlay', underlayColorClasses.value],
5170
- "style": underlayColorStyles.value,
5218
+ }, [createElementVNode("circle", {
5219
+ "class": normalizeClass(['v-progress-circular__underlay', underlayColorClasses.value]),
5220
+ "style": normalizeStyle(underlayColorStyles.value),
5171
5221
  "fill": "transparent",
5172
5222
  "cx": "50%",
5173
5223
  "cy": "50%",
@@ -5175,7 +5225,7 @@ const VProgressCircular = genericComponent()({
5175
5225
  "stroke-width": strokeWidth.value,
5176
5226
  "stroke-dasharray": CIRCUMFERENCE,
5177
5227
  "stroke-dashoffset": 0
5178
- }, null), createVNode("circle", {
5228
+ }, null), createElementVNode("circle", {
5179
5229
  "class": "v-progress-circular__overlay",
5180
5230
  "fill": "transparent",
5181
5231
  "cx": "50%",
@@ -5184,7 +5234,7 @@ const VProgressCircular = genericComponent()({
5184
5234
  "stroke-width": strokeWidth.value,
5185
5235
  "stroke-dasharray": CIRCUMFERENCE,
5186
5236
  "stroke-dashoffset": strokeDashOffset.value
5187
- }, null)]), slots.default && createVNode("div", {
5237
+ }, null)]), slots.default && createElementVNode("div", {
5188
5238
  "class": "v-progress-circular__content"
5189
5239
  }, [slots.default({
5190
5240
  value: normalizedValue.value
@@ -5358,21 +5408,21 @@ const VProgressLinear = genericComponent()({
5358
5408
  }
5359
5409
  useRender(() => createVNode(props.tag, {
5360
5410
  "ref": intersectionRef,
5361
- "class": ['v-progress-linear', {
5411
+ "class": normalizeClass(['v-progress-linear', {
5362
5412
  'v-progress-linear--absolute': props.absolute,
5363
5413
  'v-progress-linear--active': props.active && isIntersecting.value,
5364
5414
  'v-progress-linear--reverse': isReversed.value,
5365
5415
  'v-progress-linear--rounded': props.rounded,
5366
5416
  'v-progress-linear--rounded-bar': props.roundedBar,
5367
5417
  'v-progress-linear--striped': props.striped
5368
- }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
5369
- "style": [{
5418
+ }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class]),
5419
+ "style": normalizeStyle([{
5370
5420
  bottom: props.location === 'bottom' ? 0 : undefined,
5371
5421
  top: props.location === 'top' ? 0 : undefined,
5372
5422
  height: props.active ? convertToUnit(height.value) : 0,
5373
5423
  '--v-progress-linear-height': convertToUnit(height.value),
5374
5424
  ...(props.absolute ? locationStyles.value : {})
5375
- }, props.style],
5425
+ }, props.style]),
5376
5426
  "role": "progressbar",
5377
5427
  "aria-hidden": props.active ? 'false' : 'true',
5378
5428
  "aria-valuemin": "0",
@@ -5380,9 +5430,9 @@ const VProgressLinear = genericComponent()({
5380
5430
  "aria-valuenow": props.indeterminate ? undefined : Math.min(parseFloat(progress.value), max.value),
5381
5431
  "onClick": props.clickable && handleClick
5382
5432
  }, {
5383
- default: () => [props.stream && createVNode("div", {
5433
+ default: () => [props.stream && createElementVNode("div", {
5384
5434
  "key": "stream",
5385
- "class": ['v-progress-linear__stream', textColorClasses.value],
5435
+ "class": normalizeClass(['v-progress-linear__stream', textColorClasses.value]),
5386
5436
  "style": {
5387
5437
  ...textColorStyles.value,
5388
5438
  [isReversed.value ? 'left' : 'right']: convertToUnit(-height.value),
@@ -5392,34 +5442,34 @@ const VProgressLinear = genericComponent()({
5392
5442
  width: convertToUnit(100 - normalizedBuffer.value, '%'),
5393
5443
  '--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1))
5394
5444
  }
5395
- }, null), createVNode("div", {
5396
- "class": ['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],
5397
- "style": [backgroundColorStyles.value, {
5445
+ }, null), createElementVNode("div", {
5446
+ "class": normalizeClass(['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
5447
+ "style": normalizeStyle([backgroundColorStyles.value, {
5398
5448
  opacity: parseFloat(props.bgOpacity),
5399
5449
  width: props.stream ? 0 : undefined
5400
- }]
5401
- }, null), createVNode("div", {
5402
- "class": ['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined],
5403
- "style": [bufferColorStyles.value, {
5450
+ }])
5451
+ }, null), createElementVNode("div", {
5452
+ "class": normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5453
+ "style": normalizeStyle([bufferColorStyles.value, {
5404
5454
  opacity: parseFloat(props.bufferOpacity),
5405
5455
  width: convertToUnit(normalizedBuffer.value, '%')
5406
- }]
5456
+ }])
5407
5457
  }, null), createVNode(Transition, {
5408
5458
  "name": transition.value
5409
5459
  }, {
5410
- default: () => [!props.indeterminate ? createVNode("div", {
5411
- "class": ['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined],
5412
- "style": [barColorStyles.value, {
5460
+ default: () => [!props.indeterminate ? createElementVNode("div", {
5461
+ "class": normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5462
+ "style": normalizeStyle([barColorStyles.value, {
5413
5463
  width: convertToUnit(normalizedValue.value, '%')
5414
- }]
5415
- }, null) : createVNode("div", {
5464
+ }])
5465
+ }, null) : createElementVNode("div", {
5416
5466
  "class": "v-progress-linear__indeterminate"
5417
- }, [['long', 'short'].map(bar => createVNode("div", {
5467
+ }, [['long', 'short'].map(bar => createElementVNode("div", {
5418
5468
  "key": bar,
5419
- "class": ['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined],
5420
- "style": barColorStyles.value
5469
+ "class": normalizeClass(['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5470
+ "style": normalizeStyle(barColorStyles.value)
5421
5471
  }, null))])]
5422
- }), slots.default && createVNode("div", {
5472
+ }), slots.default && createElementVNode("div", {
5423
5473
  "class": "v-progress-linear__content"
5424
5474
  }, [slots.default({
5425
5475
  value: normalizedValue.value,
@@ -5449,8 +5499,8 @@ function LoaderSlot(props, _ref) {
5449
5499
  let {
5450
5500
  slots
5451
5501
  } = _ref;
5452
- return createVNode("div", {
5453
- "class": `${props.name}__loader`
5502
+ return createElementVNode("div", {
5503
+ "class": normalizeClass(`${props.name}__loader`)
5454
5504
  }, [slots.default?.({
5455
5505
  color: props.color,
5456
5506
  isActive: props.active
@@ -6040,7 +6090,7 @@ const VBtn = genericComponent()({
6040
6090
  "onClick": onClick,
6041
6091
  "value": valueAttr.value
6042
6092
  }, link.linkProps), {
6043
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createVNode("span", {
6093
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && createElementVNode("span", {
6044
6094
  "key": "prepend",
6045
6095
  "class": "v-btn__prepend"
6046
6096
  }, [!slots.prepend ? createVNode(VIcon, {
@@ -6054,7 +6104,7 @@ const VBtn = genericComponent()({
6054
6104
  icon: props.prependIcon
6055
6105
  }
6056
6106
  }
6057
- }, slots.prepend)]), createVNode("span", {
6107
+ }, slots.prepend)]), createElementVNode("span", {
6058
6108
  "class": "v-btn__content",
6059
6109
  "data-no-activator": ""
6060
6110
  }, [!slots.default && hasIcon ? createVNode(VIcon, {
@@ -6070,7 +6120,7 @@ const VBtn = genericComponent()({
6070
6120
  }
6071
6121
  }, {
6072
6122
  default: () => [slots.default?.() ?? toDisplayString(props.text)]
6073
- })]), !props.icon && hasAppend && createVNode("span", {
6123
+ })]), !props.icon && hasAppend && createElementVNode("span", {
6074
6124
  "key": "append",
6075
6125
  "class": "v-btn__append"
6076
6126
  }, [!slots.append ? createVNode(VIcon, {
@@ -6084,7 +6134,7 @@ const VBtn = genericComponent()({
6084
6134
  icon: props.appendIcon
6085
6135
  }
6086
6136
  }
6087
- }, slots.append)]), !!props.loading && createVNode("span", {
6137
+ }, slots.append)]), !!props.loading && createElementVNode("span", {
6088
6138
  "key": "loader",
6089
6139
  "class": "v-btn__loader"
6090
6140
  }, [slots.loader?.() ?? createVNode(VProgressCircular, {
@@ -6257,20 +6307,20 @@ const VAlert = genericComponent()({
6257
6307
  const hasTitle = !!(slots.title || props.title);
6258
6308
  const hasClose = !!(slots.close || props.closable);
6259
6309
  return isActive.value && createVNode(props.tag, {
6260
- "class": ['v-alert', props.border && {
6310
+ "class": normalizeClass(['v-alert', props.border && {
6261
6311
  'v-alert--border': !!props.border,
6262
6312
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
6263
6313
  }, {
6264
6314
  'v-alert--prominent': props.prominent
6265
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
6266
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
6315
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class]),
6316
+ "style": normalizeStyle([colorStyles.value, dimensionStyles.value, locationStyles.value, props.style]),
6267
6317
  "role": "alert"
6268
6318
  }, {
6269
- default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
6319
+ default: () => [genOverlays(false, 'v-alert'), props.border && createElementVNode("div", {
6270
6320
  "key": "border",
6271
- "class": ['v-alert__border', textColorClasses.value],
6272
- "style": textColorStyles.value
6273
- }, null), hasPrepend && createVNode("div", {
6321
+ "class": normalizeClass(['v-alert__border', textColorClasses.value]),
6322
+ "style": normalizeStyle(textColorStyles.value)
6323
+ }, null), hasPrepend && createElementVNode("div", {
6274
6324
  "key": "prepend",
6275
6325
  "class": "v-alert__prepend"
6276
6326
  }, [!slots.prepend ? createVNode(VIcon, {
@@ -6288,16 +6338,16 @@ const VAlert = genericComponent()({
6288
6338
  size: props.prominent ? 44 : 28
6289
6339
  }
6290
6340
  }
6291
- }, slots.prepend)]), createVNode("div", {
6341
+ }, slots.prepend)]), createElementVNode("div", {
6292
6342
  "class": "v-alert__content"
6293
6343
  }, [hasTitle && createVNode(VAlertTitle, {
6294
6344
  "key": "title"
6295
6345
  }, {
6296
6346
  default: () => [slots.title?.() ?? props.title]
6297
- }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && createVNode("div", {
6347
+ }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && createElementVNode("div", {
6298
6348
  "key": "append",
6299
6349
  "class": "v-alert__append"
6300
- }, [slots.append()]), hasClose && createVNode("div", {
6350
+ }, [slots.append()]), hasClose && createElementVNode("div", {
6301
6351
  "key": "close",
6302
6352
  "class": "v-alert__close"
6303
6353
  }, [!slots.close ? createVNode(VBtn, mergeProps({
@@ -6370,11 +6420,11 @@ const VAvatar = genericComponent()({
6370
6420
  sizeStyles
6371
6421
  } = useSize(props);
6372
6422
  useRender(() => createVNode(props.tag, {
6373
- "class": ['v-avatar', {
6423
+ "class": normalizeClass(['v-avatar', {
6374
6424
  'v-avatar--start': props.start,
6375
6425
  'v-avatar--end': props.end
6376
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6377
- "style": [colorStyles.value, sizeStyles.value, props.style]
6426
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class]),
6427
+ "style": normalizeStyle([colorStyles.value, sizeStyles.value, props.style])
6378
6428
  }, {
6379
6429
  default: () => [!slots.default ? props.image ? createVNode(VImg, {
6380
6430
  "key": "image",
@@ -6416,11 +6466,11 @@ const VLabel = genericComponent()({
6416
6466
  let {
6417
6467
  slots
6418
6468
  } = _ref;
6419
- useRender(() => createVNode("label", {
6420
- "class": ['v-label', {
6469
+ useRender(() => createElementVNode("label", {
6470
+ "class": normalizeClass(['v-label', {
6421
6471
  'v-label--clickable': !!props.onClick
6422
- }, props.class],
6423
- "style": props.style,
6472
+ }, props.class]),
6473
+ "style": normalizeStyle(props.style),
6424
6474
  "onClick": props.onClick
6425
6475
  }, [props.text, slots.default?.()]));
6426
6476
  return {};
@@ -6515,11 +6565,11 @@ const VSelectionControlGroup = genericComponent()({
6515
6565
  valueComparator: toRef(() => props.valueComparator)
6516
6566
  }
6517
6567
  });
6518
- useRender(() => createVNode("div", {
6519
- "class": ['v-selection-control-group', {
6568
+ useRender(() => createElementVNode("div", {
6569
+ "class": normalizeClass(['v-selection-control-group', {
6520
6570
  'v-selection-control-group--inline': props.inline
6521
- }, props.class],
6522
- "style": props.style,
6571
+ }, props.class]),
6572
+ "style": normalizeStyle(props.style),
6523
6573
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6524
6574
  }, [slots.default?.()]));
6525
6575
  return {};
@@ -6595,7 +6645,7 @@ function useSelectionControl(props) {
6595
6645
  const VSelectionControl = genericComponent()({
6596
6646
  name: 'VSelectionControl',
6597
6647
  directives: {
6598
- Ripple
6648
+ vRipple: Ripple
6599
6649
  },
6600
6650
  inheritAttrs: false,
6601
6651
  props: makeVSelectionControlProps(),
@@ -6666,7 +6716,7 @@ const VSelectionControl = genericComponent()({
6666
6716
  }
6667
6717
  }) : props.label;
6668
6718
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
6669
- const inputNode = createVNode("input", mergeProps({
6719
+ const inputNode = createElementVNode("input", mergeProps({
6670
6720
  "ref": input,
6671
6721
  "checked": model.value,
6672
6722
  "disabled": !!props.disabled,
@@ -6681,7 +6731,7 @@ const VSelectionControl = genericComponent()({
6681
6731
  "name": props.name,
6682
6732
  "aria-checked": props.type === 'checkbox' ? model.value : undefined
6683
6733
  }, inputAttrs), null);
6684
- return createVNode("div", mergeProps({
6734
+ return createElementVNode("div", mergeProps({
6685
6735
  "class": ['v-selection-control', {
6686
6736
  'v-selection-control--dirty': model.value,
6687
6737
  'v-selection-control--disabled': props.disabled,
@@ -6692,14 +6742,14 @@ const VSelectionControl = genericComponent()({
6692
6742
  }, densityClasses.value, props.class]
6693
6743
  }, rootAttrs, {
6694
6744
  "style": props.style
6695
- }), [createVNode("div", {
6696
- "class": ['v-selection-control__wrapper', textColorClasses.value],
6697
- "style": textColorStyles.value
6745
+ }), [createElementVNode("div", {
6746
+ "class": normalizeClass(['v-selection-control__wrapper', textColorClasses.value]),
6747
+ "style": normalizeStyle(textColorStyles.value)
6698
6748
  }, [slots.default?.({
6699
6749
  backgroundColorClasses,
6700
6750
  backgroundColorStyles
6701
- }), withDirectives(createVNode("div", {
6702
- "class": ['v-selection-control__input']
6751
+ }), withDirectives(createElementVNode("div", {
6752
+ "class": normalizeClass(['v-selection-control__input'])
6703
6753
  }, [slots.input?.({
6704
6754
  model,
6705
6755
  textColorClasses,
@@ -6713,10 +6763,10 @@ const VSelectionControl = genericComponent()({
6713
6763
  onBlur,
6714
6764
  id: id.value
6715
6765
  }
6716
- }) ?? createVNode(Fragment, null, [icon.value && createVNode(VIcon, {
6766
+ }) ?? createElementVNode(Fragment, null, [icon.value && createVNode(VIcon, {
6717
6767
  "key": "icon",
6718
6768
  "icon": icon.value
6719
- }, null), inputNode])]), [[resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && createVNode(VLabel, {
6769
+ }, null), inputNode])]), [[Ripple, props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && createVNode(VLabel, {
6720
6770
  "for": id.value,
6721
6771
  "onClick": onClickLabel
6722
6772
  }, {
@@ -6793,7 +6843,8 @@ function useInputIcon(props) {
6793
6843
  function InputIcon(_ref) {
6794
6844
  let {
6795
6845
  name,
6796
- color
6846
+ color,
6847
+ ...attrs
6797
6848
  } = _ref;
6798
6849
  const localeKey = {
6799
6850
  prepend: 'prependAction',
@@ -6810,13 +6861,13 @@ function useInputIcon(props) {
6810
6861
  callEvent(listener, new PointerEvent('click', e));
6811
6862
  }
6812
6863
  const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
6813
- return createVNode(VIcon, {
6864
+ return createVNode(VIcon, mergeProps({
6814
6865
  "icon": props[`${name}Icon`],
6815
6866
  "aria-label": label,
6816
6867
  "onClick": listener,
6817
6868
  "onKeydown": onKeydown,
6818
6869
  "color": color
6819
- }, null);
6870
+ }, attrs), null);
6820
6871
  }
6821
6872
  return {
6822
6873
  InputIcon
@@ -6856,10 +6907,10 @@ const VMessages = genericComponent()({
6856
6907
  useRender(() => createVNode(MaybeTransition, {
6857
6908
  "transition": props.transition,
6858
6909
  "tag": "div",
6859
- "class": ['v-messages', textColorClasses.value, props.class],
6860
- "style": [textColorStyles.value, props.style]
6910
+ "class": normalizeClass(['v-messages', textColorClasses.value, props.class]),
6911
+ "style": normalizeStyle([textColorStyles.value, props.style])
6861
6912
  }, {
6862
- default: () => [props.active && messages.value.map((message, i) => createVNode("div", {
6913
+ default: () => [props.active && messages.value.map((message, i) => createElementVNode("div", {
6863
6914
  "class": "v-messages__message",
6864
6915
  "key": `${i}-${messages.value}`
6865
6916
  }, [slots.message ? slots.message({
@@ -7325,31 +7376,31 @@ const VInput = genericComponent()({
7325
7376
  const hasAppend = !!(slots.append || props.appendIcon);
7326
7377
  const hasMessages = messages.value.length > 0;
7327
7378
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
7328
- return createVNode("div", {
7329
- "class": ['v-input', `v-input--${props.direction}`, {
7379
+ return createElementVNode("div", {
7380
+ "class": normalizeClass(['v-input', `v-input--${props.direction}`, {
7330
7381
  'v-input--center-affix': props.centerAffix,
7331
7382
  'v-input--focused': props.focused,
7332
7383
  'v-input--glow': props.glow,
7333
7384
  'v-input--hide-spin-buttons': props.hideSpinButtons
7334
- }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],
7335
- "style": [dimensionStyles.value, props.style]
7336
- }, [hasPrepend && createVNode("div", {
7385
+ }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class]),
7386
+ "style": normalizeStyle([dimensionStyles.value, props.style])
7387
+ }, [hasPrepend && createElementVNode("div", {
7337
7388
  "key": "prepend",
7338
7389
  "class": "v-input__prepend"
7339
7390
  }, [slots.prepend?.(slotProps.value), props.prependIcon && createVNode(InputIcon, {
7340
7391
  "key": "prepend-icon",
7341
7392
  "name": "prepend",
7342
7393
  "color": iconColor.value
7343
- }, null)]), slots.default && createVNode("div", {
7394
+ }, null)]), slots.default && createElementVNode("div", {
7344
7395
  "class": "v-input__control"
7345
- }, [slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
7396
+ }, [slots.default?.(slotProps.value)]), hasAppend && createElementVNode("div", {
7346
7397
  "key": "append",
7347
7398
  "class": "v-input__append"
7348
7399
  }, [props.appendIcon && createVNode(InputIcon, {
7349
7400
  "key": "append-icon",
7350
7401
  "name": "append",
7351
7402
  "color": iconColor.value
7352
- }, null), slots.append?.(slotProps.value)]), hasDetails && createVNode("div", {
7403
+ }, null), slots.append?.(slotProps.value)]), hasDetails && createElementVNode("div", {
7353
7404
  "id": messagesId.value,
7354
7405
  "class": "v-input__details",
7355
7406
  "role": "alert",
@@ -7740,7 +7791,7 @@ function clampTarget(container, value, rtl, horizontal) {
7740
7791
  min = 0;
7741
7792
  max = scrollHeight + -containerHeight;
7742
7793
  }
7743
- return Math.max(Math.min(value, max), min);
7794
+ return clamp(value, min, max);
7744
7795
  }
7745
7796
 
7746
7797
  function calculateUpdatedTarget(_ref) {
@@ -8098,42 +8149,42 @@ const VSlideGroup = genericComponent()({
8098
8149
  return scrollSizeMax - Math.abs(scrollOffset.value) > 1;
8099
8150
  });
8100
8151
  useRender(() => createVNode(props.tag, {
8101
- "class": ['v-slide-group', {
8152
+ "class": normalizeClass(['v-slide-group', {
8102
8153
  'v-slide-group--vertical': !isHorizontal.value,
8103
8154
  'v-slide-group--has-affixes': hasAffixes.value,
8104
8155
  'v-slide-group--is-overflowing': isOverflowing.value
8105
- }, displayClasses.value, props.class],
8106
- "style": props.style,
8156
+ }, displayClasses.value, props.class]),
8157
+ "style": normalizeStyle(props.style),
8107
8158
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
8108
8159
  "onFocus": onFocus
8109
8160
  }, {
8110
- default: () => [hasAffixes.value && createVNode("div", {
8161
+ default: () => [hasAffixes.value && createElementVNode("div", {
8111
8162
  "key": "prev",
8112
- "class": ['v-slide-group__prev', {
8163
+ "class": normalizeClass(['v-slide-group__prev', {
8113
8164
  'v-slide-group__prev--disabled': !hasPrev.value
8114
- }],
8165
+ }]),
8115
8166
  "onMousedown": onFocusAffixes,
8116
8167
  "onClick": () => hasPrev.value && scrollTo('prev')
8117
8168
  }, [slots.prev?.(slotProps.value) ?? createVNode(VFadeTransition, null, {
8118
8169
  default: () => [createVNode(VIcon, {
8119
8170
  "icon": isRtl.value ? props.nextIcon : props.prevIcon
8120
8171
  }, null)]
8121
- })]), createVNode("div", {
8172
+ })]), createElementVNode("div", {
8122
8173
  "key": "container",
8123
8174
  "ref": containerRef,
8124
8175
  "class": "v-slide-group__container",
8125
8176
  "onScroll": onScroll
8126
- }, [createVNode("div", {
8177
+ }, [createElementVNode("div", {
8127
8178
  "ref": contentRef,
8128
8179
  "class": "v-slide-group__content",
8129
8180
  "onFocusin": onFocusin,
8130
8181
  "onFocusout": onFocusout,
8131
8182
  "onKeydown": onKeydown
8132
- }, [slots.default?.(slotProps.value)])]), hasAffixes.value && createVNode("div", {
8183
+ }, [slots.default?.(slotProps.value)])]), hasAffixes.value && createElementVNode("div", {
8133
8184
  "key": "next",
8134
- "class": ['v-slide-group__next', {
8185
+ "class": normalizeClass(['v-slide-group__next', {
8135
8186
  'v-slide-group__next--disabled': !hasNext.value
8136
- }],
8187
+ }]),
8137
8188
  "onMousedown": onFocusAffixes,
8138
8189
  "onClick": () => hasNext.value && scrollTo('next')
8139
8190
  }, [slots.next?.(slotProps.value) ?? createVNode(VFadeTransition, null, {
@@ -8288,7 +8339,7 @@ const makeVChipProps = propsFactory({
8288
8339
  const VChip = genericComponent()({
8289
8340
  name: 'VChip',
8290
8341
  directives: {
8291
- Ripple
8342
+ vRipple: Ripple
8292
8343
  },
8293
8344
  props: makeVChipProps(),
8294
8345
  emits: {
@@ -8331,6 +8382,7 @@ const VChip = genericComponent()({
8331
8382
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8332
8383
  const closeProps = toRef(() => ({
8333
8384
  'aria-label': t(props.closeLabel),
8385
+ disabled: props.disabled,
8334
8386
  onClick(e) {
8335
8387
  e.preventDefault();
8336
8388
  e.stopPropagation();
@@ -8388,7 +8440,7 @@ const VChip = genericComponent()({
8388
8440
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VExpandXTransition, {
8389
8441
  "key": "filter"
8390
8442
  }, {
8391
- default: () => [withDirectives(createVNode("div", {
8443
+ default: () => [withDirectives(createElementVNode("div", {
8392
8444
  "class": "v-chip__filter"
8393
8445
  }, [!slots.filter ? createVNode(VIcon, {
8394
8446
  "key": "filter-icon",
@@ -8402,10 +8454,10 @@ const VChip = genericComponent()({
8402
8454
  }
8403
8455
  }
8404
8456
  }, slots.filter)]), [[vShow, group.isSelected.value]])]
8405
- }), hasPrepend && createVNode("div", {
8457
+ }), hasPrepend && createElementVNode("div", {
8406
8458
  "key": "prepend",
8407
8459
  "class": "v-chip__prepend"
8408
- }, [!slots.prepend ? createVNode(Fragment, null, [props.prependIcon && createVNode(VIcon, {
8460
+ }, [!slots.prepend ? createElementVNode(Fragment, null, [props.prependIcon && createVNode(VIcon, {
8409
8461
  "key": "prepend-icon",
8410
8462
  "icon": props.prependIcon,
8411
8463
  "start": true
@@ -8426,7 +8478,7 @@ const VChip = genericComponent()({
8426
8478
  start: true
8427
8479
  }
8428
8480
  }
8429
- }, slots.prepend)]), createVNode("div", {
8481
+ }, slots.prepend)]), createElementVNode("div", {
8430
8482
  "class": "v-chip__content",
8431
8483
  "data-no-activator": ""
8432
8484
  }, [slots.default?.({
@@ -8436,10 +8488,10 @@ const VChip = genericComponent()({
8436
8488
  toggle: group?.toggle,
8437
8489
  value: group?.value.value,
8438
8490
  disabled: props.disabled
8439
- }) ?? toDisplayString(props.text)]), hasAppend && createVNode("div", {
8491
+ }) ?? toDisplayString(props.text)]), hasAppend && createElementVNode("div", {
8440
8492
  "key": "append",
8441
8493
  "class": "v-chip__append"
8442
- }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
8494
+ }, [!slots.append ? createElementVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
8443
8495
  "key": "append-icon",
8444
8496
  "end": true,
8445
8497
  "icon": props.appendIcon
@@ -8460,7 +8512,7 @@ const VChip = genericComponent()({
8460
8512
  icon: props.appendIcon
8461
8513
  }
8462
8514
  }
8463
- }, slots.append)]), hasClose && createVNode("button", mergeProps({
8515
+ }, slots.append)]), hasClose && createElementVNode("button", mergeProps({
8464
8516
  "key": "close",
8465
8517
  "class": "v-chip__close",
8466
8518
  "type": "button",
@@ -8478,7 +8530,7 @@ const VChip = genericComponent()({
8478
8530
  }
8479
8531
  }
8480
8532
  }, slots.close)])]
8481
- }), [[resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
8533
+ }), [[Ripple, isClickable.value && props.ripple, null]]);
8482
8534
  };
8483
8535
  }
8484
8536
  });
@@ -9251,13 +9303,13 @@ const VListGroup = genericComponent()({
9251
9303
  }
9252
9304
  }));
9253
9305
  useRender(() => createVNode(props.tag, {
9254
- "class": ['v-list-group', {
9306
+ "class": normalizeClass(['v-list-group', {
9255
9307
  'v-list-group--prepend': list?.hasPrepend.value,
9256
9308
  'v-list-group--fluid': props.fluid,
9257
9309
  'v-list-group--subgroup': props.subgroup,
9258
9310
  'v-list-group--open': isOpen.value
9259
- }, props.class],
9260
- "style": props.style
9311
+ }, props.class]),
9312
+ "style": normalizeStyle(props.style)
9261
9313
  }, {
9262
9314
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
9263
9315
  "defaults": activatorDefaults.value
@@ -9274,7 +9326,7 @@ const VListGroup = genericComponent()({
9274
9326
  },
9275
9327
  "disabled": !isBooted.value
9276
9328
  }, {
9277
- default: () => [withDirectives(createVNode("div", {
9329
+ default: () => [withDirectives(createElementVNode("div", {
9278
9330
  "class": "v-list-group__items",
9279
9331
  "role": "group",
9280
9332
  "aria-labelledby": id.value
@@ -9300,10 +9352,10 @@ const VListItemSubtitle = genericComponent()({
9300
9352
  slots
9301
9353
  } = _ref;
9302
9354
  useRender(() => createVNode(props.tag, {
9303
- "class": ['v-list-item-subtitle', props.class],
9304
- "style": [{
9355
+ "class": normalizeClass(['v-list-item-subtitle', props.class]),
9356
+ "style": normalizeStyle([{
9305
9357
  '--v-list-item-subtitle-opacity': props.opacity
9306
- }, props.style]
9358
+ }, props.style])
9307
9359
  }, slots));
9308
9360
  return {};
9309
9361
  }
@@ -9366,7 +9418,7 @@ const makeVListItemProps = propsFactory({
9366
9418
  const VListItem = genericComponent()({
9367
9419
  name: 'VListItem',
9368
9420
  directives: {
9369
- Ripple
9421
+ vRipple: Ripple
9370
9422
  },
9371
9423
  props: makeVListItemProps(),
9372
9424
  emits: {
@@ -9501,10 +9553,10 @@ const VListItem = genericComponent()({
9501
9553
  "onClick": onClick,
9502
9554
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9503
9555
  }, link.linkProps), {
9504
- default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createVNode("div", {
9556
+ default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && createElementVNode("div", {
9505
9557
  "key": "prepend",
9506
9558
  "class": "v-list-item__prepend"
9507
- }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
9559
+ }, [!slots.prepend ? createElementVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
9508
9560
  "key": "prepend-avatar",
9509
9561
  "density": props.density,
9510
9562
  "image": props.prependAvatar
@@ -9530,9 +9582,9 @@ const VListItem = genericComponent()({
9530
9582
  }
9531
9583
  }, {
9532
9584
  default: () => [slots.prepend?.(slotProps.value)]
9533
- }), createVNode("div", {
9585
+ }), createElementVNode("div", {
9534
9586
  "class": "v-list-item__spacer"
9535
- }, null)]), createVNode("div", {
9587
+ }, null)]), createElementVNode("div", {
9536
9588
  "class": "v-list-item__content",
9537
9589
  "data-no-activator": ""
9538
9590
  }, [hasTitle && createVNode(VListItemTitle, {
@@ -9547,10 +9599,10 @@ const VListItem = genericComponent()({
9547
9599
  default: () => [slots.subtitle?.({
9548
9600
  subtitle: props.subtitle
9549
9601
  }) ?? toDisplayString(props.subtitle)]
9550
- }), slots.default?.(slotProps.value)]), hasAppend && createVNode("div", {
9602
+ }), slots.default?.(slotProps.value)]), hasAppend && createElementVNode("div", {
9551
9603
  "key": "append",
9552
9604
  "class": "v-list-item__append"
9553
- }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
9605
+ }, [!slots.append ? createElementVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
9554
9606
  "key": "append-icon",
9555
9607
  "density": props.density,
9556
9608
  "icon": props.appendIcon
@@ -9576,10 +9628,10 @@ const VListItem = genericComponent()({
9576
9628
  }
9577
9629
  }, {
9578
9630
  default: () => [slots.append?.(slotProps.value)]
9579
- }), createVNode("div", {
9631
+ }), createElementVNode("div", {
9580
9632
  "class": "v-list-item__spacer"
9581
9633
  }, null)])]
9582
- }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
9634
+ }), [[Ripple, isClickable.value && props.ripple]]);
9583
9635
  });
9584
9636
  return {
9585
9637
  activate,
@@ -9617,15 +9669,15 @@ const VListSubheader = genericComponent()({
9617
9669
  useRender(() => {
9618
9670
  const hasText = !!(slots.default || props.title);
9619
9671
  return createVNode(props.tag, {
9620
- "class": ['v-list-subheader', {
9672
+ "class": normalizeClass(['v-list-subheader', {
9621
9673
  'v-list-subheader--inset': props.inset,
9622
9674
  'v-list-subheader--sticky': props.sticky
9623
- }, textColorClasses.value, props.class],
9624
- "style": [{
9675
+ }, textColorClasses.value, props.class]),
9676
+ "style": normalizeStyle([{
9625
9677
  textColorStyles
9626
- }, props.style]
9678
+ }, props.style])
9627
9679
  }, {
9628
- default: () => [hasText && createVNode("div", {
9680
+ default: () => [hasText && createElementVNode("div", {
9629
9681
  "class": "v-list-subheader__text"
9630
9682
  }, [slots.default?.() ?? props.title])]
9631
9683
  });
@@ -9670,25 +9722,25 @@ const VDivider = genericComponent()({
9670
9722
  return styles;
9671
9723
  });
9672
9724
  useRender(() => {
9673
- const divider = createVNode("hr", {
9674
- "class": [{
9725
+ const divider = createElementVNode("hr", {
9726
+ "class": normalizeClass([{
9675
9727
  'v-divider': true,
9676
9728
  'v-divider--inset': props.inset,
9677
9729
  'v-divider--vertical': props.vertical
9678
- }, themeClasses.value, textColorClasses.value, props.class],
9679
- "style": [dividerStyles.value, textColorStyles.value, {
9730
+ }, themeClasses.value, textColorClasses.value, props.class]),
9731
+ "style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
9680
9732
  '--v-border-opacity': props.opacity
9681
- }, props.style],
9733
+ }, props.style]),
9682
9734
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
9683
9735
  "role": `${attrs.role || 'separator'}`
9684
9736
  }, null);
9685
9737
  if (!slots.default) return divider;
9686
- return createVNode("div", {
9687
- "class": ['v-divider__wrapper', {
9738
+ return createElementVNode("div", {
9739
+ "class": normalizeClass(['v-divider__wrapper', {
9688
9740
  'v-divider__wrapper--vertical': props.vertical,
9689
9741
  'v-divider__wrapper--inset': props.inset
9690
- }]
9691
- }, [divider, createVNode("div", {
9742
+ }])
9743
+ }, [divider, createElementVNode("div", {
9692
9744
  "class": "v-divider__content"
9693
9745
  }, [slots.default()]), divider]);
9694
9746
  });
@@ -9812,7 +9864,7 @@ function transformItem$3(props, item) {
9812
9864
  const _props = {
9813
9865
  title,
9814
9866
  value,
9815
- ...itemProps
9867
+ ...camelizeProps(itemProps)
9816
9868
  };
9817
9869
  return {
9818
9870
  title: String(_props.title ?? ''),
@@ -10107,12 +10159,12 @@ const VList = genericComponent()({
10107
10159
  useRender(() => {
10108
10160
  return createVNode(props.tag, {
10109
10161
  "ref": contentRef,
10110
- "class": ['v-list', {
10162
+ "class": normalizeClass(['v-list', {
10111
10163
  'v-list--disabled': props.disabled,
10112
10164
  'v-list--nav': props.nav,
10113
10165
  'v-list--slim': props.slim
10114
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
10115
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
10166
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
10167
+ "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
10116
10168
  "tabindex": props.disabled ? -1 : 0,
10117
10169
  "role": "listbox",
10118
10170
  "aria-activedescendant": undefined,
@@ -10156,11 +10208,11 @@ const VListItemAction = genericComponent()({
10156
10208
  slots
10157
10209
  } = _ref;
10158
10210
  useRender(() => createVNode(props.tag, {
10159
- "class": ['v-list-item-action', {
10211
+ "class": normalizeClass(['v-list-item-action', {
10160
10212
  'v-list-item-action--start': props.start,
10161
10213
  'v-list-item-action--end': props.end
10162
- }, props.class],
10163
- "style": props.style
10214
+ }, props.class]),
10215
+ "style": normalizeStyle(props.style)
10164
10216
  }, slots));
10165
10217
  return {};
10166
10218
  }
@@ -10181,11 +10233,11 @@ const VListItemMedia = genericComponent()({
10181
10233
  } = _ref;
10182
10234
  useRender(() => {
10183
10235
  return createVNode(props.tag, {
10184
- "class": ['v-list-item-media', {
10236
+ "class": normalizeClass(['v-list-item-media', {
10185
10237
  'v-list-item-media--start': props.start,
10186
10238
  'v-list-item-media--end': props.end
10187
- }, props.class],
10188
- "style": props.style
10239
+ }, props.class]),
10240
+ "style": normalizeStyle(props.style)
10189
10241
  }, slots);
10190
10242
  });
10191
10243
  return {};
@@ -10274,11 +10326,19 @@ function useLocationStrategies(props, data) {
10274
10326
  watch(() => props.locationStrategy, reset);
10275
10327
  onScopeDispose(() => {
10276
10328
  window.removeEventListener('resize', onResize);
10329
+ visualViewport?.removeEventListener('resize', onVisualResize);
10330
+ visualViewport?.removeEventListener('scroll', onVisualScroll);
10277
10331
  updateLocation.value = undefined;
10278
10332
  });
10279
10333
  window.addEventListener('resize', onResize, {
10280
10334
  passive: true
10281
10335
  });
10336
+ visualViewport?.addEventListener('resize', onVisualResize, {
10337
+ passive: true
10338
+ });
10339
+ visualViewport?.addEventListener('scroll', onVisualScroll, {
10340
+ passive: true
10341
+ });
10282
10342
  if (typeof props.locationStrategy === 'function') {
10283
10343
  updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;
10284
10344
  } else {
@@ -10289,6 +10349,12 @@ function useLocationStrategies(props, data) {
10289
10349
  function onResize(e) {
10290
10350
  updateLocation.value?.(e);
10291
10351
  }
10352
+ function onVisualResize(e) {
10353
+ updateLocation.value?.(e);
10354
+ }
10355
+ function onVisualScroll(e) {
10356
+ updateLocation.value?.(e);
10357
+ }
10292
10358
  return {
10293
10359
  contentStyles,
10294
10360
  updateLocation
@@ -10440,13 +10506,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
10440
10506
  }
10441
10507
  }
10442
10508
  const viewport = scrollParents.reduce((box, el) => {
10443
- const rect = el.getBoundingClientRect();
10444
- const scrollBox = new Box({
10445
- x: el === document.documentElement ? 0 : rect.x,
10446
- y: el === document.documentElement ? 0 : rect.y,
10447
- width: el.clientWidth,
10448
- height: el.clientHeight
10449
- });
10509
+ const scrollBox = getElementBox(el);
10450
10510
  if (box) {
10451
10511
  return new Box({
10452
10512
  x: Math.max(box.left, scrollBox.left),
@@ -11337,7 +11397,7 @@ function Scrim(props) {
11337
11397
  "name": "fade-transition",
11338
11398
  "appear": true
11339
11399
  }, {
11340
- default: () => [props.modelValue && createVNode("div", mergeProps({
11400
+ default: () => [props.modelValue && createElementVNode("div", mergeProps({
11341
11401
  "class": ['v-overlay__scrim', props.color.backgroundColorClasses.value],
11342
11402
  "style": props.color.backgroundColorStyles.value
11343
11403
  }, rest), null)]
@@ -11378,7 +11438,7 @@ const makeVOverlayProps = propsFactory({
11378
11438
  const VOverlay = genericComponent()({
11379
11439
  name: 'VOverlay',
11380
11440
  directives: {
11381
- ClickOutside
11441
+ vClickOutside: ClickOutside
11382
11442
  },
11383
11443
  inheritAttrs: false,
11384
11444
  props: {
@@ -11558,7 +11618,7 @@ const VOverlay = genericComponent()({
11558
11618
  _onAfterLeave();
11559
11619
  emit('afterLeave');
11560
11620
  }
11561
- useRender(() => createVNode(Fragment, null, [slots.activator?.({
11621
+ useRender(() => createElementVNode(Fragment, null, [slots.activator?.({
11562
11622
  isActive: isActive.value,
11563
11623
  targetRef,
11564
11624
  props: mergeProps({
@@ -11568,7 +11628,7 @@ const VOverlay = genericComponent()({
11568
11628
  "disabled": !teleportTarget.value,
11569
11629
  "to": teleportTarget.value
11570
11630
  }, {
11571
- default: () => [createVNode("div", mergeProps({
11631
+ default: () => [createElementVNode("div", mergeProps({
11572
11632
  "class": ['v-overlay', {
11573
11633
  'v-overlay--absolute': props.absolute || props.contained,
11574
11634
  'v-overlay--active': isActive.value,
@@ -11592,13 +11652,13 @@ const VOverlay = genericComponent()({
11592
11652
  "onAfterEnter": onAfterEnter,
11593
11653
  "onAfterLeave": onAfterLeave
11594
11654
  }, {
11595
- default: () => [withDirectives(createVNode("div", mergeProps({
11655
+ default: () => [withDirectives(createElementVNode("div", mergeProps({
11596
11656
  "ref": contentEl,
11597
11657
  "class": ['v-overlay__content', props.contentClass],
11598
11658
  "style": [dimensionStyles.value, contentStyles.value]
11599
11659
  }, contentEvents.value, props.contentProps), [slots.default?.({
11600
11660
  isActive
11601
- })]), [[vShow, isActive.value], [resolveDirective("click-outside"), {
11661
+ })]), [[vShow, isActive.value], [ClickOutside, {
11602
11662
  handler: onClickOutside,
11603
11663
  closeConditional,
11604
11664
  include: () => [activatorEl.value]
@@ -11927,11 +11987,11 @@ const VCounter = genericComponent()({
11927
11987
  useRender(() => createVNode(MaybeTransition, {
11928
11988
  "transition": props.transition
11929
11989
  }, {
11930
- default: () => [withDirectives(createVNode("div", {
11931
- "class": ['v-counter', {
11990
+ default: () => [withDirectives(createElementVNode("div", {
11991
+ "class": normalizeClass(['v-counter', {
11932
11992
  'text-error': props.max && !props.disabled && parseFloat(props.value) > parseFloat(props.max)
11933
- }, props.class],
11934
- "style": props.style
11993
+ }, props.class]),
11994
+ "style": normalizeStyle(props.style)
11935
11995
  }, [slots.default ? slots.default({
11936
11996
  counter: counter.value,
11937
11997
  max: props.max,
@@ -11954,10 +12014,10 @@ const VFieldLabel = genericComponent()({
11954
12014
  slots
11955
12015
  } = _ref;
11956
12016
  useRender(() => createVNode(VLabel, {
11957
- "class": ['v-field-label', {
12017
+ "class": normalizeClass(['v-field-label', {
11958
12018
  'v-field-label--floating': props.floating
11959
- }, props.class],
11960
- "style": props.style,
12019
+ }, props.class]),
12020
+ "style": normalizeStyle(props.style),
11961
12021
  "aria-hidden": props.floating || undefined
11962
12022
  }, slots));
11963
12023
  return {};
@@ -12134,7 +12194,7 @@ const VField = genericComponent()({
12134
12194
  for: id.value
12135
12195
  }
12136
12196
  }) : props.label;
12137
- return createVNode("div", mergeProps({
12197
+ return createElementVNode("div", mergeProps({
12138
12198
  "class": ['v-field', {
12139
12199
  'v-field--active': isActive.value,
12140
12200
  'v-field--appended': hasAppend,
@@ -12154,7 +12214,7 @@ const VField = genericComponent()({
12154
12214
  }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],
12155
12215
  "style": [backgroundColorStyles.value, props.style],
12156
12216
  "onClick": onClick
12157
- }, attrs), [createVNode("div", {
12217
+ }, attrs), [createElementVNode("div", {
12158
12218
  "class": "v-field__overlay"
12159
12219
  }, null), createVNode(LoaderSlot, {
12160
12220
  "name": "v-field",
@@ -12162,23 +12222,23 @@ const VField = genericComponent()({
12162
12222
  "color": props.error ? 'error' : typeof props.loading === 'string' ? props.loading : props.color
12163
12223
  }, {
12164
12224
  default: slots.loader
12165
- }), hasPrepend && createVNode("div", {
12225
+ }), hasPrepend && createElementVNode("div", {
12166
12226
  "key": "prepend",
12167
12227
  "class": "v-field__prepend-inner"
12168
12228
  }, [props.prependInnerIcon && createVNode(InputIcon, {
12169
12229
  "key": "prepend-icon",
12170
12230
  "name": "prependInner",
12171
12231
  "color": iconColor.value
12172
- }, null), slots['prepend-inner']?.(slotProps.value)]), createVNode("div", {
12232
+ }, null), slots['prepend-inner']?.(slotProps.value)]), createElementVNode("div", {
12173
12233
  "class": "v-field__field",
12174
12234
  "data-no-activator": ""
12175
12235
  }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasFloatingLabel.value && createVNode(VFieldLabel, {
12176
12236
  "key": "floating-label",
12177
12237
  "ref": floatingLabelRef,
12178
- "class": [textColorClasses.value],
12238
+ "class": normalizeClass([textColorClasses.value]),
12179
12239
  "floating": true,
12180
12240
  "for": id.value,
12181
- "style": textColorStyles.value
12241
+ "style": normalizeStyle(textColorStyles.value)
12182
12242
  }, {
12183
12243
  default: () => [label()]
12184
12244
  }), hasLabel.value && createVNode(VFieldLabel, {
@@ -12196,14 +12256,14 @@ const VField = genericComponent()({
12196
12256
  },
12197
12257
  focus,
12198
12258
  blur
12199
- }) ?? createVNode("div", {
12259
+ }) ?? createElementVNode("div", {
12200
12260
  "id": id.value,
12201
12261
  "class": "v-field__input",
12202
12262
  "aria-describedby": messagesId.value
12203
12263
  }, null)]), hasClear && createVNode(VExpandXTransition, {
12204
12264
  "key": "clear"
12205
12265
  }, {
12206
- default: () => [withDirectives(createVNode("div", {
12266
+ default: () => [withDirectives(createElementVNode("div", {
12207
12267
  "class": "v-field__clearable",
12208
12268
  "onMousedown": e => {
12209
12269
  e.preventDefault();
@@ -12221,27 +12281,29 @@ const VField = genericComponent()({
12221
12281
  props: {
12222
12282
  onFocus: focus,
12223
12283
  onBlur: blur,
12224
- onClick: props['onClick:clear']
12284
+ onClick: props['onClick:clear'],
12285
+ tabindex: -1
12225
12286
  }
12226
12287
  }) : createVNode(InputIcon, {
12227
12288
  "name": "clear",
12228
12289
  "onFocus": focus,
12229
- "onBlur": blur
12290
+ "onBlur": blur,
12291
+ "tabindex": -1
12230
12292
  }, null)]
12231
12293
  })]), [[vShow, props.dirty]])]
12232
- }), hasAppend && createVNode("div", {
12294
+ }), hasAppend && createElementVNode("div", {
12233
12295
  "key": "append",
12234
12296
  "class": "v-field__append-inner"
12235
12297
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && createVNode(InputIcon, {
12236
12298
  "key": "append-icon",
12237
12299
  "name": "appendInner",
12238
12300
  "color": iconColor.value
12239
- }, null)]), createVNode("div", {
12240
- "class": ['v-field__outline', textColorClasses.value],
12241
- "style": textColorStyles.value
12242
- }, [isOutlined && createVNode(Fragment, null, [createVNode("div", {
12301
+ }, null)]), createElementVNode("div", {
12302
+ "class": normalizeClass(['v-field__outline', textColorClasses.value]),
12303
+ "style": normalizeStyle(textColorStyles.value)
12304
+ }, [isOutlined && createElementVNode(Fragment, null, [createElementVNode("div", {
12243
12305
  "class": "v-field__outline__start"
12244
- }, null), hasFloatingLabel.value && createVNode("div", {
12306
+ }, null), hasFloatingLabel.value && createElementVNode("div", {
12245
12307
  "class": "v-field__outline__notch"
12246
12308
  }, [createVNode(VFieldLabel, {
12247
12309
  "ref": floatingLabelRef,
@@ -12249,7 +12311,7 @@ const VField = genericComponent()({
12249
12311
  "for": id.value
12250
12312
  }, {
12251
12313
  default: () => [label()]
12252
- })]), createVNode("div", {
12314
+ })]), createElementVNode("div", {
12253
12315
  "class": "v-field__outline__end"
12254
12316
  }, null)]), isPlainOrUnderlined.value && hasFloatingLabel.value && createVNode(VFieldLabel, {
12255
12317
  "ref": floatingLabelRef,
@@ -12290,7 +12352,7 @@ const makeVTextFieldProps = propsFactory({
12290
12352
  const VTextField = genericComponent()({
12291
12353
  name: 'VTextField',
12292
12354
  directives: {
12293
- Intersect
12355
+ vIntersect: Intersect
12294
12356
  },
12295
12357
  inheritAttrs: false,
12296
12358
  props: makeVTextFieldProps(),
@@ -12422,7 +12484,7 @@ const VTextField = genericComponent()({
12422
12484
  ...slotProps
12423
12485
  }
12424
12486
  } = _ref3;
12425
- const inputNode = withDirectives(createVNode("input", mergeProps({
12487
+ const inputNode = withDirectives(createElementVNode("input", mergeProps({
12426
12488
  "ref": inputRef,
12427
12489
  "value": model.value,
12428
12490
  "onInput": onInput,
@@ -12435,29 +12497,29 @@ const VTextField = genericComponent()({
12435
12497
  "type": props.type,
12436
12498
  "onFocus": onFocus,
12437
12499
  "onBlur": blur
12438
- }, slotProps, inputAttrs), null), [[resolveDirective("intersect"), {
12500
+ }, slotProps, inputAttrs), null), [[Intersect, {
12439
12501
  handler: onIntersect
12440
12502
  }, null, {
12441
12503
  once: true
12442
12504
  }]]);
12443
- return createVNode(Fragment, null, [props.prefix && createVNode("span", {
12505
+ return createElementVNode(Fragment, null, [props.prefix && createElementVNode("span", {
12444
12506
  "class": "v-text-field__prefix"
12445
- }, [createVNode("span", {
12507
+ }, [createElementVNode("span", {
12446
12508
  "class": "v-text-field__prefix__text"
12447
- }, [props.prefix])]), slots.default ? createVNode("div", {
12448
- "class": fieldClass,
12509
+ }, [props.prefix])]), slots.default ? createElementVNode("div", {
12510
+ "class": normalizeClass(fieldClass),
12449
12511
  "data-no-activator": ""
12450
12512
  }, [slots.default(), inputNode]) : cloneVNode(inputNode, {
12451
12513
  class: fieldClass
12452
- }), props.suffix && createVNode("span", {
12514
+ }), props.suffix && createElementVNode("span", {
12453
12515
  "class": "v-text-field__suffix"
12454
- }, [createVNode("span", {
12516
+ }, [createElementVNode("span", {
12455
12517
  "class": "v-text-field__suffix__text"
12456
12518
  }, [props.suffix])])]);
12457
12519
  }
12458
12520
  });
12459
12521
  },
12460
- details: hasDetails ? slotProps => createVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createVNode(Fragment, null, [createVNode("span", null, null), createVNode(VCounter, {
12522
+ details: hasDetails ? slotProps => createElementVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createElementVNode(Fragment, null, [createElementVNode("span", null, null), createVNode(VCounter, {
12461
12523
  "active": props.persistentCounter || isFocused.value,
12462
12524
  "value": counterValue.value,
12463
12525
  "max": max.value,
@@ -12495,9 +12557,9 @@ const VVirtualScrollItem = genericComponent()({
12495
12557
  watch(() => contentRect.value?.height, height => {
12496
12558
  if (height != null) emit('update:height', height);
12497
12559
  });
12498
- useRender(() => props.renderless ? createVNode(Fragment, null, [slots.default?.({
12560
+ useRender(() => props.renderless ? createElementVNode(Fragment, null, [slots.default?.({
12499
12561
  itemRef: resizeRef
12500
- })]) : createVNode("div", mergeProps({
12562
+ })]) : createElementVNode("div", mergeProps({
12501
12563
  "ref": resizeRef,
12502
12564
  "class": ['v-virtual-scroll__item', props.class],
12503
12565
  "style": props.style
@@ -12832,24 +12894,24 @@ const VVirtualScroll = genericComponent()({
12832
12894
  ...slotProps
12833
12895
  })
12834
12896
  }));
12835
- return props.renderless ? createVNode(Fragment, null, [createVNode("div", {
12897
+ return props.renderless ? createElementVNode(Fragment, null, [createElementVNode("div", {
12836
12898
  "ref": markerRef,
12837
12899
  "class": "v-virtual-scroll__spacer",
12838
12900
  "style": {
12839
12901
  paddingTop: convertToUnit(paddingTop.value)
12840
12902
  }
12841
- }, null), children, createVNode("div", {
12903
+ }, null), children, createElementVNode("div", {
12842
12904
  "class": "v-virtual-scroll__spacer",
12843
12905
  "style": {
12844
12906
  paddingBottom: convertToUnit(paddingBottom.value)
12845
12907
  }
12846
- }, null)]) : createVNode("div", {
12908
+ }, null)]) : createElementVNode("div", {
12847
12909
  "ref": containerRef,
12848
- "class": ['v-virtual-scroll', props.class],
12910
+ "class": normalizeClass(['v-virtual-scroll', props.class]),
12849
12911
  "onScrollPassive": handleScroll,
12850
12912
  "onScrollend": handleScrollend,
12851
- "style": [dimensionStyles.value, props.style]
12852
- }, [createVNode("div", {
12913
+ "style": normalizeStyle([dimensionStyles.value, props.style])
12914
+ }, [createElementVNode("div", {
12853
12915
  "ref": markerRef,
12854
12916
  "class": "v-virtual-scroll__container",
12855
12917
  "style": {
@@ -13017,6 +13079,7 @@ const VSelect = genericComponent()({
13017
13079
  const selectedValues = computed(() => model.value.map(selection => selection.value));
13018
13080
  const isFocused = shallowRef(false);
13019
13081
  let keyboardLookupPrefix = '';
13082
+ let keyboardLookupIndex = -1;
13020
13083
  let keyboardLookupLastTime;
13021
13084
  const displayItems = computed(() => {
13022
13085
  if (props.hideSelected) {
@@ -13084,18 +13147,46 @@ const VSelect = genericComponent()({
13084
13147
  const now = performance.now();
13085
13148
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
13086
13149
  keyboardLookupPrefix = '';
13150
+ keyboardLookupIndex = -1;
13087
13151
  }
13088
13152
  keyboardLookupPrefix += e.key.toLowerCase();
13089
13153
  keyboardLookupLastTime = now;
13090
- const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
13091
- if (item !== undefined) {
13092
- if (!props.multiple) {
13093
- model.value = [item];
13154
+ const items = displayItems.value;
13155
+ function findItem() {
13156
+ let result = findItemBase();
13157
+ if (result) return result;
13158
+ if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
13159
+ // No matches but we have a repeated letter, try the next item with that prefix
13160
+ keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
13161
+ result = findItemBase();
13162
+ if (result) return result;
13094
13163
  }
13095
- const index = displayItems.value.indexOf(item);
13096
- if (~index && IN_BROWSER) {
13097
- listRef.value?.focus(index);
13164
+
13165
+ // Still nothing, wrap around to the top
13166
+ keyboardLookupIndex = -1;
13167
+ result = findItemBase();
13168
+ if (result) return result;
13169
+
13170
+ // Still nothing, try just the new letter
13171
+ keyboardLookupPrefix = e.key.toLowerCase();
13172
+ return findItemBase();
13173
+ }
13174
+ function findItemBase() {
13175
+ for (let i = keyboardLookupIndex + 1; i < items.length; i++) {
13176
+ const _item = items[i];
13177
+ if (_item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
13178
+ return [_item, i];
13179
+ }
13098
13180
  }
13181
+ return undefined;
13182
+ }
13183
+ const result = findItem();
13184
+ if (!result) return;
13185
+ const [item, index] = result;
13186
+ keyboardLookupIndex = index;
13187
+ listRef.value?.focus(index);
13188
+ if (!props.multiple) {
13189
+ model.value = [item];
13099
13190
  }
13100
13191
  }
13101
13192
 
@@ -13197,7 +13288,7 @@ const VSelect = genericComponent()({
13197
13288
  "title": t(label.value)
13198
13289
  }), {
13199
13290
  ...slots,
13200
- default: () => createVNode(Fragment, null, [createVNode(VMenu, mergeProps({
13291
+ default: () => createElementVNode(Fragment, null, [createVNode(VMenu, mergeProps({
13201
13292
  "ref": vMenuRef,
13202
13293
  "modelValue": menu.value,
13203
13294
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -13255,7 +13346,7 @@ const VSelect = genericComponent()({
13255
13346
  let {
13256
13347
  isSelected
13257
13348
  } = _ref3;
13258
- return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
13349
+ return createElementVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
13259
13350
  "key": item.value,
13260
13351
  "modelValue": isSelected,
13261
13352
  "ripple": false,
@@ -13301,7 +13392,7 @@ const VSelect = genericComponent()({
13301
13392
  index
13302
13393
  })) : undefined;
13303
13394
  if (hasSlot && !slotContent) return undefined;
13304
- return createVNode("div", {
13395
+ return createElementVNode("div", {
13305
13396
  "key": item.value,
13306
13397
  "class": "v-select__selection"
13307
13398
  }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
@@ -13321,9 +13412,9 @@ const VSelect = genericComponent()({
13321
13412
  }
13322
13413
  }, {
13323
13414
  default: () => [slotContent]
13324
- }) : slotContent ?? createVNode("span", {
13415
+ }) : slotContent ?? createElementVNode("span", {
13325
13416
  "class": "v-select__selection-text"
13326
- }, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
13417
+ }, [item.title, props.multiple && index < model.value.length - 1 && createElementVNode("span", {
13327
13418
  "class": "v-select__selection-comma"
13328
13419
  }, [createTextVNode(",")])])]);
13329
13420
  })]),
@@ -13331,7 +13422,7 @@ const VSelect = genericComponent()({
13331
13422
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13332
13423
  args[_key] = arguments[_key];
13333
13424
  }
13334
- return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
13425
+ return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
13335
13426
  "class": "v-select__menu-icon",
13336
13427
  "color": vTextFieldRef.value?.fieldIconColor,
13337
13428
  "icon": props.menuIcon
@@ -13482,17 +13573,17 @@ function highlightResult(name, text, matches) {
13482
13573
  if (matches == null || !matches.length) return text;
13483
13574
  return matches.map((match, i) => {
13484
13575
  const start = i === 0 ? 0 : matches[i - 1][1];
13485
- const result = [createVNode("span", {
13486
- "class": `${name}__unmask`
13487
- }, [text.slice(start, match[0])]), createVNode("span", {
13488
- "class": `${name}__mask`
13576
+ const result = [createElementVNode("span", {
13577
+ "class": normalizeClass(`${name}__unmask`)
13578
+ }, [text.slice(start, match[0])]), createElementVNode("span", {
13579
+ "class": normalizeClass(`${name}__mask`)
13489
13580
  }, [text.slice(match[0], match[1])])];
13490
13581
  if (i === matches.length - 1) {
13491
- result.push(createVNode("span", {
13492
- "class": `${name}__unmask`
13582
+ result.push(createElementVNode("span", {
13583
+ "class": normalizeClass(`${name}__unmask`)
13493
13584
  }, [text.slice(match[1])]));
13494
13585
  }
13495
- return createVNode(Fragment, null, [result]);
13586
+ return createElementVNode(Fragment, null, [result]);
13496
13587
  });
13497
13588
  }
13498
13589
 
@@ -13794,7 +13885,7 @@ const VAutocomplete = genericComponent()({
13794
13885
  "onKeydown": onKeydown
13795
13886
  }), {
13796
13887
  ...slots,
13797
- default: () => createVNode(Fragment, null, [createVNode(VMenu, mergeProps({
13888
+ default: () => createElementVNode(Fragment, null, [createVNode(VMenu, mergeProps({
13798
13889
  "ref": vMenuRef,
13799
13890
  "modelValue": menu.value,
13800
13891
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -13853,7 +13944,7 @@ const VAutocomplete = genericComponent()({
13853
13944
  let {
13854
13945
  isSelected
13855
13946
  } = _ref4;
13856
- return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
13947
+ return createElementVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
13857
13948
  "key": item.value,
13858
13949
  "modelValue": isSelected,
13859
13950
  "ripple": false,
@@ -13902,10 +13993,10 @@ const VAutocomplete = genericComponent()({
13902
13993
  index
13903
13994
  })) : undefined;
13904
13995
  if (hasSlot && !slotContent) return undefined;
13905
- return createVNode("div", {
13996
+ return createElementVNode("div", {
13906
13997
  "key": item.value,
13907
- "class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
13908
- "style": index === selectionIndex.value ? textColorStyles.value : {}
13998
+ "class": normalizeClass(['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]]),
13999
+ "style": normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})
13909
14000
  }, [hasChips.value ? !slots.chip ? createVNode(VChip, mergeProps({
13910
14001
  "key": "chip",
13911
14002
  "closable": props.closableChips,
@@ -13923,9 +14014,9 @@ const VAutocomplete = genericComponent()({
13923
14014
  }
13924
14015
  }, {
13925
14016
  default: () => [slotContent]
13926
- }) : slotContent ?? createVNode("span", {
14017
+ }) : slotContent ?? createElementVNode("span", {
13927
14018
  "class": "v-autocomplete__selection-text"
13928
- }, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
14019
+ }, [item.title, props.multiple && index < model.value.length - 1 && createElementVNode("span", {
13929
14020
  "class": "v-autocomplete__selection-comma"
13930
14021
  }, [createTextVNode(",")])])]);
13931
14022
  })]),
@@ -13933,7 +14024,7 @@ const VAutocomplete = genericComponent()({
13933
14024
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13934
14025
  args[_key] = arguments[_key];
13935
14026
  }
13936
- return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
14027
+ return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
13937
14028
  "class": "v-autocomplete__menu-icon",
13938
14029
  "color": vTextFieldRef.value?.fieldIconColor,
13939
14030
  "icon": props.menuIcon,
@@ -14030,12 +14121,12 @@ const VBadge = genericComponent()({
14030
14121
  }, attrs, {
14031
14122
  "style": props.style
14032
14123
  }), {
14033
- default: () => [createVNode("div", {
14124
+ default: () => [createElementVNode("div", {
14034
14125
  "class": "v-badge__wrapper"
14035
14126
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
14036
14127
  "transition": props.transition
14037
14128
  }, {
14038
- default: () => [withDirectives(createVNode("span", mergeProps({
14129
+ default: () => [withDirectives(createElementVNode("span", mergeProps({
14039
14130
  "class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
14040
14131
  "style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
14041
14132
  "aria-atomic": "true",
@@ -14072,9 +14163,9 @@ const VBannerActions = genericComponent()({
14072
14163
  variant: 'text'
14073
14164
  }
14074
14165
  });
14075
- useRender(() => createVNode("div", {
14076
- "class": ['v-banner-actions', props.class],
14077
- "style": props.style
14166
+ useRender(() => createElementVNode("div", {
14167
+ "class": normalizeClass(['v-banner-actions', props.class]),
14168
+ "style": normalizeStyle(props.style)
14078
14169
  }, [slots.default?.()]));
14079
14170
  return {};
14080
14171
  }
@@ -14160,15 +14251,15 @@ const VBanner = genericComponent()({
14160
14251
  const hasPrependMedia = !!(props.avatar || props.icon);
14161
14252
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
14162
14253
  return createVNode(props.tag, {
14163
- "class": ['v-banner', {
14254
+ "class": normalizeClass(['v-banner', {
14164
14255
  'v-banner--stacked': props.stacked || mobile.value,
14165
14256
  'v-banner--sticky': props.sticky,
14166
14257
  [`v-banner--${props.lines}-line`]: !!props.lines
14167
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
14168
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14258
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),
14259
+ "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]),
14169
14260
  "role": "banner"
14170
14261
  }, {
14171
- default: () => [hasPrepend && createVNode("div", {
14262
+ default: () => [hasPrepend && createElementVNode("div", {
14172
14263
  "key": "prepend",
14173
14264
  "class": "v-banner__prepend"
14174
14265
  }, [!slots.prepend ? createVNode(VAvatar, {
@@ -14188,7 +14279,7 @@ const VBanner = genericComponent()({
14188
14279
  image: props.avatar
14189
14280
  }
14190
14281
  }
14191
- }, slots.prepend)]), createVNode("div", {
14282
+ }, slots.prepend)]), createElementVNode("div", {
14192
14283
  "class": "v-banner__content"
14193
14284
  }, [hasText && createVNode(VBannerText, {
14194
14285
  "key": "text"
@@ -14297,16 +14388,16 @@ const VBottomNavigation = genericComponent()({
14297
14388
  });
14298
14389
  useRender(() => {
14299
14390
  return createVNode(props.tag, {
14300
- "class": ['v-bottom-navigation', {
14391
+ "class": normalizeClass(['v-bottom-navigation', {
14301
14392
  'v-bottom-navigation--active': isActive.value,
14302
14393
  'v-bottom-navigation--grow': props.grow,
14303
14394
  'v-bottom-navigation--shift': props.mode === 'shift'
14304
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14305
- "style": [backgroundColorStyles.value, layoutItemStyles.value, {
14395
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
14396
+ "style": normalizeStyle([backgroundColorStyles.value, layoutItemStyles.value, {
14306
14397
  height: convertToUnit(height.value)
14307
- }, ssrBootStyles.value, props.style]
14398
+ }, ssrBootStyles.value, props.style])
14308
14399
  }, {
14309
- default: () => [slots.default && createVNode("div", {
14400
+ default: () => [slots.default && createElementVNode("div", {
14310
14401
  "class": "v-bottom-navigation__content"
14311
14402
  }, [slots.default()])]
14312
14403
  });
@@ -14493,10 +14584,10 @@ const VBreadcrumbsDivider = genericComponent()({
14493
14584
  let {
14494
14585
  slots
14495
14586
  } = _ref;
14496
- useRender(() => createVNode("li", {
14587
+ useRender(() => createElementVNode("li", {
14497
14588
  "aria-hidden": "true",
14498
- "class": ['v-breadcrumbs-divider', props.class],
14499
- "style": props.style
14589
+ "class": normalizeClass(['v-breadcrumbs-divider', props.class]),
14590
+ "style": normalizeStyle(props.style)
14500
14591
  }, [slots?.default?.() ?? props.divider]));
14501
14592
  return {};
14502
14593
  }
@@ -14531,15 +14622,15 @@ const VBreadcrumbsItem = genericComponent()({
14531
14622
  } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14532
14623
  useRender(() => {
14533
14624
  return createVNode(props.tag, {
14534
- "class": ['v-breadcrumbs-item', {
14625
+ "class": normalizeClass(['v-breadcrumbs-item', {
14535
14626
  'v-breadcrumbs-item--active': isActive.value,
14536
14627
  'v-breadcrumbs-item--disabled': props.disabled,
14537
14628
  [`${props.activeClass}`]: isActive.value && props.activeClass
14538
- }, textColorClasses.value, props.class],
14539
- "style": [textColorStyles.value, props.style],
14629
+ }, textColorClasses.value, props.class]),
14630
+ "style": normalizeStyle([textColorStyles.value, props.style]),
14540
14631
  "aria-current": isActive.value ? 'page' : undefined
14541
14632
  }, {
14542
- default: () => [!link.isLink.value ? slots.default?.() ?? props.title : createVNode("a", mergeProps({
14633
+ default: () => [!link.isLink.value ? slots.default?.() ?? props.title : createElementVNode("a", mergeProps({
14543
14634
  "class": "v-breadcrumbs-item--link",
14544
14635
  "onClick": link.navigate
14545
14636
  }, link.linkProps), [slots.default?.() ?? props.title])]
@@ -14615,10 +14706,10 @@ const VBreadcrumbs = genericComponent()({
14615
14706
  useRender(() => {
14616
14707
  const hasPrepend = !!(slots.prepend || props.icon);
14617
14708
  return createVNode(props.tag, {
14618
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
14619
- "style": [backgroundColorStyles.value, props.style]
14709
+ "class": normalizeClass(['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class]),
14710
+ "style": normalizeStyle([backgroundColorStyles.value, props.style])
14620
14711
  }, {
14621
- default: () => [hasPrepend && createVNode("li", {
14712
+ default: () => [hasPrepend && createElementVNode("li", {
14622
14713
  "key": "prepend",
14623
14714
  "class": "v-breadcrumbs__prepend"
14624
14715
  }, [!slots.prepend ? createVNode(VIcon, {
@@ -14639,7 +14730,7 @@ const VBreadcrumbs = genericComponent()({
14639
14730
  item,
14640
14731
  raw
14641
14732
  } = _ref2;
14642
- return createVNode(Fragment, null, [slots.item?.({
14733
+ return createElementVNode(Fragment, null, [slots.item?.({
14643
14734
  item,
14644
14735
  index
14645
14736
  }) ?? createVNode(VBreadcrumbsItem, mergeProps({
@@ -14678,9 +14769,9 @@ const VCardActions = genericComponent()({
14678
14769
  variant: 'text'
14679
14770
  }
14680
14771
  });
14681
- useRender(() => createVNode("div", {
14682
- "class": ['v-card-actions', props.class],
14683
- "style": props.style
14772
+ useRender(() => createElementVNode("div", {
14773
+ "class": normalizeClass(['v-card-actions', props.class]),
14774
+ "style": normalizeStyle(props.style)
14684
14775
  }, [slots.default?.()]));
14685
14776
  return {};
14686
14777
  }
@@ -14699,10 +14790,10 @@ const VCardSubtitle = genericComponent()({
14699
14790
  slots
14700
14791
  } = _ref;
14701
14792
  useRender(() => createVNode(props.tag, {
14702
- "class": ['v-card-subtitle', props.class],
14703
- "style": [{
14793
+ "class": normalizeClass(['v-card-subtitle', props.class]),
14794
+ "style": normalizeStyle([{
14704
14795
  '--v-card-subtitle-opacity': props.opacity
14705
- }, props.style]
14796
+ }, props.style])
14706
14797
  }, slots));
14707
14798
  return {};
14708
14799
  }
@@ -14741,13 +14832,13 @@ const VCardItem = genericComponent()({
14741
14832
  const hasAppend = !!(hasAppendMedia || slots.append);
14742
14833
  const hasTitle = !!(props.title != null || slots.title);
14743
14834
  const hasSubtitle = !!(props.subtitle != null || slots.subtitle);
14744
- return createVNode("div", {
14745
- "class": ['v-card-item', props.class],
14746
- "style": props.style
14747
- }, [hasPrepend && createVNode("div", {
14835
+ return createElementVNode("div", {
14836
+ "class": normalizeClass(['v-card-item', props.class]),
14837
+ "style": normalizeStyle(props.style)
14838
+ }, [hasPrepend && createElementVNode("div", {
14748
14839
  "key": "prepend",
14749
14840
  "class": "v-card-item__prepend"
14750
- }, [!slots.prepend ? createVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
14841
+ }, [!slots.prepend ? createElementVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
14751
14842
  "key": "prepend-avatar",
14752
14843
  "density": props.density,
14753
14844
  "image": props.prependAvatar
@@ -14768,7 +14859,7 @@ const VCardItem = genericComponent()({
14768
14859
  icon: props.prependIcon
14769
14860
  }
14770
14861
  }
14771
- }, slots.prepend)]), createVNode("div", {
14862
+ }, slots.prepend)]), createElementVNode("div", {
14772
14863
  "class": "v-card-item__content"
14773
14864
  }, [hasTitle && createVNode(VCardTitle, {
14774
14865
  "key": "title"
@@ -14778,10 +14869,10 @@ const VCardItem = genericComponent()({
14778
14869
  "key": "subtitle"
14779
14870
  }, {
14780
14871
  default: () => [slots.subtitle?.() ?? toDisplayString(props.subtitle)]
14781
- }), slots.default?.()]), hasAppend && createVNode("div", {
14872
+ }), slots.default?.()]), hasAppend && createElementVNode("div", {
14782
14873
  "key": "append",
14783
14874
  "class": "v-card-item__append"
14784
- }, [!slots.append ? createVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
14875
+ }, [!slots.append ? createElementVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
14785
14876
  "key": "append-icon",
14786
14877
  "density": props.density,
14787
14878
  "icon": props.appendIcon
@@ -14821,10 +14912,10 @@ const VCardText = genericComponent()({
14821
14912
  slots
14822
14913
  } = _ref;
14823
14914
  useRender(() => createVNode(props.tag, {
14824
- "class": ['v-card-text', props.class],
14825
- "style": [{
14915
+ "class": normalizeClass(['v-card-text', props.class]),
14916
+ "style": normalizeStyle([{
14826
14917
  '--v-card-text-opacity': props.opacity
14827
- }, props.style]
14918
+ }, props.style])
14828
14919
  }, slots));
14829
14920
  return {};
14830
14921
  }
@@ -14880,7 +14971,7 @@ const makeVCardProps = propsFactory({
14880
14971
  const VCard = genericComponent()({
14881
14972
  name: 'VCard',
14882
14973
  directives: {
14883
- Ripple
14974
+ vRipple: Ripple
14884
14975
  },
14885
14976
  props: makeVCardProps(),
14886
14977
  setup(props, _ref) {
@@ -14944,7 +15035,7 @@ const VCard = genericComponent()({
14944
15035
  "onClick": isClickable && link.navigate,
14945
15036
  "tabindex": props.disabled ? -1 : undefined
14946
15037
  }, link.linkProps), {
14947
- default: () => [hasImage && createVNode("div", {
15038
+ default: () => [hasImage && createElementVNode("div", {
14948
15039
  "key": "image",
14949
15040
  "class": "v-card__image"
14950
15041
  }, [!slots.image ? createVNode(VImg, {
@@ -14987,7 +15078,7 @@ const VCard = genericComponent()({
14987
15078
  }), slots.default?.(), slots.actions && createVNode(VCardActions, null, {
14988
15079
  default: slots.actions
14989
15080
  }), genOverlays(isClickable, 'v-card')]
14990
- }), [[resolveDirective("ripple"), isClickable && props.ripple]]);
15081
+ }), [[Ripple, isClickable && props.ripple]]);
14991
15082
  });
14992
15083
  return {};
14993
15084
  }
@@ -15146,7 +15237,7 @@ const makeVWindowProps = propsFactory({
15146
15237
  const VWindow = genericComponent()({
15147
15238
  name: 'VWindow',
15148
15239
  directives: {
15149
- Touch
15240
+ vTouch: Touch
15150
15241
  },
15151
15242
  props: makeVWindowProps(),
15152
15243
  emits: {
@@ -15218,7 +15309,7 @@ const VWindow = genericComponent()({
15218
15309
  };
15219
15310
  arrows.push(canMoveBack.value ? slots.prev ? slots.prev({
15220
15311
  props: prevProps
15221
- }) : createVNode(VBtn, prevProps, null) : createVNode("div", null, null));
15312
+ }) : createVNode(VBtn, prevProps, null) : createElementVNode("div", null, null));
15222
15313
  const nextProps = {
15223
15314
  icon: isRtl.value ? props.prevIcon : props.nextIcon,
15224
15315
  class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,
@@ -15227,7 +15318,7 @@ const VWindow = genericComponent()({
15227
15318
  };
15228
15319
  arrows.push(canMoveForward.value ? slots.next ? slots.next({
15229
15320
  props: nextProps
15230
- }) : createVNode(VBtn, nextProps, null) : createVNode("div", null, null));
15321
+ }) : createVNode(VBtn, nextProps, null) : createElementVNode("div", null, null));
15231
15322
  return arrows;
15232
15323
  });
15233
15324
  const touchOptions = computed(() => {
@@ -15253,24 +15344,24 @@ const VWindow = genericComponent()({
15253
15344
  });
15254
15345
  useRender(() => withDirectives(createVNode(props.tag, {
15255
15346
  "ref": rootRef,
15256
- "class": ['v-window', {
15347
+ "class": normalizeClass(['v-window', {
15257
15348
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
15258
- }, themeClasses.value, props.class],
15259
- "style": props.style
15349
+ }, themeClasses.value, props.class]),
15350
+ "style": normalizeStyle(props.style)
15260
15351
  }, {
15261
- default: () => [createVNode("div", {
15352
+ default: () => [createElementVNode("div", {
15262
15353
  "class": "v-window__container",
15263
15354
  "style": {
15264
15355
  height: transitionHeight.value
15265
15356
  }
15266
15357
  }, [slots.default?.({
15267
15358
  group
15268
- }), props.showArrows !== false && createVNode("div", {
15359
+ }), props.showArrows !== false && createElementVNode("div", {
15269
15360
  "class": "v-window__controls"
15270
15361
  }, [arrows.value])]), slots.additional?.({
15271
15362
  group
15272
15363
  })]
15273
- }), [[resolveDirective("touch"), touchOptions.value]]));
15364
+ }), [[Touch, touchOptions.value]]));
15274
15365
  return {
15275
15366
  group
15276
15367
  };
@@ -15355,7 +15446,7 @@ const VCarousel = genericComponent()({
15355
15446
  let {
15356
15447
  group
15357
15448
  } = _ref2;
15358
- return createVNode(Fragment, null, [!props.hideDelimiters && createVNode("div", {
15449
+ return createElementVNode(Fragment, null, [!props.hideDelimiters && createElementVNode("div", {
15359
15450
  "class": "v-carousel__controls",
15360
15451
  "style": {
15361
15452
  left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',
@@ -15414,7 +15505,7 @@ const makeVWindowItemProps = propsFactory({
15414
15505
  const VWindowItem = genericComponent()({
15415
15506
  name: 'VWindowItem',
15416
15507
  directives: {
15417
- Touch
15508
+ vTouch: Touch
15418
15509
  },
15419
15510
  props: makeVWindowItemProps(),
15420
15511
  emits: {
@@ -15498,9 +15589,9 @@ const VWindowItem = genericComponent()({
15498
15589
  "transition": transition.value,
15499
15590
  "disabled": !isBooted.value
15500
15591
  }, {
15501
- default: () => [withDirectives(createVNode("div", {
15502
- "class": ['v-window-item', groupItem.selectedClass.value, props.class],
15503
- "style": props.style
15592
+ default: () => [withDirectives(createElementVNode("div", {
15593
+ "class": normalizeClass(['v-window-item', groupItem.selectedClass.value, props.class]),
15594
+ "style": normalizeStyle(props.style)
15504
15595
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
15505
15596
  }));
15506
15597
  return {
@@ -15700,21 +15791,21 @@ const VColorPickerCanvas = defineComponent({
15700
15791
  immediate: true
15701
15792
  });
15702
15793
  onMounted(() => updateCanvas());
15703
- useRender(() => createVNode("div", {
15794
+ useRender(() => createElementVNode("div", {
15704
15795
  "ref": resizeRef,
15705
- "class": ['v-color-picker-canvas', props.class],
15706
- "style": props.style,
15796
+ "class": normalizeClass(['v-color-picker-canvas', props.class]),
15797
+ "style": normalizeStyle(props.style),
15707
15798
  "onMousedown": handleMouseDown,
15708
15799
  "onTouchstartPassive": handleMouseDown
15709
- }, [createVNode("canvas", {
15800
+ }, [createElementVNode("canvas", {
15710
15801
  "ref": canvasRef,
15711
15802
  "width": canvasWidth.value,
15712
15803
  "height": canvasHeight.value
15713
- }, null), props.color && createVNode("div", {
15714
- "class": ['v-color-picker-canvas__dot', {
15804
+ }, null), props.color && createElementVNode("div", {
15805
+ "class": normalizeClass(['v-color-picker-canvas__dot', {
15715
15806
  'v-color-picker-canvas__dot--disabled': props.disabled
15716
- }],
15717
- "style": dotStyles.value
15807
+ }]),
15808
+ "style": normalizeStyle(dotStyles.value)
15718
15809
  }, null)]));
15719
15810
  return {};
15720
15811
  }
@@ -15914,9 +16005,9 @@ const VColorPickerInput = _ref => {
15914
16005
  label,
15915
16006
  ...rest
15916
16007
  } = _ref;
15917
- return createVNode("div", {
16008
+ return createElementVNode("div", {
15918
16009
  "class": "v-color-picker-edit__input"
15919
- }, [createVNode("input", rest, null), createVNode("span", null, [label])]);
16010
+ }, [createElementVNode("input", normalizeProps(guardReactiveProps(rest)), null), createElementVNode("span", null, [label])]);
15920
16011
  };
15921
16012
  const makeVColorPickerEditProps = propsFactory({
15922
16013
  color: Object,
@@ -15973,9 +16064,9 @@ const VColorPickerEdit = defineComponent({
15973
16064
  };
15974
16065
  });
15975
16066
  });
15976
- useRender(() => createVNode("div", {
15977
- "class": ['v-color-picker-edit', props.class],
15978
- "style": props.style
16067
+ useRender(() => createElementVNode("div", {
16068
+ "class": normalizeClass(['v-color-picker-edit', props.class]),
16069
+ "style": normalizeStyle(props.style)
15979
16070
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
15980
16071
  "icon": "$unfold",
15981
16072
  "size": "x-small",
@@ -16080,7 +16171,10 @@ const useSteps = props => {
16080
16171
  if (step.value <= 0) return value;
16081
16172
  const clamped = clamp(value, min.value, max.value);
16082
16173
  const offset = min.value % step.value;
16083
- const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
16174
+ let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
16175
+ if (clamped > newValue && newValue + step.value > max.value) {
16176
+ newValue = max.value;
16177
+ }
16084
16178
  return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
16085
16179
  }
16086
16180
  return {
@@ -16139,7 +16233,7 @@ const useSlider = _ref => {
16139
16233
  const clickOffset = getPosition(e, position);
16140
16234
 
16141
16235
  // It is possible for left to be NaN, force to number
16142
- let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
16236
+ let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0;
16143
16237
  if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
16144
16238
  return roundValue(min.value + clickPos * (max.value - min.value));
16145
16239
  }
@@ -16318,7 +16412,7 @@ const makeVSliderThumbProps = propsFactory({
16318
16412
  const VSliderThumb = genericComponent()({
16319
16413
  name: 'VSliderThumb',
16320
16414
  directives: {
16321
- Ripple
16415
+ vRipple: Ripple
16322
16416
  },
16323
16417
  props: makeVSliderThumbProps(),
16324
16418
  emits: {
@@ -16336,6 +16430,8 @@ const VSliderThumb = genericComponent()({
16336
16430
  } = useRtl();
16337
16431
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
16338
16432
  const {
16433
+ min,
16434
+ max,
16339
16435
  thumbColor,
16340
16436
  step,
16341
16437
  disabled,
@@ -16376,16 +16472,20 @@ const VSliderThumb = genericComponent()({
16376
16472
  if (!relevantKeys.includes(e.key)) return;
16377
16473
  e.preventDefault();
16378
16474
  const _step = step.value || 0.1;
16379
- const steps = (props.max - props.min) / _step;
16475
+ const steps = (max.value - min.value) / _step;
16380
16476
  if ([left, right, down, up].includes(e.key)) {
16381
16477
  const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
16382
16478
  const direction = increase.includes(e.key) ? 1 : -1;
16383
16479
  const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
16384
- value = value + direction * _step * multipliers.value[multiplier];
16480
+ if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
16481
+ value = value - steps % 1 * _step;
16482
+ } else {
16483
+ value = value + direction * _step * multipliers.value[multiplier];
16484
+ }
16385
16485
  } else if (e.key === home) {
16386
- value = props.min;
16486
+ value = min.value;
16387
16487
  } else if (e.key === end) {
16388
- value = props.max;
16488
+ value = max.value;
16389
16489
  } else {
16390
16490
  const direction = e.key === pagedown ? 1 : -1;
16391
16491
  value = value - direction * _step * (steps > 100 ? steps / 10 : 10);
@@ -16398,43 +16498,43 @@ const VSliderThumb = genericComponent()({
16398
16498
  }
16399
16499
  useRender(() => {
16400
16500
  const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');
16401
- return createVNode("div", {
16402
- "class": ['v-slider-thumb', {
16501
+ return createElementVNode("div", {
16502
+ "class": normalizeClass(['v-slider-thumb', {
16403
16503
  'v-slider-thumb--focused': props.focused,
16404
16504
  'v-slider-thumb--pressed': props.focused && mousePressed.value
16405
- }, props.class, rtlClasses.value],
16406
- "style": [{
16505
+ }, props.class, rtlClasses.value]),
16506
+ "style": normalizeStyle([{
16407
16507
  '--v-slider-thumb-position': positionPercentage,
16408
16508
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
16409
- }, props.style],
16509
+ }, props.style]),
16410
16510
  "role": "slider",
16411
16511
  "tabindex": disabled.value ? -1 : 0,
16412
16512
  "aria-label": props.name,
16413
- "aria-valuemin": props.min,
16414
- "aria-valuemax": props.max,
16513
+ "aria-valuemin": min.value,
16514
+ "aria-valuemax": max.value,
16415
16515
  "aria-valuenow": props.modelValue,
16416
16516
  "aria-readonly": !!readonly.value,
16417
16517
  "aria-orientation": direction.value,
16418
16518
  "onKeydown": !readonly.value ? onKeydown : undefined
16419
- }, [createVNode("div", {
16420
- "class": ['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value],
16519
+ }, [createElementVNode("div", {
16520
+ "class": normalizeClass(['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value]),
16421
16521
  "style": {
16422
16522
  ...textColorStyles.value
16423
16523
  }
16424
- }, null), withDirectives(createVNode("div", {
16425
- "class": ['v-slider-thumb__ripple', textColorClasses.value],
16426
- "style": textColorStyles.value
16427
- }, null), [[resolveDirective("ripple"), props.ripple, null, {
16524
+ }, null), withDirectives(createElementVNode("div", {
16525
+ "class": normalizeClass(['v-slider-thumb__ripple', textColorClasses.value]),
16526
+ "style": normalizeStyle(textColorStyles.value)
16527
+ }, null), [[Ripple, props.ripple, null, {
16428
16528
  circle: true,
16429
16529
  center: true
16430
16530
  }]]), createVNode(VScaleTransition, {
16431
16531
  "origin": "bottom center"
16432
16532
  }, {
16433
- default: () => [withDirectives(createVNode("div", {
16533
+ default: () => [withDirectives(createElementVNode("div", {
16434
16534
  "class": "v-slider-thumb__label-container"
16435
- }, [createVNode("div", {
16436
- "class": ['v-slider-thumb__label']
16437
- }, [createVNode("div", null, [slots['thumb-label']?.({
16535
+ }, [createElementVNode("div", {
16536
+ "class": normalizeClass(['v-slider-thumb__label'])
16537
+ }, [createElementVNode("div", null, [slots['thumb-label']?.({
16438
16538
  modelValue: props.modelValue
16439
16539
  }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
16440
16540
  })]);
@@ -16511,17 +16611,17 @@ const VSliderTrack = genericComponent()({
16511
16611
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
16512
16612
  return ticks.map((tick, index) => {
16513
16613
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
16514
- return createVNode("div", {
16614
+ return createElementVNode("div", {
16515
16615
  "key": tick.value,
16516
- "class": ['v-slider-track__tick', {
16616
+ "class": normalizeClass(['v-slider-track__tick', {
16517
16617
  'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,
16518
16618
  'v-slider-track__tick--first': tick.value === min.value,
16519
16619
  'v-slider-track__tick--last': tick.value === max.value
16520
- }],
16620
+ }]),
16521
16621
  "style": {
16522
16622
  [startDir.value]: directionValue
16523
16623
  }
16524
- }, [(tick.label || slots['tick-label']) && createVNode("div", {
16624
+ }, [(tick.label || slots['tick-label']) && createElementVNode("div", {
16525
16625
  "class": "v-slider-track__tick-label"
16526
16626
  }, [slots['tick-label']?.({
16527
16627
  tick,
@@ -16530,30 +16630,30 @@ const VSliderTrack = genericComponent()({
16530
16630
  });
16531
16631
  });
16532
16632
  useRender(() => {
16533
- return createVNode("div", {
16534
- "class": ['v-slider-track', roundedClasses.value, props.class],
16535
- "style": [{
16633
+ return createElementVNode("div", {
16634
+ "class": normalizeClass(['v-slider-track', roundedClasses.value, props.class]),
16635
+ "style": normalizeStyle([{
16536
16636
  '--v-slider-track-size': convertToUnit(trackSize.value),
16537
16637
  '--v-slider-tick-size': convertToUnit(tickSize.value)
16538
- }, props.style]
16539
- }, [createVNode("div", {
16540
- "class": ['v-slider-track__background', trackColorClasses.value, {
16638
+ }, props.style])
16639
+ }, [createElementVNode("div", {
16640
+ "class": normalizeClass(['v-slider-track__background', trackColorClasses.value, {
16541
16641
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
16542
- }],
16642
+ }]),
16543
16643
  "style": {
16544
16644
  ...backgroundStyles.value,
16545
16645
  ...trackColorStyles.value
16546
16646
  }
16547
- }, null), createVNode("div", {
16548
- "class": ['v-slider-track__fill', trackFillColorClasses.value],
16647
+ }, null), createElementVNode("div", {
16648
+ "class": normalizeClass(['v-slider-track__fill', trackFillColorClasses.value]),
16549
16649
  "style": {
16550
16650
  ...trackFillStyles.value,
16551
16651
  ...trackFillColorStyles.value
16552
16652
  }
16553
- }, null), showTicks.value && createVNode("div", {
16554
- "class": ['v-slider-track__ticks', {
16653
+ }, null), showTicks.value && createElementVNode("div", {
16654
+ "class": normalizeClass(['v-slider-track__ticks', {
16555
16655
  'v-slider-track__ticks--always-show': showTicks.value === 'always'
16556
- }]
16656
+ }])
16557
16657
  }, [computedTicks.value])]);
16558
16658
  });
16559
16659
  return {};
@@ -16647,7 +16747,7 @@ const VSlider = genericComponent()({
16647
16747
  "focused": isFocused.value
16648
16748
  }), {
16649
16749
  ...slots,
16650
- prepend: hasPrepend ? slotProps => createVNode(Fragment, null, [slots.label?.(slotProps) ?? (props.label ? createVNode(VLabel, {
16750
+ prepend: hasPrepend ? slotProps => createElementVNode(Fragment, null, [slots.label?.(slotProps) ?? (props.label ? createVNode(VLabel, {
16651
16751
  "id": slotProps.id.value,
16652
16752
  "class": "v-slider__label",
16653
16753
  "text": props.label
@@ -16657,11 +16757,11 @@ const VSlider = genericComponent()({
16657
16757
  id,
16658
16758
  messagesId
16659
16759
  } = _ref4;
16660
- return createVNode("div", {
16760
+ return createElementVNode("div", {
16661
16761
  "class": "v-slider__container",
16662
16762
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
16663
16763
  "onTouchstartPassive": !readonly.value ? onSliderTouchstart : undefined
16664
- }, [createVNode("input", {
16764
+ }, [createElementVNode("input", {
16665
16765
  "id": id.value,
16666
16766
  "name": props.name || id.value,
16667
16767
  "disabled": !!props.disabled,
@@ -16734,12 +16834,12 @@ const VColorPickerPreview = defineComponent({
16734
16834
  });
16735
16835
  } catch (e) {}
16736
16836
  }
16737
- useRender(() => createVNode("div", {
16738
- "class": ['v-color-picker-preview', {
16837
+ useRender(() => createElementVNode("div", {
16838
+ "class": normalizeClass(['v-color-picker-preview', {
16739
16839
  'v-color-picker-preview--hide-alpha': props.hideAlpha
16740
- }, props.class],
16741
- "style": props.style
16742
- }, [SUPPORTS_EYE_DROPPER && createVNode("div", {
16840
+ }, props.class]),
16841
+ "style": normalizeStyle(props.style)
16842
+ }, [SUPPORTS_EYE_DROPPER && createElementVNode("div", {
16743
16843
  "class": "v-color-picker-preview__eye-dropper",
16744
16844
  "key": "eyeDropper"
16745
16845
  }, [createVNode(VBtn, {
@@ -16748,13 +16848,13 @@ const VColorPickerPreview = defineComponent({
16748
16848
  "icon": "$eyeDropper",
16749
16849
  "variant": "plain",
16750
16850
  "onClick": openEyeDropper
16751
- }, null)]), createVNode("div", {
16851
+ }, null)]), createElementVNode("div", {
16752
16852
  "class": "v-color-picker-preview__dot"
16753
- }, [createVNode("div", {
16853
+ }, [createElementVNode("div", {
16754
16854
  "style": {
16755
16855
  background: HSVtoCSS(props.color ?? nullColor)
16756
16856
  }
16757
- }, null)]), createVNode("div", {
16857
+ }, null)]), createElementVNode("div", {
16758
16858
  "class": "v-color-picker-preview__sliders"
16759
16859
  }, [createVNode(VSlider, {
16760
16860
  "class": "v-color-picker-preview__track v-color-picker-preview__hue",
@@ -17139,21 +17239,21 @@ const VColorPickerSwatches = defineComponent({
17139
17239
  let {
17140
17240
  emit
17141
17241
  } = _ref;
17142
- useRender(() => createVNode("div", {
17143
- "class": ['v-color-picker-swatches', props.class],
17144
- "style": [{
17242
+ useRender(() => createElementVNode("div", {
17243
+ "class": normalizeClass(['v-color-picker-swatches', props.class]),
17244
+ "style": normalizeStyle([{
17145
17245
  maxHeight: convertToUnit(props.maxHeight)
17146
- }, props.style]
17147
- }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
17246
+ }, props.style])
17247
+ }, [createElementVNode("div", null, [props.swatches.map(swatch => createElementVNode("div", {
17148
17248
  "class": "v-color-picker-swatches__swatch"
17149
17249
  }, [swatch.map(color => {
17150
17250
  const rgba = parseColor(color);
17151
17251
  const hsva = RGBtoHSV(rgba);
17152
17252
  const background = RGBtoCSS(rgba);
17153
- return createVNode("div", {
17253
+ return createElementVNode("div", {
17154
17254
  "class": "v-color-picker-swatches__color",
17155
17255
  "onClick": () => hsva && emit('update:color', hsva)
17156
- }, [createVNode("div", {
17256
+ }, [createElementVNode("div", {
17157
17257
  "style": {
17158
17258
  background
17159
17259
  }
@@ -17215,8 +17315,8 @@ const VSheet = genericComponent()({
17215
17315
  roundedClasses
17216
17316
  } = useRounded(props);
17217
17317
  useRender(() => createVNode(props.tag, {
17218
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
17219
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
17318
+ "class": normalizeClass(['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),
17319
+ "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style])
17220
17320
  }, slots));
17221
17321
  return {};
17222
17322
  }
@@ -17255,17 +17355,17 @@ const VPicker = genericComponent()({
17255
17355
  }, props.class],
17256
17356
  "style": props.style
17257
17357
  }), {
17258
- default: () => [!props.hideHeader && createVNode("div", {
17358
+ default: () => [!props.hideHeader && createElementVNode("div", {
17259
17359
  "key": "header",
17260
- "class": [backgroundColorClasses.value],
17261
- "style": [backgroundColorStyles.value]
17360
+ "class": normalizeClass([backgroundColorClasses.value]),
17361
+ "style": normalizeStyle([backgroundColorStyles.value])
17262
17362
  }, [hasTitle && createVNode(VPickerTitle, {
17263
17363
  "key": "picker-title"
17264
17364
  }, {
17265
17365
  default: () => [slots.title?.() ?? props.title]
17266
- }), slots.header && createVNode("div", {
17366
+ }), slots.header && createElementVNode("div", {
17267
17367
  "class": "v-picker__header"
17268
- }, [slots.header()])]), createVNode("div", {
17368
+ }, [slots.header()])]), createElementVNode("div", {
17269
17369
  "class": "v-picker__body"
17270
17370
  }, [slots.default?.()]), slots.actions && createVNode(VDefaultsProvider, {
17271
17371
  "defaults": {
@@ -17275,7 +17375,7 @@ const VPicker = genericComponent()({
17275
17375
  }
17276
17376
  }
17277
17377
  }, {
17278
- default: () => [createVNode("div", {
17378
+ default: () => [createElementVNode("div", {
17279
17379
  "class": "v-picker__actions"
17280
17380
  }, [slots.actions()])]
17281
17381
  })]
@@ -18015,7 +18115,20 @@ function createInstance(options, locale) {
18015
18115
  watch(locale.current, value => {
18016
18116
  instance.locale = options.locale[value] ?? value ?? instance.locale;
18017
18117
  });
18018
- return instance;
18118
+ return Object.assign(instance, {
18119
+ createDateRange(start, stop) {
18120
+ const diff = instance.getDiff(stop ?? start, start, 'days');
18121
+ const datesInRange = [start];
18122
+ for (let i = 1; i < diff; i++) {
18123
+ const nextDate = instance.addDays(start, i);
18124
+ datesInRange.push(nextDate);
18125
+ }
18126
+ if (stop) {
18127
+ datesInRange.push(instance.endOfDay(stop));
18128
+ }
18129
+ return datesInRange;
18130
+ }
18131
+ });
18019
18132
  }
18020
18133
  function useDate() {
18021
18134
  const options = inject$1(DateOptionsSymbol);
@@ -18137,7 +18250,7 @@ const VColorPicker = defineComponent({
18137
18250
  }, props.style]
18138
18251
  }), {
18139
18252
  ...slots,
18140
- default: () => createVNode(Fragment, null, [!props.hideCanvas && createVNode(VColorPickerCanvas, {
18253
+ default: () => createElementVNode(Fragment, null, [!props.hideCanvas && createVNode(VColorPickerCanvas, {
18141
18254
  "key": "canvas",
18142
18255
  "color": currentColor.value,
18143
18256
  "onUpdate:color": updateColor,
@@ -18145,7 +18258,7 @@ const VColorPicker = defineComponent({
18145
18258
  "dotSize": props.dotSize,
18146
18259
  "width": props.width,
18147
18260
  "height": props.canvasHeight
18148
- }, null), (!props.hideSliders || !props.hideInputs) && createVNode("div", {
18261
+ }, null), (!props.hideSliders || !props.hideInputs) && createElementVNode("div", {
18149
18262
  "key": "controls",
18150
18263
  "class": "v-color-picker__controls"
18151
18264
  }, [!props.hideSliders && createVNode(VColorPickerPreview, {
@@ -18520,7 +18633,7 @@ const VCombobox = genericComponent()({
18520
18633
  "onKeydown": onKeydown
18521
18634
  }), {
18522
18635
  ...slots,
18523
- default: () => createVNode(Fragment, null, [createVNode(VMenu, mergeProps({
18636
+ default: () => createElementVNode(Fragment, null, [createVNode(VMenu, mergeProps({
18524
18637
  "ref": vMenuRef,
18525
18638
  "modelValue": menu.value,
18526
18639
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -18579,7 +18692,7 @@ const VCombobox = genericComponent()({
18579
18692
  let {
18580
18693
  isSelected
18581
18694
  } = _ref5;
18582
- return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
18695
+ return createElementVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
18583
18696
  "key": item.value,
18584
18697
  "modelValue": isSelected,
18585
18698
  "ripple": false,
@@ -18628,10 +18741,10 @@ const VCombobox = genericComponent()({
18628
18741
  index
18629
18742
  })) : undefined;
18630
18743
  if (hasSlot && !slotContent) return undefined;
18631
- return createVNode("div", {
18744
+ return createElementVNode("div", {
18632
18745
  "key": item.value,
18633
- "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
18634
- "style": index === selectionIndex.value ? textColorStyles.value : {}
18746
+ "class": normalizeClass(['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]]),
18747
+ "style": normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})
18635
18748
  }, [hasChips.value ? !slots.chip ? createVNode(VChip, mergeProps({
18636
18749
  "key": "chip",
18637
18750
  "closable": props.closableChips,
@@ -18649,9 +18762,9 @@ const VCombobox = genericComponent()({
18649
18762
  }
18650
18763
  }, {
18651
18764
  default: () => [slotContent]
18652
- }) : slotContent ?? createVNode("span", {
18765
+ }) : slotContent ?? createElementVNode("span", {
18653
18766
  "class": "v-combobox__selection-text"
18654
- }, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
18767
+ }, [item.title, props.multiple && index < model.value.length - 1 && createElementVNode("span", {
18655
18768
  "class": "v-combobox__selection-comma"
18656
18769
  }, [createTextVNode(",")])])]);
18657
18770
  })]),
@@ -18659,7 +18772,7 @@ const VCombobox = genericComponent()({
18659
18772
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18660
18773
  args[_key] = arguments[_key];
18661
18774
  }
18662
- return createVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
18775
+ return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
18663
18776
  "class": "v-combobox__menu-icon",
18664
18777
  "color": vTextFieldRef.value?.fieldIconColor,
18665
18778
  "icon": props.menuIcon,
@@ -18747,7 +18860,7 @@ const VConfirmEdit = genericComponent()({
18747
18860
  emit('cancel');
18748
18861
  }
18749
18862
  function actions(actionsProps) {
18750
- return createVNode(Fragment, null, [createVNode(VBtn, mergeProps({
18863
+ return createElementVNode(Fragment, null, [createVNode(VBtn, mergeProps({
18751
18864
  "disabled": isCancelDisabled.value,
18752
18865
  "variant": "text",
18753
18866
  "color": props.color,
@@ -18763,7 +18876,7 @@ const VConfirmEdit = genericComponent()({
18763
18876
  }
18764
18877
  let actionsUsed = false;
18765
18878
  useRender(() => {
18766
- return createVNode(Fragment, null, [slots.default?.({
18879
+ return createElementVNode(Fragment, null, [slots.default?.({
18767
18880
  model: internalModel,
18768
18881
  save,
18769
18882
  cancel,
@@ -19646,10 +19759,10 @@ const VDataIterator = genericComponent()({
19646
19759
  groupedItems: paginatedItems.value
19647
19760
  }));
19648
19761
  useRender(() => createVNode(props.tag, {
19649
- "class": ['v-data-iterator', {
19762
+ "class": normalizeClass(['v-data-iterator', {
19650
19763
  'v-data-iterator--loading': props.loading
19651
- }, props.class],
19652
- "style": props.style
19764
+ }, props.class]),
19765
+ "style": normalizeStyle(props.style)
19653
19766
  }, {
19654
19767
  default: () => [slots.header?.(slotProps.value), createVNode(MaybeTransition, {
19655
19768
  "transition": props.transition
@@ -19660,7 +19773,7 @@ const VDataIterator = genericComponent()({
19660
19773
  "active": true
19661
19774
  }, {
19662
19775
  default: slotProps => slots.loader?.(slotProps)
19663
- }) : createVNode("div", {
19776
+ }) : createElementVNode("div", {
19664
19777
  "key": "items"
19665
19778
  }, [!paginatedItems.value.length ? slots['no-data']?.() : slots.default?.(slotProps.value)])]
19666
19779
  }), slots.footer?.(slotProps.value)]
@@ -19954,44 +20067,44 @@ const VPagination = genericComponent()({
19954
20067
  }
19955
20068
  useRender(() => createVNode(props.tag, {
19956
20069
  "ref": resizeRef,
19957
- "class": ['v-pagination', themeClasses.value, props.class],
19958
- "style": props.style,
20070
+ "class": normalizeClass(['v-pagination', themeClasses.value, props.class]),
20071
+ "style": normalizeStyle(props.style),
19959
20072
  "role": "navigation",
19960
20073
  "aria-label": t(props.ariaLabel),
19961
20074
  "onKeydown": onKeydown,
19962
20075
  "data-test": "v-pagination-root"
19963
20076
  }, {
19964
- default: () => [createVNode("ul", {
20077
+ default: () => [createElementVNode("ul", {
19965
20078
  "class": "v-pagination__list"
19966
- }, [props.showFirstLastPage && createVNode("li", {
20079
+ }, [props.showFirstLastPage && createElementVNode("li", {
19967
20080
  "key": "first",
19968
20081
  "class": "v-pagination__first",
19969
20082
  "data-test": "v-pagination-first"
19970
20083
  }, [slots.first ? slots.first(controls.value.first) : createVNode(VBtn, mergeProps({
19971
20084
  "_as": "VPaginationBtn"
19972
- }, controls.value.first), null)]), createVNode("li", {
20085
+ }, controls.value.first), null)]), createElementVNode("li", {
19973
20086
  "key": "prev",
19974
20087
  "class": "v-pagination__prev",
19975
20088
  "data-test": "v-pagination-prev"
19976
20089
  }, [slots.prev ? slots.prev(controls.value.prev) : createVNode(VBtn, mergeProps({
19977
20090
  "_as": "VPaginationBtn"
19978
- }, controls.value.prev), null)]), items.value.map((item, index) => createVNode("li", {
20091
+ }, controls.value.prev), null)]), items.value.map((item, index) => createElementVNode("li", {
19979
20092
  "key": item.key,
19980
- "class": ['v-pagination__item', {
20093
+ "class": normalizeClass(['v-pagination__item', {
19981
20094
  'v-pagination__item--is-active': item.isActive
19982
- }],
20095
+ }]),
19983
20096
  "data-test": "v-pagination-item"
19984
20097
  }, [slots.item ? slots.item(item) : createVNode(VBtn, mergeProps({
19985
20098
  "_as": "VPaginationBtn"
19986
20099
  }, item.props), {
19987
20100
  default: () => [item.page]
19988
- })])), createVNode("li", {
20101
+ })])), createElementVNode("li", {
19989
20102
  "key": "next",
19990
20103
  "class": "v-pagination__next",
19991
20104
  "data-test": "v-pagination-next"
19992
20105
  }, [slots.next ? slots.next(controls.value.next) : createVNode(VBtn, mergeProps({
19993
20106
  "_as": "VPaginationBtn"
19994
- }, controls.value.next), null)]), props.showFirstLastPage && createVNode("li", {
20107
+ }, controls.value.next), null)]), props.showFirstLastPage && createElementVNode("li", {
19995
20108
  "key": "last",
19996
20109
  "class": "v-pagination__last",
19997
20110
  "data-test": "v-pagination-last"
@@ -20100,20 +20213,20 @@ const VDataTableFooter = genericComponent()({
20100
20213
  }));
20101
20214
  useRender(() => {
20102
20215
  const paginationProps = VPagination.filterProps(props);
20103
- return createVNode("div", {
20216
+ return createElementVNode("div", {
20104
20217
  "class": "v-data-table-footer"
20105
- }, [slots.prepend?.(), createVNode("div", {
20218
+ }, [slots.prepend?.(), createElementVNode("div", {
20106
20219
  "class": "v-data-table-footer__items-per-page"
20107
- }, [createVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
20220
+ }, [createElementVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
20108
20221
  "items": itemsPerPageOptions.value,
20109
20222
  "modelValue": itemsPerPage.value,
20110
20223
  "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
20111
20224
  "density": "compact",
20112
20225
  "variant": "outlined",
20113
20226
  "hide-details": true
20114
- }, null)]), createVNode("div", {
20227
+ }, null)]), createElementVNode("div", {
20115
20228
  "class": "v-data-table-footer__info"
20116
- }, [createVNode("div", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), createVNode("div", {
20229
+ }, [createElementVNode("div", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), createElementVNode("div", {
20117
20230
  "class": "v-data-table-footer__pagination"
20118
20231
  }, [createVNode(VPagination, mergeProps({
20119
20232
  "modelValue": page.value,
@@ -20156,12 +20269,12 @@ const VDataTableColumn = defineFunctionalComponent({
20156
20269
  } = _ref;
20157
20270
  const Tag = props.tag ?? 'td';
20158
20271
  return createVNode(Tag, {
20159
- "class": ['v-data-table__td', {
20272
+ "class": normalizeClass(['v-data-table__td', {
20160
20273
  'v-data-table-column--fixed': props.fixed,
20161
20274
  'v-data-table-column--last-fixed': props.lastFixed,
20162
20275
  'v-data-table-column--no-padding': props.noPadding,
20163
20276
  'v-data-table-column--nowrap': props.nowrap
20164
- }, `v-data-table-column--align-${props.align}`],
20277
+ }, `v-data-table-column--align-${props.align}`]),
20165
20278
  "style": {
20166
20279
  height: convertToUnit(props.height),
20167
20280
  width: convertToUnit(props.width),
@@ -20577,16 +20690,16 @@ const VDataTableHeaders = genericComponent()({
20577
20690
  "onUpdate:modelValue": selectAll
20578
20691
  }, null));
20579
20692
  }
20580
- return createVNode("div", {
20693
+ return createElementVNode("div", {
20581
20694
  "class": "v-data-table-header__content"
20582
- }, [createVNode("span", null, [column.title]), column.sortable && !props.disableSort && createVNode(VIcon, {
20695
+ }, [createElementVNode("span", null, [column.title]), column.sortable && !props.disableSort && createVNode(VIcon, {
20583
20696
  "key": "icon",
20584
20697
  "class": "v-data-table-header__sort-icon",
20585
20698
  "icon": getSortIcon(column)
20586
- }, null), props.multiSort && isSorted(column) && createVNode("div", {
20699
+ }, null), props.multiSort && isSorted(column) && createElementVNode("div", {
20587
20700
  "key": "badge",
20588
- "class": ['v-data-table-header__sort-badge', ...backgroundColorClasses.value],
20589
- "style": backgroundColorStyles.value
20701
+ "class": normalizeClass(['v-data-table-header__sort-badge', ...backgroundColorClasses.value]),
20702
+ "style": normalizeStyle(backgroundColorStyles.value)
20590
20703
  }, [sortBy.value.findIndex(x => x.key === column.key) + 1])]);
20591
20704
  }
20592
20705
  });
@@ -20605,7 +20718,7 @@ const VDataTableHeaders = genericComponent()({
20605
20718
  "class": [...headerCellClasses.value],
20606
20719
  "colspan": headers.value.length + 1
20607
20720
  }, props.headerProps), {
20608
- default: () => [createVNode("div", {
20721
+ default: () => [createElementVNode("div", {
20609
20722
  "class": "v-data-table-header__content"
20610
20723
  }, [createVNode(VSelect, {
20611
20724
  "chips": true,
@@ -20629,7 +20742,7 @@ const VDataTableHeaders = genericComponent()({
20629
20742
  }
20630
20743
  }, {
20631
20744
  default: () => [props.item.title, createVNode(VIcon, {
20632
- "class": ['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active'],
20745
+ "class": normalizeClass(['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active']),
20633
20746
  "icon": getSortIcon(props.item.raw),
20634
20747
  "size": "small"
20635
20748
  }, null)]
@@ -20638,13 +20751,13 @@ const VDataTableHeaders = genericComponent()({
20638
20751
  });
20639
20752
  };
20640
20753
  useRender(() => {
20641
- return mobile.value ? createVNode("tr", null, [createVNode(VDataTableMobileHeaderCell, null, null)]) : createVNode(Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => createVNode("tr", null, [row.map((column, x) => createVNode(VDataTableHeaderCell, {
20754
+ return mobile.value ? createElementVNode("tr", null, [createVNode(VDataTableMobileHeaderCell, null, null)]) : createElementVNode(Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => createElementVNode("tr", null, [row.map((column, x) => createVNode(VDataTableHeaderCell, {
20642
20755
  "column": column,
20643
20756
  "x": x,
20644
20757
  "y": y
20645
- }, null))])), props.loading && createVNode("tr", {
20758
+ }, null))])), props.loading && createElementVNode("tr", {
20646
20759
  "class": "v-data-table-progress"
20647
- }, [createVNode("th", {
20760
+ }, [createElementVNode("th", {
20648
20761
  "colspan": columns.value.length
20649
20762
  }, [createVNode(LoaderSlot, {
20650
20763
  "name": "v-data-table-progress",
@@ -20690,7 +20803,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
20690
20803
  const rows = computed(() => {
20691
20804
  return extractRows([props.item]);
20692
20805
  });
20693
- return () => createVNode("tr", {
20806
+ return () => createElementVNode("tr", {
20694
20807
  "class": "v-data-table-group-header-row",
20695
20808
  "style": {
20696
20809
  '--v-data-table-group-header-row-depth': props.item.depth
@@ -20714,7 +20827,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
20714
20827
  "variant": "text",
20715
20828
  "icon": icon,
20716
20829
  "onClick": onClick
20717
- }, null), createVNode("span", null, [props.item.value]), createVNode("span", null, [createTextVNode("("), rows.value.length, createTextVNode(")")])]
20830
+ }, null), createElementVNode("span", null, [props.item.value]), createElementVNode("span", null, [createTextVNode("("), rows.value.length, createTextVNode(")")])]
20718
20831
  });
20719
20832
  }
20720
20833
  if (column.key === 'data-table-select') {
@@ -20727,13 +20840,13 @@ const VDataTableGroupHeaderRow = genericComponent()({
20727
20840
  indeterminate,
20728
20841
  'onUpdate:modelValue': selectGroup
20729
20842
  }
20730
- }) ?? createVNode("td", null, [createVNode(VCheckboxBtn, {
20843
+ }) ?? createElementVNode("td", null, [createVNode(VCheckboxBtn, {
20731
20844
  "modelValue": modelValue,
20732
20845
  "indeterminate": indeterminate,
20733
20846
  "onUpdate:modelValue": selectGroup
20734
20847
  }, null)]);
20735
20848
  }
20736
- return createVNode("td", null, null);
20849
+ return createElementVNode("td", null, null);
20737
20850
  })]);
20738
20851
  }
20739
20852
  });
@@ -20779,10 +20892,10 @@ const VDataTableRow = genericComponent()({
20779
20892
  const {
20780
20893
  columns
20781
20894
  } = useHeaders();
20782
- useRender(() => createVNode("tr", {
20783
- "class": ['v-data-table__tr', {
20895
+ useRender(() => createElementVNode("tr", {
20896
+ "class": normalizeClass(['v-data-table__tr', {
20784
20897
  'v-data-table__tr--clickable': !!(props.onClick || props.onContextmenu || props.onDblclick)
20785
- }, displayClasses.value],
20898
+ }, displayClasses.value]),
20786
20899
  "onClick": props.onClick,
20787
20900
  "onContextmenu": props.onContextmenu,
20788
20901
  "onDblclick": props.onDblclick
@@ -20871,9 +20984,9 @@ const VDataTableRow = genericComponent()({
20871
20984
  }
20872
20985
  if (slots[slotName] && !mobile.value) return slots[slotName](slotProps);
20873
20986
  const displayValue = toDisplayString(slotProps.value);
20874
- return !mobile.value ? displayValue : createVNode(Fragment, null, [createVNode("div", {
20987
+ return !mobile.value ? displayValue : createElementVNode(Fragment, null, [createElementVNode("div", {
20875
20988
  "class": "v-data-table__td-title"
20876
- }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), createVNode("div", {
20989
+ }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), createElementVNode("div", {
20877
20990
  "class": "v-data-table__td-value"
20878
20991
  }, [slots[slotName]?.(slotProps) ?? displayValue])]);
20879
20992
  }
@@ -20936,22 +21049,22 @@ const VDataTableRows = genericComponent()({
20936
21049
  } = useDisplay(props);
20937
21050
  useRender(() => {
20938
21051
  if (props.loading && (!props.items.length || slots.loading)) {
20939
- return createVNode("tr", {
21052
+ return createElementVNode("tr", {
20940
21053
  "class": "v-data-table-rows-loading",
20941
21054
  "key": "loading"
20942
- }, [createVNode("td", {
21055
+ }, [createElementVNode("td", {
20943
21056
  "colspan": columns.value.length
20944
21057
  }, [slots.loading?.() ?? t(props.loadingText)])]);
20945
21058
  }
20946
21059
  if (!props.loading && !props.items.length && !props.hideNoData) {
20947
- return createVNode("tr", {
21060
+ return createElementVNode("tr", {
20948
21061
  "class": "v-data-table-rows-no-data",
20949
21062
  "key": "no-data"
20950
- }, [createVNode("td", {
21063
+ }, [createElementVNode("td", {
20951
21064
  "colspan": columns.value.length
20952
21065
  }, [slots['no-data']?.() ?? t(props.noDataText)])]);
20953
21066
  }
20954
- return createVNode(Fragment, null, [props.items.map((item, index) => {
21067
+ return createElementVNode(Fragment, null, [props.items.map((item, index) => {
20955
21068
  if (item.type === 'group') {
20956
21069
  const slotProps = {
20957
21070
  index,
@@ -20996,7 +21109,7 @@ const VDataTableRows = genericComponent()({
20996
21109
  internalItem: slotProps.internalItem
20997
21110
  }) : props.rowProps)
20998
21111
  };
20999
- return createVNode(Fragment, {
21112
+ return createElementVNode(Fragment, {
21000
21113
  "key": itemSlotProps.props.key
21001
21114
  }, [slots.item ? slots.item(itemSlotProps) : createVNode(VDataTableRow, itemSlotProps.props, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
21002
21115
  })]);
@@ -21030,22 +21143,22 @@ const VTable = genericComponent()({
21030
21143
  densityClasses
21031
21144
  } = useDensity(props);
21032
21145
  useRender(() => createVNode(props.tag, {
21033
- "class": ['v-table', {
21146
+ "class": normalizeClass(['v-table', {
21034
21147
  'v-table--fixed-height': !!props.height,
21035
21148
  'v-table--fixed-header': props.fixedHeader,
21036
21149
  'v-table--fixed-footer': props.fixedFooter,
21037
21150
  'v-table--has-top': !!slots.top,
21038
21151
  'v-table--has-bottom': !!slots.bottom,
21039
21152
  'v-table--hover': props.hover
21040
- }, themeClasses.value, densityClasses.value, props.class],
21041
- "style": props.style
21153
+ }, themeClasses.value, densityClasses.value, props.class]),
21154
+ "style": normalizeStyle(props.style)
21042
21155
  }, {
21043
- default: () => [slots.top?.(), slots.default ? createVNode("div", {
21156
+ default: () => [slots.top?.(), slots.default ? createElementVNode("div", {
21044
21157
  "class": "v-table__wrapper",
21045
21158
  "style": {
21046
21159
  height: convertToUnit(props.height)
21047
21160
  }
21048
- }, [createVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
21161
+ }, [createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
21049
21162
  }));
21050
21163
  return {};
21051
21164
  }
@@ -21298,12 +21411,12 @@ const VDataTable = genericComponent()({
21298
21411
  "fixedHeader": props.fixedHeader || props.sticky
21299
21412
  }), {
21300
21413
  top: () => slots.top?.(slotProps.value),
21301
- default: () => slots.default ? slots.default(slotProps.value) : createVNode(Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createVNode("thead", {
21414
+ default: () => slots.default ? slots.default(slotProps.value) : createElementVNode(Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createElementVNode("thead", {
21302
21415
  "key": "thead"
21303
- }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : createVNode(VDataTableRows, mergeProps(attrs, dataTableRowsProps, {
21416
+ }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && createElementVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : createVNode(VDataTableRows, mergeProps(attrs, dataTableRowsProps, {
21304
21417
  "items": paginatedItems.value
21305
21418
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
21306
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && createVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
21419
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && createElementVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
21307
21420
  prepend: slots['footer.prepend']
21308
21421
  })])
21309
21422
  });
@@ -21474,7 +21587,7 @@ const VDataTableVirtual = genericComponent()({
21474
21587
  "fixedHeader": props.fixedHeader || props.sticky
21475
21588
  }), {
21476
21589
  top: () => slots.top?.(slotProps.value),
21477
- wrapper: () => createVNode("div", {
21590
+ wrapper: () => createElementVNode("div", {
21478
21591
  "ref": containerRef,
21479
21592
  "onScrollPassive": handleScroll,
21480
21593
  "onScrollend": handleScrollend,
@@ -21482,17 +21595,17 @@ const VDataTableVirtual = genericComponent()({
21482
21595
  "style": {
21483
21596
  height: convertToUnit(props.height)
21484
21597
  }
21485
- }, [createVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createVNode("thead", {
21598
+ }, [createElementVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createElementVNode("thead", {
21486
21599
  "key": "thead"
21487
- }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && createVNode("tbody", {
21600
+ }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && createElementVNode("tbody", {
21488
21601
  "key": "tbody"
21489
- }, [createVNode("tr", {
21602
+ }, [createElementVNode("tr", {
21490
21603
  "ref": markerRef,
21491
21604
  "style": {
21492
21605
  height: convertToUnit(paddingTop.value),
21493
21606
  border: 0
21494
21607
  }
21495
- }, [createVNode("td", {
21608
+ }, [createElementVNode("td", {
21496
21609
  "colspan": columns.value.length,
21497
21610
  "style": {
21498
21611
  height: 0,
@@ -21521,12 +21634,12 @@ const VDataTableVirtual = genericComponent()({
21521
21634
  }), slots);
21522
21635
  }
21523
21636
  })
21524
- }), slots['body.append']?.(slotProps.value), createVNode("tr", {
21637
+ }), slots['body.append']?.(slotProps.value), createElementVNode("tr", {
21525
21638
  "style": {
21526
21639
  height: convertToUnit(paddingBottom.value),
21527
21640
  border: 0
21528
21641
  }
21529
- }, [createVNode("td", {
21642
+ }, [createElementVNode("td", {
21530
21643
  "colspan": columns.value.length,
21531
21644
  "style": {
21532
21645
  height: 0,
@@ -21699,17 +21812,17 @@ const VDataTableServer = genericComponent()({
21699
21812
  "fixedHeader": props.fixedHeader || props.sticky
21700
21813
  }), {
21701
21814
  top: () => slots.top?.(slotProps.value),
21702
- default: () => slots.default ? slots.default(slotProps.value) : createVNode(Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createVNode("thead", {
21815
+ default: () => slots.default ? slots.default(slotProps.value) : createElementVNode(Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && createElementVNode("thead", {
21703
21816
  "key": "thead",
21704
21817
  "class": "v-data-table__thead",
21705
21818
  "role": "rowgroup"
21706
- }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && createVNode("tbody", {
21819
+ }, [createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && createElementVNode("tbody", {
21707
21820
  "class": "v-data-table__tbody",
21708
21821
  "role": "rowgroup"
21709
21822
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : createVNode(VDataTableRows, mergeProps(attrs, dataTableRowsProps, {
21710
21823
  "items": flatItems.value
21711
21824
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
21712
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && createVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
21825
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && createElementVNode(Fragment, null, [createVNode(VDivider, null, null), createVNode(VDataTableFooter, dataTableFooterProps, {
21713
21826
  prepend: slots['footer.prepend']
21714
21827
  })])
21715
21828
  });
@@ -21740,10 +21853,10 @@ const VContainer = genericComponent()({
21740
21853
  dimensionStyles
21741
21854
  } = useDimension(props);
21742
21855
  useRender(() => createVNode(props.tag, {
21743
- "class": ['v-container', {
21856
+ "class": normalizeClass(['v-container', {
21744
21857
  'v-container--fluid': props.fluid
21745
- }, rtlClasses.value, props.class],
21746
- "style": [dimensionStyles.value, props.style]
21858
+ }, rtlClasses.value, props.class]),
21859
+ "style": normalizeStyle([dimensionStyles.value, props.style])
21747
21860
  }, slots));
21748
21861
  return {};
21749
21862
  }
@@ -22062,8 +22175,8 @@ const VDatePickerControls = genericComponent()({
22062
22175
  }
22063
22176
  useRender(() => {
22064
22177
  // TODO: add slot support and scope defaults
22065
- return createVNode("div", {
22066
- "class": ['v-date-picker-controls'],
22178
+ return createElementVNode("div", {
22179
+ "class": normalizeClass(['v-date-picker-controls']),
22067
22180
  "style": {
22068
22181
  '--v-date-picker-controls-height': convertToUnit(props.controlHeight)
22069
22182
  }
@@ -22083,7 +22196,7 @@ const VDatePickerControls = genericComponent()({
22083
22196
  "icon": props.modeIcon,
22084
22197
  "variant": "text",
22085
22198
  "onClick": onClickYear
22086
- }, null), createVNode(VSpacer, null, null), createVNode("div", {
22199
+ }, null), createVNode(VSpacer, null, null), createElementVNode("div", {
22087
22200
  "class": "v-date-picker-controls__month"
22088
22201
  }, [createVNode(VBtn, {
22089
22202
  "data-testid": "prev-month",
@@ -22139,24 +22252,24 @@ const VDatePickerHeader = genericComponent()({
22139
22252
  useRender(() => {
22140
22253
  const hasContent = !!(slots.default || props.header);
22141
22254
  const hasAppend = !!(slots.append || props.appendIcon);
22142
- return createVNode("div", {
22143
- "class": ['v-date-picker-header', {
22255
+ return createElementVNode("div", {
22256
+ "class": normalizeClass(['v-date-picker-header', {
22144
22257
  'v-date-picker-header--clickable': !!props.onClick
22145
- }, backgroundColorClasses.value],
22146
- "style": backgroundColorStyles.value,
22258
+ }, backgroundColorClasses.value]),
22259
+ "style": normalizeStyle(backgroundColorStyles.value),
22147
22260
  "onClick": onClick
22148
- }, [slots.prepend && createVNode("div", {
22261
+ }, [slots.prepend && createElementVNode("div", {
22149
22262
  "key": "prepend",
22150
22263
  "class": "v-date-picker-header__prepend"
22151
22264
  }, [slots.prepend()]), hasContent && createVNode(MaybeTransition, {
22152
22265
  "key": "content",
22153
22266
  "name": props.transition
22154
22267
  }, {
22155
- default: () => [createVNode("div", {
22268
+ default: () => [createElementVNode("div", {
22156
22269
  "key": props.header,
22157
22270
  "class": "v-date-picker-header__content"
22158
22271
  }, [slots.default?.() ?? props.header])]
22159
- }), hasAppend && createVNode("div", {
22272
+ }), hasAppend && createElementVNode("div", {
22160
22273
  "class": "v-date-picker-header__append"
22161
22274
  }, [!slots.append ? createVNode(VBtn, {
22162
22275
  "key": "append-btn",
@@ -22409,14 +22522,7 @@ const VDatePickerMonth = genericComponent()({
22409
22522
  } else {
22410
22523
  rangeStop.value = adapter.endOfDay(_value);
22411
22524
  }
22412
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
22413
- const datesInRange = [rangeStart.value];
22414
- for (let i = 1; i < diff; i++) {
22415
- const nextDate = adapter.addDays(rangeStart.value, i);
22416
- datesInRange.push(nextDate);
22417
- }
22418
- datesInRange.push(rangeStop.value);
22419
- model.value = datesInRange;
22525
+ model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22420
22526
  } else {
22421
22527
  rangeStart.value = value;
22422
22528
  rangeStop.value = undefined;
@@ -22442,25 +22548,25 @@ const VDatePickerMonth = genericComponent()({
22442
22548
  model.value = [value];
22443
22549
  }
22444
22550
  }
22445
- useRender(() => createVNode("div", {
22551
+ useRender(() => createElementVNode("div", {
22446
22552
  "class": "v-date-picker-month"
22447
- }, [props.showWeek && createVNode("div", {
22553
+ }, [props.showWeek && createElementVNode("div", {
22448
22554
  "key": "weeks",
22449
22555
  "class": "v-date-picker-month__weeks"
22450
- }, [!props.hideWeekdays && createVNode("div", {
22556
+ }, [!props.hideWeekdays && createElementVNode("div", {
22451
22557
  "key": "hide-week-days",
22452
22558
  "class": "v-date-picker-month__day"
22453
- }, [createTextVNode("\xA0")]), weekNumbers.value.map(week => createVNode("div", {
22454
- "class": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']
22559
+ }, [createTextVNode("\xA0")]), weekNumbers.value.map(week => createElementVNode("div", {
22560
+ "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__day--adjacent'])
22455
22561
  }, [week]))]), createVNode(MaybeTransition, {
22456
22562
  "name": transition.value
22457
22563
  }, {
22458
- default: () => [createVNode("div", {
22564
+ default: () => [createElementVNode("div", {
22459
22565
  "ref": daysRef,
22460
22566
  "key": daysInMonth.value[0].date?.toString(),
22461
22567
  "class": "v-date-picker-month__days"
22462
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createVNode("div", {
22463
- "class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
22568
+ }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
22569
+ "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22464
22570
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22465
22571
  const slotProps = {
22466
22572
  props: {
@@ -22479,14 +22585,14 @@ const VDatePickerMonth = genericComponent()({
22479
22585
  if (atMax.value && !item.isSelected) {
22480
22586
  item.isDisabled = true;
22481
22587
  }
22482
- return createVNode("div", {
22483
- "class": ['v-date-picker-month__day', {
22588
+ return createElementVNode("div", {
22589
+ "class": normalizeClass(['v-date-picker-month__day', {
22484
22590
  'v-date-picker-month__day--adjacent': item.isAdjacent,
22485
22591
  'v-date-picker-month__day--hide-adjacent': item.isHidden,
22486
22592
  'v-date-picker-month__day--selected': item.isSelected,
22487
22593
  'v-date-picker-month__day--week-end': item.isWeekEnd,
22488
22594
  'v-date-picker-month__day--week-start': item.isWeekStart
22489
- }],
22595
+ }]),
22490
22596
  "data-v-date": !item.isDisabled ? item.isoDate : undefined
22491
22597
  }, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? createVNode(VBtn, slotProps.props, null))]);
22492
22598
  })])]
@@ -22502,7 +22608,8 @@ const makeVDatePickerMonthsProps = propsFactory({
22502
22608
  min: null,
22503
22609
  max: null,
22504
22610
  modelValue: Number,
22505
- year: Number
22611
+ year: Number,
22612
+ allowedMonths: [Array, Function]
22506
22613
  }, 'VDatePickerMonths');
22507
22614
  const VDatePickerMonths = genericComponent()({
22508
22615
  name: 'VDatePickerMonths',
@@ -22524,7 +22631,7 @@ const VDatePickerMonths = genericComponent()({
22524
22631
  }
22525
22632
  return createRange(12).map(i => {
22526
22633
  const text = adapter.format(date, 'monthShort');
22527
- const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
22634
+ const isDisabled = !!(!isMonthAllowed(i) || props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
22528
22635
  date = adapter.getNextMonth(date);
22529
22636
  return {
22530
22637
  isDisabled,
@@ -22536,12 +22643,21 @@ const VDatePickerMonths = genericComponent()({
22536
22643
  watchEffect(() => {
22537
22644
  model.value = model.value ?? adapter.getMonth(adapter.date());
22538
22645
  });
22539
- useRender(() => createVNode("div", {
22646
+ function isMonthAllowed(month) {
22647
+ if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
22648
+ return props.allowedMonths.includes(month);
22649
+ }
22650
+ if (typeof props.allowedMonths === 'function') {
22651
+ return props.allowedMonths(month);
22652
+ }
22653
+ return true;
22654
+ }
22655
+ useRender(() => createElementVNode("div", {
22540
22656
  "class": "v-date-picker-months",
22541
22657
  "style": {
22542
22658
  height: convertToUnit(props.height)
22543
22659
  }
22544
- }, [createVNode("div", {
22660
+ }, [createElementVNode("div", {
22545
22661
  "class": "v-date-picker-months__content"
22546
22662
  }, [months.value.map((month, i) => {
22547
22663
  const btnProps = {
@@ -22581,7 +22697,8 @@ const makeVDatePickerYearsProps = propsFactory({
22581
22697
  height: [String, Number],
22582
22698
  min: null,
22583
22699
  max: null,
22584
- modelValue: Number
22700
+ modelValue: Number,
22701
+ allowedYears: [Array, Function]
22585
22702
  }, 'VDatePickerYears');
22586
22703
  const VDatePickerYears = genericComponent()({
22587
22704
  name: 'VDatePickerYears',
@@ -22613,7 +22730,8 @@ const VDatePickerYears = genericComponent()({
22613
22730
  date = adapter.setYear(date, adapter.getYear(date) + 1);
22614
22731
  return {
22615
22732
  text,
22616
- value: i
22733
+ value: i,
22734
+ isDisabled: !isYearAllowed(i)
22617
22735
  };
22618
22736
  });
22619
22737
  });
@@ -22627,12 +22745,21 @@ const VDatePickerYears = genericComponent()({
22627
22745
  block: 'center'
22628
22746
  });
22629
22747
  });
22630
- useRender(() => createVNode("div", {
22748
+ function isYearAllowed(year) {
22749
+ if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
22750
+ return props.allowedYears.includes(year);
22751
+ }
22752
+ if (typeof props.allowedYears === 'function') {
22753
+ return props.allowedYears(year);
22754
+ }
22755
+ return true;
22756
+ }
22757
+ useRender(() => createElementVNode("div", {
22631
22758
  "class": "v-date-picker-years",
22632
22759
  "style": {
22633
22760
  height: convertToUnit(props.height)
22634
22761
  }
22635
- }, [createVNode("div", {
22762
+ }, [createElementVNode("div", {
22636
22763
  "class": "v-date-picker-years__content"
22637
22764
  }, [years.value.map((year, i) => {
22638
22765
  const btnProps = {
@@ -22641,6 +22768,7 @@ const VDatePickerYears = genericComponent()({
22641
22768
  color: model.value === year.value ? props.color : undefined,
22642
22769
  rounded: true,
22643
22770
  text: year.text,
22771
+ disabled: year.isDisabled,
22644
22772
  variant: model.value === year.value ? 'flat' : 'text',
22645
22773
  onClick: () => {
22646
22774
  if (model.value === year.value) {
@@ -22790,6 +22918,41 @@ const VDatePicker = genericComponent()({
22790
22918
  }
22791
22919
  return targets;
22792
22920
  });
22921
+ function isAllowedInRange(start, end) {
22922
+ const allowedDates = props.allowedDates;
22923
+ if (typeof allowedDates !== 'function') return true;
22924
+ const days = adapter.getDiff(end, start, 'days');
22925
+ for (let i = 0; i < days; i++) {
22926
+ if (allowedDates(adapter.addDays(start, i))) return true;
22927
+ }
22928
+ return false;
22929
+ }
22930
+ function allowedYears(year) {
22931
+ if (typeof props.allowedDates === 'function') {
22932
+ const startOfYear = adapter.parseISO(`${year}-01-01`);
22933
+ return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
22934
+ }
22935
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22936
+ for (const date of props.allowedDates) {
22937
+ if (adapter.getYear(adapter.date(date)) === year) return true;
22938
+ }
22939
+ return false;
22940
+ }
22941
+ return true;
22942
+ }
22943
+ function allowedMonths(month) {
22944
+ if (typeof props.allowedDates === 'function') {
22945
+ const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
22946
+ return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
22947
+ }
22948
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22949
+ for (const date of props.allowedDates) {
22950
+ if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
22951
+ }
22952
+ return false;
22953
+ }
22954
+ return true;
22955
+ }
22793
22956
 
22794
22957
  // function onClickAppend () {
22795
22958
  // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
@@ -22869,7 +23032,7 @@ const VDatePicker = genericComponent()({
22869
23032
  }, rtlClasses.value, props.class],
22870
23033
  "style": props.style
22871
23034
  }), {
22872
- title: () => slots.title?.() ?? createVNode("div", {
23035
+ title: () => slots.title?.() ?? createElementVNode("div", {
22873
23036
  "class": "v-date-picker__title"
22874
23037
  }, [t(props.title)]),
22875
23038
  header: () => slots.header ? createVNode(VDefaultsProvider, {
@@ -22888,7 +23051,7 @@ const VDatePicker = genericComponent()({
22888
23051
  ...slots,
22889
23052
  default: undefined
22890
23053
  }),
22891
- default: () => createVNode(Fragment, null, [createVNode(VDatePickerControls, mergeProps(datePickerControlsProps, {
23054
+ default: () => createElementVNode(Fragment, null, [createVNode(VDatePickerControls, mergeProps(datePickerControlsProps, {
22892
23055
  "disabled": disabled.value,
22893
23056
  "text": text.value,
22894
23057
  "onClick:next": onClickNext,
@@ -22905,14 +23068,16 @@ const VDatePicker = genericComponent()({
22905
23068
  "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
22906
23069
  "min": minDate.value,
22907
23070
  "max": maxDate.value,
22908
- "year": year.value
23071
+ "year": year.value,
23072
+ "allowedMonths": allowedMonths
22909
23073
  }), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
22910
23074
  "key": "date-picker-years"
22911
23075
  }, datePickerYearsProps, {
22912
23076
  "modelValue": year.value,
22913
23077
  "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
22914
23078
  "min": minDate.value,
22915
- "max": maxDate.value
23079
+ "max": maxDate.value,
23080
+ "allowedYears": allowedYears
22916
23081
  }), null) : createVNode(VDatePickerMonth, mergeProps({
22917
23082
  "key": "date-picker-month"
22918
23083
  }, datePickerMonthProps, {
@@ -22997,15 +23162,15 @@ const VEmptyState = genericComponent()({
22997
23162
  const hasText = !!(slots.text || props.text);
22998
23163
  const hasMedia = !!(slots.media || props.image || props.icon);
22999
23164
  const size = props.size || (props.image ? 200 : 96);
23000
- return createVNode("div", {
23001
- "class": ['v-empty-state', {
23165
+ return createElementVNode("div", {
23166
+ "class": normalizeClass(['v-empty-state', {
23002
23167
  [`v-empty-state--${props.justify}`]: true
23003
- }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],
23004
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
23005
- }, [hasMedia && createVNode("div", {
23168
+ }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class]),
23169
+ "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style])
23170
+ }, [hasMedia && createElementVNode("div", {
23006
23171
  "key": "media",
23007
23172
  "class": "v-empty-state__media"
23008
- }, [!slots.media ? createVNode(Fragment, null, [props.image ? createVNode(VImg, {
23173
+ }, [!slots.media ? createElementVNode(Fragment, null, [props.image ? createVNode(VImg, {
23009
23174
  "key": "image",
23010
23175
  "src": props.image,
23011
23176
  "height": size
@@ -23028,22 +23193,22 @@ const VEmptyState = genericComponent()({
23028
23193
  }
23029
23194
  }, {
23030
23195
  default: () => [slots.media()]
23031
- })]), hasHeadline && createVNode("div", {
23196
+ })]), hasHeadline && createElementVNode("div", {
23032
23197
  "key": "headline",
23033
23198
  "class": "v-empty-state__headline"
23034
- }, [slots.headline?.() ?? props.headline]), hasTitle && createVNode("div", {
23199
+ }, [slots.headline?.() ?? props.headline]), hasTitle && createElementVNode("div", {
23035
23200
  "key": "title",
23036
23201
  "class": "v-empty-state__title"
23037
- }, [slots.title?.() ?? props.title]), hasText && createVNode("div", {
23202
+ }, [slots.title?.() ?? props.title]), hasText && createElementVNode("div", {
23038
23203
  "key": "text",
23039
23204
  "class": "v-empty-state__text",
23040
23205
  "style": {
23041
23206
  maxWidth: convertToUnit(props.textWidth)
23042
23207
  }
23043
- }, [slots.text?.() ?? props.text]), slots.default && createVNode("div", {
23208
+ }, [slots.text?.() ?? props.text]), slots.default && createElementVNode("div", {
23044
23209
  "key": "content",
23045
23210
  "class": "v-empty-state__content"
23046
- }, [slots.default()]), hasActions && createVNode("div", {
23211
+ }, [slots.default()]), hasActions && createElementVNode("div", {
23047
23212
  "key": "actions",
23048
23213
  "class": "v-empty-state__actions"
23049
23214
  }, [createVNode(VDefaultsProvider, {
@@ -23094,10 +23259,10 @@ const VExpansionPanelText = genericComponent()({
23094
23259
  useRender(() => createVNode(VExpandTransition, {
23095
23260
  "onAfterLeave": onAfterLeave
23096
23261
  }, {
23097
- default: () => [withDirectives(createVNode("div", {
23098
- "class": ['v-expansion-panel-text', props.class],
23099
- "style": props.style
23100
- }, [slots.default && hasContent.value && createVNode("div", {
23262
+ default: () => [withDirectives(createElementVNode("div", {
23263
+ "class": normalizeClass(['v-expansion-panel-text', props.class]),
23264
+ "style": normalizeStyle(props.style)
23265
+ }, [slots.default && hasContent.value && createElementVNode("div", {
23101
23266
  "class": "v-expansion-panel-text__wrapper"
23102
23267
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
23103
23268
  }));
@@ -23131,7 +23296,7 @@ const makeVExpansionPanelTitleProps = propsFactory({
23131
23296
  const VExpansionPanelTitle = genericComponent()({
23132
23297
  name: 'VExpansionPanelTitle',
23133
23298
  directives: {
23134
- Ripple
23299
+ vRipple: Ripple
23135
23300
  },
23136
23301
  props: makeVExpansionPanelTitleProps(),
23137
23302
  setup(props, _ref) {
@@ -23155,19 +23320,19 @@ const VExpansionPanelTitle = genericComponent()({
23155
23320
  readonly: props.readonly
23156
23321
  }));
23157
23322
  const icon = toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
23158
- useRender(() => withDirectives(createVNode("button", {
23159
- "class": ['v-expansion-panel-title', {
23323
+ useRender(() => withDirectives(createElementVNode("button", {
23324
+ "class": normalizeClass(['v-expansion-panel-title', {
23160
23325
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
23161
23326
  'v-expansion-panel-title--focusable': props.focusable,
23162
23327
  'v-expansion-panel-title--static': props.static
23163
- }, backgroundColorClasses.value, props.class],
23164
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
23328
+ }, backgroundColorClasses.value, props.class]),
23329
+ "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
23165
23330
  "type": "button",
23166
23331
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
23167
23332
  "disabled": expansionPanel.disabled.value,
23168
23333
  "aria-expanded": expansionPanel.isSelected.value,
23169
23334
  "onClick": !props.readonly ? expansionPanel.toggle : undefined
23170
- }, [createVNode("span", {
23335
+ }, [createElementVNode("span", {
23171
23336
  "class": "v-expansion-panel-title__overlay"
23172
23337
  }, null), slots.default?.(slotProps.value), !props.hideActions && createVNode(VDefaultsProvider, {
23173
23338
  "defaults": {
@@ -23176,10 +23341,10 @@ const VExpansionPanelTitle = genericComponent()({
23176
23341
  }
23177
23342
  }
23178
23343
  }, {
23179
- default: () => [createVNode("span", {
23344
+ default: () => [createElementVNode("span", {
23180
23345
  "class": "v-expansion-panel-title__icon"
23181
23346
  }, [slots.actions?.(slotProps.value) ?? createVNode(VIcon, null, null)])]
23182
- })]), [[resolveDirective("ripple"), props.ripple]]));
23347
+ })]), [[Ripple, props.ripple]]));
23183
23348
  return {};
23184
23349
  }
23185
23350
  });
@@ -23236,16 +23401,16 @@ const VExpansionPanel = genericComponent()({
23236
23401
  const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props);
23237
23402
  const expansionPanelTextProps = VExpansionPanelText.filterProps(props);
23238
23403
  return createVNode(props.tag, {
23239
- "class": ['v-expansion-panel', {
23404
+ "class": normalizeClass(['v-expansion-panel', {
23240
23405
  'v-expansion-panel--active': groupItem.isSelected.value,
23241
23406
  'v-expansion-panel--before-active': isBeforeSelected.value,
23242
23407
  'v-expansion-panel--after-active': isAfterSelected.value,
23243
23408
  'v-expansion-panel--disabled': isDisabled.value
23244
- }, roundedClasses.value, backgroundColorClasses.value, props.class],
23245
- "style": [backgroundColorStyles.value, props.style]
23409
+ }, roundedClasses.value, backgroundColorClasses.value, props.class]),
23410
+ "style": normalizeStyle([backgroundColorStyles.value, props.style])
23246
23411
  }, {
23247
- default: () => [createVNode("div", {
23248
- "class": ['v-expansion-panel__shadow', ...elevationClasses.value]
23412
+ default: () => [createElementVNode("div", {
23413
+ "class": normalizeClass(['v-expansion-panel__shadow', ...elevationClasses.value])
23249
23414
  }, null), createVNode(VDefaultsProvider, {
23250
23415
  "defaults": {
23251
23416
  VExpansionPanelTitle: {
@@ -23325,11 +23490,11 @@ const VExpansionPanels = genericComponent()({
23325
23490
  }
23326
23491
  });
23327
23492
  useRender(() => createVNode(props.tag, {
23328
- "class": ['v-expansion-panels', {
23493
+ "class": normalizeClass(['v-expansion-panels', {
23329
23494
  'v-expansion-panels--flat': props.flat,
23330
23495
  'v-expansion-panels--tile': props.tile
23331
- }, themeClasses.value, variantClass.value, props.class],
23332
- "style": props.style
23496
+ }, themeClasses.value, variantClass.value, props.class]),
23497
+ "style": normalizeStyle(props.style)
23333
23498
  }, {
23334
23499
  default: () => [slots.default?.({
23335
23500
  prev,
@@ -23409,22 +23574,22 @@ const VFab = genericComponent()({
23409
23574
  const vFabRef = ref();
23410
23575
  useRender(() => {
23411
23576
  const btnProps = VBtn.filterProps(props);
23412
- return createVNode("div", {
23577
+ return createElementVNode("div", {
23413
23578
  "ref": vFabRef,
23414
- "class": ['v-fab', {
23579
+ "class": normalizeClass(['v-fab', {
23415
23580
  'v-fab--absolute': props.absolute,
23416
23581
  'v-fab--app': !!props.app,
23417
23582
  'v-fab--extended': props.extended,
23418
23583
  'v-fab--offset': props.offset,
23419
23584
  [`v-fab--${position.value}`]: hasPosition.value,
23420
23585
  [`v-fab--${orientation.value}`]: hasPosition.value
23421
- }, props.class],
23422
- "style": [props.app ? {
23586
+ }, props.class]),
23587
+ "style": normalizeStyle([props.app ? {
23423
23588
  ...layoutItemStyles.value
23424
23589
  } : {
23425
23590
  height: props.absolute ? '100%' : 'inherit'
23426
- }, props.style]
23427
- }, [createVNode("div", {
23591
+ }, props.style])
23592
+ }, [createElementVNode("div", {
23428
23593
  "class": "v-fab__container"
23429
23594
  }, [createVNode(MaybeTransition, {
23430
23595
  "appear": props.appear,
@@ -23640,7 +23805,7 @@ const VFileInput = genericComponent()({
23640
23805
  ...slotProps
23641
23806
  }
23642
23807
  } = _ref4;
23643
- return createVNode(Fragment, null, [createVNode("input", mergeProps({
23808
+ return createElementVNode(Fragment, null, [createElementVNode("input", mergeProps({
23644
23809
  "ref": inputRef,
23645
23810
  "type": "file",
23646
23811
  "readonly": isReadonly.value,
@@ -23660,8 +23825,8 @@ const VFileInput = genericComponent()({
23660
23825
  "onDragleave": onDragleave,
23661
23826
  "onFocus": onFocus,
23662
23827
  "onBlur": blur
23663
- }, slotProps, inputAttrs), null), createVNode("div", {
23664
- "class": fieldClass
23828
+ }, slotProps, inputAttrs), null), createElementVNode("div", {
23829
+ "class": normalizeClass(fieldClass)
23665
23830
  }, [!!model.value?.length && !props.hideInput && (slots.selection ? slots.selection({
23666
23831
  fileNames: fileNames.value,
23667
23832
  totalBytes: totalBytes.value,
@@ -23674,7 +23839,7 @@ const VFileInput = genericComponent()({
23674
23839
  }
23675
23840
  });
23676
23841
  },
23677
- details: hasDetails ? slotProps => createVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createVNode(Fragment, null, [createVNode("span", null, null), createVNode(VCounter, {
23842
+ details: hasDetails ? slotProps => createElementVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createElementVNode(Fragment, null, [createElementVNode("span", null, null), createVNode(VCounter, {
23678
23843
  "active": !!model.value?.length,
23679
23844
  "value": counterValue.value,
23680
23845
  "disabled": props.disabled
@@ -23750,10 +23915,10 @@ const VFooter = genericComponent()({
23750
23915
  });
23751
23916
  useRender(() => createVNode(props.tag, {
23752
23917
  "ref": resizeRef,
23753
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
23754
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
23918
+ "class": normalizeClass(['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
23919
+ "style": normalizeStyle([backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
23755
23920
  height: convertToUnit(props.height)
23756
- }, props.style]
23921
+ }, props.style])
23757
23922
  }, slots));
23758
23923
  return {};
23759
23924
  }
@@ -23802,10 +23967,10 @@ const VForm = genericComponent()({
23802
23967
  }
23803
23968
  e.preventDefault();
23804
23969
  }
23805
- useRender(() => createVNode("form", {
23970
+ useRender(() => createElementVNode("form", {
23806
23971
  "ref": formRef,
23807
- "class": ['v-form', props.class],
23808
- "style": props.style,
23972
+ "class": normalizeClass(['v-form', props.class]),
23973
+ "style": normalizeStyle(props.style),
23809
23974
  "novalidate": true,
23810
23975
  "onReset": onReset,
23811
23976
  "onSubmit": onSubmit
@@ -23902,7 +24067,7 @@ const VInfiniteScrollIntersect = defineComponent({
23902
24067
  watch(isIntersecting, async val => {
23903
24068
  emit('intersect', props.side, val);
23904
24069
  });
23905
- useRender(() => createVNode("div", {
24070
+ useRender(() => createElementVNode("div", {
23906
24071
  "class": "v-infinite-scroll-intersect",
23907
24072
  "style": {
23908
24073
  '--v-infinite-margin-size': props.rootMargin
@@ -24018,7 +24183,7 @@ const VInfiniteScroll = genericComponent()({
24018
24183
  }
24019
24184
  };
24020
24185
  if (status === 'error') return slots.error?.(slotProps);
24021
- if (status === 'empty') return slots.empty?.(slotProps) ?? createVNode("div", null, [t(props.emptyText)]);
24186
+ if (status === 'empty') return slots.empty?.(slotProps) ?? createElementVNode("div", null, [t(props.emptyText)]);
24022
24187
  if (props.mode === 'manual') {
24023
24188
  if (status === 'loading') {
24024
24189
  return slots.loading?.(slotProps) ?? createVNode(VProgressCircular, {
@@ -24049,13 +24214,13 @@ const VInfiniteScroll = genericComponent()({
24049
24214
  const intersectMode = props.mode === 'intersect';
24050
24215
  return createVNode(Tag, {
24051
24216
  "ref": rootEl,
24052
- "class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
24217
+ "class": normalizeClass(['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
24053
24218
  'v-infinite-scroll--start': hasStartIntersect,
24054
24219
  'v-infinite-scroll--end': hasEndIntersect
24055
- }],
24056
- "style": dimensionStyles.value
24220
+ }]),
24221
+ "style": normalizeStyle(dimensionStyles.value)
24057
24222
  }, {
24058
- default: () => [createVNode("div", {
24223
+ default: () => [createElementVNode("div", {
24059
24224
  "class": "v-infinite-scroll__side"
24060
24225
  }, [renderSide('start', startStatus.value)]), hasStartIntersect && intersectMode && createVNode(VInfiniteScrollIntersect, {
24061
24226
  "key": "start",
@@ -24067,7 +24232,7 @@ const VInfiniteScroll = genericComponent()({
24067
24232
  "side": "end",
24068
24233
  "onIntersect": handleIntersect,
24069
24234
  "rootMargin": margin.value
24070
- }, null), createVNode("div", {
24235
+ }, null), createElementVNode("div", {
24071
24236
  "class": "v-infinite-scroll__side"
24072
24237
  }, [renderSide('end', endStatus.value)])]
24073
24238
  });
@@ -24107,8 +24272,8 @@ const VItemGroup = genericComponent()({
24107
24272
  selected
24108
24273
  } = useGroup(props, VItemGroupSymbol);
24109
24274
  return () => createVNode(props.tag, {
24110
- "class": ['v-item-group', themeClasses.value, props.class],
24111
- "style": props.style
24275
+ "class": normalizeClass(['v-item-group', themeClasses.value, props.class]),
24276
+ "style": normalizeStyle(props.style)
24112
24277
  }, {
24113
24278
  default: () => [slots.default?.({
24114
24279
  isSelected,
@@ -24176,10 +24341,10 @@ const VLayout = genericComponent()({
24176
24341
  const {
24177
24342
  dimensionStyles
24178
24343
  } = useDimension(props);
24179
- useRender(() => createVNode("div", {
24344
+ useRender(() => createElementVNode("div", {
24180
24345
  "ref": layoutRef,
24181
- "class": [layoutClasses.value, props.class],
24182
- "style": [dimensionStyles.value, layoutStyles.value, props.style]
24346
+ "class": normalizeClass([layoutClasses.value, props.class]),
24347
+ "style": normalizeStyle([dimensionStyles.value, layoutStyles.value, props.style])
24183
24348
  }, [slots.default?.()]));
24184
24349
  return {
24185
24350
  getLayoutItem,
@@ -24221,9 +24386,9 @@ const VLayoutItem = genericComponent()({
24221
24386
  active: toRef(() => props.modelValue),
24222
24387
  absolute: toRef(() => props.absolute)
24223
24388
  });
24224
- return () => createVNode("div", {
24225
- "class": ['v-layout-item', props.class],
24226
- "style": [layoutItemStyles.value, props.style]
24389
+ return () => createElementVNode("div", {
24390
+ "class": normalizeClass(['v-layout-item', props.class]),
24391
+ "style": normalizeStyle([layoutItemStyles.value, props.style])
24227
24392
  }, [slots.default?.()]);
24228
24393
  }
24229
24394
  });
@@ -24252,7 +24417,7 @@ const makeVLazyProps = propsFactory({
24252
24417
  const VLazy = genericComponent()({
24253
24418
  name: 'VLazy',
24254
24419
  directives: {
24255
- intersect: Intersect
24420
+ vIntersect: Intersect
24256
24421
  },
24257
24422
  props: makeVLazyProps(),
24258
24423
  emits: {
@@ -24271,8 +24436,8 @@ const VLazy = genericComponent()({
24271
24436
  isActive.value = isIntersecting;
24272
24437
  }
24273
24438
  useRender(() => withDirectives(createVNode(props.tag, {
24274
- "class": ['v-lazy', props.class],
24275
- "style": [dimensionStyles.value, props.style]
24439
+ "class": normalizeClass(['v-lazy', props.class]),
24440
+ "style": normalizeStyle([dimensionStyles.value, props.style])
24276
24441
  }, {
24277
24442
  default: () => [isActive.value && createVNode(MaybeTransition, {
24278
24443
  "transition": props.transition,
@@ -24280,7 +24445,7 @@ const VLazy = genericComponent()({
24280
24445
  }, {
24281
24446
  default: () => [slots.default?.()]
24282
24447
  })]
24283
- }), [[resolveDirective("intersect"), {
24448
+ }), [[Intersect, {
24284
24449
  handler: onIntersect,
24285
24450
  options: props.options
24286
24451
  }, null]]));
@@ -24308,9 +24473,9 @@ const VLocaleProvider = genericComponent()({
24308
24473
  const {
24309
24474
  rtlClasses
24310
24475
  } = provideLocale(props);
24311
- useRender(() => createVNode("div", {
24312
- "class": ['v-locale-provider', rtlClasses.value, props.class],
24313
- "style": props.style
24476
+ useRender(() => createElementVNode("div", {
24477
+ "class": normalizeClass(['v-locale-provider', rtlClasses.value, props.class]),
24478
+ "style": normalizeStyle(props.style)
24314
24479
  }, [slots.default?.()]));
24315
24480
  return {};
24316
24481
  }
@@ -24341,12 +24506,12 @@ const VMain = genericComponent()({
24341
24506
  ssrBootStyles
24342
24507
  } = useSsrBoot();
24343
24508
  useRender(() => createVNode(props.tag, {
24344
- "class": ['v-main', {
24509
+ "class": normalizeClass(['v-main', {
24345
24510
  'v-main--scrollable': props.scrollable
24346
- }, props.class],
24347
- "style": [mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style]
24511
+ }, props.class]),
24512
+ "style": normalizeStyle([mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style])
24348
24513
  }, {
24349
- default: () => [props.scrollable ? createVNode("div", {
24514
+ default: () => [props.scrollable ? createElementVNode("div", {
24350
24515
  "class": "v-main__scroller"
24351
24516
  }, [slots.default?.()]) : slots.default?.()]
24352
24517
  }));
@@ -24577,7 +24742,7 @@ function useTouch(_ref) {
24577
24742
  function getProgress(pos) {
24578
24743
  let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
24579
24744
  const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();
24580
- return limit ? Math.max(0, Math.min(1, progress)) : progress;
24745
+ return limit ? clamp(progress) : progress;
24581
24746
  }
24582
24747
  function onTouchstart(e) {
24583
24748
  if (touchless.value) return;
@@ -24857,7 +25022,7 @@ const VNavigationDrawer = genericComponent()({
24857
25022
  });
24858
25023
  useRender(() => {
24859
25024
  const hasImage = slots.image || props.image;
24860
- return createVNode(Fragment, null, [createVNode(props.tag, mergeProps({
25025
+ return createElementVNode(Fragment, null, [createVNode(props.tag, mergeProps({
24861
25026
  "ref": rootEl,
24862
25027
  "onMouseenter": runOpenDelay,
24863
25028
  "onMouseleave": runCloseDelay,
@@ -24873,7 +25038,7 @@ const VNavigationDrawer = genericComponent()({
24873
25038
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
24874
25039
  "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
24875
25040
  }, scopeId, attrs), {
24876
- default: () => [hasImage && createVNode("div", {
25041
+ default: () => [hasImage && createElementVNode("div", {
24877
25042
  "key": "image",
24878
25043
  "class": "v-navigation-drawer__img"
24879
25044
  }, [!slots.image ? createVNode(VImg, {
@@ -24893,17 +25058,17 @@ const VNavigationDrawer = genericComponent()({
24893
25058
  src: props.image
24894
25059
  }
24895
25060
  }
24896
- }, slots.image)]), slots.prepend && createVNode("div", {
25061
+ }, slots.image)]), slots.prepend && createElementVNode("div", {
24897
25062
  "class": "v-navigation-drawer__prepend"
24898
- }, [slots.prepend?.()]), createVNode("div", {
25063
+ }, [slots.prepend?.()]), createElementVNode("div", {
24899
25064
  "class": "v-navigation-drawer__content"
24900
- }, [slots.default?.()]), slots.append && createVNode("div", {
25065
+ }, [slots.default?.()]), slots.append && createElementVNode("div", {
24901
25066
  "class": "v-navigation-drawer__append"
24902
25067
  }, [slots.append?.()])]
24903
25068
  }), createVNode(Transition, {
24904
25069
  "name": "fade-transition"
24905
25070
  }, {
24906
- default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && createVNode("div", mergeProps({
25071
+ default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && createElementVNode("div", mergeProps({
24907
25072
  "class": ['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value],
24908
25073
  "style": [scrimStyles.value, scrimColor.backgroundColorStyles.value],
24909
25074
  "onClick": () => {
@@ -25064,14 +25229,16 @@ const VNumberInput = genericComponent()({
25064
25229
  props: {
25065
25230
  onClick: onControlClick,
25066
25231
  onPointerup: onControlMouseup,
25067
- onPointerdown: onUpControlMousedown
25232
+ onPointerdown: onUpControlMousedown,
25233
+ onPointercancel: onControlPointerCancel
25068
25234
  }
25069
25235
  };
25070
25236
  const decrementSlotProps = {
25071
25237
  props: {
25072
25238
  onClick: onControlClick,
25073
25239
  onPointerup: onControlMouseup,
25074
- onPointerdown: onDownControlMousedown
25240
+ onPointerdown: onDownControlMousedown,
25241
+ onPointercancel: onControlPointerCancel
25075
25242
  }
25076
25243
  };
25077
25244
  watch(() => props.precision, () => formatInputValue());
@@ -25101,25 +25268,33 @@ const VNumberInput = genericComponent()({
25101
25268
  }
25102
25269
  function onBeforeinput(e) {
25103
25270
  if (!e.data) return;
25104
- const existingTxt = e.target?.value;
25105
- const selectionStart = e.target?.selectionStart;
25106
- const selectionEnd = e.target?.selectionEnd;
25271
+ const inputElement = e.target;
25272
+ const {
25273
+ value: existingTxt,
25274
+ selectionStart,
25275
+ selectionEnd
25276
+ } = inputElement ?? {};
25107
25277
  const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
25278
+ const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
25279
+
25108
25280
  // Only numbers, "-", "." are allowed
25109
25281
  // AND "-", "." are allowed only once
25110
25282
  // AND "-" is only allowed at the start
25111
25283
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
25112
25284
  e.preventDefault();
25285
+ inputElement.value = potentialNewNumber;
25113
25286
  }
25114
25287
  if (props.precision == null) return;
25115
25288
 
25116
25289
  // Ignore decimal digits above precision limit
25117
25290
  if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
25118
25291
  e.preventDefault();
25292
+ inputElement.value = potentialNewNumber;
25119
25293
  }
25120
25294
  // Ignore decimal separator when precision = 0
25121
25295
  if (props.precision === 0 && potentialNewInputVal.includes('.')) {
25122
25296
  e.preventDefault();
25297
+ inputElement.value = potentialNewNumber;
25123
25298
  }
25124
25299
  }
25125
25300
  async function onKeydown(e) {
@@ -25160,6 +25335,11 @@ const VNumberInput = genericComponent()({
25160
25335
  e.stopPropagation();
25161
25336
  holdStart('down');
25162
25337
  }
25338
+ function onControlPointerCancel(e) {
25339
+ const el = e.currentTarget;
25340
+ el?.releasePointerCapture(e.pointerId);
25341
+ holdStop();
25342
+ }
25163
25343
  function clampModel() {
25164
25344
  if (controlsDisabled.value) return;
25165
25345
  if (!vTextFieldRef.value) return;
@@ -25201,16 +25381,17 @@ const VNumberInput = genericComponent()({
25201
25381
  } = VTextField.filterProps(props);
25202
25382
  function incrementControlNode() {
25203
25383
  return !slots.increment ? createVNode(VBtn, {
25384
+ "aria-hidden": "true",
25385
+ "data-testid": "increment",
25204
25386
  "disabled": !canIncrease.value,
25205
25387
  "flat": true,
25206
- "key": "increment-btn",
25207
25388
  "height": controlNodeDefaultHeight.value,
25208
- "data-testid": "increment",
25209
- "aria-hidden": "true",
25210
25389
  "icon": incrementIcon.value,
25390
+ "key": "increment-btn",
25211
25391
  "onClick": onControlClick,
25212
- "onPointerup": onControlMouseup,
25213
25392
  "onPointerdown": onUpControlMousedown,
25393
+ "onPointerup": onControlMouseup,
25394
+ "onPointercancel": onControlPointerCancel,
25214
25395
  "size": controlNodeSize.value,
25215
25396
  "tabindex": "-1"
25216
25397
  }, null) : createVNode(VDefaultsProvider, {
@@ -25230,18 +25411,19 @@ const VNumberInput = genericComponent()({
25230
25411
  }
25231
25412
  function decrementControlNode() {
25232
25413
  return !slots.decrement ? createVNode(VBtn, {
25414
+ "aria-hidden": "true",
25415
+ "data-testid": "decrement",
25233
25416
  "disabled": !canDecrease.value,
25234
25417
  "flat": true,
25235
- "key": "decrement-btn",
25236
25418
  "height": controlNodeDefaultHeight.value,
25237
- "data-testid": "decrement",
25238
- "aria-hidden": "true",
25239
25419
  "icon": decrementIcon.value,
25240
- "size": controlNodeSize.value,
25241
- "tabindex": "-1",
25420
+ "key": "decrement-btn",
25242
25421
  "onClick": onControlClick,
25422
+ "onPointerdown": onDownControlMousedown,
25243
25423
  "onPointerup": onControlMouseup,
25244
- "onPointerdown": onDownControlMousedown
25424
+ "onPointercancel": onControlPointerCancel,
25425
+ "size": controlNodeSize.value,
25426
+ "tabindex": "-1"
25245
25427
  }, null) : createVNode(VDefaultsProvider, {
25246
25428
  "key": "decrement-defaults",
25247
25429
  "defaults": {
@@ -25258,7 +25440,7 @@ const VNumberInput = genericComponent()({
25258
25440
  });
25259
25441
  }
25260
25442
  function controlNode() {
25261
- return createVNode("div", {
25443
+ return createElementVNode("div", {
25262
25444
  "class": "v-number-input__control"
25263
25445
  }, [decrementControlNode(), createVNode(VDivider, {
25264
25446
  "vertical": controlVariant.value !== 'stacked'
@@ -25269,17 +25451,17 @@ const VNumberInput = genericComponent()({
25269
25451
  "vertical": true
25270
25452
  }, null) : undefined;
25271
25453
  }
25272
- const appendInnerControl = controlVariant.value === 'split' ? createVNode("div", {
25454
+ const appendInnerControl = controlVariant.value === 'split' ? createElementVNode("div", {
25273
25455
  "class": "v-number-input__control"
25274
25456
  }, [createVNode(VDivider, {
25275
25457
  "vertical": true
25276
- }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
25458
+ }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : createElementVNode(Fragment, null, [dividerNode(), controlNode()]);
25277
25459
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
25278
- const prependInnerControl = controlVariant.value === 'split' ? createVNode("div", {
25460
+ const prependInnerControl = controlVariant.value === 'split' ? createElementVNode("div", {
25279
25461
  "class": "v-number-input__control"
25280
25462
  }, [decrementControlNode(), createVNode(VDivider, {
25281
25463
  "vertical": true
25282
- }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
25464
+ }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createElementVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
25283
25465
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
25284
25466
  return createVNode(VTextField, mergeProps({
25285
25467
  "ref": vTextFieldRef,
@@ -25307,13 +25489,13 @@ const VNumberInput = genericComponent()({
25307
25489
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
25308
25490
  args[_key] = arguments[_key];
25309
25491
  }
25310
- return createVNode(Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
25492
+ return createElementVNode(Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
25311
25493
  } : undefined,
25312
25494
  'prepend-inner': hasPrependInner ? function () {
25313
25495
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
25314
25496
  args[_key2] = arguments[_key2];
25315
25497
  }
25316
- return createVNode(Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
25498
+ return createElementVNode(Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
25317
25499
  } : undefined
25318
25500
  });
25319
25501
  });
@@ -25477,16 +25659,16 @@ const VOtpInput = genericComponent()({
25477
25659
  });
25478
25660
  useRender(() => {
25479
25661
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
25480
- return createVNode("div", mergeProps({
25662
+ return createElementVNode("div", mergeProps({
25481
25663
  "class": ['v-otp-input', {
25482
25664
  'v-otp-input--divided': !!props.divider
25483
25665
  }, props.class],
25484
25666
  "style": [props.style]
25485
- }, rootAttrs), [createVNode("div", {
25667
+ }, rootAttrs), [createElementVNode("div", {
25486
25668
  "ref": contentRef,
25487
25669
  "class": "v-otp-input__content",
25488
- "style": [dimensionStyles.value]
25489
- }, [fields.value.map((_, i) => createVNode(Fragment, null, [props.divider && i !== 0 && createVNode("span", {
25670
+ "style": normalizeStyle([dimensionStyles.value])
25671
+ }, [fields.value.map((_, i) => createElementVNode(Fragment, null, [props.divider && i !== 0 && createElementVNode("span", {
25490
25672
  "class": "v-otp-input__divider"
25491
25673
  }, [props.divider]), createVNode(VField, {
25492
25674
  "focused": isFocused.value && props.focusAll || focusIndex.value === i,
@@ -25495,12 +25677,12 @@ const VOtpInput = genericComponent()({
25495
25677
  ...slots,
25496
25678
  loader: undefined,
25497
25679
  default: () => {
25498
- return createVNode("input", {
25680
+ return createElementVNode("input", {
25499
25681
  "ref": val => inputRef.value[i] = val,
25500
25682
  "aria-label": t(props.label, i + 1),
25501
25683
  "autofocus": i === 0 && props.autofocus,
25502
25684
  "autocomplete": "one-time-code",
25503
- "class": ['v-otp-input__field'],
25685
+ "class": normalizeClass(['v-otp-input__field']),
25504
25686
  "disabled": props.disabled,
25505
25687
  "inputmode": props.type === 'number' ? 'numeric' : 'text',
25506
25688
  "min": props.type === 'number' ? 0 : undefined,
@@ -25515,7 +25697,7 @@ const VOtpInput = genericComponent()({
25515
25697
  "onPaste": event => onPaste(i, event)
25516
25698
  }, null);
25517
25699
  }
25518
- })])), createVNode("input", mergeProps({
25700
+ })])), createElementVNode("input", mergeProps({
25519
25701
  "class": "v-otp-input-input",
25520
25702
  "type": "hidden"
25521
25703
  }, inputAttrs, {
@@ -25620,10 +25802,10 @@ const VParallax = genericComponent()({
25620
25802
  });
25621
25803
  }
25622
25804
  useRender(() => createVNode(VImg, {
25623
- "class": ['v-parallax', {
25805
+ "class": normalizeClass(['v-parallax', {
25624
25806
  'v-parallax--active': isIntersecting.value
25625
- }, props.class],
25626
- "style": props.style,
25807
+ }, props.class]),
25808
+ "style": normalizeStyle(props.style),
25627
25809
  "ref": root,
25628
25810
  "cover": true,
25629
25811
  "onLoadstart": onScroll,
@@ -25723,7 +25905,7 @@ const VRadioGroup = genericComponent()({
25723
25905
  isDisabled,
25724
25906
  isReadonly
25725
25907
  } = _ref2;
25726
- return createVNode(Fragment, null, [label && createVNode(VLabel, {
25908
+ return createElementVNode(Fragment, null, [label && createVNode(VLabel, {
25727
25909
  "id": id.value
25728
25910
  }, {
25729
25911
  default: () => [label]
@@ -25861,7 +26043,7 @@ const VRangeSlider = genericComponent()({
25861
26043
  "focused": isFocused.value
25862
26044
  }), {
25863
26045
  ...slots,
25864
- prepend: hasPrepend ? slotProps => createVNode(Fragment, null, [slots.label?.(slotProps) ?? (props.label ? createVNode(VLabel, {
26046
+ prepend: hasPrepend ? slotProps => createElementVNode(Fragment, null, [slots.label?.(slotProps) ?? (props.label ? createVNode(VLabel, {
25865
26047
  "class": "v-slider__label",
25866
26048
  "text": props.label
25867
26049
  }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,
@@ -25870,18 +26052,18 @@ const VRangeSlider = genericComponent()({
25870
26052
  id,
25871
26053
  messagesId
25872
26054
  } = _ref4;
25873
- return createVNode("div", {
26055
+ return createElementVNode("div", {
25874
26056
  "class": "v-slider__container",
25875
26057
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
25876
26058
  "onTouchstartPassive": !readonly.value ? onSliderTouchstart : undefined
25877
- }, [createVNode("input", {
26059
+ }, [createElementVNode("input", {
25878
26060
  "id": `${id.value}_start`,
25879
26061
  "name": props.name || id.value,
25880
26062
  "disabled": !!props.disabled,
25881
26063
  "readonly": !!props.readonly,
25882
26064
  "tabindex": "-1",
25883
26065
  "value": model.value[0]
25884
- }, null), createVNode("input", {
26066
+ }, null), createElementVNode("input", {
25885
26067
  "id": `${id.value}_stop`,
25886
26068
  "name": props.name || id.value,
25887
26069
  "disabled": !!props.disabled,
@@ -26080,16 +26262,16 @@ const VRating = genericComponent()({
26080
26262
  size: props.size,
26081
26263
  variant: 'plain'
26082
26264
  };
26083
- return createVNode(Fragment, null, [createVNode("label", {
26265
+ return createElementVNode(Fragment, null, [createElementVNode("label", {
26084
26266
  "for": id,
26085
- "class": {
26267
+ "class": normalizeClass({
26086
26268
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
26087
26269
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
26088
- },
26270
+ }),
26089
26271
  "onMouseenter": onMouseenter,
26090
26272
  "onMouseleave": onMouseleave,
26091
26273
  "onClick": onClick
26092
- }, [createVNode("span", {
26274
+ }, [createElementVNode("span", {
26093
26275
  "class": "v-rating__hidden"
26094
26276
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
26095
26277
  ...itemState.value[index],
@@ -26099,7 +26281,7 @@ const VRating = genericComponent()({
26099
26281
  rating: normalizedValue.value
26100
26282
  }) : createVNode(VBtn, mergeProps({
26101
26283
  "aria-label": t(props.itemAriaLabel, value, props.length)
26102
- }, btnProps), null)]), createVNode("input", {
26284
+ }, btnProps), null)]), createElementVNode("input", {
26103
26285
  "class": "v-rating__hidden",
26104
26286
  "name": name.value,
26105
26287
  "id": id,
@@ -26113,31 +26295,31 @@ const VRating = genericComponent()({
26113
26295
  }
26114
26296
  function createLabel(labelProps) {
26115
26297
  if (slots['item-label']) return slots['item-label'](labelProps);
26116
- if (labelProps.label) return createVNode("span", null, [labelProps.label]);
26117
- return createVNode("span", null, [createTextVNode("\xA0")]);
26298
+ if (labelProps.label) return createElementVNode("span", null, [labelProps.label]);
26299
+ return createElementVNode("span", null, [createTextVNode("\xA0")]);
26118
26300
  }
26119
26301
  useRender(() => {
26120
26302
  const hasLabels = !!props.itemLabels?.length || slots['item-label'];
26121
26303
  return createVNode(props.tag, {
26122
- "class": ['v-rating', {
26304
+ "class": normalizeClass(['v-rating', {
26123
26305
  'v-rating--hover': props.hover,
26124
26306
  'v-rating--readonly': props.readonly
26125
- }, themeClasses.value, props.class],
26126
- "style": props.style
26307
+ }, themeClasses.value, props.class]),
26308
+ "style": normalizeStyle(props.style)
26127
26309
  }, {
26128
26310
  default: () => [createVNode(VRatingItem, {
26129
26311
  "value": 0,
26130
26312
  "index": -1,
26131
26313
  "showStar": false
26132
- }, null), range.value.map((value, i) => createVNode("div", {
26314
+ }, null), range.value.map((value, i) => createElementVNode("div", {
26133
26315
  "class": "v-rating__wrapper"
26134
26316
  }, [hasLabels && props.itemLabelPosition === 'top' ? createLabel({
26135
26317
  value,
26136
26318
  index: i,
26137
26319
  label: props.itemLabels?.[i]
26138
- }) : undefined, createVNode("div", {
26320
+ }) : undefined, createElementVNode("div", {
26139
26321
  "class": "v-rating__item"
26140
- }, [props.halfIncrements ? createVNode(Fragment, null, [createVNode(VRatingItem, {
26322
+ }, [props.halfIncrements ? createElementVNode(Fragment, null, [createVNode(VRatingItem, {
26141
26323
  "value": value - 0.5,
26142
26324
  "index": i * 2
26143
26325
  }, null), createVNode(VRatingItem, {
@@ -26194,8 +26376,8 @@ const rootTypes = {
26194
26376
  };
26195
26377
  function genBone(type) {
26196
26378
  let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
26197
- return createVNode("div", {
26198
- "class": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]
26379
+ return createElementVNode("div", {
26380
+ "class": normalizeClass(['v-skeleton-loader__bone', `v-skeleton-loader__${type}`])
26199
26381
  }, [children]);
26200
26382
  }
26201
26383
  function genBones(bone) {
@@ -26281,7 +26463,7 @@ const VSkeletonLoader = genericComponent()({
26281
26463
  ariaLabel: t(props.loadingText),
26282
26464
  role: 'alert'
26283
26465
  };
26284
- return createVNode("div", mergeProps({
26466
+ return createElementVNode("div", mergeProps({
26285
26467
  "class": ['v-skeleton-loader', {
26286
26468
  'v-skeleton-loader--boilerplate': props.boilerplate
26287
26469
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
@@ -26487,7 +26669,7 @@ const VSnackbar = genericComponent()({
26487
26669
  "onTouchend": onTouchend,
26488
26670
  "onAfterLeave": onAfterLeave
26489
26671
  }, scopeId), {
26490
- default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && createVNode("div", {
26672
+ default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && createElementVNode("div", {
26491
26673
  "key": "timer",
26492
26674
  "class": "v-snackbar__timer"
26493
26675
  }, [createVNode(VProgressLinear, {
@@ -26495,7 +26677,7 @@ const VSnackbar = genericComponent()({
26495
26677
  "color": typeof props.timer === 'string' ? props.timer : 'info',
26496
26678
  "max": props.timeout,
26497
26679
  "model-value": countdown.time.value
26498
- }, null)]), hasContent && createVNode("div", {
26680
+ }, null)]), hasContent && createElementVNode("div", {
26499
26681
  "key": "content",
26500
26682
  "class": "v-snackbar__content",
26501
26683
  "role": "status",
@@ -26509,7 +26691,7 @@ const VSnackbar = genericComponent()({
26509
26691
  }
26510
26692
  }
26511
26693
  }, {
26512
- default: () => [createVNode("div", {
26694
+ default: () => [createElementVNode("div", {
26513
26695
  "class": "v-snackbar__actions"
26514
26696
  }, [slots.actions({
26515
26697
  isActive
@@ -26593,7 +26775,7 @@ const VSnackbarQueue = genericComponent()({
26593
26775
  modelValue: _,
26594
26776
  ...snackbarProps
26595
26777
  } = VSnackbar.filterProps(props);
26596
- return createVNode(Fragment, null, [isVisible.value && !!current.value && (slots.default ? createVNode(VDefaultsProvider, {
26778
+ return createElementVNode(Fragment, null, [isVisible.value && !!current.value && (slots.default ? createVNode(VDefaultsProvider, {
26597
26779
  "defaults": {
26598
26780
  VSnackbar: current.value
26599
26781
  }
@@ -26609,7 +26791,7 @@ const VSnackbarQueue = genericComponent()({
26609
26791
  text: slots.text ? () => slots.text?.({
26610
26792
  item: current.value
26611
26793
  }) : undefined,
26612
- actions: hasActions ? () => createVNode(Fragment, null, [!slots.actions ? createVNode(VBtn, mergeProps(btnProps.value, {
26794
+ actions: hasActions ? () => createElementVNode(Fragment, null, [!slots.actions ? createVNode(VBtn, mergeProps(btnProps.value, {
26613
26795
  "onClick": onClickClose
26614
26796
  }), null) : createVNode(VDefaultsProvider, {
26615
26797
  "defaults": {
@@ -26767,57 +26949,57 @@ const VBarline = genericComponent()({
26767
26949
  const smooth = computed(() => typeof props.smooth === 'boolean' ? props.smooth ? 2 : 0 : Number(props.smooth));
26768
26950
  useRender(() => {
26769
26951
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
26770
- return createVNode("svg", {
26952
+ return createElementVNode("svg", {
26771
26953
  "display": "block"
26772
- }, [createVNode("defs", null, [createVNode("linearGradient", {
26954
+ }, [createElementVNode("defs", null, [createElementVNode("linearGradient", {
26773
26955
  "id": id.value,
26774
26956
  "gradientUnits": "userSpaceOnUse",
26775
26957
  "x1": props.gradientDirection === 'left' ? '100%' : '0',
26776
26958
  "y1": props.gradientDirection === 'top' ? '100%' : '0',
26777
26959
  "x2": props.gradientDirection === 'right' ? '100%' : '0',
26778
26960
  "y2": props.gradientDirection === 'bottom' ? '100%' : '0'
26779
- }, [gradientData.map((color, index) => createVNode("stop", {
26961
+ }, [gradientData.map((color, index) => createElementVNode("stop", {
26780
26962
  "offset": index / Math.max(gradientData.length - 1, 1),
26781
26963
  "stop-color": color || 'currentColor'
26782
- }, null))])]), createVNode("clipPath", {
26964
+ }, null))])]), createElementVNode("clipPath", {
26783
26965
  "id": `${id.value}-clip`
26784
- }, [bars.value.map(item => createVNode("rect", {
26966
+ }, [bars.value.map(item => createElementVNode("rect", {
26785
26967
  "x": item.x + offsetX.value,
26786
26968
  "y": item.y,
26787
26969
  "width": lineWidth.value,
26788
26970
  "height": item.height,
26789
26971
  "rx": smooth.value,
26790
26972
  "ry": smooth.value
26791
- }, [props.autoDraw && createVNode(Fragment, null, [createVNode("animate", {
26973
+ }, [props.autoDraw && createElementVNode(Fragment, null, [createElementVNode("animate", {
26792
26974
  "attributeName": "y",
26793
26975
  "from": item.y + item.height,
26794
26976
  "to": item.y,
26795
26977
  "dur": `${autoDrawDuration.value}ms`,
26796
26978
  "fill": "freeze"
26797
- }, null), createVNode("animate", {
26979
+ }, null), createElementVNode("animate", {
26798
26980
  "attributeName": "height",
26799
26981
  "from": "0",
26800
26982
  "to": item.height,
26801
26983
  "dur": `${autoDrawDuration.value}ms`,
26802
26984
  "fill": "freeze"
26803
- }, null)])]))]), hasLabels.value && createVNode("g", {
26985
+ }, null)])]))]), hasLabels.value && createElementVNode("g", {
26804
26986
  "key": "labels",
26805
26987
  "style": {
26806
26988
  textAnchor: 'middle',
26807
26989
  dominantBaseline: 'mathematical',
26808
26990
  fill: 'currentColor'
26809
26991
  }
26810
- }, [parsedLabels.value.map((item, i) => createVNode("text", {
26992
+ }, [parsedLabels.value.map((item, i) => createElementVNode("text", {
26811
26993
  "x": item.x + offsetX.value + lineWidth.value / 2,
26812
26994
  "y": parseInt(props.height, 10) - 2 + (parseInt(props.labelSize, 10) || 7 * 0.75),
26813
26995
  "font-size": Number(props.labelSize) || 7
26814
26996
  }, [slots.label?.({
26815
26997
  index: i,
26816
26998
  value: item.value
26817
- }) ?? item.value]))]), createVNode("g", {
26999
+ }) ?? item.value]))]), createElementVNode("g", {
26818
27000
  "clip-path": `url(#${id.value}-clip)`,
26819
27001
  "fill": `url(#${id.value})`
26820
- }, [createVNode("rect", {
27002
+ }, [createElementVNode("rect", {
26821
27003
  "x": 0,
26822
27004
  "y": 0,
26823
27005
  "width": Math.max(props.modelValue.length * lineWidth.value, Number(props.width)),
@@ -26996,39 +27178,39 @@ const VTrendline = genericComponent()({
26996
27178
  }
26997
27179
  useRender(() => {
26998
27180
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
26999
- return createVNode("svg", {
27181
+ return createElementVNode("svg", {
27000
27182
  "display": "block",
27001
27183
  "stroke-width": parseFloat(props.lineWidth) ?? 4
27002
- }, [createVNode("defs", null, [createVNode("linearGradient", {
27184
+ }, [createElementVNode("defs", null, [createElementVNode("linearGradient", {
27003
27185
  "id": id.value,
27004
27186
  "gradientUnits": "userSpaceOnUse",
27005
27187
  "x1": props.gradientDirection === 'left' ? '100%' : '0',
27006
27188
  "y1": props.gradientDirection === 'top' ? '100%' : '0',
27007
27189
  "x2": props.gradientDirection === 'right' ? '100%' : '0',
27008
27190
  "y2": props.gradientDirection === 'bottom' ? '100%' : '0'
27009
- }, [gradientData.map((color, index) => createVNode("stop", {
27191
+ }, [gradientData.map((color, index) => createElementVNode("stop", {
27010
27192
  "offset": index / Math.max(gradientData.length - 1, 1),
27011
27193
  "stop-color": color || 'currentColor'
27012
- }, null))])]), hasLabels.value && createVNode("g", {
27194
+ }, null))])]), hasLabels.value && createElementVNode("g", {
27013
27195
  "key": "labels",
27014
27196
  "style": {
27015
27197
  textAnchor: 'middle',
27016
27198
  dominantBaseline: 'mathematical',
27017
27199
  fill: 'currentColor'
27018
27200
  }
27019
- }, [parsedLabels.value.map((item, i) => createVNode("text", {
27201
+ }, [parsedLabels.value.map((item, i) => createElementVNode("text", {
27020
27202
  "x": item.x + lineWidth.value / 2 + lineWidth.value / 2,
27021
27203
  "y": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),
27022
27204
  "font-size": Number(props.labelSize) || 7
27023
27205
  }, [slots.label?.({
27024
27206
  index: i,
27025
27207
  value: item.value
27026
- }) ?? item.value]))]), createVNode("path", {
27208
+ }) ?? item.value]))]), createElementVNode("path", {
27027
27209
  "ref": path,
27028
27210
  "d": genPath$1(props.fill),
27029
27211
  "fill": props.fill ? `url(#${id.value})` : 'none',
27030
27212
  "stroke": props.fill ? 'none' : `url(#${id.value})`
27031
- }, null), props.fill && createVNode("path", {
27213
+ }, null), props.fill && createElementVNode("path", {
27032
27214
  "d": genPath$1(false),
27033
27215
  "fill": "none",
27034
27216
  "stroke": props.color ?? props.gradient?.[0]
@@ -27196,7 +27378,7 @@ const VStepperActions = genericComponent()({
27196
27378
  const nextSlotProps = {
27197
27379
  onClick: onClickNext
27198
27380
  };
27199
- return createVNode("div", {
27381
+ return createElementVNode("div", {
27200
27382
  "class": "v-stepper-actions"
27201
27383
  }, [createVNode(VDefaultsProvider, {
27202
27384
  "defaults": {
@@ -27270,7 +27452,7 @@ const makeVStepperItemProps = propsFactory({
27270
27452
  const VStepperItem = genericComponent()({
27271
27453
  name: 'VStepperItem',
27272
27454
  directives: {
27273
- Ripple
27455
+ vRipple: Ripple
27274
27456
  },
27275
27457
  props: makeVStepperItemProps(),
27276
27458
  emits: {
@@ -27309,12 +27491,12 @@ const VStepperItem = genericComponent()({
27309
27491
  function onClick() {
27310
27492
  group?.toggle();
27311
27493
  }
27312
- return withDirectives(createVNode("button", {
27313
- "class": ['v-stepper-item', {
27494
+ return withDirectives(createElementVNode("button", {
27495
+ "class": normalizeClass(['v-stepper-item', {
27314
27496
  'v-stepper-item--complete': hasCompleted.value,
27315
27497
  'v-stepper-item--disabled': props.disabled,
27316
27498
  'v-stepper-item--error': hasError.value
27317
- }, group?.selectedClass.value],
27499
+ }, group?.selectedClass.value]),
27318
27500
  "disabled": !props.editable,
27319
27501
  "type": "button",
27320
27502
  "onClick": onClick
@@ -27327,15 +27509,15 @@ const VStepperItem = genericComponent()({
27327
27509
  default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? createVNode(VIcon, {
27328
27510
  "icon": icon.value
27329
27511
  }, null) : step.value)]
27330
- }), createVNode("div", {
27512
+ }), createElementVNode("div", {
27331
27513
  "class": "v-stepper-item__content"
27332
- }, [hasTitle && createVNode("div", {
27514
+ }, [hasTitle && createElementVNode("div", {
27333
27515
  "key": "title",
27334
27516
  "class": "v-stepper-item__title"
27335
- }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && createVNode("div", {
27517
+ }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && createElementVNode("div", {
27336
27518
  "key": "subtitle",
27337
27519
  "class": "v-stepper-item__subtitle"
27338
- }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[resolveDirective("ripple"), props.ripple && props.editable, null]]);
27520
+ }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[Ripple, props.ripple && props.editable, null]]);
27339
27521
  });
27340
27522
  return {};
27341
27523
  }
@@ -27531,7 +27713,7 @@ const VStepper = genericComponent()({
27531
27713
  raw,
27532
27714
  ...item
27533
27715
  } = _ref2;
27534
- return createVNode(Fragment, null, [!!index && createVNode(VDivider, null, null), createVNode(VStepperItem, item, {
27716
+ return createElementVNode(Fragment, null, [!!index && createVNode(VDivider, null, null), createVNode(VStepperItem, item, {
27535
27717
  default: slots[`header-item.${item.value}`] ?? slots.header,
27536
27718
  icon: slots.icon,
27537
27719
  title: slots.title,
@@ -27672,14 +27854,14 @@ const VSwitch = genericComponent()({
27672
27854
  backgroundColorClasses,
27673
27855
  backgroundColorStyles
27674
27856
  } = _ref3;
27675
- return createVNode("div", {
27676
- "class": ['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],
27677
- "style": backgroundColorStyles.value,
27857
+ return createElementVNode("div", {
27858
+ "class": normalizeClass(['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
27859
+ "style": normalizeStyle(backgroundColorStyles.value),
27678
27860
  "onClick": onTrackClick
27679
- }, [slots['track-true'] && createVNode("div", {
27861
+ }, [slots['track-true'] && createElementVNode("div", {
27680
27862
  "key": "prepend",
27681
27863
  "class": "v-switch__track-true"
27682
- }, [slots['track-true'](slotProps)]), slots['track-false'] && createVNode("div", {
27864
+ }, [slots['track-true'](slotProps)]), slots['track-false'] && createElementVNode("div", {
27683
27865
  "key": "append",
27684
27866
  "class": "v-switch__track-false"
27685
27867
  }, [slots['track-false'](slotProps)])]);
@@ -27691,11 +27873,11 @@ const VSwitch = genericComponent()({
27691
27873
  backgroundColorClasses,
27692
27874
  backgroundColorStyles
27693
27875
  } = _ref4;
27694
- return createVNode(Fragment, null, [inputNode, createVNode("div", {
27695
- "class": ['v-switch__thumb', {
27876
+ return createElementVNode(Fragment, null, [inputNode, createElementVNode("div", {
27877
+ "class": normalizeClass(['v-switch__thumb', {
27696
27878
  'v-switch__thumb--filled': icon || props.loading
27697
- }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value],
27698
- "style": props.inset ? undefined : backgroundColorStyles.value
27879
+ }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value]),
27880
+ "style": normalizeStyle(props.inset ? undefined : backgroundColorStyles.value)
27699
27881
  }, [slots.thumb ? createVNode(VDefaultsProvider, {
27700
27882
  "defaults": {
27701
27883
  VIcon: {
@@ -27783,10 +27965,10 @@ const VSystemBar = genericComponent()({
27783
27965
  absolute: toRef(() => props.absolute)
27784
27966
  });
27785
27967
  useRender(() => createVNode(props.tag, {
27786
- "class": ['v-system-bar', {
27968
+ "class": normalizeClass(['v-system-bar', {
27787
27969
  'v-system-bar--window': props.window
27788
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
27789
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
27970
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
27971
+ "style": normalizeStyle([backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style])
27790
27972
  }, slots));
27791
27973
  return {};
27792
27974
  }
@@ -27877,10 +28059,10 @@ const VTab = genericComponent()({
27877
28059
  "onGroup:selected": updateSlider
27878
28060
  }), {
27879
28061
  ...slots,
27880
- default: () => createVNode(Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && createVNode("div", {
28062
+ default: () => createElementVNode(Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && createElementVNode("div", {
27881
28063
  "ref": sliderEl,
27882
- "class": ['v-tab__slider', sliderColorClasses.value],
27883
- "style": sliderColorStyles.value
28064
+ "class": normalizeClass(['v-tab__slider', sliderColorClasses.value]),
28065
+ "style": normalizeStyle(sliderColorStyles.value)
27884
28066
  }, null)])
27885
28067
  });
27886
28068
  });
@@ -28032,7 +28214,7 @@ const VTabs = genericComponent()({
28032
28214
  useRender(() => {
28033
28215
  const slideGroupProps = VSlideGroup.filterProps(props);
28034
28216
  const hasWindow = !!(slots.window || props.items.length > 0);
28035
- return createVNode(Fragment, null, [createVNode(VSlideGroup, mergeProps(slideGroupProps, {
28217
+ return createElementVNode(Fragment, null, [createVNode(VSlideGroup, mergeProps(slideGroupProps, {
28036
28218
  "modelValue": model.value,
28037
28219
  "onUpdate:modelValue": $event => model.value = $event,
28038
28220
  "class": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {
@@ -28105,7 +28287,7 @@ const makeVTextareaProps = propsFactory({
28105
28287
  const VTextarea = genericComponent()({
28106
28288
  name: 'VTextarea',
28107
28289
  directives: {
28108
- Intersect
28290
+ vIntersect: Intersect
28109
28291
  },
28110
28292
  inheritAttrs: false,
28111
28293
  props: makeVTextareaProps(),
@@ -28278,9 +28460,9 @@ const VTextarea = genericComponent()({
28278
28460
  ...slotProps
28279
28461
  }
28280
28462
  } = _ref3;
28281
- return createVNode(Fragment, null, [props.prefix && createVNode("span", {
28463
+ return createElementVNode(Fragment, null, [props.prefix && createElementVNode("span", {
28282
28464
  "class": "v-text-field__prefix"
28283
- }, [props.prefix]), withDirectives(createVNode("textarea", mergeProps({
28465
+ }, [props.prefix]), withDirectives(createElementVNode("textarea", mergeProps({
28284
28466
  "ref": textareaRef,
28285
28467
  "class": fieldClass,
28286
28468
  "value": model.value,
@@ -28293,24 +28475,24 @@ const VTextarea = genericComponent()({
28293
28475
  "name": props.name,
28294
28476
  "onFocus": onFocus,
28295
28477
  "onBlur": blur
28296
- }, slotProps, inputAttrs), null), [[resolveDirective("intersect"), {
28478
+ }, slotProps, inputAttrs), null), [[Intersect, {
28297
28479
  handler: onIntersect
28298
28480
  }, null, {
28299
28481
  once: true
28300
- }]]), props.autoGrow && withDirectives(createVNode("textarea", {
28301
- "class": [fieldClass, 'v-textarea__sizer'],
28482
+ }]]), props.autoGrow && withDirectives(createElementVNode("textarea", {
28483
+ "class": normalizeClass([fieldClass, 'v-textarea__sizer']),
28302
28484
  "id": `${slotProps.id}-sizer`,
28303
28485
  "onUpdate:modelValue": $event => model.value = $event,
28304
28486
  "ref": sizerRef,
28305
28487
  "readonly": true,
28306
28488
  "aria-hidden": "true"
28307
- }, null), [[vModelText, model.value]]), props.suffix && createVNode("span", {
28489
+ }, null), [[vModelText, model.value]]), props.suffix && createElementVNode("span", {
28308
28490
  "class": "v-text-field__suffix"
28309
28491
  }, [props.suffix])]);
28310
28492
  }
28311
28493
  });
28312
28494
  },
28313
- details: hasDetails ? slotProps => createVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createVNode(Fragment, null, [createVNode("span", null, null), createVNode(VCounter, {
28495
+ details: hasDetails ? slotProps => createElementVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createElementVNode(Fragment, null, [createElementVNode("span", null, null), createVNode(VCounter, {
28314
28496
  "active": props.persistentCounter || isFocused.value,
28315
28497
  "value": counterValue.value,
28316
28498
  "max": max.value,
@@ -28341,8 +28523,8 @@ const VThemeProvider = genericComponent()({
28341
28523
  return () => {
28342
28524
  if (!props.withBackground) return slots.default?.();
28343
28525
  return createVNode(props.tag, {
28344
- "class": ['v-theme-provider', themeClasses.value, props.class],
28345
- "style": props.style
28526
+ "class": normalizeClass(['v-theme-provider', themeClasses.value, props.class]),
28527
+ "style": normalizeStyle(props.style)
28346
28528
  }, {
28347
28529
  default: () => [slots.default?.()]
28348
28530
  });
@@ -28387,21 +28569,21 @@ const VTimelineDivider = genericComponent()({
28387
28569
  backgroundColorClasses: lineColorClasses,
28388
28570
  backgroundColorStyles: lineColorStyles
28389
28571
  } = useBackgroundColor(() => props.lineColor);
28390
- useRender(() => createVNode("div", {
28391
- "class": ['v-timeline-divider', {
28572
+ useRender(() => createElementVNode("div", {
28573
+ "class": normalizeClass(['v-timeline-divider', {
28392
28574
  'v-timeline-divider--fill-dot': props.fillDot
28393
- }, props.class],
28394
- "style": props.style
28395
- }, [createVNode("div", {
28396
- "class": ['v-timeline-divider__before', lineColorClasses.value],
28397
- "style": lineColorStyles.value
28398
- }, null), !props.hideDot && createVNode("div", {
28575
+ }, props.class]),
28576
+ "style": normalizeStyle(props.style)
28577
+ }, [createElementVNode("div", {
28578
+ "class": normalizeClass(['v-timeline-divider__before', lineColorClasses.value]),
28579
+ "style": normalizeStyle(lineColorStyles.value)
28580
+ }, null), !props.hideDot && createElementVNode("div", {
28399
28581
  "key": "dot",
28400
- "class": ['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value],
28401
- "style": sizeStyles.value
28402
- }, [createVNode("div", {
28403
- "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
28404
- "style": backgroundColorStyles.value
28582
+ "class": normalizeClass(['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value]),
28583
+ "style": normalizeStyle(sizeStyles.value)
28584
+ }, [createElementVNode("div", {
28585
+ "class": normalizeClass(['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value]),
28586
+ "style": normalizeStyle(backgroundColorStyles.value)
28405
28587
  }, [!slots.default ? createVNode(VIcon, {
28406
28588
  "key": "icon",
28407
28589
  "color": props.iconColor,
@@ -28417,9 +28599,9 @@ const VTimelineDivider = genericComponent()({
28417
28599
  size: props.size
28418
28600
  }
28419
28601
  }
28420
- }, slots.default)])]), createVNode("div", {
28421
- "class": ['v-timeline-divider__after', lineColorClasses.value],
28422
- "style": lineColorStyles.value
28602
+ }, slots.default)])]), createElementVNode("div", {
28603
+ "class": normalizeClass(['v-timeline-divider__after', lineColorClasses.value]),
28604
+ "style": normalizeStyle(lineColorStyles.value)
28423
28605
  }, null)]));
28424
28606
  return {};
28425
28607
  }
@@ -28470,19 +28652,19 @@ const VTimelineItem = genericComponent()({
28470
28652
  }, {
28471
28653
  flush: 'post'
28472
28654
  });
28473
- useRender(() => createVNode("div", {
28474
- "class": ['v-timeline-item', {
28655
+ useRender(() => createElementVNode("div", {
28656
+ "class": normalizeClass(['v-timeline-item', {
28475
28657
  'v-timeline-item--fill-dot': props.fillDot,
28476
28658
  'v-timeline-item--side-start': props.side === 'start',
28477
28659
  'v-timeline-item--side-end': props.side === 'end'
28478
- }, props.class],
28479
- "style": [{
28660
+ }, props.class]),
28661
+ "style": normalizeStyle([{
28480
28662
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
28481
28663
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
28482
- }, props.style]
28483
- }, [createVNode("div", {
28664
+ }, props.style])
28665
+ }, [createElementVNode("div", {
28484
28666
  "class": "v-timeline-item__body",
28485
- "style": dimensionStyles.value
28667
+ "style": normalizeStyle(dimensionStyles.value)
28486
28668
  }, [slots.default?.()]), createVNode(VTimelineDivider, {
28487
28669
  "ref": dotRef,
28488
28670
  "hideDot": props.hideDot,
@@ -28495,7 +28677,7 @@ const VTimelineItem = genericComponent()({
28495
28677
  "rounded": props.rounded
28496
28678
  }, {
28497
28679
  default: slots.icon
28498
- }), props.density !== 'compact' && createVNode("div", {
28680
+ }), props.density !== 'compact' && createElementVNode("div", {
28499
28681
  "class": "v-timeline-item__opposite"
28500
28682
  }, [!props.hideOpposite && slots.opposite?.()])]));
28501
28683
  return {};
@@ -28588,12 +28770,12 @@ const VTimeline = genericComponent()({
28588
28770
  }
28589
28771
  });
28590
28772
  useRender(() => createVNode(props.tag, {
28591
- "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
28773
+ "class": normalizeClass(['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
28592
28774
  'v-timeline--inset-line': !!props.lineInset
28593
- }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class],
28594
- "style": [{
28775
+ }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class]),
28776
+ "style": normalizeStyle([{
28595
28777
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
28596
- }, props.style]
28778
+ }, props.style])
28597
28779
  }, slots));
28598
28780
  return {};
28599
28781
  }
@@ -28619,9 +28801,9 @@ const VToolbarItems = genericComponent()({
28619
28801
  variant: toRef(() => props.variant)
28620
28802
  }
28621
28803
  });
28622
- useRender(() => createVNode("div", {
28623
- "class": ['v-toolbar-items', props.class],
28624
- "style": props.style
28804
+ useRender(() => createElementVNode("div", {
28805
+ "class": normalizeClass(['v-toolbar-items', props.class]),
28806
+ "style": normalizeStyle(props.style)
28625
28807
  }, [slots.default?.()]));
28626
28808
  return {};
28627
28809
  }
@@ -29218,7 +29400,7 @@ function createVuetify$1() {
29218
29400
  };
29219
29401
  });
29220
29402
  }
29221
- const version$1 = "3.8.6";
29403
+ const version$1 = "3.8.8";
29222
29404
  createVuetify$1.version = version$1;
29223
29405
 
29224
29406
  // Vue's inject() can only be used in setup
@@ -29243,7 +29425,7 @@ const createVuetify = function () {
29243
29425
  ...options
29244
29426
  });
29245
29427
  };
29246
- const version = "3.8.6";
29428
+ const version = "3.8.8";
29247
29429
  createVuetify.version = version;
29248
29430
 
29249
29431
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };