vuetify 3.1.12 → 3.1.14

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 (490) hide show
  1. package/dist/_component-variables-labs.sass +2 -1
  2. package/dist/json/attributes.json +4138 -3902
  3. package/dist/json/importMap-labs.json +8 -4
  4. package/dist/json/importMap.json +154 -154
  5. package/dist/json/tags.json +608 -544
  6. package/dist/json/web-types.json +14730 -14109
  7. package/dist/vuetify-labs.css +479 -236
  8. package/dist/vuetify-labs.d.ts +2356 -1425
  9. package/dist/vuetify-labs.esm.js +716 -505
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +716 -507
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +156 -133
  14. package/dist/vuetify.d.ts +1772 -1110
  15. package/dist/vuetify.esm.js +556 -480
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +556 -482
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +202 -186
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  23. package/lib/components/VApp/VApp.mjs.map +1 -1
  24. package/lib/components/VApp/index.d.ts +2 -2
  25. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  26. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  27. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs +7 -5
  29. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  30. package/lib/components/VAutocomplete/index.d.ts +77 -71
  31. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  32. package/lib/components/VBadge/VBadge.mjs +1 -1
  33. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  34. package/lib/components/VBadge/index.d.ts +13 -13
  35. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  36. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  37. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  38. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
  39. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  40. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  41. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  42. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  43. package/lib/components/VBtn/index.d.ts +4 -4
  44. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  45. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  46. package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
  47. package/lib/components/VCalendar/VCalendarCategory.mjs.map +1 -1
  48. package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
  49. package/lib/components/VCalendar/VCalendarMonthly.mjs.map +1 -1
  50. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
  51. package/lib/components/VCalendar/mixins/calendar-base.mjs.map +1 -1
  52. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
  53. package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs.map +1 -1
  54. package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
  55. package/lib/components/VCalendar/mixins/times.mjs.map +1 -1
  56. package/lib/components/VCalendar/modes/column.mjs.map +1 -1
  57. package/lib/components/VCalendar/modes/common.mjs.map +1 -1
  58. package/lib/components/VCalendar/modes/stack.mjs.map +1 -1
  59. package/lib/components/VCalendar/util/events.mjs.map +1 -1
  60. package/lib/components/VCalendar/util/parser.mjs.map +1 -1
  61. package/lib/components/VCalendar/util/props.mjs.map +1 -1
  62. package/lib/components/VCalendar/util/timestamp.mjs.map +1 -1
  63. package/lib/components/VCard/VCard.mjs.map +1 -1
  64. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  65. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  66. package/lib/components/VCard/index.d.ts +1 -13
  67. package/lib/components/VCarousel/VCarousel.mjs +10 -10
  68. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  69. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  70. package/lib/components/VCarousel/index.d.ts +197 -19
  71. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  72. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  73. package/lib/components/VCheckbox/index.d.ts +14 -14
  74. package/lib/components/VChip/VChip.mjs +2 -2
  75. package/lib/components/VChip/VChip.mjs.map +1 -1
  76. package/lib/components/VChip/index.d.ts +14 -14
  77. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  78. package/lib/components/VColorPicker/VColorPicker.mjs +58 -61
  79. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  80. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  81. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  82. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  83. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  84. package/lib/components/VColorPicker/index.d.ts +113 -50
  85. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  86. package/lib/components/VCombobox/VCombobox.mjs +8 -6
  87. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  88. package/lib/components/VCombobox/index.d.ts +77 -71
  89. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  90. package/lib/components/VCounter/index.d.ts +123 -24
  91. package/lib/components/VData/VData.mjs.map +1 -1
  92. package/lib/components/VDataIterator/VDataFooter.mjs.map +1 -1
  93. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  94. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  95. package/lib/components/VDatePicker/VDatePickerDateTable.mjs.map +1 -1
  96. package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
  97. package/lib/components/VDatePicker/VDatePickerMonthTable.mjs.map +1 -1
  98. package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +1 -1
  99. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  100. package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +1 -1
  101. package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -1
  102. package/lib/components/VDatePicker/util/eventHelpers.mjs.map +1 -1
  103. package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +1 -1
  104. package/lib/components/VDatePicker/util/pad.mjs.map +1 -1
  105. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  106. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  107. package/lib/components/VDialog/index.d.ts +43 -43
  108. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  109. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  110. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  111. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  112. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  113. package/lib/components/VField/VField.mjs +3 -3
  114. package/lib/components/VField/VField.mjs.map +1 -1
  115. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  116. package/lib/components/VField/index.d.ts +20 -20
  117. package/lib/components/VFileInput/VFileInput.mjs +0 -1
  118. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  119. package/lib/components/VFileInput/index.d.ts +59 -65
  120. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  121. package/lib/components/VForm/VForm.mjs.map +1 -1
  122. package/lib/components/VGrid/VCol.mjs.map +1 -1
  123. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  124. package/lib/components/VGrid/VRow.mjs.map +1 -1
  125. package/lib/components/VHover/VHover.mjs.map +1 -1
  126. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  127. package/lib/components/VImg/VImg.mjs +3 -3
  128. package/lib/components/VImg/VImg.mjs.map +1 -1
  129. package/lib/components/VImg/index.d.ts +28 -28
  130. package/lib/components/VInput/InputIcon.mjs.map +1 -1
  131. package/lib/components/VInput/VInput.mjs +2 -2
  132. package/lib/components/VInput/VInput.mjs.map +1 -1
  133. package/lib/components/VInput/index.d.ts +14 -14
  134. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  135. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  136. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  137. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  138. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  139. package/lib/components/VLayout/index.d.ts +2 -2
  140. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  141. package/lib/components/VLazy/index.d.ts +13 -13
  142. package/lib/components/VList/VList.mjs +2 -1
  143. package/lib/components/VList/VList.mjs.map +1 -1
  144. package/lib/components/VList/VListChildren.mjs.map +1 -1
  145. package/lib/components/VList/VListGroup.mjs +24 -13
  146. package/lib/components/VList/VListGroup.mjs.map +1 -1
  147. package/lib/components/VList/VListItem.css +12 -0
  148. package/lib/components/VList/VListItem.mjs +2 -2
  149. package/lib/components/VList/VListItem.mjs.map +1 -1
  150. package/lib/components/VList/VListItem.sass +5 -0
  151. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  152. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  153. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  154. package/lib/components/VList/index.d.ts +14 -14
  155. package/lib/components/VList/list.mjs.map +1 -1
  156. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  157. package/lib/components/VMain/VMain.mjs.map +1 -1
  158. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  159. package/lib/components/VMenu/index.d.ts +43 -43
  160. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  161. package/lib/components/VMessages/index.d.ts +123 -24
  162. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +8 -2
  163. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  164. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  165. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  166. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  167. package/lib/components/VNoSsr/index.d.ts +1 -13
  168. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  169. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  170. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  171. package/lib/components/VOverlay/index.d.ts +15 -15
  172. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  173. package/lib/components/VOverlay/requestNewFrame.mjs.map +1 -1
  174. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  175. package/lib/components/VOverlay/useActivator.mjs +1 -0
  176. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  177. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  178. package/lib/components/VPagination/VPagination.mjs +2 -2
  179. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  180. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  181. package/lib/components/VPicker/VPicker.mjs.map +1 -1
  182. package/lib/components/VProgressCircular/VProgressCircular.css +3 -1
  183. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  184. package/lib/components/VProgressCircular/VProgressCircular.sass +3 -1
  185. package/lib/components/VProgressCircular/_variables.scss +1 -0
  186. package/lib/components/VProgressLinear/VProgressLinear.css +6 -3
  187. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  188. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -0
  189. package/lib/components/VProgressLinear/_variables.scss +1 -1
  190. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  191. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  192. package/lib/components/VRadioGroup/index.d.ts +14 -14
  193. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  194. package/lib/components/VRangeSlider/index.d.ts +14 -14
  195. package/lib/components/VRating/VRating.mjs.map +1 -1
  196. package/lib/components/VRating/index.d.ts +2 -2
  197. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  198. package/lib/components/VSelect/VSelect.mjs +31 -2
  199. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  200. package/lib/components/VSelect/index.d.ts +77 -71
  201. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  202. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  203. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  204. package/lib/components/VSlideGroup/VSlideGroup.mjs +29 -28
  205. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  206. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  207. package/lib/components/VSlideGroup/helpers.mjs.map +1 -1
  208. package/lib/components/VSlideGroup/index.d.ts +17 -17
  209. package/lib/components/VSlider/VSlider.mjs +1 -1
  210. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  211. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  212. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  213. package/lib/components/VSlider/index.d.ts +14 -14
  214. package/lib/components/VSlider/slider.mjs +1 -1
  215. package/lib/components/VSlider/slider.mjs.map +1 -1
  216. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  217. package/lib/components/VSnackbar/index.d.ts +43 -43
  218. package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
  219. package/lib/components/VSparkline/helpers/core.mjs.map +1 -1
  220. package/lib/components/VSparkline/helpers/math.mjs.map +1 -1
  221. package/lib/components/VSparkline/helpers/path.mjs.map +1 -1
  222. package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
  223. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  224. package/lib/components/VStepper/VStepperContent.mjs.map +1 -1
  225. package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
  226. package/lib/components/VSwitch/VSwitch.css +4 -0
  227. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  228. package/lib/components/VSwitch/VSwitch.sass +4 -0
  229. package/lib/components/VSwitch/index.d.ts +14 -14
  230. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  231. package/lib/components/VTable/VTable.css +1 -1
  232. package/lib/components/VTable/VTable.mjs.map +1 -1
  233. package/lib/components/VTable/VTable.sass +1 -1
  234. package/lib/components/VTabs/VTab.mjs.map +1 -1
  235. package/lib/components/VTabs/VTabs.mjs +25 -30
  236. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  237. package/lib/components/VTabs/index.d.ts +165 -28
  238. package/lib/components/VTextField/VTextField.mjs +3 -6
  239. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  240. package/lib/components/VTextField/index.d.ts +83 -77
  241. package/lib/components/VTextarea/VTextarea.mjs +9 -6
  242. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  243. package/lib/components/VTextarea/index.d.ts +56 -50
  244. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  245. package/lib/components/VTimePicker/SelectingTimes.mjs +3 -3
  246. package/lib/components/VTimePicker/SelectingTimes.mjs.map +1 -1
  247. package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
  248. package/lib/components/VTimePicker/VTimePickerClock.mjs.map +1 -1
  249. package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +1 -1
  250. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  251. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  252. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  253. package/lib/components/VTimeline/index.d.ts +8 -8
  254. package/lib/components/VToolbar/VToolbar.css +2 -0
  255. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  256. package/lib/components/VToolbar/VToolbar.sass +2 -0
  257. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  258. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  259. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  260. package/lib/components/VTooltip/index.d.ts +43 -43
  261. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  262. package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
  263. package/lib/components/VTreeview/util/filterTreeItems.mjs.map +1 -1
  264. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  265. package/lib/components/VWindow/VWindow.mjs +38 -37
  266. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  267. package/lib/components/VWindow/VWindowItem.mjs +2 -1
  268. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  269. package/lib/components/index.d.ts +1655 -993
  270. package/lib/components/transitions/createTransition.mjs +59 -50
  271. package/lib/components/transitions/createTransition.mjs.map +1 -1
  272. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  273. package/lib/components/transitions/expand-transition.mjs.map +1 -1
  274. package/lib/components/transitions/index.d.ts +150 -15
  275. package/lib/composables/border.mjs.map +1 -1
  276. package/lib/composables/color.mjs.map +1 -1
  277. package/lib/composables/defaults.mjs +1 -1
  278. package/lib/composables/defaults.mjs.map +1 -1
  279. package/lib/composables/delay.mjs.map +1 -1
  280. package/lib/composables/density.mjs.map +1 -1
  281. package/lib/composables/dimensions.mjs.map +1 -1
  282. package/lib/composables/display.mjs.map +1 -1
  283. package/lib/composables/elevation.mjs.map +1 -1
  284. package/lib/composables/filter.mjs.map +1 -1
  285. package/lib/composables/focus.mjs.map +1 -1
  286. package/lib/composables/form.mjs.map +1 -1
  287. package/lib/composables/forwardRefs.mjs +17 -0
  288. package/lib/composables/forwardRefs.mjs.map +1 -1
  289. package/lib/composables/group.mjs.map +1 -1
  290. package/lib/composables/hydration.mjs.map +1 -1
  291. package/lib/composables/icons.mjs.map +1 -1
  292. package/lib/composables/intersectionObserver.mjs.map +1 -1
  293. package/lib/composables/items.mjs.map +1 -1
  294. package/lib/composables/layout.mjs.map +1 -1
  295. package/lib/composables/lazy.mjs.map +1 -1
  296. package/lib/composables/loader.mjs.map +1 -1
  297. package/lib/composables/locale.mjs.map +1 -1
  298. package/lib/composables/location.mjs.map +1 -1
  299. package/lib/composables/mutationObserver.mjs.map +1 -1
  300. package/lib/composables/nested/nested.mjs.map +1 -1
  301. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  302. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  303. package/lib/composables/position.mjs.map +1 -1
  304. package/lib/composables/proxiedModel.mjs +2 -1
  305. package/lib/composables/proxiedModel.mjs.map +1 -1
  306. package/lib/composables/refs.mjs.map +1 -1
  307. package/lib/composables/resizeObserver.mjs.map +1 -1
  308. package/lib/composables/rounded.mjs.map +1 -1
  309. package/lib/composables/router.mjs.map +1 -1
  310. package/lib/composables/scopeId.mjs.map +1 -1
  311. package/lib/composables/scroll.mjs.map +1 -1
  312. package/lib/composables/selectLink.mjs.map +1 -1
  313. package/lib/composables/size.mjs.map +1 -1
  314. package/lib/composables/ssrBoot.mjs.map +1 -1
  315. package/lib/composables/stack.mjs.map +1 -1
  316. package/lib/composables/teleport.mjs.map +1 -1
  317. package/lib/composables/theme.mjs +1 -1
  318. package/lib/composables/theme.mjs.map +1 -1
  319. package/lib/composables/toggleScope.mjs.map +1 -1
  320. package/lib/composables/touch.mjs.map +1 -1
  321. package/lib/composables/transition.mjs.map +1 -1
  322. package/lib/composables/validation.mjs +1 -1
  323. package/lib/composables/validation.mjs.map +1 -1
  324. package/lib/composables/variant.mjs.map +1 -1
  325. package/lib/directives/click-outside/index.mjs.map +1 -1
  326. package/lib/directives/color/index.mjs.map +1 -1
  327. package/lib/directives/intersect/index.mjs.map +1 -1
  328. package/lib/directives/mutate/index.mjs.map +1 -1
  329. package/lib/directives/resize/index.mjs.map +1 -1
  330. package/lib/directives/ripple/index.mjs.map +1 -1
  331. package/lib/directives/scroll/index.mjs.map +1 -1
  332. package/lib/directives/touch/index.mjs.map +1 -1
  333. package/lib/entry-bundler.mjs +1 -1
  334. package/lib/entry-bundler.mjs.map +1 -1
  335. package/lib/framework.mjs +1 -1
  336. package/lib/framework.mjs.map +1 -1
  337. package/lib/index.d.ts +39 -39
  338. package/lib/labs/VDataTable/VDataTable.mjs +7 -5
  339. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  340. package/lib/labs/VDataTable/VDataTableColumn.mjs.map +1 -1
  341. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  342. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  343. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  344. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  345. package/lib/labs/VDataTable/VDataTableRows.mjs +5 -7
  346. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  347. package/lib/labs/VDataTable/VDataTableServer.mjs +4 -3
  348. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  349. package/lib/labs/VDataTable/VDataTableVirtual.mjs +5 -3
  350. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  351. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  352. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  353. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  354. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  355. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  356. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  357. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  358. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  359. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
  360. package/lib/labs/VDataTable/index.d.ts +393 -340
  361. package/lib/labs/VSkeletonLoader/VSkeletonLoader.css +221 -0
  362. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +141 -0
  363. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -0
  364. package/lib/labs/VSkeletonLoader/VSkeletonLoader.sass +225 -0
  365. package/lib/labs/VSkeletonLoader/_variables.scss +44 -0
  366. package/lib/labs/VSkeletonLoader/index.d.ts +222 -0
  367. package/lib/labs/VSkeletonLoader/index.mjs +2 -0
  368. package/lib/labs/VSkeletonLoader/index.mjs.map +1 -0
  369. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  370. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  371. package/lib/labs/components.d.ts +608 -341
  372. package/lib/labs/components.mjs +1 -0
  373. package/lib/labs/components.mjs.map +1 -1
  374. package/lib/labs/entry-bundler.mjs.map +1 -1
  375. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  376. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  377. package/lib/locale/af.mjs +2 -1
  378. package/lib/locale/af.mjs.map +1 -1
  379. package/lib/locale/ar.mjs +2 -1
  380. package/lib/locale/ar.mjs.map +1 -1
  381. package/lib/locale/az.mjs +2 -1
  382. package/lib/locale/az.mjs.map +1 -1
  383. package/lib/locale/bg.mjs +2 -1
  384. package/lib/locale/bg.mjs.map +1 -1
  385. package/lib/locale/ca.mjs +2 -1
  386. package/lib/locale/ca.mjs.map +1 -1
  387. package/lib/locale/ckb.mjs +2 -1
  388. package/lib/locale/ckb.mjs.map +1 -1
  389. package/lib/locale/cs.mjs +2 -1
  390. package/lib/locale/cs.mjs.map +1 -1
  391. package/lib/locale/da.mjs +2 -1
  392. package/lib/locale/da.mjs.map +1 -1
  393. package/lib/locale/de.mjs +2 -1
  394. package/lib/locale/de.mjs.map +1 -1
  395. package/lib/locale/el.mjs +2 -1
  396. package/lib/locale/el.mjs.map +1 -1
  397. package/lib/locale/en.mjs +2 -1
  398. package/lib/locale/en.mjs.map +1 -1
  399. package/lib/locale/es.mjs +2 -1
  400. package/lib/locale/es.mjs.map +1 -1
  401. package/lib/locale/et.mjs +2 -1
  402. package/lib/locale/et.mjs.map +1 -1
  403. package/lib/locale/fa.mjs +2 -1
  404. package/lib/locale/fa.mjs.map +1 -1
  405. package/lib/locale/fi.mjs +2 -1
  406. package/lib/locale/fi.mjs.map +1 -1
  407. package/lib/locale/fr.mjs +2 -1
  408. package/lib/locale/fr.mjs.map +1 -1
  409. package/lib/locale/he.mjs +2 -1
  410. package/lib/locale/he.mjs.map +1 -1
  411. package/lib/locale/hr.mjs +2 -1
  412. package/lib/locale/hr.mjs.map +1 -1
  413. package/lib/locale/hu.mjs +2 -1
  414. package/lib/locale/hu.mjs.map +1 -1
  415. package/lib/locale/id.mjs +2 -1
  416. package/lib/locale/id.mjs.map +1 -1
  417. package/lib/locale/index.d.ts +42 -0
  418. package/lib/locale/it.mjs +2 -1
  419. package/lib/locale/it.mjs.map +1 -1
  420. package/lib/locale/ja.mjs +2 -1
  421. package/lib/locale/ja.mjs.map +1 -1
  422. package/lib/locale/ko.mjs +2 -1
  423. package/lib/locale/ko.mjs.map +1 -1
  424. package/lib/locale/lt.mjs +2 -1
  425. package/lib/locale/lt.mjs.map +1 -1
  426. package/lib/locale/lv.mjs +2 -1
  427. package/lib/locale/lv.mjs.map +1 -1
  428. package/lib/locale/nl.mjs +2 -1
  429. package/lib/locale/nl.mjs.map +1 -1
  430. package/lib/locale/no.mjs +2 -1
  431. package/lib/locale/no.mjs.map +1 -1
  432. package/lib/locale/pl.mjs +2 -1
  433. package/lib/locale/pl.mjs.map +1 -1
  434. package/lib/locale/pt.mjs +2 -1
  435. package/lib/locale/pt.mjs.map +1 -1
  436. package/lib/locale/ro.mjs +2 -1
  437. package/lib/locale/ro.mjs.map +1 -1
  438. package/lib/locale/ru.mjs +2 -1
  439. package/lib/locale/ru.mjs.map +1 -1
  440. package/lib/locale/sk.mjs +2 -1
  441. package/lib/locale/sk.mjs.map +1 -1
  442. package/lib/locale/sl.mjs +2 -1
  443. package/lib/locale/sl.mjs.map +1 -1
  444. package/lib/locale/sr-Cyrl.mjs +2 -1
  445. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  446. package/lib/locale/sr-Latn.mjs +2 -1
  447. package/lib/locale/sr-Latn.mjs.map +1 -1
  448. package/lib/locale/sv.mjs +2 -1
  449. package/lib/locale/sv.mjs.map +1 -1
  450. package/lib/locale/th.mjs +2 -1
  451. package/lib/locale/th.mjs.map +1 -1
  452. package/lib/locale/tr.mjs +2 -1
  453. package/lib/locale/tr.mjs.map +1 -1
  454. package/lib/locale/uk.mjs +2 -1
  455. package/lib/locale/uk.mjs.map +1 -1
  456. package/lib/locale/vi.mjs +2 -1
  457. package/lib/locale/vi.mjs.map +1 -1
  458. package/lib/locale/zh-Hans.mjs +2 -1
  459. package/lib/locale/zh-Hans.mjs.map +1 -1
  460. package/lib/locale/zh-Hant.mjs +2 -1
  461. package/lib/locale/zh-Hant.mjs.map +1 -1
  462. package/lib/services/goto/index.mjs.map +1 -1
  463. package/lib/services/goto/util.mjs.map +1 -1
  464. package/lib/util/anchor.mjs.map +1 -1
  465. package/lib/util/animation.mjs.map +1 -1
  466. package/lib/util/box.mjs.map +1 -1
  467. package/lib/util/color/APCA.mjs.map +1 -1
  468. package/lib/util/color/transformCIELAB.mjs.map +1 -1
  469. package/lib/util/color/transformSRGB.mjs.map +1 -1
  470. package/lib/util/colorUtils.mjs.map +1 -1
  471. package/lib/util/console.mjs.map +1 -1
  472. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  473. package/lib/util/dateTimeUtils.mjs.map +1 -1
  474. package/lib/util/defineComponent.mjs.map +1 -1
  475. package/lib/util/dom.mjs.map +1 -1
  476. package/lib/util/getCurrentInstance.mjs.map +1 -1
  477. package/lib/util/getScrollParent.mjs.map +1 -1
  478. package/lib/util/helpers.mjs +1 -1
  479. package/lib/util/helpers.mjs.map +1 -1
  480. package/lib/util/injectSelf.mjs.map +1 -1
  481. package/lib/util/isFixedPosition.mjs.map +1 -1
  482. package/lib/util/propsFactory.mjs.map +1 -1
  483. package/lib/util/useRender.mjs.map +1 -1
  484. package/package.json +25 -25
  485. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +0 -179
  486. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +0 -1
  487. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +0 -377
  488. package/lib/components/VSkeletonLoader/_variables.scss +0 -54
  489. package/lib/components/VSkeletonLoader/index.mjs +0 -4
  490. package/lib/components/VSkeletonLoader/index.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.12
2
+ * Vuetify v3.1.14
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -343,7 +343,7 @@
343
343
  }
344
344
  const onRE = /^on[^a-z]/;
345
345
  const isOn = key => onRE.test(key);
346
- const EventProp = [Function, Array];
346
+ const EventProp = () => [Function, Array];
347
347
  function hasEvent(props, name) {
348
348
  name = 'on' + vue.capitalize(name);
349
349
  return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
@@ -983,7 +983,7 @@
983
983
  }
984
984
  return properties;
985
985
  }
986
- return mergeDeep(properties.prev, properties);
986
+ return properties.prev ? mergeDeep(properties.prev, properties) : properties;
987
987
  });
988
988
  vue.provide(DefaultsSymbol, newDefaults);
989
989
  return newDefaults;
@@ -1707,7 +1707,7 @@
1707
1707
  if (/^on-[a-z]/.test(key)) {
1708
1708
  createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
1709
1709
  } else {
1710
- createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);
1710
+ createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);
1711
1711
  createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
1712
1712
  createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`]);
1713
1713
  }
@@ -1845,7 +1845,8 @@
1845
1845
  });
1846
1846
  const model = vue.computed({
1847
1847
  get() {
1848
- return transformIn(isControlled.value ? props[prop] : internal.value);
1848
+ const externalValue = props[prop];
1849
+ return transformIn(isControlled.value ? externalValue : internal.value);
1849
1850
  },
1850
1851
  set(internalValue) {
1851
1852
  const newValue = transformOut(internalValue);
@@ -1937,7 +1938,8 @@
1937
1938
  ariaLabel: {
1938
1939
  item: 'Rating {0} of {1}'
1939
1940
  }
1940
- }
1941
+ },
1942
+ loading: 'Loading...'
1941
1943
  };
1942
1944
 
1943
1945
  const LANG_PREFIX = '$vuetify.';
@@ -2214,6 +2216,7 @@
2214
2216
  return genericComponent()({
2215
2217
  name,
2216
2218
  props: {
2219
+ disabled: Boolean,
2217
2220
  group: Boolean,
2218
2221
  hideOnLeave: Boolean,
2219
2222
  leaveAbsolute: Boolean,
@@ -2230,56 +2233,62 @@
2230
2233
  let {
2231
2234
  slots
2232
2235
  } = _ref;
2236
+ const functions = {
2237
+ onBeforeEnter(el) {
2238
+ el.style.transformOrigin = props.origin;
2239
+ },
2240
+ onLeave(el) {
2241
+ if (props.leaveAbsolute) {
2242
+ const {
2243
+ offsetTop,
2244
+ offsetLeft,
2245
+ offsetWidth,
2246
+ offsetHeight
2247
+ } = el;
2248
+ el._transitionInitialStyles = {
2249
+ position: el.style.position,
2250
+ top: el.style.top,
2251
+ left: el.style.left,
2252
+ width: el.style.width,
2253
+ height: el.style.height
2254
+ };
2255
+ el.style.position = 'absolute';
2256
+ el.style.top = `${offsetTop}px`;
2257
+ el.style.left = `${offsetLeft}px`;
2258
+ el.style.width = `${offsetWidth}px`;
2259
+ el.style.height = `${offsetHeight}px`;
2260
+ }
2261
+ if (props.hideOnLeave) {
2262
+ el.style.setProperty('display', 'none', 'important');
2263
+ }
2264
+ },
2265
+ onAfterLeave(el) {
2266
+ if (props.leaveAbsolute && el?._transitionInitialStyles) {
2267
+ const {
2268
+ position,
2269
+ top,
2270
+ left,
2271
+ width,
2272
+ height
2273
+ } = el._transitionInitialStyles;
2274
+ delete el._transitionInitialStyles;
2275
+ el.style.position = position || '';
2276
+ el.style.top = top || '';
2277
+ el.style.left = left || '';
2278
+ el.style.width = width || '';
2279
+ el.style.height = height || '';
2280
+ }
2281
+ }
2282
+ };
2233
2283
  return () => {
2234
2284
  const tag = props.group ? vue.TransitionGroup : vue.Transition;
2235
2285
  return vue.h(tag, {
2236
- name,
2237
- mode: props.mode,
2238
- onBeforeEnter(el) {
2239
- el.style.transformOrigin = props.origin;
2240
- },
2241
- onLeave(el) {
2242
- if (props.leaveAbsolute) {
2243
- const {
2244
- offsetTop,
2245
- offsetLeft,
2246
- offsetWidth,
2247
- offsetHeight
2248
- } = el;
2249
- el._transitionInitialStyles = {
2250
- position: el.style.position,
2251
- top: el.style.top,
2252
- left: el.style.left,
2253
- width: el.style.width,
2254
- height: el.style.height
2255
- };
2256
- el.style.position = 'absolute';
2257
- el.style.top = `${offsetTop}px`;
2258
- el.style.left = `${offsetLeft}px`;
2259
- el.style.width = `${offsetWidth}px`;
2260
- el.style.height = `${offsetHeight}px`;
2261
- }
2262
- if (props.hideOnLeave) {
2263
- el.style.setProperty('display', 'none', 'important');
2264
- }
2265
- },
2266
- onAfterLeave(el) {
2267
- if (props.leaveAbsolute && el?._transitionInitialStyles) {
2268
- const {
2269
- position,
2270
- top,
2271
- left,
2272
- width,
2273
- height
2274
- } = el._transitionInitialStyles;
2275
- delete el._transitionInitialStyles;
2276
- el.style.position = position || '';
2277
- el.style.top = top || '';
2278
- el.style.left = left || '';
2279
- el.style.width = width || '';
2280
- el.style.height = height || '';
2281
- }
2282
- }
2286
+ name: props.disabled ? '' : name,
2287
+ css: !props.disabled,
2288
+ ...(props.group ? undefined : {
2289
+ mode: props.mode
2290
+ }),
2291
+ ...(props.disabled ? {} : functions)
2283
2292
  }, slots.default);
2284
2293
  };
2285
2294
  }
@@ -2293,7 +2302,8 @@
2293
2302
  mode: {
2294
2303
  type: String,
2295
2304
  default: mode
2296
- }
2305
+ },
2306
+ disabled: Boolean
2297
2307
  },
2298
2308
  setup(props, _ref2) {
2299
2309
  let {
@@ -2301,9 +2311,10 @@
2301
2311
  } = _ref2;
2302
2312
  return () => {
2303
2313
  return vue.h(vue.Transition, {
2304
- name,
2314
+ name: props.disabled ? '' : name,
2315
+ css: !props.disabled,
2305
2316
  // mode: props.mode, // TODO: vuejs/vue-next#3104
2306
- ...functions
2317
+ ...(props.disabled ? {} : functions)
2307
2318
  }, slots.default);
2308
2319
  };
2309
2320
  }
@@ -2709,9 +2720,9 @@
2709
2720
  ...makeTransitionProps()
2710
2721
  },
2711
2722
  emits: {
2712
- loadstart: event => true,
2713
- load: event => true,
2714
- error: event => true
2723
+ loadstart: value => true,
2724
+ load: value => true,
2725
+ error: value => true
2715
2726
  },
2716
2727
  setup(props, _ref) {
2717
2728
  let {
@@ -5336,9 +5347,9 @@
5336
5347
  default: 'filled',
5337
5348
  validator: v => allowedVariants$1.includes(v)
5338
5349
  },
5339
- 'onClick:clear': EventProp,
5340
- 'onClick:appendInner': EventProp,
5341
- 'onClick:prependInner': EventProp,
5350
+ 'onClick:clear': EventProp(),
5351
+ 'onClick:appendInner': EventProp(),
5352
+ 'onClick:prependInner': EventProp(),
5342
5353
  ...makeThemeProps(),
5343
5354
  ...makeLoaderProps()
5344
5355
  }, 'v-field');
@@ -5837,7 +5848,7 @@
5837
5848
  const results = [];
5838
5849
  isValidating.value = true;
5839
5850
  for (const rule of props.rules) {
5840
- if (results.length >= (props.maxErrors ?? 1)) {
5851
+ if (results.length >= +(props.maxErrors ?? 1)) {
5841
5852
  break;
5842
5853
  }
5843
5854
  const handler = typeof rule === 'function' ? rule : () => rule;
@@ -5884,8 +5895,8 @@
5884
5895
  default: 'horizontal',
5885
5896
  validator: v => ['horizontal', 'vertical'].includes(v)
5886
5897
  },
5887
- 'onClick:prepend': EventProp,
5888
- 'onClick:append': EventProp,
5898
+ 'onClick:prepend': EventProp(),
5899
+ 'onClick:append': EventProp(),
5889
5900
  ...makeDensityProps(),
5890
5901
  ...makeValidationProps()
5891
5902
  }, 'v-input');
@@ -6042,6 +6053,9 @@
6042
6053
  if (Reflect.has(target, key)) {
6043
6054
  return Reflect.get(target, key);
6044
6055
  }
6056
+
6057
+ // Skip internal properties
6058
+ if (typeof key === 'symbol' || key.startsWith('__')) return;
6045
6059
  for (const ref of refs) {
6046
6060
  if (ref.value && Reflect.has(ref.value, key)) {
6047
6061
  const val = Reflect.get(ref.value, key);
@@ -6049,6 +6063,20 @@
6049
6063
  }
6050
6064
  }
6051
6065
  },
6066
+ has(target, key) {
6067
+ if (Reflect.has(target, key)) {
6068
+ return true;
6069
+ }
6070
+
6071
+ // Skip internal properties
6072
+ if (typeof key === 'symbol' || key.startsWith('__')) return false;
6073
+ for (const ref of refs) {
6074
+ if (ref.value && Reflect.has(ref.value, key)) {
6075
+ return true;
6076
+ }
6077
+ }
6078
+ return false;
6079
+ },
6052
6080
  getOwnPropertyDescriptor(target, key) {
6053
6081
  const descriptor = Reflect.getOwnPropertyDescriptor(target, key);
6054
6082
  if (descriptor) return descriptor;
@@ -6099,6 +6127,7 @@
6099
6127
  type: String,
6100
6128
  default: 'text'
6101
6129
  },
6130
+ modelModifiers: Object,
6102
6131
  ...makeVInputProps(),
6103
6132
  ...makeVFieldProps()
6104
6133
  }, 'v-text-field');
@@ -6173,7 +6202,7 @@
6173
6202
  function onInput(e) {
6174
6203
  const el = e.target;
6175
6204
  model.value = el.value;
6176
- if (['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
6205
+ if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
6177
6206
  const caretPosition = [el.selectionStart, el.selectionEnd];
6178
6207
  vue.nextTick(() => {
6179
6208
  el.selectionStart = caretPosition[0];
@@ -6238,9 +6267,6 @@
6238
6267
  ...slotProps
6239
6268
  }
6240
6269
  } = _ref3;
6241
- const placeholder = vue.computed(() => {
6242
- return (props.persistentPlaceholder || isFocused.value) && !isDirty.value ? props.placeholder : '';
6243
- });
6244
6270
  const inputNode = vue.withDirectives(vue.createVNode("input", vue.mergeProps({
6245
6271
  "ref": inputRef,
6246
6272
  "value": model.value,
@@ -6249,7 +6275,7 @@
6249
6275
  "readonly": isReadonly.value,
6250
6276
  "disabled": isDisabled.value,
6251
6277
  "name": props.name,
6252
- "placeholder": placeholder.value,
6278
+ "placeholder": props.placeholder,
6253
6279
  "size": 1,
6254
6280
  "type": props.type,
6255
6281
  "onFocus": onFocus,
@@ -6813,8 +6839,8 @@
6813
6839
  type: Boolean,
6814
6840
  default: true
6815
6841
  },
6816
- onClick: EventProp,
6817
- onClickOnce: EventProp,
6842
+ onClick: EventProp(),
6843
+ onClickOnce: EventProp(),
6818
6844
  ...makeBorderProps(),
6819
6845
  ...makeDensityProps(),
6820
6846
  ...makeElevationProps(),
@@ -7565,6 +7591,9 @@
7565
7591
  } = useNestedItem(vue.toRef(props, 'value'), true);
7566
7592
  const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
7567
7593
  const list = useList();
7594
+ const {
7595
+ isBooted
7596
+ } = useSsrBoot();
7568
7597
  function onClick(e) {
7569
7598
  open(!isOpen.value, e);
7570
7599
  }
@@ -7574,6 +7603,17 @@
7574
7603
  id: id.value
7575
7604
  }));
7576
7605
  const toggleIcon = vue.computed(() => isOpen.value ? props.collapseIcon : props.expandIcon);
7606
+ const activatorDefaults = vue.computed(() => ({
7607
+ VListItem: {
7608
+ active: isOpen.value,
7609
+ activeColor: props.activeColor,
7610
+ color: props.color,
7611
+ prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
7612
+ appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
7613
+ title: props.title,
7614
+ value: props.value
7615
+ }
7616
+ }));
7577
7617
  useRender(() => vue.createVNode(props.tag, {
7578
7618
  "class": ['v-list-group', {
7579
7619
  'v-list-group--prepend': list?.hasPrepend.value,
@@ -7583,17 +7623,7 @@
7583
7623
  }]
7584
7624
  }, {
7585
7625
  default: () => [slots.activator && vue.createVNode(VDefaultsProvider, {
7586
- "defaults": {
7587
- VListItem: {
7588
- active: isOpen.value,
7589
- activeColor: props.activeColor,
7590
- color: props.color,
7591
- prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
7592
- appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
7593
- title: props.title,
7594
- value: props.value
7595
- }
7596
- }
7626
+ "defaults": activatorDefaults.value
7597
7627
  }, {
7598
7628
  default: () => [vue.createVNode(VListGroupActivator, null, {
7599
7629
  default: () => [slots.activator({
@@ -7601,7 +7631,12 @@
7601
7631
  isOpen: isOpen.value
7602
7632
  })]
7603
7633
  })]
7604
- }), vue.createVNode(VExpandTransition, null, {
7634
+ }), vue.createVNode(MaybeTransition, {
7635
+ "transition": {
7636
+ component: VExpandTransition
7637
+ },
7638
+ "disabled": !isBooted.value
7639
+ }, {
7605
7640
  default: () => [vue.withDirectives(vue.createVNode("div", {
7606
7641
  "class": "v-list-group__items",
7607
7642
  "role": "group",
@@ -7649,8 +7684,8 @@
7649
7684
  subtitle: [String, Number, Boolean],
7650
7685
  title: [String, Number, Boolean],
7651
7686
  value: null,
7652
- onClick: EventProp,
7653
- onClickOnce: EventProp,
7687
+ onClick: EventProp(),
7688
+ onClickOnce: EventProp(),
7654
7689
  ...makeBorderProps(),
7655
7690
  ...makeDensityProps(),
7656
7691
  ...makeDimensionProps(),
@@ -8192,7 +8227,8 @@
8192
8227
  }
8193
8228
  function focus(location) {
8194
8229
  if (!contentRef.value) return;
8195
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
8230
+ const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8231
+ const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8196
8232
  const idx = focusable.indexOf(document.activeElement);
8197
8233
  if (!location) {
8198
8234
  if (!contentRef.value.contains(document.activeElement)) {
@@ -8373,6 +8409,7 @@
8373
8409
  isActive.value = !isActive.value;
8374
8410
  },
8375
8411
  mouseenter: e => {
8412
+ if (e.sourceCapabilities?.firesTouchEvents) return;
8376
8413
  isHovered = true;
8377
8414
  activatorEl.value = e.currentTarget || e.target;
8378
8415
  runOpenDelay();
@@ -9899,6 +9936,9 @@
9899
9936
  });
9900
9937
  });
9901
9938
  const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
9939
+ const isFocused = vue.ref(false);
9940
+ let keyboardLookupPrefix = '';
9941
+ let keyboardLookupLastTime;
9902
9942
  const displayItems = vue.computed(() => {
9903
9943
  if (props.hideSelected) {
9904
9944
  return items.value.filter(item => !selections.value.some(s => s === item));
@@ -9935,6 +9975,26 @@
9935
9975
  } else if (e.key === 'End') {
9936
9976
  listRef.value?.focus('last');
9937
9977
  }
9978
+
9979
+ // html select hotkeys
9980
+ const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
9981
+
9982
+ function checkPrintable(e) {
9983
+ const isPrintableChar = e.key.length === 1;
9984
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
9985
+ return isPrintableChar && noModifier;
9986
+ }
9987
+ if (props.multiple || !checkPrintable(e)) return;
9988
+ const now = performance.now();
9989
+ if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
9990
+ keyboardLookupPrefix = '';
9991
+ }
9992
+ keyboardLookupPrefix += e.key.toLowerCase();
9993
+ keyboardLookupLastTime = now;
9994
+ const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
9995
+ if (item !== undefined) {
9996
+ model.value = [item];
9997
+ }
9938
9998
  }
9939
9999
  function select(item) {
9940
10000
  if (props.multiple) {
@@ -9964,7 +10024,9 @@
9964
10024
  useRender(() => {
9965
10025
  const hasChips = !!(props.chips || slots.chip);
9966
10026
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10027
+ const isDirty = model.value.length > 0;
9967
10028
  const [textFieldProps] = VTextField.filterProps(props);
10029
+ const placeholder = isDirty || !isFocused.value && props.label && !props.persistentPlaceholder ? undefined : props.placeholder;
9968
10030
  return vue.createVNode(VTextField, vue.mergeProps({
9969
10031
  "ref": vTextFieldRef
9970
10032
  }, textFieldProps, {
@@ -9972,8 +10034,10 @@
9972
10034
  "onUpdate:modelValue": v => {
9973
10035
  if (v == null) model.value = [];
9974
10036
  },
10037
+ "focused": isFocused.value,
10038
+ "onUpdate:focused": $event => isFocused.value = $event,
9975
10039
  "validationValue": model.externalValue,
9976
- "dirty": model.value.length > 0,
10040
+ "dirty": isDirty,
9977
10041
  "class": ['v-select', {
9978
10042
  'v-select--active-menu': menu.value,
9979
10043
  'v-select--chips': !!props.chips,
@@ -9982,6 +10046,7 @@
9982
10046
  }],
9983
10047
  "appendInnerIcon": props.menuIcon,
9984
10048
  "readonly": true,
10049
+ "placeholder": placeholder,
9985
10050
  "onClick:clear": onClear,
9986
10051
  "onMousedown:control": onMousedownControl,
9987
10052
  "onBlur": onBlur,
@@ -10030,7 +10095,8 @@
10030
10095
  } = _ref2;
10031
10096
  return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10032
10097
  "modelValue": isSelected,
10033
- "ripple": false
10098
+ "ripple": false,
10099
+ "tabindex": "-1"
10034
10100
  }, null) : undefined;
10035
10101
  }
10036
10102
  });
@@ -10357,6 +10423,7 @@
10357
10423
  useRender(() => {
10358
10424
  const hasChips = !!(props.chips || slots.chip);
10359
10425
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10426
+ const isDirty = model.value.length > 0;
10360
10427
  const [textFieldProps] = VTextField.filterProps(props);
10361
10428
  return vue.createVNode(VTextField, vue.mergeProps({
10362
10429
  "ref": vTextFieldRef
@@ -10366,7 +10433,7 @@
10366
10433
  if (v == null) model.value = [];
10367
10434
  },
10368
10435
  "validationValue": model.externalValue,
10369
- "dirty": model.value.length > 0,
10436
+ "dirty": isDirty,
10370
10437
  "onInput": onInput,
10371
10438
  "class": ['v-autocomplete', {
10372
10439
  'v-autocomplete--active-menu': menu.value,
@@ -10376,6 +10443,7 @@
10376
10443
  }],
10377
10444
  "appendInnerIcon": props.menuIcon,
10378
10445
  "readonly": props.readonly,
10446
+ "placeholder": isDirty ? undefined : props.placeholder,
10379
10447
  "onClick:clear": onClear,
10380
10448
  "onMousedown:control": onMousedownControl,
10381
10449
  "onFocus": () => isFocused.value = true,
@@ -10406,14 +10474,13 @@
10406
10474
  }, {
10407
10475
  default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
10408
10476
  "title": t(props.noDataText)
10409
- }, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => slots.item?.({
10477
+ }, null)), slots['prepend-item']?.(), displayItems.value.map(item => slots.item?.({
10410
10478
  item,
10411
- index,
10412
10479
  props: vue.mergeProps(item.props, {
10413
10480
  onClick: () => select(item)
10414
10481
  })
10415
10482
  }) ?? vue.createVNode(VListItem, vue.mergeProps({
10416
- "key": index
10483
+ "key": item.value
10417
10484
  }, item.props, {
10418
10485
  "onClick": () => select(item)
10419
10486
  }), {
@@ -10423,7 +10490,8 @@
10423
10490
  } = _ref2;
10424
10491
  return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10425
10492
  "modelValue": isSelected,
10426
- "ripple": false
10493
+ "ripple": false,
10494
+ "tabindex": "-1"
10427
10495
  }, null) : undefined;
10428
10496
  },
10429
10497
  title: () => {
@@ -10548,7 +10616,7 @@
10548
10616
  });
10549
10617
  useRender(() => {
10550
10618
  const value = Number(props.content);
10551
- const content = !props.max || isNaN(value) ? props.content : value <= props.max ? value : `${props.max}+`;
10619
+ const content = !props.max || isNaN(value) ? props.content : value <= +props.max ? value : `${props.max}+`;
10552
10620
  const [badgeAttrs, attrs] = pick(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);
10553
10621
  return vue.createVNode(props.tag, vue.mergeProps({
10554
10622
  "class": ['v-badge', {
@@ -11345,47 +11413,48 @@
11345
11413
 
11346
11414
  const VWindowSymbol = Symbol.for('vuetify:v-window');
11347
11415
  const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');
11416
+ const makeVWindowProps = propsFactory({
11417
+ continuous: Boolean,
11418
+ nextIcon: {
11419
+ type: [Boolean, String, Function, Object],
11420
+ default: '$next'
11421
+ },
11422
+ prevIcon: {
11423
+ type: [Boolean, String, Function, Object],
11424
+ default: '$prev'
11425
+ },
11426
+ reverse: Boolean,
11427
+ showArrows: {
11428
+ type: [Boolean, String],
11429
+ validator: v => typeof v === 'boolean' || v === 'hover'
11430
+ },
11431
+ touch: {
11432
+ type: [Object, Boolean],
11433
+ default: undefined
11434
+ },
11435
+ direction: {
11436
+ type: String,
11437
+ default: 'horizontal'
11438
+ },
11439
+ modelValue: null,
11440
+ disabled: Boolean,
11441
+ selectedClass: {
11442
+ type: String,
11443
+ default: 'v-window-item--active'
11444
+ },
11445
+ // TODO: mandatory should probably not be exposed but do this for now
11446
+ mandatory: {
11447
+ default: 'force'
11448
+ },
11449
+ ...makeTagProps(),
11450
+ ...makeThemeProps()
11451
+ }, 'v-window');
11348
11452
  const VWindow = genericComponent()({
11349
11453
  name: 'VWindow',
11350
11454
  directives: {
11351
11455
  Touch
11352
11456
  },
11353
- props: {
11354
- continuous: Boolean,
11355
- nextIcon: {
11356
- type: [Boolean, String, Function, Object],
11357
- default: '$next'
11358
- },
11359
- prevIcon: {
11360
- type: [Boolean, String, Function, Object],
11361
- default: '$prev'
11362
- },
11363
- reverse: Boolean,
11364
- showArrows: {
11365
- type: [Boolean, String],
11366
- validator: v => typeof v === 'boolean' || v === 'hover'
11367
- },
11368
- touch: {
11369
- type: [Object, Boolean],
11370
- default: undefined
11371
- },
11372
- direction: {
11373
- type: String,
11374
- default: 'horizontal'
11375
- },
11376
- modelValue: null,
11377
- disabled: Boolean,
11378
- selectedClass: {
11379
- type: String,
11380
- default: 'v-window-item--active'
11381
- },
11382
- // TODO: mandatory should probably not be exposed but do this for now
11383
- mandatory: {
11384
- default: 'force'
11385
- },
11386
- ...makeTagProps(),
11387
- ...makeThemeProps()
11388
- },
11457
+ props: makeVWindowProps(),
11389
11458
  emits: {
11390
11459
  'update:modelValue': v => true
11391
11460
  },
@@ -11513,112 +11582,6 @@
11513
11582
  }
11514
11583
  });
11515
11584
 
11516
- const VWindowItem = genericComponent()({
11517
- name: 'VWindowItem',
11518
- directives: {
11519
- Touch
11520
- },
11521
- props: {
11522
- reverseTransition: {
11523
- type: [Boolean, String],
11524
- default: undefined
11525
- },
11526
- transition: {
11527
- type: [Boolean, String],
11528
- default: undefined
11529
- },
11530
- ...makeGroupItemProps(),
11531
- ...makeLazyProps()
11532
- },
11533
- emits: {
11534
- 'group:selected': val => true
11535
- },
11536
- setup(props, _ref) {
11537
- let {
11538
- slots
11539
- } = _ref;
11540
- const window = vue.inject(VWindowSymbol);
11541
- const groupItem = useGroupItem(props, VWindowGroupSymbol);
11542
- const {
11543
- isBooted
11544
- } = useSsrBoot();
11545
- if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');
11546
- const isTransitioning = vue.ref(false);
11547
- const hasTransition = vue.computed(() => window.isReversed.value ? props.reverseTransition !== false : props.transition !== false);
11548
- function onAfterTransition() {
11549
- if (!isTransitioning.value || !window) {
11550
- return;
11551
- }
11552
-
11553
- // Finalize transition state.
11554
- isTransitioning.value = false;
11555
- if (window.transitionCount.value > 0) {
11556
- window.transitionCount.value -= 1;
11557
-
11558
- // Remove container height if we are out of transition.
11559
- if (window.transitionCount.value === 0) {
11560
- window.transitionHeight.value = undefined;
11561
- }
11562
- }
11563
- }
11564
- function onBeforeTransition() {
11565
- if (isTransitioning.value || !window) {
11566
- return;
11567
- }
11568
-
11569
- // Initialize transition state here.
11570
- isTransitioning.value = true;
11571
- if (window.transitionCount.value === 0) {
11572
- // Set initial height for height transition.
11573
- window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);
11574
- }
11575
- window.transitionCount.value += 1;
11576
- }
11577
- function onTransitionCancelled() {
11578
- onAfterTransition(); // This should have the same path as normal transition end.
11579
- }
11580
-
11581
- function onEnterTransition(el) {
11582
- if (!isTransitioning.value) {
11583
- return;
11584
- }
11585
- vue.nextTick(() => {
11586
- // Do not set height if no transition or cancelled.
11587
- if (!hasTransition.value || !isTransitioning.value || !window) {
11588
- return;
11589
- }
11590
-
11591
- // Set transition target height.
11592
- window.transitionHeight.value = convertToUnit(el.clientHeight);
11593
- });
11594
- }
11595
- const transition = vue.computed(() => {
11596
- const name = window.isReversed.value ? props.reverseTransition : props.transition;
11597
- return !hasTransition.value ? false : {
11598
- name: typeof name !== 'string' ? window.transition.value : name,
11599
- onBeforeEnter: onBeforeTransition,
11600
- onAfterEnter: onAfterTransition,
11601
- onEnterCancelled: onTransitionCancelled,
11602
- onBeforeLeave: onBeforeTransition,
11603
- onAfterLeave: onAfterTransition,
11604
- onLeaveCancelled: onTransitionCancelled,
11605
- onEnter: onEnterTransition
11606
- };
11607
- });
11608
- const {
11609
- hasContent
11610
- } = useLazy(props, groupItem.isSelected);
11611
- useRender(() => vue.createVNode(MaybeTransition, {
11612
- "transition": isBooted.value && transition.value
11613
- }, {
11614
- default: () => [vue.withDirectives(vue.createVNode("div", {
11615
- "class": ['v-window-item', groupItem.selectedClass.value]
11616
- }, [hasContent.value && slots.default?.()]), [[vue.vShow, groupItem.isSelected.value]])]
11617
- }));
11618
- return {};
11619
- }
11620
- });
11621
-
11622
11585
  // Types
11623
11586
 
11624
11587
  const VCarousel = genericComponent()({
@@ -11639,16 +11602,15 @@
11639
11602
  interval: {
11640
11603
  type: [Number, String],
11641
11604
  default: 6000,
11642
- validator: value => value > 0
11605
+ validator: value => Number(value) > 0
11643
11606
  },
11644
- modelValue: null,
11645
11607
  progress: [Boolean, String],
11646
- showArrows: {
11647
- type: [Boolean, String],
11648
- default: true,
11649
- validator: v => typeof v === 'boolean' || v === 'hover'
11650
- },
11651
- verticalDelimiters: [Boolean, String]
11608
+ verticalDelimiters: [Boolean, String],
11609
+ ...makeVWindowProps({
11610
+ continuous: true,
11611
+ mandatory: 'force',
11612
+ showArrows: true
11613
+ })
11652
11614
  },
11653
11615
  emits: {
11654
11616
  'update:modelValue': val => true
@@ -11716,6 +11678,7 @@
11716
11678
  }, {
11717
11679
  default: () => [group.items.value.map((item, index) => {
11718
11680
  const props = {
11681
+ id: `carousel-item-${item.id}`,
11719
11682
  'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),
11720
11683
  class: [group.isSelected(item.id) && 'v-btn--active'],
11721
11684
  onClick: () => group.select(item.id, true)
@@ -11738,29 +11701,189 @@
11738
11701
  }
11739
11702
  });
11740
11703
 
11741
- // Types
11742
-
11743
- const VCarouselItem = genericComponent()({
11744
- name: 'VCarouselItem',
11745
- inheritAttrs: false,
11704
+ const VWindowItem = genericComponent()({
11705
+ name: 'VWindowItem',
11706
+ directives: {
11707
+ Touch
11708
+ },
11746
11709
  props: {
11747
- value: null
11710
+ reverseTransition: {
11711
+ type: [Boolean, String],
11712
+ default: undefined
11713
+ },
11714
+ transition: {
11715
+ type: [Boolean, String],
11716
+ default: undefined
11717
+ },
11718
+ ...makeGroupItemProps(),
11719
+ ...makeLazyProps()
11720
+ },
11721
+ emits: {
11722
+ 'group:selected': val => true
11748
11723
  },
11749
11724
  setup(props, _ref) {
11750
11725
  let {
11751
- slots,
11752
- attrs
11726
+ slots
11753
11727
  } = _ref;
11754
- useRender(() => vue.createVNode(VWindowItem, {
11755
- "class": "v-carousel-item",
11756
- "value": props.value
11757
- }, {
11758
- default: () => [vue.createVNode(VImg, attrs, slots)]
11759
- }));
11760
- }
11761
- });
11762
-
11763
- const VCode = createSimpleFunctional('v-code');
11728
+ const window = vue.inject(VWindowSymbol);
11729
+ const groupItem = useGroupItem(props, VWindowGroupSymbol);
11730
+ const {
11731
+ isBooted
11732
+ } = useSsrBoot();
11733
+ if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');
11734
+ const isTransitioning = vue.ref(false);
11735
+ const hasTransition = vue.computed(() => window.isReversed.value ? props.reverseTransition !== false : props.transition !== false);
11736
+ function onAfterTransition() {
11737
+ if (!isTransitioning.value || !window) {
11738
+ return;
11739
+ }
11740
+
11741
+ // Finalize transition state.
11742
+ isTransitioning.value = false;
11743
+ if (window.transitionCount.value > 0) {
11744
+ window.transitionCount.value -= 1;
11745
+
11746
+ // Remove container height if we are out of transition.
11747
+ if (window.transitionCount.value === 0) {
11748
+ window.transitionHeight.value = undefined;
11749
+ }
11750
+ }
11751
+ }
11752
+ function onBeforeTransition() {
11753
+ if (isTransitioning.value || !window) {
11754
+ return;
11755
+ }
11756
+
11757
+ // Initialize transition state here.
11758
+ isTransitioning.value = true;
11759
+ if (window.transitionCount.value === 0) {
11760
+ // Set initial height for height transition.
11761
+ window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight);
11762
+ }
11763
+ window.transitionCount.value += 1;
11764
+ }
11765
+ function onTransitionCancelled() {
11766
+ onAfterTransition(); // This should have the same path as normal transition end.
11767
+ }
11768
+
11769
+ function onEnterTransition(el) {
11770
+ if (!isTransitioning.value) {
11771
+ return;
11772
+ }
11773
+ vue.nextTick(() => {
11774
+ // Do not set height if no transition or cancelled.
11775
+ if (!hasTransition.value || !isTransitioning.value || !window) {
11776
+ return;
11777
+ }
11778
+
11779
+ // Set transition target height.
11780
+ window.transitionHeight.value = convertToUnit(el.clientHeight);
11781
+ });
11782
+ }
11783
+ const transition = vue.computed(() => {
11784
+ const name = window.isReversed.value ? props.reverseTransition : props.transition;
11785
+ return !hasTransition.value ? false : {
11786
+ name: typeof name !== 'string' ? window.transition.value : name,
11787
+ onBeforeEnter: onBeforeTransition,
11788
+ onAfterEnter: onAfterTransition,
11789
+ onEnterCancelled: onTransitionCancelled,
11790
+ onBeforeLeave: onBeforeTransition,
11791
+ onAfterLeave: onAfterTransition,
11792
+ onLeaveCancelled: onTransitionCancelled,
11793
+ onEnter: onEnterTransition
11794
+ };
11795
+ });
11796
+ const {
11797
+ hasContent
11798
+ } = useLazy(props, groupItem.isSelected);
11799
+ useRender(() => vue.createVNode(MaybeTransition, {
11800
+ "transition": transition.value,
11801
+ "disabled": !isBooted.value
11802
+ }, {
11803
+ default: () => [vue.withDirectives(vue.createVNode("div", {
11804
+ "class": ['v-window-item', groupItem.selectedClass.value]
11805
+ }, [hasContent.value && slots.default?.()]), [[vue.vShow, groupItem.isSelected.value]])]
11806
+ }));
11807
+ return {};
11808
+ }
11809
+ });
11810
+
11811
+ // Types
11812
+
11813
+ const VCarouselItem = genericComponent()({
11814
+ name: 'VCarouselItem',
11815
+ inheritAttrs: false,
11816
+ props: {
11817
+ value: null
11818
+ },
11819
+ setup(props, _ref) {
11820
+ let {
11821
+ slots,
11822
+ attrs
11823
+ } = _ref;
11824
+ useRender(() => vue.createVNode(VWindowItem, {
11825
+ "class": "v-carousel-item",
11826
+ "value": props.value
11827
+ }, {
11828
+ default: () => [vue.createVNode(VImg, attrs, slots)]
11829
+ }));
11830
+ }
11831
+ });
11832
+
11833
+ const VCode = createSimpleFunctional('v-code');
11834
+
11835
+ const makeVSheetProps = propsFactory({
11836
+ color: String,
11837
+ ...makeBorderProps(),
11838
+ ...makeDimensionProps(),
11839
+ ...makeElevationProps(),
11840
+ ...makeLocationProps(),
11841
+ ...makePositionProps(),
11842
+ ...makeRoundedProps(),
11843
+ ...makeTagProps(),
11844
+ ...makeThemeProps()
11845
+ }, 'v-sheet');
11846
+ const VSheet = genericComponent()({
11847
+ name: 'VSheet',
11848
+ props: {
11849
+ ...makeVSheetProps()
11850
+ },
11851
+ setup(props, _ref) {
11852
+ let {
11853
+ slots
11854
+ } = _ref;
11855
+ const {
11856
+ themeClasses
11857
+ } = provideTheme(props);
11858
+ const {
11859
+ backgroundColorClasses,
11860
+ backgroundColorStyles
11861
+ } = useBackgroundColor(vue.toRef(props, 'color'));
11862
+ const {
11863
+ borderClasses
11864
+ } = useBorder(props);
11865
+ const {
11866
+ dimensionStyles
11867
+ } = useDimension(props);
11868
+ const {
11869
+ elevationClasses
11870
+ } = useElevation(props);
11871
+ const {
11872
+ locationStyles
11873
+ } = useLocation(props);
11874
+ const {
11875
+ positionClasses
11876
+ } = usePosition(props);
11877
+ const {
11878
+ roundedClasses
11879
+ } = useRounded(props);
11880
+ useRender(() => vue.createVNode(props.tag, {
11881
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
11882
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
11883
+ }, slots));
11884
+ return {};
11885
+ }
11886
+ });
11764
11887
 
11765
11888
  // Types
11766
11889
 
@@ -12304,7 +12427,7 @@
12304
12427
  });
12305
12428
  const min = vue.computed(() => parseFloat(props.min));
12306
12429
  const max = vue.computed(() => parseFloat(props.max));
12307
- const step = vue.computed(() => props.step > 0 ? parseFloat(props.step) : 0);
12430
+ const step = vue.computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12308
12431
  const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12309
12432
  const thumbSize = vue.computed(() => parseInt(props.thumbSize, 10));
12310
12433
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
@@ -12798,7 +12921,7 @@
12798
12921
  }), {
12799
12922
  ...slots,
12800
12923
  prepend: hasPrepend ? slotProps => vue.createVNode(vue.Fragment, null, [slots.label?.(slotProps) ?? props.label ? vue.createVNode(VLabel, {
12801
- "id": slotProps.id,
12924
+ "id": slotProps.id.value,
12802
12925
  "class": "v-slider__label",
12803
12926
  "text": props.label
12804
12927
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
@@ -13283,59 +13406,6 @@
13283
13406
  }
13284
13407
  });
13285
13408
 
13286
- const makeVSheetProps = propsFactory({
13287
- color: String,
13288
- ...makeBorderProps(),
13289
- ...makeDimensionProps(),
13290
- ...makeElevationProps(),
13291
- ...makeLocationProps(),
13292
- ...makePositionProps(),
13293
- ...makeRoundedProps(),
13294
- ...makeTagProps(),
13295
- ...makeThemeProps()
13296
- }, 'v-sheet');
13297
- const VSheet = genericComponent()({
13298
- name: 'VSheet',
13299
- props: {
13300
- ...makeVSheetProps()
13301
- },
13302
- setup(props, _ref) {
13303
- let {
13304
- slots
13305
- } = _ref;
13306
- const {
13307
- themeClasses
13308
- } = provideTheme(props);
13309
- const {
13310
- backgroundColorClasses,
13311
- backgroundColorStyles
13312
- } = useBackgroundColor(vue.toRef(props, 'color'));
13313
- const {
13314
- borderClasses
13315
- } = useBorder(props);
13316
- const {
13317
- dimensionStyles
13318
- } = useDimension(props);
13319
- const {
13320
- elevationClasses
13321
- } = useElevation(props);
13322
- const {
13323
- locationStyles
13324
- } = useLocation(props);
13325
- const {
13326
- positionClasses
13327
- } = usePosition(props);
13328
- const {
13329
- roundedClasses
13330
- } = useRounded(props);
13331
- useRender(() => vue.createVNode(props.tag, {
13332
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
13333
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
13334
- }, slots));
13335
- return {};
13336
- }
13337
- });
13338
-
13339
13409
  // Types
13340
13410
 
13341
13411
  const VColorPicker = defineComponent({
@@ -13372,13 +13442,9 @@
13372
13442
  modelValue: {
13373
13443
  type: [Object, String]
13374
13444
  },
13375
- width: {
13376
- type: [Number, String],
13377
- default: 300
13378
- },
13379
- ...makeElevationProps(),
13380
- ...makeRoundedProps(),
13381
- ...makeThemeProps()
13445
+ ...omit(makeVSheetProps({
13446
+ width: 300
13447
+ }), ['height', 'location', 'minHeight', 'maxHeight', 'minWidth', 'maxWidth'])
13382
13448
  },
13383
13449
  emits: {
13384
13450
  'update:modelValue': color => true,
@@ -13416,53 +13482,57 @@
13416
13482
  trackFillColor: undefined
13417
13483
  }
13418
13484
  });
13419
- useRender(() => vue.createVNode(VSheet, {
13420
- "rounded": props.rounded,
13421
- "elevation": props.elevation,
13422
- "theme": props.theme,
13423
- "class": ['v-color-picker'],
13424
- "style": {
13425
- '--v-color-picker-color-hsv': HSVtoCSS({
13426
- ...(currentColor.value ?? nullColor),
13427
- a: 1
13428
- })
13429
- },
13430
- "maxWidth": props.width
13431
- }, {
13432
- default: () => [!props.hideCanvas && vue.createVNode(VColorPickerCanvas, {
13433
- "key": "canvas",
13434
- "color": currentColor.value,
13435
- "onUpdate:color": updateColor,
13436
- "disabled": props.disabled,
13437
- "dotSize": props.dotSize,
13438
- "width": props.width,
13439
- "height": props.canvasHeight
13440
- }, null), (!props.hideSliders || !props.hideInputs) && vue.createVNode("div", {
13441
- "key": "controls",
13442
- "class": "v-color-picker__controls"
13443
- }, [!props.hideSliders && vue.createVNode(VColorPickerPreview, {
13444
- "key": "preview",
13445
- "color": currentColor.value,
13446
- "onUpdate:color": updateColor,
13447
- "hideAlpha": !mode.value.endsWith('a'),
13448
- "disabled": props.disabled
13449
- }, null), !props.hideInputs && vue.createVNode(VColorPickerEdit, {
13450
- "key": "edit",
13451
- "modes": props.modes,
13452
- "mode": mode.value,
13453
- "onUpdate:mode": m => mode.value = m,
13454
- "color": currentColor.value,
13455
- "onUpdate:color": updateColor,
13456
- "disabled": props.disabled
13457
- }, null)]), props.showSwatches && vue.createVNode(VColorPickerSwatches, {
13458
- "key": "swatches",
13459
- "color": currentColor.value,
13460
- "onUpdate:color": updateColor,
13461
- "maxHeight": props.swatchesMaxHeight,
13462
- "swatches": props.swatches,
13463
- "disabled": props.disabled
13464
- }, null)]
13465
- }));
13485
+ useRender(() => {
13486
+ const [sheetProps] = VSheet.filterProps(props);
13487
+ return vue.createVNode(VSheet, vue.mergeProps({
13488
+ "rounded": props.rounded,
13489
+ "elevation": props.elevation,
13490
+ "theme": props.theme,
13491
+ "class": ['v-color-picker'],
13492
+ "style": {
13493
+ '--v-color-picker-color-hsv': HSVtoCSS({
13494
+ ...(currentColor.value ?? nullColor),
13495
+ a: 1
13496
+ })
13497
+ }
13498
+ }, sheetProps, {
13499
+ "maxWidth": props.width
13500
+ }), {
13501
+ default: () => [!props.hideCanvas && vue.createVNode(VColorPickerCanvas, {
13502
+ "key": "canvas",
13503
+ "color": currentColor.value,
13504
+ "onUpdate:color": updateColor,
13505
+ "disabled": props.disabled,
13506
+ "dotSize": props.dotSize,
13507
+ "width": props.width,
13508
+ "height": props.canvasHeight
13509
+ }, null), (!props.hideSliders || !props.hideInputs) && vue.createVNode("div", {
13510
+ "key": "controls",
13511
+ "class": "v-color-picker__controls"
13512
+ }, [!props.hideSliders && vue.createVNode(VColorPickerPreview, {
13513
+ "key": "preview",
13514
+ "color": currentColor.value,
13515
+ "onUpdate:color": updateColor,
13516
+ "hideAlpha": !mode.value.endsWith('a'),
13517
+ "disabled": props.disabled
13518
+ }, null), !props.hideInputs && vue.createVNode(VColorPickerEdit, {
13519
+ "key": "edit",
13520
+ "modes": props.modes,
13521
+ "mode": mode.value,
13522
+ "onUpdate:mode": m => mode.value = m,
13523
+ "color": currentColor.value,
13524
+ "onUpdate:color": updateColor,
13525
+ "disabled": props.disabled
13526
+ }, null)]), props.showSwatches && vue.createVNode(VColorPickerSwatches, {
13527
+ "key": "swatches",
13528
+ "color": currentColor.value,
13529
+ "onUpdate:color": updateColor,
13530
+ "maxHeight": props.swatchesMaxHeight,
13531
+ "swatches": props.swatches,
13532
+ "disabled": props.disabled
13533
+ }, null)]
13534
+ });
13535
+ });
13466
13536
  return {};
13467
13537
  }
13468
13538
  });
@@ -13537,7 +13607,7 @@
13537
13607
  textColorClasses,
13538
13608
  textColorStyles
13539
13609
  } = useTextColor(color);
13540
- const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v || [])), v => {
13610
+ const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
13541
13611
  const transformed = transformOut(v);
13542
13612
  return props.multiple ? transformed : transformed[0] ?? null;
13543
13613
  });
@@ -13715,6 +13785,7 @@
13715
13785
  useRender(() => {
13716
13786
  const hasChips = !!(props.chips || slots.chip);
13717
13787
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13788
+ const isDirty = model.value.length > 0;
13718
13789
  const [textFieldProps] = VTextField.filterProps(props);
13719
13790
  return vue.createVNode(VTextField, vue.mergeProps({
13720
13791
  "ref": vTextFieldRef
@@ -13724,7 +13795,7 @@
13724
13795
  if (v == null) model.value = [];
13725
13796
  }],
13726
13797
  "validationValue": model.externalValue,
13727
- "dirty": model.value.length > 0,
13798
+ "dirty": isDirty,
13728
13799
  "class": ['v-combobox', {
13729
13800
  'v-combobox--active-menu': menu.value,
13730
13801
  'v-combobox--chips': !!props.chips,
@@ -13733,6 +13804,7 @@
13733
13804
  }],
13734
13805
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
13735
13806
  "readonly": props.readonly,
13807
+ "placeholder": isDirty ? undefined : props.placeholder,
13736
13808
  "onClick:clear": onClear,
13737
13809
  "onMousedown:control": onMousedownControl,
13738
13810
  "onFocus": () => isFocused.value = true,
@@ -13763,14 +13835,13 @@
13763
13835
  }, {
13764
13836
  default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
13765
13837
  "title": t(props.noDataText)
13766
- }, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => slots.item?.({
13838
+ }, null)), slots['prepend-item']?.(), displayItems.value.map(item => slots.item?.({
13767
13839
  item,
13768
- index,
13769
13840
  props: vue.mergeProps(item.props, {
13770
13841
  onClick: () => select(item)
13771
13842
  })
13772
13843
  }) ?? vue.createVNode(VListItem, vue.mergeProps({
13773
- "key": index
13844
+ "key": item.value
13774
13845
  }, item.props, {
13775
13846
  "onClick": () => select(item)
13776
13847
  }), {
@@ -13780,7 +13851,8 @@
13780
13851
  } = _ref2;
13781
13852
  return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
13782
13853
  "modelValue": isSelected,
13783
- "ripple": false
13854
+ "ripple": false,
13855
+ "tabindex": "-1"
13784
13856
  }, null) : undefined;
13785
13857
  },
13786
13858
  title: () => {
@@ -14190,7 +14262,6 @@
14190
14262
  multiple: Boolean,
14191
14263
  hint: String,
14192
14264
  persistentHint: Boolean,
14193
- placeholder: String,
14194
14265
  showSize: {
14195
14266
  type: [Boolean, Number],
14196
14267
  default: false,
@@ -15514,12 +15585,18 @@
15514
15585
  bgColor: 'transparent'
15515
15586
  }
15516
15587
  });
15588
+ function onMouseenter() {
15589
+ isHovering.value = true;
15590
+ }
15591
+ function onMouseleave() {
15592
+ isHovering.value = false;
15593
+ }
15517
15594
  useRender(() => {
15518
15595
  const hasImage = slots.image || props.image;
15519
15596
  return vue.createVNode(vue.Fragment, null, [vue.createVNode(props.tag, vue.mergeProps({
15520
15597
  "ref": rootEl,
15521
- "onMouseenter": () => isHovering.value = true,
15522
- "onMouseleave": () => isHovering.value = false,
15598
+ "onMouseenter": onMouseenter,
15599
+ "onMouseleave": onMouseleave,
15523
15600
  "class": ['v-navigation-drawer', `v-navigation-drawer--${location.value}`, {
15524
15601
  'v-navigation-drawer--expand-on-hover': props.expandOnHover,
15525
15602
  'v-navigation-drawer--floating': props.floating,
@@ -15795,7 +15872,7 @@
15795
15872
  ref,
15796
15873
  ellipsis: false,
15797
15874
  icon: true,
15798
- disabled: !!props.disabled || props.length < 2,
15875
+ disabled: !!props.disabled || +props.length < 2,
15799
15876
  color: isActive ? props.activeColor : props.color,
15800
15877
  ariaCurrent: isActive,
15801
15878
  ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
@@ -15844,7 +15921,7 @@
15844
15921
  refs.value[currentIndex]?.$el.focus();
15845
15922
  }
15846
15923
  function onKeydown(e) {
15847
- if (e.key === keyValues.left && !props.disabled && page.value > props.start) {
15924
+ if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {
15848
15925
  page.value = page.value - 1;
15849
15926
  vue.nextTick(updateFocus);
15850
15927
  } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {
@@ -16548,35 +16625,36 @@
16548
16625
  // Types
16549
16626
 
16550
16627
  const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
16628
+ const makeVSlideGroupProps = propsFactory({
16629
+ centerActive: Boolean,
16630
+ direction: {
16631
+ type: String,
16632
+ default: 'horizontal'
16633
+ },
16634
+ symbol: {
16635
+ type: null,
16636
+ default: VSlideGroupSymbol
16637
+ },
16638
+ nextIcon: {
16639
+ type: IconValue,
16640
+ default: '$next'
16641
+ },
16642
+ prevIcon: {
16643
+ type: IconValue,
16644
+ default: '$prev'
16645
+ },
16646
+ showArrows: {
16647
+ type: [Boolean, String],
16648
+ validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
16649
+ },
16650
+ ...makeTagProps(),
16651
+ ...makeGroupProps({
16652
+ selectedClass: 'v-slide-group-item--active'
16653
+ })
16654
+ }, 'v-slide-group');
16551
16655
  const VSlideGroup = genericComponent()({
16552
16656
  name: 'VSlideGroup',
16553
- props: {
16554
- centerActive: Boolean,
16555
- direction: {
16556
- type: String,
16557
- default: 'horizontal'
16558
- },
16559
- symbol: {
16560
- type: null,
16561
- default: VSlideGroupSymbol
16562
- },
16563
- nextIcon: {
16564
- type: IconValue,
16565
- default: '$next'
16566
- },
16567
- prevIcon: {
16568
- type: IconValue,
16569
- default: '$prev'
16570
- },
16571
- showArrows: {
16572
- type: [Boolean, String],
16573
- validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
16574
- },
16575
- ...makeTagProps(),
16576
- ...makeGroupProps({
16577
- selectedClass: 'v-slide-group-item--active'
16578
- })
16579
- },
16657
+ props: makeVSlideGroupProps(),
16580
16658
  emits: {
16581
16659
  'update:modelValue': value => true
16582
16660
  },
@@ -17285,10 +17363,6 @@
17285
17363
  default: 'start'
17286
17364
  },
17287
17365
  color: String,
17288
- direction: {
17289
- type: String,
17290
- default: 'horizontal'
17291
- },
17292
17366
  fixedTabs: Boolean,
17293
17367
  items: {
17294
17368
  type: Array,
@@ -17303,11 +17377,9 @@
17303
17377
  },
17304
17378
  hideSlider: Boolean,
17305
17379
  sliderColor: String,
17306
- modelValue: null,
17307
- mandatory: {
17308
- type: [Boolean, String],
17309
- default: 'force'
17310
- },
17380
+ ...makeVSlideGroupProps({
17381
+ mandatory: 'force'
17382
+ }),
17311
17383
  ...makeDensityProps(),
17312
17384
  ...makeTagProps()
17313
17385
  },
@@ -17337,26 +17409,27 @@
17337
17409
  hideSlider: vue.toRef(props, 'hideSlider')
17338
17410
  }
17339
17411
  });
17340
- useRender(() => vue.createVNode(VSlideGroup, {
17341
- "modelValue": model.value,
17342
- "onUpdate:modelValue": $event => model.value = $event,
17343
- "class": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {
17344
- 'v-tabs--fixed-tabs': props.fixedTabs,
17345
- 'v-tabs--grow': props.grow,
17346
- 'v-tabs--stacked': props.stacked
17347
- }, densityClasses.value, backgroundColorClasses.value],
17348
- "style": [{
17349
- '--v-tabs-height': convertToUnit(props.height)
17350
- }, backgroundColorStyles.value],
17351
- "role": "tablist",
17352
- "symbol": VTabsSymbol,
17353
- "mandatory": props.mandatory,
17354
- "direction": props.direction
17355
- }, {
17356
- default: () => [slots.default ? slots.default() : parsedItems.value.map(item => vue.createVNode(VTab, vue.mergeProps(item, {
17357
- "key": item.title
17358
- }), null))]
17359
- }));
17412
+ useRender(() => {
17413
+ const [slideGroupProps] = VSlideGroup.filterProps(props);
17414
+ return vue.createVNode(VSlideGroup, vue.mergeProps(slideGroupProps, {
17415
+ "modelValue": model.value,
17416
+ "onUpdate:modelValue": $event => model.value = $event,
17417
+ "class": ['v-tabs', `v-tabs--${props.direction}`, `v-tabs--align-tabs-${props.alignTabs}`, {
17418
+ 'v-tabs--fixed-tabs': props.fixedTabs,
17419
+ 'v-tabs--grow': props.grow,
17420
+ 'v-tabs--stacked': props.stacked
17421
+ }, densityClasses.value, backgroundColorClasses.value],
17422
+ "style": [{
17423
+ '--v-tabs-height': convertToUnit(props.height)
17424
+ }, backgroundColorStyles.value],
17425
+ "role": "tablist",
17426
+ "symbol": VTabsSymbol
17427
+ }), {
17428
+ default: () => [slots.default ? slots.default() : parsedItems.value.map(item => vue.createVNode(VTab, vue.mergeProps(item, {
17429
+ "key": item.title
17430
+ }), null))]
17431
+ });
17432
+ });
17360
17433
  return {};
17361
17434
  }
17362
17435
  });
@@ -17433,6 +17506,7 @@
17433
17506
  validator: v => !isNaN(parseFloat(v))
17434
17507
  },
17435
17508
  suffix: String,
17509
+ modelModifiers: Object,
17436
17510
  ...makeVInputProps(),
17437
17511
  ...makeVFieldProps()
17438
17512
  },
@@ -17472,7 +17546,7 @@
17472
17546
  const textareaRef = vue.ref();
17473
17547
  const isActive = vue.computed(() => isFocused.value || props.persistentPlaceholder);
17474
17548
  const messages = vue.computed(() => {
17475
- return props.messages.length ? props.messages : isActive.value || props.persistentHint ? props.hint : '';
17549
+ return props.messages.length ? props.messages : isFocused.value || props.persistentHint ? props.hint : '';
17476
17550
  });
17477
17551
  function onFocus() {
17478
17552
  if (textareaRef.value !== document.activeElement) {
@@ -17497,12 +17571,14 @@
17497
17571
  }
17498
17572
  function onInput(e) {
17499
17573
  const el = e.target;
17500
- const caretPosition = [el.selectionStart, el.selectionEnd];
17501
17574
  model.value = el.value;
17502
- vue.nextTick(() => {
17503
- el.selectionStart = caretPosition[0];
17504
- el.selectionEnd = caretPosition[1];
17505
- });
17575
+ if (props.modelModifiers?.trim) {
17576
+ const caretPosition = [el.selectionStart, el.selectionEnd];
17577
+ vue.nextTick(() => {
17578
+ el.selectionStart = caretPosition[0];
17579
+ el.selectionEnd = caretPosition[1];
17580
+ });
17581
+ }
17506
17582
  }
17507
17583
  const sizerRef = vue.ref();
17508
17584
  function calculateInputHeight() {
@@ -18846,10 +18922,8 @@
18846
18922
  type: String,
18847
18923
  default: '$vuetify.noDataText'
18848
18924
  },
18849
- rowHeight: Number
18850
- },
18851
- emits: {
18852
- 'click:row': (event, value) => true
18925
+ rowHeight: Number,
18926
+ 'onClick:row': Function
18853
18927
  },
18854
18928
  setup(props, _ref) {
18855
18929
  let {
@@ -18913,14 +18987,14 @@
18913
18987
  };
18914
18988
  return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item(slotProps) : vue.createVNode(VDataTableRow, {
18915
18989
  "key": `item_${item.value}`,
18916
- "onClick": event => {
18990
+ "onClick": expandOnClick.value || props['onClick:row'] ? event => {
18917
18991
  if (expandOnClick.value) {
18918
18992
  toggleExpand(item);
18919
18993
  }
18920
- emit('click:row', event, {
18994
+ props['onClick:row']?.(event, {
18921
18995
  item
18922
18996
  });
18923
- },
18997
+ } : undefined,
18924
18998
  "index": index,
18925
18999
  "item": item
18926
19000
  }, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
@@ -19223,6 +19297,7 @@
19223
19297
  ...makeDataTableItemProps(),
19224
19298
  ...makeDataTableHeaderProps(),
19225
19299
  hideNoData: Boolean,
19300
+ hover: Boolean,
19226
19301
  noDataText: {
19227
19302
  type: String,
19228
19303
  default: '$vuetify.noDataText'
@@ -19230,7 +19305,8 @@
19230
19305
  height: [String, Number],
19231
19306
  width: [String, Number],
19232
19307
  fixedHeader: Boolean,
19233
- fixedFooter: Boolean
19308
+ fixedFooter: Boolean,
19309
+ 'onClick:row': Function
19234
19310
  }, 'v-data-table');
19235
19311
  const VDataTable = genericComponent()({
19236
19312
  name: 'VDataTable',
@@ -19251,8 +19327,7 @@
19251
19327
  'update:sortBy': value => true,
19252
19328
  'update:options': value => true,
19253
19329
  'update:groupBy': value => true,
19254
- 'update:expanded': value => true,
19255
- 'click:row': (event, value) => true
19330
+ 'update:expanded': value => true
19256
19331
  },
19257
19332
  setup(props, _ref) {
19258
19333
  let {
@@ -19347,7 +19422,8 @@
19347
19422
  }],
19348
19423
  "fixedHeader": props.fixedHeader,
19349
19424
  "fixedFooter": props.fixedFooter,
19350
- "height": props.height
19425
+ "height": props.height,
19426
+ "hover": props.hover
19351
19427
  }, {
19352
19428
  top: slots.top,
19353
19429
  default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
@@ -19357,7 +19433,7 @@
19357
19433
  "multiSort": props.multiSort
19358
19434
  }, slots)]), slots.thead?.(), vue.createVNode("tbody", null, [slots.body ? slots.body() : vue.createVNode(VDataTableRows, {
19359
19435
  "items": paginatedItems.value,
19360
- "onClick:row": (event, value) => emit('click:row', event, value)
19436
+ "onClick:row": props['onClick:row']
19361
19437
  }, slots)]), slots.tbody?.(), slots.tfoot?.()])),
19362
19438
  bottom: slots.bottom ?? (() => vue.createVNode(VDataTableFooter, null, {
19363
19439
  prepend: slots['footer.prepend']
@@ -19468,7 +19544,7 @@
19468
19544
  'update:options': value => true,
19469
19545
  'update:groupBy': value => true,
19470
19546
  'update:expanded': value => true,
19471
- 'click:row': (event, value) => true
19547
+ 'click:row': (e, value) => true
19472
19548
  },
19473
19549
  setup(props, _ref) {
19474
19550
  let {
@@ -19552,8 +19628,10 @@
19552
19628
  "style": {
19553
19629
  '--v-table-row-height': convertToUnit(itemHeight.value)
19554
19630
  },
19631
+ "fixedHeader": props.fixedHeader,
19632
+ "fixedFooter": props.fixedFooter,
19555
19633
  "height": props.height,
19556
- "fixedHeader": props.fixedHeader
19634
+ "hover": props.hover
19557
19635
  }, {
19558
19636
  top: slots.top,
19559
19637
  wrapper: () => vue.createVNode("div", {
@@ -19579,7 +19657,7 @@
19579
19657
  }
19580
19658
  }, null)]), vue.createVNode(VDataTableRows, {
19581
19659
  "items": visibleItems.value,
19582
- "onClick:row": (event, value) => emit('click:row', event, value)
19660
+ "onClick:row": props['onClick:row']
19583
19661
  }, slots), vue.createVNode("tr", {
19584
19662
  "style": {
19585
19663
  height: convertToUnit(paddingBottom.value),
@@ -19629,7 +19707,7 @@
19629
19707
  'update:options': options => true,
19630
19708
  'update:expanded': options => true,
19631
19709
  'update:groupBy': value => true,
19632
- 'click:row': (event, value) => true
19710
+ 'click:row': (e, value) => true
19633
19711
  },
19634
19712
  setup(props, _ref) {
19635
19713
  let {
@@ -19707,7 +19785,8 @@
19707
19785
  }],
19708
19786
  "fixedHeader": props.fixedHeader,
19709
19787
  "fixedFooter": props.fixedFooter,
19710
- "height": props.height
19788
+ "height": props.height,
19789
+ "hover": props.hover
19711
19790
  }, {
19712
19791
  top: slots.top,
19713
19792
  default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
@@ -19724,7 +19803,7 @@
19724
19803
  "role": "rowgroup"
19725
19804
  }, [slots.body ? slots.body() : vue.createVNode(VDataTableRows, {
19726
19805
  "items": flatItems.value,
19727
- "onClick:row": (event, value) => emit('click:row', event, value)
19806
+ "onClick:row": props['onClick:row']
19728
19807
  }, slots)]), slots.tbody?.(), slots.tfoot?.()])),
19729
19808
  bottom: slots.bottom ?? (() => vue.createVNode(VDataTableFooter, null, {
19730
19809
  prepend: slots['footer.prepend']
@@ -19733,6 +19812,137 @@
19733
19812
  }
19734
19813
  });
19735
19814
 
19815
+ // Types
19816
+
19817
+ const rootTypes = {
19818
+ actions: 'button@2',
19819
+ article: 'heading, paragraph',
19820
+ avatar: 'avatar',
19821
+ button: 'button',
19822
+ card: 'image, heading',
19823
+ 'card-avatar': 'image, list-item-avatar',
19824
+ chip: 'chip',
19825
+ 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',
19826
+ 'date-picker-options': 'text, avatar@2',
19827
+ 'date-picker-days': 'avatar@28',
19828
+ heading: 'heading',
19829
+ image: 'image',
19830
+ 'list-item': 'text',
19831
+ 'list-item-avatar': 'avatar, text',
19832
+ 'list-item-two-line': 'sentences',
19833
+ 'list-item-avatar-two-line': 'avatar, sentences',
19834
+ 'list-item-three-line': 'paragraph',
19835
+ 'list-item-avatar-three-line': 'avatar, paragraph',
19836
+ paragraph: 'text@3',
19837
+ sentences: 'text@2',
19838
+ subtitle: 'text',
19839
+ table: 'table-heading, table-thead, table-tbody, table-tfoot',
19840
+ 'table-heading': 'chip, text',
19841
+ 'table-thead': 'heading@6',
19842
+ 'table-tbody': 'table-row-divider@6',
19843
+ 'table-row-divider': 'table-row, divider',
19844
+ 'table-row': 'text@6',
19845
+ 'table-tfoot': 'text@2, avatar@2',
19846
+ text: 'text'
19847
+ };
19848
+ function genBone(type) {
19849
+ let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
19850
+ return vue.createVNode("div", {
19851
+ "class": ['v-skeleton-loader__bone', `v-skeleton-loader__${type}`]
19852
+ }, [children]);
19853
+ }
19854
+ function genBones(bone) {
19855
+ // e.g. 'text@3'
19856
+ const [type, length] = bone.split('@');
19857
+
19858
+ // Generate a length array based upon
19859
+ // value after @ in the bone string
19860
+ return Array.from({
19861
+ length
19862
+ }).map(() => genStructure(type));
19863
+ }
19864
+ function genStructure(type) {
19865
+ let children = [];
19866
+ if (!type) return children;
19867
+
19868
+ // TODO: figure out a better way to type this
19869
+ const bone = rootTypes[type];
19870
+
19871
+ // End of recursion, do nothing
19872
+ /* eslint-disable-next-line no-empty, brace-style */
19873
+ if (type === bone) ;
19874
+ // Array of values - e.g. 'heading, paragraph, text@2'
19875
+ else if (type.includes(',')) return mapBones(type);
19876
+ // Array of values - e.g. 'paragraph@4'
19877
+ else if (type.includes('@')) return genBones(type);
19878
+ // Array of values - e.g. 'card@2'
19879
+ else if (bone.includes(',')) children = mapBones(bone);
19880
+ // Array of values - e.g. 'list-item@2'
19881
+ else if (bone.includes('@')) children = genBones(bone);
19882
+ // Single value - e.g. 'card-heading'
19883
+ else if (bone) children.push(genStructure(bone));
19884
+ return [genBone(type, children)];
19885
+ }
19886
+ function mapBones(bones) {
19887
+ // Remove spaces and return array of structures
19888
+ return bones.replace(/\s/g, '').split(',').map(genStructure);
19889
+ }
19890
+ const VSkeletonLoader = genericComponent()({
19891
+ name: 'VSkeletonLoader',
19892
+ props: {
19893
+ boilerplate: Boolean,
19894
+ color: String,
19895
+ loading: Boolean,
19896
+ loadingText: {
19897
+ type: String,
19898
+ default: '$vuetify.loading'
19899
+ },
19900
+ type: {
19901
+ type: [String, Array],
19902
+ default: 'image'
19903
+ },
19904
+ ...makeDimensionProps(),
19905
+ ...makeElevationProps(),
19906
+ ...makeThemeProps()
19907
+ },
19908
+ setup(props, _ref) {
19909
+ let {
19910
+ slots
19911
+ } = _ref;
19912
+ const {
19913
+ backgroundColorClasses,
19914
+ backgroundColorStyles
19915
+ } = useBackgroundColor(vue.toRef(props, 'color'));
19916
+ const {
19917
+ dimensionStyles
19918
+ } = useDimension(props);
19919
+ const {
19920
+ elevationClasses
19921
+ } = useElevation(props);
19922
+ const {
19923
+ themeClasses
19924
+ } = provideTheme(props);
19925
+ const {
19926
+ t
19927
+ } = useLocale();
19928
+ const items = vue.computed(() => genStructure(wrapInArray(props.type).join(',')));
19929
+ useRender(() => {
19930
+ const isLoading = !slots.default || props.loading;
19931
+ return vue.createVNode("div", {
19932
+ "class": ['v-skeleton-loader', {
19933
+ 'v-skeleton-loader--boilerplate': props.boilerplate
19934
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
19935
+ "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}],
19936
+ "aria-busy": !props.boilerplate ? isLoading : undefined,
19937
+ "aria-live": !props.boilerplate ? 'polite' : undefined,
19938
+ "aria-label": !props.boilerplate ? t(props.loadingText) : undefined,
19939
+ "role": !props.boilerplate ? 'alert' : undefined
19940
+ }, [isLoading ? items.value : slots.default?.()]);
19941
+ });
19942
+ return {};
19943
+ }
19944
+ });
19945
+
19736
19946
  const VVirtualScrollItem = genericComponent()({
19737
19947
  name: 'VVirtualScrollItem',
19738
19948
  props: {
@@ -19906,12 +20116,12 @@
19906
20116
 
19907
20117
  var components = /*#__PURE__*/Object.freeze({
19908
20118
  __proto__: null,
20119
+ VAlert: VAlert,
20120
+ VAlertTitle: VAlertTitle,
19909
20121
  VApp: VApp,
19910
20122
  VAppBar: VAppBar,
19911
20123
  VAppBarNavIcon: VAppBarNavIcon,
19912
20124
  VAppBarTitle: VAppBarTitle,
19913
- VAlert: VAlert,
19914
- VAlertTitle: VAlertTitle,
19915
20125
  VAutocomplete: VAutocomplete,
19916
20126
  VAvatar: VAvatar,
19917
20127
  VBadge: VBadge,
@@ -19920,8 +20130,8 @@
19920
20130
  VBannerText: VBannerText,
19921
20131
  VBottomNavigation: VBottomNavigation,
19922
20132
  VBreadcrumbs: VBreadcrumbs,
19923
- VBreadcrumbsItem: VBreadcrumbsItem,
19924
20133
  VBreadcrumbsDivider: VBreadcrumbsDivider,
20134
+ VBreadcrumbsItem: VBreadcrumbsItem,
19925
20135
  VBtn: VBtn,
19926
20136
  VBtnGroup: VBtnGroup,
19927
20137
  VBtnToggle: VBtnToggle,
@@ -19937,41 +20147,51 @@
19937
20147
  VCheckboxBtn: VCheckboxBtn,
19938
20148
  VChip: VChip,
19939
20149
  VChipGroup: VChipGroup,
20150
+ VClassIcon: VClassIcon,
19940
20151
  VCode: VCode,
20152
+ VCol: VCol,
19941
20153
  VColorPicker: VColorPicker,
19942
20154
  VCombobox: VCombobox,
20155
+ VComponentIcon: VComponentIcon,
20156
+ VContainer: VContainer,
19943
20157
  VCounter: VCounter,
20158
+ VDataTable: VDataTable,
20159
+ VDataTableFooter: VDataTableFooter,
20160
+ VDataTableRow: VDataTableRow,
20161
+ VDataTableRows: VDataTableRows,
20162
+ VDataTableServer: VDataTableServer,
20163
+ VDataTableVirtual: VDataTableVirtual,
19944
20164
  VDefaultsProvider: VDefaultsProvider,
19945
20165
  VDialog: VDialog,
20166
+ VDialogBottomTransition: VDialogBottomTransition,
20167
+ VDialogTopTransition: VDialogTopTransition,
20168
+ VDialogTransition: VDialogTransition,
19946
20169
  VDivider: VDivider,
19947
- VExpansionPanels: VExpansionPanels,
20170
+ VExpandTransition: VExpandTransition,
20171
+ VExpandXTransition: VExpandXTransition,
19948
20172
  VExpansionPanel: VExpansionPanel,
19949
20173
  VExpansionPanelText: VExpansionPanelText,
19950
20174
  VExpansionPanelTitle: VExpansionPanelTitle,
20175
+ VExpansionPanels: VExpansionPanels,
20176
+ VFabTransition: VFabTransition,
20177
+ VFadeTransition: VFadeTransition,
19951
20178
  VField: VField,
19952
20179
  VFieldLabel: VFieldLabel,
19953
20180
  VFileInput: VFileInput,
19954
20181
  VFooter: VFooter,
19955
20182
  VForm: VForm,
19956
- VContainer: VContainer,
19957
- VCol: VCol,
19958
- VRow: VRow,
19959
- VSpacer: VSpacer,
19960
20183
  VHover: VHover,
19961
20184
  VIcon: VIcon,
19962
- VComponentIcon: VComponentIcon,
19963
- VSvgIcon: VSvgIcon,
19964
- VLigatureIcon: VLigatureIcon,
19965
- VClassIcon: VClassIcon,
19966
20185
  VImg: VImg,
19967
20186
  VInput: VInput,
19968
- VItemGroup: VItemGroup,
19969
20187
  VItem: VItem,
20188
+ VItemGroup: VItemGroup,
19970
20189
  VKbd: VKbd,
19971
20190
  VLabel: VLabel,
19972
20191
  VLayout: VLayout,
19973
20192
  VLayoutItem: VLayoutItem,
19974
20193
  VLazy: VLazy,
20194
+ VLigatureIcon: VLigatureIcon,
19975
20195
  VList: VList,
19976
20196
  VListGroup: VListGroup,
19977
20197
  VListImg: VListImg,
@@ -19997,54 +20217,45 @@
19997
20217
  VRangeSlider: VRangeSlider,
19998
20218
  VRating: VRating,
19999
20219
  VResponsive: VResponsive,
20220
+ VRow: VRow,
20221
+ VScaleTransition: VScaleTransition,
20222
+ VScrollXReverseTransition: VScrollXReverseTransition,
20223
+ VScrollXTransition: VScrollXTransition,
20224
+ VScrollYReverseTransition: VScrollYReverseTransition,
20225
+ VScrollYTransition: VScrollYTransition,
20000
20226
  VSelect: VSelect,
20001
20227
  VSelectionControl: VSelectionControl,
20002
20228
  VSelectionControlGroup: VSelectionControlGroup,
20003
20229
  VSheet: VSheet,
20230
+ VSkeletonLoader: VSkeletonLoader,
20004
20231
  VSlideGroup: VSlideGroup,
20005
20232
  VSlideGroupItem: VSlideGroupItem,
20233
+ VSlideXReverseTransition: VSlideXReverseTransition,
20234
+ VSlideXTransition: VSlideXTransition,
20235
+ VSlideYReverseTransition: VSlideYReverseTransition,
20236
+ VSlideYTransition: VSlideYTransition,
20006
20237
  VSlider: VSlider,
20007
20238
  VSnackbar: VSnackbar,
20239
+ VSpacer: VSpacer,
20240
+ VSvgIcon: VSvgIcon,
20008
20241
  VSwitch: VSwitch,
20009
20242
  VSystemBar: VSystemBar,
20010
- VTabs: VTabs,
20011
20243
  VTab: VTab,
20012
20244
  VTable: VTable,
20013
- VTextarea: VTextarea,
20245
+ VTabs: VTabs,
20014
20246
  VTextField: VTextField,
20247
+ VTextarea: VTextarea,
20015
20248
  VThemeProvider: VThemeProvider,
20016
20249
  VTimeline: VTimeline,
20017
20250
  VTimelineItem: VTimelineItem,
20018
20251
  VToolbar: VToolbar,
20019
- VToolbarTitle: VToolbarTitle,
20020
20252
  VToolbarItems: VToolbarItems,
20253
+ VToolbarTitle: VToolbarTitle,
20021
20254
  VTooltip: VTooltip,
20022
20255
  VValidation: VValidation,
20256
+ VVirtualScroll: VVirtualScroll,
20023
20257
  VWindow: VWindow,
20024
- VWindowItem: VWindowItem,
20025
- VDialogTransition: VDialogTransition,
20026
- VFabTransition: VFabTransition,
20027
- VDialogBottomTransition: VDialogBottomTransition,
20028
- VDialogTopTransition: VDialogTopTransition,
20029
- VFadeTransition: VFadeTransition,
20030
- VScaleTransition: VScaleTransition,
20031
- VScrollXTransition: VScrollXTransition,
20032
- VScrollXReverseTransition: VScrollXReverseTransition,
20033
- VScrollYTransition: VScrollYTransition,
20034
- VScrollYReverseTransition: VScrollYReverseTransition,
20035
- VSlideXTransition: VSlideXTransition,
20036
- VSlideXReverseTransition: VSlideXReverseTransition,
20037
- VSlideYTransition: VSlideYTransition,
20038
- VSlideYReverseTransition: VSlideYReverseTransition,
20039
- VExpandTransition: VExpandTransition,
20040
- VExpandXTransition: VExpandXTransition,
20041
- VDataTable: VDataTable,
20042
- VDataTableRows: VDataTableRows,
20043
- VDataTableRow: VDataTableRow,
20044
- VDataTableVirtual: VDataTableVirtual,
20045
- VDataTableServer: VDataTableServer,
20046
- VDataTableFooter: VDataTableFooter,
20047
- VVirtualScroll: VVirtualScroll
20258
+ VWindowItem: VWindowItem
20048
20259
  });
20049
20260
 
20050
20261
  // Types
@@ -20255,7 +20466,7 @@
20255
20466
  locale
20256
20467
  };
20257
20468
  }
20258
- const version$1 = "3.1.12";
20469
+ const version$1 = "3.1.14";
20259
20470
  createVuetify$1.version = version$1;
20260
20471
 
20261
20472
  // Vue's inject() can only be used in setup
@@ -20267,7 +20478,7 @@
20267
20478
  }
20268
20479
  }
20269
20480
 
20270
- const version = "3.1.12";
20481
+ const version = "3.1.14";
20271
20482
 
20272
20483
  const createVuetify = function () {
20273
20484
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -20288,6 +20499,4 @@
20288
20499
  exports.useTheme = useTheme;
20289
20500
  exports.version = version;
20290
20501
 
20291
- Object.defineProperty(exports, '__esModule', { value: true });
20292
-
20293
20502
  }));