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
package/dist/vuetify.cjs CHANGED
@@ -1,5 +1,5 @@
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
  */
@@ -514,6 +514,29 @@
514
514
  function isPrimitive(value) {
515
515
  return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
516
516
  }
517
+ function extractNumber(text, decimalDigitsLimit) {
518
+ const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
519
+ // sign allowed at the start
520
+ x === '.' && i === all.indexOf('.') ||
521
+ // decimal separator allowed only once
522
+ /\d/.test(x)).join('');
523
+ if (decimalDigitsLimit === 0) {
524
+ return cleanText.split('.')[0];
525
+ }
526
+ if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
527
+ const parts = cleanText.split('.');
528
+ return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
529
+ }
530
+ return cleanText;
531
+ }
532
+ function camelizeProps(props) {
533
+ if (!props) return;
534
+ const out = {};
535
+ for (const prop in props) {
536
+ out[vue.camelize(prop)] = props[prop];
537
+ }
538
+ return out;
539
+ }
517
540
 
518
541
  // Utilities
519
542
  const block = ['top', 'bottom'];
@@ -618,6 +641,33 @@
618
641
  return target.getBoundingClientRect();
619
642
  }
620
643
  }
644
+ function getElementBox(el) {
645
+ if (el === document.documentElement) {
646
+ if (!visualViewport) {
647
+ return new Box({
648
+ x: 0,
649
+ y: 0,
650
+ width: document.documentElement.clientWidth,
651
+ height: document.documentElement.clientHeight
652
+ });
653
+ } else {
654
+ return new Box({
655
+ x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
656
+ y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
657
+ width: visualViewport.width * visualViewport.scale,
658
+ height: visualViewport.height * visualViewport.scale
659
+ });
660
+ }
661
+ } else {
662
+ const rect = el.getBoundingClientRect();
663
+ return new Box({
664
+ x: rect.x,
665
+ y: rect.y,
666
+ width: el.clientWidth,
667
+ height: el.clientHeight
668
+ });
669
+ }
670
+ }
621
671
 
622
672
  // Utilities
623
673
 
@@ -1616,18 +1666,18 @@
1616
1666
  return vue.createVNode(props.tag, vue.mergeProps(attrs, {
1617
1667
  "style": null
1618
1668
  }), {
1619
- default: () => [vue.createVNode("svg", {
1669
+ default: () => [vue.createElementVNode("svg", {
1620
1670
  "class": "v-icon__svg",
1621
1671
  "xmlns": "http://www.w3.org/2000/svg",
1622
1672
  "viewBox": "0 0 24 24",
1623
1673
  "role": "img",
1624
1674
  "aria-hidden": "true"
1625
- }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? vue.createVNode("path", {
1675
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? vue.createElementVNode("path", {
1626
1676
  "d": path[0],
1627
1677
  "fill-opacity": path[1]
1628
- }, null) : vue.createVNode("path", {
1678
+ }, null) : vue.createElementVNode("path", {
1629
1679
  "d": path
1630
- }, null)) : vue.createVNode("path", {
1680
+ }, null)) : vue.createElementVNode("path", {
1631
1681
  "d": props.icon
1632
1682
  }, null)])]
1633
1683
  });
@@ -1651,7 +1701,7 @@
1651
1701
  setup(props) {
1652
1702
  return () => {
1653
1703
  return vue.createVNode(props.tag, {
1654
- "class": props.icon
1704
+ "class": vue.normalizeClass(props.icon)
1655
1705
  }, null);
1656
1706
  };
1657
1707
  }
@@ -3116,11 +3166,11 @@
3116
3166
  const {
3117
3167
  rtlClasses
3118
3168
  } = useRtl();
3119
- useRender(() => vue.createVNode("div", {
3169
+ useRender(() => vue.createElementVNode("div", {
3120
3170
  "ref": layoutRef,
3121
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
3122
- "style": [props.style]
3123
- }, [vue.createVNode("div", {
3171
+ "class": vue.normalizeClass(['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class]),
3172
+ "style": vue.normalizeStyle([props.style])
3173
+ }, [vue.createElementVNode("div", {
3124
3174
  "class": "v-application__wrap"
3125
3175
  }, [slots.default?.()])]));
3126
3176
  return {
@@ -3160,10 +3210,10 @@
3160
3210
  useRender(() => {
3161
3211
  const hasText = !!(slots.default || slots.text || props.text);
3162
3212
  return vue.createVNode(props.tag, {
3163
- "class": ['v-toolbar-title', props.class],
3164
- "style": props.style
3213
+ "class": vue.normalizeClass(['v-toolbar-title', props.class]),
3214
+ "style": vue.normalizeStyle(props.style)
3165
3215
  }, {
3166
- default: () => [hasText && vue.createVNode("div", {
3216
+ default: () => [hasText && vue.createElementVNode("div", {
3167
3217
  "class": "v-toolbar-title__placeholder"
3168
3218
  }, [slots.text ? slots.text() : props.text, slots.default?.()])]
3169
3219
  });
@@ -3623,16 +3673,16 @@
3623
3673
  const {
3624
3674
  dimensionStyles
3625
3675
  } = useDimension(props);
3626
- useRender(() => vue.createVNode("div", {
3627
- "class": ['v-responsive', {
3676
+ useRender(() => vue.createElementVNode("div", {
3677
+ "class": vue.normalizeClass(['v-responsive', {
3628
3678
  'v-responsive--inline': props.inline
3629
- }, props.class],
3630
- "style": [dimensionStyles.value, props.style]
3631
- }, [vue.createVNode("div", {
3679
+ }, props.class]),
3680
+ "style": vue.normalizeStyle([dimensionStyles.value, props.style])
3681
+ }, [vue.createElementVNode("div", {
3632
3682
  "class": "v-responsive__sizer",
3633
- "style": aspectStyles.value
3634
- }, null), slots.additional?.(), slots.default && vue.createVNode("div", {
3635
- "class": ['v-responsive__content', props.contentClass]
3683
+ "style": vue.normalizeStyle(aspectStyles.value)
3684
+ }, null), slots.additional?.(), slots.default && vue.createElementVNode("div", {
3685
+ "class": vue.normalizeClass(['v-responsive__content', props.contentClass])
3636
3686
  }, [slots.default()])]));
3637
3687
  return {};
3638
3688
  }
@@ -3866,7 +3916,7 @@
3866
3916
  const VImg = genericComponent()({
3867
3917
  name: 'VImg',
3868
3918
  directives: {
3869
- intersect: Intersect
3919
+ vIntersect: Intersect
3870
3920
  },
3871
3921
  props: makeVImgProps(),
3872
3922
  emits: {
@@ -3995,8 +4045,8 @@
3995
4045
  }));
3996
4046
  const __image = () => {
3997
4047
  if (!normalisedSrc.value.src || state.value === 'idle') return null;
3998
- const img = vue.createVNode("img", {
3999
- "class": ['v-img__img', containClasses.value],
4048
+ const img = vue.createElementVNode("img", {
4049
+ "class": vue.normalizeClass(['v-img__img', containClasses.value]),
4000
4050
  "style": {
4001
4051
  objectPosition: props.position
4002
4052
  },
@@ -4016,7 +4066,7 @@
4016
4066
  "transition": props.transition,
4017
4067
  "appear": true
4018
4068
  }, {
4019
- default: () => [vue.withDirectives(sources ? vue.createVNode("picture", {
4069
+ default: () => [vue.withDirectives(sources ? vue.createElementVNode("picture", {
4020
4070
  "class": "v-img__picture"
4021
4071
  }, [sources, img]) : img, [[vue.vShow, state.value === 'loaded']])]
4022
4072
  });
@@ -4024,8 +4074,8 @@
4024
4074
  const __preloadImage = () => vue.createVNode(MaybeTransition, {
4025
4075
  "transition": props.transition
4026
4076
  }, {
4027
- default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createVNode("img", {
4028
- "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
4077
+ default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createElementVNode("img", {
4078
+ "class": vue.normalizeClass(['v-img__img', 'v-img__img--preload', containClasses.value]),
4029
4079
  "style": {
4030
4080
  objectPosition: props.position
4031
4081
  },
@@ -4042,7 +4092,7 @@
4042
4092
  "transition": props.transition,
4043
4093
  "appear": true
4044
4094
  }, {
4045
- default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && vue.createVNode("div", {
4095
+ default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && vue.createElementVNode("div", {
4046
4096
  "class": "v-img__placeholder"
4047
4097
  }, [slots.placeholder()])]
4048
4098
  });
@@ -4053,14 +4103,14 @@
4053
4103
  "transition": props.transition,
4054
4104
  "appear": true
4055
4105
  }, {
4056
- default: () => [state.value === 'error' && vue.createVNode("div", {
4106
+ default: () => [state.value === 'error' && vue.createElementVNode("div", {
4057
4107
  "class": "v-img__error"
4058
4108
  }, [slots.error()])]
4059
4109
  });
4060
4110
  };
4061
4111
  const __gradient = () => {
4062
4112
  if (!props.gradient) return null;
4063
- return vue.createVNode("div", {
4113
+ return vue.createElementVNode("div", {
4064
4114
  "class": "v-img__gradient",
4065
4115
  "style": {
4066
4116
  backgroundImage: `linear-gradient(${props.gradient})`
@@ -4096,9 +4146,9 @@
4096
4146
  "aria-label": props.alt,
4097
4147
  "role": props.alt ? 'img' : undefined
4098
4148
  }), {
4099
- additional: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(__image, null, null), vue.createVNode(__preloadImage, null, null), vue.createVNode(__gradient, null, null), vue.createVNode(__placeholder, null, null), vue.createVNode(__error, null, null)]),
4149
+ additional: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(__image, null, null), vue.createVNode(__preloadImage, null, null), vue.createVNode(__gradient, null, null), vue.createVNode(__placeholder, null, null), vue.createVNode(__error, null, null)]),
4100
4150
  default: slots.default
4101
- }), [[vue.resolveDirective("intersect"), {
4151
+ }), [[Intersect, {
4102
4152
  handler: init,
4103
4153
  options: props.options
4104
4154
  }, null, {
@@ -4241,16 +4291,16 @@
4241
4291
  const extension = slots.extension?.();
4242
4292
  isExtended.value = !!(props.extended || extension);
4243
4293
  return vue.createVNode(props.tag, {
4244
- "class": ['v-toolbar', {
4294
+ "class": vue.normalizeClass(['v-toolbar', {
4245
4295
  'v-toolbar--absolute': props.absolute,
4246
4296
  'v-toolbar--collapse': props.collapse,
4247
4297
  'v-toolbar--flat': props.flat,
4248
4298
  'v-toolbar--floating': props.floating,
4249
4299
  [`v-toolbar--density-${props.density}`]: true
4250
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
4251
- "style": [backgroundColorStyles.value, props.style]
4300
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class]),
4301
+ "style": vue.normalizeStyle([backgroundColorStyles.value, props.style])
4252
4302
  }, {
4253
- default: () => [hasImage && vue.createVNode("div", {
4303
+ default: () => [hasImage && vue.createElementVNode("div", {
4254
4304
  "key": "image",
4255
4305
  "class": "v-toolbar__image"
4256
4306
  }, [!slots.image ? vue.createVNode(VImg, {
@@ -4273,19 +4323,19 @@
4273
4323
  }
4274
4324
  }
4275
4325
  }, {
4276
- default: () => [vue.createVNode("div", {
4326
+ default: () => [vue.createElementVNode("div", {
4277
4327
  "class": "v-toolbar__content",
4278
4328
  "style": {
4279
4329
  height: convertToUnit(contentHeight.value)
4280
4330
  }
4281
- }, [slots.prepend && vue.createVNode("div", {
4331
+ }, [slots.prepend && vue.createElementVNode("div", {
4282
4332
  "class": "v-toolbar__prepend"
4283
4333
  }, [slots.prepend?.()]), hasTitle && vue.createVNode(VToolbarTitle, {
4284
4334
  "key": "title",
4285
4335
  "text": props.title
4286
4336
  }, {
4287
4337
  text: slots.title
4288
- }), slots.default?.(), slots.append && vue.createVNode("div", {
4338
+ }), slots.default?.(), slots.append && vue.createElementVNode("div", {
4289
4339
  "class": "v-toolbar__append"
4290
4340
  }, [slots.append?.()])])]
4291
4341
  }), vue.createVNode(VDefaultsProvider, {
@@ -4296,7 +4346,7 @@
4296
4346
  }
4297
4347
  }, {
4298
4348
  default: () => [vue.createVNode(VExpandTransition, null, {
4299
- default: () => [isExtended.value && vue.createVNode("div", {
4349
+ default: () => [isExtended.value && vue.createElementVNode("div", {
4300
4350
  "class": "v-toolbar__extension",
4301
4351
  "style": {
4302
4352
  height: convertToUnit(extensionHeight.value)
@@ -4579,12 +4629,12 @@
4579
4629
 
4580
4630
  const allowedVariants$2 = ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'];
4581
4631
  function genOverlays(isClickable, name) {
4582
- return vue.createVNode(vue.Fragment, null, [isClickable && vue.createVNode("span", {
4632
+ return vue.createElementVNode(vue.Fragment, null, [isClickable && vue.createElementVNode("span", {
4583
4633
  "key": "overlay",
4584
- "class": `${name}__overlay`
4585
- }, null), vue.createVNode("span", {
4634
+ "class": vue.normalizeClass(`${name}__overlay`)
4635
+ }, null), vue.createElementVNode("span", {
4586
4636
  "key": "underlay",
4587
- "class": `${name}__underlay`
4637
+ "class": vue.normalizeClass(`${name}__underlay`)
4588
4638
  }, null)]);
4589
4639
  }
4590
4640
  const makeVariantProps = propsFactory({
@@ -4668,10 +4718,10 @@
4668
4718
  });
4669
4719
  useRender(() => {
4670
4720
  return vue.createVNode(props.tag, {
4671
- "class": ['v-btn-group', {
4721
+ "class": vue.normalizeClass(['v-btn-group', {
4672
4722
  'v-btn-group--divided': props.divided
4673
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
4674
- "style": props.style
4723
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
4724
+ "style": vue.normalizeStyle(props.style)
4675
4725
  }, slots);
4676
4726
  });
4677
4727
  }
@@ -5028,19 +5078,19 @@
5028
5078
  return vue.createVNode(iconData.value.component, {
5029
5079
  "tag": props.tag,
5030
5080
  "icon": iconData.value.icon,
5031
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
5081
+ "class": vue.normalizeClass(['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
5032
5082
  'v-icon--clickable': hasClick,
5033
5083
  'v-icon--disabled': props.disabled,
5034
5084
  'v-icon--start': props.start,
5035
5085
  'v-icon--end': props.end
5036
- }, props.class],
5037
- "style": [{
5086
+ }, props.class]),
5087
+ "style": vue.normalizeStyle([{
5038
5088
  '--v-icon-opacity': props.opacity
5039
5089
  }, !sizeClasses.value ? {
5040
5090
  fontSize: convertToUnit(props.size),
5041
5091
  height: convertToUnit(props.size),
5042
5092
  width: convertToUnit(props.size)
5043
- } : undefined, textColorStyles.value, props.style],
5093
+ } : undefined, textColorStyles.value, props.style]),
5044
5094
  "role": hasClick ? 'button' : undefined,
5045
5095
  "aria-hidden": !hasClick,
5046
5096
  "tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
@@ -5137,7 +5187,7 @@
5137
5187
  resizeRef,
5138
5188
  contentRect
5139
5189
  } = useResizeObserver();
5140
- const normalizedValue = vue.toRef(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
5190
+ const normalizedValue = vue.toRef(() => clamp(parseFloat(props.modelValue), 0, 100));
5141
5191
  const width = vue.toRef(() => Number(props.width));
5142
5192
  const size = vue.toRef(() => {
5143
5193
  // Get size from element if size prop value is small, large etc
@@ -5152,26 +5202,26 @@
5152
5202
  });
5153
5203
  useRender(() => vue.createVNode(props.tag, {
5154
5204
  "ref": root,
5155
- "class": ['v-progress-circular', {
5205
+ "class": vue.normalizeClass(['v-progress-circular', {
5156
5206
  'v-progress-circular--indeterminate': !!props.indeterminate,
5157
5207
  'v-progress-circular--visible': isIntersecting.value,
5158
5208
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
5159
- }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
5160
- "style": [sizeStyles.value, textColorStyles.value, props.style],
5209
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class]),
5210
+ "style": vue.normalizeStyle([sizeStyles.value, textColorStyles.value, props.style]),
5161
5211
  "role": "progressbar",
5162
5212
  "aria-valuemin": "0",
5163
5213
  "aria-valuemax": "100",
5164
5214
  "aria-valuenow": props.indeterminate ? undefined : normalizedValue.value
5165
5215
  }, {
5166
- default: () => [vue.createVNode("svg", {
5216
+ default: () => [vue.createElementVNode("svg", {
5167
5217
  "style": {
5168
5218
  transform: `rotate(calc(-90deg + ${Number(props.rotate)}deg))`
5169
5219
  },
5170
5220
  "xmlns": "http://www.w3.org/2000/svg",
5171
5221
  "viewBox": `0 0 ${diameter.value} ${diameter.value}`
5172
- }, [vue.createVNode("circle", {
5173
- "class": ['v-progress-circular__underlay', underlayColorClasses.value],
5174
- "style": underlayColorStyles.value,
5222
+ }, [vue.createElementVNode("circle", {
5223
+ "class": vue.normalizeClass(['v-progress-circular__underlay', underlayColorClasses.value]),
5224
+ "style": vue.normalizeStyle(underlayColorStyles.value),
5175
5225
  "fill": "transparent",
5176
5226
  "cx": "50%",
5177
5227
  "cy": "50%",
@@ -5179,7 +5229,7 @@
5179
5229
  "stroke-width": strokeWidth.value,
5180
5230
  "stroke-dasharray": CIRCUMFERENCE,
5181
5231
  "stroke-dashoffset": 0
5182
- }, null), vue.createVNode("circle", {
5232
+ }, null), vue.createElementVNode("circle", {
5183
5233
  "class": "v-progress-circular__overlay",
5184
5234
  "fill": "transparent",
5185
5235
  "cx": "50%",
@@ -5188,7 +5238,7 @@
5188
5238
  "stroke-width": strokeWidth.value,
5189
5239
  "stroke-dasharray": CIRCUMFERENCE,
5190
5240
  "stroke-dashoffset": strokeDashOffset.value
5191
- }, null)]), slots.default && vue.createVNode("div", {
5241
+ }, null)]), slots.default && vue.createElementVNode("div", {
5192
5242
  "class": "v-progress-circular__content"
5193
5243
  }, [slots.default({
5194
5244
  value: normalizedValue.value
@@ -5362,21 +5412,21 @@
5362
5412
  }
5363
5413
  useRender(() => vue.createVNode(props.tag, {
5364
5414
  "ref": intersectionRef,
5365
- "class": ['v-progress-linear', {
5415
+ "class": vue.normalizeClass(['v-progress-linear', {
5366
5416
  'v-progress-linear--absolute': props.absolute,
5367
5417
  'v-progress-linear--active': props.active && isIntersecting.value,
5368
5418
  'v-progress-linear--reverse': isReversed.value,
5369
5419
  'v-progress-linear--rounded': props.rounded,
5370
5420
  'v-progress-linear--rounded-bar': props.roundedBar,
5371
5421
  'v-progress-linear--striped': props.striped
5372
- }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class],
5373
- "style": [{
5422
+ }, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class]),
5423
+ "style": vue.normalizeStyle([{
5374
5424
  bottom: props.location === 'bottom' ? 0 : undefined,
5375
5425
  top: props.location === 'top' ? 0 : undefined,
5376
5426
  height: props.active ? convertToUnit(height.value) : 0,
5377
5427
  '--v-progress-linear-height': convertToUnit(height.value),
5378
5428
  ...(props.absolute ? locationStyles.value : {})
5379
- }, props.style],
5429
+ }, props.style]),
5380
5430
  "role": "progressbar",
5381
5431
  "aria-hidden": props.active ? 'false' : 'true',
5382
5432
  "aria-valuemin": "0",
@@ -5384,9 +5434,9 @@
5384
5434
  "aria-valuenow": props.indeterminate ? undefined : Math.min(parseFloat(progress.value), max.value),
5385
5435
  "onClick": props.clickable && handleClick
5386
5436
  }, {
5387
- default: () => [props.stream && vue.createVNode("div", {
5437
+ default: () => [props.stream && vue.createElementVNode("div", {
5388
5438
  "key": "stream",
5389
- "class": ['v-progress-linear__stream', textColorClasses.value],
5439
+ "class": vue.normalizeClass(['v-progress-linear__stream', textColorClasses.value]),
5390
5440
  "style": {
5391
5441
  ...textColorStyles.value,
5392
5442
  [isReversed.value ? 'left' : 'right']: convertToUnit(-height.value),
@@ -5396,34 +5446,34 @@
5396
5446
  width: convertToUnit(100 - normalizedBuffer.value, '%'),
5397
5447
  '--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1))
5398
5448
  }
5399
- }, null), vue.createVNode("div", {
5400
- "class": ['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],
5401
- "style": [backgroundColorStyles.value, {
5449
+ }, null), vue.createElementVNode("div", {
5450
+ "class": vue.normalizeClass(['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
5451
+ "style": vue.normalizeStyle([backgroundColorStyles.value, {
5402
5452
  opacity: parseFloat(props.bgOpacity),
5403
5453
  width: props.stream ? 0 : undefined
5404
- }]
5405
- }, null), vue.createVNode("div", {
5406
- "class": ['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined],
5407
- "style": [bufferColorStyles.value, {
5454
+ }])
5455
+ }, null), vue.createElementVNode("div", {
5456
+ "class": vue.normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5457
+ "style": vue.normalizeStyle([bufferColorStyles.value, {
5408
5458
  opacity: parseFloat(props.bufferOpacity),
5409
5459
  width: convertToUnit(normalizedBuffer.value, '%')
5410
- }]
5460
+ }])
5411
5461
  }, null), vue.createVNode(vue.Transition, {
5412
5462
  "name": transition.value
5413
5463
  }, {
5414
- default: () => [!props.indeterminate ? vue.createVNode("div", {
5415
- "class": ['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined],
5416
- "style": [barColorStyles.value, {
5464
+ default: () => [!props.indeterminate ? vue.createElementVNode("div", {
5465
+ "class": vue.normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5466
+ "style": vue.normalizeStyle([barColorStyles.value, {
5417
5467
  width: convertToUnit(normalizedValue.value, '%')
5418
- }]
5419
- }, null) : vue.createVNode("div", {
5468
+ }])
5469
+ }, null) : vue.createElementVNode("div", {
5420
5470
  "class": "v-progress-linear__indeterminate"
5421
- }, [['long', 'short'].map(bar => vue.createVNode("div", {
5471
+ }, [['long', 'short'].map(bar => vue.createElementVNode("div", {
5422
5472
  "key": bar,
5423
- "class": ['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined],
5424
- "style": barColorStyles.value
5473
+ "class": vue.normalizeClass(['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5474
+ "style": vue.normalizeStyle(barColorStyles.value)
5425
5475
  }, null))])]
5426
- }), slots.default && vue.createVNode("div", {
5476
+ }), slots.default && vue.createElementVNode("div", {
5427
5477
  "class": "v-progress-linear__content"
5428
5478
  }, [slots.default({
5429
5479
  value: normalizedValue.value,
@@ -5453,8 +5503,8 @@
5453
5503
  let {
5454
5504
  slots
5455
5505
  } = _ref;
5456
- return vue.createVNode("div", {
5457
- "class": `${props.name}__loader`
5506
+ return vue.createElementVNode("div", {
5507
+ "class": vue.normalizeClass(`${props.name}__loader`)
5458
5508
  }, [slots.default?.({
5459
5509
  color: props.color,
5460
5510
  isActive: props.active
@@ -6044,7 +6094,7 @@
6044
6094
  "onClick": onClick,
6045
6095
  "value": valueAttr.value
6046
6096
  }, link.linkProps), {
6047
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
6097
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createElementVNode("span", {
6048
6098
  "key": "prepend",
6049
6099
  "class": "v-btn__prepend"
6050
6100
  }, [!slots.prepend ? vue.createVNode(VIcon, {
@@ -6058,7 +6108,7 @@
6058
6108
  icon: props.prependIcon
6059
6109
  }
6060
6110
  }
6061
- }, slots.prepend)]), vue.createVNode("span", {
6111
+ }, slots.prepend)]), vue.createElementVNode("span", {
6062
6112
  "class": "v-btn__content",
6063
6113
  "data-no-activator": ""
6064
6114
  }, [!slots.default && hasIcon ? vue.createVNode(VIcon, {
@@ -6074,7 +6124,7 @@
6074
6124
  }
6075
6125
  }, {
6076
6126
  default: () => [slots.default?.() ?? vue.toDisplayString(props.text)]
6077
- })]), !props.icon && hasAppend && vue.createVNode("span", {
6127
+ })]), !props.icon && hasAppend && vue.createElementVNode("span", {
6078
6128
  "key": "append",
6079
6129
  "class": "v-btn__append"
6080
6130
  }, [!slots.append ? vue.createVNode(VIcon, {
@@ -6088,7 +6138,7 @@
6088
6138
  icon: props.appendIcon
6089
6139
  }
6090
6140
  }
6091
- }, slots.append)]), !!props.loading && vue.createVNode("span", {
6141
+ }, slots.append)]), !!props.loading && vue.createElementVNode("span", {
6092
6142
  "key": "loader",
6093
6143
  "class": "v-btn__loader"
6094
6144
  }, [slots.loader?.() ?? vue.createVNode(VProgressCircular, {
@@ -6261,20 +6311,20 @@
6261
6311
  const hasTitle = !!(slots.title || props.title);
6262
6312
  const hasClose = !!(slots.close || props.closable);
6263
6313
  return isActive.value && vue.createVNode(props.tag, {
6264
- "class": ['v-alert', props.border && {
6314
+ "class": vue.normalizeClass(['v-alert', props.border && {
6265
6315
  'v-alert--border': !!props.border,
6266
6316
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
6267
6317
  }, {
6268
6318
  'v-alert--prominent': props.prominent
6269
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
6270
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
6319
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class]),
6320
+ "style": vue.normalizeStyle([colorStyles.value, dimensionStyles.value, locationStyles.value, props.style]),
6271
6321
  "role": "alert"
6272
6322
  }, {
6273
- default: () => [genOverlays(false, 'v-alert'), props.border && vue.createVNode("div", {
6323
+ default: () => [genOverlays(false, 'v-alert'), props.border && vue.createElementVNode("div", {
6274
6324
  "key": "border",
6275
- "class": ['v-alert__border', textColorClasses.value],
6276
- "style": textColorStyles.value
6277
- }, null), hasPrepend && vue.createVNode("div", {
6325
+ "class": vue.normalizeClass(['v-alert__border', textColorClasses.value]),
6326
+ "style": vue.normalizeStyle(textColorStyles.value)
6327
+ }, null), hasPrepend && vue.createElementVNode("div", {
6278
6328
  "key": "prepend",
6279
6329
  "class": "v-alert__prepend"
6280
6330
  }, [!slots.prepend ? vue.createVNode(VIcon, {
@@ -6292,16 +6342,16 @@
6292
6342
  size: props.prominent ? 44 : 28
6293
6343
  }
6294
6344
  }
6295
- }, slots.prepend)]), vue.createVNode("div", {
6345
+ }, slots.prepend)]), vue.createElementVNode("div", {
6296
6346
  "class": "v-alert__content"
6297
6347
  }, [hasTitle && vue.createVNode(VAlertTitle, {
6298
6348
  "key": "title"
6299
6349
  }, {
6300
6350
  default: () => [slots.title?.() ?? props.title]
6301
- }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && vue.createVNode("div", {
6351
+ }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && vue.createElementVNode("div", {
6302
6352
  "key": "append",
6303
6353
  "class": "v-alert__append"
6304
- }, [slots.append()]), hasClose && vue.createVNode("div", {
6354
+ }, [slots.append()]), hasClose && vue.createElementVNode("div", {
6305
6355
  "key": "close",
6306
6356
  "class": "v-alert__close"
6307
6357
  }, [!slots.close ? vue.createVNode(VBtn, vue.mergeProps({
@@ -6374,11 +6424,11 @@
6374
6424
  sizeStyles
6375
6425
  } = useSize(props);
6376
6426
  useRender(() => vue.createVNode(props.tag, {
6377
- "class": ['v-avatar', {
6427
+ "class": vue.normalizeClass(['v-avatar', {
6378
6428
  'v-avatar--start': props.start,
6379
6429
  'v-avatar--end': props.end
6380
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6381
- "style": [colorStyles.value, sizeStyles.value, props.style]
6430
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class]),
6431
+ "style": vue.normalizeStyle([colorStyles.value, sizeStyles.value, props.style])
6382
6432
  }, {
6383
6433
  default: () => [!slots.default ? props.image ? vue.createVNode(VImg, {
6384
6434
  "key": "image",
@@ -6420,11 +6470,11 @@
6420
6470
  let {
6421
6471
  slots
6422
6472
  } = _ref;
6423
- useRender(() => vue.createVNode("label", {
6424
- "class": ['v-label', {
6473
+ useRender(() => vue.createElementVNode("label", {
6474
+ "class": vue.normalizeClass(['v-label', {
6425
6475
  'v-label--clickable': !!props.onClick
6426
- }, props.class],
6427
- "style": props.style,
6476
+ }, props.class]),
6477
+ "style": vue.normalizeStyle(props.style),
6428
6478
  "onClick": props.onClick
6429
6479
  }, [props.text, slots.default?.()]));
6430
6480
  return {};
@@ -6519,11 +6569,11 @@
6519
6569
  valueComparator: vue.toRef(() => props.valueComparator)
6520
6570
  }
6521
6571
  });
6522
- useRender(() => vue.createVNode("div", {
6523
- "class": ['v-selection-control-group', {
6572
+ useRender(() => vue.createElementVNode("div", {
6573
+ "class": vue.normalizeClass(['v-selection-control-group', {
6524
6574
  'v-selection-control-group--inline': props.inline
6525
- }, props.class],
6526
- "style": props.style,
6575
+ }, props.class]),
6576
+ "style": vue.normalizeStyle(props.style),
6527
6577
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6528
6578
  }, [slots.default?.()]));
6529
6579
  return {};
@@ -6599,7 +6649,7 @@
6599
6649
  const VSelectionControl = genericComponent()({
6600
6650
  name: 'VSelectionControl',
6601
6651
  directives: {
6602
- Ripple
6652
+ vRipple: Ripple
6603
6653
  },
6604
6654
  inheritAttrs: false,
6605
6655
  props: makeVSelectionControlProps(),
@@ -6670,7 +6720,7 @@
6670
6720
  }
6671
6721
  }) : props.label;
6672
6722
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
6673
- const inputNode = vue.createVNode("input", vue.mergeProps({
6723
+ const inputNode = vue.createElementVNode("input", vue.mergeProps({
6674
6724
  "ref": input,
6675
6725
  "checked": model.value,
6676
6726
  "disabled": !!props.disabled,
@@ -6685,7 +6735,7 @@
6685
6735
  "name": props.name,
6686
6736
  "aria-checked": props.type === 'checkbox' ? model.value : undefined
6687
6737
  }, inputAttrs), null);
6688
- return vue.createVNode("div", vue.mergeProps({
6738
+ return vue.createElementVNode("div", vue.mergeProps({
6689
6739
  "class": ['v-selection-control', {
6690
6740
  'v-selection-control--dirty': model.value,
6691
6741
  'v-selection-control--disabled': props.disabled,
@@ -6696,14 +6746,14 @@
6696
6746
  }, densityClasses.value, props.class]
6697
6747
  }, rootAttrs, {
6698
6748
  "style": props.style
6699
- }), [vue.createVNode("div", {
6700
- "class": ['v-selection-control__wrapper', textColorClasses.value],
6701
- "style": textColorStyles.value
6749
+ }), [vue.createElementVNode("div", {
6750
+ "class": vue.normalizeClass(['v-selection-control__wrapper', textColorClasses.value]),
6751
+ "style": vue.normalizeStyle(textColorStyles.value)
6702
6752
  }, [slots.default?.({
6703
6753
  backgroundColorClasses,
6704
6754
  backgroundColorStyles
6705
- }), vue.withDirectives(vue.createVNode("div", {
6706
- "class": ['v-selection-control__input']
6755
+ }), vue.withDirectives(vue.createElementVNode("div", {
6756
+ "class": vue.normalizeClass(['v-selection-control__input'])
6707
6757
  }, [slots.input?.({
6708
6758
  model,
6709
6759
  textColorClasses,
@@ -6717,10 +6767,10 @@
6717
6767
  onBlur,
6718
6768
  id: id.value
6719
6769
  }
6720
- }) ?? vue.createVNode(vue.Fragment, null, [icon.value && vue.createVNode(VIcon, {
6770
+ }) ?? vue.createElementVNode(vue.Fragment, null, [icon.value && vue.createVNode(VIcon, {
6721
6771
  "key": "icon",
6722
6772
  "icon": icon.value
6723
- }, null), inputNode])]), [[vue.resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && vue.createVNode(VLabel, {
6773
+ }, null), inputNode])]), [[Ripple, props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && vue.createVNode(VLabel, {
6724
6774
  "for": id.value,
6725
6775
  "onClick": onClickLabel
6726
6776
  }, {
@@ -6797,7 +6847,8 @@
6797
6847
  function InputIcon(_ref) {
6798
6848
  let {
6799
6849
  name,
6800
- color
6850
+ color,
6851
+ ...attrs
6801
6852
  } = _ref;
6802
6853
  const localeKey = {
6803
6854
  prepend: 'prependAction',
@@ -6814,13 +6865,13 @@
6814
6865
  callEvent(listener, new PointerEvent('click', e));
6815
6866
  }
6816
6867
  const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
6817
- return vue.createVNode(VIcon, {
6868
+ return vue.createVNode(VIcon, vue.mergeProps({
6818
6869
  "icon": props[`${name}Icon`],
6819
6870
  "aria-label": label,
6820
6871
  "onClick": listener,
6821
6872
  "onKeydown": onKeydown,
6822
6873
  "color": color
6823
- }, null);
6874
+ }, attrs), null);
6824
6875
  }
6825
6876
  return {
6826
6877
  InputIcon
@@ -6860,10 +6911,10 @@
6860
6911
  useRender(() => vue.createVNode(MaybeTransition, {
6861
6912
  "transition": props.transition,
6862
6913
  "tag": "div",
6863
- "class": ['v-messages', textColorClasses.value, props.class],
6864
- "style": [textColorStyles.value, props.style]
6914
+ "class": vue.normalizeClass(['v-messages', textColorClasses.value, props.class]),
6915
+ "style": vue.normalizeStyle([textColorStyles.value, props.style])
6865
6916
  }, {
6866
- default: () => [props.active && messages.value.map((message, i) => vue.createVNode("div", {
6917
+ default: () => [props.active && messages.value.map((message, i) => vue.createElementVNode("div", {
6867
6918
  "class": "v-messages__message",
6868
6919
  "key": `${i}-${messages.value}`
6869
6920
  }, [slots.message ? slots.message({
@@ -7329,31 +7380,31 @@
7329
7380
  const hasAppend = !!(slots.append || props.appendIcon);
7330
7381
  const hasMessages = messages.value.length > 0;
7331
7382
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
7332
- return vue.createVNode("div", {
7333
- "class": ['v-input', `v-input--${props.direction}`, {
7383
+ return vue.createElementVNode("div", {
7384
+ "class": vue.normalizeClass(['v-input', `v-input--${props.direction}`, {
7334
7385
  'v-input--center-affix': props.centerAffix,
7335
7386
  'v-input--focused': props.focused,
7336
7387
  'v-input--glow': props.glow,
7337
7388
  'v-input--hide-spin-buttons': props.hideSpinButtons
7338
- }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class],
7339
- "style": [dimensionStyles.value, props.style]
7340
- }, [hasPrepend && vue.createVNode("div", {
7389
+ }, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class]),
7390
+ "style": vue.normalizeStyle([dimensionStyles.value, props.style])
7391
+ }, [hasPrepend && vue.createElementVNode("div", {
7341
7392
  "key": "prepend",
7342
7393
  "class": "v-input__prepend"
7343
7394
  }, [slots.prepend?.(slotProps.value), props.prependIcon && vue.createVNode(InputIcon, {
7344
7395
  "key": "prepend-icon",
7345
7396
  "name": "prepend",
7346
7397
  "color": iconColor.value
7347
- }, null)]), slots.default && vue.createVNode("div", {
7398
+ }, null)]), slots.default && vue.createElementVNode("div", {
7348
7399
  "class": "v-input__control"
7349
- }, [slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
7400
+ }, [slots.default?.(slotProps.value)]), hasAppend && vue.createElementVNode("div", {
7350
7401
  "key": "append",
7351
7402
  "class": "v-input__append"
7352
7403
  }, [props.appendIcon && vue.createVNode(InputIcon, {
7353
7404
  "key": "append-icon",
7354
7405
  "name": "append",
7355
7406
  "color": iconColor.value
7356
- }, null), slots.append?.(slotProps.value)]), hasDetails && vue.createVNode("div", {
7407
+ }, null), slots.append?.(slotProps.value)]), hasDetails && vue.createElementVNode("div", {
7357
7408
  "id": messagesId.value,
7358
7409
  "class": "v-input__details",
7359
7410
  "role": "alert",
@@ -7744,7 +7795,7 @@
7744
7795
  min = 0;
7745
7796
  max = scrollHeight + -containerHeight;
7746
7797
  }
7747
- return Math.max(Math.min(value, max), min);
7798
+ return clamp(value, min, max);
7748
7799
  }
7749
7800
 
7750
7801
  function calculateUpdatedTarget(_ref) {
@@ -8102,42 +8153,42 @@
8102
8153
  return scrollSizeMax - Math.abs(scrollOffset.value) > 1;
8103
8154
  });
8104
8155
  useRender(() => vue.createVNode(props.tag, {
8105
- "class": ['v-slide-group', {
8156
+ "class": vue.normalizeClass(['v-slide-group', {
8106
8157
  'v-slide-group--vertical': !isHorizontal.value,
8107
8158
  'v-slide-group--has-affixes': hasAffixes.value,
8108
8159
  'v-slide-group--is-overflowing': isOverflowing.value
8109
- }, displayClasses.value, props.class],
8110
- "style": props.style,
8160
+ }, displayClasses.value, props.class]),
8161
+ "style": vue.normalizeStyle(props.style),
8111
8162
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
8112
8163
  "onFocus": onFocus
8113
8164
  }, {
8114
- default: () => [hasAffixes.value && vue.createVNode("div", {
8165
+ default: () => [hasAffixes.value && vue.createElementVNode("div", {
8115
8166
  "key": "prev",
8116
- "class": ['v-slide-group__prev', {
8167
+ "class": vue.normalizeClass(['v-slide-group__prev', {
8117
8168
  'v-slide-group__prev--disabled': !hasPrev.value
8118
- }],
8169
+ }]),
8119
8170
  "onMousedown": onFocusAffixes,
8120
8171
  "onClick": () => hasPrev.value && scrollTo('prev')
8121
8172
  }, [slots.prev?.(slotProps.value) ?? vue.createVNode(VFadeTransition, null, {
8122
8173
  default: () => [vue.createVNode(VIcon, {
8123
8174
  "icon": isRtl.value ? props.nextIcon : props.prevIcon
8124
8175
  }, null)]
8125
- })]), vue.createVNode("div", {
8176
+ })]), vue.createElementVNode("div", {
8126
8177
  "key": "container",
8127
8178
  "ref": containerRef,
8128
8179
  "class": "v-slide-group__container",
8129
8180
  "onScroll": onScroll
8130
- }, [vue.createVNode("div", {
8181
+ }, [vue.createElementVNode("div", {
8131
8182
  "ref": contentRef,
8132
8183
  "class": "v-slide-group__content",
8133
8184
  "onFocusin": onFocusin,
8134
8185
  "onFocusout": onFocusout,
8135
8186
  "onKeydown": onKeydown
8136
- }, [slots.default?.(slotProps.value)])]), hasAffixes.value && vue.createVNode("div", {
8187
+ }, [slots.default?.(slotProps.value)])]), hasAffixes.value && vue.createElementVNode("div", {
8137
8188
  "key": "next",
8138
- "class": ['v-slide-group__next', {
8189
+ "class": vue.normalizeClass(['v-slide-group__next', {
8139
8190
  'v-slide-group__next--disabled': !hasNext.value
8140
- }],
8191
+ }]),
8141
8192
  "onMousedown": onFocusAffixes,
8142
8193
  "onClick": () => hasNext.value && scrollTo('next')
8143
8194
  }, [slots.next?.(slotProps.value) ?? vue.createVNode(VFadeTransition, null, {
@@ -8292,7 +8343,7 @@
8292
8343
  const VChip = genericComponent()({
8293
8344
  name: 'VChip',
8294
8345
  directives: {
8295
- Ripple
8346
+ vRipple: Ripple
8296
8347
  },
8297
8348
  props: makeVChipProps(),
8298
8349
  emits: {
@@ -8335,6 +8386,7 @@
8335
8386
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8336
8387
  const closeProps = vue.toRef(() => ({
8337
8388
  'aria-label': t(props.closeLabel),
8389
+ disabled: props.disabled,
8338
8390
  onClick(e) {
8339
8391
  e.preventDefault();
8340
8392
  e.stopPropagation();
@@ -8392,7 +8444,7 @@
8392
8444
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
8393
8445
  "key": "filter"
8394
8446
  }, {
8395
- default: () => [vue.withDirectives(vue.createVNode("div", {
8447
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
8396
8448
  "class": "v-chip__filter"
8397
8449
  }, [!slots.filter ? vue.createVNode(VIcon, {
8398
8450
  "key": "filter-icon",
@@ -8406,10 +8458,10 @@
8406
8458
  }
8407
8459
  }
8408
8460
  }, slots.filter)]), [[vue.vShow, group.isSelected.value]])]
8409
- }), hasPrepend && vue.createVNode("div", {
8461
+ }), hasPrepend && vue.createElementVNode("div", {
8410
8462
  "key": "prepend",
8411
8463
  "class": "v-chip__prepend"
8412
- }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
8464
+ }, [!slots.prepend ? vue.createElementVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
8413
8465
  "key": "prepend-icon",
8414
8466
  "icon": props.prependIcon,
8415
8467
  "start": true
@@ -8430,7 +8482,7 @@
8430
8482
  start: true
8431
8483
  }
8432
8484
  }
8433
- }, slots.prepend)]), vue.createVNode("div", {
8485
+ }, slots.prepend)]), vue.createElementVNode("div", {
8434
8486
  "class": "v-chip__content",
8435
8487
  "data-no-activator": ""
8436
8488
  }, [slots.default?.({
@@ -8440,10 +8492,10 @@
8440
8492
  toggle: group?.toggle,
8441
8493
  value: group?.value.value,
8442
8494
  disabled: props.disabled
8443
- }) ?? vue.toDisplayString(props.text)]), hasAppend && vue.createVNode("div", {
8495
+ }) ?? vue.toDisplayString(props.text)]), hasAppend && vue.createElementVNode("div", {
8444
8496
  "key": "append",
8445
8497
  "class": "v-chip__append"
8446
- }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
8498
+ }, [!slots.append ? vue.createElementVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
8447
8499
  "key": "append-icon",
8448
8500
  "end": true,
8449
8501
  "icon": props.appendIcon
@@ -8464,7 +8516,7 @@
8464
8516
  icon: props.appendIcon
8465
8517
  }
8466
8518
  }
8467
- }, slots.append)]), hasClose && vue.createVNode("button", vue.mergeProps({
8519
+ }, slots.append)]), hasClose && vue.createElementVNode("button", vue.mergeProps({
8468
8520
  "key": "close",
8469
8521
  "class": "v-chip__close",
8470
8522
  "type": "button",
@@ -8482,7 +8534,7 @@
8482
8534
  }
8483
8535
  }
8484
8536
  }, slots.close)])]
8485
- }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
8537
+ }), [[Ripple, isClickable.value && props.ripple, null]]);
8486
8538
  };
8487
8539
  }
8488
8540
  });
@@ -9255,13 +9307,13 @@
9255
9307
  }
9256
9308
  }));
9257
9309
  useRender(() => vue.createVNode(props.tag, {
9258
- "class": ['v-list-group', {
9310
+ "class": vue.normalizeClass(['v-list-group', {
9259
9311
  'v-list-group--prepend': list?.hasPrepend.value,
9260
9312
  'v-list-group--fluid': props.fluid,
9261
9313
  'v-list-group--subgroup': props.subgroup,
9262
9314
  'v-list-group--open': isOpen.value
9263
- }, props.class],
9264
- "style": props.style
9315
+ }, props.class]),
9316
+ "style": vue.normalizeStyle(props.style)
9265
9317
  }, {
9266
9318
  default: () => [slots.activator && vue.createVNode(VDefaultsProvider, {
9267
9319
  "defaults": activatorDefaults.value
@@ -9278,7 +9330,7 @@
9278
9330
  },
9279
9331
  "disabled": !isBooted.value
9280
9332
  }, {
9281
- default: () => [vue.withDirectives(vue.createVNode("div", {
9333
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
9282
9334
  "class": "v-list-group__items",
9283
9335
  "role": "group",
9284
9336
  "aria-labelledby": id.value
@@ -9304,10 +9356,10 @@
9304
9356
  slots
9305
9357
  } = _ref;
9306
9358
  useRender(() => vue.createVNode(props.tag, {
9307
- "class": ['v-list-item-subtitle', props.class],
9308
- "style": [{
9359
+ "class": vue.normalizeClass(['v-list-item-subtitle', props.class]),
9360
+ "style": vue.normalizeStyle([{
9309
9361
  '--v-list-item-subtitle-opacity': props.opacity
9310
- }, props.style]
9362
+ }, props.style])
9311
9363
  }, slots));
9312
9364
  return {};
9313
9365
  }
@@ -9370,7 +9422,7 @@
9370
9422
  const VListItem = genericComponent()({
9371
9423
  name: 'VListItem',
9372
9424
  directives: {
9373
- Ripple
9425
+ vRipple: Ripple
9374
9426
  },
9375
9427
  props: makeVListItemProps(),
9376
9428
  emits: {
@@ -9505,10 +9557,10 @@
9505
9557
  "onClick": onClick,
9506
9558
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9507
9559
  }, link.linkProps), {
9508
- default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
9560
+ default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createElementVNode("div", {
9509
9561
  "key": "prepend",
9510
9562
  "class": "v-list-item__prepend"
9511
- }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
9563
+ }, [!slots.prepend ? vue.createElementVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
9512
9564
  "key": "prepend-avatar",
9513
9565
  "density": props.density,
9514
9566
  "image": props.prependAvatar
@@ -9534,9 +9586,9 @@
9534
9586
  }
9535
9587
  }, {
9536
9588
  default: () => [slots.prepend?.(slotProps.value)]
9537
- }), vue.createVNode("div", {
9589
+ }), vue.createElementVNode("div", {
9538
9590
  "class": "v-list-item__spacer"
9539
- }, null)]), vue.createVNode("div", {
9591
+ }, null)]), vue.createElementVNode("div", {
9540
9592
  "class": "v-list-item__content",
9541
9593
  "data-no-activator": ""
9542
9594
  }, [hasTitle && vue.createVNode(VListItemTitle, {
@@ -9551,10 +9603,10 @@
9551
9603
  default: () => [slots.subtitle?.({
9552
9604
  subtitle: props.subtitle
9553
9605
  }) ?? vue.toDisplayString(props.subtitle)]
9554
- }), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
9606
+ }), slots.default?.(slotProps.value)]), hasAppend && vue.createElementVNode("div", {
9555
9607
  "key": "append",
9556
9608
  "class": "v-list-item__append"
9557
- }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
9609
+ }, [!slots.append ? vue.createElementVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
9558
9610
  "key": "append-icon",
9559
9611
  "density": props.density,
9560
9612
  "icon": props.appendIcon
@@ -9580,10 +9632,10 @@
9580
9632
  }
9581
9633
  }, {
9582
9634
  default: () => [slots.append?.(slotProps.value)]
9583
- }), vue.createVNode("div", {
9635
+ }), vue.createElementVNode("div", {
9584
9636
  "class": "v-list-item__spacer"
9585
9637
  }, null)])]
9586
- }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
9638
+ }), [[Ripple, isClickable.value && props.ripple]]);
9587
9639
  });
9588
9640
  return {
9589
9641
  activate,
@@ -9621,15 +9673,15 @@
9621
9673
  useRender(() => {
9622
9674
  const hasText = !!(slots.default || props.title);
9623
9675
  return vue.createVNode(props.tag, {
9624
- "class": ['v-list-subheader', {
9676
+ "class": vue.normalizeClass(['v-list-subheader', {
9625
9677
  'v-list-subheader--inset': props.inset,
9626
9678
  'v-list-subheader--sticky': props.sticky
9627
- }, textColorClasses.value, props.class],
9628
- "style": [{
9679
+ }, textColorClasses.value, props.class]),
9680
+ "style": vue.normalizeStyle([{
9629
9681
  textColorStyles
9630
- }, props.style]
9682
+ }, props.style])
9631
9683
  }, {
9632
- default: () => [hasText && vue.createVNode("div", {
9684
+ default: () => [hasText && vue.createElementVNode("div", {
9633
9685
  "class": "v-list-subheader__text"
9634
9686
  }, [slots.default?.() ?? props.title])]
9635
9687
  });
@@ -9674,25 +9726,25 @@
9674
9726
  return styles;
9675
9727
  });
9676
9728
  useRender(() => {
9677
- const divider = vue.createVNode("hr", {
9678
- "class": [{
9729
+ const divider = vue.createElementVNode("hr", {
9730
+ "class": vue.normalizeClass([{
9679
9731
  'v-divider': true,
9680
9732
  'v-divider--inset': props.inset,
9681
9733
  'v-divider--vertical': props.vertical
9682
- }, themeClasses.value, textColorClasses.value, props.class],
9683
- "style": [dividerStyles.value, textColorStyles.value, {
9734
+ }, themeClasses.value, textColorClasses.value, props.class]),
9735
+ "style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
9684
9736
  '--v-border-opacity': props.opacity
9685
- }, props.style],
9737
+ }, props.style]),
9686
9738
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
9687
9739
  "role": `${attrs.role || 'separator'}`
9688
9740
  }, null);
9689
9741
  if (!slots.default) return divider;
9690
- return vue.createVNode("div", {
9691
- "class": ['v-divider__wrapper', {
9742
+ return vue.createElementVNode("div", {
9743
+ "class": vue.normalizeClass(['v-divider__wrapper', {
9692
9744
  'v-divider__wrapper--vertical': props.vertical,
9693
9745
  'v-divider__wrapper--inset': props.inset
9694
- }]
9695
- }, [divider, vue.createVNode("div", {
9746
+ }])
9747
+ }, [divider, vue.createElementVNode("div", {
9696
9748
  "class": "v-divider__content"
9697
9749
  }, [slots.default()]), divider]);
9698
9750
  });
@@ -9816,7 +9868,7 @@
9816
9868
  const _props = {
9817
9869
  title,
9818
9870
  value,
9819
- ...itemProps
9871
+ ...camelizeProps(itemProps)
9820
9872
  };
9821
9873
  return {
9822
9874
  title: String(_props.title ?? ''),
@@ -10111,12 +10163,12 @@
10111
10163
  useRender(() => {
10112
10164
  return vue.createVNode(props.tag, {
10113
10165
  "ref": contentRef,
10114
- "class": ['v-list', {
10166
+ "class": vue.normalizeClass(['v-list', {
10115
10167
  'v-list--disabled': props.disabled,
10116
10168
  'v-list--nav': props.nav,
10117
10169
  'v-list--slim': props.slim
10118
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
10119
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
10170
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
10171
+ "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
10120
10172
  "tabindex": props.disabled ? -1 : 0,
10121
10173
  "role": "listbox",
10122
10174
  "aria-activedescendant": undefined,
@@ -10160,11 +10212,11 @@
10160
10212
  slots
10161
10213
  } = _ref;
10162
10214
  useRender(() => vue.createVNode(props.tag, {
10163
- "class": ['v-list-item-action', {
10215
+ "class": vue.normalizeClass(['v-list-item-action', {
10164
10216
  'v-list-item-action--start': props.start,
10165
10217
  'v-list-item-action--end': props.end
10166
- }, props.class],
10167
- "style": props.style
10218
+ }, props.class]),
10219
+ "style": vue.normalizeStyle(props.style)
10168
10220
  }, slots));
10169
10221
  return {};
10170
10222
  }
@@ -10185,11 +10237,11 @@
10185
10237
  } = _ref;
10186
10238
  useRender(() => {
10187
10239
  return vue.createVNode(props.tag, {
10188
- "class": ['v-list-item-media', {
10240
+ "class": vue.normalizeClass(['v-list-item-media', {
10189
10241
  'v-list-item-media--start': props.start,
10190
10242
  'v-list-item-media--end': props.end
10191
- }, props.class],
10192
- "style": props.style
10243
+ }, props.class]),
10244
+ "style": vue.normalizeStyle(props.style)
10193
10245
  }, slots);
10194
10246
  });
10195
10247
  return {};
@@ -10278,11 +10330,19 @@
10278
10330
  vue.watch(() => props.locationStrategy, reset);
10279
10331
  vue.onScopeDispose(() => {
10280
10332
  window.removeEventListener('resize', onResize);
10333
+ visualViewport?.removeEventListener('resize', onVisualResize);
10334
+ visualViewport?.removeEventListener('scroll', onVisualScroll);
10281
10335
  updateLocation.value = undefined;
10282
10336
  });
10283
10337
  window.addEventListener('resize', onResize, {
10284
10338
  passive: true
10285
10339
  });
10340
+ visualViewport?.addEventListener('resize', onVisualResize, {
10341
+ passive: true
10342
+ });
10343
+ visualViewport?.addEventListener('scroll', onVisualScroll, {
10344
+ passive: true
10345
+ });
10286
10346
  if (typeof props.locationStrategy === 'function') {
10287
10347
  updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;
10288
10348
  } else {
@@ -10293,6 +10353,12 @@
10293
10353
  function onResize(e) {
10294
10354
  updateLocation.value?.(e);
10295
10355
  }
10356
+ function onVisualResize(e) {
10357
+ updateLocation.value?.(e);
10358
+ }
10359
+ function onVisualScroll(e) {
10360
+ updateLocation.value?.(e);
10361
+ }
10296
10362
  return {
10297
10363
  contentStyles,
10298
10364
  updateLocation
@@ -10444,13 +10510,7 @@
10444
10510
  }
10445
10511
  }
10446
10512
  const viewport = scrollParents.reduce((box, el) => {
10447
- const rect = el.getBoundingClientRect();
10448
- const scrollBox = new Box({
10449
- x: el === document.documentElement ? 0 : rect.x,
10450
- y: el === document.documentElement ? 0 : rect.y,
10451
- width: el.clientWidth,
10452
- height: el.clientHeight
10453
- });
10513
+ const scrollBox = getElementBox(el);
10454
10514
  if (box) {
10455
10515
  return new Box({
10456
10516
  x: Math.max(box.left, scrollBox.left),
@@ -11341,7 +11401,7 @@
11341
11401
  "name": "fade-transition",
11342
11402
  "appear": true
11343
11403
  }, {
11344
- default: () => [props.modelValue && vue.createVNode("div", vue.mergeProps({
11404
+ default: () => [props.modelValue && vue.createElementVNode("div", vue.mergeProps({
11345
11405
  "class": ['v-overlay__scrim', props.color.backgroundColorClasses.value],
11346
11406
  "style": props.color.backgroundColorStyles.value
11347
11407
  }, rest), null)]
@@ -11382,7 +11442,7 @@
11382
11442
  const VOverlay = genericComponent()({
11383
11443
  name: 'VOverlay',
11384
11444
  directives: {
11385
- ClickOutside
11445
+ vClickOutside: ClickOutside
11386
11446
  },
11387
11447
  inheritAttrs: false,
11388
11448
  props: {
@@ -11562,7 +11622,7 @@
11562
11622
  _onAfterLeave();
11563
11623
  emit('afterLeave');
11564
11624
  }
11565
- useRender(() => vue.createVNode(vue.Fragment, null, [slots.activator?.({
11625
+ useRender(() => vue.createElementVNode(vue.Fragment, null, [slots.activator?.({
11566
11626
  isActive: isActive.value,
11567
11627
  targetRef,
11568
11628
  props: vue.mergeProps({
@@ -11572,7 +11632,7 @@
11572
11632
  "disabled": !teleportTarget.value,
11573
11633
  "to": teleportTarget.value
11574
11634
  }, {
11575
- default: () => [vue.createVNode("div", vue.mergeProps({
11635
+ default: () => [vue.createElementVNode("div", vue.mergeProps({
11576
11636
  "class": ['v-overlay', {
11577
11637
  'v-overlay--absolute': props.absolute || props.contained,
11578
11638
  'v-overlay--active': isActive.value,
@@ -11596,13 +11656,13 @@
11596
11656
  "onAfterEnter": onAfterEnter,
11597
11657
  "onAfterLeave": onAfterLeave
11598
11658
  }, {
11599
- default: () => [vue.withDirectives(vue.createVNode("div", vue.mergeProps({
11659
+ default: () => [vue.withDirectives(vue.createElementVNode("div", vue.mergeProps({
11600
11660
  "ref": contentEl,
11601
11661
  "class": ['v-overlay__content', props.contentClass],
11602
11662
  "style": [dimensionStyles.value, contentStyles.value]
11603
11663
  }, contentEvents.value, props.contentProps), [slots.default?.({
11604
11664
  isActive
11605
- })]), [[vue.vShow, isActive.value], [vue.resolveDirective("click-outside"), {
11665
+ })]), [[vue.vShow, isActive.value], [ClickOutside, {
11606
11666
  handler: onClickOutside,
11607
11667
  closeConditional,
11608
11668
  include: () => [activatorEl.value]
@@ -11931,11 +11991,11 @@
11931
11991
  useRender(() => vue.createVNode(MaybeTransition, {
11932
11992
  "transition": props.transition
11933
11993
  }, {
11934
- default: () => [vue.withDirectives(vue.createVNode("div", {
11935
- "class": ['v-counter', {
11994
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
11995
+ "class": vue.normalizeClass(['v-counter', {
11936
11996
  'text-error': props.max && !props.disabled && parseFloat(props.value) > parseFloat(props.max)
11937
- }, props.class],
11938
- "style": props.style
11997
+ }, props.class]),
11998
+ "style": vue.normalizeStyle(props.style)
11939
11999
  }, [slots.default ? slots.default({
11940
12000
  counter: counter.value,
11941
12001
  max: props.max,
@@ -11958,10 +12018,10 @@
11958
12018
  slots
11959
12019
  } = _ref;
11960
12020
  useRender(() => vue.createVNode(VLabel, {
11961
- "class": ['v-field-label', {
12021
+ "class": vue.normalizeClass(['v-field-label', {
11962
12022
  'v-field-label--floating': props.floating
11963
- }, props.class],
11964
- "style": props.style,
12023
+ }, props.class]),
12024
+ "style": vue.normalizeStyle(props.style),
11965
12025
  "aria-hidden": props.floating || undefined
11966
12026
  }, slots));
11967
12027
  return {};
@@ -12138,7 +12198,7 @@
12138
12198
  for: id.value
12139
12199
  }
12140
12200
  }) : props.label;
12141
- return vue.createVNode("div", vue.mergeProps({
12201
+ return vue.createElementVNode("div", vue.mergeProps({
12142
12202
  "class": ['v-field', {
12143
12203
  'v-field--active': isActive.value,
12144
12204
  'v-field--appended': hasAppend,
@@ -12158,7 +12218,7 @@
12158
12218
  }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],
12159
12219
  "style": [backgroundColorStyles.value, props.style],
12160
12220
  "onClick": onClick
12161
- }, attrs), [vue.createVNode("div", {
12221
+ }, attrs), [vue.createElementVNode("div", {
12162
12222
  "class": "v-field__overlay"
12163
12223
  }, null), vue.createVNode(LoaderSlot, {
12164
12224
  "name": "v-field",
@@ -12166,23 +12226,23 @@
12166
12226
  "color": props.error ? 'error' : typeof props.loading === 'string' ? props.loading : props.color
12167
12227
  }, {
12168
12228
  default: slots.loader
12169
- }), hasPrepend && vue.createVNode("div", {
12229
+ }), hasPrepend && vue.createElementVNode("div", {
12170
12230
  "key": "prepend",
12171
12231
  "class": "v-field__prepend-inner"
12172
12232
  }, [props.prependInnerIcon && vue.createVNode(InputIcon, {
12173
12233
  "key": "prepend-icon",
12174
12234
  "name": "prependInner",
12175
12235
  "color": iconColor.value
12176
- }, null), slots['prepend-inner']?.(slotProps.value)]), vue.createVNode("div", {
12236
+ }, null), slots['prepend-inner']?.(slotProps.value)]), vue.createElementVNode("div", {
12177
12237
  "class": "v-field__field",
12178
12238
  "data-no-activator": ""
12179
12239
  }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasFloatingLabel.value && vue.createVNode(VFieldLabel, {
12180
12240
  "key": "floating-label",
12181
12241
  "ref": floatingLabelRef,
12182
- "class": [textColorClasses.value],
12242
+ "class": vue.normalizeClass([textColorClasses.value]),
12183
12243
  "floating": true,
12184
12244
  "for": id.value,
12185
- "style": textColorStyles.value
12245
+ "style": vue.normalizeStyle(textColorStyles.value)
12186
12246
  }, {
12187
12247
  default: () => [label()]
12188
12248
  }), hasLabel.value && vue.createVNode(VFieldLabel, {
@@ -12200,14 +12260,14 @@
12200
12260
  },
12201
12261
  focus,
12202
12262
  blur
12203
- }) ?? vue.createVNode("div", {
12263
+ }) ?? vue.createElementVNode("div", {
12204
12264
  "id": id.value,
12205
12265
  "class": "v-field__input",
12206
12266
  "aria-describedby": messagesId.value
12207
12267
  }, null)]), hasClear && vue.createVNode(VExpandXTransition, {
12208
12268
  "key": "clear"
12209
12269
  }, {
12210
- default: () => [vue.withDirectives(vue.createVNode("div", {
12270
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
12211
12271
  "class": "v-field__clearable",
12212
12272
  "onMousedown": e => {
12213
12273
  e.preventDefault();
@@ -12225,27 +12285,29 @@
12225
12285
  props: {
12226
12286
  onFocus: focus,
12227
12287
  onBlur: blur,
12228
- onClick: props['onClick:clear']
12288
+ onClick: props['onClick:clear'],
12289
+ tabindex: -1
12229
12290
  }
12230
12291
  }) : vue.createVNode(InputIcon, {
12231
12292
  "name": "clear",
12232
12293
  "onFocus": focus,
12233
- "onBlur": blur
12294
+ "onBlur": blur,
12295
+ "tabindex": -1
12234
12296
  }, null)]
12235
12297
  })]), [[vue.vShow, props.dirty]])]
12236
- }), hasAppend && vue.createVNode("div", {
12298
+ }), hasAppend && vue.createElementVNode("div", {
12237
12299
  "key": "append",
12238
12300
  "class": "v-field__append-inner"
12239
12301
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
12240
12302
  "key": "append-icon",
12241
12303
  "name": "appendInner",
12242
12304
  "color": iconColor.value
12243
- }, null)]), vue.createVNode("div", {
12244
- "class": ['v-field__outline', textColorClasses.value],
12245
- "style": textColorStyles.value
12246
- }, [isOutlined && vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
12305
+ }, null)]), vue.createElementVNode("div", {
12306
+ "class": vue.normalizeClass(['v-field__outline', textColorClasses.value]),
12307
+ "style": vue.normalizeStyle(textColorStyles.value)
12308
+ }, [isOutlined && vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("div", {
12247
12309
  "class": "v-field__outline__start"
12248
- }, null), hasFloatingLabel.value && vue.createVNode("div", {
12310
+ }, null), hasFloatingLabel.value && vue.createElementVNode("div", {
12249
12311
  "class": "v-field__outline__notch"
12250
12312
  }, [vue.createVNode(VFieldLabel, {
12251
12313
  "ref": floatingLabelRef,
@@ -12253,7 +12315,7 @@
12253
12315
  "for": id.value
12254
12316
  }, {
12255
12317
  default: () => [label()]
12256
- })]), vue.createVNode("div", {
12318
+ })]), vue.createElementVNode("div", {
12257
12319
  "class": "v-field__outline__end"
12258
12320
  }, null)]), isPlainOrUnderlined.value && hasFloatingLabel.value && vue.createVNode(VFieldLabel, {
12259
12321
  "ref": floatingLabelRef,
@@ -12294,7 +12356,7 @@
12294
12356
  const VTextField = genericComponent()({
12295
12357
  name: 'VTextField',
12296
12358
  directives: {
12297
- Intersect
12359
+ vIntersect: Intersect
12298
12360
  },
12299
12361
  inheritAttrs: false,
12300
12362
  props: makeVTextFieldProps(),
@@ -12426,7 +12488,7 @@
12426
12488
  ...slotProps
12427
12489
  }
12428
12490
  } = _ref3;
12429
- const inputNode = vue.withDirectives(vue.createVNode("input", vue.mergeProps({
12491
+ const inputNode = vue.withDirectives(vue.createElementVNode("input", vue.mergeProps({
12430
12492
  "ref": inputRef,
12431
12493
  "value": model.value,
12432
12494
  "onInput": onInput,
@@ -12439,29 +12501,29 @@
12439
12501
  "type": props.type,
12440
12502
  "onFocus": onFocus,
12441
12503
  "onBlur": blur
12442
- }, slotProps, inputAttrs), null), [[vue.resolveDirective("intersect"), {
12504
+ }, slotProps, inputAttrs), null), [[Intersect, {
12443
12505
  handler: onIntersect
12444
12506
  }, null, {
12445
12507
  once: true
12446
12508
  }]]);
12447
- return vue.createVNode(vue.Fragment, null, [props.prefix && vue.createVNode("span", {
12509
+ return vue.createElementVNode(vue.Fragment, null, [props.prefix && vue.createElementVNode("span", {
12448
12510
  "class": "v-text-field__prefix"
12449
- }, [vue.createVNode("span", {
12511
+ }, [vue.createElementVNode("span", {
12450
12512
  "class": "v-text-field__prefix__text"
12451
- }, [props.prefix])]), slots.default ? vue.createVNode("div", {
12452
- "class": fieldClass,
12513
+ }, [props.prefix])]), slots.default ? vue.createElementVNode("div", {
12514
+ "class": vue.normalizeClass(fieldClass),
12453
12515
  "data-no-activator": ""
12454
12516
  }, [slots.default(), inputNode]) : vue.cloneVNode(inputNode, {
12455
12517
  class: fieldClass
12456
- }), props.suffix && vue.createVNode("span", {
12518
+ }), props.suffix && vue.createElementVNode("span", {
12457
12519
  "class": "v-text-field__suffix"
12458
- }, [vue.createVNode("span", {
12520
+ }, [vue.createElementVNode("span", {
12459
12521
  "class": "v-text-field__suffix__text"
12460
12522
  }, [props.suffix])])]);
12461
12523
  }
12462
12524
  });
12463
12525
  },
12464
- details: hasDetails ? slotProps => vue.createVNode(vue.Fragment, null, [slots.details?.(slotProps), hasCounter && vue.createVNode(vue.Fragment, null, [vue.createVNode("span", null, null), vue.createVNode(VCounter, {
12526
+ details: hasDetails ? slotProps => vue.createElementVNode(vue.Fragment, null, [slots.details?.(slotProps), hasCounter && vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("span", null, null), vue.createVNode(VCounter, {
12465
12527
  "active": props.persistentCounter || isFocused.value,
12466
12528
  "value": counterValue.value,
12467
12529
  "max": max.value,
@@ -12499,9 +12561,9 @@
12499
12561
  vue.watch(() => contentRect.value?.height, height => {
12500
12562
  if (height != null) emit('update:height', height);
12501
12563
  });
12502
- useRender(() => props.renderless ? vue.createVNode(vue.Fragment, null, [slots.default?.({
12564
+ useRender(() => props.renderless ? vue.createElementVNode(vue.Fragment, null, [slots.default?.({
12503
12565
  itemRef: resizeRef
12504
- })]) : vue.createVNode("div", vue.mergeProps({
12566
+ })]) : vue.createElementVNode("div", vue.mergeProps({
12505
12567
  "ref": resizeRef,
12506
12568
  "class": ['v-virtual-scroll__item', props.class],
12507
12569
  "style": props.style
@@ -12836,24 +12898,24 @@
12836
12898
  ...slotProps
12837
12899
  })
12838
12900
  }));
12839
- return props.renderless ? vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
12901
+ return props.renderless ? vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("div", {
12840
12902
  "ref": markerRef,
12841
12903
  "class": "v-virtual-scroll__spacer",
12842
12904
  "style": {
12843
12905
  paddingTop: convertToUnit(paddingTop.value)
12844
12906
  }
12845
- }, null), children, vue.createVNode("div", {
12907
+ }, null), children, vue.createElementVNode("div", {
12846
12908
  "class": "v-virtual-scroll__spacer",
12847
12909
  "style": {
12848
12910
  paddingBottom: convertToUnit(paddingBottom.value)
12849
12911
  }
12850
- }, null)]) : vue.createVNode("div", {
12912
+ }, null)]) : vue.createElementVNode("div", {
12851
12913
  "ref": containerRef,
12852
- "class": ['v-virtual-scroll', props.class],
12914
+ "class": vue.normalizeClass(['v-virtual-scroll', props.class]),
12853
12915
  "onScrollPassive": handleScroll,
12854
12916
  "onScrollend": handleScrollend,
12855
- "style": [dimensionStyles.value, props.style]
12856
- }, [vue.createVNode("div", {
12917
+ "style": vue.normalizeStyle([dimensionStyles.value, props.style])
12918
+ }, [vue.createElementVNode("div", {
12857
12919
  "ref": markerRef,
12858
12920
  "class": "v-virtual-scroll__container",
12859
12921
  "style": {
@@ -13021,6 +13083,7 @@
13021
13083
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
13022
13084
  const isFocused = vue.shallowRef(false);
13023
13085
  let keyboardLookupPrefix = '';
13086
+ let keyboardLookupIndex = -1;
13024
13087
  let keyboardLookupLastTime;
13025
13088
  const displayItems = vue.computed(() => {
13026
13089
  if (props.hideSelected) {
@@ -13088,18 +13151,46 @@
13088
13151
  const now = performance.now();
13089
13152
  if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
13090
13153
  keyboardLookupPrefix = '';
13154
+ keyboardLookupIndex = -1;
13091
13155
  }
13092
13156
  keyboardLookupPrefix += e.key.toLowerCase();
13093
13157
  keyboardLookupLastTime = now;
13094
- const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
13095
- if (item !== undefined) {
13096
- if (!props.multiple) {
13097
- model.value = [item];
13158
+ const items = displayItems.value;
13159
+ function findItem() {
13160
+ let result = findItemBase();
13161
+ if (result) return result;
13162
+ if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
13163
+ // No matches but we have a repeated letter, try the next item with that prefix
13164
+ keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
13165
+ result = findItemBase();
13166
+ if (result) return result;
13098
13167
  }
13099
- const index = displayItems.value.indexOf(item);
13100
- if (~index && IN_BROWSER) {
13101
- listRef.value?.focus(index);
13168
+
13169
+ // Still nothing, wrap around to the top
13170
+ keyboardLookupIndex = -1;
13171
+ result = findItemBase();
13172
+ if (result) return result;
13173
+
13174
+ // Still nothing, try just the new letter
13175
+ keyboardLookupPrefix = e.key.toLowerCase();
13176
+ return findItemBase();
13177
+ }
13178
+ function findItemBase() {
13179
+ for (let i = keyboardLookupIndex + 1; i < items.length; i++) {
13180
+ const _item = items[i];
13181
+ if (_item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
13182
+ return [_item, i];
13183
+ }
13102
13184
  }
13185
+ return undefined;
13186
+ }
13187
+ const result = findItem();
13188
+ if (!result) return;
13189
+ const [item, index] = result;
13190
+ keyboardLookupIndex = index;
13191
+ listRef.value?.focus(index);
13192
+ if (!props.multiple) {
13193
+ model.value = [item];
13103
13194
  }
13104
13195
  }
13105
13196
 
@@ -13201,7 +13292,7 @@
13201
13292
  "title": t(label.value)
13202
13293
  }), {
13203
13294
  ...slots,
13204
- default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
13295
+ default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
13205
13296
  "ref": vMenuRef,
13206
13297
  "modelValue": menu.value,
13207
13298
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -13259,7 +13350,7 @@
13259
13350
  let {
13260
13351
  isSelected
13261
13352
  } = _ref3;
13262
- return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
13353
+ return vue.createElementVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
13263
13354
  "key": item.value,
13264
13355
  "modelValue": isSelected,
13265
13356
  "ripple": false,
@@ -13305,7 +13396,7 @@
13305
13396
  index
13306
13397
  })) : undefined;
13307
13398
  if (hasSlot && !slotContent) return undefined;
13308
- return vue.createVNode("div", {
13399
+ return vue.createElementVNode("div", {
13309
13400
  "key": item.value,
13310
13401
  "class": "v-select__selection"
13311
13402
  }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
@@ -13325,9 +13416,9 @@
13325
13416
  }
13326
13417
  }, {
13327
13418
  default: () => [slotContent]
13328
- }) : slotContent ?? vue.createVNode("span", {
13419
+ }) : slotContent ?? vue.createElementVNode("span", {
13329
13420
  "class": "v-select__selection-text"
13330
- }, [item.title, props.multiple && index < model.value.length - 1 && vue.createVNode("span", {
13421
+ }, [item.title, props.multiple && index < model.value.length - 1 && vue.createElementVNode("span", {
13331
13422
  "class": "v-select__selection-comma"
13332
13423
  }, [vue.createTextVNode(",")])])]);
13333
13424
  })]),
@@ -13335,7 +13426,7 @@
13335
13426
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13336
13427
  args[_key] = arguments[_key];
13337
13428
  }
13338
- return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13429
+ return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13339
13430
  "class": "v-select__menu-icon",
13340
13431
  "color": vTextFieldRef.value?.fieldIconColor,
13341
13432
  "icon": props.menuIcon
@@ -13486,17 +13577,17 @@
13486
13577
  if (matches == null || !matches.length) return text;
13487
13578
  return matches.map((match, i) => {
13488
13579
  const start = i === 0 ? 0 : matches[i - 1][1];
13489
- const result = [vue.createVNode("span", {
13490
- "class": `${name}__unmask`
13491
- }, [text.slice(start, match[0])]), vue.createVNode("span", {
13492
- "class": `${name}__mask`
13580
+ const result = [vue.createElementVNode("span", {
13581
+ "class": vue.normalizeClass(`${name}__unmask`)
13582
+ }, [text.slice(start, match[0])]), vue.createElementVNode("span", {
13583
+ "class": vue.normalizeClass(`${name}__mask`)
13493
13584
  }, [text.slice(match[0], match[1])])];
13494
13585
  if (i === matches.length - 1) {
13495
- result.push(vue.createVNode("span", {
13496
- "class": `${name}__unmask`
13586
+ result.push(vue.createElementVNode("span", {
13587
+ "class": vue.normalizeClass(`${name}__unmask`)
13497
13588
  }, [text.slice(match[1])]));
13498
13589
  }
13499
- return vue.createVNode(vue.Fragment, null, [result]);
13590
+ return vue.createElementVNode(vue.Fragment, null, [result]);
13500
13591
  });
13501
13592
  }
13502
13593
 
@@ -13798,7 +13889,7 @@
13798
13889
  "onKeydown": onKeydown
13799
13890
  }), {
13800
13891
  ...slots,
13801
- default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
13892
+ default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
13802
13893
  "ref": vMenuRef,
13803
13894
  "modelValue": menu.value,
13804
13895
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -13857,7 +13948,7 @@
13857
13948
  let {
13858
13949
  isSelected
13859
13950
  } = _ref4;
13860
- return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
13951
+ return vue.createElementVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
13861
13952
  "key": item.value,
13862
13953
  "modelValue": isSelected,
13863
13954
  "ripple": false,
@@ -13906,10 +13997,10 @@
13906
13997
  index
13907
13998
  })) : undefined;
13908
13999
  if (hasSlot && !slotContent) return undefined;
13909
- return vue.createVNode("div", {
14000
+ return vue.createElementVNode("div", {
13910
14001
  "key": item.value,
13911
- "class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
13912
- "style": index === selectionIndex.value ? textColorStyles.value : {}
14002
+ "class": vue.normalizeClass(['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]]),
14003
+ "style": vue.normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})
13913
14004
  }, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
13914
14005
  "key": "chip",
13915
14006
  "closable": props.closableChips,
@@ -13927,9 +14018,9 @@
13927
14018
  }
13928
14019
  }, {
13929
14020
  default: () => [slotContent]
13930
- }) : slotContent ?? vue.createVNode("span", {
14021
+ }) : slotContent ?? vue.createElementVNode("span", {
13931
14022
  "class": "v-autocomplete__selection-text"
13932
- }, [item.title, props.multiple && index < model.value.length - 1 && vue.createVNode("span", {
14023
+ }, [item.title, props.multiple && index < model.value.length - 1 && vue.createElementVNode("span", {
13933
14024
  "class": "v-autocomplete__selection-comma"
13934
14025
  }, [vue.createTextVNode(",")])])]);
13935
14026
  })]),
@@ -13937,7 +14028,7 @@
13937
14028
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13938
14029
  args[_key] = arguments[_key];
13939
14030
  }
13940
- return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
14031
+ return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
13941
14032
  "class": "v-autocomplete__menu-icon",
13942
14033
  "color": vTextFieldRef.value?.fieldIconColor,
13943
14034
  "icon": props.menuIcon,
@@ -14034,12 +14125,12 @@
14034
14125
  }, attrs, {
14035
14126
  "style": props.style
14036
14127
  }), {
14037
- default: () => [vue.createVNode("div", {
14128
+ default: () => [vue.createElementVNode("div", {
14038
14129
  "class": "v-badge__wrapper"
14039
14130
  }, [ctx.slots.default?.(), vue.createVNode(MaybeTransition, {
14040
14131
  "transition": props.transition
14041
14132
  }, {
14042
- default: () => [vue.withDirectives(vue.createVNode("span", vue.mergeProps({
14133
+ default: () => [vue.withDirectives(vue.createElementVNode("span", vue.mergeProps({
14043
14134
  "class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
14044
14135
  "style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
14045
14136
  "aria-atomic": "true",
@@ -14076,9 +14167,9 @@
14076
14167
  variant: 'text'
14077
14168
  }
14078
14169
  });
14079
- useRender(() => vue.createVNode("div", {
14080
- "class": ['v-banner-actions', props.class],
14081
- "style": props.style
14170
+ useRender(() => vue.createElementVNode("div", {
14171
+ "class": vue.normalizeClass(['v-banner-actions', props.class]),
14172
+ "style": vue.normalizeStyle(props.style)
14082
14173
  }, [slots.default?.()]));
14083
14174
  return {};
14084
14175
  }
@@ -14164,15 +14255,15 @@
14164
14255
  const hasPrependMedia = !!(props.avatar || props.icon);
14165
14256
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
14166
14257
  return vue.createVNode(props.tag, {
14167
- "class": ['v-banner', {
14258
+ "class": vue.normalizeClass(['v-banner', {
14168
14259
  'v-banner--stacked': props.stacked || mobile.value,
14169
14260
  'v-banner--sticky': props.sticky,
14170
14261
  [`v-banner--${props.lines}-line`]: !!props.lines
14171
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
14172
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14262
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),
14263
+ "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]),
14173
14264
  "role": "banner"
14174
14265
  }, {
14175
- default: () => [hasPrepend && vue.createVNode("div", {
14266
+ default: () => [hasPrepend && vue.createElementVNode("div", {
14176
14267
  "key": "prepend",
14177
14268
  "class": "v-banner__prepend"
14178
14269
  }, [!slots.prepend ? vue.createVNode(VAvatar, {
@@ -14192,7 +14283,7 @@
14192
14283
  image: props.avatar
14193
14284
  }
14194
14285
  }
14195
- }, slots.prepend)]), vue.createVNode("div", {
14286
+ }, slots.prepend)]), vue.createElementVNode("div", {
14196
14287
  "class": "v-banner__content"
14197
14288
  }, [hasText && vue.createVNode(VBannerText, {
14198
14289
  "key": "text"
@@ -14301,16 +14392,16 @@
14301
14392
  });
14302
14393
  useRender(() => {
14303
14394
  return vue.createVNode(props.tag, {
14304
- "class": ['v-bottom-navigation', {
14395
+ "class": vue.normalizeClass(['v-bottom-navigation', {
14305
14396
  'v-bottom-navigation--active': isActive.value,
14306
14397
  'v-bottom-navigation--grow': props.grow,
14307
14398
  'v-bottom-navigation--shift': props.mode === 'shift'
14308
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14309
- "style": [backgroundColorStyles.value, layoutItemStyles.value, {
14399
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
14400
+ "style": vue.normalizeStyle([backgroundColorStyles.value, layoutItemStyles.value, {
14310
14401
  height: convertToUnit(height.value)
14311
- }, ssrBootStyles.value, props.style]
14402
+ }, ssrBootStyles.value, props.style])
14312
14403
  }, {
14313
- default: () => [slots.default && vue.createVNode("div", {
14404
+ default: () => [slots.default && vue.createElementVNode("div", {
14314
14405
  "class": "v-bottom-navigation__content"
14315
14406
  }, [slots.default()])]
14316
14407
  });
@@ -14497,10 +14588,10 @@
14497
14588
  let {
14498
14589
  slots
14499
14590
  } = _ref;
14500
- useRender(() => vue.createVNode("li", {
14591
+ useRender(() => vue.createElementVNode("li", {
14501
14592
  "aria-hidden": "true",
14502
- "class": ['v-breadcrumbs-divider', props.class],
14503
- "style": props.style
14593
+ "class": vue.normalizeClass(['v-breadcrumbs-divider', props.class]),
14594
+ "style": vue.normalizeStyle(props.style)
14504
14595
  }, [slots?.default?.() ?? props.divider]));
14505
14596
  return {};
14506
14597
  }
@@ -14535,15 +14626,15 @@
14535
14626
  } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14536
14627
  useRender(() => {
14537
14628
  return vue.createVNode(props.tag, {
14538
- "class": ['v-breadcrumbs-item', {
14629
+ "class": vue.normalizeClass(['v-breadcrumbs-item', {
14539
14630
  'v-breadcrumbs-item--active': isActive.value,
14540
14631
  'v-breadcrumbs-item--disabled': props.disabled,
14541
14632
  [`${props.activeClass}`]: isActive.value && props.activeClass
14542
- }, textColorClasses.value, props.class],
14543
- "style": [textColorStyles.value, props.style],
14633
+ }, textColorClasses.value, props.class]),
14634
+ "style": vue.normalizeStyle([textColorStyles.value, props.style]),
14544
14635
  "aria-current": isActive.value ? 'page' : undefined
14545
14636
  }, {
14546
- default: () => [!link.isLink.value ? slots.default?.() ?? props.title : vue.createVNode("a", vue.mergeProps({
14637
+ default: () => [!link.isLink.value ? slots.default?.() ?? props.title : vue.createElementVNode("a", vue.mergeProps({
14547
14638
  "class": "v-breadcrumbs-item--link",
14548
14639
  "onClick": link.navigate
14549
14640
  }, link.linkProps), [slots.default?.() ?? props.title])]
@@ -14619,10 +14710,10 @@
14619
14710
  useRender(() => {
14620
14711
  const hasPrepend = !!(slots.prepend || props.icon);
14621
14712
  return vue.createVNode(props.tag, {
14622
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
14623
- "style": [backgroundColorStyles.value, props.style]
14713
+ "class": vue.normalizeClass(['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class]),
14714
+ "style": vue.normalizeStyle([backgroundColorStyles.value, props.style])
14624
14715
  }, {
14625
- default: () => [hasPrepend && vue.createVNode("li", {
14716
+ default: () => [hasPrepend && vue.createElementVNode("li", {
14626
14717
  "key": "prepend",
14627
14718
  "class": "v-breadcrumbs__prepend"
14628
14719
  }, [!slots.prepend ? vue.createVNode(VIcon, {
@@ -14643,7 +14734,7 @@
14643
14734
  item,
14644
14735
  raw
14645
14736
  } = _ref2;
14646
- return vue.createVNode(vue.Fragment, null, [slots.item?.({
14737
+ return vue.createElementVNode(vue.Fragment, null, [slots.item?.({
14647
14738
  item,
14648
14739
  index
14649
14740
  }) ?? vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
@@ -14682,9 +14773,9 @@
14682
14773
  variant: 'text'
14683
14774
  }
14684
14775
  });
14685
- useRender(() => vue.createVNode("div", {
14686
- "class": ['v-card-actions', props.class],
14687
- "style": props.style
14776
+ useRender(() => vue.createElementVNode("div", {
14777
+ "class": vue.normalizeClass(['v-card-actions', props.class]),
14778
+ "style": vue.normalizeStyle(props.style)
14688
14779
  }, [slots.default?.()]));
14689
14780
  return {};
14690
14781
  }
@@ -14703,10 +14794,10 @@
14703
14794
  slots
14704
14795
  } = _ref;
14705
14796
  useRender(() => vue.createVNode(props.tag, {
14706
- "class": ['v-card-subtitle', props.class],
14707
- "style": [{
14797
+ "class": vue.normalizeClass(['v-card-subtitle', props.class]),
14798
+ "style": vue.normalizeStyle([{
14708
14799
  '--v-card-subtitle-opacity': props.opacity
14709
- }, props.style]
14800
+ }, props.style])
14710
14801
  }, slots));
14711
14802
  return {};
14712
14803
  }
@@ -14745,13 +14836,13 @@
14745
14836
  const hasAppend = !!(hasAppendMedia || slots.append);
14746
14837
  const hasTitle = !!(props.title != null || slots.title);
14747
14838
  const hasSubtitle = !!(props.subtitle != null || slots.subtitle);
14748
- return vue.createVNode("div", {
14749
- "class": ['v-card-item', props.class],
14750
- "style": props.style
14751
- }, [hasPrepend && vue.createVNode("div", {
14839
+ return vue.createElementVNode("div", {
14840
+ "class": vue.normalizeClass(['v-card-item', props.class]),
14841
+ "style": vue.normalizeStyle(props.style)
14842
+ }, [hasPrepend && vue.createElementVNode("div", {
14752
14843
  "key": "prepend",
14753
14844
  "class": "v-card-item__prepend"
14754
- }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
14845
+ }, [!slots.prepend ? vue.createElementVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
14755
14846
  "key": "prepend-avatar",
14756
14847
  "density": props.density,
14757
14848
  "image": props.prependAvatar
@@ -14772,7 +14863,7 @@
14772
14863
  icon: props.prependIcon
14773
14864
  }
14774
14865
  }
14775
- }, slots.prepend)]), vue.createVNode("div", {
14866
+ }, slots.prepend)]), vue.createElementVNode("div", {
14776
14867
  "class": "v-card-item__content"
14777
14868
  }, [hasTitle && vue.createVNode(VCardTitle, {
14778
14869
  "key": "title"
@@ -14782,10 +14873,10 @@
14782
14873
  "key": "subtitle"
14783
14874
  }, {
14784
14875
  default: () => [slots.subtitle?.() ?? vue.toDisplayString(props.subtitle)]
14785
- }), slots.default?.()]), hasAppend && vue.createVNode("div", {
14876
+ }), slots.default?.()]), hasAppend && vue.createElementVNode("div", {
14786
14877
  "key": "append",
14787
14878
  "class": "v-card-item__append"
14788
- }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
14879
+ }, [!slots.append ? vue.createElementVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
14789
14880
  "key": "append-icon",
14790
14881
  "density": props.density,
14791
14882
  "icon": props.appendIcon
@@ -14825,10 +14916,10 @@
14825
14916
  slots
14826
14917
  } = _ref;
14827
14918
  useRender(() => vue.createVNode(props.tag, {
14828
- "class": ['v-card-text', props.class],
14829
- "style": [{
14919
+ "class": vue.normalizeClass(['v-card-text', props.class]),
14920
+ "style": vue.normalizeStyle([{
14830
14921
  '--v-card-text-opacity': props.opacity
14831
- }, props.style]
14922
+ }, props.style])
14832
14923
  }, slots));
14833
14924
  return {};
14834
14925
  }
@@ -14884,7 +14975,7 @@
14884
14975
  const VCard = genericComponent()({
14885
14976
  name: 'VCard',
14886
14977
  directives: {
14887
- Ripple
14978
+ vRipple: Ripple
14888
14979
  },
14889
14980
  props: makeVCardProps(),
14890
14981
  setup(props, _ref) {
@@ -14948,7 +15039,7 @@
14948
15039
  "onClick": isClickable && link.navigate,
14949
15040
  "tabindex": props.disabled ? -1 : undefined
14950
15041
  }, link.linkProps), {
14951
- default: () => [hasImage && vue.createVNode("div", {
15042
+ default: () => [hasImage && vue.createElementVNode("div", {
14952
15043
  "key": "image",
14953
15044
  "class": "v-card__image"
14954
15045
  }, [!slots.image ? vue.createVNode(VImg, {
@@ -14991,7 +15082,7 @@
14991
15082
  }), slots.default?.(), slots.actions && vue.createVNode(VCardActions, null, {
14992
15083
  default: slots.actions
14993
15084
  }), genOverlays(isClickable, 'v-card')]
14994
- }), [[vue.resolveDirective("ripple"), isClickable && props.ripple]]);
15085
+ }), [[Ripple, isClickable && props.ripple]]);
14995
15086
  });
14996
15087
  return {};
14997
15088
  }
@@ -15150,7 +15241,7 @@
15150
15241
  const VWindow = genericComponent()({
15151
15242
  name: 'VWindow',
15152
15243
  directives: {
15153
- Touch
15244
+ vTouch: Touch
15154
15245
  },
15155
15246
  props: makeVWindowProps(),
15156
15247
  emits: {
@@ -15222,7 +15313,7 @@
15222
15313
  };
15223
15314
  arrows.push(canMoveBack.value ? slots.prev ? slots.prev({
15224
15315
  props: prevProps
15225
- }) : vue.createVNode(VBtn, prevProps, null) : vue.createVNode("div", null, null));
15316
+ }) : vue.createVNode(VBtn, prevProps, null) : vue.createElementVNode("div", null, null));
15226
15317
  const nextProps = {
15227
15318
  icon: isRtl.value ? props.prevIcon : props.nextIcon,
15228
15319
  class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,
@@ -15231,7 +15322,7 @@
15231
15322
  };
15232
15323
  arrows.push(canMoveForward.value ? slots.next ? slots.next({
15233
15324
  props: nextProps
15234
- }) : vue.createVNode(VBtn, nextProps, null) : vue.createVNode("div", null, null));
15325
+ }) : vue.createVNode(VBtn, nextProps, null) : vue.createElementVNode("div", null, null));
15235
15326
  return arrows;
15236
15327
  });
15237
15328
  const touchOptions = vue.computed(() => {
@@ -15257,24 +15348,24 @@
15257
15348
  });
15258
15349
  useRender(() => vue.withDirectives(vue.createVNode(props.tag, {
15259
15350
  "ref": rootRef,
15260
- "class": ['v-window', {
15351
+ "class": vue.normalizeClass(['v-window', {
15261
15352
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
15262
- }, themeClasses.value, props.class],
15263
- "style": props.style
15353
+ }, themeClasses.value, props.class]),
15354
+ "style": vue.normalizeStyle(props.style)
15264
15355
  }, {
15265
- default: () => [vue.createVNode("div", {
15356
+ default: () => [vue.createElementVNode("div", {
15266
15357
  "class": "v-window__container",
15267
15358
  "style": {
15268
15359
  height: transitionHeight.value
15269
15360
  }
15270
15361
  }, [slots.default?.({
15271
15362
  group
15272
- }), props.showArrows !== false && vue.createVNode("div", {
15363
+ }), props.showArrows !== false && vue.createElementVNode("div", {
15273
15364
  "class": "v-window__controls"
15274
15365
  }, [arrows.value])]), slots.additional?.({
15275
15366
  group
15276
15367
  })]
15277
- }), [[vue.resolveDirective("touch"), touchOptions.value]]));
15368
+ }), [[Touch, touchOptions.value]]));
15278
15369
  return {
15279
15370
  group
15280
15371
  };
@@ -15359,7 +15450,7 @@
15359
15450
  let {
15360
15451
  group
15361
15452
  } = _ref2;
15362
- return vue.createVNode(vue.Fragment, null, [!props.hideDelimiters && vue.createVNode("div", {
15453
+ return vue.createElementVNode(vue.Fragment, null, [!props.hideDelimiters && vue.createElementVNode("div", {
15363
15454
  "class": "v-carousel__controls",
15364
15455
  "style": {
15365
15456
  left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',
@@ -15418,7 +15509,7 @@
15418
15509
  const VWindowItem = genericComponent()({
15419
15510
  name: 'VWindowItem',
15420
15511
  directives: {
15421
- Touch
15512
+ vTouch: Touch
15422
15513
  },
15423
15514
  props: makeVWindowItemProps(),
15424
15515
  emits: {
@@ -15502,9 +15593,9 @@
15502
15593
  "transition": transition.value,
15503
15594
  "disabled": !isBooted.value
15504
15595
  }, {
15505
- default: () => [vue.withDirectives(vue.createVNode("div", {
15506
- "class": ['v-window-item', groupItem.selectedClass.value, props.class],
15507
- "style": props.style
15596
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
15597
+ "class": vue.normalizeClass(['v-window-item', groupItem.selectedClass.value, props.class]),
15598
+ "style": vue.normalizeStyle(props.style)
15508
15599
  }, [hasContent.value && slots.default?.()]), [[vue.vShow, groupItem.isSelected.value]])]
15509
15600
  }));
15510
15601
  return {
@@ -15704,21 +15795,21 @@
15704
15795
  immediate: true
15705
15796
  });
15706
15797
  vue.onMounted(() => updateCanvas());
15707
- useRender(() => vue.createVNode("div", {
15798
+ useRender(() => vue.createElementVNode("div", {
15708
15799
  "ref": resizeRef,
15709
- "class": ['v-color-picker-canvas', props.class],
15710
- "style": props.style,
15800
+ "class": vue.normalizeClass(['v-color-picker-canvas', props.class]),
15801
+ "style": vue.normalizeStyle(props.style),
15711
15802
  "onMousedown": handleMouseDown,
15712
15803
  "onTouchstartPassive": handleMouseDown
15713
- }, [vue.createVNode("canvas", {
15804
+ }, [vue.createElementVNode("canvas", {
15714
15805
  "ref": canvasRef,
15715
15806
  "width": canvasWidth.value,
15716
15807
  "height": canvasHeight.value
15717
- }, null), props.color && vue.createVNode("div", {
15718
- "class": ['v-color-picker-canvas__dot', {
15808
+ }, null), props.color && vue.createElementVNode("div", {
15809
+ "class": vue.normalizeClass(['v-color-picker-canvas__dot', {
15719
15810
  'v-color-picker-canvas__dot--disabled': props.disabled
15720
- }],
15721
- "style": dotStyles.value
15811
+ }]),
15812
+ "style": vue.normalizeStyle(dotStyles.value)
15722
15813
  }, null)]));
15723
15814
  return {};
15724
15815
  }
@@ -15918,9 +16009,9 @@
15918
16009
  label,
15919
16010
  ...rest
15920
16011
  } = _ref;
15921
- return vue.createVNode("div", {
16012
+ return vue.createElementVNode("div", {
15922
16013
  "class": "v-color-picker-edit__input"
15923
- }, [vue.createVNode("input", rest, null), vue.createVNode("span", null, [label])]);
16014
+ }, [vue.createElementVNode("input", vue.normalizeProps(vue.guardReactiveProps(rest)), null), vue.createElementVNode("span", null, [label])]);
15924
16015
  };
15925
16016
  const makeVColorPickerEditProps = propsFactory({
15926
16017
  color: Object,
@@ -15977,9 +16068,9 @@
15977
16068
  };
15978
16069
  });
15979
16070
  });
15980
- useRender(() => vue.createVNode("div", {
15981
- "class": ['v-color-picker-edit', props.class],
15982
- "style": props.style
16071
+ useRender(() => vue.createElementVNode("div", {
16072
+ "class": vue.normalizeClass(['v-color-picker-edit', props.class]),
16073
+ "style": vue.normalizeStyle(props.style)
15983
16074
  }, [inputs.value?.map(props => vue.createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && vue.createVNode(VBtn, {
15984
16075
  "icon": "$unfold",
15985
16076
  "size": "x-small",
@@ -16084,7 +16175,10 @@
16084
16175
  if (step.value <= 0) return value;
16085
16176
  const clamped = clamp(value, min.value, max.value);
16086
16177
  const offset = min.value % step.value;
16087
- const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
16178
+ let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
16179
+ if (clamped > newValue && newValue + step.value > max.value) {
16180
+ newValue = max.value;
16181
+ }
16088
16182
  return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
16089
16183
  }
16090
16184
  return {
@@ -16143,7 +16237,7 @@
16143
16237
  const clickOffset = getPosition(e, position);
16144
16238
 
16145
16239
  // It is possible for left to be NaN, force to number
16146
- let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
16240
+ let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0;
16147
16241
  if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
16148
16242
  return roundValue(min.value + clickPos * (max.value - min.value));
16149
16243
  }
@@ -16322,7 +16416,7 @@
16322
16416
  const VSliderThumb = genericComponent()({
16323
16417
  name: 'VSliderThumb',
16324
16418
  directives: {
16325
- Ripple
16419
+ vRipple: Ripple
16326
16420
  },
16327
16421
  props: makeVSliderThumbProps(),
16328
16422
  emits: {
@@ -16340,6 +16434,8 @@
16340
16434
  } = useRtl();
16341
16435
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
16342
16436
  const {
16437
+ min,
16438
+ max,
16343
16439
  thumbColor,
16344
16440
  step,
16345
16441
  disabled,
@@ -16380,16 +16476,20 @@
16380
16476
  if (!relevantKeys.includes(e.key)) return;
16381
16477
  e.preventDefault();
16382
16478
  const _step = step.value || 0.1;
16383
- const steps = (props.max - props.min) / _step;
16479
+ const steps = (max.value - min.value) / _step;
16384
16480
  if ([left, right, down, up].includes(e.key)) {
16385
16481
  const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
16386
16482
  const direction = increase.includes(e.key) ? 1 : -1;
16387
16483
  const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
16388
- value = value + direction * _step * multipliers.value[multiplier];
16484
+ if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
16485
+ value = value - steps % 1 * _step;
16486
+ } else {
16487
+ value = value + direction * _step * multipliers.value[multiplier];
16488
+ }
16389
16489
  } else if (e.key === home) {
16390
- value = props.min;
16490
+ value = min.value;
16391
16491
  } else if (e.key === end) {
16392
- value = props.max;
16492
+ value = max.value;
16393
16493
  } else {
16394
16494
  const direction = e.key === pagedown ? 1 : -1;
16395
16495
  value = value - direction * _step * (steps > 100 ? steps / 10 : 10);
@@ -16402,43 +16502,43 @@
16402
16502
  }
16403
16503
  useRender(() => {
16404
16504
  const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');
16405
- return vue.createVNode("div", {
16406
- "class": ['v-slider-thumb', {
16505
+ return vue.createElementVNode("div", {
16506
+ "class": vue.normalizeClass(['v-slider-thumb', {
16407
16507
  'v-slider-thumb--focused': props.focused,
16408
16508
  'v-slider-thumb--pressed': props.focused && mousePressed.value
16409
- }, props.class, rtlClasses.value],
16410
- "style": [{
16509
+ }, props.class, rtlClasses.value]),
16510
+ "style": vue.normalizeStyle([{
16411
16511
  '--v-slider-thumb-position': positionPercentage,
16412
16512
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
16413
- }, props.style],
16513
+ }, props.style]),
16414
16514
  "role": "slider",
16415
16515
  "tabindex": disabled.value ? -1 : 0,
16416
16516
  "aria-label": props.name,
16417
- "aria-valuemin": props.min,
16418
- "aria-valuemax": props.max,
16517
+ "aria-valuemin": min.value,
16518
+ "aria-valuemax": max.value,
16419
16519
  "aria-valuenow": props.modelValue,
16420
16520
  "aria-readonly": !!readonly.value,
16421
16521
  "aria-orientation": direction.value,
16422
16522
  "onKeydown": !readonly.value ? onKeydown : undefined
16423
- }, [vue.createVNode("div", {
16424
- "class": ['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value],
16523
+ }, [vue.createElementVNode("div", {
16524
+ "class": vue.normalizeClass(['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value]),
16425
16525
  "style": {
16426
16526
  ...textColorStyles.value
16427
16527
  }
16428
- }, null), vue.withDirectives(vue.createVNode("div", {
16429
- "class": ['v-slider-thumb__ripple', textColorClasses.value],
16430
- "style": textColorStyles.value
16431
- }, null), [[vue.resolveDirective("ripple"), props.ripple, null, {
16528
+ }, null), vue.withDirectives(vue.createElementVNode("div", {
16529
+ "class": vue.normalizeClass(['v-slider-thumb__ripple', textColorClasses.value]),
16530
+ "style": vue.normalizeStyle(textColorStyles.value)
16531
+ }, null), [[Ripple, props.ripple, null, {
16432
16532
  circle: true,
16433
16533
  center: true
16434
16534
  }]]), vue.createVNode(VScaleTransition, {
16435
16535
  "origin": "bottom center"
16436
16536
  }, {
16437
- default: () => [vue.withDirectives(vue.createVNode("div", {
16537
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
16438
16538
  "class": "v-slider-thumb__label-container"
16439
- }, [vue.createVNode("div", {
16440
- "class": ['v-slider-thumb__label']
16441
- }, [vue.createVNode("div", null, [slots['thumb-label']?.({
16539
+ }, [vue.createElementVNode("div", {
16540
+ "class": vue.normalizeClass(['v-slider-thumb__label'])
16541
+ }, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
16442
16542
  modelValue: props.modelValue
16443
16543
  }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
16444
16544
  })]);
@@ -16515,17 +16615,17 @@
16515
16615
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
16516
16616
  return ticks.map((tick, index) => {
16517
16617
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
16518
- return vue.createVNode("div", {
16618
+ return vue.createElementVNode("div", {
16519
16619
  "key": tick.value,
16520
- "class": ['v-slider-track__tick', {
16620
+ "class": vue.normalizeClass(['v-slider-track__tick', {
16521
16621
  'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,
16522
16622
  'v-slider-track__tick--first': tick.value === min.value,
16523
16623
  'v-slider-track__tick--last': tick.value === max.value
16524
- }],
16624
+ }]),
16525
16625
  "style": {
16526
16626
  [startDir.value]: directionValue
16527
16627
  }
16528
- }, [(tick.label || slots['tick-label']) && vue.createVNode("div", {
16628
+ }, [(tick.label || slots['tick-label']) && vue.createElementVNode("div", {
16529
16629
  "class": "v-slider-track__tick-label"
16530
16630
  }, [slots['tick-label']?.({
16531
16631
  tick,
@@ -16534,30 +16634,30 @@
16534
16634
  });
16535
16635
  });
16536
16636
  useRender(() => {
16537
- return vue.createVNode("div", {
16538
- "class": ['v-slider-track', roundedClasses.value, props.class],
16539
- "style": [{
16637
+ return vue.createElementVNode("div", {
16638
+ "class": vue.normalizeClass(['v-slider-track', roundedClasses.value, props.class]),
16639
+ "style": vue.normalizeStyle([{
16540
16640
  '--v-slider-track-size': convertToUnit(trackSize.value),
16541
16641
  '--v-slider-tick-size': convertToUnit(tickSize.value)
16542
- }, props.style]
16543
- }, [vue.createVNode("div", {
16544
- "class": ['v-slider-track__background', trackColorClasses.value, {
16642
+ }, props.style])
16643
+ }, [vue.createElementVNode("div", {
16644
+ "class": vue.normalizeClass(['v-slider-track__background', trackColorClasses.value, {
16545
16645
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
16546
- }],
16646
+ }]),
16547
16647
  "style": {
16548
16648
  ...backgroundStyles.value,
16549
16649
  ...trackColorStyles.value
16550
16650
  }
16551
- }, null), vue.createVNode("div", {
16552
- "class": ['v-slider-track__fill', trackFillColorClasses.value],
16651
+ }, null), vue.createElementVNode("div", {
16652
+ "class": vue.normalizeClass(['v-slider-track__fill', trackFillColorClasses.value]),
16553
16653
  "style": {
16554
16654
  ...trackFillStyles.value,
16555
16655
  ...trackFillColorStyles.value
16556
16656
  }
16557
- }, null), showTicks.value && vue.createVNode("div", {
16558
- "class": ['v-slider-track__ticks', {
16657
+ }, null), showTicks.value && vue.createElementVNode("div", {
16658
+ "class": vue.normalizeClass(['v-slider-track__ticks', {
16559
16659
  'v-slider-track__ticks--always-show': showTicks.value === 'always'
16560
- }]
16660
+ }])
16561
16661
  }, [computedTicks.value])]);
16562
16662
  });
16563
16663
  return {};
@@ -16651,7 +16751,7 @@
16651
16751
  "focused": isFocused.value
16652
16752
  }), {
16653
16753
  ...slots,
16654
- prepend: hasPrepend ? slotProps => vue.createVNode(vue.Fragment, null, [slots.label?.(slotProps) ?? (props.label ? vue.createVNode(VLabel, {
16754
+ prepend: hasPrepend ? slotProps => vue.createElementVNode(vue.Fragment, null, [slots.label?.(slotProps) ?? (props.label ? vue.createVNode(VLabel, {
16655
16755
  "id": slotProps.id.value,
16656
16756
  "class": "v-slider__label",
16657
16757
  "text": props.label
@@ -16661,11 +16761,11 @@
16661
16761
  id,
16662
16762
  messagesId
16663
16763
  } = _ref4;
16664
- return vue.createVNode("div", {
16764
+ return vue.createElementVNode("div", {
16665
16765
  "class": "v-slider__container",
16666
16766
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
16667
16767
  "onTouchstartPassive": !readonly.value ? onSliderTouchstart : undefined
16668
- }, [vue.createVNode("input", {
16768
+ }, [vue.createElementVNode("input", {
16669
16769
  "id": id.value,
16670
16770
  "name": props.name || id.value,
16671
16771
  "disabled": !!props.disabled,
@@ -16738,12 +16838,12 @@
16738
16838
  });
16739
16839
  } catch (e) {}
16740
16840
  }
16741
- useRender(() => vue.createVNode("div", {
16742
- "class": ['v-color-picker-preview', {
16841
+ useRender(() => vue.createElementVNode("div", {
16842
+ "class": vue.normalizeClass(['v-color-picker-preview', {
16743
16843
  'v-color-picker-preview--hide-alpha': props.hideAlpha
16744
- }, props.class],
16745
- "style": props.style
16746
- }, [SUPPORTS_EYE_DROPPER && vue.createVNode("div", {
16844
+ }, props.class]),
16845
+ "style": vue.normalizeStyle(props.style)
16846
+ }, [SUPPORTS_EYE_DROPPER && vue.createElementVNode("div", {
16747
16847
  "class": "v-color-picker-preview__eye-dropper",
16748
16848
  "key": "eyeDropper"
16749
16849
  }, [vue.createVNode(VBtn, {
@@ -16752,13 +16852,13 @@
16752
16852
  "icon": "$eyeDropper",
16753
16853
  "variant": "plain",
16754
16854
  "onClick": openEyeDropper
16755
- }, null)]), vue.createVNode("div", {
16855
+ }, null)]), vue.createElementVNode("div", {
16756
16856
  "class": "v-color-picker-preview__dot"
16757
- }, [vue.createVNode("div", {
16857
+ }, [vue.createElementVNode("div", {
16758
16858
  "style": {
16759
16859
  background: HSVtoCSS(props.color ?? nullColor)
16760
16860
  }
16761
- }, null)]), vue.createVNode("div", {
16861
+ }, null)]), vue.createElementVNode("div", {
16762
16862
  "class": "v-color-picker-preview__sliders"
16763
16863
  }, [vue.createVNode(VSlider, {
16764
16864
  "class": "v-color-picker-preview__track v-color-picker-preview__hue",
@@ -17143,21 +17243,21 @@
17143
17243
  let {
17144
17244
  emit
17145
17245
  } = _ref;
17146
- useRender(() => vue.createVNode("div", {
17147
- "class": ['v-color-picker-swatches', props.class],
17148
- "style": [{
17246
+ useRender(() => vue.createElementVNode("div", {
17247
+ "class": vue.normalizeClass(['v-color-picker-swatches', props.class]),
17248
+ "style": vue.normalizeStyle([{
17149
17249
  maxHeight: convertToUnit(props.maxHeight)
17150
- }, props.style]
17151
- }, [vue.createVNode("div", null, [props.swatches.map(swatch => vue.createVNode("div", {
17250
+ }, props.style])
17251
+ }, [vue.createElementVNode("div", null, [props.swatches.map(swatch => vue.createElementVNode("div", {
17152
17252
  "class": "v-color-picker-swatches__swatch"
17153
17253
  }, [swatch.map(color => {
17154
17254
  const rgba = parseColor(color);
17155
17255
  const hsva = RGBtoHSV(rgba);
17156
17256
  const background = RGBtoCSS(rgba);
17157
- return vue.createVNode("div", {
17257
+ return vue.createElementVNode("div", {
17158
17258
  "class": "v-color-picker-swatches__color",
17159
17259
  "onClick": () => hsva && emit('update:color', hsva)
17160
- }, [vue.createVNode("div", {
17260
+ }, [vue.createElementVNode("div", {
17161
17261
  "style": {
17162
17262
  background
17163
17263
  }
@@ -17219,8 +17319,8 @@
17219
17319
  roundedClasses
17220
17320
  } = useRounded(props);
17221
17321
  useRender(() => vue.createVNode(props.tag, {
17222
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
17223
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
17322
+ "class": vue.normalizeClass(['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),
17323
+ "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style])
17224
17324
  }, slots));
17225
17325
  return {};
17226
17326
  }
@@ -17259,17 +17359,17 @@
17259
17359
  }, props.class],
17260
17360
  "style": props.style
17261
17361
  }), {
17262
- default: () => [!props.hideHeader && vue.createVNode("div", {
17362
+ default: () => [!props.hideHeader && vue.createElementVNode("div", {
17263
17363
  "key": "header",
17264
- "class": [backgroundColorClasses.value],
17265
- "style": [backgroundColorStyles.value]
17364
+ "class": vue.normalizeClass([backgroundColorClasses.value]),
17365
+ "style": vue.normalizeStyle([backgroundColorStyles.value])
17266
17366
  }, [hasTitle && vue.createVNode(VPickerTitle, {
17267
17367
  "key": "picker-title"
17268
17368
  }, {
17269
17369
  default: () => [slots.title?.() ?? props.title]
17270
- }), slots.header && vue.createVNode("div", {
17370
+ }), slots.header && vue.createElementVNode("div", {
17271
17371
  "class": "v-picker__header"
17272
- }, [slots.header()])]), vue.createVNode("div", {
17372
+ }, [slots.header()])]), vue.createElementVNode("div", {
17273
17373
  "class": "v-picker__body"
17274
17374
  }, [slots.default?.()]), slots.actions && vue.createVNode(VDefaultsProvider, {
17275
17375
  "defaults": {
@@ -17279,7 +17379,7 @@
17279
17379
  }
17280
17380
  }
17281
17381
  }, {
17282
- default: () => [vue.createVNode("div", {
17382
+ default: () => [vue.createElementVNode("div", {
17283
17383
  "class": "v-picker__actions"
17284
17384
  }, [slots.actions()])]
17285
17385
  })]
@@ -18019,7 +18119,20 @@
18019
18119
  vue.watch(locale.current, value => {
18020
18120
  instance.locale = options.locale[value] ?? value ?? instance.locale;
18021
18121
  });
18022
- return instance;
18122
+ return Object.assign(instance, {
18123
+ createDateRange(start, stop) {
18124
+ const diff = instance.getDiff(stop ?? start, start, 'days');
18125
+ const datesInRange = [start];
18126
+ for (let i = 1; i < diff; i++) {
18127
+ const nextDate = instance.addDays(start, i);
18128
+ datesInRange.push(nextDate);
18129
+ }
18130
+ if (stop) {
18131
+ datesInRange.push(instance.endOfDay(stop));
18132
+ }
18133
+ return datesInRange;
18134
+ }
18135
+ });
18023
18136
  }
18024
18137
  function useDate() {
18025
18138
  const options = vue.inject(DateOptionsSymbol);
@@ -18141,7 +18254,7 @@
18141
18254
  }, props.style]
18142
18255
  }), {
18143
18256
  ...slots,
18144
- default: () => vue.createVNode(vue.Fragment, null, [!props.hideCanvas && vue.createVNode(VColorPickerCanvas, {
18257
+ default: () => vue.createElementVNode(vue.Fragment, null, [!props.hideCanvas && vue.createVNode(VColorPickerCanvas, {
18145
18258
  "key": "canvas",
18146
18259
  "color": currentColor.value,
18147
18260
  "onUpdate:color": updateColor,
@@ -18149,7 +18262,7 @@
18149
18262
  "dotSize": props.dotSize,
18150
18263
  "width": props.width,
18151
18264
  "height": props.canvasHeight
18152
- }, null), (!props.hideSliders || !props.hideInputs) && vue.createVNode("div", {
18265
+ }, null), (!props.hideSliders || !props.hideInputs) && vue.createElementVNode("div", {
18153
18266
  "key": "controls",
18154
18267
  "class": "v-color-picker__controls"
18155
18268
  }, [!props.hideSliders && vue.createVNode(VColorPickerPreview, {
@@ -18524,7 +18637,7 @@
18524
18637
  "onKeydown": onKeydown
18525
18638
  }), {
18526
18639
  ...slots,
18527
- default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
18640
+ default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
18528
18641
  "ref": vMenuRef,
18529
18642
  "modelValue": menu.value,
18530
18643
  "onUpdate:modelValue": $event => menu.value = $event,
@@ -18583,7 +18696,7 @@
18583
18696
  let {
18584
18697
  isSelected
18585
18698
  } = _ref5;
18586
- return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
18699
+ return vue.createElementVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
18587
18700
  "key": item.value,
18588
18701
  "modelValue": isSelected,
18589
18702
  "ripple": false,
@@ -18632,10 +18745,10 @@
18632
18745
  index
18633
18746
  })) : undefined;
18634
18747
  if (hasSlot && !slotContent) return undefined;
18635
- return vue.createVNode("div", {
18748
+ return vue.createElementVNode("div", {
18636
18749
  "key": item.value,
18637
- "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
18638
- "style": index === selectionIndex.value ? textColorStyles.value : {}
18750
+ "class": vue.normalizeClass(['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]]),
18751
+ "style": vue.normalizeStyle(index === selectionIndex.value ? textColorStyles.value : {})
18639
18752
  }, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
18640
18753
  "key": "chip",
18641
18754
  "closable": props.closableChips,
@@ -18653,9 +18766,9 @@
18653
18766
  }
18654
18767
  }, {
18655
18768
  default: () => [slotContent]
18656
- }) : slotContent ?? vue.createVNode("span", {
18769
+ }) : slotContent ?? vue.createElementVNode("span", {
18657
18770
  "class": "v-combobox__selection-text"
18658
- }, [item.title, props.multiple && index < model.value.length - 1 && vue.createVNode("span", {
18771
+ }, [item.title, props.multiple && index < model.value.length - 1 && vue.createElementVNode("span", {
18659
18772
  "class": "v-combobox__selection-comma"
18660
18773
  }, [vue.createTextVNode(",")])])]);
18661
18774
  })]),
@@ -18663,7 +18776,7 @@
18663
18776
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18664
18777
  args[_key] = arguments[_key];
18665
18778
  }
18666
- return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
18779
+ return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
18667
18780
  "class": "v-combobox__menu-icon",
18668
18781
  "color": vTextFieldRef.value?.fieldIconColor,
18669
18782
  "icon": props.menuIcon,
@@ -18751,7 +18864,7 @@
18751
18864
  emit('cancel');
18752
18865
  }
18753
18866
  function actions(actionsProps) {
18754
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, vue.mergeProps({
18867
+ return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VBtn, vue.mergeProps({
18755
18868
  "disabled": isCancelDisabled.value,
18756
18869
  "variant": "text",
18757
18870
  "color": props.color,
@@ -18767,7 +18880,7 @@
18767
18880
  }
18768
18881
  let actionsUsed = false;
18769
18882
  useRender(() => {
18770
- return vue.createVNode(vue.Fragment, null, [slots.default?.({
18883
+ return vue.createElementVNode(vue.Fragment, null, [slots.default?.({
18771
18884
  model: internalModel,
18772
18885
  save,
18773
18886
  cancel,
@@ -19650,10 +19763,10 @@
19650
19763
  groupedItems: paginatedItems.value
19651
19764
  }));
19652
19765
  useRender(() => vue.createVNode(props.tag, {
19653
- "class": ['v-data-iterator', {
19766
+ "class": vue.normalizeClass(['v-data-iterator', {
19654
19767
  'v-data-iterator--loading': props.loading
19655
- }, props.class],
19656
- "style": props.style
19768
+ }, props.class]),
19769
+ "style": vue.normalizeStyle(props.style)
19657
19770
  }, {
19658
19771
  default: () => [slots.header?.(slotProps.value), vue.createVNode(MaybeTransition, {
19659
19772
  "transition": props.transition
@@ -19664,7 +19777,7 @@
19664
19777
  "active": true
19665
19778
  }, {
19666
19779
  default: slotProps => slots.loader?.(slotProps)
19667
- }) : vue.createVNode("div", {
19780
+ }) : vue.createElementVNode("div", {
19668
19781
  "key": "items"
19669
19782
  }, [!paginatedItems.value.length ? slots['no-data']?.() : slots.default?.(slotProps.value)])]
19670
19783
  }), slots.footer?.(slotProps.value)]
@@ -19958,44 +20071,44 @@
19958
20071
  }
19959
20072
  useRender(() => vue.createVNode(props.tag, {
19960
20073
  "ref": resizeRef,
19961
- "class": ['v-pagination', themeClasses.value, props.class],
19962
- "style": props.style,
20074
+ "class": vue.normalizeClass(['v-pagination', themeClasses.value, props.class]),
20075
+ "style": vue.normalizeStyle(props.style),
19963
20076
  "role": "navigation",
19964
20077
  "aria-label": t(props.ariaLabel),
19965
20078
  "onKeydown": onKeydown,
19966
20079
  "data-test": "v-pagination-root"
19967
20080
  }, {
19968
- default: () => [vue.createVNode("ul", {
20081
+ default: () => [vue.createElementVNode("ul", {
19969
20082
  "class": "v-pagination__list"
19970
- }, [props.showFirstLastPage && vue.createVNode("li", {
20083
+ }, [props.showFirstLastPage && vue.createElementVNode("li", {
19971
20084
  "key": "first",
19972
20085
  "class": "v-pagination__first",
19973
20086
  "data-test": "v-pagination-first"
19974
20087
  }, [slots.first ? slots.first(controls.value.first) : vue.createVNode(VBtn, vue.mergeProps({
19975
20088
  "_as": "VPaginationBtn"
19976
- }, controls.value.first), null)]), vue.createVNode("li", {
20089
+ }, controls.value.first), null)]), vue.createElementVNode("li", {
19977
20090
  "key": "prev",
19978
20091
  "class": "v-pagination__prev",
19979
20092
  "data-test": "v-pagination-prev"
19980
20093
  }, [slots.prev ? slots.prev(controls.value.prev) : vue.createVNode(VBtn, vue.mergeProps({
19981
20094
  "_as": "VPaginationBtn"
19982
- }, controls.value.prev), null)]), items.value.map((item, index) => vue.createVNode("li", {
20095
+ }, controls.value.prev), null)]), items.value.map((item, index) => vue.createElementVNode("li", {
19983
20096
  "key": item.key,
19984
- "class": ['v-pagination__item', {
20097
+ "class": vue.normalizeClass(['v-pagination__item', {
19985
20098
  'v-pagination__item--is-active': item.isActive
19986
- }],
20099
+ }]),
19987
20100
  "data-test": "v-pagination-item"
19988
20101
  }, [slots.item ? slots.item(item) : vue.createVNode(VBtn, vue.mergeProps({
19989
20102
  "_as": "VPaginationBtn"
19990
20103
  }, item.props), {
19991
20104
  default: () => [item.page]
19992
- })])), vue.createVNode("li", {
20105
+ })])), vue.createElementVNode("li", {
19993
20106
  "key": "next",
19994
20107
  "class": "v-pagination__next",
19995
20108
  "data-test": "v-pagination-next"
19996
20109
  }, [slots.next ? slots.next(controls.value.next) : vue.createVNode(VBtn, vue.mergeProps({
19997
20110
  "_as": "VPaginationBtn"
19998
- }, controls.value.next), null)]), props.showFirstLastPage && vue.createVNode("li", {
20111
+ }, controls.value.next), null)]), props.showFirstLastPage && vue.createElementVNode("li", {
19999
20112
  "key": "last",
20000
20113
  "class": "v-pagination__last",
20001
20114
  "data-test": "v-pagination-last"
@@ -20104,20 +20217,20 @@
20104
20217
  }));
20105
20218
  useRender(() => {
20106
20219
  const paginationProps = VPagination.filterProps(props);
20107
- return vue.createVNode("div", {
20220
+ return vue.createElementVNode("div", {
20108
20221
  "class": "v-data-table-footer"
20109
- }, [slots.prepend?.(), vue.createVNode("div", {
20222
+ }, [slots.prepend?.(), vue.createElementVNode("div", {
20110
20223
  "class": "v-data-table-footer__items-per-page"
20111
- }, [vue.createVNode("span", null, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
20224
+ }, [vue.createElementVNode("span", null, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
20112
20225
  "items": itemsPerPageOptions.value,
20113
20226
  "modelValue": itemsPerPage.value,
20114
20227
  "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
20115
20228
  "density": "compact",
20116
20229
  "variant": "outlined",
20117
20230
  "hide-details": true
20118
- }, null)]), vue.createVNode("div", {
20231
+ }, null)]), vue.createElementVNode("div", {
20119
20232
  "class": "v-data-table-footer__info"
20120
- }, [vue.createVNode("div", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), vue.createVNode("div", {
20233
+ }, [vue.createElementVNode("div", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), vue.createElementVNode("div", {
20121
20234
  "class": "v-data-table-footer__pagination"
20122
20235
  }, [vue.createVNode(VPagination, vue.mergeProps({
20123
20236
  "modelValue": page.value,
@@ -20160,12 +20273,12 @@
20160
20273
  } = _ref;
20161
20274
  const Tag = props.tag ?? 'td';
20162
20275
  return vue.createVNode(Tag, {
20163
- "class": ['v-data-table__td', {
20276
+ "class": vue.normalizeClass(['v-data-table__td', {
20164
20277
  'v-data-table-column--fixed': props.fixed,
20165
20278
  'v-data-table-column--last-fixed': props.lastFixed,
20166
20279
  'v-data-table-column--no-padding': props.noPadding,
20167
20280
  'v-data-table-column--nowrap': props.nowrap
20168
- }, `v-data-table-column--align-${props.align}`],
20281
+ }, `v-data-table-column--align-${props.align}`]),
20169
20282
  "style": {
20170
20283
  height: convertToUnit(props.height),
20171
20284
  width: convertToUnit(props.width),
@@ -20581,16 +20694,16 @@
20581
20694
  "onUpdate:modelValue": selectAll
20582
20695
  }, null));
20583
20696
  }
20584
- return vue.createVNode("div", {
20697
+ return vue.createElementVNode("div", {
20585
20698
  "class": "v-data-table-header__content"
20586
- }, [vue.createVNode("span", null, [column.title]), column.sortable && !props.disableSort && vue.createVNode(VIcon, {
20699
+ }, [vue.createElementVNode("span", null, [column.title]), column.sortable && !props.disableSort && vue.createVNode(VIcon, {
20587
20700
  "key": "icon",
20588
20701
  "class": "v-data-table-header__sort-icon",
20589
20702
  "icon": getSortIcon(column)
20590
- }, null), props.multiSort && isSorted(column) && vue.createVNode("div", {
20703
+ }, null), props.multiSort && isSorted(column) && vue.createElementVNode("div", {
20591
20704
  "key": "badge",
20592
- "class": ['v-data-table-header__sort-badge', ...backgroundColorClasses.value],
20593
- "style": backgroundColorStyles.value
20705
+ "class": vue.normalizeClass(['v-data-table-header__sort-badge', ...backgroundColorClasses.value]),
20706
+ "style": vue.normalizeStyle(backgroundColorStyles.value)
20594
20707
  }, [sortBy.value.findIndex(x => x.key === column.key) + 1])]);
20595
20708
  }
20596
20709
  });
@@ -20609,7 +20722,7 @@
20609
20722
  "class": [...headerCellClasses.value],
20610
20723
  "colspan": headers.value.length + 1
20611
20724
  }, props.headerProps), {
20612
- default: () => [vue.createVNode("div", {
20725
+ default: () => [vue.createElementVNode("div", {
20613
20726
  "class": "v-data-table-header__content"
20614
20727
  }, [vue.createVNode(VSelect, {
20615
20728
  "chips": true,
@@ -20633,7 +20746,7 @@
20633
20746
  }
20634
20747
  }, {
20635
20748
  default: () => [props.item.title, vue.createVNode(VIcon, {
20636
- "class": ['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active'],
20749
+ "class": vue.normalizeClass(['v-data-table__td-sort-icon', isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active']),
20637
20750
  "icon": getSortIcon(props.item.raw),
20638
20751
  "size": "small"
20639
20752
  }, null)]
@@ -20642,13 +20755,13 @@
20642
20755
  });
20643
20756
  };
20644
20757
  useRender(() => {
20645
- return mobile.value ? vue.createVNode("tr", null, [vue.createVNode(VDataTableMobileHeaderCell, null, null)]) : vue.createVNode(vue.Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => vue.createVNode("tr", null, [row.map((column, x) => vue.createVNode(VDataTableHeaderCell, {
20758
+ return mobile.value ? vue.createElementVNode("tr", null, [vue.createVNode(VDataTableMobileHeaderCell, null, null)]) : vue.createElementVNode(vue.Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => vue.createElementVNode("tr", null, [row.map((column, x) => vue.createVNode(VDataTableHeaderCell, {
20646
20759
  "column": column,
20647
20760
  "x": x,
20648
20761
  "y": y
20649
- }, null))])), props.loading && vue.createVNode("tr", {
20762
+ }, null))])), props.loading && vue.createElementVNode("tr", {
20650
20763
  "class": "v-data-table-progress"
20651
- }, [vue.createVNode("th", {
20764
+ }, [vue.createElementVNode("th", {
20652
20765
  "colspan": columns.value.length
20653
20766
  }, [vue.createVNode(LoaderSlot, {
20654
20767
  "name": "v-data-table-progress",
@@ -20694,7 +20807,7 @@
20694
20807
  const rows = vue.computed(() => {
20695
20808
  return extractRows([props.item]);
20696
20809
  });
20697
- return () => vue.createVNode("tr", {
20810
+ return () => vue.createElementVNode("tr", {
20698
20811
  "class": "v-data-table-group-header-row",
20699
20812
  "style": {
20700
20813
  '--v-data-table-group-header-row-depth': props.item.depth
@@ -20718,7 +20831,7 @@
20718
20831
  "variant": "text",
20719
20832
  "icon": icon,
20720
20833
  "onClick": onClick
20721
- }, null), vue.createVNode("span", null, [props.item.value]), vue.createVNode("span", null, [vue.createTextVNode("("), rows.value.length, vue.createTextVNode(")")])]
20834
+ }, null), vue.createElementVNode("span", null, [props.item.value]), vue.createElementVNode("span", null, [vue.createTextVNode("("), rows.value.length, vue.createTextVNode(")")])]
20722
20835
  });
20723
20836
  }
20724
20837
  if (column.key === 'data-table-select') {
@@ -20731,13 +20844,13 @@
20731
20844
  indeterminate,
20732
20845
  'onUpdate:modelValue': selectGroup
20733
20846
  }
20734
- }) ?? vue.createVNode("td", null, [vue.createVNode(VCheckboxBtn, {
20847
+ }) ?? vue.createElementVNode("td", null, [vue.createVNode(VCheckboxBtn, {
20735
20848
  "modelValue": modelValue,
20736
20849
  "indeterminate": indeterminate,
20737
20850
  "onUpdate:modelValue": selectGroup
20738
20851
  }, null)]);
20739
20852
  }
20740
- return vue.createVNode("td", null, null);
20853
+ return vue.createElementVNode("td", null, null);
20741
20854
  })]);
20742
20855
  }
20743
20856
  });
@@ -20783,10 +20896,10 @@
20783
20896
  const {
20784
20897
  columns
20785
20898
  } = useHeaders();
20786
- useRender(() => vue.createVNode("tr", {
20787
- "class": ['v-data-table__tr', {
20899
+ useRender(() => vue.createElementVNode("tr", {
20900
+ "class": vue.normalizeClass(['v-data-table__tr', {
20788
20901
  'v-data-table__tr--clickable': !!(props.onClick || props.onContextmenu || props.onDblclick)
20789
- }, displayClasses.value],
20902
+ }, displayClasses.value]),
20790
20903
  "onClick": props.onClick,
20791
20904
  "onContextmenu": props.onContextmenu,
20792
20905
  "onDblclick": props.onDblclick
@@ -20875,9 +20988,9 @@
20875
20988
  }
20876
20989
  if (slots[slotName] && !mobile.value) return slots[slotName](slotProps);
20877
20990
  const displayValue = vue.toDisplayString(slotProps.value);
20878
- return !mobile.value ? displayValue : vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
20991
+ return !mobile.value ? displayValue : vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("div", {
20879
20992
  "class": "v-data-table__td-title"
20880
- }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), vue.createVNode("div", {
20993
+ }, [slots[headerSlotName]?.(columnSlotProps) ?? column.title]), vue.createElementVNode("div", {
20881
20994
  "class": "v-data-table__td-value"
20882
20995
  }, [slots[slotName]?.(slotProps) ?? displayValue])]);
20883
20996
  }
@@ -20940,22 +21053,22 @@
20940
21053
  } = useDisplay(props);
20941
21054
  useRender(() => {
20942
21055
  if (props.loading && (!props.items.length || slots.loading)) {
20943
- return vue.createVNode("tr", {
21056
+ return vue.createElementVNode("tr", {
20944
21057
  "class": "v-data-table-rows-loading",
20945
21058
  "key": "loading"
20946
- }, [vue.createVNode("td", {
21059
+ }, [vue.createElementVNode("td", {
20947
21060
  "colspan": columns.value.length
20948
21061
  }, [slots.loading?.() ?? t(props.loadingText)])]);
20949
21062
  }
20950
21063
  if (!props.loading && !props.items.length && !props.hideNoData) {
20951
- return vue.createVNode("tr", {
21064
+ return vue.createElementVNode("tr", {
20952
21065
  "class": "v-data-table-rows-no-data",
20953
21066
  "key": "no-data"
20954
- }, [vue.createVNode("td", {
21067
+ }, [vue.createElementVNode("td", {
20955
21068
  "colspan": columns.value.length
20956
21069
  }, [slots['no-data']?.() ?? t(props.noDataText)])]);
20957
21070
  }
20958
- return vue.createVNode(vue.Fragment, null, [props.items.map((item, index) => {
21071
+ return vue.createElementVNode(vue.Fragment, null, [props.items.map((item, index) => {
20959
21072
  if (item.type === 'group') {
20960
21073
  const slotProps = {
20961
21074
  index,
@@ -21000,7 +21113,7 @@
21000
21113
  internalItem: slotProps.internalItem
21001
21114
  }) : props.rowProps)
21002
21115
  };
21003
- return vue.createVNode(vue.Fragment, {
21116
+ return vue.createElementVNode(vue.Fragment, {
21004
21117
  "key": itemSlotProps.props.key
21005
21118
  }, [slots.item ? slots.item(itemSlotProps) : vue.createVNode(VDataTableRow, itemSlotProps.props, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
21006
21119
  })]);
@@ -21034,22 +21147,22 @@
21034
21147
  densityClasses
21035
21148
  } = useDensity(props);
21036
21149
  useRender(() => vue.createVNode(props.tag, {
21037
- "class": ['v-table', {
21150
+ "class": vue.normalizeClass(['v-table', {
21038
21151
  'v-table--fixed-height': !!props.height,
21039
21152
  'v-table--fixed-header': props.fixedHeader,
21040
21153
  'v-table--fixed-footer': props.fixedFooter,
21041
21154
  'v-table--has-top': !!slots.top,
21042
21155
  'v-table--has-bottom': !!slots.bottom,
21043
21156
  'v-table--hover': props.hover
21044
- }, themeClasses.value, densityClasses.value, props.class],
21045
- "style": props.style
21157
+ }, themeClasses.value, densityClasses.value, props.class]),
21158
+ "style": vue.normalizeStyle(props.style)
21046
21159
  }, {
21047
- default: () => [slots.top?.(), slots.default ? vue.createVNode("div", {
21160
+ default: () => [slots.top?.(), slots.default ? vue.createElementVNode("div", {
21048
21161
  "class": "v-table__wrapper",
21049
21162
  "style": {
21050
21163
  height: convertToUnit(props.height)
21051
21164
  }
21052
- }, [vue.createVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
21165
+ }, [vue.createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
21053
21166
  }));
21054
21167
  return {};
21055
21168
  }
@@ -21302,12 +21415,12 @@
21302
21415
  "fixedHeader": props.fixedHeader || props.sticky
21303
21416
  }), {
21304
21417
  top: () => slots.top?.(slotProps.value),
21305
- default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
21418
+ default: () => slots.default ? slots.default(slotProps.value) : vue.createElementVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
21306
21419
  "key": "thead"
21307
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
21420
+ }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
21308
21421
  "items": paginatedItems.value
21309
21422
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
21310
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
21423
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
21311
21424
  prepend: slots['footer.prepend']
21312
21425
  })])
21313
21426
  });
@@ -21478,7 +21591,7 @@
21478
21591
  "fixedHeader": props.fixedHeader || props.sticky
21479
21592
  }), {
21480
21593
  top: () => slots.top?.(slotProps.value),
21481
- wrapper: () => vue.createVNode("div", {
21594
+ wrapper: () => vue.createElementVNode("div", {
21482
21595
  "ref": containerRef,
21483
21596
  "onScrollPassive": handleScroll,
21484
21597
  "onScrollend": handleScrollend,
@@ -21486,17 +21599,17 @@
21486
21599
  "style": {
21487
21600
  height: convertToUnit(props.height)
21488
21601
  }
21489
- }, [vue.createVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
21602
+ }, [vue.createElementVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
21490
21603
  "key": "thead"
21491
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createVNode("tbody", {
21604
+ }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
21492
21605
  "key": "tbody"
21493
- }, [vue.createVNode("tr", {
21606
+ }, [vue.createElementVNode("tr", {
21494
21607
  "ref": markerRef,
21495
21608
  "style": {
21496
21609
  height: convertToUnit(paddingTop.value),
21497
21610
  border: 0
21498
21611
  }
21499
- }, [vue.createVNode("td", {
21612
+ }, [vue.createElementVNode("td", {
21500
21613
  "colspan": columns.value.length,
21501
21614
  "style": {
21502
21615
  height: 0,
@@ -21525,12 +21638,12 @@
21525
21638
  }), slots);
21526
21639
  }
21527
21640
  })
21528
- }), slots['body.append']?.(slotProps.value), vue.createVNode("tr", {
21641
+ }), slots['body.append']?.(slotProps.value), vue.createElementVNode("tr", {
21529
21642
  "style": {
21530
21643
  height: convertToUnit(paddingBottom.value),
21531
21644
  border: 0
21532
21645
  }
21533
- }, [vue.createVNode("td", {
21646
+ }, [vue.createElementVNode("td", {
21534
21647
  "colspan": columns.value.length,
21535
21648
  "style": {
21536
21649
  height: 0,
@@ -21703,17 +21816,17 @@
21703
21816
  "fixedHeader": props.fixedHeader || props.sticky
21704
21817
  }), {
21705
21818
  top: () => slots.top?.(slotProps.value),
21706
- default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
21819
+ default: () => slots.default ? slots.default(slotProps.value) : vue.createElementVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
21707
21820
  "key": "thead",
21708
21821
  "class": "v-data-table__thead",
21709
21822
  "role": "rowgroup"
21710
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createVNode("tbody", {
21823
+ }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
21711
21824
  "class": "v-data-table__tbody",
21712
21825
  "role": "rowgroup"
21713
21826
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
21714
21827
  "items": flatItems.value
21715
21828
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
21716
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
21829
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
21717
21830
  prepend: slots['footer.prepend']
21718
21831
  })])
21719
21832
  });
@@ -21744,10 +21857,10 @@
21744
21857
  dimensionStyles
21745
21858
  } = useDimension(props);
21746
21859
  useRender(() => vue.createVNode(props.tag, {
21747
- "class": ['v-container', {
21860
+ "class": vue.normalizeClass(['v-container', {
21748
21861
  'v-container--fluid': props.fluid
21749
- }, rtlClasses.value, props.class],
21750
- "style": [dimensionStyles.value, props.style]
21862
+ }, rtlClasses.value, props.class]),
21863
+ "style": vue.normalizeStyle([dimensionStyles.value, props.style])
21751
21864
  }, slots));
21752
21865
  return {};
21753
21866
  }
@@ -22066,8 +22179,8 @@
22066
22179
  }
22067
22180
  useRender(() => {
22068
22181
  // TODO: add slot support and scope defaults
22069
- return vue.createVNode("div", {
22070
- "class": ['v-date-picker-controls'],
22182
+ return vue.createElementVNode("div", {
22183
+ "class": vue.normalizeClass(['v-date-picker-controls']),
22071
22184
  "style": {
22072
22185
  '--v-date-picker-controls-height': convertToUnit(props.controlHeight)
22073
22186
  }
@@ -22087,7 +22200,7 @@
22087
22200
  "icon": props.modeIcon,
22088
22201
  "variant": "text",
22089
22202
  "onClick": onClickYear
22090
- }, null), vue.createVNode(VSpacer, null, null), vue.createVNode("div", {
22203
+ }, null), vue.createVNode(VSpacer, null, null), vue.createElementVNode("div", {
22091
22204
  "class": "v-date-picker-controls__month"
22092
22205
  }, [vue.createVNode(VBtn, {
22093
22206
  "data-testid": "prev-month",
@@ -22143,24 +22256,24 @@
22143
22256
  useRender(() => {
22144
22257
  const hasContent = !!(slots.default || props.header);
22145
22258
  const hasAppend = !!(slots.append || props.appendIcon);
22146
- return vue.createVNode("div", {
22147
- "class": ['v-date-picker-header', {
22259
+ return vue.createElementVNode("div", {
22260
+ "class": vue.normalizeClass(['v-date-picker-header', {
22148
22261
  'v-date-picker-header--clickable': !!props.onClick
22149
- }, backgroundColorClasses.value],
22150
- "style": backgroundColorStyles.value,
22262
+ }, backgroundColorClasses.value]),
22263
+ "style": vue.normalizeStyle(backgroundColorStyles.value),
22151
22264
  "onClick": onClick
22152
- }, [slots.prepend && vue.createVNode("div", {
22265
+ }, [slots.prepend && vue.createElementVNode("div", {
22153
22266
  "key": "prepend",
22154
22267
  "class": "v-date-picker-header__prepend"
22155
22268
  }, [slots.prepend()]), hasContent && vue.createVNode(MaybeTransition, {
22156
22269
  "key": "content",
22157
22270
  "name": props.transition
22158
22271
  }, {
22159
- default: () => [vue.createVNode("div", {
22272
+ default: () => [vue.createElementVNode("div", {
22160
22273
  "key": props.header,
22161
22274
  "class": "v-date-picker-header__content"
22162
22275
  }, [slots.default?.() ?? props.header])]
22163
- }), hasAppend && vue.createVNode("div", {
22276
+ }), hasAppend && vue.createElementVNode("div", {
22164
22277
  "class": "v-date-picker-header__append"
22165
22278
  }, [!slots.append ? vue.createVNode(VBtn, {
22166
22279
  "key": "append-btn",
@@ -22413,14 +22526,7 @@
22413
22526
  } else {
22414
22527
  rangeStop.value = adapter.endOfDay(_value);
22415
22528
  }
22416
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
22417
- const datesInRange = [rangeStart.value];
22418
- for (let i = 1; i < diff; i++) {
22419
- const nextDate = adapter.addDays(rangeStart.value, i);
22420
- datesInRange.push(nextDate);
22421
- }
22422
- datesInRange.push(rangeStop.value);
22423
- model.value = datesInRange;
22529
+ model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22424
22530
  } else {
22425
22531
  rangeStart.value = value;
22426
22532
  rangeStop.value = undefined;
@@ -22446,25 +22552,25 @@
22446
22552
  model.value = [value];
22447
22553
  }
22448
22554
  }
22449
- useRender(() => vue.createVNode("div", {
22555
+ useRender(() => vue.createElementVNode("div", {
22450
22556
  "class": "v-date-picker-month"
22451
- }, [props.showWeek && vue.createVNode("div", {
22557
+ }, [props.showWeek && vue.createElementVNode("div", {
22452
22558
  "key": "weeks",
22453
22559
  "class": "v-date-picker-month__weeks"
22454
- }, [!props.hideWeekdays && vue.createVNode("div", {
22560
+ }, [!props.hideWeekdays && vue.createElementVNode("div", {
22455
22561
  "key": "hide-week-days",
22456
22562
  "class": "v-date-picker-month__day"
22457
- }, [vue.createTextVNode("\xA0")]), weekNumbers.value.map(week => vue.createVNode("div", {
22458
- "class": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']
22563
+ }, [vue.createTextVNode("\xA0")]), weekNumbers.value.map(week => vue.createElementVNode("div", {
22564
+ "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__day--adjacent'])
22459
22565
  }, [week]))]), vue.createVNode(MaybeTransition, {
22460
22566
  "name": transition.value
22461
22567
  }, {
22462
- default: () => [vue.createVNode("div", {
22568
+ default: () => [vue.createElementVNode("div", {
22463
22569
  "ref": daysRef,
22464
22570
  "key": daysInMonth.value[0].date?.toString(),
22465
22571
  "class": "v-date-picker-month__days"
22466
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createVNode("div", {
22467
- "class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
22572
+ }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
22573
+ "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22468
22574
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22469
22575
  const slotProps = {
22470
22576
  props: {
@@ -22483,14 +22589,14 @@
22483
22589
  if (atMax.value && !item.isSelected) {
22484
22590
  item.isDisabled = true;
22485
22591
  }
22486
- return vue.createVNode("div", {
22487
- "class": ['v-date-picker-month__day', {
22592
+ return vue.createElementVNode("div", {
22593
+ "class": vue.normalizeClass(['v-date-picker-month__day', {
22488
22594
  'v-date-picker-month__day--adjacent': item.isAdjacent,
22489
22595
  'v-date-picker-month__day--hide-adjacent': item.isHidden,
22490
22596
  'v-date-picker-month__day--selected': item.isSelected,
22491
22597
  'v-date-picker-month__day--week-end': item.isWeekEnd,
22492
22598
  'v-date-picker-month__day--week-start': item.isWeekStart
22493
- }],
22599
+ }]),
22494
22600
  "data-v-date": !item.isDisabled ? item.isoDate : undefined
22495
22601
  }, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props, null))]);
22496
22602
  })])]
@@ -22506,7 +22612,8 @@
22506
22612
  min: null,
22507
22613
  max: null,
22508
22614
  modelValue: Number,
22509
- year: Number
22615
+ year: Number,
22616
+ allowedMonths: [Array, Function]
22510
22617
  }, 'VDatePickerMonths');
22511
22618
  const VDatePickerMonths = genericComponent()({
22512
22619
  name: 'VDatePickerMonths',
@@ -22528,7 +22635,7 @@
22528
22635
  }
22529
22636
  return createRange(12).map(i => {
22530
22637
  const text = adapter.format(date, 'monthShort');
22531
- const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
22638
+ 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))));
22532
22639
  date = adapter.getNextMonth(date);
22533
22640
  return {
22534
22641
  isDisabled,
@@ -22540,12 +22647,21 @@
22540
22647
  vue.watchEffect(() => {
22541
22648
  model.value = model.value ?? adapter.getMonth(adapter.date());
22542
22649
  });
22543
- useRender(() => vue.createVNode("div", {
22650
+ function isMonthAllowed(month) {
22651
+ if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
22652
+ return props.allowedMonths.includes(month);
22653
+ }
22654
+ if (typeof props.allowedMonths === 'function') {
22655
+ return props.allowedMonths(month);
22656
+ }
22657
+ return true;
22658
+ }
22659
+ useRender(() => vue.createElementVNode("div", {
22544
22660
  "class": "v-date-picker-months",
22545
22661
  "style": {
22546
22662
  height: convertToUnit(props.height)
22547
22663
  }
22548
- }, [vue.createVNode("div", {
22664
+ }, [vue.createElementVNode("div", {
22549
22665
  "class": "v-date-picker-months__content"
22550
22666
  }, [months.value.map((month, i) => {
22551
22667
  const btnProps = {
@@ -22585,7 +22701,8 @@
22585
22701
  height: [String, Number],
22586
22702
  min: null,
22587
22703
  max: null,
22588
- modelValue: Number
22704
+ modelValue: Number,
22705
+ allowedYears: [Array, Function]
22589
22706
  }, 'VDatePickerYears');
22590
22707
  const VDatePickerYears = genericComponent()({
22591
22708
  name: 'VDatePickerYears',
@@ -22617,7 +22734,8 @@
22617
22734
  date = adapter.setYear(date, adapter.getYear(date) + 1);
22618
22735
  return {
22619
22736
  text,
22620
- value: i
22737
+ value: i,
22738
+ isDisabled: !isYearAllowed(i)
22621
22739
  };
22622
22740
  });
22623
22741
  });
@@ -22631,12 +22749,21 @@
22631
22749
  block: 'center'
22632
22750
  });
22633
22751
  });
22634
- useRender(() => vue.createVNode("div", {
22752
+ function isYearAllowed(year) {
22753
+ if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
22754
+ return props.allowedYears.includes(year);
22755
+ }
22756
+ if (typeof props.allowedYears === 'function') {
22757
+ return props.allowedYears(year);
22758
+ }
22759
+ return true;
22760
+ }
22761
+ useRender(() => vue.createElementVNode("div", {
22635
22762
  "class": "v-date-picker-years",
22636
22763
  "style": {
22637
22764
  height: convertToUnit(props.height)
22638
22765
  }
22639
- }, [vue.createVNode("div", {
22766
+ }, [vue.createElementVNode("div", {
22640
22767
  "class": "v-date-picker-years__content"
22641
22768
  }, [years.value.map((year, i) => {
22642
22769
  const btnProps = {
@@ -22645,6 +22772,7 @@
22645
22772
  color: model.value === year.value ? props.color : undefined,
22646
22773
  rounded: true,
22647
22774
  text: year.text,
22775
+ disabled: year.isDisabled,
22648
22776
  variant: model.value === year.value ? 'flat' : 'text',
22649
22777
  onClick: () => {
22650
22778
  if (model.value === year.value) {
@@ -22794,6 +22922,41 @@
22794
22922
  }
22795
22923
  return targets;
22796
22924
  });
22925
+ function isAllowedInRange(start, end) {
22926
+ const allowedDates = props.allowedDates;
22927
+ if (typeof allowedDates !== 'function') return true;
22928
+ const days = adapter.getDiff(end, start, 'days');
22929
+ for (let i = 0; i < days; i++) {
22930
+ if (allowedDates(adapter.addDays(start, i))) return true;
22931
+ }
22932
+ return false;
22933
+ }
22934
+ function allowedYears(year) {
22935
+ if (typeof props.allowedDates === 'function') {
22936
+ const startOfYear = adapter.parseISO(`${year}-01-01`);
22937
+ return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
22938
+ }
22939
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22940
+ for (const date of props.allowedDates) {
22941
+ if (adapter.getYear(adapter.date(date)) === year) return true;
22942
+ }
22943
+ return false;
22944
+ }
22945
+ return true;
22946
+ }
22947
+ function allowedMonths(month) {
22948
+ if (typeof props.allowedDates === 'function') {
22949
+ const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
22950
+ return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
22951
+ }
22952
+ if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
22953
+ for (const date of props.allowedDates) {
22954
+ if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
22955
+ }
22956
+ return false;
22957
+ }
22958
+ return true;
22959
+ }
22797
22960
 
22798
22961
  // function onClickAppend () {
22799
22962
  // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
@@ -22873,7 +23036,7 @@
22873
23036
  }, rtlClasses.value, props.class],
22874
23037
  "style": props.style
22875
23038
  }), {
22876
- title: () => slots.title?.() ?? vue.createVNode("div", {
23039
+ title: () => slots.title?.() ?? vue.createElementVNode("div", {
22877
23040
  "class": "v-date-picker__title"
22878
23041
  }, [t(props.title)]),
22879
23042
  header: () => slots.header ? vue.createVNode(VDefaultsProvider, {
@@ -22892,7 +23055,7 @@
22892
23055
  ...slots,
22893
23056
  default: undefined
22894
23057
  }),
22895
- default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VDatePickerControls, vue.mergeProps(datePickerControlsProps, {
23058
+ default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VDatePickerControls, vue.mergeProps(datePickerControlsProps, {
22896
23059
  "disabled": disabled.value,
22897
23060
  "text": text.value,
22898
23061
  "onClick:next": onClickNext,
@@ -22909,14 +23072,16 @@
22909
23072
  "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
22910
23073
  "min": minDate.value,
22911
23074
  "max": maxDate.value,
22912
- "year": year.value
23075
+ "year": year.value,
23076
+ "allowedMonths": allowedMonths
22913
23077
  }), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
22914
23078
  "key": "date-picker-years"
22915
23079
  }, datePickerYearsProps, {
22916
23080
  "modelValue": year.value,
22917
23081
  "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
22918
23082
  "min": minDate.value,
22919
- "max": maxDate.value
23083
+ "max": maxDate.value,
23084
+ "allowedYears": allowedYears
22920
23085
  }), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
22921
23086
  "key": "date-picker-month"
22922
23087
  }, datePickerMonthProps, {
@@ -23001,15 +23166,15 @@
23001
23166
  const hasText = !!(slots.text || props.text);
23002
23167
  const hasMedia = !!(slots.media || props.image || props.icon);
23003
23168
  const size = props.size || (props.image ? 200 : 96);
23004
- return vue.createVNode("div", {
23005
- "class": ['v-empty-state', {
23169
+ return vue.createElementVNode("div", {
23170
+ "class": vue.normalizeClass(['v-empty-state', {
23006
23171
  [`v-empty-state--${props.justify}`]: true
23007
- }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],
23008
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
23009
- }, [hasMedia && vue.createVNode("div", {
23172
+ }, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class]),
23173
+ "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style])
23174
+ }, [hasMedia && vue.createElementVNode("div", {
23010
23175
  "key": "media",
23011
23176
  "class": "v-empty-state__media"
23012
- }, [!slots.media ? vue.createVNode(vue.Fragment, null, [props.image ? vue.createVNode(VImg, {
23177
+ }, [!slots.media ? vue.createElementVNode(vue.Fragment, null, [props.image ? vue.createVNode(VImg, {
23013
23178
  "key": "image",
23014
23179
  "src": props.image,
23015
23180
  "height": size
@@ -23032,22 +23197,22 @@
23032
23197
  }
23033
23198
  }, {
23034
23199
  default: () => [slots.media()]
23035
- })]), hasHeadline && vue.createVNode("div", {
23200
+ })]), hasHeadline && vue.createElementVNode("div", {
23036
23201
  "key": "headline",
23037
23202
  "class": "v-empty-state__headline"
23038
- }, [slots.headline?.() ?? props.headline]), hasTitle && vue.createVNode("div", {
23203
+ }, [slots.headline?.() ?? props.headline]), hasTitle && vue.createElementVNode("div", {
23039
23204
  "key": "title",
23040
23205
  "class": "v-empty-state__title"
23041
- }, [slots.title?.() ?? props.title]), hasText && vue.createVNode("div", {
23206
+ }, [slots.title?.() ?? props.title]), hasText && vue.createElementVNode("div", {
23042
23207
  "key": "text",
23043
23208
  "class": "v-empty-state__text",
23044
23209
  "style": {
23045
23210
  maxWidth: convertToUnit(props.textWidth)
23046
23211
  }
23047
- }, [slots.text?.() ?? props.text]), slots.default && vue.createVNode("div", {
23212
+ }, [slots.text?.() ?? props.text]), slots.default && vue.createElementVNode("div", {
23048
23213
  "key": "content",
23049
23214
  "class": "v-empty-state__content"
23050
- }, [slots.default()]), hasActions && vue.createVNode("div", {
23215
+ }, [slots.default()]), hasActions && vue.createElementVNode("div", {
23051
23216
  "key": "actions",
23052
23217
  "class": "v-empty-state__actions"
23053
23218
  }, [vue.createVNode(VDefaultsProvider, {
@@ -23098,10 +23263,10 @@
23098
23263
  useRender(() => vue.createVNode(VExpandTransition, {
23099
23264
  "onAfterLeave": onAfterLeave
23100
23265
  }, {
23101
- default: () => [vue.withDirectives(vue.createVNode("div", {
23102
- "class": ['v-expansion-panel-text', props.class],
23103
- "style": props.style
23104
- }, [slots.default && hasContent.value && vue.createVNode("div", {
23266
+ default: () => [vue.withDirectives(vue.createElementVNode("div", {
23267
+ "class": vue.normalizeClass(['v-expansion-panel-text', props.class]),
23268
+ "style": vue.normalizeStyle(props.style)
23269
+ }, [slots.default && hasContent.value && vue.createElementVNode("div", {
23105
23270
  "class": "v-expansion-panel-text__wrapper"
23106
23271
  }, [slots.default?.()])]), [[vue.vShow, expansionPanel.isSelected.value]])]
23107
23272
  }));
@@ -23135,7 +23300,7 @@
23135
23300
  const VExpansionPanelTitle = genericComponent()({
23136
23301
  name: 'VExpansionPanelTitle',
23137
23302
  directives: {
23138
- Ripple
23303
+ vRipple: Ripple
23139
23304
  },
23140
23305
  props: makeVExpansionPanelTitleProps(),
23141
23306
  setup(props, _ref) {
@@ -23159,19 +23324,19 @@
23159
23324
  readonly: props.readonly
23160
23325
  }));
23161
23326
  const icon = vue.toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
23162
- useRender(() => vue.withDirectives(vue.createVNode("button", {
23163
- "class": ['v-expansion-panel-title', {
23327
+ useRender(() => vue.withDirectives(vue.createElementVNode("button", {
23328
+ "class": vue.normalizeClass(['v-expansion-panel-title', {
23164
23329
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
23165
23330
  'v-expansion-panel-title--focusable': props.focusable,
23166
23331
  'v-expansion-panel-title--static': props.static
23167
- }, backgroundColorClasses.value, props.class],
23168
- "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
23332
+ }, backgroundColorClasses.value, props.class]),
23333
+ "style": vue.normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
23169
23334
  "type": "button",
23170
23335
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
23171
23336
  "disabled": expansionPanel.disabled.value,
23172
23337
  "aria-expanded": expansionPanel.isSelected.value,
23173
23338
  "onClick": !props.readonly ? expansionPanel.toggle : undefined
23174
- }, [vue.createVNode("span", {
23339
+ }, [vue.createElementVNode("span", {
23175
23340
  "class": "v-expansion-panel-title__overlay"
23176
23341
  }, null), slots.default?.(slotProps.value), !props.hideActions && vue.createVNode(VDefaultsProvider, {
23177
23342
  "defaults": {
@@ -23180,10 +23345,10 @@
23180
23345
  }
23181
23346
  }
23182
23347
  }, {
23183
- default: () => [vue.createVNode("span", {
23348
+ default: () => [vue.createElementVNode("span", {
23184
23349
  "class": "v-expansion-panel-title__icon"
23185
23350
  }, [slots.actions?.(slotProps.value) ?? vue.createVNode(VIcon, null, null)])]
23186
- })]), [[vue.resolveDirective("ripple"), props.ripple]]));
23351
+ })]), [[Ripple, props.ripple]]));
23187
23352
  return {};
23188
23353
  }
23189
23354
  });
@@ -23240,16 +23405,16 @@
23240
23405
  const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props);
23241
23406
  const expansionPanelTextProps = VExpansionPanelText.filterProps(props);
23242
23407
  return vue.createVNode(props.tag, {
23243
- "class": ['v-expansion-panel', {
23408
+ "class": vue.normalizeClass(['v-expansion-panel', {
23244
23409
  'v-expansion-panel--active': groupItem.isSelected.value,
23245
23410
  'v-expansion-panel--before-active': isBeforeSelected.value,
23246
23411
  'v-expansion-panel--after-active': isAfterSelected.value,
23247
23412
  'v-expansion-panel--disabled': isDisabled.value
23248
- }, roundedClasses.value, backgroundColorClasses.value, props.class],
23249
- "style": [backgroundColorStyles.value, props.style]
23413
+ }, roundedClasses.value, backgroundColorClasses.value, props.class]),
23414
+ "style": vue.normalizeStyle([backgroundColorStyles.value, props.style])
23250
23415
  }, {
23251
- default: () => [vue.createVNode("div", {
23252
- "class": ['v-expansion-panel__shadow', ...elevationClasses.value]
23416
+ default: () => [vue.createElementVNode("div", {
23417
+ "class": vue.normalizeClass(['v-expansion-panel__shadow', ...elevationClasses.value])
23253
23418
  }, null), vue.createVNode(VDefaultsProvider, {
23254
23419
  "defaults": {
23255
23420
  VExpansionPanelTitle: {
@@ -23329,11 +23494,11 @@
23329
23494
  }
23330
23495
  });
23331
23496
  useRender(() => vue.createVNode(props.tag, {
23332
- "class": ['v-expansion-panels', {
23497
+ "class": vue.normalizeClass(['v-expansion-panels', {
23333
23498
  'v-expansion-panels--flat': props.flat,
23334
23499
  'v-expansion-panels--tile': props.tile
23335
- }, themeClasses.value, variantClass.value, props.class],
23336
- "style": props.style
23500
+ }, themeClasses.value, variantClass.value, props.class]),
23501
+ "style": vue.normalizeStyle(props.style)
23337
23502
  }, {
23338
23503
  default: () => [slots.default?.({
23339
23504
  prev,
@@ -23413,22 +23578,22 @@
23413
23578
  const vFabRef = vue.ref();
23414
23579
  useRender(() => {
23415
23580
  const btnProps = VBtn.filterProps(props);
23416
- return vue.createVNode("div", {
23581
+ return vue.createElementVNode("div", {
23417
23582
  "ref": vFabRef,
23418
- "class": ['v-fab', {
23583
+ "class": vue.normalizeClass(['v-fab', {
23419
23584
  'v-fab--absolute': props.absolute,
23420
23585
  'v-fab--app': !!props.app,
23421
23586
  'v-fab--extended': props.extended,
23422
23587
  'v-fab--offset': props.offset,
23423
23588
  [`v-fab--${position.value}`]: hasPosition.value,
23424
23589
  [`v-fab--${orientation.value}`]: hasPosition.value
23425
- }, props.class],
23426
- "style": [props.app ? {
23590
+ }, props.class]),
23591
+ "style": vue.normalizeStyle([props.app ? {
23427
23592
  ...layoutItemStyles.value
23428
23593
  } : {
23429
23594
  height: props.absolute ? '100%' : 'inherit'
23430
- }, props.style]
23431
- }, [vue.createVNode("div", {
23595
+ }, props.style])
23596
+ }, [vue.createElementVNode("div", {
23432
23597
  "class": "v-fab__container"
23433
23598
  }, [vue.createVNode(MaybeTransition, {
23434
23599
  "appear": props.appear,
@@ -23644,7 +23809,7 @@
23644
23809
  ...slotProps
23645
23810
  }
23646
23811
  } = _ref4;
23647
- return vue.createVNode(vue.Fragment, null, [vue.createVNode("input", vue.mergeProps({
23812
+ return vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("input", vue.mergeProps({
23648
23813
  "ref": inputRef,
23649
23814
  "type": "file",
23650
23815
  "readonly": isReadonly.value,
@@ -23664,8 +23829,8 @@
23664
23829
  "onDragleave": onDragleave,
23665
23830
  "onFocus": onFocus,
23666
23831
  "onBlur": blur
23667
- }, slotProps, inputAttrs), null), vue.createVNode("div", {
23668
- "class": fieldClass
23832
+ }, slotProps, inputAttrs), null), vue.createElementVNode("div", {
23833
+ "class": vue.normalizeClass(fieldClass)
23669
23834
  }, [!!model.value?.length && !props.hideInput && (slots.selection ? slots.selection({
23670
23835
  fileNames: fileNames.value,
23671
23836
  totalBytes: totalBytes.value,
@@ -23678,7 +23843,7 @@
23678
23843
  }
23679
23844
  });
23680
23845
  },
23681
- details: hasDetails ? slotProps => vue.createVNode(vue.Fragment, null, [slots.details?.(slotProps), hasCounter && vue.createVNode(vue.Fragment, null, [vue.createVNode("span", null, null), vue.createVNode(VCounter, {
23846
+ details: hasDetails ? slotProps => vue.createElementVNode(vue.Fragment, null, [slots.details?.(slotProps), hasCounter && vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("span", null, null), vue.createVNode(VCounter, {
23682
23847
  "active": !!model.value?.length,
23683
23848
  "value": counterValue.value,
23684
23849
  "disabled": props.disabled
@@ -23754,10 +23919,10 @@
23754
23919
  });
23755
23920
  useRender(() => vue.createVNode(props.tag, {
23756
23921
  "ref": resizeRef,
23757
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
23758
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
23922
+ "class": vue.normalizeClass(['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
23923
+ "style": vue.normalizeStyle([backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
23759
23924
  height: convertToUnit(props.height)
23760
- }, props.style]
23925
+ }, props.style])
23761
23926
  }, slots));
23762
23927
  return {};
23763
23928
  }
@@ -23806,10 +23971,10 @@
23806
23971
  }
23807
23972
  e.preventDefault();
23808
23973
  }
23809
- useRender(() => vue.createVNode("form", {
23974
+ useRender(() => vue.createElementVNode("form", {
23810
23975
  "ref": formRef,
23811
- "class": ['v-form', props.class],
23812
- "style": props.style,
23976
+ "class": vue.normalizeClass(['v-form', props.class]),
23977
+ "style": vue.normalizeStyle(props.style),
23813
23978
  "novalidate": true,
23814
23979
  "onReset": onReset,
23815
23980
  "onSubmit": onSubmit
@@ -23906,7 +24071,7 @@
23906
24071
  vue.watch(isIntersecting, async val => {
23907
24072
  emit('intersect', props.side, val);
23908
24073
  });
23909
- useRender(() => vue.createVNode("div", {
24074
+ useRender(() => vue.createElementVNode("div", {
23910
24075
  "class": "v-infinite-scroll-intersect",
23911
24076
  "style": {
23912
24077
  '--v-infinite-margin-size': props.rootMargin
@@ -24022,7 +24187,7 @@
24022
24187
  }
24023
24188
  };
24024
24189
  if (status === 'error') return slots.error?.(slotProps);
24025
- if (status === 'empty') return slots.empty?.(slotProps) ?? vue.createVNode("div", null, [t(props.emptyText)]);
24190
+ if (status === 'empty') return slots.empty?.(slotProps) ?? vue.createElementVNode("div", null, [t(props.emptyText)]);
24026
24191
  if (props.mode === 'manual') {
24027
24192
  if (status === 'loading') {
24028
24193
  return slots.loading?.(slotProps) ?? vue.createVNode(VProgressCircular, {
@@ -24053,13 +24218,13 @@
24053
24218
  const intersectMode = props.mode === 'intersect';
24054
24219
  return vue.createVNode(Tag, {
24055
24220
  "ref": rootEl,
24056
- "class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
24221
+ "class": vue.normalizeClass(['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
24057
24222
  'v-infinite-scroll--start': hasStartIntersect,
24058
24223
  'v-infinite-scroll--end': hasEndIntersect
24059
- }],
24060
- "style": dimensionStyles.value
24224
+ }]),
24225
+ "style": vue.normalizeStyle(dimensionStyles.value)
24061
24226
  }, {
24062
- default: () => [vue.createVNode("div", {
24227
+ default: () => [vue.createElementVNode("div", {
24063
24228
  "class": "v-infinite-scroll__side"
24064
24229
  }, [renderSide('start', startStatus.value)]), hasStartIntersect && intersectMode && vue.createVNode(VInfiniteScrollIntersect, {
24065
24230
  "key": "start",
@@ -24071,7 +24236,7 @@
24071
24236
  "side": "end",
24072
24237
  "onIntersect": handleIntersect,
24073
24238
  "rootMargin": margin.value
24074
- }, null), vue.createVNode("div", {
24239
+ }, null), vue.createElementVNode("div", {
24075
24240
  "class": "v-infinite-scroll__side"
24076
24241
  }, [renderSide('end', endStatus.value)])]
24077
24242
  });
@@ -24111,8 +24276,8 @@
24111
24276
  selected
24112
24277
  } = useGroup(props, VItemGroupSymbol);
24113
24278
  return () => vue.createVNode(props.tag, {
24114
- "class": ['v-item-group', themeClasses.value, props.class],
24115
- "style": props.style
24279
+ "class": vue.normalizeClass(['v-item-group', themeClasses.value, props.class]),
24280
+ "style": vue.normalizeStyle(props.style)
24116
24281
  }, {
24117
24282
  default: () => [slots.default?.({
24118
24283
  isSelected,
@@ -24180,10 +24345,10 @@
24180
24345
  const {
24181
24346
  dimensionStyles
24182
24347
  } = useDimension(props);
24183
- useRender(() => vue.createVNode("div", {
24348
+ useRender(() => vue.createElementVNode("div", {
24184
24349
  "ref": layoutRef,
24185
- "class": [layoutClasses.value, props.class],
24186
- "style": [dimensionStyles.value, layoutStyles.value, props.style]
24350
+ "class": vue.normalizeClass([layoutClasses.value, props.class]),
24351
+ "style": vue.normalizeStyle([dimensionStyles.value, layoutStyles.value, props.style])
24187
24352
  }, [slots.default?.()]));
24188
24353
  return {
24189
24354
  getLayoutItem,
@@ -24225,9 +24390,9 @@
24225
24390
  active: vue.toRef(() => props.modelValue),
24226
24391
  absolute: vue.toRef(() => props.absolute)
24227
24392
  });
24228
- return () => vue.createVNode("div", {
24229
- "class": ['v-layout-item', props.class],
24230
- "style": [layoutItemStyles.value, props.style]
24393
+ return () => vue.createElementVNode("div", {
24394
+ "class": vue.normalizeClass(['v-layout-item', props.class]),
24395
+ "style": vue.normalizeStyle([layoutItemStyles.value, props.style])
24231
24396
  }, [slots.default?.()]);
24232
24397
  }
24233
24398
  });
@@ -24256,7 +24421,7 @@
24256
24421
  const VLazy = genericComponent()({
24257
24422
  name: 'VLazy',
24258
24423
  directives: {
24259
- intersect: Intersect
24424
+ vIntersect: Intersect
24260
24425
  },
24261
24426
  props: makeVLazyProps(),
24262
24427
  emits: {
@@ -24275,8 +24440,8 @@
24275
24440
  isActive.value = isIntersecting;
24276
24441
  }
24277
24442
  useRender(() => vue.withDirectives(vue.createVNode(props.tag, {
24278
- "class": ['v-lazy', props.class],
24279
- "style": [dimensionStyles.value, props.style]
24443
+ "class": vue.normalizeClass(['v-lazy', props.class]),
24444
+ "style": vue.normalizeStyle([dimensionStyles.value, props.style])
24280
24445
  }, {
24281
24446
  default: () => [isActive.value && vue.createVNode(MaybeTransition, {
24282
24447
  "transition": props.transition,
@@ -24284,7 +24449,7 @@
24284
24449
  }, {
24285
24450
  default: () => [slots.default?.()]
24286
24451
  })]
24287
- }), [[vue.resolveDirective("intersect"), {
24452
+ }), [[Intersect, {
24288
24453
  handler: onIntersect,
24289
24454
  options: props.options
24290
24455
  }, null]]));
@@ -24312,9 +24477,9 @@
24312
24477
  const {
24313
24478
  rtlClasses
24314
24479
  } = provideLocale(props);
24315
- useRender(() => vue.createVNode("div", {
24316
- "class": ['v-locale-provider', rtlClasses.value, props.class],
24317
- "style": props.style
24480
+ useRender(() => vue.createElementVNode("div", {
24481
+ "class": vue.normalizeClass(['v-locale-provider', rtlClasses.value, props.class]),
24482
+ "style": vue.normalizeStyle(props.style)
24318
24483
  }, [slots.default?.()]));
24319
24484
  return {};
24320
24485
  }
@@ -24345,12 +24510,12 @@
24345
24510
  ssrBootStyles
24346
24511
  } = useSsrBoot();
24347
24512
  useRender(() => vue.createVNode(props.tag, {
24348
- "class": ['v-main', {
24513
+ "class": vue.normalizeClass(['v-main', {
24349
24514
  'v-main--scrollable': props.scrollable
24350
- }, props.class],
24351
- "style": [mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style]
24515
+ }, props.class]),
24516
+ "style": vue.normalizeStyle([mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style])
24352
24517
  }, {
24353
- default: () => [props.scrollable ? vue.createVNode("div", {
24518
+ default: () => [props.scrollable ? vue.createElementVNode("div", {
24354
24519
  "class": "v-main__scroller"
24355
24520
  }, [slots.default?.()]) : slots.default?.()]
24356
24521
  }));
@@ -24581,7 +24746,7 @@
24581
24746
  function getProgress(pos) {
24582
24747
  let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
24583
24748
  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();
24584
- return limit ? Math.max(0, Math.min(1, progress)) : progress;
24749
+ return limit ? clamp(progress) : progress;
24585
24750
  }
24586
24751
  function onTouchstart(e) {
24587
24752
  if (touchless.value) return;
@@ -24861,7 +25026,7 @@
24861
25026
  });
24862
25027
  useRender(() => {
24863
25028
  const hasImage = slots.image || props.image;
24864
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(props.tag, vue.mergeProps({
25029
+ return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(props.tag, vue.mergeProps({
24865
25030
  "ref": rootEl,
24866
25031
  "onMouseenter": runOpenDelay,
24867
25032
  "onMouseleave": runCloseDelay,
@@ -24877,7 +25042,7 @@
24877
25042
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
24878
25043
  "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
24879
25044
  }, scopeId, attrs), {
24880
- default: () => [hasImage && vue.createVNode("div", {
25045
+ default: () => [hasImage && vue.createElementVNode("div", {
24881
25046
  "key": "image",
24882
25047
  "class": "v-navigation-drawer__img"
24883
25048
  }, [!slots.image ? vue.createVNode(VImg, {
@@ -24897,17 +25062,17 @@
24897
25062
  src: props.image
24898
25063
  }
24899
25064
  }
24900
- }, slots.image)]), slots.prepend && vue.createVNode("div", {
25065
+ }, slots.image)]), slots.prepend && vue.createElementVNode("div", {
24901
25066
  "class": "v-navigation-drawer__prepend"
24902
- }, [slots.prepend?.()]), vue.createVNode("div", {
25067
+ }, [slots.prepend?.()]), vue.createElementVNode("div", {
24903
25068
  "class": "v-navigation-drawer__content"
24904
- }, [slots.default?.()]), slots.append && vue.createVNode("div", {
25069
+ }, [slots.default?.()]), slots.append && vue.createElementVNode("div", {
24905
25070
  "class": "v-navigation-drawer__append"
24906
25071
  }, [slots.append?.()])]
24907
25072
  }), vue.createVNode(vue.Transition, {
24908
25073
  "name": "fade-transition"
24909
25074
  }, {
24910
- default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && vue.createVNode("div", vue.mergeProps({
25075
+ default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && vue.createElementVNode("div", vue.mergeProps({
24911
25076
  "class": ['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value],
24912
25077
  "style": [scrimStyles.value, scrimColor.backgroundColorStyles.value],
24913
25078
  "onClick": () => {
@@ -25068,14 +25233,16 @@
25068
25233
  props: {
25069
25234
  onClick: onControlClick,
25070
25235
  onPointerup: onControlMouseup,
25071
- onPointerdown: onUpControlMousedown
25236
+ onPointerdown: onUpControlMousedown,
25237
+ onPointercancel: onControlPointerCancel
25072
25238
  }
25073
25239
  };
25074
25240
  const decrementSlotProps = {
25075
25241
  props: {
25076
25242
  onClick: onControlClick,
25077
25243
  onPointerup: onControlMouseup,
25078
- onPointerdown: onDownControlMousedown
25244
+ onPointerdown: onDownControlMousedown,
25245
+ onPointercancel: onControlPointerCancel
25079
25246
  }
25080
25247
  };
25081
25248
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25105,25 +25272,33 @@
25105
25272
  }
25106
25273
  function onBeforeinput(e) {
25107
25274
  if (!e.data) return;
25108
- const existingTxt = e.target?.value;
25109
- const selectionStart = e.target?.selectionStart;
25110
- const selectionEnd = e.target?.selectionEnd;
25275
+ const inputElement = e.target;
25276
+ const {
25277
+ value: existingTxt,
25278
+ selectionStart,
25279
+ selectionEnd
25280
+ } = inputElement ?? {};
25111
25281
  const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
25282
+ const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
25283
+
25112
25284
  // Only numbers, "-", "." are allowed
25113
25285
  // AND "-", "." are allowed only once
25114
25286
  // AND "-" is only allowed at the start
25115
25287
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
25116
25288
  e.preventDefault();
25289
+ inputElement.value = potentialNewNumber;
25117
25290
  }
25118
25291
  if (props.precision == null) return;
25119
25292
 
25120
25293
  // Ignore decimal digits above precision limit
25121
25294
  if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
25122
25295
  e.preventDefault();
25296
+ inputElement.value = potentialNewNumber;
25123
25297
  }
25124
25298
  // Ignore decimal separator when precision = 0
25125
25299
  if (props.precision === 0 && potentialNewInputVal.includes('.')) {
25126
25300
  e.preventDefault();
25301
+ inputElement.value = potentialNewNumber;
25127
25302
  }
25128
25303
  }
25129
25304
  async function onKeydown(e) {
@@ -25164,6 +25339,11 @@
25164
25339
  e.stopPropagation();
25165
25340
  holdStart('down');
25166
25341
  }
25342
+ function onControlPointerCancel(e) {
25343
+ const el = e.currentTarget;
25344
+ el?.releasePointerCapture(e.pointerId);
25345
+ holdStop();
25346
+ }
25167
25347
  function clampModel() {
25168
25348
  if (controlsDisabled.value) return;
25169
25349
  if (!vTextFieldRef.value) return;
@@ -25205,16 +25385,17 @@
25205
25385
  } = VTextField.filterProps(props);
25206
25386
  function incrementControlNode() {
25207
25387
  return !slots.increment ? vue.createVNode(VBtn, {
25388
+ "aria-hidden": "true",
25389
+ "data-testid": "increment",
25208
25390
  "disabled": !canIncrease.value,
25209
25391
  "flat": true,
25210
- "key": "increment-btn",
25211
25392
  "height": controlNodeDefaultHeight.value,
25212
- "data-testid": "increment",
25213
- "aria-hidden": "true",
25214
25393
  "icon": incrementIcon.value,
25394
+ "key": "increment-btn",
25215
25395
  "onClick": onControlClick,
25216
- "onPointerup": onControlMouseup,
25217
25396
  "onPointerdown": onUpControlMousedown,
25397
+ "onPointerup": onControlMouseup,
25398
+ "onPointercancel": onControlPointerCancel,
25218
25399
  "size": controlNodeSize.value,
25219
25400
  "tabindex": "-1"
25220
25401
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25234,18 +25415,19 @@
25234
25415
  }
25235
25416
  function decrementControlNode() {
25236
25417
  return !slots.decrement ? vue.createVNode(VBtn, {
25418
+ "aria-hidden": "true",
25419
+ "data-testid": "decrement",
25237
25420
  "disabled": !canDecrease.value,
25238
25421
  "flat": true,
25239
- "key": "decrement-btn",
25240
25422
  "height": controlNodeDefaultHeight.value,
25241
- "data-testid": "decrement",
25242
- "aria-hidden": "true",
25243
25423
  "icon": decrementIcon.value,
25244
- "size": controlNodeSize.value,
25245
- "tabindex": "-1",
25424
+ "key": "decrement-btn",
25246
25425
  "onClick": onControlClick,
25426
+ "onPointerdown": onDownControlMousedown,
25247
25427
  "onPointerup": onControlMouseup,
25248
- "onPointerdown": onDownControlMousedown
25428
+ "onPointercancel": onControlPointerCancel,
25429
+ "size": controlNodeSize.value,
25430
+ "tabindex": "-1"
25249
25431
  }, null) : vue.createVNode(VDefaultsProvider, {
25250
25432
  "key": "decrement-defaults",
25251
25433
  "defaults": {
@@ -25262,7 +25444,7 @@
25262
25444
  });
25263
25445
  }
25264
25446
  function controlNode() {
25265
- return vue.createVNode("div", {
25447
+ return vue.createElementVNode("div", {
25266
25448
  "class": "v-number-input__control"
25267
25449
  }, [decrementControlNode(), vue.createVNode(VDivider, {
25268
25450
  "vertical": controlVariant.value !== 'stacked'
@@ -25273,17 +25455,17 @@
25273
25455
  "vertical": true
25274
25456
  }, null) : undefined;
25275
25457
  }
25276
- const appendInnerControl = controlVariant.value === 'split' ? vue.createVNode("div", {
25458
+ const appendInnerControl = controlVariant.value === 'split' ? vue.createElementVNode("div", {
25277
25459
  "class": "v-number-input__control"
25278
25460
  }, [vue.createVNode(VDivider, {
25279
25461
  "vertical": true
25280
- }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]);
25462
+ }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : vue.createElementVNode(vue.Fragment, null, [dividerNode(), controlNode()]);
25281
25463
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
25282
- const prependInnerControl = controlVariant.value === 'split' ? vue.createVNode("div", {
25464
+ const prependInnerControl = controlVariant.value === 'split' ? vue.createElementVNode("div", {
25283
25465
  "class": "v-number-input__control"
25284
25466
  }, [decrementControlNode(), vue.createVNode(VDivider, {
25285
25467
  "vertical": true
25286
- }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
25468
+ }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createElementVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
25287
25469
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
25288
25470
  return vue.createVNode(VTextField, vue.mergeProps({
25289
25471
  "ref": vTextFieldRef,
@@ -25311,13 +25493,13 @@
25311
25493
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
25312
25494
  args[_key] = arguments[_key];
25313
25495
  }
25314
- return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
25496
+ return vue.createElementVNode(vue.Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
25315
25497
  } : undefined,
25316
25498
  'prepend-inner': hasPrependInner ? function () {
25317
25499
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
25318
25500
  args[_key2] = arguments[_key2];
25319
25501
  }
25320
- return vue.createVNode(vue.Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
25502
+ return vue.createElementVNode(vue.Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
25321
25503
  } : undefined
25322
25504
  });
25323
25505
  });
@@ -25481,16 +25663,16 @@
25481
25663
  });
25482
25664
  useRender(() => {
25483
25665
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
25484
- return vue.createVNode("div", vue.mergeProps({
25666
+ return vue.createElementVNode("div", vue.mergeProps({
25485
25667
  "class": ['v-otp-input', {
25486
25668
  'v-otp-input--divided': !!props.divider
25487
25669
  }, props.class],
25488
25670
  "style": [props.style]
25489
- }, rootAttrs), [vue.createVNode("div", {
25671
+ }, rootAttrs), [vue.createElementVNode("div", {
25490
25672
  "ref": contentRef,
25491
25673
  "class": "v-otp-input__content",
25492
- "style": [dimensionStyles.value]
25493
- }, [fields.value.map((_, i) => vue.createVNode(vue.Fragment, null, [props.divider && i !== 0 && vue.createVNode("span", {
25674
+ "style": vue.normalizeStyle([dimensionStyles.value])
25675
+ }, [fields.value.map((_, i) => vue.createElementVNode(vue.Fragment, null, [props.divider && i !== 0 && vue.createElementVNode("span", {
25494
25676
  "class": "v-otp-input__divider"
25495
25677
  }, [props.divider]), vue.createVNode(VField, {
25496
25678
  "focused": isFocused.value && props.focusAll || focusIndex.value === i,
@@ -25499,12 +25681,12 @@
25499
25681
  ...slots,
25500
25682
  loader: undefined,
25501
25683
  default: () => {
25502
- return vue.createVNode("input", {
25684
+ return vue.createElementVNode("input", {
25503
25685
  "ref": val => inputRef.value[i] = val,
25504
25686
  "aria-label": t(props.label, i + 1),
25505
25687
  "autofocus": i === 0 && props.autofocus,
25506
25688
  "autocomplete": "one-time-code",
25507
- "class": ['v-otp-input__field'],
25689
+ "class": vue.normalizeClass(['v-otp-input__field']),
25508
25690
  "disabled": props.disabled,
25509
25691
  "inputmode": props.type === 'number' ? 'numeric' : 'text',
25510
25692
  "min": props.type === 'number' ? 0 : undefined,
@@ -25519,7 +25701,7 @@
25519
25701
  "onPaste": event => onPaste(i, event)
25520
25702
  }, null);
25521
25703
  }
25522
- })])), vue.createVNode("input", vue.mergeProps({
25704
+ })])), vue.createElementVNode("input", vue.mergeProps({
25523
25705
  "class": "v-otp-input-input",
25524
25706
  "type": "hidden"
25525
25707
  }, inputAttrs, {
@@ -25624,10 +25806,10 @@
25624
25806
  });
25625
25807
  }
25626
25808
  useRender(() => vue.createVNode(VImg, {
25627
- "class": ['v-parallax', {
25809
+ "class": vue.normalizeClass(['v-parallax', {
25628
25810
  'v-parallax--active': isIntersecting.value
25629
- }, props.class],
25630
- "style": props.style,
25811
+ }, props.class]),
25812
+ "style": vue.normalizeStyle(props.style),
25631
25813
  "ref": root,
25632
25814
  "cover": true,
25633
25815
  "onLoadstart": onScroll,
@@ -25727,7 +25909,7 @@
25727
25909
  isDisabled,
25728
25910
  isReadonly
25729
25911
  } = _ref2;
25730
- return vue.createVNode(vue.Fragment, null, [label && vue.createVNode(VLabel, {
25912
+ return vue.createElementVNode(vue.Fragment, null, [label && vue.createVNode(VLabel, {
25731
25913
  "id": id.value
25732
25914
  }, {
25733
25915
  default: () => [label]
@@ -25865,7 +26047,7 @@
25865
26047
  "focused": isFocused.value
25866
26048
  }), {
25867
26049
  ...slots,
25868
- prepend: hasPrepend ? slotProps => vue.createVNode(vue.Fragment, null, [slots.label?.(slotProps) ?? (props.label ? vue.createVNode(VLabel, {
26050
+ prepend: hasPrepend ? slotProps => vue.createElementVNode(vue.Fragment, null, [slots.label?.(slotProps) ?? (props.label ? vue.createVNode(VLabel, {
25869
26051
  "class": "v-slider__label",
25870
26052
  "text": props.label
25871
26053
  }, null) : undefined), slots.prepend?.(slotProps)]) : undefined,
@@ -25874,18 +26056,18 @@
25874
26056
  id,
25875
26057
  messagesId
25876
26058
  } = _ref4;
25877
- return vue.createVNode("div", {
26059
+ return vue.createElementVNode("div", {
25878
26060
  "class": "v-slider__container",
25879
26061
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
25880
26062
  "onTouchstartPassive": !readonly.value ? onSliderTouchstart : undefined
25881
- }, [vue.createVNode("input", {
26063
+ }, [vue.createElementVNode("input", {
25882
26064
  "id": `${id.value}_start`,
25883
26065
  "name": props.name || id.value,
25884
26066
  "disabled": !!props.disabled,
25885
26067
  "readonly": !!props.readonly,
25886
26068
  "tabindex": "-1",
25887
26069
  "value": model.value[0]
25888
- }, null), vue.createVNode("input", {
26070
+ }, null), vue.createElementVNode("input", {
25889
26071
  "id": `${id.value}_stop`,
25890
26072
  "name": props.name || id.value,
25891
26073
  "disabled": !!props.disabled,
@@ -26084,16 +26266,16 @@
26084
26266
  size: props.size,
26085
26267
  variant: 'plain'
26086
26268
  };
26087
- return vue.createVNode(vue.Fragment, null, [vue.createVNode("label", {
26269
+ return vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("label", {
26088
26270
  "for": id,
26089
- "class": {
26271
+ "class": vue.normalizeClass({
26090
26272
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
26091
26273
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
26092
- },
26274
+ }),
26093
26275
  "onMouseenter": onMouseenter,
26094
26276
  "onMouseleave": onMouseleave,
26095
26277
  "onClick": onClick
26096
- }, [vue.createVNode("span", {
26278
+ }, [vue.createElementVNode("span", {
26097
26279
  "class": "v-rating__hidden"
26098
26280
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
26099
26281
  ...itemState.value[index],
@@ -26103,7 +26285,7 @@
26103
26285
  rating: normalizedValue.value
26104
26286
  }) : vue.createVNode(VBtn, vue.mergeProps({
26105
26287
  "aria-label": t(props.itemAriaLabel, value, props.length)
26106
- }, btnProps), null)]), vue.createVNode("input", {
26288
+ }, btnProps), null)]), vue.createElementVNode("input", {
26107
26289
  "class": "v-rating__hidden",
26108
26290
  "name": name.value,
26109
26291
  "id": id,
@@ -26117,31 +26299,31 @@
26117
26299
  }
26118
26300
  function createLabel(labelProps) {
26119
26301
  if (slots['item-label']) return slots['item-label'](labelProps);
26120
- if (labelProps.label) return vue.createVNode("span", null, [labelProps.label]);
26121
- return vue.createVNode("span", null, [vue.createTextVNode("\xA0")]);
26302
+ if (labelProps.label) return vue.createElementVNode("span", null, [labelProps.label]);
26303
+ return vue.createElementVNode("span", null, [vue.createTextVNode("\xA0")]);
26122
26304
  }
26123
26305
  useRender(() => {
26124
26306
  const hasLabels = !!props.itemLabels?.length || slots['item-label'];
26125
26307
  return vue.createVNode(props.tag, {
26126
- "class": ['v-rating', {
26308
+ "class": vue.normalizeClass(['v-rating', {
26127
26309
  'v-rating--hover': props.hover,
26128
26310
  'v-rating--readonly': props.readonly
26129
- }, themeClasses.value, props.class],
26130
- "style": props.style
26311
+ }, themeClasses.value, props.class]),
26312
+ "style": vue.normalizeStyle(props.style)
26131
26313
  }, {
26132
26314
  default: () => [vue.createVNode(VRatingItem, {
26133
26315
  "value": 0,
26134
26316
  "index": -1,
26135
26317
  "showStar": false
26136
- }, null), range.value.map((value, i) => vue.createVNode("div", {
26318
+ }, null), range.value.map((value, i) => vue.createElementVNode("div", {
26137
26319
  "class": "v-rating__wrapper"
26138
26320
  }, [hasLabels && props.itemLabelPosition === 'top' ? createLabel({
26139
26321
  value,
26140
26322
  index: i,
26141
26323
  label: props.itemLabels?.[i]
26142
- }) : undefined, vue.createVNode("div", {
26324
+ }) : undefined, vue.createElementVNode("div", {
26143
26325
  "class": "v-rating__item"
26144
- }, [props.halfIncrements ? vue.createVNode(vue.Fragment, null, [vue.createVNode(VRatingItem, {
26326
+ }, [props.halfIncrements ? vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VRatingItem, {
26145
26327
  "value": value - 0.5,
26146
26328
  "index": i * 2
26147
26329
  }, null), vue.createVNode(VRatingItem, {
@@ -26198,8 +26380,8 @@
26198
26380
  };
26199
26381
  function genBone(type) {
26200
26382
  let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
26201
- return vue.createVNode("div", {
26202
- "class": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]
26383
+ return vue.createElementVNode("div", {
26384
+ "class": vue.normalizeClass(['v-skeleton-loader__bone', `v-skeleton-loader__${type}`])
26203
26385
  }, [children]);
26204
26386
  }
26205
26387
  function genBones(bone) {
@@ -26285,7 +26467,7 @@
26285
26467
  ariaLabel: t(props.loadingText),
26286
26468
  role: 'alert'
26287
26469
  };
26288
- return vue.createVNode("div", vue.mergeProps({
26470
+ return vue.createElementVNode("div", vue.mergeProps({
26289
26471
  "class": ['v-skeleton-loader', {
26290
26472
  'v-skeleton-loader--boilerplate': props.boilerplate
26291
26473
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
@@ -26491,7 +26673,7 @@
26491
26673
  "onTouchend": onTouchend,
26492
26674
  "onAfterLeave": onAfterLeave
26493
26675
  }, scopeId), {
26494
- default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && vue.createVNode("div", {
26676
+ default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && vue.createElementVNode("div", {
26495
26677
  "key": "timer",
26496
26678
  "class": "v-snackbar__timer"
26497
26679
  }, [vue.createVNode(VProgressLinear, {
@@ -26499,7 +26681,7 @@
26499
26681
  "color": typeof props.timer === 'string' ? props.timer : 'info',
26500
26682
  "max": props.timeout,
26501
26683
  "model-value": countdown.time.value
26502
- }, null)]), hasContent && vue.createVNode("div", {
26684
+ }, null)]), hasContent && vue.createElementVNode("div", {
26503
26685
  "key": "content",
26504
26686
  "class": "v-snackbar__content",
26505
26687
  "role": "status",
@@ -26513,7 +26695,7 @@
26513
26695
  }
26514
26696
  }
26515
26697
  }, {
26516
- default: () => [vue.createVNode("div", {
26698
+ default: () => [vue.createElementVNode("div", {
26517
26699
  "class": "v-snackbar__actions"
26518
26700
  }, [slots.actions({
26519
26701
  isActive
@@ -26597,7 +26779,7 @@
26597
26779
  modelValue: _,
26598
26780
  ...snackbarProps
26599
26781
  } = VSnackbar.filterProps(props);
26600
- return vue.createVNode(vue.Fragment, null, [isVisible.value && !!current.value && (slots.default ? vue.createVNode(VDefaultsProvider, {
26782
+ return vue.createElementVNode(vue.Fragment, null, [isVisible.value && !!current.value && (slots.default ? vue.createVNode(VDefaultsProvider, {
26601
26783
  "defaults": {
26602
26784
  VSnackbar: current.value
26603
26785
  }
@@ -26613,7 +26795,7 @@
26613
26795
  text: slots.text ? () => slots.text?.({
26614
26796
  item: current.value
26615
26797
  }) : undefined,
26616
- actions: hasActions ? () => vue.createVNode(vue.Fragment, null, [!slots.actions ? vue.createVNode(VBtn, vue.mergeProps(btnProps.value, {
26798
+ actions: hasActions ? () => vue.createElementVNode(vue.Fragment, null, [!slots.actions ? vue.createVNode(VBtn, vue.mergeProps(btnProps.value, {
26617
26799
  "onClick": onClickClose
26618
26800
  }), null) : vue.createVNode(VDefaultsProvider, {
26619
26801
  "defaults": {
@@ -26771,57 +26953,57 @@
26771
26953
  const smooth = vue.computed(() => typeof props.smooth === 'boolean' ? props.smooth ? 2 : 0 : Number(props.smooth));
26772
26954
  useRender(() => {
26773
26955
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
26774
- return vue.createVNode("svg", {
26956
+ return vue.createElementVNode("svg", {
26775
26957
  "display": "block"
26776
- }, [vue.createVNode("defs", null, [vue.createVNode("linearGradient", {
26958
+ }, [vue.createElementVNode("defs", null, [vue.createElementVNode("linearGradient", {
26777
26959
  "id": id.value,
26778
26960
  "gradientUnits": "userSpaceOnUse",
26779
26961
  "x1": props.gradientDirection === 'left' ? '100%' : '0',
26780
26962
  "y1": props.gradientDirection === 'top' ? '100%' : '0',
26781
26963
  "x2": props.gradientDirection === 'right' ? '100%' : '0',
26782
26964
  "y2": props.gradientDirection === 'bottom' ? '100%' : '0'
26783
- }, [gradientData.map((color, index) => vue.createVNode("stop", {
26965
+ }, [gradientData.map((color, index) => vue.createElementVNode("stop", {
26784
26966
  "offset": index / Math.max(gradientData.length - 1, 1),
26785
26967
  "stop-color": color || 'currentColor'
26786
- }, null))])]), vue.createVNode("clipPath", {
26968
+ }, null))])]), vue.createElementVNode("clipPath", {
26787
26969
  "id": `${id.value}-clip`
26788
- }, [bars.value.map(item => vue.createVNode("rect", {
26970
+ }, [bars.value.map(item => vue.createElementVNode("rect", {
26789
26971
  "x": item.x + offsetX.value,
26790
26972
  "y": item.y,
26791
26973
  "width": lineWidth.value,
26792
26974
  "height": item.height,
26793
26975
  "rx": smooth.value,
26794
26976
  "ry": smooth.value
26795
- }, [props.autoDraw && vue.createVNode(vue.Fragment, null, [vue.createVNode("animate", {
26977
+ }, [props.autoDraw && vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("animate", {
26796
26978
  "attributeName": "y",
26797
26979
  "from": item.y + item.height,
26798
26980
  "to": item.y,
26799
26981
  "dur": `${autoDrawDuration.value}ms`,
26800
26982
  "fill": "freeze"
26801
- }, null), vue.createVNode("animate", {
26983
+ }, null), vue.createElementVNode("animate", {
26802
26984
  "attributeName": "height",
26803
26985
  "from": "0",
26804
26986
  "to": item.height,
26805
26987
  "dur": `${autoDrawDuration.value}ms`,
26806
26988
  "fill": "freeze"
26807
- }, null)])]))]), hasLabels.value && vue.createVNode("g", {
26989
+ }, null)])]))]), hasLabels.value && vue.createElementVNode("g", {
26808
26990
  "key": "labels",
26809
26991
  "style": {
26810
26992
  textAnchor: 'middle',
26811
26993
  dominantBaseline: 'mathematical',
26812
26994
  fill: 'currentColor'
26813
26995
  }
26814
- }, [parsedLabels.value.map((item, i) => vue.createVNode("text", {
26996
+ }, [parsedLabels.value.map((item, i) => vue.createElementVNode("text", {
26815
26997
  "x": item.x + offsetX.value + lineWidth.value / 2,
26816
26998
  "y": parseInt(props.height, 10) - 2 + (parseInt(props.labelSize, 10) || 7 * 0.75),
26817
26999
  "font-size": Number(props.labelSize) || 7
26818
27000
  }, [slots.label?.({
26819
27001
  index: i,
26820
27002
  value: item.value
26821
- }) ?? item.value]))]), vue.createVNode("g", {
27003
+ }) ?? item.value]))]), vue.createElementVNode("g", {
26822
27004
  "clip-path": `url(#${id.value}-clip)`,
26823
27005
  "fill": `url(#${id.value})`
26824
- }, [vue.createVNode("rect", {
27006
+ }, [vue.createElementVNode("rect", {
26825
27007
  "x": 0,
26826
27008
  "y": 0,
26827
27009
  "width": Math.max(props.modelValue.length * lineWidth.value, Number(props.width)),
@@ -27000,39 +27182,39 @@
27000
27182
  }
27001
27183
  useRender(() => {
27002
27184
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
27003
- return vue.createVNode("svg", {
27185
+ return vue.createElementVNode("svg", {
27004
27186
  "display": "block",
27005
27187
  "stroke-width": parseFloat(props.lineWidth) ?? 4
27006
- }, [vue.createVNode("defs", null, [vue.createVNode("linearGradient", {
27188
+ }, [vue.createElementVNode("defs", null, [vue.createElementVNode("linearGradient", {
27007
27189
  "id": id.value,
27008
27190
  "gradientUnits": "userSpaceOnUse",
27009
27191
  "x1": props.gradientDirection === 'left' ? '100%' : '0',
27010
27192
  "y1": props.gradientDirection === 'top' ? '100%' : '0',
27011
27193
  "x2": props.gradientDirection === 'right' ? '100%' : '0',
27012
27194
  "y2": props.gradientDirection === 'bottom' ? '100%' : '0'
27013
- }, [gradientData.map((color, index) => vue.createVNode("stop", {
27195
+ }, [gradientData.map((color, index) => vue.createElementVNode("stop", {
27014
27196
  "offset": index / Math.max(gradientData.length - 1, 1),
27015
27197
  "stop-color": color || 'currentColor'
27016
- }, null))])]), hasLabels.value && vue.createVNode("g", {
27198
+ }, null))])]), hasLabels.value && vue.createElementVNode("g", {
27017
27199
  "key": "labels",
27018
27200
  "style": {
27019
27201
  textAnchor: 'middle',
27020
27202
  dominantBaseline: 'mathematical',
27021
27203
  fill: 'currentColor'
27022
27204
  }
27023
- }, [parsedLabels.value.map((item, i) => vue.createVNode("text", {
27205
+ }, [parsedLabels.value.map((item, i) => vue.createElementVNode("text", {
27024
27206
  "x": item.x + lineWidth.value / 2 + lineWidth.value / 2,
27025
27207
  "y": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),
27026
27208
  "font-size": Number(props.labelSize) || 7
27027
27209
  }, [slots.label?.({
27028
27210
  index: i,
27029
27211
  value: item.value
27030
- }) ?? item.value]))]), vue.createVNode("path", {
27212
+ }) ?? item.value]))]), vue.createElementVNode("path", {
27031
27213
  "ref": path,
27032
27214
  "d": genPath$1(props.fill),
27033
27215
  "fill": props.fill ? `url(#${id.value})` : 'none',
27034
27216
  "stroke": props.fill ? 'none' : `url(#${id.value})`
27035
- }, null), props.fill && vue.createVNode("path", {
27217
+ }, null), props.fill && vue.createElementVNode("path", {
27036
27218
  "d": genPath$1(false),
27037
27219
  "fill": "none",
27038
27220
  "stroke": props.color ?? props.gradient?.[0]
@@ -27200,7 +27382,7 @@
27200
27382
  const nextSlotProps = {
27201
27383
  onClick: onClickNext
27202
27384
  };
27203
- return vue.createVNode("div", {
27385
+ return vue.createElementVNode("div", {
27204
27386
  "class": "v-stepper-actions"
27205
27387
  }, [vue.createVNode(VDefaultsProvider, {
27206
27388
  "defaults": {
@@ -27274,7 +27456,7 @@
27274
27456
  const VStepperItem = genericComponent()({
27275
27457
  name: 'VStepperItem',
27276
27458
  directives: {
27277
- Ripple
27459
+ vRipple: Ripple
27278
27460
  },
27279
27461
  props: makeVStepperItemProps(),
27280
27462
  emits: {
@@ -27313,12 +27495,12 @@
27313
27495
  function onClick() {
27314
27496
  group?.toggle();
27315
27497
  }
27316
- return vue.withDirectives(vue.createVNode("button", {
27317
- "class": ['v-stepper-item', {
27498
+ return vue.withDirectives(vue.createElementVNode("button", {
27499
+ "class": vue.normalizeClass(['v-stepper-item', {
27318
27500
  'v-stepper-item--complete': hasCompleted.value,
27319
27501
  'v-stepper-item--disabled': props.disabled,
27320
27502
  'v-stepper-item--error': hasError.value
27321
- }, group?.selectedClass.value],
27503
+ }, group?.selectedClass.value]),
27322
27504
  "disabled": !props.editable,
27323
27505
  "type": "button",
27324
27506
  "onClick": onClick
@@ -27331,15 +27513,15 @@
27331
27513
  default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? vue.createVNode(VIcon, {
27332
27514
  "icon": icon.value
27333
27515
  }, null) : step.value)]
27334
- }), vue.createVNode("div", {
27516
+ }), vue.createElementVNode("div", {
27335
27517
  "class": "v-stepper-item__content"
27336
- }, [hasTitle && vue.createVNode("div", {
27518
+ }, [hasTitle && vue.createElementVNode("div", {
27337
27519
  "key": "title",
27338
27520
  "class": "v-stepper-item__title"
27339
- }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && vue.createVNode("div", {
27521
+ }, [slots.title?.(slotProps.value) ?? props.title]), hasSubtitle && vue.createElementVNode("div", {
27340
27522
  "key": "subtitle",
27341
27523
  "class": "v-stepper-item__subtitle"
27342
- }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[vue.resolveDirective("ripple"), props.ripple && props.editable, null]]);
27524
+ }, [slots.subtitle?.(slotProps.value) ?? props.subtitle]), slots.default?.(slotProps.value)])]), [[Ripple, props.ripple && props.editable, null]]);
27343
27525
  });
27344
27526
  return {};
27345
27527
  }
@@ -27535,7 +27717,7 @@
27535
27717
  raw,
27536
27718
  ...item
27537
27719
  } = _ref2;
27538
- return vue.createVNode(vue.Fragment, null, [!!index && vue.createVNode(VDivider, null, null), vue.createVNode(VStepperItem, item, {
27720
+ return vue.createElementVNode(vue.Fragment, null, [!!index && vue.createVNode(VDivider, null, null), vue.createVNode(VStepperItem, item, {
27539
27721
  default: slots[`header-item.${item.value}`] ?? slots.header,
27540
27722
  icon: slots.icon,
27541
27723
  title: slots.title,
@@ -27676,14 +27858,14 @@
27676
27858
  backgroundColorClasses,
27677
27859
  backgroundColorStyles
27678
27860
  } = _ref3;
27679
- return vue.createVNode("div", {
27680
- "class": ['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],
27681
- "style": backgroundColorStyles.value,
27861
+ return vue.createElementVNode("div", {
27862
+ "class": vue.normalizeClass(['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
27863
+ "style": vue.normalizeStyle(backgroundColorStyles.value),
27682
27864
  "onClick": onTrackClick
27683
- }, [slots['track-true'] && vue.createVNode("div", {
27865
+ }, [slots['track-true'] && vue.createElementVNode("div", {
27684
27866
  "key": "prepend",
27685
27867
  "class": "v-switch__track-true"
27686
- }, [slots['track-true'](slotProps)]), slots['track-false'] && vue.createVNode("div", {
27868
+ }, [slots['track-true'](slotProps)]), slots['track-false'] && vue.createElementVNode("div", {
27687
27869
  "key": "append",
27688
27870
  "class": "v-switch__track-false"
27689
27871
  }, [slots['track-false'](slotProps)])]);
@@ -27695,11 +27877,11 @@
27695
27877
  backgroundColorClasses,
27696
27878
  backgroundColorStyles
27697
27879
  } = _ref4;
27698
- return vue.createVNode(vue.Fragment, null, [inputNode, vue.createVNode("div", {
27699
- "class": ['v-switch__thumb', {
27880
+ return vue.createElementVNode(vue.Fragment, null, [inputNode, vue.createElementVNode("div", {
27881
+ "class": vue.normalizeClass(['v-switch__thumb', {
27700
27882
  'v-switch__thumb--filled': icon || props.loading
27701
- }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value],
27702
- "style": props.inset ? undefined : backgroundColorStyles.value
27883
+ }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value]),
27884
+ "style": vue.normalizeStyle(props.inset ? undefined : backgroundColorStyles.value)
27703
27885
  }, [slots.thumb ? vue.createVNode(VDefaultsProvider, {
27704
27886
  "defaults": {
27705
27887
  VIcon: {
@@ -27787,10 +27969,10 @@
27787
27969
  absolute: vue.toRef(() => props.absolute)
27788
27970
  });
27789
27971
  useRender(() => vue.createVNode(props.tag, {
27790
- "class": ['v-system-bar', {
27972
+ "class": vue.normalizeClass(['v-system-bar', {
27791
27973
  'v-system-bar--window': props.window
27792
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
27793
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
27974
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
27975
+ "style": vue.normalizeStyle([backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style])
27794
27976
  }, slots));
27795
27977
  return {};
27796
27978
  }
@@ -27881,10 +28063,10 @@
27881
28063
  "onGroup:selected": updateSlider
27882
28064
  }), {
27883
28065
  ...slots,
27884
- default: () => vue.createVNode(vue.Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && vue.createVNode("div", {
28066
+ default: () => vue.createElementVNode(vue.Fragment, null, [slots.default?.() ?? props.text, !props.hideSlider && vue.createElementVNode("div", {
27885
28067
  "ref": sliderEl,
27886
- "class": ['v-tab__slider', sliderColorClasses.value],
27887
- "style": sliderColorStyles.value
28068
+ "class": vue.normalizeClass(['v-tab__slider', sliderColorClasses.value]),
28069
+ "style": vue.normalizeStyle(sliderColorStyles.value)
27888
28070
  }, null)])
27889
28071
  });
27890
28072
  });
@@ -28036,7 +28218,7 @@
28036
28218
  useRender(() => {
28037
28219
  const slideGroupProps = VSlideGroup.filterProps(props);
28038
28220
  const hasWindow = !!(slots.window || props.items.length > 0);
28039
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(VSlideGroup, vue.mergeProps(slideGroupProps, {
28221
+ return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VSlideGroup, vue.mergeProps(slideGroupProps, {
28040
28222
  "modelValue": model.value,
28041
28223
  "onUpdate:modelValue": $event => model.value = $event,
28042
28224
  "class": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {
@@ -28109,7 +28291,7 @@
28109
28291
  const VTextarea = genericComponent()({
28110
28292
  name: 'VTextarea',
28111
28293
  directives: {
28112
- Intersect
28294
+ vIntersect: Intersect
28113
28295
  },
28114
28296
  inheritAttrs: false,
28115
28297
  props: makeVTextareaProps(),
@@ -28282,9 +28464,9 @@
28282
28464
  ...slotProps
28283
28465
  }
28284
28466
  } = _ref3;
28285
- return vue.createVNode(vue.Fragment, null, [props.prefix && vue.createVNode("span", {
28467
+ return vue.createElementVNode(vue.Fragment, null, [props.prefix && vue.createElementVNode("span", {
28286
28468
  "class": "v-text-field__prefix"
28287
- }, [props.prefix]), vue.withDirectives(vue.createVNode("textarea", vue.mergeProps({
28469
+ }, [props.prefix]), vue.withDirectives(vue.createElementVNode("textarea", vue.mergeProps({
28288
28470
  "ref": textareaRef,
28289
28471
  "class": fieldClass,
28290
28472
  "value": model.value,
@@ -28297,24 +28479,24 @@
28297
28479
  "name": props.name,
28298
28480
  "onFocus": onFocus,
28299
28481
  "onBlur": blur
28300
- }, slotProps, inputAttrs), null), [[vue.resolveDirective("intersect"), {
28482
+ }, slotProps, inputAttrs), null), [[Intersect, {
28301
28483
  handler: onIntersect
28302
28484
  }, null, {
28303
28485
  once: true
28304
- }]]), props.autoGrow && vue.withDirectives(vue.createVNode("textarea", {
28305
- "class": [fieldClass, 'v-textarea__sizer'],
28486
+ }]]), props.autoGrow && vue.withDirectives(vue.createElementVNode("textarea", {
28487
+ "class": vue.normalizeClass([fieldClass, 'v-textarea__sizer']),
28306
28488
  "id": `${slotProps.id}-sizer`,
28307
28489
  "onUpdate:modelValue": $event => model.value = $event,
28308
28490
  "ref": sizerRef,
28309
28491
  "readonly": true,
28310
28492
  "aria-hidden": "true"
28311
- }, null), [[vue.vModelText, model.value]]), props.suffix && vue.createVNode("span", {
28493
+ }, null), [[vue.vModelText, model.value]]), props.suffix && vue.createElementVNode("span", {
28312
28494
  "class": "v-text-field__suffix"
28313
28495
  }, [props.suffix])]);
28314
28496
  }
28315
28497
  });
28316
28498
  },
28317
- details: hasDetails ? slotProps => vue.createVNode(vue.Fragment, null, [slots.details?.(slotProps), hasCounter && vue.createVNode(vue.Fragment, null, [vue.createVNode("span", null, null), vue.createVNode(VCounter, {
28499
+ details: hasDetails ? slotProps => vue.createElementVNode(vue.Fragment, null, [slots.details?.(slotProps), hasCounter && vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("span", null, null), vue.createVNode(VCounter, {
28318
28500
  "active": props.persistentCounter || isFocused.value,
28319
28501
  "value": counterValue.value,
28320
28502
  "max": max.value,
@@ -28345,8 +28527,8 @@
28345
28527
  return () => {
28346
28528
  if (!props.withBackground) return slots.default?.();
28347
28529
  return vue.createVNode(props.tag, {
28348
- "class": ['v-theme-provider', themeClasses.value, props.class],
28349
- "style": props.style
28530
+ "class": vue.normalizeClass(['v-theme-provider', themeClasses.value, props.class]),
28531
+ "style": vue.normalizeStyle(props.style)
28350
28532
  }, {
28351
28533
  default: () => [slots.default?.()]
28352
28534
  });
@@ -28391,21 +28573,21 @@
28391
28573
  backgroundColorClasses: lineColorClasses,
28392
28574
  backgroundColorStyles: lineColorStyles
28393
28575
  } = useBackgroundColor(() => props.lineColor);
28394
- useRender(() => vue.createVNode("div", {
28395
- "class": ['v-timeline-divider', {
28576
+ useRender(() => vue.createElementVNode("div", {
28577
+ "class": vue.normalizeClass(['v-timeline-divider', {
28396
28578
  'v-timeline-divider--fill-dot': props.fillDot
28397
- }, props.class],
28398
- "style": props.style
28399
- }, [vue.createVNode("div", {
28400
- "class": ['v-timeline-divider__before', lineColorClasses.value],
28401
- "style": lineColorStyles.value
28402
- }, null), !props.hideDot && vue.createVNode("div", {
28579
+ }, props.class]),
28580
+ "style": vue.normalizeStyle(props.style)
28581
+ }, [vue.createElementVNode("div", {
28582
+ "class": vue.normalizeClass(['v-timeline-divider__before', lineColorClasses.value]),
28583
+ "style": vue.normalizeStyle(lineColorStyles.value)
28584
+ }, null), !props.hideDot && vue.createElementVNode("div", {
28403
28585
  "key": "dot",
28404
- "class": ['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value],
28405
- "style": sizeStyles.value
28406
- }, [vue.createVNode("div", {
28407
- "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
28408
- "style": backgroundColorStyles.value
28586
+ "class": vue.normalizeClass(['v-timeline-divider__dot', elevationClasses.value, roundedClasses.value, sizeClasses.value]),
28587
+ "style": vue.normalizeStyle(sizeStyles.value)
28588
+ }, [vue.createElementVNode("div", {
28589
+ "class": vue.normalizeClass(['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value]),
28590
+ "style": vue.normalizeStyle(backgroundColorStyles.value)
28409
28591
  }, [!slots.default ? vue.createVNode(VIcon, {
28410
28592
  "key": "icon",
28411
28593
  "color": props.iconColor,
@@ -28421,9 +28603,9 @@
28421
28603
  size: props.size
28422
28604
  }
28423
28605
  }
28424
- }, slots.default)])]), vue.createVNode("div", {
28425
- "class": ['v-timeline-divider__after', lineColorClasses.value],
28426
- "style": lineColorStyles.value
28606
+ }, slots.default)])]), vue.createElementVNode("div", {
28607
+ "class": vue.normalizeClass(['v-timeline-divider__after', lineColorClasses.value]),
28608
+ "style": vue.normalizeStyle(lineColorStyles.value)
28427
28609
  }, null)]));
28428
28610
  return {};
28429
28611
  }
@@ -28474,19 +28656,19 @@
28474
28656
  }, {
28475
28657
  flush: 'post'
28476
28658
  });
28477
- useRender(() => vue.createVNode("div", {
28478
- "class": ['v-timeline-item', {
28659
+ useRender(() => vue.createElementVNode("div", {
28660
+ "class": vue.normalizeClass(['v-timeline-item', {
28479
28661
  'v-timeline-item--fill-dot': props.fillDot,
28480
28662
  'v-timeline-item--side-start': props.side === 'start',
28481
28663
  'v-timeline-item--side-end': props.side === 'end'
28482
- }, props.class],
28483
- "style": [{
28664
+ }, props.class]),
28665
+ "style": vue.normalizeStyle([{
28484
28666
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
28485
28667
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
28486
- }, props.style]
28487
- }, [vue.createVNode("div", {
28668
+ }, props.style])
28669
+ }, [vue.createElementVNode("div", {
28488
28670
  "class": "v-timeline-item__body",
28489
- "style": dimensionStyles.value
28671
+ "style": vue.normalizeStyle(dimensionStyles.value)
28490
28672
  }, [slots.default?.()]), vue.createVNode(VTimelineDivider, {
28491
28673
  "ref": dotRef,
28492
28674
  "hideDot": props.hideDot,
@@ -28499,7 +28681,7 @@
28499
28681
  "rounded": props.rounded
28500
28682
  }, {
28501
28683
  default: slots.icon
28502
- }), props.density !== 'compact' && vue.createVNode("div", {
28684
+ }), props.density !== 'compact' && vue.createElementVNode("div", {
28503
28685
  "class": "v-timeline-item__opposite"
28504
28686
  }, [!props.hideOpposite && slots.opposite?.()])]));
28505
28687
  return {};
@@ -28592,12 +28774,12 @@
28592
28774
  }
28593
28775
  });
28594
28776
  useRender(() => vue.createVNode(props.tag, {
28595
- "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
28777
+ "class": vue.normalizeClass(['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
28596
28778
  'v-timeline--inset-line': !!props.lineInset
28597
- }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class],
28598
- "style": [{
28779
+ }, themeClasses.value, densityClasses.value, sideClasses.value, rtlClasses.value, props.class]),
28780
+ "style": vue.normalizeStyle([{
28599
28781
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
28600
- }, props.style]
28782
+ }, props.style])
28601
28783
  }, slots));
28602
28784
  return {};
28603
28785
  }
@@ -28623,9 +28805,9 @@
28623
28805
  variant: vue.toRef(() => props.variant)
28624
28806
  }
28625
28807
  });
28626
- useRender(() => vue.createVNode("div", {
28627
- "class": ['v-toolbar-items', props.class],
28628
- "style": props.style
28808
+ useRender(() => vue.createElementVNode("div", {
28809
+ "class": vue.normalizeClass(['v-toolbar-items', props.class]),
28810
+ "style": vue.normalizeStyle(props.style)
28629
28811
  }, [slots.default?.()]));
28630
28812
  return {};
28631
28813
  }
@@ -29222,7 +29404,7 @@
29222
29404
  };
29223
29405
  });
29224
29406
  }
29225
- const version$1 = "3.8.6";
29407
+ const version$1 = "3.8.8";
29226
29408
  createVuetify$1.version = version$1;
29227
29409
 
29228
29410
  // Vue's inject() can only be used in setup
@@ -29247,7 +29429,7 @@
29247
29429
  ...options
29248
29430
  });
29249
29431
  };
29250
- const version = "3.8.6";
29432
+ const version = "3.8.8";
29251
29433
  createVuetify.version = version;
29252
29434
 
29253
29435
  exports.blueprints = index;