@vuetify/nightly 3.2.0-dev-20230214.0 → 3.2.0-dev-20230322.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/CHANGELOG.md +5 -17
  2. package/dist/json/attributes.json +243 -59
  3. package/dist/json/tags.json +48 -2
  4. package/dist/json/web-types.json +1648 -279
  5. package/dist/vuetify-labs.css +666 -482
  6. package/dist/vuetify-labs.d.ts +59419 -13475
  7. package/dist/vuetify-labs.esm.js +797 -531
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +797 -531
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +524 -355
  12. package/dist/vuetify.d.ts +55670 -14368
  13. package/dist/vuetify.esm.js +607 -462
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +607 -462
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +793 -793
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.ts +6 -9
  21. package/lib/blueprints/md1.d.ts +6 -9
  22. package/lib/blueprints/md2.d.ts +6 -9
  23. package/lib/blueprints/md3.d.ts +6 -9
  24. package/lib/blueprints/md3.mjs +6 -0
  25. package/lib/blueprints/md3.mjs.map +1 -1
  26. package/lib/components/VAlert/VAlert.css +1 -1
  27. package/lib/components/VAlert/VAlert.mjs +29 -15
  28. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  29. package/lib/components/VAlert/_variables.scss +1 -1
  30. package/lib/components/VAlert/index.d.ts +515 -65
  31. package/lib/components/VApp/VApp.css +1 -0
  32. package/lib/components/VApp/VApp.sass +1 -0
  33. package/lib/components/VApp/index.d.ts +161 -17
  34. package/lib/components/VAppBar/VAppBar.mjs +9 -4
  35. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  36. package/lib/components/VAppBar/index.d.ts +624 -82
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs +23 -8
  38. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  39. package/lib/components/VAutocomplete/index.d.ts +1744 -113
  40. package/lib/components/VAvatar/index.d.ts +207 -25
  41. package/lib/components/VBadge/index.d.ts +286 -36
  42. package/lib/components/VBanner/VBanner.mjs +19 -12
  43. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  44. package/lib/components/VBanner/index.d.ts +485 -67
  45. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +6 -2
  46. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  47. package/lib/components/VBottomNavigation/index.d.ts +323 -36
  48. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
  49. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  50. package/lib/components/VBreadcrumbs/index.d.ts +346 -42
  51. package/lib/components/VBtn/VBtn.css +0 -5
  52. package/lib/components/VBtn/VBtn.mjs +65 -58
  53. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  54. package/lib/components/VBtn/VBtn.sass +0 -7
  55. package/lib/components/VBtn/_variables.scss +0 -2
  56. package/lib/components/VBtn/index.d.ts +454 -59
  57. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -7
  58. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  59. package/lib/components/VBtnGroup/index.d.ts +187 -22
  60. package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
  61. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  62. package/lib/components/VBtnToggle/index.d.ts +248 -32
  63. package/lib/components/VCard/VCard.mjs +10 -6
  64. package/lib/components/VCard/VCard.mjs.map +1 -1
  65. package/lib/components/VCard/VCardItem.mjs +27 -23
  66. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  67. package/lib/components/VCard/index.d.ts +958 -132
  68. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  69. package/lib/components/VCarousel/index.d.ts +585 -87
  70. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  71. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  72. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -4
  73. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  74. package/lib/components/VCheckbox/index.d.ts +841 -119
  75. package/lib/components/VChip/VChip.css +110 -90
  76. package/lib/components/VChip/VChip.mjs +70 -48
  77. package/lib/components/VChip/VChip.mjs.map +1 -1
  78. package/lib/components/VChip/_mixins.scss +27 -23
  79. package/lib/components/VChip/index.d.ts +476 -66
  80. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  81. package/lib/components/VChipGroup/index.d.ts +229 -28
  82. package/lib/components/VCode/index.d.ts +112 -13
  83. package/lib/components/VColorPicker/VColorPicker.mjs +9 -1
  84. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  85. package/lib/components/VColorPicker/VColorPickerCanvas.css +2 -1
  86. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +36 -18
  87. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  88. package/lib/components/VColorPicker/VColorPickerCanvas.sass +2 -1
  89. package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -4
  90. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  91. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  92. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  93. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  94. package/lib/components/VColorPicker/index.d.ts +284 -20
  95. package/lib/components/VColorPicker/util/index.mjs +2 -5
  96. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  97. package/lib/components/VCombobox/VCombobox.mjs +23 -8
  98. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  99. package/lib/components/VCombobox/index.d.ts +1756 -113
  100. package/lib/components/VCounter/index.d.ts +1909 -78
  101. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
  102. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  103. package/lib/components/VDefaultsProvider/index.d.ts +136 -18
  104. package/lib/components/VDialog/VDialog.css +31 -24
  105. package/lib/components/VDialog/VDialog.mjs +2 -2
  106. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  107. package/lib/components/VDialog/VDialog.sass +19 -12
  108. package/lib/components/VDialog/index.d.ts +2403 -124
  109. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  110. package/lib/components/VDivider/index.d.ts +132 -19
  111. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  112. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  113. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  114. package/lib/components/VExpansionPanel/index.d.ts +741 -104
  115. package/lib/components/VField/VField.mjs.map +1 -1
  116. package/lib/components/VField/index.d.ts +179 -23
  117. package/lib/components/VFileInput/VFileInput.mjs +1 -0
  118. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  119. package/lib/components/VFileInput/index.d.ts +1069 -93
  120. package/lib/components/VFooter/VFooter.css +2 -0
  121. package/lib/components/VFooter/VFooter.sass +2 -0
  122. package/lib/components/VFooter/_variables.scss +2 -0
  123. package/lib/components/VFooter/index.d.ts +206 -25
  124. package/lib/components/VForm/index.d.ts +207 -20
  125. package/lib/components/VGrid/VCol.mjs +6 -5
  126. package/lib/components/VGrid/VCol.mjs.map +1 -1
  127. package/lib/components/VGrid/VRow.mjs +4 -4
  128. package/lib/components/VGrid/VRow.mjs.map +1 -1
  129. package/lib/components/VGrid/index.d.ts +745 -64
  130. package/lib/components/VHover/index.d.ts +188 -29
  131. package/lib/components/VIcon/index.d.ts +500 -44
  132. package/lib/components/VImg/VImg.mjs +2 -2
  133. package/lib/components/VImg/VImg.mjs.map +1 -1
  134. package/lib/components/VImg/index.d.ts +281 -40
  135. package/lib/components/VInput/VInput.mjs.map +1 -1
  136. package/lib/components/VInput/index.d.ts +321 -47
  137. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  138. package/lib/components/VItemGroup/index.d.ts +313 -45
  139. package/lib/components/VKbd/VKbd.css +1 -0
  140. package/lib/components/VKbd/VKbd.sass +1 -0
  141. package/lib/components/VKbd/_variables.scss +1 -0
  142. package/lib/components/VKbd/index.d.ts +112 -13
  143. package/lib/components/VLabel/index.d.ts +115 -16
  144. package/lib/components/VLayout/index.d.ts +302 -35
  145. package/lib/components/VLazy/VLazy.mjs +4 -1
  146. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  147. package/lib/components/VLazy/index.d.ts +222 -27
  148. package/lib/components/VList/VListChildren.mjs +2 -2
  149. package/lib/components/VList/VListChildren.mjs.map +1 -1
  150. package/lib/components/VList/VListGroup.mjs +1 -4
  151. package/lib/components/VList/VListGroup.mjs.map +1 -1
  152. package/lib/components/VList/VListItem.mjs +23 -19
  153. package/lib/components/VList/VListItem.mjs.map +1 -1
  154. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  155. package/lib/components/VList/index.d.ts +1500 -191
  156. package/lib/components/VLocaleProvider/index.d.ts +123 -16
  157. package/lib/components/VMain/index.d.ts +121 -14
  158. package/lib/components/VMenu/VMenu.css +4 -4
  159. package/lib/components/VMenu/VMenu.mjs +8 -7
  160. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  161. package/lib/components/VMenu/VMenu.sass +1 -1
  162. package/lib/components/VMenu/index.d.ts +2411 -121
  163. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  164. package/lib/components/VMessages/index.d.ts +1934 -87
  165. package/lib/components/VNavigationDrawer/index.d.ts +382 -47
  166. package/lib/components/VNoSsr/index.d.ts +6 -0
  167. package/lib/components/VOverlay/VOverlay.css +2 -2
  168. package/lib/components/VOverlay/VOverlay.mjs +1 -4
  169. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  170. package/lib/components/VOverlay/VOverlay.sass +1 -1
  171. package/lib/components/VOverlay/_variables.scss +1 -1
  172. package/lib/components/VOverlay/index.d.ts +527 -75
  173. package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
  174. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  175. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  176. package/lib/components/VPagination/index.d.ts +504 -56
  177. package/lib/components/VParallax/VParallax.mjs +3 -3
  178. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  179. package/lib/components/VParallax/index.d.ts +144 -19
  180. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  181. package/lib/components/VProgressCircular/index.d.ts +189 -22
  182. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  183. package/lib/components/VProgressLinear/index.d.ts +325 -42
  184. package/lib/components/VRadio/index.d.ts +318 -46
  185. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -6
  186. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  187. package/lib/components/VRadioGroup/index.d.ts +468 -66
  188. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  189. package/lib/components/VRangeSlider/index.d.ts +530 -66
  190. package/lib/components/VRating/VRating.css +0 -4
  191. package/lib/components/VRating/VRating.mjs +6 -35
  192. package/lib/components/VRating/VRating.mjs.map +1 -1
  193. package/lib/components/VRating/VRating.sass +0 -5
  194. package/lib/components/VRating/index.d.ts +309 -38
  195. package/lib/components/VResponsive/index.d.ts +144 -21
  196. package/lib/components/VSelect/VSelect.mjs +23 -8
  197. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  198. package/lib/components/VSelect/index.d.ts +3150 -247
  199. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -4
  200. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  201. package/lib/components/VSelectionControl/index.d.ts +90 -10
  202. package/lib/components/VSelectionControlGroup/index.d.ts +245 -35
  203. package/lib/components/VSheet/VSheet.mjs +16 -12
  204. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  205. package/lib/components/VSheet/index.d.ts +196 -27
  206. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  207. package/lib/components/VSlideGroup/index.d.ts +488 -70
  208. package/lib/components/VSlider/VSliderTrack.mjs +1 -0
  209. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  210. package/lib/components/VSlider/index.d.ts +523 -65
  211. package/lib/components/VSlider/slider.mjs +5 -6
  212. package/lib/components/VSlider/slider.mjs.map +1 -1
  213. package/lib/components/VSnackbar/VSnackbar.css +2 -9
  214. package/lib/components/VSnackbar/VSnackbar.mjs +10 -11
  215. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  216. package/lib/components/VSnackbar/VSnackbar.sass +3 -10
  217. package/lib/components/VSnackbar/index.d.ts +1255 -74
  218. package/lib/components/VSwitch/VSwitch.mjs +2 -2
  219. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  220. package/lib/components/VSwitch/index.d.ts +503 -75
  221. package/lib/components/VSystemBar/VSystemBar.css +5 -1
  222. package/lib/components/VSystemBar/VSystemBar.mjs +6 -2
  223. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  224. package/lib/components/VSystemBar/VSystemBar.sass +5 -1
  225. package/lib/components/VSystemBar/_variables.scss +4 -1
  226. package/lib/components/VSystemBar/index.d.ts +186 -23
  227. package/lib/components/VTable/VTable.mjs.map +1 -1
  228. package/lib/components/VTable/index.d.ts +193 -26
  229. package/lib/components/VTabs/VTab.mjs +7 -23
  230. package/lib/components/VTabs/VTab.mjs.map +1 -1
  231. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  232. package/lib/components/VTabs/index.d.ts +628 -64
  233. package/lib/components/VTextField/VTextField.mjs +9 -5
  234. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  235. package/lib/components/VTextField/index.d.ts +1447 -101
  236. package/lib/components/VTextarea/VTextarea.mjs +8 -1
  237. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  238. package/lib/components/VTextarea/index.d.ts +1043 -93
  239. package/lib/components/VThemeProvider/index.d.ts +127 -16
  240. package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
  241. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  242. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  243. package/lib/components/VTimeline/index.d.ts +446 -60
  244. package/lib/components/VToolbar/VToolbar.mjs +10 -9
  245. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  246. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  247. package/lib/components/VToolbar/index.d.ts +552 -73
  248. package/lib/components/VTooltip/VTooltip.css +3 -3
  249. package/lib/components/VTooltip/VTooltip.mjs +4 -4
  250. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  251. package/lib/components/VTooltip/VTooltip.sass +1 -1
  252. package/lib/components/VTooltip/index.d.ts +1315 -73
  253. package/lib/components/VValidation/index.d.ts +204 -27
  254. package/lib/components/VWindow/index.d.ts +541 -75
  255. package/lib/components/index.d.ts +55694 -14389
  256. package/lib/components/transitions/createTransition.mjs +1 -1
  257. package/lib/components/transitions/createTransition.mjs.map +1 -1
  258. package/lib/components/transitions/index.d.ts +2144 -259
  259. package/lib/composables/defaults.mjs +5 -1
  260. package/lib/composables/defaults.mjs.map +1 -1
  261. package/lib/composables/display.mjs +15 -10
  262. package/lib/composables/display.mjs.map +1 -1
  263. package/lib/composables/form.mjs.map +1 -1
  264. package/lib/composables/loader.mjs.map +1 -1
  265. package/lib/composables/nested/nested.mjs +2 -2
  266. package/lib/composables/nested/nested.mjs.map +1 -1
  267. package/lib/composables/nested/selectStrategies.mjs +7 -1
  268. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  269. package/lib/composables/proxiedModel.mjs +1 -1
  270. package/lib/composables/proxiedModel.mjs.map +1 -1
  271. package/lib/composables/resizeObserver.mjs.map +1 -1
  272. package/lib/composables/stack.mjs +2 -2
  273. package/lib/composables/stack.mjs.map +1 -1
  274. package/lib/composables/theme.mjs +28 -23
  275. package/lib/composables/theme.mjs.map +1 -1
  276. package/lib/composables/variant.mjs.map +1 -1
  277. package/lib/entry-bundler.mjs +1 -1
  278. package/lib/framework.mjs +1 -1
  279. package/lib/index.d.ts +6 -9
  280. package/lib/labs/VDataTable/VDataTable.css +15 -0
  281. package/lib/labs/VDataTable/VDataTable.mjs +45 -19
  282. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  283. package/lib/labs/VDataTable/VDataTable.sass +9 -0
  284. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
  285. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  286. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  287. package/lib/labs/VDataTable/VDataTableRow.mjs +8 -2
  288. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  289. package/lib/labs/VDataTable/VDataTableRows.mjs +6 -7
  290. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  291. package/lib/labs/VDataTable/VDataTableServer.mjs +41 -19
  292. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  293. package/lib/labs/VDataTable/VDataTableVirtual.mjs +27 -14
  294. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  295. package/lib/labs/VDataTable/composables/expand.mjs +1 -1
  296. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  297. package/lib/labs/VDataTable/composables/group.mjs +12 -1
  298. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  299. package/lib/labs/VDataTable/composables/options.mjs +4 -10
  300. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  301. package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
  302. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  303. package/lib/labs/VDataTable/composables/select.mjs +1 -1
  304. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  305. package/lib/labs/VDataTable/composables/sort.mjs +19 -3
  306. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  307. package/lib/labs/VDataTable/index.d.ts +4934 -317
  308. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +18 -5
  309. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  310. package/lib/labs/VVirtualScroll/index.d.ts +41 -7
  311. package/lib/labs/components.d.ts +4970 -324
  312. package/lib/locale/adapters/vue-i18n.d.ts +1 -1
  313. package/lib/locale/adapters/vue-i18n.mjs +1 -1
  314. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  315. package/lib/locale/index.mjs +1 -1
  316. package/lib/locale/index.mjs.map +1 -1
  317. package/lib/styles/elements/_global.sass +0 -4
  318. package/lib/styles/generic/_index.scss +0 -1
  319. package/lib/styles/generic/_transitions.scss +111 -9
  320. package/lib/styles/main.css +316 -167
  321. package/lib/styles/settings/_utilities.scss +7 -0
  322. package/lib/styles/tools/_sheet.sass +3 -6
  323. package/lib/styles/utilities/_display.sass +6 -5
  324. package/lib/styles/utilities/_elevation.scss +13 -0
  325. package/lib/styles/utilities/_index.sass +3 -2
  326. package/lib/styles/utilities/_screenreaders.sass +13 -11
  327. package/lib/util/animation.mjs +8 -1
  328. package/lib/util/animation.mjs.map +1 -1
  329. package/lib/util/colorUtils.mjs +4 -5
  330. package/lib/util/colorUtils.mjs.map +1 -1
  331. package/lib/util/defineComponent.mjs +15 -7
  332. package/lib/util/defineComponent.mjs.map +1 -1
  333. package/lib/util/helpers.mjs +4 -0
  334. package/lib/util/helpers.mjs.map +1 -1
  335. package/package.json +15 -7
  336. package/lib/styles/generic/_elevation.scss +0 -10
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.2.0-dev-20230214.0
2
+ * Vuetify v3.2.0-dev-20230322.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -207,6 +207,10 @@
207
207
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
208
208
  return Math.max(min, Math.min(max, value));
209
209
  }
210
+ function getDecimals(value) {
211
+ const trimmedStr = value.toString().trim();
212
+ return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;
213
+ }
210
214
  function padEnd(str, length) {
211
215
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
212
216
  return str + char.repeat(Math.max(0, length - str.length));
@@ -489,7 +493,14 @@
489
493
  if (typeof el.animate === 'undefined') return {
490
494
  finished: Promise.resolve()
491
495
  };
492
- const animation = el.animate(keyframes, options);
496
+ let animation;
497
+ try {
498
+ animation = el.animate(keyframes, options);
499
+ } catch (err) {
500
+ return {
501
+ finished: Promise.resolve()
502
+ };
503
+ }
493
504
  if (typeof animation.finished === 'undefined') {
494
505
  animation.finished = new Promise(resolve => {
495
506
  animation.onfinish = () => {
@@ -784,11 +795,12 @@
784
795
  b,
785
796
  a
786
797
  } = _ref2;
787
- return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : 'FF'].join('')}`;
798
+ return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : ''].join('')}`;
788
799
  }
789
800
  function HexToRGB(hex) {
801
+ hex = parseHex(hex);
790
802
  let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));
791
- a = a === undefined ? a : Math.round(a / 255 * 100) / 100;
803
+ a = a === undefined ? a : a / 255;
792
804
  return {
793
805
  r,
794
806
  g,
@@ -811,9 +823,7 @@
811
823
  if (hex.length === 3 || hex.length === 4) {
812
824
  hex = hex.split('').map(x => x + x).join('');
813
825
  }
814
- if (hex.length === 6) {
815
- hex = padEnd(hex, 8, 'F');
816
- } else {
826
+ if (hex.length !== 6) {
817
827
  hex = padEnd(padEnd(hex, 6), 8, 'F');
818
828
  }
819
829
  return hex;
@@ -954,6 +964,8 @@
954
964
  const injectedDefaults = useDefaults();
955
965
  const providedDefaults = vue.ref(defaults);
956
966
  const newDefaults = vue.computed(() => {
967
+ const disabled = vue.unref(options?.disabled);
968
+ if (disabled) return injectedDefaults.value;
957
969
  const scoped = vue.unref(options?.scoped);
958
970
  const reset = vue.unref(options?.reset);
959
971
  const root = vue.unref(options?.root);
@@ -964,7 +976,9 @@
964
976
  if (reset || root) {
965
977
  const len = Number(reset || Infinity);
966
978
  for (let i = 0; i <= len; i++) {
967
- if (!properties.prev) break;
979
+ if (!properties || !('prev' in properties)) {
980
+ break;
981
+ }
968
982
  properties = properties.prev;
969
983
  }
970
984
  return properties;
@@ -1006,15 +1020,22 @@
1006
1020
  function propIsDefined(vnode, prop) {
1007
1021
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1008
1022
  }
1009
- const defineComponent = function defineComponent(options) {
1023
+
1024
+ // No props
1025
+
1026
+ // Implementation
1027
+ function defineComponent(options) {
1010
1028
  options._setup = options._setup ?? options.setup;
1011
1029
  if (!options.name) {
1012
1030
  consoleWarn('The component is missing an explicit name, unable to generate default prop value');
1013
1031
  return options;
1014
1032
  }
1015
1033
  if (options._setup) {
1016
- options.props = options.props ?? {};
1017
- options.props = propsFactory(options.props, toKebabCase(options.name))();
1034
+ options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1035
+ const propKeys = Object.keys(options.props);
1036
+ options.filterProps = function filterProps(props) {
1037
+ return pick(props, propKeys);
1038
+ };
1018
1039
  options.props._as = String;
1019
1040
  options.setup = function setup(props, ctx) {
1020
1041
  const defaults = useDefaults();
@@ -1025,10 +1046,11 @@
1025
1046
  const componentDefaults = vue.computed(() => defaults.value[props._as ?? options.name]);
1026
1047
  const _props = new Proxy(props, {
1027
1048
  get(target, prop) {
1049
+ const propValue = Reflect.get(target, prop);
1028
1050
  if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1029
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? target[prop];
1051
+ return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1030
1052
  }
1031
- return Reflect.get(target, prop);
1053
+ return propValue;
1032
1054
  }
1033
1055
  });
1034
1056
  const _subcomponentDefaults = vue.shallowRef();
@@ -1053,7 +1075,7 @@
1053
1075
  };
1054
1076
  }
1055
1077
  return options;
1056
- };
1078
+ }
1057
1079
  // Implementation
1058
1080
  function genericComponent() {
1059
1081
  let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
@@ -1670,17 +1692,9 @@
1670
1692
  if (current.value.dark) {
1671
1693
  createCssClass(lines, ':root', ['color-scheme: dark']);
1672
1694
  }
1695
+ createCssClass(lines, ':root', genCssVariables(current.value));
1673
1696
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
1674
- const {
1675
- variables,
1676
- dark
1677
- } = theme;
1678
- createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${dark ? 'dark' : 'normal'}`, ...genCssVariables(theme), ...Object.keys(variables).map(key => {
1679
- const value = variables[key];
1680
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1681
- const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1682
- return `--v-${key}: ${rgb ?? value}`;
1683
- })]);
1697
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);
1684
1698
  }
1685
1699
  const bgLines = [];
1686
1700
  const fgLines = [];
@@ -1697,22 +1711,30 @@
1697
1711
  lines.push(...bgLines, ...fgLines);
1698
1712
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
1699
1713
  });
1714
+ function getHead() {
1715
+ return {
1716
+ style: [{
1717
+ children: styles.value,
1718
+ id: 'vuetify-theme-stylesheet',
1719
+ nonce: parsedOptions.cspNonce || false
1720
+ }]
1721
+ };
1722
+ }
1700
1723
  function install(app) {
1701
1724
  const head = app._context.provides.usehead;
1702
1725
  if (head) {
1703
- head.addHeadObjs(vue.computed(() => {
1704
- const style = {
1705
- children: styles.value,
1706
- type: 'text/css',
1707
- id: 'vuetify-theme-stylesheet'
1708
- };
1709
- if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce;
1710
- return {
1711
- style: [style]
1712
- };
1713
- }));
1714
- if (IN_BROWSER) {
1715
- vue.watchEffect(() => head.updateDOM());
1726
+ if (head.push) {
1727
+ const entry = head.push(getHead);
1728
+ vue.watch(styles, () => {
1729
+ entry.patch(getHead);
1730
+ });
1731
+ } else {
1732
+ if (IN_BROWSER) {
1733
+ head.addHeadObjs(vue.computed(getHead));
1734
+ vue.watchEffect(() => head.updateDOM());
1735
+ } else {
1736
+ head.addHeadObjs(getHead());
1737
+ }
1716
1738
  }
1717
1739
  } else {
1718
1740
  let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
@@ -1785,6 +1807,11 @@
1785
1807
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1786
1808
  }
1787
1809
  }
1810
+ for (const [key, value] of Object.entries(theme.variables)) {
1811
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1812
+ const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1813
+ variables.push(`--v-${key}: ${rgb ?? value}`);
1814
+ }
1788
1815
  return variables;
1789
1816
  }
1790
1817
 
@@ -1814,7 +1841,7 @@
1814
1841
  });
1815
1842
  const model = vue.computed({
1816
1843
  get() {
1817
- return transformIn(vue.toRaw(isControlled.value ? props[prop] : internal.value));
1844
+ return transformIn(isControlled.value ? props[prop] : internal.value);
1818
1845
  },
1819
1846
  set(internalValue) {
1820
1847
  const newValue = transformOut(internalValue);
@@ -2014,7 +2041,7 @@
2014
2041
  en: false,
2015
2042
  es: false,
2016
2043
  et: false,
2017
- fa: false,
2044
+ fa: true,
2018
2045
  fi: false,
2019
2046
  fr: false,
2020
2047
  hr: false,
@@ -2147,6 +2174,7 @@
2147
2174
  name: 'VDefaultsProvider',
2148
2175
  props: {
2149
2176
  defaults: Object,
2177
+ disabled: Boolean,
2150
2178
  reset: [Number, String],
2151
2179
  root: Boolean,
2152
2180
  scoped: Boolean
@@ -2157,6 +2185,7 @@
2157
2185
  } = _ref;
2158
2186
  const {
2159
2187
  defaults,
2188
+ disabled,
2160
2189
  reset,
2161
2190
  root,
2162
2191
  scoped
@@ -2164,7 +2193,8 @@
2164
2193
  provideDefaults(defaults, {
2165
2194
  reset,
2166
2195
  root,
2167
- scoped
2196
+ scoped,
2197
+ disabled
2168
2198
  });
2169
2199
  return () => slots.default?.();
2170
2200
  }
@@ -2175,7 +2205,7 @@
2175
2205
  // Types
2176
2206
 
2177
2207
  function createCssTransition(name) {
2178
- let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top center 0';
2208
+ let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center center';
2179
2209
  let mode = arguments.length > 2 ? arguments[2] : undefined;
2180
2210
  return genericComponent()({
2181
2211
  name,
@@ -2786,7 +2816,7 @@
2786
2816
  "class": ['v-img__img', containClasses.value],
2787
2817
  "src": normalisedSrc.value.src,
2788
2818
  "srcset": normalisedSrc.value.srcset,
2789
- "alt": "",
2819
+ "alt": props.alt,
2790
2820
  "sizes": props.sizes,
2791
2821
  "ref": image,
2792
2822
  "onLoad": onLoad,
@@ -2808,7 +2838,7 @@
2808
2838
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createVNode("img", {
2809
2839
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
2810
2840
  "src": normalisedSrc.value.lazySrc,
2811
- "alt": ""
2841
+ "alt": props.alt
2812
2842
  }, null)]
2813
2843
  });
2814
2844
  const __placeholder = () => {
@@ -3150,16 +3180,20 @@
3150
3180
  default: () => [hasImage && vue.createVNode("div", {
3151
3181
  "key": "image",
3152
3182
  "class": "v-toolbar__image"
3153
- }, [vue.createVNode(VDefaultsProvider, {
3183
+ }, [!slots.image ? vue.createVNode(VImg, {
3184
+ "key": "image-img",
3185
+ "cover": true,
3186
+ "src": props.image
3187
+ }, null) : vue.createVNode(VDefaultsProvider, {
3188
+ "key": "image-defaults",
3189
+ "disabled": !props.image,
3154
3190
  "defaults": {
3155
3191
  VImg: {
3156
3192
  cover: true,
3157
3193
  src: props.image
3158
3194
  }
3159
3195
  }
3160
- }, {
3161
- default: () => [slots.image ? slots.image?.() : vue.createVNode(VImg, null, null)]
3162
- })]), vue.createVNode(VDefaultsProvider, {
3196
+ }, slots.image)]), vue.createVNode(VDefaultsProvider, {
3163
3197
  "defaults": {
3164
3198
  VTabs: {
3165
3199
  height: convertToUnit(contentHeight.value)
@@ -3205,8 +3239,24 @@
3205
3239
  };
3206
3240
  }
3207
3241
  });
3208
- function filterToolbarProps(props) {
3209
- return pick(props, Object.keys(VToolbar?.props ?? {}));
3242
+
3243
+ // Utilities
3244
+
3245
+ // Composables
3246
+ function useSsrBoot() {
3247
+ const isBooted = vue.ref(false);
3248
+ vue.onMounted(() => {
3249
+ window.requestAnimationFrame(() => {
3250
+ isBooted.value = true;
3251
+ });
3252
+ });
3253
+ const ssrBootStyles = vue.computed(() => !isBooted.value ? {
3254
+ transition: 'none !important'
3255
+ } : undefined);
3256
+ return {
3257
+ ssrBootStyles,
3258
+ isBooted: vue.readonly(isBooted)
3259
+ };
3210
3260
  }
3211
3261
 
3212
3262
  // Types
@@ -3251,6 +3301,9 @@
3251
3301
  const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
3252
3302
  return height + extensionHeight;
3253
3303
  });
3304
+ const {
3305
+ ssrBootStyles
3306
+ } = useSsrBoot();
3254
3307
  const {
3255
3308
  layoutItemStyles
3256
3309
  } = useLayoutItem({
@@ -3263,7 +3316,7 @@
3263
3316
  absolute: vue.toRef(props, 'absolute')
3264
3317
  });
3265
3318
  useRender(() => {
3266
- const [toolbarProps] = filterToolbarProps(props);
3319
+ const [toolbarProps] = VToolbar.filterProps(props);
3267
3320
  return vue.createVNode(VToolbar, vue.mergeProps({
3268
3321
  "ref": vToolbarRef,
3269
3322
  "class": ['v-app-bar', {
@@ -3271,7 +3324,8 @@
3271
3324
  }],
3272
3325
  "style": {
3273
3326
  ...layoutItemStyles.value,
3274
- height: undefined
3327
+ height: undefined,
3328
+ ...ssrBootStyles.value
3275
3329
  }
3276
3330
  }, toolbarProps), slots);
3277
3331
  });
@@ -3353,8 +3407,6 @@
3353
3407
  };
3354
3408
  }
3355
3409
 
3356
- // Types
3357
-
3358
3410
  const makeVBtnGroupProps = propsFactory({
3359
3411
  divided: Boolean,
3360
3412
  ...makeBorderProps(),
@@ -3405,9 +3457,6 @@
3405
3457
  });
3406
3458
  }
3407
3459
  });
3408
- function filterVBtnGroupProps(props) {
3409
- return pick(props, Object.keys(VBtnGroup.props));
3410
- }
3411
3460
 
3412
3461
  // Composables
3413
3462
 
@@ -3634,7 +3683,7 @@
3634
3683
  selected
3635
3684
  } = useGroup(props, VBtnToggleSymbol);
3636
3685
  useRender(() => {
3637
- const [btnGroupProps] = filterVBtnGroupProps(props);
3686
+ const [btnGroupProps] = VBtnGroup.filterProps(props);
3638
3687
  return vue.createVNode(VBtnGroup, vue.mergeProps({
3639
3688
  "class": "v-btn-toggle"
3640
3689
  }, btnGroupProps), {
@@ -4722,49 +4771,50 @@
4722
4771
 
4723
4772
  // Types
4724
4773
 
4774
+ const makeVBtnProps = propsFactory({
4775
+ active: {
4776
+ type: Boolean,
4777
+ default: undefined
4778
+ },
4779
+ symbol: {
4780
+ type: null,
4781
+ default: VBtnToggleSymbol
4782
+ },
4783
+ flat: Boolean,
4784
+ icon: [Boolean, String, Function, Object],
4785
+ prependIcon: IconValue,
4786
+ appendIcon: IconValue,
4787
+ block: Boolean,
4788
+ stacked: Boolean,
4789
+ ripple: {
4790
+ type: Boolean,
4791
+ default: true
4792
+ },
4793
+ ...makeBorderProps(),
4794
+ ...makeRoundedProps(),
4795
+ ...makeDensityProps(),
4796
+ ...makeDimensionProps(),
4797
+ ...makeElevationProps(),
4798
+ ...makeGroupItemProps(),
4799
+ ...makeLoaderProps(),
4800
+ ...makeLocationProps(),
4801
+ ...makePositionProps(),
4802
+ ...makeRouterProps(),
4803
+ ...makeSizeProps(),
4804
+ ...makeTagProps({
4805
+ tag: 'button'
4806
+ }),
4807
+ ...makeThemeProps(),
4808
+ ...makeVariantProps({
4809
+ variant: 'elevated'
4810
+ })
4811
+ }, 'VBtn');
4725
4812
  const VBtn = genericComponent()({
4726
4813
  name: 'VBtn',
4727
4814
  directives: {
4728
4815
  Ripple
4729
4816
  },
4730
- props: {
4731
- active: {
4732
- type: Boolean,
4733
- default: undefined
4734
- },
4735
- symbol: {
4736
- type: null,
4737
- default: VBtnToggleSymbol
4738
- },
4739
- flat: Boolean,
4740
- icon: [Boolean, String, Function, Object],
4741
- prependIcon: IconValue,
4742
- appendIcon: IconValue,
4743
- block: Boolean,
4744
- stacked: Boolean,
4745
- ripple: {
4746
- type: Boolean,
4747
- default: true
4748
- },
4749
- ...makeBorderProps(),
4750
- ...makeRoundedProps(),
4751
- ...makeDensityProps(),
4752
- ...makeDimensionProps(),
4753
- ...makeElevationProps(),
4754
- ...makeGroupItemProps(),
4755
- ...makeLoaderProps(),
4756
- ...makeLocationProps(),
4757
- ...makePositionProps(),
4758
- ...makeRouterProps(),
4759
- ...makeSizeProps(),
4760
- ...makeTagProps({
4761
- tag: 'button'
4762
- }),
4763
- ...makeThemeProps(),
4764
- ...makeVariantProps({
4765
- variant: 'elevated'
4766
- })
4767
- },
4817
+ props: makeVBtnProps(),
4768
4818
  emits: {
4769
4819
  'group:selected': val => true
4770
4820
  },
@@ -4857,43 +4907,49 @@
4857
4907
  },
4858
4908
  "value": valueAttr.value
4859
4909
  }, {
4860
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode(VDefaultsProvider, {
4910
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
4861
4911
  "key": "prepend",
4912
+ "class": "v-btn__prepend"
4913
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
4914
+ "key": "prepend-icon",
4915
+ "icon": props.prependIcon
4916
+ }, null) : vue.createVNode(VDefaultsProvider, {
4917
+ "key": "prepend-defaults",
4918
+ "disabled": !props.prependIcon,
4862
4919
  "defaults": {
4863
4920
  VIcon: {
4864
4921
  icon: props.prependIcon
4865
4922
  }
4866
4923
  }
4867
- }, {
4868
- default: () => [vue.createVNode("span", {
4869
- "class": "v-btn__prepend"
4870
- }, [slots.prepend?.() ?? vue.createVNode(VIcon, null, null)])]
4871
- }), vue.createVNode("span", {
4924
+ }, slots.prepend)]), vue.createVNode("span", {
4872
4925
  "class": "v-btn__content",
4873
4926
  "data-no-activator": ""
4874
- }, [vue.createVNode(VDefaultsProvider, {
4875
- "key": "content",
4927
+ }, [!slots.default && hasIcon ? vue.createVNode(VIcon, {
4928
+ "key": "content-icon",
4929
+ "icon": props.icon
4930
+ }, null) : vue.createVNode(VDefaultsProvider, {
4931
+ "key": "content-defaults",
4932
+ "disabled": !hasIcon,
4876
4933
  "defaults": {
4877
4934
  VIcon: {
4878
- icon: hasIcon ? props.icon : undefined
4935
+ icon: props.icon
4879
4936
  }
4880
4937
  }
4881
- }, {
4882
- default: () => [slots.default?.() ?? (hasIcon && vue.createVNode(VIcon, {
4883
- "key": "icon"
4884
- }, null))]
4885
- })]), !props.icon && hasAppend && vue.createVNode(VDefaultsProvider, {
4938
+ }, slots.default)]), !props.icon && hasAppend && vue.createVNode("span", {
4886
4939
  "key": "append",
4940
+ "class": "v-btn__append"
4941
+ }, [!slots.append ? vue.createVNode(VIcon, {
4942
+ "key": "append-icon",
4943
+ "icon": props.appendIcon
4944
+ }, null) : vue.createVNode(VDefaultsProvider, {
4945
+ "key": "append-defaults",
4946
+ "disabled": !props.appendIcon,
4887
4947
  "defaults": {
4888
4948
  VIcon: {
4889
4949
  icon: props.appendIcon
4890
4950
  }
4891
4951
  }
4892
- }, {
4893
- default: () => [vue.createVNode("span", {
4894
- "class": "v-btn__append"
4895
- }, [slots.append?.() ?? vue.createVNode(VIcon, null, null)])]
4896
- }), !!props.loading && vue.createVNode("span", {
4952
+ }, slots.append)]), !!props.loading && vue.createVNode("span", {
4897
4953
  "key": "loader",
4898
4954
  "class": "v-btn__loader"
4899
4955
  }, [slots.loader?.() ?? vue.createVNode(VProgressCircular, {
@@ -5022,10 +5078,12 @@
5022
5078
  })
5023
5079
  },
5024
5080
  emits: {
5081
+ 'click:close': e => true,
5025
5082
  'update:modelValue': value => true
5026
5083
  },
5027
5084
  setup(props, _ref) {
5028
5085
  let {
5086
+ emit,
5029
5087
  slots
5030
5088
  } = _ref;
5031
5089
  const isActive = useProxiedModel(props, 'modelValue');
@@ -5075,6 +5133,7 @@
5075
5133
  'aria-label': t(props.closeLabel),
5076
5134
  onClick(e) {
5077
5135
  isActive.value = false;
5136
+ emit('click:close', e);
5078
5137
  }
5079
5138
  }));
5080
5139
  return () => {
@@ -5096,8 +5155,17 @@
5096
5155
  "key": "border",
5097
5156
  "class": ['v-alert__border', textColorClasses.value],
5098
5157
  "style": textColorStyles.value
5099
- }, null), hasPrepend && vue.createVNode(VDefaultsProvider, {
5158
+ }, null), hasPrepend && vue.createVNode("div", {
5100
5159
  "key": "prepend",
5160
+ "class": "v-alert__prepend"
5161
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
5162
+ "key": "prepend-icon",
5163
+ "density": props.density,
5164
+ "icon": icon.value,
5165
+ "size": props.prominent ? 44 : 28
5166
+ }, null) : vue.createVNode(VDefaultsProvider, {
5167
+ "key": "prepend-defaults",
5168
+ "disabled": !icon.value,
5101
5169
  "defaults": {
5102
5170
  VIcon: {
5103
5171
  density: props.density,
@@ -5105,21 +5173,25 @@
5105
5173
  size: props.prominent ? 44 : 28
5106
5174
  }
5107
5175
  }
5108
- }, {
5109
- default: () => [vue.createVNode("div", {
5110
- "class": "v-alert__prepend"
5111
- }, [slots.prepend ? slots.prepend() : icon.value && vue.createVNode(VIcon, null, null)])]
5112
- }), vue.createVNode("div", {
5176
+ }, slots.prepend)]), vue.createVNode("div", {
5113
5177
  "class": "v-alert__content"
5114
5178
  }, [hasTitle && vue.createVNode(VAlertTitle, {
5115
5179
  "key": "title"
5116
5180
  }, {
5117
- default: () => [slots.title ? slots.title() : props.title]
5118
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5181
+ default: () => [slots.title?.() ?? props.title]
5182
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5119
5183
  "key": "append",
5120
5184
  "class": "v-alert__append"
5121
- }, [slots.append()]), hasClose && vue.createVNode(VDefaultsProvider, {
5185
+ }, [slots.append()]), hasClose && vue.createVNode("div", {
5122
5186
  "key": "close",
5187
+ "class": "v-alert__close"
5188
+ }, [!slots.close ? vue.createVNode(VBtn, vue.mergeProps({
5189
+ "key": "close-btn",
5190
+ "icon": props.closeIcon,
5191
+ "size": "x-small",
5192
+ "variant": "text"
5193
+ }, closeProps.value), null) : vue.createVNode(VDefaultsProvider, {
5194
+ "key": "close-defaults",
5123
5195
  "defaults": {
5124
5196
  VBtn: {
5125
5197
  icon: props.closeIcon,
@@ -5128,12 +5200,10 @@
5128
5200
  }
5129
5201
  }
5130
5202
  }, {
5131
- default: () => [vue.createVNode("div", {
5132
- "class": "v-alert__close"
5133
- }, [slots.close?.({
5203
+ default: () => [slots.close?.({
5134
5204
  props: closeProps.value
5135
- }) ?? vue.createVNode(VBtn, closeProps.value, null)])]
5136
- })]
5205
+ })]
5206
+ })])]
5137
5207
  });
5138
5208
  };
5139
5209
  }
@@ -6096,7 +6166,13 @@
6096
6166
  });
6097
6167
  }
6098
6168
  function onInput(e) {
6099
- model.value = e.target.value;
6169
+ const el = e.target;
6170
+ const caretPosition = [el.selectionStart, el.selectionEnd];
6171
+ model.value = el.value;
6172
+ vue.nextTick(() => {
6173
+ el.selectionStart = caretPosition[0];
6174
+ el.selectionEnd = caretPosition[1];
6175
+ });
6100
6176
  }
6101
6177
  useRender(() => {
6102
6178
  const hasCounter = !!(slots.counter || props.counter || props.counterValue);
@@ -6143,6 +6219,7 @@
6143
6219
  "id": id.value,
6144
6220
  "active": isActive.value || isDirty.value,
6145
6221
  "dirty": isDirty.value || props.dirty,
6222
+ "disabled": isDisabled.value,
6146
6223
  "focused": isFocused.value,
6147
6224
  "error": isValid.value === false
6148
6225
  }), {
@@ -6195,9 +6272,6 @@
6195
6272
  return forwardRefs({}, vInputRef, vFieldRef, inputRef);
6196
6273
  }
6197
6274
  });
6198
- function filterVTextFieldProps(props) {
6199
- return pick(props, Object.keys(VTextField.props));
6200
- }
6201
6275
 
6202
6276
  // Types
6203
6277
 
@@ -6455,11 +6529,6 @@
6455
6529
  };
6456
6530
  }
6457
6531
  });
6458
- function filterControlProps(props) {
6459
- return pick(props, Object.keys(VSelectionControl.props));
6460
- }
6461
-
6462
- // Types
6463
6532
 
6464
6533
  const makeVCheckboxBtnProps = propsFactory({
6465
6534
  indeterminate: Boolean,
@@ -6509,9 +6578,6 @@
6509
6578
  return {};
6510
6579
  }
6511
6580
  });
6512
- function filterCheckboxBtnProps(props) {
6513
- return pick(props, Object.keys(VCheckboxBtn.props));
6514
- }
6515
6581
 
6516
6582
  // Types
6517
6583
 
@@ -6540,7 +6606,7 @@
6540
6606
  useRender(() => {
6541
6607
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
6542
6608
  const [inputProps, _1] = filterInputProps(props);
6543
- const [checkboxProps, _2] = filterCheckboxBtnProps(props);
6609
+ const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6544
6610
  return vue.createVNode(VInput, vue.mergeProps({
6545
6611
  "class": "v-checkbox"
6546
6612
  }, inputAttrs, inputProps, {
@@ -6797,10 +6863,13 @@
6797
6863
  const link = useLink(props, attrs);
6798
6864
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
6799
6865
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6800
- function onCloseClick(e) {
6801
- isActive.value = false;
6802
- emit('click:close', e);
6803
- }
6866
+ const closeProps = vue.computed(() => ({
6867
+ 'aria-label': t(props.closeLabel),
6868
+ onClick(e) {
6869
+ isActive.value = false;
6870
+ emit('click:close', e);
6871
+ }
6872
+ }));
6804
6873
  function onClick(e) {
6805
6874
  emit('click', e);
6806
6875
  if (!isClickable.value) return;
@@ -6815,10 +6884,12 @@
6815
6884
  }
6816
6885
  return () => {
6817
6886
  const Tag = link.isLink.value ? 'a' : props.tag;
6818
- const hasAppend = !!(slots.append || props.appendIcon || props.appendAvatar);
6887
+ const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
6888
+ const hasAppend = !!(hasAppendMedia || slots.append);
6819
6889
  const hasClose = !!(slots.close || props.closable);
6820
6890
  const hasFilter = !!(slots.filter || props.filter) && group;
6821
- const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6891
+ const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
6892
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
6822
6893
  const hasColor = !group || group.isSelected.value;
6823
6894
  return isActive.value && vue.withDirectives(vue.createVNode(Tag, {
6824
6895
  "class": ['v-chip', {
@@ -6836,77 +6907,94 @@
6836
6907
  "onClick": onClick,
6837
6908
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
6838
6909
  }, {
6839
- default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
6840
- "key": "filter",
6841
- "defaults": {
6842
- VIcon: {
6843
- icon: props.filterIcon
6844
- }
6845
- }
6910
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
6911
+ "key": "filter"
6846
6912
  }, {
6847
- default: () => [vue.createVNode(VExpandXTransition, null, {
6848
- default: () => [vue.withDirectives(vue.createVNode("div", {
6849
- "class": "v-chip__filter"
6850
- }, [slots.filter ? slots.filter() : vue.createVNode(VIcon, null, null)]), [[vue.vShow, group.isSelected.value]])]
6851
- })]
6852
- }), hasPrepend && vue.createVNode(VDefaultsProvider, {
6913
+ default: () => [vue.withDirectives(vue.createVNode("div", {
6914
+ "class": "v-chip__filter"
6915
+ }, [!slots.filter ? vue.createVNode(VIcon, {
6916
+ "key": "filter-icon",
6917
+ "icon": props.filterIcon
6918
+ }, null) : vue.withDirectives(vue.createVNode(VDefaultsProvider, {
6919
+ "key": "filter-defaults",
6920
+ "disabled": !props.filterIcon,
6921
+ "defaults": {
6922
+ VIcon: {
6923
+ icon: props.filterIcon
6924
+ }
6925
+ }
6926
+ }, null), [[vue.resolveDirective("slot"), slots.filter, "default"]])]), [[vue.vShow, group.isSelected.value]])]
6927
+ }), hasPrepend && vue.createVNode("div", {
6853
6928
  "key": "prepend",
6929
+ "class": "v-chip__prepend"
6930
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
6931
+ "key": "prepend-icon",
6932
+ "icon": props.prependIcon,
6933
+ "start": true
6934
+ }, null), props.prependAvatar && vue.createVNode(VAvatar, {
6935
+ "key": "prepend-avatar",
6936
+ "image": props.prependAvatar,
6937
+ "start": true
6938
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
6939
+ "key": "prepend-defaults",
6940
+ "disabled": !hasPrependMedia,
6854
6941
  "defaults": {
6855
6942
  VAvatar: {
6856
- image: props.prependAvatar
6943
+ image: props.prependAvatar,
6944
+ start: true
6857
6945
  },
6858
6946
  VIcon: {
6859
- icon: props.prependIcon
6947
+ icon: props.prependIcon,
6948
+ start: true
6860
6949
  }
6861
6950
  }
6862
- }, {
6863
- default: () => [slots.prepend ? vue.createVNode("div", {
6864
- "class": "v-chip__prepend"
6865
- }, [slots.prepend()]) : props.prependAvatar ? vue.createVNode(VAvatar, {
6866
- "start": true
6867
- }, null) : props.prependIcon ? vue.createVNode(VIcon, {
6868
- "start": true
6869
- }, null) : undefined]
6870
- }), slots.default?.({
6951
+ }, slots.prepend)]), slots.default?.({
6871
6952
  isSelected: group?.isSelected.value,
6872
6953
  selectedClass: group?.selectedClass.value,
6873
6954
  select: group?.select,
6874
6955
  toggle: group?.toggle,
6875
6956
  value: group?.value.value,
6876
6957
  disabled: props.disabled
6877
- }) ?? props.text, hasAppend && vue.createVNode(VDefaultsProvider, {
6958
+ }) ?? props.text, hasAppend && vue.createVNode("div", {
6878
6959
  "key": "append",
6960
+ "class": "v-chip__append"
6961
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
6962
+ "key": "append-icon",
6963
+ "end": true,
6964
+ "icon": props.appendIcon
6965
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
6966
+ "key": "append-avatar",
6967
+ "end": true,
6968
+ "image": props.appendAvatar
6969
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
6970
+ "key": "append-defaults",
6971
+ "disabled": !hasAppendMedia,
6879
6972
  "defaults": {
6880
6973
  VAvatar: {
6974
+ end: true,
6881
6975
  image: props.appendAvatar
6882
6976
  },
6883
6977
  VIcon: {
6978
+ end: true,
6884
6979
  icon: props.appendIcon
6885
6980
  }
6886
6981
  }
6887
- }, {
6888
- default: () => [slots.append ? vue.createVNode("div", {
6889
- "class": "v-chip__append"
6890
- }, [slots.append()]) : props.appendAvatar ? vue.createVNode(VAvatar, {
6891
- "end": true
6892
- }, null) : props.appendIcon ? vue.createVNode(VIcon, {
6893
- "end": true
6894
- }, null) : undefined]
6895
- }), hasClose && vue.createVNode(VDefaultsProvider, {
6982
+ }, slots.append)]), hasClose && vue.createVNode("div", vue.mergeProps({
6896
6983
  "key": "close",
6984
+ "class": "v-chip__close"
6985
+ }, closeProps.value), [!slots.close ? vue.createVNode(VIcon, {
6986
+ "key": "close-icon",
6987
+ "icon": props.closeIcon,
6988
+ "size": "x-small"
6989
+ }, null) : vue.createVNode(VDefaultsProvider, {
6990
+ "key": "close-defaults",
6897
6991
  "defaults": {
6898
6992
  VIcon: {
6899
6993
  icon: props.closeIcon,
6900
6994
  size: 'x-small'
6901
6995
  }
6902
6996
  }
6903
- }, {
6904
- default: () => [vue.createVNode("div", {
6905
- "class": "v-chip__close",
6906
- "aria-label": t(props.closeLabel),
6907
- "onClick": onCloseClick
6908
- }, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
6909
- })]
6997
+ }, slots.close)])]
6910
6998
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6911
6999
  };
6912
7000
  }
@@ -7047,7 +7135,6 @@
7047
7135
  };
7048
7136
 
7049
7137
  /* eslint-disable sonarjs/no-identical-functions */
7050
-
7051
7138
  const independentSelectStrategy = mandatory => {
7052
7139
  const strategy = {
7053
7140
  select: _ref => {
@@ -7056,6 +7143,8 @@
7056
7143
  value,
7057
7144
  selected
7058
7145
  } = _ref;
7146
+ id = vue.toRaw(id);
7147
+
7059
7148
  // When mandatory and we're trying to deselect when id
7060
7149
  // is the only currently selected item then do nothing
7061
7150
  if (mandatory && !value) {
@@ -7100,6 +7189,7 @@
7100
7189
  id,
7101
7190
  ...rest
7102
7191
  } = _ref3;
7192
+ id = vue.toRaw(id);
7103
7193
  const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
7104
7194
  return parentStrategy.select({
7105
7195
  ...rest,
@@ -7130,6 +7220,7 @@
7130
7220
  children,
7131
7221
  ...rest
7132
7222
  } = _ref4;
7223
+ id = vue.toRaw(id);
7133
7224
  if (children.has(id)) return selected;
7134
7225
  return parentStrategy.select({
7135
7226
  id,
@@ -7153,6 +7244,7 @@
7153
7244
  children,
7154
7245
  ...rest
7155
7246
  } = _ref5;
7247
+ id = vue.toRaw(id);
7156
7248
  if (children.has(id)) return selected;
7157
7249
  return parentStrategy.select({
7158
7250
  id,
@@ -7176,6 +7268,7 @@
7176
7268
  children,
7177
7269
  parents
7178
7270
  } = _ref6;
7271
+ id = vue.toRaw(id);
7179
7272
  const original = new Map(selected);
7180
7273
  const items = [id];
7181
7274
  while (items.length) {
@@ -7397,7 +7490,7 @@
7397
7490
  isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
7398
7491
  parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
7399
7492
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
7400
- isSelected: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
7493
+ isSelected: vue.computed(() => parent.root.selected.value.get(vue.toRaw(computedId.value)) === 'on'),
7401
7494
  isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
7402
7495
  isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
7403
7496
  isGroupActivator: parent.isGroupActivator
@@ -7417,8 +7510,6 @@
7417
7510
  });
7418
7511
  };
7419
7512
 
7420
- // Types
7421
-
7422
7513
  const VListGroupActivator = defineComponent({
7423
7514
  name: 'VListGroupActivator',
7424
7515
  setup(_, _ref) {
@@ -7511,9 +7602,6 @@
7511
7602
  return {};
7512
7603
  }
7513
7604
  });
7514
- function filterListGroupProps(props) {
7515
- return pick(props, Object.keys(VListGroup.props));
7516
- }
7517
7605
 
7518
7606
  const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle');
7519
7607
 
@@ -7651,8 +7739,10 @@
7651
7739
  const hasColor = !list || isSelected.value || isActive.value;
7652
7740
  const hasTitle = slots.title || props.title;
7653
7741
  const hasSubtitle = slots.subtitle || props.subtitle;
7654
- const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
7655
- const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
7742
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
7743
+ const hasAppend = !!(hasAppendMedia || slots.append);
7744
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
7745
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
7656
7746
  list?.updateHasPrepend(hasPrepend);
7657
7747
  return vue.withDirectives(vue.createVNode(Tag, {
7658
7748
  "class": ['v-list-item', {
@@ -7672,7 +7762,7 @@
7672
7762
  default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
7673
7763
  "key": "prepend",
7674
7764
  "class": "v-list-item__prepend"
7675
- }, [props.prependAvatar && vue.createVNode(VAvatar, {
7765
+ }, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
7676
7766
  "key": "prepend-avatar",
7677
7767
  "density": props.density,
7678
7768
  "image": props.prependAvatar
@@ -7680,8 +7770,9 @@
7680
7770
  "key": "prepend-icon",
7681
7771
  "density": props.density,
7682
7772
  "icon": props.prependIcon
7683
- }, null), slots.prepend && vue.createVNode(VDefaultsProvider, {
7684
- "key": "prepend",
7773
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7774
+ "key": "prepend-defaults",
7775
+ "disabled": !hasPrependMedia,
7685
7776
  "defaults": {
7686
7777
  VAvatar: {
7687
7778
  density: props.density,
@@ -7696,7 +7787,7 @@
7696
7787
  }
7697
7788
  }
7698
7789
  }, {
7699
- default: () => [slots.prepend(slotProps.value)]
7790
+ default: () => [slots.prepend?.(slotProps.value)]
7700
7791
  })]), vue.createVNode("div", {
7701
7792
  "class": "v-list-item__content",
7702
7793
  "data-no-activator": ""
@@ -7715,8 +7806,17 @@
7715
7806
  }), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
7716
7807
  "key": "append",
7717
7808
  "class": "v-list-item__append"
7718
- }, [slots.append && vue.createVNode(VDefaultsProvider, {
7719
- "key": "append",
7809
+ }, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
7810
+ "key": "append-icon",
7811
+ "density": props.density,
7812
+ "icon": props.appendIcon
7813
+ }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7814
+ "key": "append-avatar",
7815
+ "density": props.density,
7816
+ "image": props.appendAvatar
7817
+ }, null)]) : vue.createVNode(VDefaultsProvider, {
7818
+ "key": "append-defaults",
7819
+ "disabled": !hasAppendMedia,
7720
7820
  "defaults": {
7721
7821
  VAvatar: {
7722
7822
  density: props.density,
@@ -7731,16 +7831,8 @@
7731
7831
  }
7732
7832
  }
7733
7833
  }, {
7734
- default: () => [slots.append(slotProps.value)]
7735
- }), props.appendIcon && vue.createVNode(VIcon, {
7736
- "key": "append-icon",
7737
- "density": props.density,
7738
- "icon": props.appendIcon
7739
- }, null), props.appendAvatar && vue.createVNode(VAvatar, {
7740
- "key": "append-avatar",
7741
- "density": props.density,
7742
- "image": props.appendAvatar
7743
- }, null)])]
7834
+ default: () => [slots.append?.(slotProps.value)]
7835
+ })])]
7744
7836
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7745
7837
  });
7746
7838
  return {};
@@ -7837,7 +7929,7 @@
7837
7929
  item
7838
7930
  }) : undefined
7839
7931
  };
7840
- const [listGroupProps, _1] = filterListGroupProps(itemProps);
7932
+ const [listGroupProps, _1] = VListGroup.filterProps(itemProps);
7841
7933
  return children ? vue.createVNode(VListGroup, vue.mergeProps({
7842
7934
  "value": itemProps?.value
7843
7935
  }, listGroupProps), {
@@ -8959,7 +9051,7 @@
8959
9051
  if (!(data.isActive.value && props.scrollStrategy)) return;
8960
9052
  scope = vue.effectScope();
8961
9053
  await vue.nextTick();
8962
- scope.run(() => {
9054
+ scope.active && scope.run(() => {
8963
9055
  if (typeof props.scrollStrategy === 'function') {
8964
9056
  props.scrollStrategy(data, props, scope);
8965
9057
  } else {
@@ -9040,7 +9132,7 @@
9040
9132
  });
9041
9133
  });
9042
9134
  vue.onScopeDispose(() => {
9043
- cancelIdleCallback(ric);
9135
+ typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);
9044
9136
  cancelAnimationFrame(raf);
9045
9137
  });
9046
9138
  }
@@ -9064,6 +9156,8 @@
9064
9156
 
9065
9157
  // Types
9066
9158
 
9159
+ const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
9160
+
9067
9161
  const DisplaySymbol = Symbol.for('vuetify:display');
9068
9162
  const defaultDisplayOptions = {
9069
9163
  mobileBreakpoint: 'lg',
@@ -9086,8 +9180,8 @@
9086
9180
  function getClientHeight(isHydrate) {
9087
9181
  return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9088
9182
  }
9089
- function getPlatform() {
9090
- const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
9183
+ function getPlatform(isHydrate) {
9184
+ const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9091
9185
  function match(regexp) {
9092
9186
  return Boolean(userAgent.match(regexp));
9093
9187
  }
@@ -9102,7 +9196,6 @@
9102
9196
  const win = match(/win/i);
9103
9197
  const mac = match(/mac/i);
9104
9198
  const linux = match(/linux/i);
9105
- const ssr = match(/ssr/i);
9106
9199
  return {
9107
9200
  android,
9108
9201
  ios,
@@ -9116,7 +9209,7 @@
9116
9209
  mac,
9117
9210
  linux,
9118
9211
  touch: SUPPORTS_TOUCH,
9119
- ssr
9212
+ ssr: userAgent === 'ssr'
9120
9213
  };
9121
9214
  }
9122
9215
  function createDisplay(options, ssr) {
@@ -9125,13 +9218,17 @@
9125
9218
  mobileBreakpoint
9126
9219
  } = parseDisplayOptions(options);
9127
9220
  const height = vue.ref(getClientHeight(ssr));
9128
- const platform = getPlatform();
9221
+ const platform = vue.shallowRef(getPlatform(ssr));
9129
9222
  const state = vue.reactive({});
9130
9223
  const width = vue.ref(getClientWidth(ssr));
9131
- function update() {
9224
+ function updateSize() {
9132
9225
  height.value = getClientHeight();
9133
9226
  width.value = getClientWidth();
9134
9227
  }
9228
+ function update() {
9229
+ updateSize();
9230
+ platform.value = getPlatform();
9231
+ }
9135
9232
 
9136
9233
  // eslint-disable-next-line max-statements
9137
9234
  vue.watchEffect(() => {
@@ -9143,7 +9240,7 @@
9143
9240
  const xxl = width.value >= thresholds.xxl;
9144
9241
  const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
9145
9242
  const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
9146
- const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
9243
+ const mobile = width.value < breakpointValue;
9147
9244
  state.xs = xs;
9148
9245
  state.sm = sm;
9149
9246
  state.md = md;
@@ -9163,11 +9260,11 @@
9163
9260
  state.width = width.value;
9164
9261
  state.mobile = mobile;
9165
9262
  state.mobileBreakpoint = mobileBreakpoint;
9166
- state.platform = platform;
9263
+ state.platform = platform.value;
9167
9264
  state.thresholds = thresholds;
9168
9265
  });
9169
9266
  if (IN_BROWSER) {
9170
- window.addEventListener('resize', update, {
9267
+ window.addEventListener('resize', updateSize, {
9171
9268
  passive: true
9172
9269
  });
9173
9270
  }
@@ -9232,7 +9329,7 @@
9232
9329
  parent?.activeChildren.add(vm.uid);
9233
9330
  vue.onScopeDispose(() => {
9234
9331
  if (createStackEntry) {
9235
- const idx = globalStack.findIndex(v => v[0] === vm.uid);
9332
+ const idx = vue.toRaw(globalStack).findIndex(v => v[0] === vm.uid);
9236
9333
  globalStack.splice(idx, 1);
9237
9334
  }
9238
9335
  parent?.activeChildren.delete(vm.uid);
@@ -9616,9 +9713,6 @@
9616
9713
  };
9617
9714
  }
9618
9715
  });
9619
- function filterVOverlayProps(props) {
9620
- return pick(props, Object.keys(VOverlay.props));
9621
- }
9622
9716
 
9623
9717
  // Types
9624
9718
 
@@ -9655,17 +9749,17 @@
9655
9749
  const id = vue.computed(() => props.id || `v-menu-${uid}`);
9656
9750
  const overlay = vue.ref();
9657
9751
  const parent = vue.inject(VMenuSymbol, null);
9658
- let openChildren = 0;
9752
+ const openChildren = vue.ref(0);
9659
9753
  vue.provide(VMenuSymbol, {
9660
9754
  register() {
9661
- ++openChildren;
9755
+ ++openChildren.value;
9662
9756
  },
9663
9757
  unregister() {
9664
- --openChildren;
9758
+ --openChildren.value;
9665
9759
  },
9666
9760
  closeParents() {
9667
9761
  setTimeout(() => {
9668
- if (!openChildren) {
9762
+ if (!openChildren.value) {
9669
9763
  isActive.value = false;
9670
9764
  parent?.closeParents();
9671
9765
  }
@@ -9684,7 +9778,7 @@
9684
9778
  'aria-owns': id.value
9685
9779
  }, props.activatorProps));
9686
9780
  useRender(() => {
9687
- const [overlayProps] = filterVOverlayProps(props);
9781
+ const [overlayProps] = VOverlay.filterProps(props);
9688
9782
  return vue.createVNode(VOverlay, vue.mergeProps({
9689
9783
  "ref": overlay,
9690
9784
  "class": ['v-menu']
@@ -9709,7 +9803,8 @@
9709
9803
  });
9710
9804
  });
9711
9805
  return forwardRefs({
9712
- id
9806
+ id,
9807
+ ΨopenChildren: openChildren
9713
9808
  }, overlay);
9714
9809
  }
9715
9810
  });
@@ -9769,7 +9864,15 @@
9769
9864
  t
9770
9865
  } = useLocale();
9771
9866
  const vTextFieldRef = vue.ref();
9772
- const menu = useProxiedModel(props, 'menu');
9867
+ const vMenuRef = vue.ref();
9868
+ const _menu = useProxiedModel(props, 'menu');
9869
+ const menu = vue.computed({
9870
+ get: () => _menu.value,
9871
+ set: v => {
9872
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
9873
+ _menu.value = v;
9874
+ }
9875
+ });
9773
9876
  const {
9774
9877
  items,
9775
9878
  transformIn,
@@ -9851,7 +9954,7 @@
9851
9954
  useRender(() => {
9852
9955
  const hasChips = !!(props.chips || slots.chip);
9853
9956
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
9854
- const [textFieldProps] = filterVTextFieldProps(props);
9957
+ const [textFieldProps] = VTextField.filterProps(props);
9855
9958
  return vue.createVNode(VTextField, vue.mergeProps({
9856
9959
  "ref": vTextFieldRef
9857
9960
  }, textFieldProps, {
@@ -9876,6 +9979,7 @@
9876
9979
  }), {
9877
9980
  ...slots,
9878
9981
  default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
9982
+ "ref": vMenuRef,
9879
9983
  "modelValue": menu.value,
9880
9984
  "onUpdate:modelValue": $event => menu.value = $event,
9881
9985
  "activator": "parent",
@@ -9936,7 +10040,13 @@
9936
10040
  return vue.createVNode("div", {
9937
10041
  "key": item.value,
9938
10042
  "class": "v-select__selection"
9939
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10043
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10044
+ "key": "chip",
10045
+ "closable": props.closableChips,
10046
+ "size": "small",
10047
+ "text": item.title
10048
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10049
+ "key": "chip-defaults",
9940
10050
  "defaults": {
9941
10051
  VChip: {
9942
10052
  closable: props.closableChips,
@@ -9945,15 +10055,15 @@
9945
10055
  }
9946
10056
  }
9947
10057
  }, {
9948
- default: () => [slots.chip ? slots.chip({
10058
+ default: () => [slots.chip?.({
9949
10059
  item,
9950
10060
  index,
9951
10061
  props: slotProps
9952
- }) : vue.createVNode(VChip, slotProps, null)]
9953
- }) : slots.selection ? slots.selection({
10062
+ })]
10063
+ }) : slots.selection?.({
9954
10064
  item,
9955
10065
  index
9956
- }) : vue.createVNode("span", {
10066
+ }) ?? vue.createVNode("span", {
9957
10067
  "class": "v-select__selection-text"
9958
10068
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
9959
10069
  "class": "v-select__selection-comma"
@@ -10114,7 +10224,15 @@
10114
10224
  const vTextFieldRef = vue.ref();
10115
10225
  const isFocused = vue.ref(false);
10116
10226
  const isPristine = vue.ref(true);
10117
- const menu = useProxiedModel(props, 'menu');
10227
+ const vMenuRef = vue.ref();
10228
+ const _menu = useProxiedModel(props, 'menu');
10229
+ const menu = vue.computed({
10230
+ get: () => _menu.value,
10231
+ set: v => {
10232
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
10233
+ _menu.value = v;
10234
+ }
10235
+ });
10118
10236
  const {
10119
10237
  items,
10120
10238
  transformIn,
@@ -10229,7 +10347,7 @@
10229
10347
  useRender(() => {
10230
10348
  const hasChips = !!(props.chips || slots.chip);
10231
10349
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10232
- const [textFieldProps] = filterVTextFieldProps(props);
10350
+ const [textFieldProps] = VTextField.filterProps(props);
10233
10351
  return vue.createVNode(VTextField, vue.mergeProps({
10234
10352
  "ref": vTextFieldRef
10235
10353
  }, textFieldProps, {
@@ -10256,6 +10374,7 @@
10256
10374
  }), {
10257
10375
  ...slots,
10258
10376
  default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
10377
+ "ref": vMenuRef,
10259
10378
  "modelValue": menu.value,
10260
10379
  "onUpdate:modelValue": $event => menu.value = $event,
10261
10380
  "activator": "parent",
@@ -10316,7 +10435,13 @@
10316
10435
  return vue.createVNode("div", {
10317
10436
  "key": item.value,
10318
10437
  "class": "v-autocomplete__selection"
10319
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
10438
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
10439
+ "key": "chip",
10440
+ "closable": props.closableChips,
10441
+ "size": "small",
10442
+ "text": item.title
10443
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
10444
+ "key": "chip-defaults",
10320
10445
  "defaults": {
10321
10446
  VChip: {
10322
10447
  closable: props.closableChips,
@@ -10325,15 +10450,15 @@
10325
10450
  }
10326
10451
  }
10327
10452
  }, {
10328
- default: () => [slots.chip ? slots.chip({
10453
+ default: () => [slots.chip?.({
10329
10454
  item,
10330
10455
  index,
10331
10456
  props: slotProps
10332
- }) : vue.createVNode(VChip, slotProps, null)]
10333
- }) : slots.selection ? slots.selection({
10457
+ })]
10458
+ }) : slots.selection?.({
10334
10459
  item,
10335
10460
  index
10336
- }) : vue.createVNode("span", {
10461
+ }) ?? vue.createVNode("span", {
10337
10462
  "class": "v-autocomplete__selection-text"
10338
10463
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
10339
10464
  "class": "v-autocomplete__selection-comma"
@@ -10534,7 +10659,8 @@
10534
10659
  });
10535
10660
  useRender(() => {
10536
10661
  const hasText = !!(props.text || slots.text);
10537
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
10662
+ const hasPrependMedia = !!(props.avatar || props.icon);
10663
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
10538
10664
  return vue.createVNode(props.tag, {
10539
10665
  "class": ['v-banner', {
10540
10666
  'v-banner--stacked': props.stacked || mobile.value,
@@ -10544,8 +10670,18 @@
10544
10670
  "style": [dimensionStyles.value, locationStyles.value],
10545
10671
  "role": "banner"
10546
10672
  }, {
10547
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10673
+ default: () => [hasPrepend && vue.createVNode("div", {
10548
10674
  "key": "prepend",
10675
+ "class": "v-banner__prepend"
10676
+ }, [!slots.prepend ? vue.createVNode(VAvatar, {
10677
+ "key": "prepend-avatar",
10678
+ "color": color.value,
10679
+ "density": density.value,
10680
+ "icon": props.icon,
10681
+ "image": props.avatar
10682
+ }, null) : vue.createVNode(VDefaultsProvider, {
10683
+ "key": "prepend-defaults",
10684
+ "disabled": !hasPrependMedia,
10549
10685
  "defaults": {
10550
10686
  VAvatar: {
10551
10687
  color: color.value,
@@ -10554,19 +10690,15 @@
10554
10690
  image: props.avatar
10555
10691
  }
10556
10692
  }
10557
- }, {
10558
- default: () => [vue.createVNode("div", {
10559
- "class": "v-banner__prepend"
10560
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && vue.createVNode(VAvatar, null, null)])]
10561
- }), vue.createVNode("div", {
10693
+ }, slots.prepend)]), vue.createVNode("div", {
10562
10694
  "class": "v-banner__content"
10563
10695
  }, [hasText && vue.createVNode(VBannerText, {
10564
10696
  "key": "text"
10565
10697
  }, {
10566
- default: () => [slots.text ? slots.text() : props.text]
10567
- }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, null, {
10568
- default: () => [slots.actions()]
10569
- })]
10698
+ default: () => [slots.text?.() ?? props.text]
10699
+ }), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, {
10700
+ "key": "actions"
10701
+ }, slots.actions)]
10570
10702
  });
10571
10703
  });
10572
10704
  }
@@ -10632,6 +10764,9 @@
10632
10764
  const {
10633
10765
  roundedClasses
10634
10766
  } = useRounded(props);
10767
+ const {
10768
+ ssrBootStyles
10769
+ } = useSsrBoot();
10635
10770
  const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
10636
10771
  const isActive = vue.toRef(props, 'active');
10637
10772
  const {
@@ -10666,7 +10801,7 @@
10666
10801
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
10667
10802
  height: convertToUnit(height.value),
10668
10803
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
10669
- }]
10804
+ }, ssrBootStyles.value]
10670
10805
  }, {
10671
10806
  default: () => [slots.default && vue.createVNode("div", {
10672
10807
  "class": "v-bottom-navigation__content"
@@ -10796,19 +10931,23 @@
10796
10931
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
10797
10932
  "style": backgroundColorStyles.value
10798
10933
  }, {
10799
- default: () => [hasPrepend && vue.createVNode(VDefaultsProvider, {
10934
+ default: () => [hasPrepend && vue.createVNode("div", {
10800
10935
  "key": "prepend",
10936
+ "class": "v-breadcrumbs__prepend"
10937
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
10938
+ "key": "prepend-icon",
10939
+ "start": true,
10940
+ "icon": props.icon
10941
+ }, null) : vue.createVNode(VDefaultsProvider, {
10942
+ "key": "prepend-defaults",
10943
+ "disabled": !props.icon,
10801
10944
  "defaults": {
10802
10945
  VIcon: {
10803
10946
  icon: props.icon,
10804
10947
  start: true
10805
10948
  }
10806
10949
  }
10807
- }, {
10808
- default: () => [vue.createVNode("div", {
10809
- "class": "v-breadcrumbs__prepend"
10810
- }, [slots.prepend ? slots.prepend() : props.icon && vue.createVNode(VIcon, null, null)])]
10811
- }), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10950
+ }, slots.prepend)]), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
10812
10951
  "key": index,
10813
10952
  "disabled": index >= array.length - 1
10814
10953
  }, typeof item === 'string' ? {
@@ -10872,30 +11011,33 @@
10872
11011
  slots
10873
11012
  } = _ref;
10874
11013
  useRender(() => {
10875
- const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
10876
- const hasAppend = !!(props.appendAvatar || props.appendIcon || slots.append);
11014
+ const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
11015
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
11016
+ const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
11017
+ const hasAppend = !!(hasAppendMedia || slots.append);
10877
11018
  const hasTitle = !!(props.title || slots.title);
10878
11019
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
10879
11020
  return vue.createVNode("div", {
10880
11021
  "class": "v-card-item"
10881
- }, [hasPrepend && vue.createVNode(VDefaultsProvider, {
11022
+ }, [hasPrepend && vue.createVNode("div", {
10882
11023
  "key": "prepend",
11024
+ "class": "v-card-item__prepend"
11025
+ }, [!slots.prepend ? hasPrependMedia && vue.createVNode(VAvatar, {
11026
+ "key": "prepend-avatar",
11027
+ "density": props.density,
11028
+ "icon": props.prependIcon,
11029
+ "image": props.prependAvatar
11030
+ }, null) : vue.createVNode(VDefaultsProvider, {
11031
+ "key": "prepend-defaults",
11032
+ "disabled": !hasPrependMedia,
10883
11033
  "defaults": {
10884
11034
  VAvatar: {
10885
11035
  density: props.density,
10886
11036
  icon: props.prependIcon,
10887
11037
  image: props.prependAvatar
10888
- },
10889
- VIcon: {
10890
- density: props.density,
10891
- icon: props.prependIcon
10892
11038
  }
10893
11039
  }
10894
- }, {
10895
- default: () => [vue.createVNode("div", {
10896
- "class": "v-card-item__prepend"
10897
- }, [slots.prepend?.() ?? vue.createVNode(VAvatar, null, null)])]
10898
- }), vue.createVNode("div", {
11040
+ }, slots.prepend)]), vue.createVNode("div", {
10899
11041
  "class": "v-card-item__content"
10900
11042
  }, [hasTitle && vue.createVNode(VCardTitle, {
10901
11043
  "key": "title"
@@ -10905,24 +11047,25 @@
10905
11047
  "key": "subtitle"
10906
11048
  }, {
10907
11049
  default: () => [slots.subtitle?.() ?? props.subtitle]
10908
- }), slots.default?.()]), hasAppend && vue.createVNode(VDefaultsProvider, {
11050
+ }), slots.default?.()]), hasAppend && vue.createVNode("div", {
10909
11051
  "key": "append",
11052
+ "class": "v-card-item__append"
11053
+ }, [!slots.append ? hasAppendMedia && vue.createVNode(VAvatar, {
11054
+ "key": "append-avatar",
11055
+ "density": props.density,
11056
+ "icon": props.appendIcon,
11057
+ "image": props.appendAvatar
11058
+ }, null) : vue.createVNode(VDefaultsProvider, {
11059
+ "key": "append-defaults",
11060
+ "disabled": !hasAppendMedia,
10910
11061
  "defaults": {
10911
11062
  VAvatar: {
10912
11063
  density: props.density,
10913
11064
  icon: props.appendIcon,
10914
11065
  image: props.appendAvatar
10915
- },
10916
- VIcon: {
10917
- density: props.density,
10918
- icon: props.appendIcon
10919
11066
  }
10920
11067
  }
10921
- }, {
10922
- default: () => [vue.createVNode("div", {
10923
- "class": "v-card-item__append"
10924
- }, [slots.append?.() ?? vue.createVNode(VAvatar, null, null)])]
10925
- })]);
11068
+ }, slots.append)])]);
10926
11069
  });
10927
11070
  return {};
10928
11071
  }
@@ -11034,19 +11177,23 @@
11034
11177
  "onClick": isClickable.value && link.navigate,
11035
11178
  "tabindex": props.disabled ? -1 : undefined
11036
11179
  }, {
11037
- default: () => [hasImage && vue.createVNode(VDefaultsProvider, {
11180
+ default: () => [hasImage && vue.createVNode("div", {
11038
11181
  "key": "image",
11182
+ "class": "v-card__image"
11183
+ }, [!slots.image ? vue.createVNode(VImg, {
11184
+ "key": "image-img",
11185
+ "cover": true,
11186
+ "src": props.image
11187
+ }, null) : vue.createVNode(VDefaultsProvider, {
11188
+ "key": "image-defaults",
11189
+ "disabled": !props.image,
11039
11190
  "defaults": {
11040
11191
  VImg: {
11041
11192
  cover: true,
11042
11193
  src: props.image
11043
11194
  }
11044
11195
  }
11045
- }, {
11046
- default: () => [vue.createVNode("div", {
11047
- "class": "v-card__image"
11048
- }, [slots.image?.() ?? vue.createVNode(VImg, null, null)])]
11049
- }), vue.createVNode(LoaderSlot, {
11196
+ }, slots.image)]), vue.createVNode(LoaderSlot, {
11050
11197
  "name": "v-card",
11051
11198
  "active": !!props.loading,
11052
11199
  "color": typeof props.loading === 'boolean' ? undefined : props.loading
@@ -11356,25 +11503,6 @@
11356
11503
  }
11357
11504
  });
11358
11505
 
11359
- // Utilities
11360
-
11361
- // Composables
11362
- function useSsrBoot() {
11363
- const isBooted = vue.ref(false);
11364
- vue.onMounted(() => {
11365
- window.requestAnimationFrame(() => {
11366
- isBooted.value = true;
11367
- });
11368
- });
11369
- const ssrBootStyles = vue.computed(() => !isBooted.value ? {
11370
- transition: 'none !important'
11371
- } : undefined);
11372
- return {
11373
- ssrBootStyles,
11374
- isBooted: vue.readonly(isBooted)
11375
- };
11376
- }
11377
-
11378
11506
  const VWindowItem = genericComponent()({
11379
11507
  name: 'VWindowItem',
11380
11508
  directives: {
@@ -11673,6 +11801,19 @@
11673
11801
  };
11674
11802
  });
11675
11803
  const canvasRef = vue.ref();
11804
+ const canvasWidth = vue.ref(parseFloat(props.width));
11805
+ const canvasHeight = vue.ref(parseFloat(props.height));
11806
+ const {
11807
+ resizeRef
11808
+ } = useResizeObserver(entries => {
11809
+ if (!resizeRef.value?.offsetParent) return;
11810
+ const {
11811
+ width,
11812
+ height
11813
+ } = entries[0].contentRect;
11814
+ canvasWidth.value = width;
11815
+ canvasHeight.value = height;
11816
+ });
11676
11817
  function updateDotPosition(x, y, rect) {
11677
11818
  const {
11678
11819
  left,
@@ -11717,18 +11858,14 @@
11717
11858
  return;
11718
11859
  }
11719
11860
  if (!canvasRef.value) return;
11720
- const {
11721
- width,
11722
- height
11723
- } = canvasRef.value.getBoundingClientRect();
11724
11861
  const {
11725
11862
  x,
11726
11863
  y
11727
11864
  } = dotPosition.value;
11728
11865
  emit('update:color', {
11729
11866
  h: props.color?.h ?? 0,
11730
- s: clamp(x, 0, width) / width,
11731
- v: 1 - clamp(y, 0, height) / height,
11867
+ s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
11868
+ v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,
11732
11869
  a: props.color?.a ?? 1
11733
11870
  });
11734
11871
  });
@@ -11751,16 +11888,27 @@
11751
11888
  vue.watch(() => props.color?.h, updateCanvas, {
11752
11889
  immediate: true
11753
11890
  });
11891
+ vue.watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {
11892
+ updateCanvas();
11893
+ dotPosition.value = {
11894
+ x: dotPosition.value.x * newVal[0] / oldVal[0],
11895
+ y: dotPosition.value.y * newVal[1] / oldVal[1]
11896
+ };
11897
+ }, {
11898
+ flush: 'post'
11899
+ });
11754
11900
  vue.watch(() => props.color, () => {
11755
11901
  if (isInteracting.value) {
11756
11902
  isInteracting.value = false;
11757
11903
  return;
11758
11904
  }
11759
- if (!props.color) return;
11760
11905
  isOutsideUpdate.value = true;
11761
- dotPosition.value = {
11762
- x: props.color.s * parseInt(props.width, 10),
11763
- y: (1 - props.color.v) * parseInt(props.height, 10)
11906
+ dotPosition.value = props.color ? {
11907
+ x: props.color.s * canvasWidth.value,
11908
+ y: (1 - props.color.v) * canvasHeight.value
11909
+ } : {
11910
+ x: 0,
11911
+ y: 0
11764
11912
  };
11765
11913
  }, {
11766
11914
  deep: true,
@@ -11768,19 +11916,16 @@
11768
11916
  });
11769
11917
  vue.onMounted(() => updateCanvas());
11770
11918
  useRender(() => vue.createVNode("div", {
11919
+ "ref": resizeRef,
11771
11920
  "class": "v-color-picker-canvas",
11772
- "style": {
11773
- width: convertToUnit(props.width),
11774
- height: convertToUnit(props.height)
11775
- },
11776
11921
  "onClick": handleClick,
11777
11922
  "onMousedown": handleMouseDown,
11778
11923
  "onTouchstart": handleMouseDown
11779
11924
  }, [vue.createVNode("canvas", {
11780
11925
  "ref": canvasRef,
11781
- "width": props.width,
11782
- "height": props.height
11783
- }, null), vue.createVNode("div", {
11926
+ "width": canvasWidth.value,
11927
+ "height": canvasHeight.value
11928
+ }, null), props.color && vue.createVNode("div", {
11784
11929
  "class": ['v-color-picker-canvas__dot', {
11785
11930
  'v-color-picker-canvas__dot--disabled': props.disabled
11786
11931
  }],
@@ -11813,10 +11958,7 @@
11813
11958
  hsva = color;
11814
11959
  }
11815
11960
  }
11816
- return hsva != null ? {
11817
- ...hsva,
11818
- a: hsva.a ?? 1
11819
- } : null;
11961
+ return hsva;
11820
11962
  }
11821
11963
  function stripAlpha(color, stripAlpha) {
11822
11964
  if (stripAlpha) {
@@ -11836,7 +11978,7 @@
11836
11978
  if (typeof input === 'object') {
11837
11979
  let converted;
11838
11980
  if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;
11839
- return stripAlpha(converted, !has(input, ['a']));
11981
+ return stripAlpha(converted, !has(input, ['a']) && color.a === 1);
11840
11982
  }
11841
11983
  return color;
11842
11984
  }
@@ -12027,7 +12169,7 @@
12027
12169
  const inputs = vue.computed(() => {
12028
12170
  const mode = enabledModes.value.find(m => m.name === props.mode);
12029
12171
  if (!mode) return [];
12030
- const color = props.color ? mode.to(props.color) : {};
12172
+ const color = props.color ? mode.to(props.color) : null;
12031
12173
  return mode.inputs?.map(_ref3 => {
12032
12174
  let {
12033
12175
  getValue,
@@ -12038,11 +12180,11 @@
12038
12180
  ...mode.inputProps,
12039
12181
  ...inputProps,
12040
12182
  disabled: props.disabled,
12041
- value: getValue(color),
12183
+ value: color && getValue(color),
12042
12184
  onChange: e => {
12043
12185
  const target = e.target;
12044
12186
  if (!target) return;
12045
- emit('update:color', mode.from(getColor(color, target.value)));
12187
+ emit('update:color', mode.from(getColor(color ?? nullColor, target.value)));
12046
12188
  }
12047
12189
  };
12048
12190
  });
@@ -12153,10 +12295,7 @@
12153
12295
  const min = vue.computed(() => parseFloat(props.min));
12154
12296
  const max = vue.computed(() => parseFloat(props.max));
12155
12297
  const step = vue.computed(() => props.step > 0 ? parseFloat(props.step) : 0);
12156
- const decimals = vue.computed(() => {
12157
- const trimmedStep = step.value.toString().trim();
12158
- return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
12159
- });
12298
+ const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12160
12299
  const thumbSize = vue.computed(() => parseInt(props.thumbSize, 10));
12161
12300
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
12162
12301
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
@@ -12255,7 +12394,9 @@
12255
12394
  const percentage = (val - min.value) / (max.value - min.value) * 100;
12256
12395
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
12257
12396
  };
12397
+ const showTicks = vue.toRef(props, 'showTicks');
12258
12398
  const parsedTicks = vue.computed(() => {
12399
+ if (!showTicks.value) return [];
12259
12400
  if (!props.ticks) {
12260
12401
  return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
12261
12402
  const value = min.value + t * step.value;
@@ -12304,7 +12445,7 @@
12304
12445
  readonly: vue.toRef(props, 'readonly'),
12305
12446
  rounded: vue.toRef(props, 'rounded'),
12306
12447
  roundValue,
12307
- showTicks: vue.toRef(props, 'showTicks'),
12448
+ showTicks,
12308
12449
  startOffset,
12309
12450
  step,
12310
12451
  thumbSize,
@@ -12526,6 +12667,7 @@
12526
12667
  };
12527
12668
  });
12528
12669
  const computedTicks = vue.computed(() => {
12670
+ if (!showTicks.value) return [];
12529
12671
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
12530
12672
  return ticks.map((tick, index) => {
12531
12673
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
@@ -12741,12 +12883,12 @@
12741
12883
  "hideDetails": true
12742
12884
  }, null), !props.hideAlpha && vue.createVNode(VSlider, {
12743
12885
  "class": "v-color-picker-preview__track v-color-picker-preview__alpha",
12744
- "modelValue": props.color?.a,
12886
+ "modelValue": props.color?.a ?? 1,
12745
12887
  "onUpdate:modelValue": a => emit('update:color', {
12746
12888
  ...(props.color ?? nullColor),
12747
12889
  a
12748
12890
  }),
12749
- "step": 0,
12891
+ "step": 1 / 256,
12750
12892
  "min": 0,
12751
12893
  "max": 1,
12752
12894
  "disabled": props.disabled,
@@ -13131,18 +13273,21 @@
13131
13273
  }
13132
13274
  });
13133
13275
 
13276
+ const makeVSheetProps = propsFactory({
13277
+ color: String,
13278
+ ...makeBorderProps(),
13279
+ ...makeDimensionProps(),
13280
+ ...makeElevationProps(),
13281
+ ...makeLocationProps(),
13282
+ ...makePositionProps(),
13283
+ ...makeRoundedProps(),
13284
+ ...makeTagProps(),
13285
+ ...makeThemeProps()
13286
+ }, 'v-sheet');
13134
13287
  const VSheet = genericComponent()({
13135
13288
  name: 'VSheet',
13136
13289
  props: {
13137
- color: String,
13138
- ...makeBorderProps(),
13139
- ...makeDimensionProps(),
13140
- ...makeElevationProps(),
13141
- ...makeLocationProps(),
13142
- ...makePositionProps(),
13143
- ...makeRoundedProps(),
13144
- ...makeTagProps(),
13145
- ...makeThemeProps()
13290
+ ...makeVSheetProps()
13146
13291
  },
13147
13292
  setup(props, _ref) {
13148
13293
  let {
@@ -13173,10 +13318,11 @@
13173
13318
  const {
13174
13319
  roundedClasses
13175
13320
  } = useRounded(props);
13176
- return () => vue.createVNode(props.tag, {
13321
+ useRender(() => vue.createVNode(props.tag, {
13177
13322
  "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
13178
13323
  "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
13179
- }, slots);
13324
+ }, slots));
13325
+ return {};
13180
13326
  }
13181
13327
  });
13182
13328
 
@@ -13253,6 +13399,13 @@
13253
13399
  vue.onMounted(() => {
13254
13400
  if (!props.modes.includes(mode.value)) mode.value = props.modes[0];
13255
13401
  });
13402
+ provideDefaults({
13403
+ VSlider: {
13404
+ color: undefined,
13405
+ trackColor: undefined,
13406
+ trackFillColor: undefined
13407
+ }
13408
+ });
13256
13409
  useRender(() => vue.createVNode(VSheet, {
13257
13410
  "rounded": props.rounded,
13258
13411
  "elevation": props.elevation,
@@ -13353,7 +13506,15 @@
13353
13506
  const vTextFieldRef = vue.ref();
13354
13507
  const isFocused = vue.ref(false);
13355
13508
  const isPristine = vue.ref(true);
13356
- const menu = useProxiedModel(props, 'menu');
13509
+ const vMenuRef = vue.ref();
13510
+ const _menu = useProxiedModel(props, 'menu');
13511
+ const menu = vue.computed({
13512
+ get: () => _menu.value,
13513
+ set: v => {
13514
+ if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
13515
+ _menu.value = v;
13516
+ }
13517
+ });
13357
13518
  const selectionIndex = vue.ref(-1);
13358
13519
  const color = vue.computed(() => vTextFieldRef.value?.color);
13359
13520
  const {
@@ -13536,7 +13697,7 @@
13536
13697
  useRender(() => {
13537
13698
  const hasChips = !!(props.chips || slots.chip);
13538
13699
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13539
- const [textFieldProps] = filterVTextFieldProps(props);
13700
+ const [textFieldProps] = VTextField.filterProps(props);
13540
13701
  return vue.createVNode(VTextField, vue.mergeProps({
13541
13702
  "ref": vTextFieldRef
13542
13703
  }, textFieldProps, {
@@ -13562,6 +13723,7 @@
13562
13723
  }), {
13563
13724
  ...slots,
13564
13725
  default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
13726
+ "ref": vMenuRef,
13565
13727
  "modelValue": menu.value,
13566
13728
  "onUpdate:modelValue": $event => menu.value = $event,
13567
13729
  "activator": "parent",
@@ -13623,7 +13785,13 @@
13623
13785
  "key": item.value,
13624
13786
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
13625
13787
  "style": index === selectionIndex.value ? textColorStyles.value : {}
13626
- }, [hasChips ? vue.createVNode(VDefaultsProvider, {
13788
+ }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
13789
+ "key": "chip",
13790
+ "closable": props.closableChips,
13791
+ "size": "small",
13792
+ "text": item.title
13793
+ }, slotProps), null) : vue.createVNode(VDefaultsProvider, {
13794
+ "key": "chip-defaults",
13627
13795
  "defaults": {
13628
13796
  VChip: {
13629
13797
  closable: props.closableChips,
@@ -13632,15 +13800,15 @@
13632
13800
  }
13633
13801
  }
13634
13802
  }, {
13635
- default: () => [slots.chip ? slots.chip({
13803
+ default: () => [slots.chip?.({
13636
13804
  item,
13637
13805
  index,
13638
13806
  props: slotProps
13639
- }) : vue.createVNode(VChip, slotProps, null)]
13640
- }) : slots.selection ? slots.selection({
13807
+ })]
13808
+ }) : slots.selection?.({
13641
13809
  item,
13642
13810
  index
13643
- }) : vue.createVNode("span", {
13811
+ }) ?? vue.createVNode("span", {
13644
13812
  "class": "v-combobox__selection-text"
13645
13813
  }, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
13646
13814
  "class": "v-combobox__selection-comma"
@@ -13737,7 +13905,7 @@
13737
13905
  'aria-expanded': String(isActive.value)
13738
13906
  }, props.activatorProps));
13739
13907
  useRender(() => {
13740
- const [overlayProps] = filterVOverlayProps(props);
13908
+ const [overlayProps] = VOverlay.filterProps(props);
13741
13909
  return vue.createVNode(VOverlay, vue.mergeProps({
13742
13910
  "ref": overlay,
13743
13911
  "class": ['v-dialog', {
@@ -14141,6 +14309,7 @@
14141
14309
  "id": id.value,
14142
14310
  "active": isDirty.value || isFocused.value,
14143
14311
  "dirty": isDirty.value,
14312
+ "disabled": isDisabled.value,
14144
14313
  "focused": isFocused.value,
14145
14314
  "error": isValid.value === false
14146
14315
  }), {
@@ -14340,10 +14509,8 @@
14340
14509
 
14341
14510
  // Types
14342
14511
 
14343
- const breakpoints$1 = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14344
-
14345
14512
  const breakpointProps = (() => {
14346
- return breakpoints$1.reduce((props, val) => {
14513
+ return breakpoints.reduce((props, val) => {
14347
14514
  props[val] = {
14348
14515
  type: [Boolean, String, Number],
14349
14516
  default: false
@@ -14352,8 +14519,9 @@
14352
14519
  }, {});
14353
14520
  })();
14354
14521
  const offsetProps = (() => {
14355
- return breakpoints$1.reduce((props, val) => {
14356
- props['offset' + vue.capitalize(val)] = {
14522
+ return breakpoints.reduce((props, val) => {
14523
+ const offsetKey = 'offset' + vue.capitalize(val);
14524
+ props[offsetKey] = {
14357
14525
  type: [String, Number],
14358
14526
  default: null
14359
14527
  };
@@ -14361,8 +14529,9 @@
14361
14529
  }, {});
14362
14530
  })();
14363
14531
  const orderProps = (() => {
14364
- return breakpoints$1.reduce((props, val) => {
14365
- props['order' + vue.capitalize(val)] = {
14532
+ return breakpoints.reduce((props, val) => {
14533
+ const orderKey = 'order' + vue.capitalize(val);
14534
+ props[orderKey] = {
14366
14535
  type: [String, Number],
14367
14536
  default: null
14368
14537
  };
@@ -14460,13 +14629,12 @@
14460
14629
 
14461
14630
  // Types
14462
14631
 
14463
- const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
14464
-
14465
14632
  const ALIGNMENT = ['start', 'end', 'center'];
14466
14633
  const SPACE = ['space-between', 'space-around', 'space-evenly'];
14467
14634
  function makeRowProps(prefix, def) {
14468
14635
  return breakpoints.reduce((props, val) => {
14469
- props[prefix + vue.capitalize(val)] = def();
14636
+ const prefixKey = prefix + vue.capitalize(val);
14637
+ props[prefixKey] = def();
14470
14638
  return props;
14471
14639
  }, {});
14472
14640
  }
@@ -14796,7 +14964,10 @@
14796
14964
  }, {
14797
14965
  default: () => [slots.default?.()]
14798
14966
  })]
14799
- }), [[vue.resolveDirective("intersect"), onIntersect, props.options]]));
14967
+ }), [[vue.resolveDirective("intersect"), {
14968
+ handler: onIntersect,
14969
+ options: props.options
14970
+ }, null]]));
14800
14971
  return {};
14801
14972
  }
14802
14973
  });
@@ -15773,9 +15944,9 @@
15773
15944
  frame = requestAnimationFrame(() => {
15774
15945
  const el = (root.value?.$el).querySelector('.v-img__img');
15775
15946
  if (!el) return;
15776
- const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight;
15777
- const scrollPos = scrollParent.scrollTop ?? window.scrollY;
15778
- const top = intersectionRef.value.offsetTop;
15947
+ const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;
15948
+ const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;
15949
+ const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;
15779
15950
  const height = contentRect.value.height;
15780
15951
  const center = top + (height - scrollHeight) / 2;
15781
15952
  const translate = floor((scrollPos - center) * scale.value);
@@ -15857,10 +16028,7 @@
15857
16028
  useRender(() => {
15858
16029
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
15859
16030
  const [inputProps, _1] = filterInputProps(props);
15860
- const [controlProps, _2] = filterControlProps({
15861
- ...props,
15862
- multiple: false
15863
- });
16031
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
15864
16032
  const label = slots.label ? slots.label({
15865
16033
  label: props.label,
15866
16034
  props: {
@@ -15895,7 +16063,8 @@
15895
16063
  "type": props.type,
15896
16064
  "disabled": isDisabled.value,
15897
16065
  "readonly": isReadonly.value,
15898
- "aria-labelledby": label ? id.value : undefined
16066
+ "aria-labelledby": label ? id.value : undefined,
16067
+ "multiple": false
15899
16068
  }, controlAttrs, {
15900
16069
  "modelValue": model.value,
15901
16070
  "onUpdate:modelValue": $event => model.value = $event
@@ -16160,9 +16329,6 @@
16160
16329
  const range = vue.computed(() => createRange(Number(props.length), 1));
16161
16330
  const increments = vue.computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
16162
16331
  const hoverIndex = vue.ref(-1);
16163
- const focusIndex = vue.ref(-1);
16164
- const firstRef = vue.ref();
16165
- let isClicking = false;
16166
16332
  const itemState = vue.computed(() => increments.value.map(value => {
16167
16333
  const isHovering = props.hover && hoverIndex.value > -1;
16168
16334
  const isFilled = normalizedValue.value >= value;
@@ -16185,16 +16351,6 @@
16185
16351
  function onMouseleave() {
16186
16352
  hoverIndex.value = -1;
16187
16353
  }
16188
- function onFocus() {
16189
- if (value === 0 && normalizedValue.value === 0) {
16190
- firstRef.value?.focus();
16191
- } else {
16192
- focusIndex.value = value;
16193
- }
16194
- }
16195
- function onBlur() {
16196
- if (!isClicking) focusIndex.value = -1;
16197
- }
16198
16354
  function onClick() {
16199
16355
  if (props.disabled || props.readonly) return;
16200
16356
  rating.value = normalizedValue.value === value && props.clearable ? 0 : value;
@@ -16202,17 +16358,9 @@
16202
16358
  return {
16203
16359
  onMouseenter: props.hover ? onMouseenter : undefined,
16204
16360
  onMouseleave: props.hover ? onMouseleave : undefined,
16205
- onFocus,
16206
- onBlur,
16207
16361
  onClick
16208
16362
  };
16209
16363
  }));
16210
- function onMousedown() {
16211
- isClicking = true;
16212
- }
16213
- function onMouseup() {
16214
- isClicking = false;
16215
- }
16216
16364
  const name = vue.computed(() => props.name ?? `v-rating-${getUid()}`);
16217
16365
  function VRatingItem(_ref2) {
16218
16366
  let {
@@ -16223,8 +16371,6 @@
16223
16371
  const {
16224
16372
  onMouseenter,
16225
16373
  onMouseleave,
16226
- onFocus,
16227
- onBlur,
16228
16374
  onClick
16229
16375
  } = eventState.value[index + 1];
16230
16376
  const id = `${name.value}-${String(value).replace('.', '-')}`;
@@ -16235,7 +16381,6 @@
16235
16381
  icon: itemState.value[index]?.icon,
16236
16382
  ripple: props.ripple,
16237
16383
  size: props.size,
16238
- tag: 'span',
16239
16384
  variant: 'plain'
16240
16385
  };
16241
16386
  return vue.createVNode(vue.Fragment, null, [vue.createVNode("label", {
@@ -16244,17 +16389,17 @@
16244
16389
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
16245
16390
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
16246
16391
  },
16247
- "onMousedown": onMousedown,
16248
- "onMouseup": onMouseup,
16249
16392
  "onMouseenter": onMouseenter,
16250
- "onMouseleave": onMouseleave
16393
+ "onMouseleave": onMouseleave,
16394
+ "onClick": onClick
16251
16395
  }, [vue.createVNode("span", {
16252
16396
  "class": "v-rating__hidden"
16253
16397
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
16254
16398
  ...itemState.value[index],
16255
16399
  props: btnProps,
16256
16400
  value,
16257
- index
16401
+ index,
16402
+ rating: normalizedValue.value
16258
16403
  }) : vue.createVNode(VBtn, btnProps, null)]), vue.createVNode("input", {
16259
16404
  "class": "v-rating__hidden",
16260
16405
  "name": name.value,
@@ -16262,10 +16407,7 @@
16262
16407
  "type": "radio",
16263
16408
  "value": value,
16264
16409
  "checked": normalizedValue.value === value,
16265
- "onClick": onClick,
16266
- "onFocus": onFocus,
16267
- "onBlur": onBlur,
16268
- "ref": index === 0 ? firstRef : undefined,
16410
+ "tabindex": -1,
16269
16411
  "readonly": props.readonly,
16270
16412
  "disabled": props.disabled
16271
16413
  }, null)]);
@@ -16294,9 +16436,7 @@
16294
16436
  index: i,
16295
16437
  label: props.itemLabels?.[i]
16296
16438
  }) : undefined, vue.createVNode("div", {
16297
- "class": ['v-rating__item', {
16298
- 'v-rating__item--focused': Math.ceil(focusIndex.value) === value
16299
- }]
16439
+ "class": "v-rating__item"
16300
16440
  }, [props.halfIncrements ? vue.createVNode(vue.Fragment, null, [vue.createVNode(VRatingItem, {
16301
16441
  "value": value - 0.5,
16302
16442
  "index": i * 2
@@ -16765,7 +16905,7 @@
16765
16905
  window.clearTimeout(activeTimeout);
16766
16906
  }
16767
16907
  useRender(() => {
16768
- const [overlayProps] = filterVOverlayProps(props);
16908
+ const [overlayProps] = VOverlay.filterProps(props);
16769
16909
  return vue.createVNode(VOverlay, vue.mergeProps({
16770
16910
  "ref": overlay,
16771
16911
  "class": ['v-snackbar', {
@@ -16777,19 +16917,18 @@
16777
16917
  "modelValue": isActive.value,
16778
16918
  "onUpdate:modelValue": $event => isActive.value = $event,
16779
16919
  "contentProps": vue.mergeProps({
16780
- style: locationStyles.value
16920
+ class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
16921
+ style: [locationStyles.value, colorStyles.value],
16922
+ onPointerenter,
16923
+ onPointerleave: startTimeout
16781
16924
  }, overlayProps.contentProps),
16782
16925
  "persistent": true,
16783
16926
  "noClickAnimation": true,
16784
16927
  "scrim": false,
16785
- "scrollStrategy": "none"
16928
+ "scrollStrategy": "none",
16929
+ "_disableGlobalStack": true
16786
16930
  }, scopeId), {
16787
- default: () => [vue.createVNode("div", {
16788
- "class": ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
16789
- "style": [colorStyles.value],
16790
- "onPointerenter": onPointerenter,
16791
- "onPointerleave": startTimeout
16792
- }, [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
16931
+ default: () => [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
16793
16932
  "class": "v-snackbar__content",
16794
16933
  "role": "status",
16795
16934
  "aria-live": "polite"
@@ -16804,7 +16943,7 @@
16804
16943
  default: () => [vue.createVNode("div", {
16805
16944
  "class": "v-snackbar__actions"
16806
16945
  }, [slots.actions()])]
16807
- })])],
16946
+ })],
16808
16947
  activator: slots.activator
16809
16948
  });
16810
16949
  });
@@ -16861,7 +17000,7 @@
16861
17000
  useRender(() => {
16862
17001
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
16863
17002
  const [inputProps, _1] = filterInputProps(props);
16864
- const [controlProps, _2] = filterControlProps(props);
17003
+ const [controlProps, _2] = VSelectionControl.filterProps(props);
16865
17004
  const control = vue.ref();
16866
17005
  function onClick() {
16867
17006
  control.value?.input?.click();
@@ -16963,6 +17102,9 @@
16963
17102
  const {
16964
17103
  roundedClasses
16965
17104
  } = useRounded(props);
17105
+ const {
17106
+ ssrBootStyles
17107
+ } = useSsrBoot();
16966
17108
  const height = vue.computed(() => props.height ?? (props.window ? 32 : 24));
16967
17109
  const {
16968
17110
  layoutItemStyles
@@ -16979,7 +17121,7 @@
16979
17121
  "class": ['v-system-bar', {
16980
17122
  'v-system-bar--window': props.window
16981
17123
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
16982
- "style": [backgroundColorStyles.value, layoutItemStyles.value]
17124
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
16983
17125
  }, slots));
16984
17126
  return {};
16985
17127
  }
@@ -16991,28 +17133,17 @@
16991
17133
  name: 'VTab',
16992
17134
  props: {
16993
17135
  fixed: Boolean,
16994
- icon: [Boolean, String, Function, Object],
16995
- prependIcon: IconValue,
16996
- appendIcon: IconValue,
16997
- stacked: Boolean,
16998
17136
  title: String,
16999
- ripple: {
17000
- type: Boolean,
17001
- default: true
17002
- },
17003
- color: String,
17004
17137
  sliderColor: String,
17005
17138
  hideSlider: Boolean,
17006
17139
  direction: {
17007
17140
  type: String,
17008
17141
  default: 'horizontal'
17009
17142
  },
17010
- ...makeTagProps(),
17011
- ...makeRouterProps(),
17012
- ...makeGroupItemProps({
17013
- selectedClass: 'v-tab--selected'
17014
- }),
17015
- ...makeThemeProps()
17143
+ ...omit(makeVBtnProps({
17144
+ selectedClass: 'v-tab--selected',
17145
+ variant: 'text'
17146
+ }), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
17016
17147
  },
17017
17148
  setup(props, _ref) {
17018
17149
  let {
@@ -17062,7 +17193,7 @@
17062
17193
  }
17063
17194
  }
17064
17195
  useRender(() => {
17065
- const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled', 'selectedClass', 'value', 'color']);
17196
+ const [btnProps] = VBtn.filterProps(props);
17066
17197
  return vue.createVNode(VBtn, vue.mergeProps({
17067
17198
  "_as": "VTab",
17068
17199
  "symbol": VTabsSymbol,
@@ -17074,7 +17205,6 @@
17074
17205
  "active": false,
17075
17206
  "block": props.fixed,
17076
17207
  "maxWidth": props.fixed ? 300 : undefined,
17077
- "variant": "text",
17078
17208
  "rounded": 0
17079
17209
  }, btnProps, attrs, {
17080
17210
  "onGroup:selected": updateSlider
@@ -17319,7 +17449,13 @@
17319
17449
  });
17320
17450
  }
17321
17451
  function onInput(e) {
17322
- model.value = e.target.value;
17452
+ const el = e.target;
17453
+ const caretPosition = [el.selectionStart, el.selectionEnd];
17454
+ model.value = el.value;
17455
+ vue.nextTick(() => {
17456
+ el.selectionStart = caretPosition[0];
17457
+ el.selectionEnd = caretPosition[1];
17458
+ });
17323
17459
  }
17324
17460
  const sizerRef = vue.ref();
17325
17461
  function calculateInputHeight() {
@@ -17403,6 +17539,7 @@
17403
17539
  }, fieldProps, {
17404
17540
  "active": isActive.value || isDirty.value,
17405
17541
  "dirty": isDirty.value || props.dirty,
17542
+ "disabled": isDisabled.value,
17406
17543
  "focused": isFocused.value,
17407
17544
  "error": isValid.value === false
17408
17545
  }), {
@@ -17605,13 +17742,6 @@
17605
17742
  backgroundColorClasses: lineColorClasses,
17606
17743
  backgroundColorStyles: lineColorStyles
17607
17744
  } = useBackgroundColor(vue.toRef(props, 'lineColor'));
17608
- provideDefaults({
17609
- VIcon: {
17610
- color: vue.toRef(props, 'iconColor'),
17611
- icon: vue.toRef(props, 'icon'),
17612
- size: vue.toRef(props, 'size')
17613
- }
17614
- });
17615
17745
  useRender(() => vue.createVNode("div", {
17616
17746
  "class": ['v-timeline-divider', {
17617
17747
  'v-timeline-divider--fill-dot': props.fillDot
@@ -17626,7 +17756,22 @@
17626
17756
  }, [vue.createVNode("div", {
17627
17757
  "class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
17628
17758
  "style": backgroundColorStyles.value
17629
- }, [slots.default?.() ?? (props.icon ? vue.createVNode(VIcon, null, null) : undefined)])]), vue.createVNode("div", {
17759
+ }, [!slots.default ? vue.createVNode(VIcon, {
17760
+ "key": "icon",
17761
+ "color": props.iconColor,
17762
+ "icon": props.icon,
17763
+ "size": props.size
17764
+ }, null) : vue.createVNode(VDefaultsProvider, {
17765
+ "key": "icon-defaults",
17766
+ "disabled": !props.icon,
17767
+ "defaults": {
17768
+ VIcon: {
17769
+ color: props.iconColor,
17770
+ icon: props.icon,
17771
+ size: props.size
17772
+ }
17773
+ }
17774
+ }, slots.default)])]), vue.createVNode("div", {
17630
17775
  "class": ['v-timeline-divider__after', lineColorClasses.value],
17631
17776
  "style": lineColorStyles.value
17632
17777
  }, null)]));
@@ -17712,6 +17857,7 @@
17712
17857
  closeOnBack: false,
17713
17858
  location: 'end',
17714
17859
  locationStrategy: 'connected',
17860
+ eager: true,
17715
17861
  minWidth: 0,
17716
17862
  offset: 10,
17717
17863
  openOnClick: false,
@@ -17720,7 +17866,7 @@
17720
17866
  scrim: false,
17721
17867
  scrollStrategy: 'reposition',
17722
17868
  transition: false
17723
- }), ['absolute', 'persistent', 'eager'])
17869
+ }), ['absolute', 'persistent'])
17724
17870
  },
17725
17871
  emits: {
17726
17872
  'update:modelValue': value => true
@@ -17750,7 +17896,7 @@
17750
17896
  'aria-describedby': id.value
17751
17897
  }, props.activatorProps));
17752
17898
  useRender(() => {
17753
- const [overlayProps] = filterVOverlayProps(props);
17899
+ const [overlayProps] = VOverlay.filterProps(props);
17754
17900
  return vue.createVNode(VOverlay, vue.mergeProps({
17755
17901
  "ref": overlay,
17756
17902
  "class": ['v-tooltip'],
@@ -17764,7 +17910,6 @@
17764
17910
  "origin": origin.value,
17765
17911
  "persistent": true,
17766
17912
  "role": "tooltip",
17767
- "eager": true,
17768
17913
  "activatorProps": activatorProps.value,
17769
17914
  "_disableGlobalStack": true
17770
17915
  }, scopeId), {
@@ -18143,7 +18288,7 @@
18143
18288
  locale
18144
18289
  };
18145
18290
  }
18146
- const version$1 = "3.2.0-dev-20230214.0";
18291
+ const version$1 = "3.2.0-dev-20230322.0";
18147
18292
  createVuetify$1.version = version$1;
18148
18293
 
18149
18294
  // Vue's inject() can only be used in setup
@@ -18163,7 +18308,7 @@
18163
18308
  ...options
18164
18309
  });
18165
18310
  };
18166
- const version = "3.2.0-dev-20230214.0";
18311
+ const version = "3.2.0-dev-20230322.0";
18167
18312
  createVuetify.version = version;
18168
18313
 
18169
18314
  exports.components = components;