vuetify 3.2.4 → 3.3.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 (335) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +2503 -2151
  3. package/dist/json/importMap-labs.json +12 -4
  4. package/dist/json/importMap.json +28 -28
  5. package/dist/json/tags.json +107 -9
  6. package/dist/json/web-types.json +10785 -7110
  7. package/dist/vuetify-labs.css +263 -153
  8. package/dist/vuetify-labs.d.ts +35870 -16257
  9. package/dist/vuetify-labs.esm.js +1466 -934
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1465 -933
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +246 -168
  14. package/dist/vuetify.d.ts +27883 -14061
  15. package/dist/vuetify.esm.js +477 -300
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +476 -299
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +811 -806
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/{index.d.ts → index.d.mts} +5 -1
  23. package/lib/blueprints/{md1.d.ts → md1.d.mts} +5 -1
  24. package/lib/blueprints/{md2.d.ts → md2.d.mts} +5 -1
  25. package/lib/blueprints/{md3.d.ts → md3.d.mts} +5 -1
  26. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  27. package/lib/components/VAlert/{index.d.ts → index.d.mts} +284 -69
  28. package/lib/components/VApp/{index.d.ts → index.d.mts} +80 -19
  29. package/lib/components/VAppBar/{index.d.ts → index.d.mts} +391 -119
  30. package/lib/components/VAutocomplete/VAutocomplete.css +15 -9
  31. package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -34
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  33. package/lib/components/VAutocomplete/VAutocomplete.sass +15 -11
  34. package/lib/components/VAutocomplete/index.d.mts +2048 -0
  35. package/lib/components/VAvatar/{index.d.ts → index.d.mts} +85 -30
  36. package/lib/components/VBadge/_variables.scss +1 -1
  37. package/lib/components/VBadge/{index.d.ts → index.d.mts} +105 -42
  38. package/lib/components/VBanner/{index.d.ts → index.d.mts} +282 -63
  39. package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +93 -45
  40. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
  41. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  42. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +1 -1
  43. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  44. package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +348 -212
  45. package/lib/components/VBtn/{index.d.ts → index.d.mts} +139 -53
  46. package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +84 -27
  47. package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +88 -35
  48. package/lib/components/VCalendar/util/props.mjs.map +1 -1
  49. package/lib/components/VCard/VCard.mjs.map +1 -1
  50. package/lib/components/VCard/{index.d.ts → index.d.mts} +957 -419
  51. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  52. package/lib/components/VCarousel/{index.d.ts → index.d.mts} +616 -111
  53. package/lib/components/VCheckbox/VCheckboxBtn.mjs +3 -3
  54. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  55. package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +408 -141
  56. package/lib/components/VChip/VChip.css +4 -2
  57. package/lib/components/VChip/VChip.mjs.map +1 -1
  58. package/lib/components/VChip/VChip.sass +3 -2
  59. package/lib/components/VChip/{index.d.ts → index.d.mts} +376 -85
  60. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  61. package/lib/components/VChipGroup/index.d.mts +470 -0
  62. package/lib/components/VCode/{index.d.ts → index.d.mts} +78 -17
  63. package/lib/components/VColorPicker/VColorPicker.mjs +9 -4
  64. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  65. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  66. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +5 -4
  67. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  68. package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +241 -109
  69. package/lib/components/VColorPicker/util/index.mjs +2 -22
  70. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  71. package/lib/components/VCombobox/VCombobox.css +15 -9
  72. package/lib/components/VCombobox/VCombobox.mjs +82 -37
  73. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  74. package/lib/components/VCombobox/VCombobox.sass +15 -11
  75. package/lib/components/VCombobox/index.d.mts +2060 -0
  76. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  77. package/lib/components/VCounter/{index.d.ts → index.d.mts} +105 -45
  78. package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +82 -20
  79. package/lib/components/VDialog/{index.d.ts → index.d.mts} +571 -305
  80. package/lib/components/VDivider/{index.d.ts → index.d.mts} +81 -21
  81. package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +374 -110
  82. package/lib/components/VField/VField.css +49 -16
  83. package/lib/components/VField/VField.mjs +12 -2
  84. package/lib/components/VField/VField.mjs.map +1 -1
  85. package/lib/components/VField/VField.sass +40 -11
  86. package/lib/components/VField/_variables.scss +8 -2
  87. package/lib/components/VField/index.d.mts +682 -0
  88. package/lib/components/VFileInput/VFileInput.css +3 -0
  89. package/lib/components/VFileInput/VFileInput.mjs +7 -1
  90. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  91. package/lib/components/VFileInput/VFileInput.sass +6 -1
  92. package/lib/components/VFileInput/{index.d.ts → index.d.mts} +1033 -399
  93. package/lib/components/VFooter/{index.d.ts → index.d.mts} +85 -29
  94. package/lib/components/VForm/VForm.mjs.map +1 -1
  95. package/lib/components/VForm/index.d.mts +993 -0
  96. package/lib/components/VGrid/{index.d.ts → index.d.mts} +334 -100
  97. package/lib/components/VHover/VHover.mjs.map +1 -1
  98. package/lib/components/VHover/{index.d.ts → index.d.mts} +120 -37
  99. package/lib/components/VIcon/{index.d.ts → index.d.mts} +322 -81
  100. package/lib/components/VImg/VImg.css +2 -4
  101. package/lib/components/VImg/VImg.mjs +25 -24
  102. package/lib/components/VImg/VImg.mjs.map +1 -1
  103. package/lib/components/VImg/VImg.sass +4 -3
  104. package/lib/components/VImg/{index.d.ts → index.d.mts} +177 -40
  105. package/lib/components/VInput/VInput.css +10 -4
  106. package/lib/components/VInput/VInput.mjs +9 -3
  107. package/lib/components/VInput/VInput.mjs.map +1 -1
  108. package/lib/components/VInput/VInput.sass +7 -2
  109. package/lib/components/VInput/_variables.scss +1 -0
  110. package/lib/components/VInput/{index.d.ts → index.d.mts} +237 -93
  111. package/lib/components/VItemGroup/VItem.mjs +1 -1
  112. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  113. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  114. package/lib/components/VItemGroup/index.d.mts +781 -0
  115. package/lib/components/VKbd/{index.d.ts → index.d.mts} +78 -17
  116. package/lib/components/VLabel/{index.d.ts → index.d.mts} +79 -18
  117. package/lib/components/VLayout/{index.d.ts → index.d.mts} +161 -42
  118. package/lib/components/VLazy/{index.d.ts → index.d.mts} +82 -27
  119. package/lib/components/VList/VList.mjs +6 -1
  120. package/lib/components/VList/VList.mjs.map +1 -1
  121. package/lib/components/VList/VListChildren.mjs +4 -8
  122. package/lib/components/VList/VListChildren.mjs.map +1 -1
  123. package/lib/components/VList/VListGroup.mjs +3 -0
  124. package/lib/components/VList/VListGroup.mjs.map +1 -1
  125. package/lib/components/VList/VListItem.mjs +11 -6
  126. package/lib/components/VList/VListItem.mjs.map +1 -1
  127. package/lib/components/VList/{index.d.ts → index.d.mts} +1245 -619
  128. package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +80 -19
  129. package/lib/components/VMain/{index.d.ts → index.d.mts} +79 -19
  130. package/lib/components/VMenu/{index.d.ts → index.d.mts} +567 -299
  131. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  132. package/lib/components/VMessages/{index.d.ts → index.d.mts} +87 -34
  133. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +2 -0
  134. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -0
  136. package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +139 -57
  137. package/lib/components/VOverlay/{index.d.ts → index.d.mts} +159 -75
  138. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  139. package/lib/components/VPagination/{index.d.ts → index.d.mts} +229 -125
  140. package/lib/components/VParallax/{index.d.ts → index.d.mts} +118 -18
  141. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  142. package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +148 -45
  143. package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +119 -52
  144. package/lib/components/VRadio/{index.d.ts → index.d.mts} +139 -40
  145. package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +265 -93
  146. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -4
  147. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  148. package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +313 -132
  149. package/lib/components/VRating/{index.d.ts → index.d.mts} +108 -49
  150. package/lib/components/VResponsive/VResponsive.css +13 -5
  151. package/lib/components/VResponsive/VResponsive.mjs +4 -1
  152. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  153. package/lib/components/VResponsive/VResponsive.sass +12 -4
  154. package/lib/components/VResponsive/{index.d.ts → index.d.mts} +99 -16
  155. package/lib/components/VSelect/VSelect.css +15 -9
  156. package/lib/components/VSelect/VSelect.mjs +23 -18
  157. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  158. package/lib/components/VSelect/VSelect.sass +14 -11
  159. package/lib/components/VSelect/index.d.mts +1986 -0
  160. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  161. package/lib/components/VSelectionControl/index.d.mts +403 -0
  162. package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +90 -38
  163. package/lib/components/VSheet/{index.d.ts → index.d.mts} +81 -21
  164. package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +236 -61
  165. package/lib/components/VSlider/VSlider.mjs +2 -2
  166. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  167. package/lib/components/VSlider/VSliderThumb.mjs +1 -1
  168. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  169. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  170. package/lib/components/VSlider/{index.d.ts → index.d.mts} +308 -126
  171. package/lib/components/VSlider/slider.mjs +8 -2
  172. package/lib/components/VSlider/slider.mjs.map +1 -1
  173. package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +566 -297
  174. package/lib/components/VSwitch/VSwitch.css +3 -3
  175. package/lib/components/VSwitch/VSwitch.sass +4 -3
  176. package/lib/components/VSwitch/{index.d.ts → index.d.mts} +284 -101
  177. package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +84 -27
  178. package/lib/components/VTable/{index.d.ts → index.d.mts} +122 -26
  179. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  180. package/lib/components/VTabs/{index.d.ts → index.d.mts} +203 -113
  181. package/lib/components/VTextField/VTextField.css +9 -1
  182. package/lib/components/VTextField/VTextField.mjs +4 -2
  183. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  184. package/lib/components/VTextField/VTextField.sass +8 -1
  185. package/lib/components/VTextField/index.d.mts +2735 -0
  186. package/lib/components/VTextarea/VTextarea.mjs +13 -4
  187. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  188. package/lib/components/VTextarea/{index.d.ts → index.d.mts} +933 -393
  189. package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +80 -20
  190. package/lib/components/VTimeline/{index.d.ts → index.d.mts} +201 -62
  191. package/lib/components/VToolbar/{index.d.ts → index.d.mts} +325 -73
  192. package/lib/components/VTooltip/{index.d.ts → index.d.mts} +568 -297
  193. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  194. package/lib/components/VValidation/index.d.mts +634 -0
  195. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  196. package/lib/components/VVirtualScroll/index.d.mts +229 -0
  197. package/lib/components/VWindow/{index.d.ts → index.d.mts} +271 -68
  198. package/lib/components/{index.d.ts → index.d.mts} +27847 -14031
  199. package/lib/components/index.mjs +2 -3
  200. package/lib/components/index.mjs.map +1 -1
  201. package/lib/components/transitions/{index.d.ts → index.d.mts} +1330 -355
  202. package/lib/composables/display.mjs +6 -6
  203. package/lib/composables/display.mjs.map +1 -1
  204. package/lib/composables/filter.mjs +5 -4
  205. package/lib/composables/filter.mjs.map +1 -1
  206. package/lib/composables/form.mjs +2 -3
  207. package/lib/composables/form.mjs.map +1 -1
  208. package/lib/composables/forwardRefs.mjs.map +1 -1
  209. package/lib/composables/group.mjs +13 -13
  210. package/lib/composables/group.mjs.map +1 -1
  211. package/lib/composables/icons.mjs.map +1 -1
  212. package/lib/composables/{items.mjs → list-items.mjs} +9 -6
  213. package/lib/composables/list-items.mjs.map +1 -0
  214. package/lib/composables/nested/nested.mjs.map +1 -1
  215. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  216. package/lib/composables/scroll.mjs +2 -2
  217. package/lib/composables/scroll.mjs.map +1 -1
  218. package/lib/composables/validation.mjs +44 -16
  219. package/lib/composables/validation.mjs.map +1 -1
  220. package/lib/entry-bundler.mjs +1 -1
  221. package/lib/framework.mjs +1 -1
  222. package/lib/framework.mjs.map +1 -1
  223. package/lib/{index.d.ts → index.d.mts} +16 -10
  224. package/lib/labs/VBottomSheet/VBottomSheet.css +33 -0
  225. package/lib/labs/VBottomSheet/VBottomSheet.mjs +40 -0
  226. package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -0
  227. package/lib/labs/VBottomSheet/VBottomSheet.sass +37 -0
  228. package/lib/labs/VBottomSheet/_variables.scss +5 -0
  229. package/lib/labs/VBottomSheet/index.d.mts +871 -0
  230. package/lib/labs/VBottomSheet/index.mjs +2 -0
  231. package/lib/labs/VBottomSheet/index.mjs.map +1 -0
  232. package/lib/labs/VDataIterator/VDataIterator.mjs +160 -0
  233. package/lib/labs/VDataIterator/VDataIterator.mjs.map +1 -0
  234. package/lib/labs/VDataIterator/composables/items.mjs +37 -0
  235. package/lib/labs/VDataIterator/composables/items.mjs.map +1 -0
  236. package/lib/labs/VDataIterator/index.d.mts +704 -0
  237. package/lib/labs/VDataIterator/index.mjs +2 -0
  238. package/lib/labs/VDataIterator/index.mjs.map +1 -0
  239. package/lib/labs/VDataTable/VDataTable.mjs +58 -20
  240. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  241. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  242. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  243. package/lib/labs/VDataTable/VDataTableHeaders.mjs +17 -10
  244. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  245. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  246. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  247. package/lib/labs/VDataTable/VDataTableServer.mjs +50 -14
  248. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  249. package/lib/labs/VDataTable/VDataTableVirtual.mjs +50 -13
  250. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  251. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  252. package/lib/labs/VDataTable/composables/group.mjs +8 -6
  253. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  254. package/lib/labs/VDataTable/composables/headers.mjs +2 -3
  255. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  256. package/lib/labs/VDataTable/composables/items.mjs +31 -32
  257. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  258. package/lib/labs/VDataTable/composables/paginate.mjs +14 -2
  259. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  260. package/lib/labs/VDataTable/composables/select.mjs +3 -3
  261. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  262. package/lib/labs/VDataTable/composables/sort.mjs +17 -17
  263. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  264. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
  265. package/lib/labs/VDataTable/index.d.mts +9681 -0
  266. package/lib/labs/VDataTable/index.mjs +1 -1
  267. package/lib/labs/VDataTable/index.mjs.map +1 -1
  268. package/lib/labs/VDataTable/types.mjs.map +1 -1
  269. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  270. package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +161 -54
  271. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  272. package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +92 -31
  273. package/lib/labs/components.d.mts +11806 -0
  274. package/lib/labs/components.mjs +2 -0
  275. package/lib/labs/components.mjs.map +1 -1
  276. package/lib/labs/date/date.mjs.map +1 -1
  277. package/lib/labs/date/index.d.mts +70 -0
  278. package/lib/labs/date/index.mjs +1 -1
  279. package/lib/labs/date/index.mjs.map +1 -1
  280. package/lib/styles/settings/_variables.scss +3 -3
  281. package/lib/util/colorUtils.mjs +68 -3
  282. package/lib/util/colorUtils.mjs.map +1 -1
  283. package/lib/util/console.mjs +12 -81
  284. package/lib/util/console.mjs.map +1 -1
  285. package/lib/util/defineComponent.mjs.map +1 -1
  286. package/lib/util/helpers.mjs +4 -18
  287. package/lib/util/helpers.mjs.map +1 -1
  288. package/lib/util/propsFactory.mjs +2 -0
  289. package/lib/util/propsFactory.mjs.map +1 -1
  290. package/package.json +13 -9
  291. package/lib/components/VAutocomplete/index.d.ts +0 -2050
  292. package/lib/components/VBottomSheet/VBottomSheet.mjs +0 -29
  293. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +0 -1
  294. package/lib/components/VBottomSheet/VBottomSheet.sass +0 -23
  295. package/lib/components/VBottomSheet/_variables.scss +0 -3
  296. package/lib/components/VBottomSheet/index.mjs +0 -4
  297. package/lib/components/VBottomSheet/index.mjs.map +0 -1
  298. package/lib/components/VChipGroup/index.d.ts +0 -280
  299. package/lib/components/VCombobox/index.d.ts +0 -2086
  300. package/lib/components/VData/VData.mjs +0 -374
  301. package/lib/components/VData/VData.mjs.map +0 -1
  302. package/lib/components/VData/index.mjs +0 -4
  303. package/lib/components/VData/index.mjs.map +0 -1
  304. package/lib/components/VDataIterator/VDataFooter.mjs +0 -194
  305. package/lib/components/VDataIterator/VDataFooter.mjs.map +0 -1
  306. package/lib/components/VDataIterator/VDataFooter.sass +0 -71
  307. package/lib/components/VDataIterator/VDataIterator.mjs +0 -316
  308. package/lib/components/VDataIterator/VDataIterator.mjs.map +0 -1
  309. package/lib/components/VDataIterator/_variables.scss +0 -13
  310. package/lib/components/VDataIterator/index.mjs +0 -10
  311. package/lib/components/VDataIterator/index.mjs.map +0 -1
  312. package/lib/components/VField/index.d.ts +0 -563
  313. package/lib/components/VForm/index.d.ts +0 -284
  314. package/lib/components/VItemGroup/index.d.ts +0 -396
  315. package/lib/components/VSelect/index.d.ts +0 -1981
  316. package/lib/components/VSelectionControl/index.d.ts +0 -387
  317. package/lib/components/VTextField/index.d.ts +0 -2061
  318. package/lib/components/VValidation/index.d.ts +0 -243
  319. package/lib/components/VVirtualScroll/index.d.ts +0 -197
  320. package/lib/composables/items.mjs.map +0 -1
  321. package/lib/labs/VDataTable/index.d.ts +0 -5415
  322. package/lib/labs/components.d.ts +0 -5945
  323. package/lib/labs/date/index.d.ts +0 -38
  324. /package/lib/components/VNoSsr/{index.d.ts → index.d.mts} +0 -0
  325. /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
  326. /package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +0 -0
  327. /package/lib/iconsets/{fa.d.ts → fa.d.mts} +0 -0
  328. /package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +0 -0
  329. /package/lib/iconsets/{md.d.ts → md.d.mts} +0 -0
  330. /package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +0 -0
  331. /package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +0 -0
  332. /package/lib/labs/date/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  333. /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
  334. /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  335. /package/lib/locale/{index.d.ts → index.d.mts} +0 -0
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.2.4
2
+ * Vuetify v3.3.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, warn, onScopeDispose, effectScope, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,6 +167,9 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
+ function has(obj, key) {
171
+ return key.every(k => obj.hasOwnProperty(k));
172
+ }
170
173
  function pick(obj, paths, exclude) {
171
174
  const found = Object.create(null);
172
175
  const rest = Object.create(null);
@@ -382,6 +385,7 @@ function focusChild(el, location) {
382
385
  if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
383
386
  }
384
387
  }
388
+ function noop() {}
385
389
 
386
390
  const block = ['top', 'bottom'];
387
391
  const inline = ['start', 'end', 'left', 'right'];
@@ -534,79 +538,16 @@ function animate(el, keyframes, options) {
534
538
  }
535
539
 
536
540
  /* eslint-disable no-console */
537
- // import Vuetify from '../framework'
538
-
539
- function createMessage(message, vm, parent) {
540
- // if (Vuetify.config.silent) return
541
541
 
542
- if (parent) {
543
- vm = {
544
- __isVue: true,
545
- $parent: parent,
546
- $options: vm
547
- };
548
- }
549
- if (vm) {
550
- // Only show each message once per instance
551
- vm.$_alreadyWarned = vm.$_alreadyWarned || [];
552
- if (vm.$_alreadyWarned.includes(message)) return;
553
- vm.$_alreadyWarned.push(message);
554
- }
555
- return `[Vuetify] ${message}` + (vm ? generateComponentTrace(vm) : '');
542
+ function consoleWarn(message) {
543
+ warn(`Vuetify: ${message}`);
556
544
  }
557
- function consoleWarn(message, vm, parent) {
558
- const newMessage = createMessage(message, vm, parent);
559
- newMessage != null && console.warn(newMessage);
545
+ function consoleError(message) {
546
+ warn(`Vuetify error: ${message}`);
560
547
  }
561
- function consoleError(message, vm, parent) {
562
- const newMessage = createMessage(message, vm, parent);
563
- newMessage != null && console.error(newMessage);
564
- }
565
-
566
- /**
567
- * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js
568
- */
569
-
570
- const classifyRE = /(?:^|[-_])(\w)/g;
571
- const classify = str => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');
572
- function formatComponentName(vm, includeFile) {
573
- if (vm.$root === vm) {
574
- return '<Root>';
575
- }
576
- const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.__isVue ? vm.$options || vm.constructor.options : vm || {};
577
- let name = options.name || options._componentTag;
578
- const file = options.__file;
579
- if (!name && file) {
580
- const match = file.match(/([^/\\]+)\.vue$/);
581
- name = match?.[1];
582
- }
583
- return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');
584
- }
585
- function generateComponentTrace(vm) {
586
- if (vm.__isVue && vm.$parent) {
587
- const tree = [];
588
- let currentRecursiveSequence = 0;
589
- while (vm) {
590
- if (tree.length > 0) {
591
- const last = tree[tree.length - 1];
592
- if (last.constructor === vm.constructor) {
593
- currentRecursiveSequence++;
594
- vm = vm.$parent;
595
- continue;
596
- } else if (currentRecursiveSequence > 0) {
597
- tree[tree.length - 1] = [last, currentRecursiveSequence];
598
- currentRecursiveSequence = 0;
599
- }
600
- }
601
- tree.push(vm);
602
- vm = vm.$parent;
603
- }
604
- return '\n\nfound in\n\n' + tree.map((vm, i) => `${i === 0 ? '---> ' : ' '.repeat(5 + i * 2)}${Array.isArray(vm)
605
- // eslint-disable-next-line sonarjs/no-nested-template-literals
606
- ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)` : formatComponentName(vm)}`).join('\n');
607
- } else {
608
- return `\n\n(found in ${formatComponentName(vm)})`;
609
- }
548
+ function deprecate(original, replacement) {
549
+ replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
550
+ warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
610
551
  }
611
552
 
612
553
  // For converting XYZ to sRGB
@@ -680,7 +621,46 @@ function toXYZ(lab) {
680
621
  function isCssColor(color) {
681
622
  return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
682
623
  }
683
- function parseColor$1(color) {
624
+ const cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
625
+ const mappers = {
626
+ rgb: (r, g, b, a) => ({
627
+ r,
628
+ g,
629
+ b,
630
+ a
631
+ }),
632
+ rgba: (r, g, b, a) => ({
633
+ r,
634
+ g,
635
+ b,
636
+ a
637
+ }),
638
+ hsl: (h, s, l, a) => HSLtoRGB({
639
+ h,
640
+ s,
641
+ l,
642
+ a
643
+ }),
644
+ hsla: (h, s, l, a) => HSLtoRGB({
645
+ h,
646
+ s,
647
+ l,
648
+ a
649
+ }),
650
+ hsv: (h, s, v, a) => HSVtoRGB({
651
+ h,
652
+ s,
653
+ v,
654
+ a
655
+ }),
656
+ hsva: (h, s, v, a) => HSVtoRGB({
657
+ h,
658
+ s,
659
+ v,
660
+ a
661
+ })
662
+ };
663
+ function parseColor(color) {
684
664
  if (typeof color === 'number') {
685
665
  if (isNaN(color) || color < 0 || color > 0xFFFFFF) {
686
666
  // int can't have opacity
@@ -691,6 +671,22 @@ function parseColor$1(color) {
691
671
  g: (color & 0xFF00) >> 8,
692
672
  b: color & 0xFF
693
673
  };
674
+ } else if (typeof color === 'string' && cssColorRe.test(color)) {
675
+ const {
676
+ groups
677
+ } = color.match(cssColorRe);
678
+ const {
679
+ fn,
680
+ values
681
+ } = groups;
682
+ const realValues = values.split(/,\s*/).map(v => {
683
+ if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {
684
+ return parseFloat(v) / 100;
685
+ } else {
686
+ return parseFloat(v);
687
+ }
688
+ });
689
+ return mappers[fn](...realValues);
694
690
  } else if (typeof color === 'string') {
695
691
  let hex = color.startsWith('#') ? color.slice(1) : color;
696
692
  if ([3, 4].includes(hex.length)) {
@@ -703,9 +699,16 @@ function parseColor$1(color) {
703
699
  consoleWarn(`'${color}' is not a valid hex(a) color`);
704
700
  }
705
701
  return HexToRGB(hex);
706
- } else {
707
- throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`);
702
+ } else if (typeof color === 'object') {
703
+ if (has(color, ['r', 'g', 'b'])) {
704
+ return color;
705
+ } else if (has(color, ['h', 's', 'l'])) {
706
+ return HSVtoRGB(HSLtoHSV(color));
707
+ } else if (has(color, ['h', 's', 'v'])) {
708
+ return HSVtoRGB(color);
709
+ }
708
710
  }
711
+ throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);
709
712
  }
710
713
 
711
714
  /** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
@@ -728,6 +731,9 @@ function HSVtoRGB(hsva) {
728
731
  a
729
732
  };
730
733
  }
734
+ function HSLtoRGB(hsla) {
735
+ return HSVtoRGB(HSLtoHSV(hsla));
736
+ }
731
737
 
732
738
  /** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
733
739
  function RGBtoHSV(rgba) {
@@ -866,7 +872,7 @@ function darken(value, amount) {
866
872
  * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
867
873
  */
868
874
  function getLuma(color) {
869
- const rgb = parseColor$1(color);
875
+ const rgb = parseColor(color);
870
876
  return toXYZ$1(rgb)[1];
871
877
  }
872
878
 
@@ -882,6 +888,8 @@ function getContrast(first, second) {
882
888
  return (light + 0.05) / (dark + 0.05);
883
889
  }
884
890
 
891
+ // eslint-disable-line vue/prefer-import-from-vue
892
+
885
893
  /**
886
894
  * Creates a factory function for props definitions.
887
895
  * This is used to define props in a composable then override
@@ -1162,6 +1170,7 @@ const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1162
1170
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1163
1171
 
1164
1172
  // Utilities
1173
+
1165
1174
  function getCurrentInstance(name, message) {
1166
1175
  const vm = getCurrentInstance$1();
1167
1176
  if (!vm) {
@@ -1726,7 +1735,7 @@ function createTheme(options) {
1726
1735
  for (const variation of ['lighten', 'darken']) {
1727
1736
  const fn = variation === 'lighten' ? lighten : darken;
1728
1737
  for (const amount of createRange(parsedOptions.variations[variation], 1)) {
1729
- theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor$1(color), amount));
1738
+ theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
1730
1739
  }
1731
1740
  }
1732
1741
  }
@@ -1734,9 +1743,9 @@ function createTheme(options) {
1734
1743
  for (const color of Object.keys(theme.colors)) {
1735
1744
  if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
1736
1745
  const onColor = `on-${color}`;
1737
- const colorVal = parseColor$1(theme.colors[color]);
1738
- const blackContrast = Math.abs(APCAcontrast(parseColor$1(0), colorVal));
1739
- const whiteContrast = Math.abs(APCAcontrast(parseColor$1(0xffffff), colorVal));
1746
+ const colorVal = parseColor(theme.colors[color]);
1747
+ const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal));
1748
+ const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal));
1740
1749
 
1741
1750
  // TODO: warn about poor color selections
1742
1751
  // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
@@ -1868,14 +1877,14 @@ function genCssVariables(theme) {
1868
1877
  const darkOverlay = theme.dark ? 1 : 2;
1869
1878
  const variables = [];
1870
1879
  for (const [key, value] of Object.entries(theme.colors)) {
1871
- const rgb = parseColor$1(value);
1880
+ const rgb = parseColor(value);
1872
1881
  variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
1873
1882
  if (!key.startsWith('on-')) {
1874
1883
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1875
1884
  }
1876
1885
  }
1877
1886
  for (const [key, value] of Object.entries(theme.variables)) {
1878
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1887
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
1879
1888
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1880
1889
  variables.push(`--v-${key}: ${rgb ?? value}`);
1881
1890
  }
@@ -2656,6 +2665,7 @@ function useAspectStyles(props) {
2656
2665
  const makeVResponsiveProps = propsFactory({
2657
2666
  aspectRatio: [String, Number],
2658
2667
  contentClass: String,
2668
+ inline: Boolean,
2659
2669
  ...makeComponentProps(),
2660
2670
  ...makeDimensionProps()
2661
2671
  }, 'v-responsive');
@@ -2673,7 +2683,9 @@ const VResponsive = genericComponent()({
2673
2683
  dimensionStyles
2674
2684
  } = useDimension(props);
2675
2685
  useRender(() => createVNode("div", {
2676
- "class": ['v-responsive', props.class],
2686
+ "class": ['v-responsive', {
2687
+ 'v-responsive--inline': props.inline
2688
+ }, props.class],
2677
2689
  "style": [dimensionStyles.value, props.style]
2678
2690
  }, [createVNode("div", {
2679
2691
  "class": "v-responsive__sizer",
@@ -2767,7 +2779,6 @@ const MaybeTransition = (props, _ref) => {
2767
2779
  // Types
2768
2780
 
2769
2781
  const makeVImgProps = propsFactory({
2770
- aspectRatio: [String, Number],
2771
2782
  alt: String,
2772
2783
  cover: Boolean,
2773
2784
  eager: Boolean,
@@ -2789,7 +2800,7 @@ const makeVImgProps = propsFactory({
2789
2800
  default: ''
2790
2801
  },
2791
2802
  srcset: String,
2792
- width: [String, Number],
2803
+ ...makeVResponsiveProps(),
2793
2804
  ...makeComponentProps(),
2794
2805
  ...makeTransitionProps()
2795
2806
  }, 'v-img');
@@ -2981,25 +2992,27 @@ const VImg = genericComponent()({
2981
2992
  }
2982
2993
  });
2983
2994
  }
2984
- useRender(() => withDirectives(createVNode(VResponsive, {
2985
- "class": ['v-img', {
2986
- 'v-img--booting': !isBooted.value
2987
- }, props.class],
2988
- "style": [{
2989
- width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2990
- }, props.style],
2991
- "aspectRatio": aspectRatio.value,
2992
- "aria-label": props.alt,
2993
- "role": props.alt ? 'img' : undefined
2994
- }, {
2995
- additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
2996
- default: slots.default
2997
- }), [[resolveDirective("intersect"), {
2998
- handler: init,
2999
- options: props.options
3000
- }, null, {
3001
- once: true
3002
- }]]));
2995
+ useRender(() => {
2996
+ const [responsiveProps] = VResponsive.filterProps(props);
2997
+ return withDirectives(createVNode(VResponsive, mergeProps({
2998
+ "class": ['v-img', {
2999
+ 'v-img--booting': !isBooted.value
3000
+ }, props.class],
3001
+ "style": props.style
3002
+ }, responsiveProps, {
3003
+ "aspectRatio": aspectRatio.value,
3004
+ "aria-label": props.alt,
3005
+ "role": props.alt ? 'img' : undefined
3006
+ }), {
3007
+ additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
3008
+ default: slots.default
3009
+ }), [[resolveDirective("intersect"), {
3010
+ handler: init,
3011
+ options: props.options
3012
+ }, null, {
3013
+ once: true
3014
+ }]]);
3015
+ });
3003
3016
  return {
3004
3017
  currentSrc,
3005
3018
  image,
@@ -3394,7 +3407,7 @@ function useScroll(props) {
3394
3407
  watch(() => props.scrollTarget, scrollTarget => {
3395
3408
  const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3396
3409
  if (!newTarget) {
3397
- consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance$1());
3410
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);
3398
3411
  return;
3399
3412
  }
3400
3413
  if (newTarget === target.value) return;
@@ -3876,26 +3889,26 @@ function getItemIndex(items, value) {
3876
3889
  }
3877
3890
  function getIds(items, modelValue) {
3878
3891
  const ids = [];
3879
- for (let i = 0; i < items.length; i++) {
3880
- const item = items[i];
3881
- if (item.value != null) {
3882
- if (modelValue.find(value => deepEqual(value, item.value)) != null) {
3883
- ids.push(item.id);
3884
- }
3885
- } else if (modelValue.includes(i)) {
3892
+ modelValue.forEach(value => {
3893
+ const item = items.find(item => deepEqual(value, item.value));
3894
+ const itemByIndex = items[value];
3895
+ if (item?.value != null) {
3886
3896
  ids.push(item.id);
3897
+ } else if (itemByIndex != null) {
3898
+ ids.push(itemByIndex.id);
3887
3899
  }
3888
- }
3900
+ });
3889
3901
  return ids;
3890
3902
  }
3891
3903
  function getValues(items, ids) {
3892
3904
  const values = [];
3893
- for (let i = 0; i < items.length; i++) {
3894
- const item = items[i];
3895
- if (ids.includes(item.id)) {
3896
- values.push(item.value != null ? item.value : i);
3905
+ ids.forEach(id => {
3906
+ const itemIndex = items.findIndex(item => item.id === id);
3907
+ if (~itemIndex) {
3908
+ const item = items[itemIndex];
3909
+ values.push(item.value != null ? item.value : itemIndex);
3897
3910
  }
3898
- }
3911
+ });
3899
3912
  return values;
3900
3913
  }
3901
3914
 
@@ -5565,10 +5578,17 @@ const makeVFieldProps = propsFactory({
5565
5578
  default: '$clear'
5566
5579
  },
5567
5580
  active: Boolean,
5581
+ centerAffix: {
5582
+ type: Boolean,
5583
+ default: undefined
5584
+ },
5568
5585
  color: String,
5569
5586
  baseColor: String,
5570
5587
  dirty: Boolean,
5571
- disabled: Boolean,
5588
+ disabled: {
5589
+ type: Boolean,
5590
+ default: null
5591
+ },
5572
5592
  error: Boolean,
5573
5593
  flat: Boolean,
5574
5594
  label: String,
@@ -5636,6 +5656,7 @@ const VField = genericComponent()({
5636
5656
  const labelRef = ref();
5637
5657
  const floatingLabelRef = ref();
5638
5658
  const controlRef = ref();
5659
+ const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
5639
5660
  const {
5640
5661
  backgroundColorClasses,
5641
5662
  backgroundColorStyles
@@ -5701,6 +5722,7 @@ const VField = genericComponent()({
5701
5722
  const hasClear = !!(props.clearable || slots.clear);
5702
5723
  const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
5703
5724
  const label = slots.label ? slots.label({
5725
+ ...slotProps.value,
5704
5726
  label: props.label,
5705
5727
  props: {
5706
5728
  for: id.value
@@ -5710,6 +5732,7 @@ const VField = genericComponent()({
5710
5732
  "class": ['v-field', {
5711
5733
  'v-field--active': isActive.value,
5712
5734
  'v-field--appended': hasAppend,
5735
+ 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,
5713
5736
  'v-field--disabled': props.disabled,
5714
5737
  'v-field--dirty': props.dirty,
5715
5738
  'v-field--error': props.error,
@@ -5795,7 +5818,7 @@ const VField = genericComponent()({
5795
5818
  default: () => [label]
5796
5819
  })]), createVNode("div", {
5797
5820
  "class": "v-field__outline__end"
5798
- }, null)]), ['plain', 'underlined'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5821
+ }, null)]), isPlainOrUnderlined.value && hasLabel.value && createVNode(VFieldLabel, {
5799
5822
  "ref": floatingLabelRef,
5800
5823
  "floating": true,
5801
5824
  "for": id.value
@@ -5913,12 +5936,9 @@ function createForm(props) {
5913
5936
  }
5914
5937
  function reset() {
5915
5938
  items.value.forEach(item => item.reset());
5916
- model.value = null;
5917
5939
  }
5918
5940
  function resetValidation() {
5919
5941
  items.value.forEach(item => item.resetValidation());
5920
- errors.value = [];
5921
- model.value = null;
5922
5942
  }
5923
5943
  watch(items, () => {
5924
5944
  let valid = 0;
@@ -5972,6 +5992,7 @@ function createForm(props) {
5972
5992
  isDisabled,
5973
5993
  isReadonly,
5974
5994
  isValidating,
5995
+ isValid: model,
5975
5996
  items,
5976
5997
  validateOn: toRef(props, 'validateOn')
5977
5998
  });
@@ -5980,6 +6001,7 @@ function createForm(props) {
5980
6001
  isDisabled,
5981
6002
  isReadonly,
5982
6003
  isValidating,
6004
+ isValid: model,
5983
6005
  items,
5984
6006
  validate,
5985
6007
  reset,
@@ -5995,7 +6017,10 @@ function useForm() {
5995
6017
  // Types
5996
6018
 
5997
6019
  const makeValidationProps = propsFactory({
5998
- disabled: Boolean,
6020
+ disabled: {
6021
+ type: Boolean,
6022
+ default: null
6023
+ },
5999
6024
  error: Boolean,
6000
6025
  errorMessages: {
6001
6026
  type: [Array, String],
@@ -6007,7 +6032,10 @@ const makeValidationProps = propsFactory({
6007
6032
  },
6008
6033
  name: String,
6009
6034
  label: String,
6010
- readonly: Boolean,
6035
+ readonly: {
6036
+ type: Boolean,
6037
+ default: null
6038
+ },
6011
6039
  rules: {
6012
6040
  type: Array,
6013
6041
  default: () => []
@@ -6026,15 +6054,30 @@ function useValidation(props) {
6026
6054
  const internalErrorMessages = ref([]);
6027
6055
  const isPristine = shallowRef(true);
6028
6056
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
6029
- const isDisabled = computed(() => !!(props.disabled || form?.isDisabled.value));
6030
- const isReadonly = computed(() => !!(props.readonly || form?.isReadonly.value));
6057
+ const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));
6058
+ const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));
6031
6059
  const errorMessages = computed(() => {
6032
6060
  return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6033
6061
  });
6062
+ const validateOn = computed(() => {
6063
+ let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6064
+ if (value === 'lazy') value = 'input lazy';
6065
+ const set = new Set(value?.split(' ') ?? []);
6066
+ return {
6067
+ blur: set.has('blur') || set.has('input'),
6068
+ input: set.has('input'),
6069
+ submit: set.has('submit'),
6070
+ lazy: set.has('lazy')
6071
+ };
6072
+ });
6034
6073
  const isValid = computed(() => {
6035
- if (props.error || errorMessages.value.length) return false;
6074
+ if (props.error || props.errorMessages.length) return false;
6036
6075
  if (!props.rules.length) return true;
6037
- return isPristine.value ? null : true;
6076
+ if (isPristine.value) {
6077
+ return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
6078
+ } else {
6079
+ return !internalErrorMessages.value.length;
6080
+ }
6038
6081
  });
6039
6082
  const isValidating = shallowRef(false);
6040
6083
  const validationClasses = computed(() => {
@@ -6057,11 +6100,13 @@ function useValidation(props) {
6057
6100
  onBeforeUnmount(() => {
6058
6101
  form?.unregister(uid.value);
6059
6102
  });
6060
- const validateOn = computed(() => props.validateOn || form?.validateOn.value || 'input');
6061
-
6062
- // Set initial valid state, for inputs that might not have rules
6063
- onMounted(() => form?.update(uid.value, isValid.value, errorMessages.value));
6064
- useToggleScope(() => validateOn.value === 'input', () => {
6103
+ onMounted(async () => {
6104
+ if (!validateOn.value.lazy) {
6105
+ await validate(true);
6106
+ }
6107
+ form?.update(uid.value, isValid.value, errorMessages.value);
6108
+ });
6109
+ useToggleScope(() => validateOn.value.input, () => {
6065
6110
  watch(validationModel, () => {
6066
6111
  if (validationModel.value != null) {
6067
6112
  validate();
@@ -6073,7 +6118,7 @@ function useValidation(props) {
6073
6118
  }
6074
6119
  });
6075
6120
  });
6076
- useToggleScope(() => validateOn.value === 'blur', () => {
6121
+ useToggleScope(() => validateOn.value.blur, () => {
6077
6122
  watch(() => props.focused, val => {
6078
6123
  if (!val) validate();
6079
6124
  });
@@ -6082,14 +6127,19 @@ function useValidation(props) {
6082
6127
  form?.update(uid.value, isValid.value, errorMessages.value);
6083
6128
  });
6084
6129
  function reset() {
6085
- resetValidation();
6086
6130
  model.value = null;
6131
+ nextTick(resetValidation);
6087
6132
  }
6088
6133
  function resetValidation() {
6089
6134
  isPristine.value = true;
6090
- internalErrorMessages.value = [];
6135
+ if (!validateOn.value.lazy) {
6136
+ validate(true);
6137
+ } else {
6138
+ internalErrorMessages.value = [];
6139
+ }
6091
6140
  }
6092
6141
  async function validate() {
6142
+ let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6093
6143
  const results = [];
6094
6144
  isValidating.value = true;
6095
6145
  for (const rule of props.rules) {
@@ -6108,7 +6158,7 @@ function useValidation(props) {
6108
6158
  }
6109
6159
  internalErrorMessages.value = results;
6110
6160
  isValidating.value = false;
6111
- isPristine.value = false;
6161
+ isPristine.value = silent;
6112
6162
  return internalErrorMessages.value;
6113
6163
  }
6114
6164
  return {
@@ -6129,6 +6179,10 @@ function useValidation(props) {
6129
6179
  const makeVInputProps = propsFactory({
6130
6180
  id: String,
6131
6181
  appendIcon: IconValue,
6182
+ centerAffix: {
6183
+ type: Boolean,
6184
+ default: true
6185
+ },
6132
6186
  prependIcon: IconValue,
6133
6187
  hideDetails: [Boolean, String],
6134
6188
  hint: String,
@@ -6198,7 +6252,7 @@ const VInput = genericComponent()({
6198
6252
  validate
6199
6253
  }));
6200
6254
  const messages = computed(() => {
6201
- if (errorMessages.value.length > 0) {
6255
+ if (!isPristine.value && errorMessages.value.length > 0) {
6202
6256
  return errorMessages.value;
6203
6257
  } else if (props.hint && (props.persistentHint || props.focused)) {
6204
6258
  return props.hint;
@@ -6212,7 +6266,9 @@ const VInput = genericComponent()({
6212
6266
  const hasMessages = messages.value.length > 0;
6213
6267
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
6214
6268
  return createVNode("div", {
6215
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6269
+ "class": ['v-input', `v-input--${props.direction}`, {
6270
+ 'v-input--center-affix': props.centerAffix
6271
+ }, densityClasses.value, validationClasses.value, props.class],
6216
6272
  "style": props.style
6217
6273
  }, [hasPrepend && createVNode("div", {
6218
6274
  "key": "prepend",
@@ -6419,6 +6475,7 @@ const VTextField = genericComponent()({
6419
6475
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
6420
6476
  return props.counter;
6421
6477
  });
6478
+ const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
6422
6479
  function onIntersect(isIntersecting, entries) {
6423
6480
  if (!props.autofocus || !isIntersecting) return;
6424
6481
  entries[0].target?.focus?.();
@@ -6478,10 +6535,11 @@ const VTextField = genericComponent()({
6478
6535
  "class": ['v-text-field', {
6479
6536
  'v-text-field--prefixed': props.prefix,
6480
6537
  'v-text-field--suffixed': props.suffix,
6481
- 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6538
+ 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant)
6482
6539
  }, props.class],
6483
6540
  "style": props.style
6484
6541
  }, rootAttrs, inputProps, {
6542
+ "centerAffix": !isPlainOrUnderlined.value,
6485
6543
  "focused": isFocused.value
6486
6544
  }), {
6487
6545
  ...slots,
@@ -6851,10 +6909,10 @@ const VCheckboxBtn = genericComponent()({
6851
6909
  }
6852
6910
  }
6853
6911
  const falseIcon = computed(() => {
6854
- return props.indeterminate ? props.indeterminateIcon : props.falseIcon;
6912
+ return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
6855
6913
  });
6856
6914
  const trueIcon = computed(() => {
6857
- return props.indeterminate ? props.indeterminateIcon : props.trueIcon;
6915
+ return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
6858
6916
  });
6859
6917
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6860
6918
  "modelValue": model.value,
@@ -6864,7 +6922,7 @@ const VCheckboxBtn = genericComponent()({
6864
6922
  "type": "checkbox",
6865
6923
  "falseIcon": falseIcon.value,
6866
6924
  "trueIcon": trueIcon.value,
6867
- "aria-checked": props.indeterminate ? 'mixed' : undefined
6925
+ "aria-checked": indeterminate.value ? 'mixed' : undefined
6868
6926
  }), slots));
6869
6927
  return {};
6870
6928
  }
@@ -7824,7 +7882,9 @@ const VListGroupActivator = defineComponent({
7824
7882
  }
7825
7883
  });
7826
7884
  const makeVListGroupProps = propsFactory({
7885
+ /* @deprecated */
7827
7886
  activeColor: String,
7887
+ baseColor: String,
7828
7888
  color: String,
7829
7889
  collapseIcon: {
7830
7890
  type: IconValue,
@@ -7873,6 +7933,7 @@ const VListGroup = genericComponent()({
7873
7933
  VListItem: {
7874
7934
  active: isOpen.value,
7875
7935
  activeColor: props.activeColor,
7936
+ baseColor: props.baseColor,
7876
7937
  color: props.color,
7877
7938
  prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
7878
7939
  appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
@@ -7927,9 +7988,11 @@ const makeVListItemProps = propsFactory({
7927
7988
  default: undefined
7928
7989
  },
7929
7990
  activeClass: String,
7991
+ /* @deprecated */
7930
7992
  activeColor: String,
7931
7993
  appendAvatar: String,
7932
7994
  appendIcon: IconValue,
7995
+ baseColor: String,
7933
7996
  disabled: Boolean,
7934
7997
  lines: String,
7935
7998
  link: {
@@ -7992,8 +8055,9 @@ const VListItem = genericComponent()({
7992
8055
  const isLink = computed(() => props.link !== false && link.isLink.value);
7993
8056
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
7994
8057
  const roundedProps = computed(() => props.rounded || props.nav);
8058
+ const color = computed(() => props.color ?? props.activeColor);
7995
8059
  const variantProps = computed(() => ({
7996
- color: isActive.value ? props.activeColor ?? props.color : props.color,
8060
+ color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
7997
8061
  variant: props.variant
7998
8062
  }));
7999
8063
  watch(() => link.isActive?.value, val => {
@@ -8050,7 +8114,6 @@ const VListItem = genericComponent()({
8050
8114
  }
8051
8115
  useRender(() => {
8052
8116
  const Tag = isLink.value ? 'a' : props.tag;
8053
- const hasColor = !list || isSelected.value || isActive.value;
8054
8117
  const hasTitle = slots.title || props.title;
8055
8118
  const hasSubtitle = slots.subtitle || props.subtitle;
8056
8119
  const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
@@ -8058,6 +8121,9 @@ const VListItem = genericComponent()({
8058
8121
  const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
8059
8122
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
8060
8123
  list?.updateHasPrepend(hasPrepend);
8124
+ if (props.activeColor) {
8125
+ deprecate('active-color', ['color', 'base-color']);
8126
+ }
8061
8127
  return withDirectives(createVNode(Tag, {
8062
8128
  "class": ['v-list-item', {
8063
8129
  'v-list-item--active': isActive.value,
@@ -8066,10 +8132,10 @@ const VListItem = genericComponent()({
8066
8132
  'v-list-item--nav': props.nav,
8067
8133
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
8068
8134
  [`${props.activeClass}`]: props.activeClass && isActive.value
8069
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8070
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
8135
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8136
+ "style": [colorStyles.value, dimensionStyles.value, props.style],
8071
8137
  "href": link.href.value,
8072
- "tabindex": isClickable.value ? 0 : undefined,
8138
+ "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
8073
8139
  "onClick": onClick,
8074
8140
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
8075
8141
  }, {
@@ -8220,9 +8286,7 @@ const VListChildren = genericComponent()({
8220
8286
  if (type === 'subheader') {
8221
8287
  return slots.subheader?.({
8222
8288
  props: itemProps
8223
- }) ?? createVNode(VListSubheader, itemProps, {
8224
- default: slots.subheader
8225
- });
8289
+ }) ?? createVNode(VListSubheader, itemProps, null);
8226
8290
  }
8227
8291
  const slotsWithItem = {
8228
8292
  subtitle: slots.subtitle ? slotProps => slots.subtitle?.({
@@ -8237,10 +8301,6 @@ const VListChildren = genericComponent()({
8237
8301
  ...slotProps,
8238
8302
  item
8239
8303
  }) : undefined,
8240
- default: slots.default ? slotProps => slots.default?.({
8241
- ...slotProps,
8242
- item
8243
- }) : undefined,
8244
8304
  title: slots.title ? slotProps => slots.title?.({
8245
8305
  ...slotProps,
8246
8306
  item
@@ -8264,7 +8324,9 @@ const VListChildren = genericComponent()({
8264
8324
  default: () => createVNode(VListChildren, {
8265
8325
  "items": children
8266
8326
  }, slots)
8267
- }) : slots.item ? slots.item(itemProps) : createVNode(VListItem, itemProps, slotsWithItem);
8327
+ }) : slots.item ? slots.item({
8328
+ props: itemProps
8329
+ }) : createVNode(VListItem, itemProps, slotsWithItem);
8268
8330
  });
8269
8331
  }
8270
8332
  });
@@ -8296,7 +8358,7 @@ const makeItemsProps = propsFactory({
8296
8358
  default: 'props'
8297
8359
  },
8298
8360
  returnObject: Boolean
8299
- }, 'item');
8361
+ }, 'list-items');
8300
8362
  function transformItem$1(props, item) {
8301
8363
  const title = getPropertyFromItem(item, props.itemTitle, item);
8302
8364
  const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue, title);
@@ -8324,20 +8386,23 @@ function transformItems$1(props, items) {
8324
8386
  }
8325
8387
  function useItems(props) {
8326
8388
  const items = computed(() => transformItems$1(props, props.items));
8389
+ return useTransformItems(items, value => transformItem$1(props, value));
8390
+ }
8391
+ function useTransformItems(items, transform) {
8327
8392
  function transformIn(value) {
8328
8393
  return value.map(v => {
8329
8394
  const existingItem = items.value.find(item => deepEqual(v, item.value));
8330
8395
  // Nullish existingItem means value is a custom input value from combobox
8331
- // In this case, use transformItem to create an InternalItem based on value
8332
- return existingItem ?? transformItem$1(props, v);
8396
+ // In this case, use transformItem to create an { value: unknown } based on value
8397
+ return existingItem ?? transform(v);
8333
8398
  });
8334
8399
  }
8335
8400
  function transformOut(value) {
8336
8401
  return value.map(_ref => {
8337
8402
  let {
8338
- props
8403
+ value
8339
8404
  } = _ref;
8340
- return props.value;
8405
+ return value;
8341
8406
  });
8342
8407
  }
8343
8408
  return {
@@ -8386,6 +8451,8 @@ function useListItems(props) {
8386
8451
  };
8387
8452
  }
8388
8453
  const makeVListProps = propsFactory({
8454
+ baseColor: String,
8455
+ /* @deprecated */
8389
8456
  activeColor: String,
8390
8457
  activeClass: String,
8391
8458
  bgColor: String,
@@ -8460,16 +8527,19 @@ const VList = genericComponent()({
8460
8527
  } = useNested(props);
8461
8528
  const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
8462
8529
  const activeColor = toRef(props, 'activeColor');
8530
+ const baseColor = toRef(props, 'baseColor');
8463
8531
  const color = toRef(props, 'color');
8464
8532
  createList();
8465
8533
  provideDefaults({
8466
8534
  VListGroup: {
8467
8535
  activeColor,
8536
+ baseColor,
8468
8537
  color
8469
8538
  },
8470
8539
  VListItem: {
8471
8540
  activeClass: toRef(props, 'activeClass'),
8472
8541
  activeColor,
8542
+ baseColor,
8473
8543
  color,
8474
8544
  density: toRef(props, 'density'),
8475
8545
  disabled: toRef(props, 'disabled'),
@@ -9494,14 +9564,14 @@ const parseDisplayOptions = function () {
9494
9564
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
9495
9565
  return mergeDeep(defaultDisplayOptions, options);
9496
9566
  };
9497
- function getClientWidth(isHydrate) {
9498
- return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
9567
+ function getClientWidth(ssr) {
9568
+ return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;
9499
9569
  }
9500
- function getClientHeight(isHydrate) {
9501
- return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9570
+ function getClientHeight(ssr) {
9571
+ return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;
9502
9572
  }
9503
- function getPlatform(isHydrate) {
9504
- const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9573
+ function getPlatform(ssr) {
9574
+ const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';
9505
9575
  function match(regexp) {
9506
9576
  return Boolean(userAgent.match(regexp));
9507
9577
  }
@@ -10325,10 +10395,10 @@ const VSelect = genericComponent()({
10325
10395
  'v-select--active-menu': menu.value,
10326
10396
  'v-select--chips': !!props.chips,
10327
10397
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10328
- 'v-select--selected': model.value.length
10398
+ 'v-select--selected': model.value.length,
10399
+ 'v-select--selection-slot': !!slots.selection
10329
10400
  }, props.class],
10330
10401
  "style": props.style,
10331
- "appendInnerIcon": props.menuIcon,
10332
10402
  "readonly": true,
10333
10403
  "placeholder": placeholder,
10334
10404
  "onClick:clear": onClear,
@@ -10360,25 +10430,21 @@ const VSelect = genericComponent()({
10360
10430
  default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
10361
10431
  "title": t(props.noDataText)
10362
10432
  }, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => {
10363
- if (slots.item) {
10364
- return slots.item?.({
10365
- item,
10366
- index,
10367
- props: mergeProps(item.props, {
10368
- onClick: () => select(item)
10369
- })
10370
- });
10371
- }
10372
- return createVNode(VListItem, mergeProps({
10373
- "key": index
10374
- }, item.props, {
10375
- "onClick": () => select(item)
10376
- }), {
10433
+ const itemProps = mergeProps(item.props, {
10434
+ key: index,
10435
+ onClick: () => select(item)
10436
+ });
10437
+ return slots.item?.({
10438
+ item,
10439
+ index,
10440
+ props: itemProps
10441
+ }) ?? createVNode(VListItem, itemProps, {
10377
10442
  prepend: _ref2 => {
10378
10443
  let {
10379
10444
  isSelected
10380
10445
  } = _ref2;
10381
10446
  return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10447
+ "key": item.value,
10382
10448
  "modelValue": isSelected,
10383
10449
  "ripple": false,
10384
10450
  "tabindex": "-1"
@@ -10435,7 +10501,16 @@ const VSelect = genericComponent()({
10435
10501
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10436
10502
  "class": "v-select__selection-comma"
10437
10503
  }, [createTextVNode(",")])])]);
10438
- })])
10504
+ })]),
10505
+ 'append-inner': function () {
10506
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10507
+ args[_key] = arguments[_key];
10508
+ }
10509
+ return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
10510
+ "class": "v-select__menu-icon",
10511
+ "icon": props.menuIcon
10512
+ }, null) : undefined]);
10513
+ }
10439
10514
  });
10440
10515
  });
10441
10516
  return forwardRefs({
@@ -10447,6 +10522,8 @@ const VSelect = genericComponent()({
10447
10522
  });
10448
10523
 
10449
10524
  /* eslint-disable max-statements */
10525
+ /* eslint-disable no-labels */
10526
+
10450
10527
 
10451
10528
  // Types
10452
10529
 
@@ -10516,23 +10593,24 @@ function useFilter(props, items, query, options) {
10516
10593
  const strQuery = computed(() => typeof query?.value !== 'string' && typeof query?.value !== 'number' ? '' : String(query.value));
10517
10594
  const filteredItems = ref([]);
10518
10595
  const filteredMatches = ref(new Map());
10596
+ const transformedItems = computed(() => options?.transform ? unref(items).map(options?.transform) : unref(items));
10519
10597
  watchEffect(() => {
10520
10598
  filteredItems.value = [];
10521
10599
  filteredMatches.value = new Map();
10522
- const transformedItems = unref(items);
10523
- const results = filterItems(transformedItems, strQuery.value, {
10600
+ const results = filterItems(transformedItems.value, strQuery.value, {
10524
10601
  customKeyFilter: props.customKeyFilter,
10525
10602
  default: props.customFilter,
10526
- filterKeys: unref(options?.filterKeys) ?? props.filterKeys,
10603
+ filterKeys: props.filterKeys,
10527
10604
  filterMode: props.filterMode,
10528
10605
  noFilter: props.noFilter
10529
10606
  });
10607
+ const originalItems = unref(items);
10530
10608
  results.forEach(_ref => {
10531
10609
  let {
10532
10610
  index,
10533
10611
  matches
10534
10612
  } = _ref;
10535
- const item = transformedItems[index];
10613
+ const item = originalItems[index];
10536
10614
  filteredItems.value.push(item);
10537
10615
  filteredMatches.value.set(item.value, matches);
10538
10616
  });
@@ -10561,8 +10639,9 @@ function highlightResult$1(text, matches, length) {
10561
10639
  }, [text.substr(matches + length)])]) : text;
10562
10640
  }
10563
10641
  const makeVAutocompleteProps = propsFactory({
10564
- // TODO: implement post keyboard support
10565
- // autoSelectFirst: Boolean,
10642
+ autoSelectFirst: {
10643
+ type: [Boolean, String]
10644
+ },
10566
10645
  search: String,
10567
10646
  ...makeFilterProps({
10568
10647
  filterKeys: ['title']
@@ -10594,6 +10673,7 @@ const VAutocomplete = genericComponent()({
10594
10673
  const vTextFieldRef = ref();
10595
10674
  const isFocused = shallowRef(false);
10596
10675
  const isPristine = shallowRef(true);
10676
+ const listHasFocus = ref(false);
10597
10677
  const vMenuRef = ref();
10598
10678
  const _menu = useProxiedModel(props, 'menu');
10599
10679
  const menu = computed({
@@ -10637,6 +10717,10 @@ const VAutocomplete = genericComponent()({
10637
10717
  });
10638
10718
  const selected = computed(() => selections.value.map(selection => selection.props.value));
10639
10719
  const selection = computed(() => selections.value[selectionIndex.value]);
10720
+ const highlightFirst = computed(() => {
10721
+ const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
10722
+ return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
10723
+ });
10640
10724
  const listRef = ref();
10641
10725
  function onClear(e) {
10642
10726
  if (props.openOnClear) {
@@ -10648,6 +10732,13 @@ const VAutocomplete = genericComponent()({
10648
10732
  if (props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value) return;
10649
10733
  menu.value = true;
10650
10734
  }
10735
+ function onMousedownMenuIcon(e) {
10736
+ if (isFocused.value) {
10737
+ e.preventDefault();
10738
+ e.stopPropagation();
10739
+ }
10740
+ menu.value = !menu.value;
10741
+ }
10651
10742
  function onKeydown(e) {
10652
10743
  if (props.readonly || form?.isReadonly.value) return;
10653
10744
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -10662,10 +10753,16 @@ const VAutocomplete = genericComponent()({
10662
10753
  menu.value = false;
10663
10754
  }
10664
10755
  if (['Enter', 'Escape', 'Tab'].includes(e.key)) {
10756
+ if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {
10757
+ select(filteredItems.value[0]);
10758
+ }
10665
10759
  isPristine.value = true;
10666
10760
  }
10667
10761
  if (e.key === 'ArrowDown') {
10668
10762
  listRef.value?.focus('next');
10763
+ if (highlightFirst.value) {
10764
+ listRef.value?.focus('next');
10765
+ }
10669
10766
  } else if (e.key === 'ArrowUp') {
10670
10767
  listRef.value?.focus('prev');
10671
10768
  }
@@ -10713,6 +10810,12 @@ const VAutocomplete = genericComponent()({
10713
10810
  }
10714
10811
  function onFocusin(e) {
10715
10812
  isFocused.value = true;
10813
+ setTimeout(() => {
10814
+ listHasFocus.value = true;
10815
+ });
10816
+ }
10817
+ function onFocusout(e) {
10818
+ listHasFocus.value = false;
10716
10819
  }
10717
10820
  const isSelecting = shallowRef(false);
10718
10821
  function select(item) {
@@ -10734,14 +10837,22 @@ const VAutocomplete = genericComponent()({
10734
10837
  nextTick(() => isSelecting.value = false);
10735
10838
  }
10736
10839
  }
10737
- watch(isFocused, val => {
10840
+ watch(isFocused, (val, oldVal) => {
10841
+ if (val === oldVal) return;
10738
10842
  if (val) {
10739
10843
  isSelecting.value = true;
10740
10844
  search.value = props.multiple ? '' : String(selections.value.at(-1)?.props.title ?? '');
10741
10845
  isPristine.value = true;
10742
10846
  nextTick(() => isSelecting.value = false);
10743
10847
  } else {
10744
- if (!props.multiple && !search.value) model.value = [];
10848
+ if (!props.multiple && !search.value) model.value = [];else if (highlightFirst.value && !listHasFocus.value && !selections.value.some(_ref2 => {
10849
+ let {
10850
+ value
10851
+ } = _ref2;
10852
+ return value === displayItems.value[0].value;
10853
+ })) {
10854
+ select(displayItems.value[0]);
10855
+ }
10745
10856
  menu.value = false;
10746
10857
  search.value = '';
10747
10858
  selectionIndex.value = -1;
@@ -10772,10 +10883,10 @@ const VAutocomplete = genericComponent()({
10772
10883
  "class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
10773
10884
  'v-autocomplete--active-menu': menu.value,
10774
10885
  'v-autocomplete--chips': !!props.chips,
10886
+ 'v-autocomplete--selection-slot': !!slots.selection,
10775
10887
  'v-autocomplete--selecting-index': selectionIndex.value > -1
10776
10888
  }, props.class],
10777
10889
  "style": props.style,
10778
- "appendInnerIcon": props.menuIcon,
10779
10890
  "readonly": props.readonly,
10780
10891
  "placeholder": isDirty ? undefined : props.placeholder,
10781
10892
  "onClick:clear": onClear,
@@ -10801,36 +10912,40 @@ const VAutocomplete = genericComponent()({
10801
10912
  "selected": selected.value,
10802
10913
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
10803
10914
  "onMousedown": e => e.preventDefault(),
10804
- "onFocusin": onFocusin
10915
+ "onFocusin": onFocusin,
10916
+ "onFocusout": onFocusout
10805
10917
  }, {
10806
10918
  default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
10807
10919
  "title": t(props.noDataText)
10808
- }, null)), slots['prepend-item']?.(), displayItems.value.map(item => slots.item?.({
10809
- item,
10810
- props: mergeProps(item.props, {
10920
+ }, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => {
10921
+ const itemProps = mergeProps(item.props, {
10922
+ key: index,
10923
+ active: highlightFirst.value && index === 0 ? true : undefined,
10811
10924
  onClick: () => select(item)
10812
- })
10813
- }) ?? createVNode(VListItem, mergeProps({
10814
- "key": item.value
10815
- }, item.props, {
10816
- "onClick": () => select(item)
10817
- }), {
10818
- prepend: _ref2 => {
10819
- let {
10820
- isSelected
10821
- } = _ref2;
10822
- return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10823
- "modelValue": isSelected,
10824
- "ripple": false,
10825
- "tabindex": "-1"
10826
- }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10827
- "icon": item.props.prependIcon
10828
- }, null)]);
10829
- },
10830
- title: () => {
10831
- return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
10832
- }
10833
- })), slots['append-item']?.()]
10925
+ });
10926
+ return slots.item?.({
10927
+ item,
10928
+ index,
10929
+ props: itemProps
10930
+ }) ?? createVNode(VListItem, itemProps, {
10931
+ prepend: _ref3 => {
10932
+ let {
10933
+ isSelected
10934
+ } = _ref3;
10935
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10936
+ "key": item.value,
10937
+ "modelValue": isSelected,
10938
+ "ripple": false,
10939
+ "tabindex": "-1"
10940
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
10941
+ "icon": item.props.prependIcon
10942
+ }, null)]);
10943
+ },
10944
+ title: () => {
10945
+ return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
10946
+ }
10947
+ });
10948
+ }), slots['append-item']?.()]
10834
10949
  })]
10835
10950
  }), selections.value.map((item, index) => {
10836
10951
  function onChipClose(e) {
@@ -10879,7 +10994,18 @@ const VAutocomplete = genericComponent()({
10879
10994
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
10880
10995
  "class": "v-autocomplete__selection-comma"
10881
10996
  }, [createTextVNode(",")])])]);
10882
- })])
10997
+ })]),
10998
+ 'append-inner': function () {
10999
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11000
+ args[_key] = arguments[_key];
11001
+ }
11002
+ return createVNode(Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? createVNode(VIcon, {
11003
+ "class": "v-autocomplete__menu-icon",
11004
+ "icon": props.menuIcon,
11005
+ "onMousedown": onMousedownMenuIcon,
11006
+ "onClick": noop
11007
+ }, null) : undefined]);
11008
+ }
10883
11009
  });
10884
11010
  });
10885
11011
  return forwardRefs({
@@ -11240,7 +11366,7 @@ const VBottomNavigation = genericComponent()({
11240
11366
  const makeVBreadcrumbsDividerProps = propsFactory({
11241
11367
  divider: [Number, String],
11242
11368
  ...makeComponentProps()
11243
- }, 'v-breacrumbs-divider');
11369
+ }, 'v-breadcrumbs-divider');
11244
11370
  const VBreadcrumbsDivider = genericComponent()({
11245
11371
  name: 'VBreadcrumbsDivider',
11246
11372
  props: makeVBreadcrumbsDividerProps(),
@@ -11328,7 +11454,7 @@ const makeVBreadcrumbsProps = propsFactory({
11328
11454
  ...makeTagProps({
11329
11455
  tag: 'ul'
11330
11456
  })
11331
- }, 'v-breacrumbs');
11457
+ }, 'v-breadcrumbs');
11332
11458
  const VBreadcrumbs = genericComponent()({
11333
11459
  name: 'VBreadcrumbs',
11334
11460
  props: makeVBreadcrumbsProps(),
@@ -11677,6 +11803,7 @@ const VCard = genericComponent()({
11677
11803
  });
11678
11804
 
11679
11805
  // Types
11806
+
11680
11807
  const handleGesture = wrapper => {
11681
11808
  const {
11682
11809
  touchstartX,
@@ -12457,27 +12584,6 @@ const VColorPickerCanvas = defineComponent({
12457
12584
 
12458
12585
  // Types
12459
12586
 
12460
- function has(obj, key) {
12461
- return key.every(k => obj.hasOwnProperty(k));
12462
- }
12463
- function parseColor(color) {
12464
- if (!color) return null;
12465
- let hsva = null;
12466
- if (typeof color === 'string') {
12467
- const hex = parseHex(color);
12468
- hsva = HexToHSV(hex);
12469
- }
12470
- if (typeof color === 'object') {
12471
- if (has(color, ['r', 'g', 'b'])) {
12472
- hsva = RGBtoHSV(color);
12473
- } else if (has(color, ['h', 's', 'l'])) {
12474
- hsva = HSLtoHSV(color);
12475
- } else if (has(color, ['h', 's', 'v'])) {
12476
- hsva = color;
12477
- }
12478
- }
12479
- return hsva;
12480
- }
12481
12587
  function stripAlpha(color, stripAlpha) {
12482
12588
  if (stripAlpha) {
12483
12589
  const {
@@ -12726,6 +12832,7 @@ const VColorPickerEdit = defineComponent({
12726
12832
  });
12727
12833
 
12728
12834
  /* eslint-disable max-statements */
12835
+ // Composables
12729
12836
 
12730
12837
  // Types
12731
12838
 
@@ -12740,9 +12847,15 @@ function getPosition(e, position) {
12740
12847
  if ('touches' in e && e.touches.length) return e.touches[0][position];else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position];else return e[position];
12741
12848
  }
12742
12849
  const makeSliderProps = propsFactory({
12743
- disabled: Boolean,
12850
+ disabled: {
12851
+ type: Boolean,
12852
+ default: null
12853
+ },
12744
12854
  error: Boolean,
12745
- readonly: Boolean,
12855
+ readonly: {
12856
+ type: Boolean,
12857
+ default: null
12858
+ },
12746
12859
  max: {
12747
12860
  type: [Number, String],
12748
12861
  default: 100
@@ -13120,7 +13233,7 @@ const VSliderThumb = genericComponent()({
13120
13233
  "aria-valuemin": props.min,
13121
13234
  "aria-valuemax": props.max,
13122
13235
  "aria-valuenow": props.modelValue,
13123
- "aria-readonly": readonly.value,
13236
+ "aria-readonly": !!readonly.value,
13124
13237
  "aria-orientation": direction.value,
13125
13238
  "onKeydown": !readonly.value ? onKeydown : undefined
13126
13239
  }, [createVNode("div", {
@@ -13372,8 +13485,8 @@ const VSlider = genericComponent()({
13372
13485
  }, [createVNode("input", {
13373
13486
  "id": id.value,
13374
13487
  "name": props.name || id.value,
13375
- "disabled": props.disabled,
13376
- "readonly": props.readonly,
13488
+ "disabled": !!props.disabled,
13489
+ "readonly": !!props.readonly,
13377
13490
  "tabindex": "-1",
13378
13491
  "value": model.value
13379
13492
  }, null), createVNode(VSliderTrack, {
@@ -13828,13 +13941,15 @@ const VColorPickerSwatches = defineComponent({
13828
13941
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13829
13942
  "class": "v-color-picker-swatches__swatch"
13830
13943
  }, [swatch.map(color => {
13831
- const hsva = parseColor(color);
13944
+ const rgba = parseColor(color);
13945
+ const hsva = RGBtoHSV(rgba);
13946
+ const background = RGBtoCSS(rgba);
13832
13947
  return createVNode("div", {
13833
13948
  "class": "v-color-picker-swatches__color",
13834
13949
  "onClick": () => hsva && emit('update:color', hsva)
13835
13950
  }, [createVNode("div", {
13836
13951
  "style": {
13837
- background: color
13952
+ background
13838
13953
  }
13839
13954
  }, [props.color && deepEqual(props.color, hsva) ? createVNode(VIcon, {
13840
13955
  "size": "x-small",
@@ -13895,8 +14010,13 @@ const VColorPicker = defineComponent({
13895
14010
  const mode = useProxiedModel(props, 'mode');
13896
14011
  const lastPickedColor = ref(null);
13897
14012
  const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
13898
- let c = parseColor(v);
13899
- if (!c) return null;
14013
+ let c;
14014
+ try {
14015
+ c = RGBtoHSV(parseColor(v));
14016
+ } catch (err) {
14017
+ consoleWarn(err);
14018
+ return null;
14019
+ }
13900
14020
  if (lastPickedColor.value) {
13901
14021
  c = {
13902
14022
  ...c,
@@ -13995,8 +14115,9 @@ function highlightResult(text, matches, length) {
13995
14115
  }, [text.substr(matches + length)])]) : text;
13996
14116
  }
13997
14117
  const makeVComboboxProps = propsFactory({
13998
- // TODO: implement post keyboard support
13999
- // autoSelectFirst: Boolean,
14118
+ autoSelectFirst: {
14119
+ type: [Boolean, String]
14120
+ },
14000
14121
  delimiters: Array,
14001
14122
  ...makeFilterProps({
14002
14123
  filterKeys: ['title']
@@ -14032,6 +14153,7 @@ const VCombobox = genericComponent()({
14032
14153
  const vTextFieldRef = ref();
14033
14154
  const isFocused = shallowRef(false);
14034
14155
  const isPristine = shallowRef(true);
14156
+ const listHasFocus = ref(false);
14035
14157
  const vMenuRef = ref();
14036
14158
  const _menu = useProxiedModel(props, 'menu');
14037
14159
  const menu = computed({
@@ -14114,6 +14236,10 @@ const VCombobox = genericComponent()({
14114
14236
  });
14115
14237
  const selected = computed(() => selections.value.map(selection => selection.props.value));
14116
14238
  const selection = computed(() => selections.value[selectionIndex.value]);
14239
+ const highlightFirst = computed(() => {
14240
+ const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
14241
+ return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
14242
+ });
14117
14243
  const listRef = ref();
14118
14244
  function onClear(e) {
14119
14245
  cleared = true;
@@ -14125,6 +14251,13 @@ const VCombobox = genericComponent()({
14125
14251
  if (props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value) return;
14126
14252
  menu.value = true;
14127
14253
  }
14254
+ function onMousedownMenuIcon(e) {
14255
+ if (isFocused.value) {
14256
+ e.preventDefault();
14257
+ e.stopPropagation();
14258
+ }
14259
+ menu.value = !menu.value;
14260
+ }
14128
14261
  function onKeydown(e) {
14129
14262
  if (props.readonly || form?.isReadonly.value) return;
14130
14263
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -14139,6 +14272,9 @@ const VCombobox = genericComponent()({
14139
14272
  menu.value = false;
14140
14273
  }
14141
14274
  if (['Enter', 'Escape', 'Tab'].includes(e.key)) {
14275
+ if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {
14276
+ select(filteredItems.value[0]);
14277
+ }
14142
14278
  isPristine.value = true;
14143
14279
  }
14144
14280
  if (e.key === 'ArrowDown') {
@@ -14213,17 +14349,31 @@ const VCombobox = genericComponent()({
14213
14349
  }
14214
14350
  function onFocusin(e) {
14215
14351
  isFocused.value = true;
14352
+ setTimeout(() => {
14353
+ listHasFocus.value = true;
14354
+ });
14355
+ }
14356
+ function onFocusout(e) {
14357
+ listHasFocus.value = false;
14216
14358
  }
14217
14359
  watch(filteredItems, val => {
14218
14360
  if (!val.length && props.hideNoData) menu.value = false;
14219
14361
  });
14220
- watch(isFocused, val => {
14221
- if (val) return;
14362
+ watch(isFocused, (val, oldVal) => {
14363
+ if (val || val === oldVal) return;
14222
14364
  selectionIndex.value = -1;
14223
14365
  menu.value = false;
14224
- if (!props.multiple || !search.value) return;
14225
- model.value = [...model.value, transformItem$1(props, search.value)];
14226
- search.value = '';
14366
+ if (highlightFirst.value && !listHasFocus.value && !selections.value.some(_ref2 => {
14367
+ let {
14368
+ value
14369
+ } = _ref2;
14370
+ return value === displayItems.value[0].value;
14371
+ })) {
14372
+ select(displayItems.value[0]);
14373
+ } else if (props.multiple && search.value) {
14374
+ model.value = [...model.value, transformItem$1(props, search.value)];
14375
+ search.value = '';
14376
+ }
14227
14377
  });
14228
14378
  useRender(() => {
14229
14379
  const hasChips = !!(props.chips || slots.chip);
@@ -14244,11 +14394,11 @@ const VCombobox = genericComponent()({
14244
14394
  "class": ['v-combobox', {
14245
14395
  'v-combobox--active-menu': menu.value,
14246
14396
  'v-combobox--chips': !!props.chips,
14397
+ 'v-combobox--selection-slot': !!slots.selection,
14247
14398
  'v-combobox--selecting-index': selectionIndex.value > -1,
14248
14399
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
14249
14400
  }, props.class],
14250
14401
  "style": props.style,
14251
- "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
14252
14402
  "readonly": props.readonly,
14253
14403
  "placeholder": isDirty ? undefined : props.placeholder,
14254
14404
  "onClick:clear": onClear,
@@ -14274,36 +14424,40 @@ const VCombobox = genericComponent()({
14274
14424
  "selected": selected.value,
14275
14425
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
14276
14426
  "onMousedown": e => e.preventDefault(),
14277
- "onFocusin": onFocusin
14427
+ "onFocusin": onFocusin,
14428
+ "onFocusout": onFocusout
14278
14429
  }, {
14279
14430
  default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
14280
14431
  "title": t(props.noDataText)
14281
- }, null)), slots['prepend-item']?.(), displayItems.value.map(item => slots.item?.({
14282
- item,
14283
- props: mergeProps(item.props, {
14432
+ }, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => {
14433
+ const itemProps = mergeProps(item.props, {
14434
+ key: index,
14435
+ active: highlightFirst.value && index === 0 ? true : undefined,
14284
14436
  onClick: () => select(item)
14285
- })
14286
- }) ?? createVNode(VListItem, mergeProps({
14287
- "key": item.value
14288
- }, item.props, {
14289
- "onClick": () => select(item)
14290
- }), {
14291
- prepend: _ref2 => {
14292
- let {
14293
- isSelected
14294
- } = _ref2;
14295
- return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14296
- "modelValue": isSelected,
14297
- "ripple": false,
14298
- "tabindex": "-1"
14299
- }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14300
- "icon": item.props.prependIcon
14301
- }, null)]);
14302
- },
14303
- title: () => {
14304
- return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
14305
- }
14306
- })), slots['append-item']?.()]
14437
+ });
14438
+ return slots.item?.({
14439
+ item,
14440
+ index,
14441
+ props: itemProps
14442
+ }) ?? createVNode(VListItem, itemProps, {
14443
+ prepend: _ref3 => {
14444
+ let {
14445
+ isSelected
14446
+ } = _ref3;
14447
+ return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
14448
+ "key": item.value,
14449
+ "modelValue": isSelected,
14450
+ "ripple": false,
14451
+ "tabindex": "-1"
14452
+ }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
14453
+ "icon": item.props.prependIcon
14454
+ }, null)]);
14455
+ },
14456
+ title: () => {
14457
+ return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
14458
+ }
14459
+ });
14460
+ }), slots['append-item']?.()]
14307
14461
  })]
14308
14462
  }), selections.value.map((item, index) => {
14309
14463
  function onChipClose(e) {
@@ -14352,7 +14506,18 @@ const VCombobox = genericComponent()({
14352
14506
  }, [item.title, props.multiple && index < selections.value.length - 1 && createVNode("span", {
14353
14507
  "class": "v-combobox__selection-comma"
14354
14508
  }, [createTextVNode(",")])])]);
14355
- })])
14509
+ })]),
14510
+ 'append-inner': function () {
14511
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
14512
+ args[_key] = arguments[_key];
14513
+ }
14514
+ return createVNode(Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? createVNode(VIcon, {
14515
+ "class": "v-combobox__menu-icon",
14516
+ "icon": props.menuIcon,
14517
+ "onMousedown": onMousedownMenuIcon,
14518
+ "onClick": noop
14519
+ }, null) : undefined]);
14520
+ }
14356
14521
  });
14357
14522
  });
14358
14523
  return forwardRefs({
@@ -14783,6 +14948,7 @@ const VFileInput = genericComponent()({
14783
14948
  const vFieldRef = ref();
14784
14949
  const inputRef = ref();
14785
14950
  const isActive = computed(() => isFocused.value || props.active);
14951
+ const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
14786
14952
  function onFocus() {
14787
14953
  if (inputRef.value !== document.activeElement) {
14788
14954
  inputRef.value?.focus();
@@ -14826,10 +14992,15 @@ const VFileInput = genericComponent()({
14826
14992
  "ref": vInputRef,
14827
14993
  "modelValue": model.value,
14828
14994
  "onUpdate:modelValue": $event => model.value = $event,
14829
- "class": ['v-file-input', props.class],
14995
+ "class": ['v-file-input', {
14996
+ 'v-file-input--chips': !!props.chips,
14997
+ 'v-file-input--selection-slot': !!slots.selection,
14998
+ 'v-text-field--plain-underlined': isPlainOrUnderlined.value
14999
+ }, props.class],
14830
15000
  "style": props.style,
14831
15001
  "onClick:prepend": onClickPrepend
14832
15002
  }, rootAttrs, inputProps, {
15003
+ "centerAffix": !isPlainOrUnderlined.value,
14833
15004
  "focused": isFocused.value
14834
15005
  }), {
14835
15006
  ...slots,
@@ -15381,9 +15552,6 @@ const VItemGroup = genericComponent()({
15381
15552
  });
15382
15553
 
15383
15554
  // Composables
15384
-
15385
- // Types
15386
-
15387
15555
  const VItem = genericComponent()({
15388
15556
  name: 'VItem',
15389
15557
  props: makeGroupItemProps(),
@@ -16800,15 +16968,15 @@ const VRangeSlider = genericComponent()({
16800
16968
  }, [createVNode("input", {
16801
16969
  "id": `${id.value}_start`,
16802
16970
  "name": props.name || id.value,
16803
- "disabled": props.disabled,
16804
- "readonly": props.readonly,
16971
+ "disabled": !!props.disabled,
16972
+ "readonly": !!props.readonly,
16805
16973
  "tabindex": "-1",
16806
16974
  "value": model.value[0]
16807
16975
  }, null), createVNode("input", {
16808
16976
  "id": `${id.value}_stop`,
16809
16977
  "name": props.name || id.value,
16810
- "disabled": props.disabled,
16811
- "readonly": props.readonly,
16978
+ "disabled": !!props.disabled,
16979
+ "readonly": !!props.readonly,
16812
16980
  "tabindex": "-1",
16813
16981
  "value": model.value[1]
16814
16982
  }, null), createVNode(VSliderTrack, {
@@ -18085,6 +18253,11 @@ const VTextarea = genericComponent()({
18085
18253
  }
18086
18254
  }
18087
18255
  const sizerRef = ref();
18256
+ const rows = ref(+props.rows);
18257
+ const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
18258
+ watchEffect(() => {
18259
+ if (!props.autoGrow) rows.value = +props.rows;
18260
+ });
18088
18261
  function calculateInputHeight() {
18089
18262
  if (!props.autoGrow) return;
18090
18263
  nextTick(() => {
@@ -18096,7 +18269,9 @@ const VTextarea = genericComponent()({
18096
18269
  const lineHeight = parseFloat(style.lineHeight);
18097
18270
  const minHeight = Math.max(parseFloat(props.rows) * lineHeight + padding, parseFloat(fieldStyle.getPropertyValue('--v-input-control-height')));
18098
18271
  const maxHeight = parseFloat(props.maxRows) * lineHeight + padding || Infinity;
18099
- controlHeight.value = convertToUnit(clamp(height ?? 0, minHeight, maxHeight));
18272
+ const newHeight = clamp(height ?? 0, minHeight, maxHeight);
18273
+ rows.value = Math.floor((newHeight - padding) / lineHeight);
18274
+ controlHeight.value = convertToUnit(newHeight);
18100
18275
  });
18101
18276
  }
18102
18277
  onMounted(calculateInputHeight);
@@ -18136,10 +18311,11 @@ const VTextarea = genericComponent()({
18136
18311
  'v-text-field--suffixed': props.suffix,
18137
18312
  'v-textarea--auto-grow': props.autoGrow,
18138
18313
  'v-textarea--no-resize': props.noResize || props.autoGrow,
18139
- 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
18314
+ 'v-text-field--plain-underlined': isPlainOrUnderlined.value
18140
18315
  }, props.class],
18141
18316
  "style": props.style
18142
18317
  }, rootAttrs, inputProps, {
18318
+ "centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
18143
18319
  "focused": isFocused.value
18144
18320
  }), {
18145
18321
  ...slots,
@@ -18163,6 +18339,7 @@ const VTextarea = genericComponent()({
18163
18339
  "role": "textbox"
18164
18340
  }, fieldProps, {
18165
18341
  "active": isActive.value || isDirty.value,
18342
+ "centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
18166
18343
  "dirty": isDirty.value || props.dirty,
18167
18344
  "disabled": isDisabled.value,
18168
18345
  "focused": isFocused.value,
@@ -19543,7 +19720,7 @@ function createVuetify$1() {
19543
19720
  date
19544
19721
  };
19545
19722
  }
19546
- const version$1 = "3.2.4";
19723
+ const version$1 = "3.3.0";
19547
19724
  createVuetify$1.version = version$1;
19548
19725
 
19549
19726
  // Vue's inject() can only be used in setup
@@ -19563,7 +19740,7 @@ const createVuetify = function () {
19563
19740
  ...options
19564
19741
  });
19565
19742
  };
19566
- const version = "3.2.4";
19743
+ const version = "3.3.0";
19567
19744
  createVuetify.version = version;
19568
19745
 
19569
19746
  export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };