vuetify 3.8.1 → 3.8.3

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 (312) hide show
  1. package/dist/json/attributes.json +2066 -2066
  2. package/dist/json/importMap-labs.json +26 -26
  3. package/dist/json/importMap.json +164 -164
  4. package/dist/json/web-types.json +4116 -3862
  5. package/dist/vuetify-labs.cjs +784 -697
  6. package/dist/vuetify-labs.css +3174 -3162
  7. package/dist/vuetify-labs.d.ts +2103 -1144
  8. package/dist/vuetify-labs.esm.js +785 -698
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +784 -697
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.cjs +565 -590
  13. package/dist/vuetify.cjs.map +1 -1
  14. package/dist/vuetify.css +2963 -2960
  15. package/dist/vuetify.d.ts +190 -169
  16. package/dist/vuetify.esm.js +566 -591
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +565 -590
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +1264 -1235
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/blueprints/md3.js +18 -5
  24. package/lib/blueprints/md3.js.map +1 -1
  25. package/lib/components/VAlert/VAlert.js +8 -9
  26. package/lib/components/VAlert/VAlert.js.map +1 -1
  27. package/lib/components/VAppBar/VAppBar.js +4 -4
  28. package/lib/components/VAppBar/VAppBar.js.map +1 -1
  29. package/lib/components/VAutocomplete/VAutocomplete.js +1 -2
  30. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  31. package/lib/components/VBadge/VBadge.js +2 -3
  32. package/lib/components/VBadge/VBadge.js.map +1 -1
  33. package/lib/components/VBanner/VBanner.js +3 -3
  34. package/lib/components/VBanner/VBanner.js.map +1 -1
  35. package/lib/components/VBottomNavigation/VBottomNavigation.js +8 -8
  36. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  37. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +6 -6
  38. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  39. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +1 -2
  40. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  41. package/lib/components/VBtn/VBtn.js +3 -3
  42. package/lib/components/VBtn/VBtn.js.map +1 -1
  43. package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
  44. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  45. package/lib/components/VCard/VCard.js +7 -8
  46. package/lib/components/VCard/VCard.js.map +1 -1
  47. package/lib/components/VCheckbox/VCheckbox.js +2 -3
  48. package/lib/components/VCheckbox/VCheckbox.js.map +1 -1
  49. package/lib/components/VCheckbox/VCheckboxBtn.js +3 -3
  50. package/lib/components/VCheckbox/VCheckboxBtn.js.map +1 -1
  51. package/lib/components/VChip/VChip.js +8 -9
  52. package/lib/components/VChip/VChip.js.map +1 -1
  53. package/lib/components/VChipGroup/VChipGroup.js +5 -5
  54. package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
  55. package/lib/components/VCode/VCode.css +3 -0
  56. package/lib/components/VCode/VCode.sass +3 -0
  57. package/lib/components/VCombobox/VCombobox.js +3 -4
  58. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  59. package/lib/components/VCounter/VCounter.js +2 -2
  60. package/lib/components/VCounter/VCounter.js.map +1 -1
  61. package/lib/components/VDataIterator/VDataIterator.js +2 -2
  62. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  63. package/lib/components/VDataTable/VDataTable.css +1 -1
  64. package/lib/components/VDataTable/VDataTable.js +7 -7
  65. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  66. package/lib/components/VDataTable/VDataTable.sass +1 -1
  67. package/lib/components/VDataTable/VDataTableHeaders.js +1 -1
  68. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  69. package/lib/components/VDataTable/VDataTableServer.js +7 -7
  70. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  71. package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
  72. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  73. package/lib/components/VDataTable/composables/expand.d.ts +1 -1
  74. package/lib/components/VDataTable/composables/expand.js +1 -1
  75. package/lib/components/VDataTable/composables/expand.js.map +1 -1
  76. package/lib/components/VDataTable/composables/options.js +8 -8
  77. package/lib/components/VDataTable/composables/options.js.map +1 -1
  78. package/lib/components/VDataTable/composables/select.d.ts +2 -2
  79. package/lib/components/VDataTable/composables/select.js +2 -2
  80. package/lib/components/VDataTable/composables/select.js.map +1 -1
  81. package/lib/components/VDataTable/composables/sort.d.ts +2 -2
  82. package/lib/components/VDataTable/composables/sort.js +2 -2
  83. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  84. package/lib/components/VDatePicker/VDatePicker.d.ts +7 -7
  85. package/lib/components/VDatePicker/VDatePicker.js +4 -4
  86. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  87. package/lib/components/VDatePicker/VDatePickerHeader.js +1 -1
  88. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  89. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +7 -7
  90. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  91. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  92. package/lib/components/VDialog/VDialog.d.ts +9 -9
  93. package/lib/components/VDivider/VDivider.js +2 -2
  94. package/lib/components/VDivider/VDivider.js.map +1 -1
  95. package/lib/components/VEmptyState/VEmptyState.js +1 -2
  96. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  97. package/lib/components/VExpansionPanel/VExpansionPanel.js +3 -3
  98. package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
  99. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +3 -3
  100. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
  101. package/lib/components/VExpansionPanel/VExpansionPanels.js +14 -14
  102. package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  103. package/lib/components/VFab/VFab.js +2 -2
  104. package/lib/components/VFab/VFab.js.map +1 -1
  105. package/lib/components/VField/VField.js +5 -5
  106. package/lib/components/VField/VField.js.map +1 -1
  107. package/lib/components/VFileInput/VFileInput.js +2 -2
  108. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  109. package/lib/components/VFooter/VFooter.js +4 -4
  110. package/lib/components/VFooter/VFooter.js.map +1 -1
  111. package/lib/components/VForm/VForm.d.ts +40 -40
  112. package/lib/components/VIcon/VIcon.js +4 -4
  113. package/lib/components/VIcon/VIcon.js.map +1 -1
  114. package/lib/components/VImg/VImg.js +2 -2
  115. package/lib/components/VImg/VImg.js.map +1 -1
  116. package/lib/components/VInput/VInput.js +3 -3
  117. package/lib/components/VInput/VInput.js.map +1 -1
  118. package/lib/components/VLayout/VLayoutItem.js +5 -5
  119. package/lib/components/VLayout/VLayoutItem.js.map +1 -1
  120. package/lib/components/VList/VList.js +14 -14
  121. package/lib/components/VList/VList.js.map +1 -1
  122. package/lib/components/VList/VListGroup.js +2 -2
  123. package/lib/components/VList/VListGroup.js.map +1 -1
  124. package/lib/components/VList/VListItem.d.ts +3 -3
  125. package/lib/components/VList/VListItem.js +6 -6
  126. package/lib/components/VList/VListItem.js.map +1 -1
  127. package/lib/components/VList/VListSubheader.js +1 -2
  128. package/lib/components/VList/VListSubheader.js.map +1 -1
  129. package/lib/components/VMenu/VMenu.d.ts +15 -15
  130. package/lib/components/VMenu/VMenu.js +2 -2
  131. package/lib/components/VMenu/VMenu.js.map +1 -1
  132. package/lib/components/VMessages/VMessages.js +1 -1
  133. package/lib/components/VMessages/VMessages.js.map +1 -1
  134. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +6 -6
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  136. package/lib/components/VNumberInput/VNumberInput.js +11 -11
  137. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  138. package/lib/components/VOtpInput/VOtpInput.js +7 -7
  139. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  140. package/lib/components/VOverlay/VOverlay.d.ts +3 -3
  141. package/lib/components/VOverlay/VOverlay.js +4 -4
  142. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  143. package/lib/components/VOverlay/locationStrategies.d.ts +4 -0
  144. package/lib/components/VOverlay/locationStrategies.js +33 -4
  145. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  146. package/lib/components/VPagination/VPagination.js +7 -7
  147. package/lib/components/VPagination/VPagination.js.map +1 -1
  148. package/lib/components/VProgressCircular/VProgressCircular.js +9 -9
  149. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  150. package/lib/components/VProgressLinear/VProgressLinear.js +4 -4
  151. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  152. package/lib/components/VSelect/VSelect.js +3 -2
  153. package/lib/components/VSelect/VSelect.js.map +1 -1
  154. package/lib/components/VSelectionControl/VSelectionControl.d.ts +1 -1
  155. package/lib/components/VSelectionControl/VSelectionControl.js +7 -7
  156. package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
  157. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +15 -15
  158. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
  159. package/lib/components/VSheet/VSheet.js +1 -2
  160. package/lib/components/VSheet/VSheet.js.map +1 -1
  161. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +2 -2
  162. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  163. package/lib/components/VSlider/slider.js +10 -10
  164. package/lib/components/VSlider/slider.js.map +1 -1
  165. package/lib/components/VSnackbar/VSnackbar.d.ts +9 -9
  166. package/lib/components/VSparkline/VSparkline.js +2 -2
  167. package/lib/components/VSparkline/VSparkline.js.map +1 -1
  168. package/lib/components/VSwitch/VSwitch.js +3 -3
  169. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  170. package/lib/components/VSystemBar/VSystemBar.js +2 -2
  171. package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
  172. package/lib/components/VTabs/VTab.d.ts +3 -3
  173. package/lib/components/VTabs/VTab.js +1 -1
  174. package/lib/components/VTabs/VTab.js.map +1 -1
  175. package/lib/components/VTabs/VTabs.js +7 -7
  176. package/lib/components/VTabs/VTabs.js.map +1 -1
  177. package/lib/components/VTimeline/VTimeline.js +9 -9
  178. package/lib/components/VTimeline/VTimeline.js.map +1 -1
  179. package/lib/components/VTimeline/VTimelineDivider.js +2 -3
  180. package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
  181. package/lib/components/VToolbar/VToolbar.js +2 -2
  182. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  183. package/lib/components/VToolbar/VToolbarItems.js +2 -2
  184. package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
  185. package/lib/components/VTooltip/VTooltip.d.ts +9 -9
  186. package/lib/components/VTooltip/VTooltip.js +3 -3
  187. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  188. package/lib/components/VVirtualScroll/VVirtualScroll.js +1 -1
  189. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  190. package/lib/components/VWindow/VWindow.js +3 -3
  191. package/lib/components/VWindow/VWindow.js.map +1 -1
  192. package/lib/components/transitions/dialog-transition.js +11 -2
  193. package/lib/components/transitions/dialog-transition.js.map +1 -1
  194. package/lib/composables/border.d.ts +1 -1
  195. package/lib/composables/border.js +5 -8
  196. package/lib/composables/border.js.map +1 -1
  197. package/lib/composables/calendar.d.ts +23 -56
  198. package/lib/composables/calendar.js +16 -18
  199. package/lib/composables/calendar.js.map +1 -1
  200. package/lib/composables/color.d.ts +8 -10
  201. package/lib/composables/color.js +21 -22
  202. package/lib/composables/color.js.map +1 -1
  203. package/lib/composables/date/DateAdapter.d.ts +1 -0
  204. package/lib/composables/date/DateAdapter.js.map +1 -1
  205. package/lib/composables/date/adapters/vuetify.d.ts +1 -0
  206. package/lib/composables/date/adapters/vuetify.js +101 -160
  207. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  208. package/lib/composables/date/date.d.ts +1 -1
  209. package/lib/composables/date/date.js +0 -20
  210. package/lib/composables/date/date.js.map +1 -1
  211. package/lib/composables/defaults.js +6 -3
  212. package/lib/composables/defaults.js.map +1 -1
  213. package/lib/composables/density.d.ts +1 -1
  214. package/lib/composables/density.js +2 -2
  215. package/lib/composables/density.js.map +1 -1
  216. package/lib/composables/display.d.ts +4 -2
  217. package/lib/composables/display.js +2 -2
  218. package/lib/composables/display.js.map +1 -1
  219. package/lib/composables/elevation.js +4 -6
  220. package/lib/composables/elevation.js.map +1 -1
  221. package/lib/composables/filter.js +2 -1
  222. package/lib/composables/filter.js.map +1 -1
  223. package/lib/composables/focus.d.ts +4 -2
  224. package/lib/composables/focus.js +2 -2
  225. package/lib/composables/focus.js.map +1 -1
  226. package/lib/composables/form.d.ts +7 -7
  227. package/lib/composables/form.js +3 -3
  228. package/lib/composables/form.js.map +1 -1
  229. package/lib/composables/goto.js +2 -2
  230. package/lib/composables/goto.js.map +1 -1
  231. package/lib/composables/group.d.ts +3 -3
  232. package/lib/composables/group.js +4 -4
  233. package/lib/composables/group.js.map +1 -1
  234. package/lib/composables/icons.d.ts +2 -2
  235. package/lib/composables/icons.js +2 -2
  236. package/lib/composables/icons.js.map +1 -1
  237. package/lib/composables/layout.d.ts +10 -4
  238. package/lib/composables/layout.js +4 -4
  239. package/lib/composables/layout.js.map +1 -1
  240. package/lib/composables/lazy.d.ts +1 -1
  241. package/lib/composables/lazy.js +2 -2
  242. package/lib/composables/lazy.js.map +1 -1
  243. package/lib/composables/loader.d.ts +4 -2
  244. package/lib/composables/loader.js +2 -2
  245. package/lib/composables/loader.js.map +1 -1
  246. package/lib/composables/locale.js +3 -3
  247. package/lib/composables/locale.js.map +1 -1
  248. package/lib/composables/nested/nested.d.ts +3 -3
  249. package/lib/composables/nested/nested.js +4 -4
  250. package/lib/composables/nested/nested.js.map +1 -1
  251. package/lib/composables/position.d.ts +1 -1
  252. package/lib/composables/position.js +2 -2
  253. package/lib/composables/position.js.map +1 -1
  254. package/lib/composables/router.d.ts +3 -3
  255. package/lib/composables/router.js +8 -8
  256. package/lib/composables/router.js.map +1 -1
  257. package/lib/composables/size.d.ts +8 -5
  258. package/lib/composables/size.js +6 -5
  259. package/lib/composables/size.js.map +1 -1
  260. package/lib/composables/ssrBoot.d.ts +4 -2
  261. package/lib/composables/ssrBoot.js +2 -2
  262. package/lib/composables/ssrBoot.js.map +1 -1
  263. package/lib/composables/stack.d.ts +7 -5
  264. package/lib/composables/stack.js +5 -5
  265. package/lib/composables/stack.js.map +1 -1
  266. package/lib/composables/theme.js +9 -9
  267. package/lib/composables/theme.js.map +1 -1
  268. package/lib/composables/variant.d.ts +5 -6
  269. package/lib/composables/variant.js +6 -6
  270. package/lib/composables/variant.js.map +1 -1
  271. package/lib/entry-bundler.d.ts +1 -0
  272. package/lib/entry-bundler.js +1 -1
  273. package/lib/framework.d.ts +80 -71
  274. package/lib/framework.js +1 -1
  275. package/lib/labs/VCalendar/VCalendar.d.ts +607 -218
  276. package/lib/labs/VCalendar/VCalendar.js +55 -27
  277. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  278. package/lib/labs/VCalendar/VCalendarDay.css +9 -0
  279. package/lib/labs/VCalendar/VCalendarDay.d.ts +329 -17
  280. package/lib/labs/VCalendar/VCalendarDay.js +18 -10
  281. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  282. package/lib/labs/VCalendar/VCalendarDay.sass +8 -0
  283. package/lib/labs/VCalendar/VCalendarEvent.js +15 -5
  284. package/lib/labs/VCalendar/VCalendarEvent.js.map +1 -1
  285. package/lib/labs/VCalendar/VCalendarHeader.d.ts +44 -17
  286. package/lib/labs/VCalendar/VCalendarHeader.js +5 -2
  287. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  288. package/lib/labs/VCalendar/VCalendarInterval.d.ts +171 -17
  289. package/lib/labs/VCalendar/VCalendarInterval.js +56 -19
  290. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  291. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +92 -17
  292. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +30 -10
  293. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  294. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +122 -88
  295. package/lib/labs/VCalendar/VCalendarMonthDay.js +24 -22
  296. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  297. package/lib/labs/VDateInput/VDateInput.d.ts +7 -7
  298. package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
  299. package/lib/labs/VIconBtn/VIconBtn.js +10 -12
  300. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  301. package/lib/labs/VPicker/VPicker.js +1 -2
  302. package/lib/labs/VPicker/VPicker.js.map +1 -1
  303. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -3
  304. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  305. package/lib/labs/VTreeview/VTreeview.js +11 -11
  306. package/lib/labs/VTreeview/VTreeview.js.map +1 -1
  307. package/lib/labs/entry-bundler.d.ts +1 -0
  308. package/lib/util/box.js.map +1 -1
  309. package/lib/util/helpers.d.ts +7 -2
  310. package/lib/util/helpers.js +16 -5
  311. package/lib/util/helpers.js.map +1 -1
  312. package/package.json +49 -47
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.8.1
2
+ * Vuetify v3.8.3
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, computed, watchEffect, toRefs, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, isRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -412,6 +412,9 @@ class CircularBuffer {
412
412
  _classPrivateFieldInitSpec(this, _pointer, 0);
413
413
  this.size = size;
414
414
  }
415
+ get isFull() {
416
+ return _classPrivateFieldGet(_arr, this).length === this.size;
417
+ }
415
418
  push(val) {
416
419
  _classPrivateFieldGet(_arr, this)[_classPrivateFieldGet(_pointer, this)] = val;
417
420
  _classPrivateFieldSet(_pointer, this, (_classPrivateFieldGet(_pointer, this) + 1) % this.size);
@@ -419,6 +422,10 @@ class CircularBuffer {
419
422
  values() {
420
423
  return _classPrivateFieldGet(_arr, this).slice(_classPrivateFieldGet(_pointer, this)).concat(_classPrivateFieldGet(_arr, this).slice(0, _classPrivateFieldGet(_pointer, this)));
421
424
  }
425
+ clear() {
426
+ _classPrivateFieldGet(_arr, this).length = 0;
427
+ _classPrivateFieldSet(_pointer, this, 0);
428
+ }
422
429
  }
423
430
  function getEventCoordinates(e) {
424
431
  if ('touches' in e) {
@@ -442,15 +449,19 @@ function getEventCoordinates(e) {
442
449
 
443
450
  function destructComputed(getter) {
444
451
  const refs = reactive({});
445
- const base = computed(getter);
446
452
  watchEffect(() => {
447
- for (const key in base.value) {
448
- refs[key] = base.value[key];
453
+ const base = getter();
454
+ for (const key in base) {
455
+ refs[key] = base[key];
449
456
  }
450
457
  }, {
451
458
  flush: 'sync'
452
459
  });
453
- return toRefs(refs);
460
+ const obj = {};
461
+ for (const key in refs) {
462
+ obj[key] = toRef(() => refs[key]);
463
+ }
464
+ return obj;
454
465
  }
455
466
 
456
467
  /** Array.includes but value can be any type */
@@ -1334,7 +1345,7 @@ function provideDefaults(defaults, options) {
1334
1345
  return newDefaults;
1335
1346
  }
1336
1347
  function propIsDefined(vnode, prop) {
1337
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1348
+ return vnode.props && (typeof vnode.props[prop] !== 'undefined' || typeof vnode.props[toKebabCase(prop)] !== 'undefined');
1338
1349
  }
1339
1350
  function internalUseDefaults() {
1340
1351
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1351,9 +1362,12 @@ function internalUseDefaults() {
1351
1362
  const propValue = Reflect.get(target, prop);
1352
1363
  if (prop === 'class' || prop === 'style') {
1353
1364
  return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1354
- } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1355
- return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;
1356
1365
  }
1366
+ if (propIsDefined(vm.vnode, prop)) return propValue;
1367
+ const _componentDefault = componentDefaults.value?.[prop];
1368
+ if (_componentDefault !== undefined) return _componentDefault;
1369
+ const _globalDefault = defaults.value?.global?.[prop];
1370
+ if (_globalDefault !== undefined) return _globalDefault;
1357
1371
  return propValue;
1358
1372
  }
1359
1373
  });
@@ -1741,7 +1755,7 @@ function createLayout(props) {
1741
1755
  const mainRect = computed(() => {
1742
1756
  return layers.value[layers.value.length - 1].layer;
1743
1757
  });
1744
- const mainStyles = computed(() => {
1758
+ const mainStyles = toRef(() => {
1745
1759
  return {
1746
1760
  '--v-layout-left': convertToUnit(mainRect.value.left),
1747
1761
  '--v-layout-right': convertToUnit(mainRect.value.right),
@@ -1856,10 +1870,10 @@ function createLayout(props) {
1856
1870
  layoutRect,
1857
1871
  rootZIndex
1858
1872
  });
1859
- const layoutClasses = computed(() => ['v-layout', {
1873
+ const layoutClasses = toRef(() => ['v-layout', {
1860
1874
  'v-layout--full-height': props.fullHeight
1861
1875
  }]);
1862
- const layoutStyles = computed(() => ({
1876
+ const layoutStyles = toRef(() => ({
1863
1877
  zIndex: parentLayout ? rootZIndex.value : undefined,
1864
1878
  position: parentLayout ? 'relative' : undefined,
1865
1879
  overflow: parentLayout ? 'hidden' : undefined
@@ -2250,7 +2264,7 @@ function createRtl(i18n, options) {
2250
2264
  return {
2251
2265
  isRtl,
2252
2266
  rtl,
2253
- rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2267
+ rtlClasses: toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2254
2268
  };
2255
2269
  }
2256
2270
  function provideRtl(locale, rtl, props) {
@@ -2258,7 +2272,7 @@ function provideRtl(locale, rtl, props) {
2258
2272
  return {
2259
2273
  isRtl,
2260
2274
  rtl,
2261
- rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2275
+ rtlClasses: toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2262
2276
  };
2263
2277
  }
2264
2278
  function useRtl() {
@@ -2331,8 +2345,8 @@ function genDefaults$2() {
2331
2345
  surface: '#212121',
2332
2346
  'surface-bright': '#ccbfd6',
2333
2347
  'surface-light': '#424242',
2334
- 'surface-variant': '#a3a3a3',
2335
- 'on-surface-variant': '#424242',
2348
+ 'surface-variant': '#c8c8c8',
2349
+ 'on-surface-variant': '#000000',
2336
2350
  primary: '#2196F3',
2337
2351
  'primary-darken-1': '#277CC1',
2338
2352
  secondary: '#54B6B2',
@@ -2482,7 +2496,7 @@ function createTheme(options) {
2482
2496
  }
2483
2497
  return acc;
2484
2498
  });
2485
- const current = computed(() => computedThemes.value[name.value]);
2499
+ const current = toRef(() => computedThemes.value[name.value]);
2486
2500
  const styles = computed(() => {
2487
2501
  const lines = [];
2488
2502
  if (current.value?.dark) {
@@ -2529,7 +2543,7 @@ function createTheme(options) {
2529
2543
  }
2530
2544
  } else {
2531
2545
  if (IN_BROWSER) {
2532
- head.addHeadObjs(computed(getHead));
2546
+ head.addHeadObjs(toRef(getHead));
2533
2547
  watchEffect(() => head.updateDOM());
2534
2548
  } else {
2535
2549
  head.addHeadObjs(getHead());
@@ -2548,7 +2562,7 @@ function createTheme(options) {
2548
2562
  }
2549
2563
  }
2550
2564
  }
2551
- const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2565
+ const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2552
2566
  return {
2553
2567
  install,
2554
2568
  isDisabled: parsedOptions.isDisabled,
@@ -2568,9 +2582,9 @@ function provideTheme(props) {
2568
2582
  getCurrentInstance('provideTheme');
2569
2583
  const theme = inject$1(ThemeSymbol, null);
2570
2584
  if (!theme) throw new Error('Could not find Vuetify theme injection');
2571
- const name = computed(() => props.theme ?? theme.name.value);
2572
- const current = computed(() => theme.themes.value[name.value]);
2573
- const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2585
+ const name = toRef(() => props.theme ?? theme.name.value);
2586
+ const current = toRef(() => theme.themes.value[name.value]);
2587
+ const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2574
2588
  const newTheme = {
2575
2589
  ...theme,
2576
2590
  name,
@@ -2854,6 +2868,7 @@ function ExpandTransitionGenerator () {
2854
2868
  const makeVDialogTransitionProps = propsFactory({
2855
2869
  target: [Object, Array]
2856
2870
  }, 'v-dialog-transition');
2871
+ const saved = new WeakMap();
2857
2872
  const VDialogTransition = genericComponent()({
2858
2873
  name: 'VDialogTransition',
2859
2874
  props: makeVDialogTransitionProps(),
@@ -2870,13 +2885,15 @@ const VDialogTransition = genericComponent()({
2870
2885
  await new Promise(resolve => requestAnimationFrame(resolve));
2871
2886
  await new Promise(resolve => requestAnimationFrame(resolve));
2872
2887
  el.style.visibility = '';
2888
+ const dimensions = getDimensions(props.target, el);
2873
2889
  const {
2874
2890
  x,
2875
2891
  y,
2876
2892
  sx,
2877
2893
  sy,
2878
2894
  speed
2879
- } = getDimensions(props.target, el);
2895
+ } = dimensions;
2896
+ saved.set(el, dimensions);
2880
2897
  const animation = animate(el, [{
2881
2898
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2882
2899
  opacity: 0
@@ -2905,13 +2922,19 @@ const VDialogTransition = genericComponent()({
2905
2922
  },
2906
2923
  async onLeave(el, done) {
2907
2924
  await new Promise(resolve => requestAnimationFrame(resolve));
2925
+ let dimensions;
2926
+ if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
2927
+ dimensions = saved.get(el);
2928
+ } else {
2929
+ dimensions = getDimensions(props.target, el);
2930
+ }
2908
2931
  const {
2909
2932
  x,
2910
2933
  y,
2911
2934
  sx,
2912
2935
  sy,
2913
2936
  speed
2914
- } = getDimensions(props.target, el);
2937
+ } = dimensions;
2915
2938
  const animation = animate(el, [{}, {
2916
2939
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2917
2940
  opacity: 0
@@ -3131,13 +3154,14 @@ const VResponsive = genericComponent()({
3131
3154
  // Composables
3132
3155
  function useColor(colors) {
3133
3156
  return destructComputed(() => {
3157
+ const _colors = toValue(colors);
3134
3158
  const classes = [];
3135
3159
  const styles = {};
3136
- if (colors.value.background) {
3137
- if (isCssColor(colors.value.background)) {
3138
- styles.backgroundColor = colors.value.background;
3139
- if (!colors.value.text && isParsableColor(colors.value.background)) {
3140
- const backgroundColor = parseColor(colors.value.background);
3160
+ if (_colors.background) {
3161
+ if (isCssColor(_colors.background)) {
3162
+ styles.backgroundColor = _colors.background;
3163
+ if (!_colors.text && isParsableColor(_colors.background)) {
3164
+ const backgroundColor = parseColor(_colors.background);
3141
3165
  if (backgroundColor.a == null || backgroundColor.a === 1) {
3142
3166
  const textColor = getForeground(backgroundColor);
3143
3167
  styles.color = textColor;
@@ -3145,15 +3169,15 @@ function useColor(colors) {
3145
3169
  }
3146
3170
  }
3147
3171
  } else {
3148
- classes.push(`bg-${colors.value.background}`);
3172
+ classes.push(`bg-${_colors.background}`);
3149
3173
  }
3150
3174
  }
3151
- if (colors.value.text) {
3152
- if (isCssColor(colors.value.text)) {
3153
- styles.color = colors.value.text;
3154
- styles.caretColor = colors.value.text;
3175
+ if (_colors.text) {
3176
+ if (isCssColor(_colors.text)) {
3177
+ styles.color = _colors.text;
3178
+ styles.caretColor = _colors.text;
3155
3179
  } else {
3156
- classes.push(`text-${colors.value.text}`);
3180
+ classes.push(`text-${_colors.text}`);
3157
3181
  }
3158
3182
  }
3159
3183
  return {
@@ -3162,27 +3186,25 @@ function useColor(colors) {
3162
3186
  };
3163
3187
  });
3164
3188
  }
3165
- function useTextColor(props, name) {
3166
- const colors = computed(() => ({
3167
- text: isRef(props) ? props.value : name ? props[name] : null
3168
- }));
3189
+ function useTextColor(color) {
3169
3190
  const {
3170
3191
  colorClasses: textColorClasses,
3171
3192
  colorStyles: textColorStyles
3172
- } = useColor(colors);
3193
+ } = useColor(() => ({
3194
+ text: toValue(color)
3195
+ }));
3173
3196
  return {
3174
3197
  textColorClasses,
3175
3198
  textColorStyles
3176
3199
  };
3177
3200
  }
3178
- function useBackgroundColor(props, name) {
3179
- const colors = computed(() => ({
3180
- background: isRef(props) ? props.value : name ? props[name] : null
3181
- }));
3201
+ function useBackgroundColor(color) {
3182
3202
  const {
3183
3203
  colorClasses: backgroundColorClasses,
3184
3204
  colorStyles: backgroundColorStyles
3185
- } = useColor(colors);
3205
+ } = useColor(() => ({
3206
+ background: toValue(color)
3207
+ }));
3186
3208
  return {
3187
3209
  backgroundColorClasses,
3188
3210
  backgroundColorStyles
@@ -3366,7 +3388,7 @@ const VImg = genericComponent()({
3366
3388
  const {
3367
3389
  backgroundColorClasses,
3368
3390
  backgroundColorStyles
3369
- } = useBackgroundColor(toRef(props, 'color'));
3391
+ } = useBackgroundColor(() => props.color);
3370
3392
  const {
3371
3393
  roundedClasses
3372
3394
  } = useRounded(props);
@@ -3473,7 +3495,7 @@ const VImg = genericComponent()({
3473
3495
  };
3474
3496
  poll();
3475
3497
  }
3476
- const containClasses = computed(() => ({
3498
+ const containClasses = toRef(() => ({
3477
3499
  'v-img__img--cover': props.cover,
3478
3500
  'v-img__img--contain': !props.cover
3479
3501
  }));
@@ -3610,16 +3632,13 @@ const makeBorderProps = propsFactory({
3610
3632
  function useBorder(props) {
3611
3633
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
3612
3634
  const borderClasses = computed(() => {
3613
- const border = isRef(props) ? props.value : props.border;
3614
- const classes = [];
3635
+ const border = props.border;
3615
3636
  if (border === true || border === '') {
3616
- classes.push(`${name}--border`);
3637
+ return `${name}--border`;
3617
3638
  } else if (typeof border === 'string' || border === 0) {
3618
- for (const value of String(border).split(' ')) {
3619
- classes.push(`border-${value}`);
3620
- }
3639
+ return String(border).split(' ').map(v => `border-${v}`);
3621
3640
  }
3622
- return classes;
3641
+ return [];
3623
3642
  });
3624
3643
  return {
3625
3644
  borderClasses
@@ -3644,12 +3663,10 @@ const makeElevationProps = propsFactory({
3644
3663
  }
3645
3664
  }, 'elevation');
3646
3665
  function useElevation(props) {
3647
- const elevationClasses = computed(() => {
3666
+ const elevationClasses = toRef(() => {
3648
3667
  const elevation = isRef(props) ? props.value : props.elevation;
3649
- const classes = [];
3650
- if (elevation == null) return classes;
3651
- classes.push(`elevation-${elevation}`);
3652
- return classes;
3668
+ if (elevation == null) return [];
3669
+ return [`elevation-${elevation}`];
3653
3670
  });
3654
3671
  return {
3655
3672
  elevationClasses
@@ -3700,7 +3717,7 @@ const VToolbar = genericComponent()({
3700
3717
  const {
3701
3718
  backgroundColorClasses,
3702
3719
  backgroundColorStyles
3703
- } = useBackgroundColor(toRef(props, 'color'));
3720
+ } = useBackgroundColor(() => props.color);
3704
3721
  const {
3705
3722
  borderClasses
3706
3723
  } = useBorder(props);
@@ -3909,7 +3926,7 @@ function useSsrBoot() {
3909
3926
  isBooted.value = true;
3910
3927
  });
3911
3928
  });
3912
- const ssrBootStyles = computed(() => !isBooted.value ? {
3929
+ const ssrBootStyles = toRef(() => !isBooted.value ? {
3913
3930
  transition: 'none !important'
3914
3931
  } : undefined);
3915
3932
  return {
@@ -3977,7 +3994,7 @@ const VAppBar = genericComponent()({
3977
3994
  } = useScroll(props, {
3978
3995
  canScroll
3979
3996
  });
3980
- const canHide = computed(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3997
+ const canHide = toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3981
3998
  const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3982
3999
  const isFlat = computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3983
4000
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
@@ -3988,7 +4005,7 @@ const VAppBar = genericComponent()({
3988
4005
  if (!canHide.value) return height + extensionHeight;
3989
4006
  return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
3990
4007
  });
3991
- useToggleScope(computed(() => !!props.scrollBehavior), () => {
4008
+ useToggleScope(() => !!props.scrollBehavior, () => {
3992
4009
  watchEffect(() => {
3993
4010
  if (canHide.value) {
3994
4011
  if (scrollBehavior.value.inverted) {
@@ -4009,11 +4026,11 @@ const VAppBar = genericComponent()({
4009
4026
  } = useLayoutItem({
4010
4027
  id: props.name,
4011
4028
  order: computed(() => parseInt(props.order, 10)),
4012
- position: toRef(props, 'location'),
4029
+ position: toRef(() => props.location),
4013
4030
  layoutSize: height,
4014
4031
  elementSize: shallowRef(undefined),
4015
4032
  active: isActive,
4016
- absolute: toRef(props, 'absolute')
4033
+ absolute: toRef(() => props.absolute)
4017
4034
  });
4018
4035
  useRender(() => {
4019
4036
  const toolbarProps = VToolbar.filterProps(props);
@@ -4056,7 +4073,7 @@ const makeDensityProps = propsFactory({
4056
4073
  }, 'density');
4057
4074
  function useDensity(props) {
4058
4075
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4059
- const densityClasses = computed(() => {
4076
+ const densityClasses = toRef(() => {
4060
4077
  return `${name}--density-${props.density}`;
4061
4078
  });
4062
4079
  return {
@@ -4086,24 +4103,24 @@ const makeVariantProps = propsFactory({
4086
4103
  }, 'variant');
4087
4104
  function useVariant(props) {
4088
4105
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4089
- const variantClasses = computed(() => {
4106
+ const variantClasses = toRef(() => {
4090
4107
  const {
4091
4108
  variant
4092
- } = unref(props);
4109
+ } = toValue(props);
4093
4110
  return `${name}--variant-${variant}`;
4094
4111
  });
4095
4112
  const {
4096
4113
  colorClasses,
4097
4114
  colorStyles
4098
- } = useColor(computed(() => {
4115
+ } = useColor(() => {
4099
4116
  const {
4100
4117
  variant,
4101
4118
  color
4102
- } = unref(props);
4119
+ } = toValue(props);
4103
4120
  return {
4104
4121
  [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color
4105
4122
  };
4106
- }));
4123
+ });
4107
4124
  return {
4108
4125
  colorClasses,
4109
4126
  colorStyles,
@@ -4148,11 +4165,11 @@ const VBtnGroup = genericComponent()({
4148
4165
  provideDefaults({
4149
4166
  VBtn: {
4150
4167
  height: 'auto',
4151
- baseColor: toRef(props, 'baseColor'),
4152
- color: toRef(props, 'color'),
4153
- density: toRef(props, 'density'),
4168
+ baseColor: toRef(() => props.baseColor),
4169
+ color: toRef(() => props.color),
4170
+ density: toRef(() => props.density),
4154
4171
  flat: true,
4155
- variant: toRef(props, 'variant')
4172
+ variant: toRef(() => props.variant)
4156
4173
  }
4157
4174
  });
4158
4175
  useRender(() => {
@@ -4202,7 +4219,7 @@ function useGroupItem(props, injectKey) {
4202
4219
  if (!required) return group;
4203
4220
  throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);
4204
4221
  }
4205
- const value = toRef(props, 'value');
4222
+ const value = toRef(() => props.value);
4206
4223
  const disabled = computed(() => !!(group.disabled.value || props.disabled));
4207
4224
  group.register({
4208
4225
  id,
@@ -4351,12 +4368,12 @@ function useGroup(props, injectKey) {
4351
4368
  unregister,
4352
4369
  selected,
4353
4370
  select,
4354
- disabled: toRef(props, 'disabled'),
4371
+ disabled: toRef(() => props.disabled),
4355
4372
  prev: () => step(items.length - 1),
4356
4373
  next: () => step(1),
4357
4374
  isSelected: id => selected.value.includes(id),
4358
- selectedClass: computed(() => props.selectedClass),
4359
- items: computed(() => items),
4375
+ selectedClass: toRef(() => props.selectedClass),
4376
+ items: toRef(() => items),
4360
4377
  getItemIndex: value => getItemIndex(items, value)
4361
4378
  };
4362
4379
  provide(injectKey, state);
@@ -4612,7 +4629,7 @@ const useIcon = props => {
4612
4629
  const icons = inject$1(IconSymbol);
4613
4630
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4614
4631
  const iconData = computed(() => {
4615
- const iconAlias = unref(props);
4632
+ const iconAlias = toValue(props);
4616
4633
  if (!iconAlias) return {
4617
4634
  component: VComponentIcon
4618
4635
  };
@@ -4662,14 +4679,15 @@ const makeSizeProps = propsFactory({
4662
4679
  function useSize(props) {
4663
4680
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4664
4681
  return destructComputed(() => {
4682
+ const size = props.size;
4665
4683
  let sizeClasses;
4666
4684
  let sizeStyles;
4667
- if (includes(predefinedSizes, props.size)) {
4668
- sizeClasses = `${name}--size-${props.size}`;
4669
- } else if (props.size) {
4685
+ if (includes(predefinedSizes, size)) {
4686
+ sizeClasses = `${name}--size-${size}`;
4687
+ } else if (size) {
4670
4688
  sizeStyles = {
4671
- width: convertToUnit(props.size),
4672
- height: convertToUnit(props.size)
4689
+ width: convertToUnit(size),
4690
+ height: convertToUnit(size)
4673
4691
  };
4674
4692
  }
4675
4693
  return {
@@ -4701,20 +4719,20 @@ const VIcon = genericComponent()({
4701
4719
  attrs,
4702
4720
  slots
4703
4721
  } = _ref;
4704
- const slotIcon = ref();
4722
+ const slotIcon = shallowRef();
4705
4723
  const {
4706
4724
  themeClasses
4707
4725
  } = useTheme();
4708
4726
  const {
4709
4727
  iconData
4710
- } = useIcon(computed(() => slotIcon.value || props.icon));
4728
+ } = useIcon(() => slotIcon.value || props.icon);
4711
4729
  const {
4712
4730
  sizeClasses
4713
4731
  } = useSize(props);
4714
4732
  const {
4715
4733
  textColorClasses,
4716
4734
  textColorStyles
4717
- } = useTextColor(toRef(props, 'color'));
4735
+ } = useTextColor(() => props.color);
4718
4736
  useRender(() => {
4719
4737
  const slotValue = slots.default?.();
4720
4738
  if (slotValue) {
@@ -4820,11 +4838,11 @@ const VProgressCircular = genericComponent()({
4820
4838
  const {
4821
4839
  textColorClasses,
4822
4840
  textColorStyles
4823
- } = useTextColor(toRef(props, 'color'));
4841
+ } = useTextColor(() => props.color);
4824
4842
  const {
4825
4843
  textColorClasses: underlayColorClasses,
4826
4844
  textColorStyles: underlayColorStyles
4827
- } = useTextColor(toRef(props, 'bgColor'));
4845
+ } = useTextColor(() => props.bgColor);
4828
4846
  const {
4829
4847
  intersectionRef,
4830
4848
  isIntersecting
@@ -4833,15 +4851,15 @@ const VProgressCircular = genericComponent()({
4833
4851
  resizeRef,
4834
4852
  contentRect
4835
4853
  } = useResizeObserver();
4836
- const normalizedValue = computed(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
4837
- const width = computed(() => Number(props.width));
4838
- const size = computed(() => {
4854
+ const normalizedValue = toRef(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
4855
+ const width = toRef(() => Number(props.width));
4856
+ const size = toRef(() => {
4839
4857
  // Get size from element if size prop value is small, large etc
4840
4858
  return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
4841
4859
  });
4842
- const diameter = computed(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
4843
- const strokeWidth = computed(() => width.value / size.value * diameter.value);
4844
- const strokeDashOffset = computed(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));
4860
+ const diameter = toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
4861
+ const strokeWidth = toRef(() => width.value / size.value * diameter.value);
4862
+ const strokeDashOffset = toRef(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));
4845
4863
  watchEffect(() => {
4846
4864
  intersectionRef.value = root.value;
4847
4865
  resizeRef.value = root.value;
@@ -5019,19 +5037,19 @@ const VProgressLinear = genericComponent()({
5019
5037
  const {
5020
5038
  textColorClasses,
5021
5039
  textColorStyles
5022
- } = useTextColor(props, 'color');
5040
+ } = useTextColor(() => props.color);
5023
5041
  const {
5024
5042
  backgroundColorClasses,
5025
5043
  backgroundColorStyles
5026
- } = useBackgroundColor(computed(() => props.bgColor || props.color));
5044
+ } = useBackgroundColor(() => props.bgColor || props.color);
5027
5045
  const {
5028
5046
  backgroundColorClasses: bufferColorClasses,
5029
5047
  backgroundColorStyles: bufferColorStyles
5030
- } = useBackgroundColor(computed(() => props.bufferColor || props.bgColor || props.color));
5048
+ } = useBackgroundColor(() => props.bufferColor || props.bgColor || props.color);
5031
5049
  const {
5032
5050
  backgroundColorClasses: barColorClasses,
5033
5051
  backgroundColorStyles: barColorStyles
5034
- } = useBackgroundColor(props, 'color');
5052
+ } = useBackgroundColor(() => props.color);
5035
5053
  const {
5036
5054
  roundedClasses
5037
5055
  } = useRounded(props);
@@ -5138,7 +5156,7 @@ const makeLoaderProps = propsFactory({
5138
5156
  }, 'loader');
5139
5157
  function useLoader(props) {
5140
5158
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5141
- const loaderClasses = computed(() => ({
5159
+ const loaderClasses = toRef(() => ({
5142
5160
  [`${name}--loading`]: props.loading
5143
5161
  }));
5144
5162
  return {
@@ -5177,7 +5195,7 @@ const makePositionProps = propsFactory({
5177
5195
  }, 'position');
5178
5196
  function usePosition(props) {
5179
5197
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5180
- const positionClasses = computed(() => {
5198
+ const positionClasses = toRef(() => {
5181
5199
  return props.position ? `${name}--${props.position}` : undefined;
5182
5200
  });
5183
5201
  return {
@@ -5198,12 +5216,12 @@ function useRouter() {
5198
5216
  }
5199
5217
  function useLink(props, attrs) {
5200
5218
  const RouterLink = resolveDynamicComponent('RouterLink');
5201
- const isLink = computed(() => !!(props.href || props.to));
5219
+ const isLink = toRef(() => !!(props.href || props.to));
5202
5220
  const isClickable = computed(() => {
5203
5221
  return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');
5204
5222
  });
5205
5223
  if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {
5206
- const href = toRef(props, 'href');
5224
+ const href = toRef(() => props.href);
5207
5225
  return {
5208
5226
  isLink,
5209
5227
  isClickable,
@@ -5213,12 +5231,12 @@ function useLink(props, attrs) {
5213
5231
  })
5214
5232
  };
5215
5233
  }
5234
+
5216
5235
  // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined
5217
- const linkProps = computed(() => ({
5218
- ...props,
5219
- to: toRef(() => props.to || '')
5220
- }));
5221
- const routerLink = RouterLink.useLink(linkProps.value);
5236
+ const routerLink = RouterLink.useLink({
5237
+ to: toRef(() => props.to || ''),
5238
+ replace: toRef(() => props.replace)
5239
+ });
5222
5240
  // Actual link needs to be undefined when to prop is not used
5223
5241
  const link = computed(() => props.to ? routerLink : undefined);
5224
5242
  const route = useRoute();
@@ -5238,7 +5256,7 @@ function useLink(props, attrs) {
5238
5256
  href,
5239
5257
  linkProps: reactive({
5240
5258
  href,
5241
- 'aria-current': computed(() => isActive.value ? 'page' : undefined)
5259
+ 'aria-current': toRef(() => isActive.value ? 'page' : undefined)
5242
5260
  })
5243
5261
  };
5244
5262
  }
@@ -5687,7 +5705,7 @@ const VBtn = genericComponent()({
5687
5705
  }
5688
5706
  return group?.isSelected.value;
5689
5707
  });
5690
- const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5708
+ const color = toRef(() => isActive.value ? props.activeColor ?? props.color : props.color);
5691
5709
  const variantProps = computed(() => {
5692
5710
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5693
5711
  return {
@@ -5701,7 +5719,7 @@ const VBtn = genericComponent()({
5701
5719
  variantClasses
5702
5720
  } = useVariant(variantProps);
5703
5721
  const isDisabled = computed(() => group?.disabled.value || props.disabled);
5704
- const isElevated = computed(() => {
5722
+ const isElevated = toRef(() => {
5705
5723
  return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);
5706
5724
  });
5707
5725
  const valueAttr = computed(() => {
@@ -5904,15 +5922,11 @@ const VAlert = genericComponent()({
5904
5922
  slots
5905
5923
  } = _ref;
5906
5924
  const isActive = useProxiedModel(props, 'modelValue');
5907
- const icon = computed(() => {
5925
+ const icon = toRef(() => {
5908
5926
  if (props.icon === false) return undefined;
5909
5927
  if (!props.type) return props.icon;
5910
5928
  return props.icon ?? `$${props.type}`;
5911
5929
  });
5912
- const variantProps = computed(() => ({
5913
- color: props.color ?? props.type,
5914
- variant: props.variant
5915
- }));
5916
5930
  const {
5917
5931
  themeClasses
5918
5932
  } = provideTheme(props);
@@ -5920,7 +5934,10 @@ const VAlert = genericComponent()({
5920
5934
  colorClasses,
5921
5935
  colorStyles,
5922
5936
  variantClasses
5923
- } = useVariant(variantProps);
5937
+ } = useVariant(() => ({
5938
+ color: props.color ?? props.type,
5939
+ variant: props.variant
5940
+ }));
5924
5941
  const {
5925
5942
  densityClasses
5926
5943
  } = useDensity(props);
@@ -5942,11 +5959,11 @@ const VAlert = genericComponent()({
5942
5959
  const {
5943
5960
  textColorClasses,
5944
5961
  textColorStyles
5945
- } = useTextColor(toRef(props, 'borderColor'));
5962
+ } = useTextColor(() => props.borderColor);
5946
5963
  const {
5947
5964
  t
5948
5965
  } = useLocale();
5949
- const closeProps = computed(() => ({
5966
+ const closeProps = toRef(() => ({
5950
5967
  'aria-label': t(props.closeLabel),
5951
5968
  onClick(e) {
5952
5969
  isActive.value = false;
@@ -6183,8 +6200,8 @@ const VSelectionControlGroup = genericComponent()({
6183
6200
  } = _ref;
6184
6201
  const modelValue = useProxiedModel(props, 'modelValue');
6185
6202
  const uid = useId();
6186
- const id = computed(() => props.id || `v-selection-control-group-${uid}`);
6187
- const name = computed(() => props.name || id.value);
6203
+ const id = toRef(() => props.id || `v-selection-control-group-${uid}`);
6204
+ const name = toRef(() => props.name || id.value);
6188
6205
  const updateHandlers = new Set();
6189
6206
  provide(VSelectionControlGroupSymbol, {
6190
6207
  modelValue,
@@ -6200,20 +6217,20 @@ const VSelectionControlGroup = genericComponent()({
6200
6217
  });
6201
6218
  provideDefaults({
6202
6219
  [props.defaultsTarget]: {
6203
- color: toRef(props, 'color'),
6204
- disabled: toRef(props, 'disabled'),
6205
- density: toRef(props, 'density'),
6206
- error: toRef(props, 'error'),
6207
- inline: toRef(props, 'inline'),
6220
+ color: toRef(() => props.color),
6221
+ disabled: toRef(() => props.disabled),
6222
+ density: toRef(() => props.density),
6223
+ error: toRef(() => props.error),
6224
+ inline: toRef(() => props.inline),
6208
6225
  modelValue,
6209
- multiple: computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6226
+ multiple: toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6210
6227
  name,
6211
- falseIcon: toRef(props, 'falseIcon'),
6212
- trueIcon: toRef(props, 'trueIcon'),
6213
- readonly: toRef(props, 'readonly'),
6214
- ripple: toRef(props, 'ripple'),
6215
- type: toRef(props, 'type'),
6216
- valueComparator: toRef(props, 'valueComparator')
6228
+ falseIcon: toRef(() => props.falseIcon),
6229
+ trueIcon: toRef(() => props.trueIcon),
6230
+ readonly: toRef(() => props.readonly),
6231
+ ripple: toRef(() => props.ripple),
6232
+ type: toRef(() => props.type),
6233
+ valueComparator: toRef(() => props.valueComparator)
6217
6234
  }
6218
6235
  });
6219
6236
  useRender(() => createVNode("div", {
@@ -6269,16 +6286,16 @@ function useSelectionControl(props) {
6269
6286
  const {
6270
6287
  textColorClasses,
6271
6288
  textColorStyles
6272
- } = useTextColor(computed(() => {
6289
+ } = useTextColor(() => {
6273
6290
  if (props.error || props.disabled) return undefined;
6274
6291
  return model.value ? props.color : props.baseColor;
6275
- }));
6292
+ });
6276
6293
  const {
6277
6294
  backgroundColorClasses,
6278
6295
  backgroundColorStyles
6279
- } = useBackgroundColor(computed(() => {
6296
+ } = useBackgroundColor(() => {
6280
6297
  return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
6281
- }));
6298
+ });
6282
6299
  const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);
6283
6300
  return {
6284
6301
  group,
@@ -6323,8 +6340,8 @@ const VSelectionControl = genericComponent()({
6323
6340
  const isFocused = shallowRef(false);
6324
6341
  const isFocusVisible = shallowRef(false);
6325
6342
  const input = ref();
6326
- const id = computed(() => props.id || `input-${uid}`);
6327
- const isInteractive = computed(() => !props.disabled && !props.readonly);
6343
+ const id = toRef(() => props.id || `input-${uid}`);
6344
+ const isInteractive = toRef(() => !props.disabled && !props.readonly);
6328
6345
  group?.onForceUpdate(() => {
6329
6346
  if (input.value) {
6330
6347
  input.value.checked = model.value;
@@ -6462,10 +6479,10 @@ const VCheckboxBtn = genericComponent()({
6462
6479
  indeterminate.value = false;
6463
6480
  }
6464
6481
  }
6465
- const falseIcon = computed(() => {
6482
+ const falseIcon = toRef(() => {
6466
6483
  return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
6467
6484
  });
6468
- const trueIcon = computed(() => {
6485
+ const trueIcon = toRef(() => {
6469
6486
  return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
6470
6487
  });
6471
6488
  useRender(() => {
@@ -6553,7 +6570,7 @@ const VMessages = genericComponent()({
6553
6570
  const {
6554
6571
  textColorClasses,
6555
6572
  textColorStyles
6556
- } = useTextColor(computed(() => props.color));
6573
+ } = useTextColor(() => props.color);
6557
6574
  useRender(() => createVNode(MaybeTransition, {
6558
6575
  "transition": props.transition,
6559
6576
  "tag": "div",
@@ -6583,7 +6600,7 @@ const makeFocusProps = propsFactory({
6583
6600
  function useFocus(props) {
6584
6601
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
6585
6602
  const isFocused = useProxiedModel(props, 'focused');
6586
- const focusClasses = computed(() => {
6603
+ const focusClasses = toRef(() => {
6587
6604
  return {
6588
6605
  [`${name}--focused`]: isFocused.value
6589
6606
  };
@@ -6622,8 +6639,8 @@ const makeFormProps = propsFactory({
6622
6639
  }, 'form');
6623
6640
  function createForm(props) {
6624
6641
  const model = useProxiedModel(props, 'modelValue');
6625
- const isDisabled = computed(() => props.disabled);
6626
- const isReadonly = computed(() => props.readonly);
6642
+ const isDisabled = toRef(() => props.disabled);
6643
+ const isReadonly = toRef(() => props.readonly);
6627
6644
  const isValidating = shallowRef(false);
6628
6645
  const items = ref([]);
6629
6646
  const errors = ref([]);
@@ -6713,7 +6730,7 @@ function createForm(props) {
6713
6730
  isValidating,
6714
6731
  isValid: model,
6715
6732
  items,
6716
- validateOn: toRef(props, 'validateOn')
6733
+ validateOn: toRef(() => props.validateOn)
6717
6734
  });
6718
6735
  return {
6719
6736
  errors,
@@ -7023,10 +7040,10 @@ const VInput = genericComponent()({
7023
7040
  resetValidation,
7024
7041
  validate
7025
7042
  }));
7026
- const color = computed(() => {
7043
+ const color = toRef(() => {
7027
7044
  return props.error || props.disabled ? undefined : props.focused ? props.color : props.baseColor;
7028
7045
  });
7029
- const iconColor = computed(() => {
7046
+ const iconColor = toRef(() => {
7030
7047
  if (!props.iconColor) return undefined;
7031
7048
  return props.iconColor === true ? color.value : props.iconColor;
7032
7049
  });
@@ -7116,7 +7133,6 @@ const VCheckbox = genericComponent()({
7116
7133
  blur
7117
7134
  } = useFocus(props);
7118
7135
  const uid = useId();
7119
- const id = computed(() => props.id || `checkbox-${uid}`);
7120
7136
  useRender(() => {
7121
7137
  const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
7122
7138
  const inputProps = VInput.filterProps(props);
@@ -7126,7 +7142,7 @@ const VCheckbox = genericComponent()({
7126
7142
  }, rootAttrs, inputProps, {
7127
7143
  "modelValue": model.value,
7128
7144
  "onUpdate:modelValue": $event => model.value = $event,
7129
- "id": id.value,
7145
+ "id": props.id || `checkbox-${uid}`,
7130
7146
  "focused": isFocused.value,
7131
7147
  "style": props.style
7132
7148
  }), {
@@ -7310,7 +7326,7 @@ function useDisplay() {
7310
7326
  return false;
7311
7327
  }
7312
7328
  });
7313
- const displayClasses = computed(() => {
7329
+ const displayClasses = toRef(() => {
7314
7330
  if (!name) return {};
7315
7331
  return {
7316
7332
  [`${name}--mobile`]: mobile.value
@@ -7425,7 +7441,7 @@ function useGoTo() {
7425
7441
  const goTo = {
7426
7442
  ...goToInstance,
7427
7443
  // can be set via VLocaleProvider
7428
- rtl: computed(() => goToInstance.rtl.value || isRtl.value)
7444
+ rtl: toRef(() => goToInstance.rtl.value || isRtl.value)
7429
7445
  };
7430
7446
  async function go(target, options) {
7431
7447
  return scrollTo(target, mergeDeep(_options, options), false, goTo);
@@ -7917,11 +7933,11 @@ const VChipGroup = genericComponent()({
7917
7933
  } = useGroup(props, VChipGroupSymbol);
7918
7934
  provideDefaults({
7919
7935
  VChip: {
7920
- baseColor: toRef(props, 'baseColor'),
7921
- color: toRef(props, 'color'),
7922
- disabled: toRef(props, 'disabled'),
7923
- filter: toRef(props, 'filter'),
7924
- variant: toRef(props, 'variant')
7936
+ baseColor: toRef(() => props.baseColor),
7937
+ color: toRef(() => props.color),
7938
+ disabled: toRef(() => props.disabled),
7939
+ filter: toRef(() => props.filter),
7940
+ variant: toRef(() => props.variant)
7925
7941
  }
7926
7942
  });
7927
7943
  useRender(() => {
@@ -8047,9 +8063,9 @@ const VChip = genericComponent()({
8047
8063
  const isActive = useProxiedModel(props, 'modelValue');
8048
8064
  const group = useGroupItem(props, VChipGroupSymbol, false);
8049
8065
  const link = useLink(props, attrs);
8050
- const isLink = computed(() => props.link !== false && link.isLink.value);
8066
+ const isLink = toRef(() => props.link !== false && link.isLink.value);
8051
8067
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8052
- const closeProps = computed(() => ({
8068
+ const closeProps = toRef(() => ({
8053
8069
  'aria-label': t(props.closeLabel),
8054
8070
  onClick(e) {
8055
8071
  e.preventDefault();
@@ -8058,18 +8074,17 @@ const VChip = genericComponent()({
8058
8074
  emit('click:close', e);
8059
8075
  }
8060
8076
  }));
8061
- const variantProps = computed(() => {
8077
+ const {
8078
+ colorClasses,
8079
+ colorStyles,
8080
+ variantClasses
8081
+ } = useVariant(() => {
8062
8082
  const showColor = !group || group.isSelected.value;
8063
8083
  return {
8064
8084
  color: showColor ? props.color ?? props.baseColor : props.baseColor,
8065
8085
  variant: props.variant
8066
8086
  };
8067
8087
  });
8068
- const {
8069
- colorClasses,
8070
- colorStyles,
8071
- variantClasses
8072
- } = useVariant(variantProps);
8073
8088
  function onClick(e) {
8074
8089
  emit('click', e);
8075
8090
  if (!isClickable.value) return;
@@ -8736,8 +8751,8 @@ const useNested = props => {
8736
8751
  id: shallowRef(),
8737
8752
  root: {
8738
8753
  opened,
8739
- activatable: toRef(props, 'activatable'),
8740
- selectable: toRef(props, 'selectable'),
8754
+ activatable: toRef(() => props.activatable),
8755
+ selectable: toRef(() => props.selectable),
8741
8756
  activated,
8742
8757
  selected,
8743
8758
  selectedValues: computed(() => {
@@ -8866,7 +8881,7 @@ const useNested = props => {
8866
8881
  const useNestedItem = (id, isGroup) => {
8867
8882
  const parent = inject$1(VNestedSymbol, emptyNested);
8868
8883
  const uidSymbol = Symbol('nested item');
8869
- const computedId = computed(() => id.value !== undefined ? id.value : uidSymbol);
8884
+ const computedId = computed(() => toValue(id) ?? uidSymbol);
8870
8885
  const item = {
8871
8886
  ...parent,
8872
8887
  id: computedId,
@@ -8942,7 +8957,7 @@ const VListGroup = genericComponent()({
8942
8957
  isOpen,
8943
8958
  open,
8944
8959
  id: _id
8945
- } = useNestedItem(toRef(props, 'value'), true);
8960
+ } = useNestedItem(() => props.value, true);
8946
8961
  const id = computed(() => `v-list-group--id-${String(_id.value)}`);
8947
8962
  const list = useList();
8948
8963
  const {
@@ -9116,12 +9131,12 @@ const VListItem = genericComponent()({
9116
9131
  } = useNestedItem(id, false);
9117
9132
  const list = useList();
9118
9133
  const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9119
- const isLink = computed(() => props.link !== false && link.isLink.value);
9134
+ const isLink = toRef(() => props.link !== false && link.isLink.value);
9120
9135
  const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9121
9136
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9122
- const roundedProps = computed(() => props.rounded || props.nav);
9123
- const color = computed(() => props.color ?? props.activeColor);
9124
- const variantProps = computed(() => ({
9137
+ const roundedProps = toRef(() => props.rounded || props.nav);
9138
+ const color = toRef(() => props.color ?? props.activeColor);
9139
+ const variantProps = toRef(() => ({
9125
9140
  color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
9126
9141
  variant: props.variant
9127
9142
  }));
@@ -9164,7 +9179,7 @@ const VListItem = genericComponent()({
9164
9179
  const {
9165
9180
  roundedClasses
9166
9181
  } = useRounded(roundedProps);
9167
- const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9182
+ const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9168
9183
  const slotProps = computed(() => ({
9169
9184
  isActive: isActive.value,
9170
9185
  select,
@@ -9334,7 +9349,7 @@ const VListSubheader = genericComponent()({
9334
9349
  const {
9335
9350
  textColorClasses,
9336
9351
  textColorStyles
9337
- } = useTextColor(toRef(props, 'color'));
9352
+ } = useTextColor(() => props.color);
9338
9353
  useRender(() => {
9339
9354
  const hasText = !!(slots.default || props.title);
9340
9355
  return createVNode(props.tag, {
@@ -9379,7 +9394,7 @@ const VDivider = genericComponent()({
9379
9394
  const {
9380
9395
  textColorClasses,
9381
9396
  textColorStyles
9382
- } = useTextColor(toRef(props, 'color'));
9397
+ } = useTextColor(() => props.color);
9383
9398
  const dividerStyles = computed(() => {
9384
9399
  const styles = {};
9385
9400
  if (props.length) {
@@ -9741,7 +9756,7 @@ const VList = genericComponent()({
9741
9756
  const {
9742
9757
  backgroundColorClasses,
9743
9758
  backgroundColorStyles
9744
- } = useBackgroundColor(toRef(props, 'bgColor'));
9759
+ } = useBackgroundColor(() => props.bgColor);
9745
9760
  const {
9746
9761
  borderClasses
9747
9762
  } = useBorder(props);
@@ -9764,30 +9779,30 @@ const VList = genericComponent()({
9764
9779
  select,
9765
9780
  getPath
9766
9781
  } = useNested(props);
9767
- const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9768
- const activeColor = toRef(props, 'activeColor');
9769
- const baseColor = toRef(props, 'baseColor');
9770
- const color = toRef(props, 'color');
9782
+ const lineClasses = toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9783
+ const activeColor = toRef(() => props.activeColor);
9784
+ const baseColor = toRef(() => props.baseColor);
9785
+ const color = toRef(() => props.color);
9771
9786
  createList();
9772
9787
  provideDefaults({
9773
9788
  VListGroup: {
9774
9789
  activeColor,
9775
9790
  baseColor,
9776
9791
  color,
9777
- expandIcon: toRef(props, 'expandIcon'),
9778
- collapseIcon: toRef(props, 'collapseIcon')
9792
+ expandIcon: toRef(() => props.expandIcon),
9793
+ collapseIcon: toRef(() => props.collapseIcon)
9779
9794
  },
9780
9795
  VListItem: {
9781
- activeClass: toRef(props, 'activeClass'),
9796
+ activeClass: toRef(() => props.activeClass),
9782
9797
  activeColor,
9783
9798
  baseColor,
9784
9799
  color,
9785
- density: toRef(props, 'density'),
9786
- disabled: toRef(props, 'disabled'),
9787
- lines: toRef(props, 'lines'),
9788
- nav: toRef(props, 'nav'),
9789
- slim: toRef(props, 'slim'),
9790
- variant: toRef(props, 'variant')
9800
+ density: toRef(() => props.density),
9801
+ disabled: toRef(() => props.disabled),
9802
+ lines: toRef(() => props.lines),
9803
+ nav: toRef(() => props.nav),
9804
+ slim: toRef(() => props.slim),
9805
+ variant: toRef(() => props.variant)
9791
9806
  }
9792
9807
  });
9793
9808
  const isFocused = shallowRef(false);
@@ -10099,8 +10114,27 @@ function connectedLocationStrategy(data, props, contentStyles) {
10099
10114
  return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];
10100
10115
  });
10101
10116
  let observe = false;
10117
+ let lastFrame = -1;
10118
+ const flipped = new CircularBuffer(4);
10102
10119
  const observer = new ResizeObserver(() => {
10103
- if (observe) updateLocation();
10120
+ if (!observe) return;
10121
+
10122
+ // Detect consecutive frames
10123
+ requestAnimationFrame(newTime => {
10124
+ if (newTime !== lastFrame) flipped.clear();
10125
+ requestAnimationFrame(newNewTime => {
10126
+ lastFrame = newNewTime;
10127
+ });
10128
+ });
10129
+ if (flipped.isFull) {
10130
+ const values = flipped.values();
10131
+ if (deepEqual(values.at(-1), values.at(-3))) {
10132
+ // Flipping is causing a container resize loop
10133
+ return;
10134
+ }
10135
+ }
10136
+ const result = updateLocation();
10137
+ if (result) flipped.push(result.flipped);
10104
10138
  });
10105
10139
  watch([data.target, data.contentEl], (_ref, _ref2) => {
10106
10140
  let [newTarget, newContentEl] = _ref;
@@ -10115,13 +10149,22 @@ function connectedLocationStrategy(data, props, contentStyles) {
10115
10149
  onScopeDispose(() => {
10116
10150
  observer.disconnect();
10117
10151
  });
10152
+ let targetBox = new Box({
10153
+ x: 0,
10154
+ y: 0,
10155
+ width: 0,
10156
+ height: 0
10157
+ });
10118
10158
 
10119
10159
  // eslint-disable-next-line max-statements
10120
10160
  function updateLocation() {
10121
10161
  observe = false;
10122
10162
  requestAnimationFrame(() => observe = true);
10123
10163
  if (!data.target.value || !data.contentEl.value) return;
10124
- const targetBox = getTargetBox(data.target.value);
10164
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10165
+ targetBox = getTargetBox(data.target.value);
10166
+ } // Otherwise target element is hidden, use last known value
10167
+
10125
10168
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10126
10169
  const scrollParents = getScrollParents(data.contentEl.value);
10127
10170
  const viewportMargin = 12;
@@ -10306,7 +10349,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
10306
10349
  });
10307
10350
  return {
10308
10351
  available,
10309
- contentBox
10352
+ contentBox,
10353
+ flipped
10310
10354
  };
10311
10355
  }
10312
10356
  watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
@@ -10831,7 +10875,7 @@ const makeLazyProps = propsFactory({
10831
10875
  }, 'lazy');
10832
10876
  function useLazy(props, active) {
10833
10877
  const isBooted = shallowRef(false);
10834
- const hasContent = computed(() => isBooted.value || props.eager || active.value);
10878
+ const hasContent = toRef(() => isBooted.value || props.eager || active.value);
10835
10879
  watch(active, () => isBooted.value = true);
10836
10880
  function onAfterLeave() {
10837
10881
  if (!props.eager) isBooted.value = false;
@@ -10868,10 +10912,10 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10868
10912
  activeChildren: new Set()
10869
10913
  });
10870
10914
  provide(StackSymbol, stack);
10871
- const _zIndex = shallowRef(Number(zIndex.value));
10915
+ const _zIndex = shallowRef(Number(toValue(zIndex)));
10872
10916
  useToggleScope(isActive, () => {
10873
10917
  const lastZIndex = globalStack.at(-1)?.[1];
10874
- _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10918
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(toValue(zIndex));
10875
10919
  if (createStackEntry) {
10876
10920
  globalStack.push([vm.uid, _zIndex.value]);
10877
10921
  }
@@ -10891,11 +10935,11 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10891
10935
  setTimeout(() => globalTop.value = _isTop);
10892
10936
  });
10893
10937
  }
10894
- const localTop = computed(() => !stack.activeChildren.size);
10938
+ const localTop = toRef(() => !stack.activeChildren.size);
10895
10939
  return {
10896
10940
  globalTop: readonly(globalTop),
10897
10941
  localTop,
10898
- stackStyles: computed(() => ({
10942
+ stackStyles: toRef(() => ({
10899
10943
  zIndex: _zIndex.value
10900
10944
  }))
10901
10945
  };
@@ -11112,14 +11156,14 @@ const VOverlay = genericComponent()({
11112
11156
  hasContent,
11113
11157
  onAfterLeave: _onAfterLeave
11114
11158
  } = useLazy(props, isActive);
11115
- const scrimColor = useBackgroundColor(computed(() => {
11159
+ const scrimColor = useBackgroundColor(() => {
11116
11160
  return typeof props.scrim === 'string' ? props.scrim : null;
11117
- }));
11161
+ });
11118
11162
  const {
11119
11163
  globalTop,
11120
11164
  localTop,
11121
11165
  stackStyles
11122
- } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack);
11166
+ } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);
11123
11167
  const {
11124
11168
  activatorEl,
11125
11169
  activatorRef,
@@ -11445,7 +11489,7 @@ const VMenu = genericComponent()({
11445
11489
  isRtl
11446
11490
  } = useRtl();
11447
11491
  const uid = useId();
11448
- const id = computed(() => props.id || `v-menu-${uid}`);
11492
+ const id = toRef(() => props.id || `v-menu-${uid}`);
11449
11493
  const overlay = ref();
11450
11494
  const parent = inject$1(VMenuSymbol, null);
11451
11495
  const openChildren = shallowRef(new Set());
@@ -11613,7 +11657,7 @@ const VCounter = genericComponent()({
11613
11657
  let {
11614
11658
  slots
11615
11659
  } = _ref;
11616
- const counter = computed(() => {
11660
+ const counter = toRef(() => {
11617
11661
  return props.max ? `${props.value} / ${props.max}` : String(props.value);
11618
11662
  });
11619
11663
  useRender(() => createVNode(MaybeTransition, {
@@ -11740,12 +11784,12 @@ const VField = genericComponent()({
11740
11784
  const {
11741
11785
  rtlClasses
11742
11786
  } = useRtl();
11743
- const isActive = computed(() => props.dirty || props.active);
11744
- const hasLabel = computed(() => !!(props.label || slots.label));
11745
- const hasFloatingLabel = computed(() => !props.singleLine && hasLabel.value);
11787
+ const isActive = toRef(() => props.dirty || props.active);
11788
+ const hasLabel = toRef(() => !!(props.label || slots.label));
11789
+ const hasFloatingLabel = toRef(() => !props.singleLine && hasLabel.value);
11746
11790
  const uid = useId();
11747
11791
  const id = computed(() => props.id || `input-${uid}`);
11748
- const messagesId = computed(() => `${id.value}-messages`);
11792
+ const messagesId = toRef(() => `${id.value}-messages`);
11749
11793
  const labelRef = ref();
11750
11794
  const floatingLabelRef = ref();
11751
11795
  const controlRef = ref();
@@ -11760,7 +11804,7 @@ const VField = genericComponent()({
11760
11804
  const {
11761
11805
  backgroundColorClasses,
11762
11806
  backgroundColorStyles
11763
- } = useBackgroundColor(toRef(props, 'bgColor'));
11807
+ } = useBackgroundColor(() => props.bgColor);
11764
11808
  const {
11765
11809
  textColorClasses,
11766
11810
  textColorStyles
@@ -12487,7 +12531,7 @@ const VVirtualScroll = genericComponent()({
12487
12531
  paddingTop,
12488
12532
  paddingBottom,
12489
12533
  computedItems
12490
- } = useVirtual(props, toRef(props, 'items'));
12534
+ } = useVirtual(props, toRef(() => props.items));
12491
12535
  useToggleScope(() => props.renderless, () => {
12492
12536
  function handleListeners() {
12493
12537
  let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -12724,7 +12768,7 @@ const VSelect = genericComponent()({
12724
12768
  _menu.value = v;
12725
12769
  }
12726
12770
  });
12727
- const label = computed(() => menu.value ? props.closeText : props.openText);
12771
+ const label = toRef(() => menu.value ? props.closeText : props.openText);
12728
12772
  const computedMenuProps = computed(() => {
12729
12773
  return {
12730
12774
  ...props.menuProps,
@@ -12909,6 +12953,7 @@ const VSelect = genericComponent()({
12909
12953
  "onFocusin": onFocusin,
12910
12954
  "tabindex": "-1",
12911
12955
  "aria-live": "polite",
12956
+ "aria-label": `${props.label}-list`,
12912
12957
  "color": props.itemColor ?? props.color
12913
12958
  }, listEvents, props.listProps), {
12914
12959
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
@@ -13050,6 +13095,7 @@ const VSelect = genericComponent()({
13050
13095
  // Composables
13051
13096
  const defaultFilter = (value, query, item) => {
13052
13097
  if (value == null || query == null) return -1;
13098
+ if (!query.length) return 0;
13053
13099
  value = value.toString().toLocaleLowerCase();
13054
13100
  query = query.toString().toLocaleLowerCase();
13055
13101
  const result = [];
@@ -13062,7 +13108,7 @@ const defaultFilter = (value, query, item) => {
13062
13108
  };
13063
13109
  function normaliseMatch(match, query) {
13064
13110
  if (match == null || typeof match === 'boolean' || match === -1) return;
13065
- if (typeof match === 'number') return [[match, query.length]];
13111
+ if (typeof match === 'number') return [[match, match + query.length]];
13066
13112
  if (Array.isArray(match[0])) return match;
13067
13113
  return [match];
13068
13114
  }
@@ -13225,7 +13271,6 @@ const VAutocomplete = genericComponent()({
13225
13271
  const vMenuRef = ref();
13226
13272
  const vVirtualScrollRef = ref();
13227
13273
  const selectionIndex = shallowRef(-1);
13228
- const color = computed(() => vTextFieldRef.value?.color);
13229
13274
  const {
13230
13275
  items,
13231
13276
  transformIn,
@@ -13234,7 +13279,7 @@ const VAutocomplete = genericComponent()({
13234
13279
  const {
13235
13280
  textColorClasses,
13236
13281
  textColorStyles
13237
- } = useTextColor(color);
13282
+ } = useTextColor(() => vTextFieldRef.value?.color);
13238
13283
  const search = useProxiedModel(props, 'search', '');
13239
13284
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13240
13285
  const transformed = transformOut(v);
@@ -13683,7 +13728,7 @@ const VBadge = genericComponent()({
13683
13728
  const {
13684
13729
  backgroundColorClasses,
13685
13730
  backgroundColorStyles
13686
- } = useBackgroundColor(toRef(props, 'color'));
13731
+ } = useBackgroundColor(() => props.color);
13687
13732
  const {
13688
13733
  roundedClasses
13689
13734
  } = useRounded(props);
@@ -13693,7 +13738,7 @@ const VBadge = genericComponent()({
13693
13738
  const {
13694
13739
  textColorClasses,
13695
13740
  textColorStyles
13696
- } = useTextColor(toRef(props, 'textColor'));
13741
+ } = useTextColor(() => props.textColor);
13697
13742
  const {
13698
13743
  themeClasses
13699
13744
  } = useTheme();
@@ -13805,7 +13850,7 @@ const VBanner = genericComponent()({
13805
13850
  const {
13806
13851
  backgroundColorClasses,
13807
13852
  backgroundColorStyles
13808
- } = useBackgroundColor(props, 'bgColor');
13853
+ } = useBackgroundColor(() => props.bgColor);
13809
13854
  const {
13810
13855
  borderClasses
13811
13856
  } = useBorder(props);
@@ -13834,8 +13879,8 @@ const VBanner = genericComponent()({
13834
13879
  const {
13835
13880
  themeClasses
13836
13881
  } = provideTheme(props);
13837
- const color = toRef(props, 'color');
13838
- const density = toRef(props, 'density');
13882
+ const color = toRef(() => props.color);
13883
+ const density = toRef(() => props.density);
13839
13884
  provideDefaults({
13840
13885
  VBannerActions: {
13841
13886
  color,
@@ -13944,7 +13989,7 @@ const VBottomNavigation = genericComponent()({
13944
13989
  const {
13945
13990
  backgroundColorClasses,
13946
13991
  backgroundColorStyles
13947
- } = useBackgroundColor(toRef(props, 'bgColor'));
13992
+ } = useBackgroundColor(() => props.bgColor);
13948
13993
  const {
13949
13994
  densityClasses
13950
13995
  } = useDensity(props);
@@ -13964,19 +14009,19 @@ const VBottomNavigation = genericComponent()({
13964
14009
  } = useLayoutItem({
13965
14010
  id: props.name,
13966
14011
  order: computed(() => parseInt(props.order, 10)),
13967
- position: computed(() => 'bottom'),
13968
- layoutSize: computed(() => isActive.value ? height.value : 0),
14012
+ position: toRef(() => 'bottom'),
14013
+ layoutSize: toRef(() => isActive.value ? height.value : 0),
13969
14014
  elementSize: height,
13970
14015
  active: isActive,
13971
- absolute: toRef(props, 'absolute')
14016
+ absolute: toRef(() => props.absolute)
13972
14017
  });
13973
14018
  useGroup(props, VBtnToggleSymbol);
13974
14019
  provideDefaults({
13975
14020
  VBtn: {
13976
- baseColor: toRef(props, 'baseColor'),
13977
- color: toRef(props, 'color'),
13978
- density: toRef(props, 'density'),
13979
- stacked: computed(() => props.mode !== 'horizontal'),
14021
+ baseColor: toRef(() => props.baseColor),
14022
+ color: toRef(() => props.color),
14023
+ density: toRef(() => props.density),
14024
+ stacked: toRef(() => props.mode !== 'horizontal'),
13980
14025
  variant: 'text'
13981
14026
  }
13982
14027
  }, {
@@ -14212,11 +14257,10 @@ const VBreadcrumbsItem = genericComponent()({
14212
14257
  } = _ref;
14213
14258
  const link = useLink(props, attrs);
14214
14259
  const isActive = computed(() => props.active || link.isActive?.value);
14215
- const color = computed(() => isActive.value ? props.activeColor : props.color);
14216
14260
  const {
14217
14261
  textColorClasses,
14218
14262
  textColorStyles
14219
- } = useTextColor(color);
14263
+ } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14220
14264
  useRender(() => {
14221
14265
  return createVNode(props.tag, {
14222
14266
  "class": ['v-breadcrumbs-item', {
@@ -14271,7 +14315,7 @@ const VBreadcrumbs = genericComponent()({
14271
14315
  const {
14272
14316
  backgroundColorClasses,
14273
14317
  backgroundColorStyles
14274
- } = useBackgroundColor(toRef(props, 'bgColor'));
14318
+ } = useBackgroundColor(() => props.bgColor);
14275
14319
  const {
14276
14320
  densityClasses
14277
14321
  } = useDensity(props);
@@ -14280,13 +14324,13 @@ const VBreadcrumbs = genericComponent()({
14280
14324
  } = useRounded(props);
14281
14325
  provideDefaults({
14282
14326
  VBreadcrumbsDivider: {
14283
- divider: toRef(props, 'divider')
14327
+ divider: toRef(() => props.divider)
14284
14328
  },
14285
14329
  VBreadcrumbsItem: {
14286
- activeClass: toRef(props, 'activeClass'),
14287
- activeColor: toRef(props, 'activeColor'),
14288
- color: toRef(props, 'color'),
14289
- disabled: toRef(props, 'disabled')
14330
+ activeClass: toRef(() => props.activeClass),
14331
+ activeColor: toRef(() => props.activeColor),
14332
+ color: toRef(() => props.color),
14333
+ disabled: toRef(() => props.disabled)
14290
14334
  }
14291
14335
  });
14292
14336
  const items = computed(() => props.items.map(item => {
@@ -14609,10 +14653,10 @@ const VCard = genericComponent()({
14609
14653
  roundedClasses
14610
14654
  } = useRounded(props);
14611
14655
  const link = useLink(props, attrs);
14612
- const isLink = computed(() => props.link !== false && link.isLink.value);
14613
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));
14614
14656
  useRender(() => {
14615
- const Tag = isLink.value ? 'a' : props.tag;
14657
+ const isLink = props.link !== false && link.isLink.value;
14658
+ const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
14659
+ const Tag = isLink ? 'a' : props.tag;
14616
14660
  const hasTitle = !!(slots.title || props.title != null);
14617
14661
  const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
14618
14662
  const hasHeader = hasTitle || hasSubtitle;
@@ -14626,10 +14670,10 @@ const VCard = genericComponent()({
14626
14670
  'v-card--disabled': props.disabled,
14627
14671
  'v-card--flat': props.flat,
14628
14672
  'v-card--hover': props.hover && !(props.disabled || props.flat),
14629
- 'v-card--link': isClickable.value
14673
+ 'v-card--link': isClickable
14630
14674
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14631
14675
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14632
- "onClick": isClickable.value && link.navigate,
14676
+ "onClick": isClickable && link.navigate,
14633
14677
  "tabindex": props.disabled ? -1 : undefined
14634
14678
  }, link.linkProps), {
14635
14679
  default: () => [hasImage && createVNode("div", {
@@ -14674,8 +14718,8 @@ const VCard = genericComponent()({
14674
14718
  default: () => [slots.text?.() ?? props.text]
14675
14719
  }), slots.default?.(), slots.actions && createVNode(VCardActions, null, {
14676
14720
  default: slots.actions
14677
- }), genOverlays(isClickable.value, 'v-card')]
14678
- }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
14721
+ }), genOverlays(isClickable, 'v-card')]
14722
+ }), [[resolveDirective("ripple"), isClickable && props.ripple]]);
14679
14723
  });
14680
14724
  return {};
14681
14725
  }
@@ -14888,8 +14932,8 @@ const VWindow = genericComponent()({
14888
14932
  transitionHeight,
14889
14933
  rootRef
14890
14934
  });
14891
- const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0);
14892
- const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14935
+ const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0);
14936
+ const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14893
14937
  function prev() {
14894
14938
  canMoveBack.value && group.prev();
14895
14939
  }
@@ -15791,7 +15835,7 @@ const useSlider = _ref => {
15791
15835
  const {
15792
15836
  isRtl
15793
15837
  } = useRtl();
15794
- const isReversed = toRef(props, 'reverse');
15838
+ const isReversed = toRef(() => props.reverse);
15795
15839
  const vertical = computed(() => props.direction === 'vertical');
15796
15840
  const indexFromEnd = computed(() => vertical.value !== isReversed.value);
15797
15841
  const {
@@ -15805,7 +15849,7 @@ const useSlider = _ref => {
15805
15849
  const tickSize = computed(() => parseInt(props.tickSize, 10));
15806
15850
  const trackSize = computed(() => parseInt(props.trackSize, 10));
15807
15851
  const numTicks = computed(() => (max.value - min.value) / step.value);
15808
- const disabled = toRef(props, 'disabled');
15852
+ const disabled = toRef(() => props.disabled);
15809
15853
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
15810
15854
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
15811
15855
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -15907,7 +15951,7 @@ const useSlider = _ref => {
15907
15951
  const percentage = (val - min.value) / (max.value - min.value) * 100;
15908
15952
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
15909
15953
  };
15910
- const showTicks = toRef(props, 'showTicks');
15954
+ const showTicks = toRef(() => props.showTicks);
15911
15955
  const parsedTicks = computed(() => {
15912
15956
  if (!showTicks.value) return [];
15913
15957
  if (!props.ticks) {
@@ -15938,11 +15982,11 @@ const useSlider = _ref => {
15938
15982
  }));
15939
15983
  const data = {
15940
15984
  activeThumbRef,
15941
- color: toRef(props, 'color'),
15985
+ color: toRef(() => props.color),
15942
15986
  decimals,
15943
15987
  disabled,
15944
- direction: toRef(props, 'direction'),
15945
- elevation: toRef(props, 'elevation'),
15988
+ direction: toRef(() => props.direction),
15989
+ elevation: toRef(() => props.elevation),
15946
15990
  hasLabels,
15947
15991
  isReversed,
15948
15992
  indexFromEnd,
@@ -15955,16 +15999,16 @@ const useSlider = _ref => {
15955
15999
  parsedTicks,
15956
16000
  parseMouseMove,
15957
16001
  position,
15958
- readonly: toRef(props, 'readonly'),
15959
- rounded: toRef(props, 'rounded'),
16002
+ readonly: toRef(() => props.readonly),
16003
+ rounded: toRef(() => props.rounded),
15960
16004
  roundValue,
15961
16005
  showTicks,
15962
16006
  startOffset,
15963
16007
  step,
15964
16008
  thumbSize,
15965
16009
  thumbColor,
15966
- thumbLabel: toRef(props, 'thumbLabel'),
15967
- ticks: toRef(props, 'ticks'),
16010
+ thumbLabel: toRef(() => props.thumbLabel),
16011
+ ticks: toRef(() => props.ticks),
15968
16012
  tickSize,
15969
16013
  trackColor,
15970
16014
  trackContainerRef,
@@ -16883,7 +16927,7 @@ const VSheet = genericComponent()({
16883
16927
  const {
16884
16928
  backgroundColorClasses,
16885
16929
  backgroundColorStyles
16886
- } = useBackgroundColor(toRef(props, 'color'));
16930
+ } = useBackgroundColor(() => props.color);
16887
16931
  const {
16888
16932
  borderClasses
16889
16933
  } = useBorder(props);
@@ -16930,7 +16974,7 @@ const VPicker = genericComponent()({
16930
16974
  const {
16931
16975
  backgroundColorClasses,
16932
16976
  backgroundColorStyles
16933
- } = useBackgroundColor(toRef(props, 'color'));
16977
+ } = useBackgroundColor(() => props.color);
16934
16978
  useRender(() => {
16935
16979
  const sheetProps = VSheet.filterProps(props);
16936
16980
  const hasTitle = !!(props.title || slots.title);
@@ -16977,165 +17021,81 @@ const VPicker = genericComponent()({
16977
17021
 
16978
17022
  // Types
16979
17023
 
16980
- const firstDay = {
16981
- '001': 1,
16982
- AD: 1,
16983
- AE: 6,
16984
- AF: 6,
16985
- AG: 0,
16986
- AI: 1,
16987
- AL: 1,
16988
- AM: 1,
16989
- AN: 1,
16990
- AR: 1,
16991
- AS: 0,
16992
- AT: 1,
16993
- AU: 1,
16994
- AX: 1,
16995
- AZ: 1,
16996
- BA: 1,
16997
- BD: 0,
16998
- BE: 1,
16999
- BG: 1,
17000
- BH: 6,
17001
- BM: 1,
17002
- BN: 1,
17003
- BR: 0,
17004
- BS: 0,
17005
- BT: 0,
17006
- BW: 0,
17007
- BY: 1,
17008
- BZ: 0,
17009
- CA: 0,
17010
- CH: 1,
17011
- CL: 1,
17012
- CM: 1,
17013
- CN: 1,
17014
- CO: 0,
17015
- CR: 1,
17016
- CY: 1,
17017
- CZ: 1,
17018
- DE: 1,
17019
- DJ: 6,
17020
- DK: 1,
17021
- DM: 0,
17022
- DO: 0,
17023
- DZ: 6,
17024
- EC: 1,
17025
- EE: 1,
17026
- EG: 6,
17027
- ES: 1,
17028
- ET: 0,
17029
- FI: 1,
17030
- FJ: 1,
17031
- FO: 1,
17032
- FR: 1,
17033
- GB: 1,
17034
- 'GB-alt-variant': 0,
17035
- GE: 1,
17036
- GF: 1,
17037
- GP: 1,
17038
- GR: 1,
17039
- GT: 0,
17040
- GU: 0,
17041
- HK: 0,
17042
- HN: 0,
17043
- HR: 1,
17044
- HU: 1,
17045
- ID: 0,
17046
- IE: 1,
17047
- IL: 0,
17048
- IN: 0,
17049
- IQ: 6,
17050
- IR: 6,
17051
- IS: 1,
17052
- IT: 1,
17053
- JM: 0,
17054
- JO: 6,
17055
- JP: 0,
17056
- KE: 0,
17057
- KG: 1,
17058
- KH: 0,
17059
- KR: 0,
17060
- KW: 6,
17061
- KZ: 1,
17062
- LA: 0,
17063
- LB: 1,
17064
- LI: 1,
17065
- LK: 1,
17066
- LT: 1,
17067
- LU: 1,
17068
- LV: 1,
17069
- LY: 6,
17070
- MC: 1,
17071
- MD: 1,
17072
- ME: 1,
17073
- MH: 0,
17074
- MK: 1,
17075
- MM: 0,
17076
- MN: 1,
17077
- MO: 0,
17078
- MQ: 1,
17079
- MT: 0,
17080
- MV: 5,
17081
- MX: 0,
17082
- MY: 1,
17083
- MZ: 0,
17084
- NI: 0,
17085
- NL: 1,
17086
- NO: 1,
17087
- NP: 0,
17088
- NZ: 1,
17089
- OM: 6,
17090
- PA: 0,
17091
- PE: 0,
17092
- PH: 0,
17093
- PK: 0,
17094
- PL: 1,
17095
- PR: 0,
17096
- PT: 0,
17097
- PY: 0,
17098
- QA: 6,
17099
- RE: 1,
17100
- RO: 1,
17101
- RS: 1,
17102
- RU: 1,
17103
- SA: 0,
17104
- SD: 6,
17105
- SE: 1,
17106
- SG: 0,
17107
- SI: 1,
17108
- SK: 1,
17109
- SM: 1,
17110
- SV: 0,
17111
- SY: 6,
17112
- TH: 0,
17113
- TJ: 1,
17114
- TM: 1,
17115
- TR: 1,
17116
- TT: 0,
17117
- TW: 0,
17118
- UA: 1,
17119
- UM: 0,
17120
- US: 0,
17121
- UY: 1,
17122
- UZ: 1,
17123
- VA: 1,
17124
- VE: 0,
17125
- VI: 0,
17126
- VN: 1,
17127
- WS: 0,
17128
- XK: 1,
17129
- YE: 0,
17130
- ZA: 0,
17131
- ZW: 0
17132
- };
17024
+ function weekInfo(locale) {
17025
+ // https://simplelocalize.io/data/locales/
17026
+ // then `new Intl.Locale(...).getWeekInfo()`
17027
+ const code = locale.slice(-2).toUpperCase();
17028
+ switch (true) {
17029
+ case locale === 'GB-alt-variant':
17030
+ {
17031
+ return {
17032
+ firstDay: 0,
17033
+ firstWeekSize: 4
17034
+ };
17035
+ }
17036
+ case locale === '001':
17037
+ {
17038
+ return {
17039
+ firstDay: 1,
17040
+ firstWeekSize: 1
17041
+ };
17042
+ }
17043
+ case `AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE
17044
+ KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US
17045
+ VE VI WS YE ZA ZW`.includes(code):
17046
+ {
17047
+ return {
17048
+ firstDay: 0,
17049
+ firstWeekSize: 1
17050
+ };
17051
+ }
17052
+ case `AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV
17053
+ MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(code):
17054
+ {
17055
+ return {
17056
+ firstDay: 1,
17057
+ firstWeekSize: 1
17058
+ };
17059
+ }
17060
+ case `AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS
17061
+ IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(code):
17062
+ {
17063
+ return {
17064
+ firstDay: 1,
17065
+ firstWeekSize: 4
17066
+ };
17067
+ }
17068
+ case `AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY`.includes(code):
17069
+ {
17070
+ return {
17071
+ firstDay: 6,
17072
+ firstWeekSize: 1
17073
+ };
17074
+ }
17075
+ case code === 'MV':
17076
+ {
17077
+ return {
17078
+ firstDay: 5,
17079
+ firstWeekSize: 1
17080
+ };
17081
+ }
17082
+ case code === 'PT':
17083
+ {
17084
+ return {
17085
+ firstDay: 0,
17086
+ firstWeekSize: 4
17087
+ };
17088
+ }
17089
+ default:
17090
+ return null;
17091
+ }
17092
+ }
17133
17093
  function getWeekArray(date, locale, firstDayOfWeek) {
17134
17094
  const weeks = [];
17135
17095
  let currentWeek = [];
17136
17096
  const firstDayOfMonth = startOfMonth(date);
17137
17097
  const lastDayOfMonth = endOfMonth(date);
17138
- const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17098
+ const first = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17139
17099
  const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;
17140
17100
  const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;
17141
17101
  for (let i = 0; i < firstDayWeekIndex; i++) {
@@ -17166,7 +17126,7 @@ function getWeekArray(date, locale, firstDayOfWeek) {
17166
17126
  return weeks;
17167
17127
  }
17168
17128
  function startOfWeek(date, locale, firstDayOfWeek) {
17169
- const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17129
+ const day = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17170
17130
  const d = new Date(date);
17171
17131
  while (d.getDay() !== day) {
17172
17132
  d.setDate(d.getDate() - 1);
@@ -17175,7 +17135,7 @@ function startOfWeek(date, locale, firstDayOfWeek) {
17175
17135
  }
17176
17136
  function endOfWeek(date, locale) {
17177
17137
  const d = new Date(date);
17178
- const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
17138
+ const lastDay = ((weekInfo(locale)?.firstDay ?? 0) + 6) % 7;
17179
17139
  while (d.getDay() !== lastDay) {
17180
17140
  d.setDate(d.getDate() + 1);
17181
17141
  }
@@ -17210,7 +17170,7 @@ function date(value) {
17210
17170
  }
17211
17171
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17212
17172
  function getWeekdays(locale, firstDayOfWeek) {
17213
- const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17173
+ const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17214
17174
  return createRange(7).map(i => {
17215
17175
  const weekday = new Date(sundayJanuarySecond2000);
17216
17176
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
@@ -17458,6 +17418,24 @@ function getYear(date) {
17458
17418
  function getMonth(date) {
17459
17419
  return date.getMonth();
17460
17420
  }
17421
+ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
17422
+ const weekInfoFromLocale = weekInfo(locale);
17423
+ const weekStart = firstDayOfWeek ?? weekInfoFromLocale?.firstDay ?? 0;
17424
+ const minWeekSize = firstWeekMinSize ?? weekInfoFromLocale?.firstWeekSize ?? 1;
17425
+ function firstWeekSize(year) {
17426
+ const yearStart = new Date(year, 0, 1);
17427
+ return 7 - getDiff(yearStart, startOfWeek(yearStart, locale, weekStart), 'days');
17428
+ }
17429
+ let year = getYear(date);
17430
+ const currentWeekEnd = addDays(startOfWeek(date, locale, weekStart), 6);
17431
+ if (year < getYear(currentWeekEnd) && firstWeekSize(year + 1) >= minWeekSize) {
17432
+ year++;
17433
+ }
17434
+ const yearStart = new Date(year, 0, 1);
17435
+ const size = firstWeekSize(year);
17436
+ const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17437
+ return 1 + getDiff(date, d1w1, 'weeks');
17438
+ }
17461
17439
  function getDate(date) {
17462
17440
  return date.getDate();
17463
17441
  }
@@ -17597,10 +17575,12 @@ class VuetifyDateAdapter {
17597
17575
  return addMonths(date, amount);
17598
17576
  }
17599
17577
  getWeekArray(date, firstDayOfWeek) {
17600
- return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17578
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17579
+ return getWeekArray(date, this.locale, firstDay);
17601
17580
  }
17602
17581
  startOfWeek(date, firstDayOfWeek) {
17603
- return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17582
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17583
+ return startOfWeek(date, this.locale, firstDay);
17604
17584
  }
17605
17585
  endOfWeek(date) {
17606
17586
  return endOfWeek(date, this.locale);
@@ -17660,7 +17640,8 @@ class VuetifyDateAdapter {
17660
17640
  return getDiff(date, comparing, unit);
17661
17641
  }
17662
17642
  getWeekdays(firstDayOfWeek) {
17663
- return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17643
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17644
+ return getWeekdays(this.locale, firstDay);
17664
17645
  }
17665
17646
  getYear(date) {
17666
17647
  return getYear(date);
@@ -17668,6 +17649,10 @@ class VuetifyDateAdapter {
17668
17649
  getMonth(date) {
17669
17650
  return getMonth(date);
17670
17651
  }
17652
+ getWeek(date, firstDayOfWeek, firstWeekMinSize) {
17653
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17654
+ return getWeek(date, this.locale, firstDay, firstWeekMinSize);
17655
+ }
17671
17656
  getDate(date) {
17672
17657
  return getDate(date);
17673
17658
  }
@@ -17771,26 +17756,6 @@ function useDate() {
17771
17756
  return createInstance(options, locale);
17772
17757
  }
17773
17758
 
17774
- // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
17775
- function getWeek(adapter, value) {
17776
- const date = adapter.toJsDate(value);
17777
- let year = date.getFullYear();
17778
- let d1w1 = new Date(year, 0, 1);
17779
- if (date < d1w1) {
17780
- year = year - 1;
17781
- d1w1 = new Date(year, 0, 1);
17782
- } else {
17783
- const tv = new Date(year + 1, 0, 1);
17784
- if (date >= tv) {
17785
- year = year + 1;
17786
- d1w1 = tv;
17787
- }
17788
- }
17789
- const diffTime = Math.abs(date.getTime() - d1w1.getTime());
17790
- const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
17791
- return Math.floor(diffDays / 7) + 1;
17792
- }
17793
-
17794
17759
  // Types
17795
17760
 
17796
17761
  const makeVColorPickerProps = propsFactory({
@@ -17994,7 +17959,6 @@ const VCombobox = genericComponent()({
17994
17959
  const vVirtualScrollRef = ref();
17995
17960
  const selectionIndex = shallowRef(-1);
17996
17961
  let cleared = false;
17997
- const color = computed(() => vTextFieldRef.value?.color);
17998
17962
  const {
17999
17963
  items,
18000
17964
  transformIn,
@@ -18003,7 +17967,7 @@ const VCombobox = genericComponent()({
18003
17967
  const {
18004
17968
  textColorClasses,
18005
17969
  textColorStyles
18006
- } = useTextColor(color);
17970
+ } = useTextColor(() => vTextFieldRef.value?.color);
18007
17971
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
18008
17972
  const transformed = transformOut(v);
18009
17973
  return props.multiple ? transformed : transformed[0] ?? null;
@@ -18058,7 +18022,7 @@ const VCombobox = genericComponent()({
18058
18022
  _menu.value = v;
18059
18023
  }
18060
18024
  });
18061
- const label = computed(() => menu.value ? props.closeText : props.openText);
18025
+ const label = toRef(() => menu.value ? props.closeText : props.openText);
18062
18026
  watch(_search, value => {
18063
18027
  if (cleared) {
18064
18028
  // wait for clear to finish, VTextField sets _search to null
@@ -18564,7 +18528,7 @@ const makeDataTableExpandProps = propsFactory({
18564
18528
  }, 'DataTable-expand');
18565
18529
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18566
18530
  function provideExpanded(props) {
18567
- const expandOnClick = toRef(props, 'expandOnClick');
18531
+ const expandOnClick = toRef(() => props.expandOnClick);
18568
18532
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18569
18533
  return new Set(v);
18570
18534
  }, v => {
@@ -18751,23 +18715,23 @@ function useOptions(_ref) {
18751
18715
  search
18752
18716
  } = _ref;
18753
18717
  const vm = getCurrentInstance('VDataTable');
18754
- const options = computed(() => ({
18718
+ const options = () => ({
18755
18719
  page: page.value,
18756
18720
  itemsPerPage: itemsPerPage.value,
18757
18721
  sortBy: sortBy.value,
18758
18722
  groupBy: groupBy.value,
18759
18723
  search: search.value
18760
- }));
18724
+ });
18761
18725
  let oldOptions = null;
18762
- watch(options, () => {
18763
- if (deepEqual(oldOptions, options.value)) return;
18726
+ watch(options, value => {
18727
+ if (deepEqual(oldOptions, value)) return;
18764
18728
 
18765
18729
  // Reset page when searching
18766
- if (oldOptions && oldOptions.search !== options.value.search) {
18730
+ if (oldOptions && oldOptions.search !== value.search) {
18767
18731
  page.value = 1;
18768
18732
  }
18769
- vm.emit('update:options', options.value);
18770
- oldOptions = options.value;
18733
+ vm.emit('update:options', value);
18734
+ oldOptions = value;
18771
18735
  }, {
18772
18736
  deep: true,
18773
18737
  immediate: true
@@ -19048,7 +19012,7 @@ function provideSelection(props, _ref9) {
19048
19012
  });
19049
19013
  return !!items.length && isSelected(items);
19050
19014
  });
19051
- const showSelectAll = computed(() => selectStrategy.value.showSelectAll);
19015
+ const showSelectAll = toRef(() => selectStrategy.value.showSelectAll);
19052
19016
  const data = {
19053
19017
  toggleSelect,
19054
19018
  select,
@@ -19086,8 +19050,8 @@ const makeDataTableSortProps = propsFactory({
19086
19050
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
19087
19051
  function createSort(props) {
19088
19052
  const sortBy = useProxiedModel(props, 'sortBy');
19089
- const mustSort = toRef(props, 'mustSort');
19090
- const multiSort = toRef(props, 'multiSort');
19053
+ const mustSort = toRef(() => props.mustSort);
19054
+ const multiSort = toRef(() => props.multiSort);
19091
19055
  return {
19092
19056
  sortBy,
19093
19057
  mustSort,
@@ -19305,7 +19269,7 @@ const VDataIterator = genericComponent()({
19305
19269
  slots
19306
19270
  } = _ref;
19307
19271
  const groupBy = useProxiedModel(props, 'groupBy');
19308
- const search = toRef(props, 'search');
19272
+ const search = toRef(() => props.search);
19309
19273
  const {
19310
19274
  items
19311
19275
  } = useDataIteratorItems(props);
@@ -19349,7 +19313,7 @@ const VDataIterator = genericComponent()({
19349
19313
  const {
19350
19314
  flatItems
19351
19315
  } = useGroupedItems(sortedItems, groupBy, opened);
19352
- const itemsLength = computed(() => flatItems.value.length);
19316
+ const itemsLength = toRef(() => flatItems.value.length);
19353
19317
  const {
19354
19318
  startIndex,
19355
19319
  stopIndex,
@@ -19629,13 +19593,13 @@ const VPagination = genericComponent()({
19629
19593
  } = useRefs();
19630
19594
  provideDefaults({
19631
19595
  VPaginationBtn: {
19632
- color: toRef(props, 'color'),
19633
- border: toRef(props, 'border'),
19634
- density: toRef(props, 'density'),
19635
- size: toRef(props, 'size'),
19636
- variant: toRef(props, 'variant'),
19637
- rounded: toRef(props, 'rounded'),
19638
- elevation: toRef(props, 'elevation')
19596
+ color: toRef(() => props.color),
19597
+ border: toRef(() => props.border),
19598
+ density: toRef(() => props.density),
19599
+ size: toRef(() => props.size),
19600
+ variant: toRef(() => props.variant),
19601
+ rounded: toRef(() => props.rounded),
19602
+ elevation: toRef(() => props.elevation)
19639
19603
  }
19640
19604
  });
19641
19605
  const items = computed(() => {
@@ -20276,7 +20240,7 @@ const VDataTableHeaders = genericComponent()({
20276
20240
  const {
20277
20241
  backgroundColorClasses,
20278
20242
  backgroundColorStyles
20279
- } = useBackgroundColor(props, 'color');
20243
+ } = useBackgroundColor(() => props.color);
20280
20244
  const {
20281
20245
  displayClasses,
20282
20246
  mobile
@@ -20934,13 +20898,13 @@ const VDataTable = genericComponent()({
20934
20898
  filterFunctions
20935
20899
  } = createHeaders(props, {
20936
20900
  groupBy,
20937
- showSelect: toRef(props, 'showSelect'),
20938
- showExpand: toRef(props, 'showExpand')
20901
+ showSelect: toRef(() => props.showSelect),
20902
+ showExpand: toRef(() => props.showExpand)
20939
20903
  });
20940
20904
  const {
20941
20905
  items
20942
20906
  } = useDataTableItems(props, columns);
20943
- const search = toRef(props, 'search');
20907
+ const search = toRef(() => props.search);
20944
20908
  const {
20945
20909
  filteredItems
20946
20910
  } = useFilter(props, items, search, {
@@ -21023,10 +20987,10 @@ const VDataTable = genericComponent()({
21023
20987
  });
21024
20988
  provideDefaults({
21025
20989
  VDataTableRows: {
21026
- hideNoData: toRef(props, 'hideNoData'),
21027
- noDataText: toRef(props, 'noDataText'),
21028
- loading: toRef(props, 'loading'),
21029
- loadingText: toRef(props, 'loadingText')
20990
+ hideNoData: toRef(() => props.hideNoData),
20991
+ noDataText: toRef(() => props.noDataText),
20992
+ loading: toRef(() => props.loading),
20993
+ loadingText: toRef(() => props.loadingText)
21030
20994
  }
21031
20995
  });
21032
20996
  const slotProps = computed(() => ({
@@ -21123,13 +21087,13 @@ const VDataTableVirtual = genericComponent()({
21123
21087
  sortRawFunctions
21124
21088
  } = createHeaders(props, {
21125
21089
  groupBy,
21126
- showSelect: toRef(props, 'showSelect'),
21127
- showExpand: toRef(props, 'showExpand')
21090
+ showSelect: toRef(() => props.showSelect),
21091
+ showExpand: toRef(() => props.showExpand)
21128
21092
  });
21129
21093
  const {
21130
21094
  items
21131
21095
  } = useDataTableItems(props, columns);
21132
- const search = toRef(props, 'search');
21096
+ const search = toRef(() => props.search);
21133
21097
  const {
21134
21098
  filteredItems
21135
21099
  } = useFilter(props, items, search, {
@@ -21205,10 +21169,10 @@ const VDataTableVirtual = genericComponent()({
21205
21169
  });
21206
21170
  provideDefaults({
21207
21171
  VDataTableRows: {
21208
- hideNoData: toRef(props, 'hideNoData'),
21209
- noDataText: toRef(props, 'noDataText'),
21210
- loading: toRef(props, 'loading'),
21211
- loadingText: toRef(props, 'loadingText')
21172
+ hideNoData: toRef(() => props.hideNoData),
21173
+ noDataText: toRef(() => props.noDataText),
21174
+ loading: toRef(() => props.loading),
21175
+ loadingText: toRef(() => props.loadingText)
21212
21176
  }
21213
21177
  });
21214
21178
  const slotProps = computed(() => ({
@@ -21361,8 +21325,8 @@ const VDataTableServer = genericComponent()({
21361
21325
  headers
21362
21326
  } = createHeaders(props, {
21363
21327
  groupBy,
21364
- showSelect: toRef(props, 'showSelect'),
21365
- showExpand: toRef(props, 'showExpand')
21328
+ showSelect: toRef(() => props.showSelect),
21329
+ showExpand: toRef(() => props.showExpand)
21366
21330
  });
21367
21331
  const {
21368
21332
  items
@@ -21417,7 +21381,7 @@ const VDataTableServer = genericComponent()({
21417
21381
  itemsPerPage,
21418
21382
  sortBy,
21419
21383
  groupBy,
21420
- search: toRef(props, 'search')
21384
+ search: toRef(() => props.search)
21421
21385
  });
21422
21386
  provide('v-data-table', {
21423
21387
  toggleSort,
@@ -21425,10 +21389,10 @@ const VDataTableServer = genericComponent()({
21425
21389
  });
21426
21390
  provideDefaults({
21427
21391
  VDataTableRows: {
21428
- hideNoData: toRef(props, 'hideNoData'),
21429
- noDataText: toRef(props, 'noDataText'),
21430
- loading: toRef(props, 'loading'),
21431
- loadingText: toRef(props, 'loadingText')
21392
+ hideNoData: toRef(() => props.hideNoData),
21393
+ noDataText: toRef(() => props.noDataText),
21394
+ loading: toRef(() => props.loading),
21395
+ loadingText: toRef(() => props.loadingText)
21432
21396
  }
21433
21397
  });
21434
21398
  const slotProps = computed(() => ({
@@ -21898,7 +21862,7 @@ const VDatePickerHeader = genericComponent()({
21898
21862
  const {
21899
21863
  backgroundColorClasses,
21900
21864
  backgroundColorStyles
21901
- } = useBackgroundColor(props, 'color');
21865
+ } = useBackgroundColor(() => props.color);
21902
21866
  function onClick() {
21903
21867
  emit('click');
21904
21868
  }
@@ -21979,7 +21943,7 @@ const makeCalendarProps = propsFactory({
21979
21943
  },
21980
21944
  firstDayOfWeek: {
21981
21945
  type: [Number, String],
21982
- default: 0
21946
+ default: undefined
21983
21947
  }
21984
21948
  }, 'calendar');
21985
21949
  function useCalendar(props) {
@@ -22002,14 +21966,12 @@ function useCalendar(props) {
22002
21966
  return adapter.setMonth(date, value);
22003
21967
  }, v => adapter.getMonth(v));
22004
21968
  const weekDays = computed(() => {
22005
- const firstDayOfWeek = Number(props.firstDayOfWeek);
22006
-
21969
+ const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22007
21970
  // Always generate all days, regardless of props.weekdays
22008
21971
  return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22009
21972
  });
22010
21973
  const weeksInMonth = computed(() => {
22011
- const firstDayOfWeek = Number(props.firstDayOfWeek);
22012
- const weeks = adapter.getWeekArray(month.value, firstDayOfWeek);
21974
+ const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
22013
21975
  const days = weeks.flat();
22014
21976
 
22015
21977
  // Make sure there's always 6 weeks in month (6 * 7 days)
@@ -22039,21 +22001,21 @@ function useCalendar(props) {
22039
22001
  const isSame = adapter.isSameDay(date, month.value);
22040
22002
  return {
22041
22003
  date,
22042
- isoDate,
22043
22004
  formatted: adapter.format(date, 'keyboardDate'),
22044
- year: adapter.getYear(date),
22045
- month: adapter.getMonth(date),
22046
- isDisabled: isDisabled(date),
22047
- isWeekStart: index % 7 === 0,
22048
- isWeekEnd: index % 7 === 6,
22049
- isToday: adapter.isSameDay(date, today),
22050
22005
  isAdjacent,
22051
- isHidden: isAdjacent && !props.showAdjacentMonths,
22052
- isStart,
22053
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22006
+ isDisabled: isDisabled(date),
22054
22007
  isEnd,
22008
+ isHidden: isAdjacent && !props.showAdjacentMonths,
22055
22009
  isSame,
22056
- localized: adapter.format(date, 'dayOfMonth')
22010
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22011
+ isStart,
22012
+ isToday: adapter.isSameDay(date, today),
22013
+ isWeekEnd: index % 7 === 6,
22014
+ isWeekStart: index % 7 === 0,
22015
+ isoDate,
22016
+ localized: adapter.format(date, 'dayOfMonth'),
22017
+ month: adapter.getMonth(date),
22018
+ year: adapter.getYear(date)
22057
22019
  };
22058
22020
  });
22059
22021
  }
@@ -22073,7 +22035,7 @@ function useCalendar(props) {
22073
22035
  });
22074
22036
  const weekNumbers = computed(() => {
22075
22037
  return weeksInMonth.value.map(week => {
22076
- return week.length ? getWeek(adapter, week[0]) : null;
22038
+ return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null;
22077
22039
  });
22078
22040
  });
22079
22041
  function isDisabled(value) {
@@ -22141,7 +22103,7 @@ const VDatePickerMonth = genericComponent()({
22141
22103
  const rangeStart = shallowRef();
22142
22104
  const rangeStop = shallowRef();
22143
22105
  const isReverse = shallowRef(false);
22144
- const transition = computed(() => {
22106
+ const transition = toRef(() => {
22145
22107
  return !isReverse.value ? props.transition : props.reverseTransition;
22146
22108
  });
22147
22109
  if (props.multiple === 'range' && model.value.length > 0) {
@@ -22521,7 +22483,7 @@ const VDatePicker = genericComponent()({
22521
22483
  }
22522
22484
  return value && adapter.isValid(value) ? value : today;
22523
22485
  });
22524
- const headerColor = computed(() => props.headerColor ?? props.color);
22486
+ const headerColor = toRef(() => props.headerColor ?? props.color);
22525
22487
  const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22526
22488
  const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22527
22489
  const isReversing = shallowRef(false);
@@ -22538,8 +22500,8 @@ const VDatePicker = genericComponent()({
22538
22500
  date = adapter.setYear(date, year.value);
22539
22501
  return adapter.format(date, 'monthAndYear');
22540
22502
  });
22541
- // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22542
- const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22503
+ // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22504
+ const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22543
22505
  const disabled = computed(() => {
22544
22506
  if (props.disabled) return true;
22545
22507
  const targets = [];
@@ -22751,7 +22713,7 @@ const VEmptyState = genericComponent()({
22751
22713
  const {
22752
22714
  backgroundColorClasses,
22753
22715
  backgroundColorStyles
22754
- } = useBackgroundColor(toRef(props, 'bgColor'));
22716
+ } = useBackgroundColor(() => props.bgColor);
22755
22717
  const {
22756
22718
  dimensionStyles
22757
22719
  } = useDimension(props);
@@ -22914,7 +22876,7 @@ const VExpansionPanelTitle = genericComponent()({
22914
22876
  const {
22915
22877
  backgroundColorClasses,
22916
22878
  backgroundColorStyles
22917
- } = useBackgroundColor(props, 'color');
22879
+ } = useBackgroundColor(() => props.color);
22918
22880
  const {
22919
22881
  dimensionStyles
22920
22882
  } = useDimension(props);
@@ -22925,7 +22887,7 @@ const VExpansionPanelTitle = genericComponent()({
22925
22887
  expandIcon: props.expandIcon,
22926
22888
  readonly: props.readonly
22927
22889
  }));
22928
- const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22890
+ const icon = toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22929
22891
  useRender(() => withDirectives(createVNode("button", {
22930
22892
  "class": ['v-expansion-panel-title', {
22931
22893
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
@@ -22980,14 +22942,14 @@ const VExpansionPanel = genericComponent()({
22980
22942
  const {
22981
22943
  backgroundColorClasses,
22982
22944
  backgroundColorStyles
22983
- } = useBackgroundColor(props, 'bgColor');
22945
+ } = useBackgroundColor(() => props.bgColor);
22984
22946
  const {
22985
22947
  elevationClasses
22986
22948
  } = useElevation(props);
22987
22949
  const {
22988
22950
  roundedClasses
22989
22951
  } = useRounded(props);
22990
- const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);
22952
+ const isDisabled = toRef(() => groupItem?.disabled.value || props.disabled);
22991
22953
  const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
22992
22954
  if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
22993
22955
  return arr;
@@ -23078,21 +23040,21 @@ const VExpansionPanels = genericComponent()({
23078
23040
  const {
23079
23041
  themeClasses
23080
23042
  } = provideTheme(props);
23081
- const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23043
+ const variantClass = toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23082
23044
  provideDefaults({
23083
23045
  VExpansionPanel: {
23084
- bgColor: toRef(props, 'bgColor'),
23085
- collapseIcon: toRef(props, 'collapseIcon'),
23086
- color: toRef(props, 'color'),
23087
- eager: toRef(props, 'eager'),
23088
- elevation: toRef(props, 'elevation'),
23089
- expandIcon: toRef(props, 'expandIcon'),
23090
- focusable: toRef(props, 'focusable'),
23091
- hideActions: toRef(props, 'hideActions'),
23092
- readonly: toRef(props, 'readonly'),
23093
- ripple: toRef(props, 'ripple'),
23094
- rounded: toRef(props, 'rounded'),
23095
- static: toRef(props, 'static')
23046
+ bgColor: toRef(() => props.bgColor),
23047
+ collapseIcon: toRef(() => props.collapseIcon),
23048
+ color: toRef(() => props.color),
23049
+ eager: toRef(() => props.eager),
23050
+ elevation: toRef(() => props.elevation),
23051
+ expandIcon: toRef(() => props.expandIcon),
23052
+ focusable: toRef(() => props.focusable),
23053
+ hideActions: toRef(() => props.hideActions),
23054
+ readonly: toRef(() => props.readonly),
23055
+ ripple: toRef(() => props.ripple),
23056
+ rounded: toRef(() => props.rounded),
23057
+ static: toRef(() => props.static)
23096
23058
  }
23097
23059
  });
23098
23060
  useRender(() => createVNode(props.tag, {
@@ -23154,7 +23116,7 @@ const VFab = genericComponent()({
23154
23116
  if (!entries.length) return;
23155
23117
  height.value = entries[0].target.clientHeight;
23156
23118
  });
23157
- const hasPosition = computed(() => props.app || props.absolute);
23119
+ const hasPosition = toRef(() => props.app || props.absolute);
23158
23120
  const position = computed(() => {
23159
23121
  if (!hasPosition.value) return false;
23160
23122
  return props.location?.split(' ').shift() ?? 'bottom';
@@ -23171,7 +23133,7 @@ const VFab = genericComponent()({
23171
23133
  layoutSize: computed(() => props.layout ? height.value + 24 : 0),
23172
23134
  elementSize: computed(() => height.value + 24),
23173
23135
  active: computed(() => props.app && model.value),
23174
- absolute: toRef(props, 'absolute')
23136
+ absolute: toRef(() => props.absolute)
23175
23137
  });
23176
23138
  watchEffect(() => {
23177
23139
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23296,7 +23258,7 @@ const VFileInput = genericComponent()({
23296
23258
  const vInputRef = ref();
23297
23259
  const vFieldRef = ref();
23298
23260
  const inputRef = ref();
23299
- const isActive = computed(() => isFocused.value || props.active);
23261
+ const isActive = toRef(() => isFocused.value || props.active);
23300
23262
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
23301
23263
  function onFocus() {
23302
23264
  if (inputRef.value !== document.activeElement) {
@@ -23469,7 +23431,7 @@ const VFooter = genericComponent()({
23469
23431
  const {
23470
23432
  backgroundColorClasses,
23471
23433
  backgroundColorStyles
23472
- } = useBackgroundColor(toRef(props, 'color'));
23434
+ } = useBackgroundColor(() => props.color);
23473
23435
  const {
23474
23436
  borderClasses
23475
23437
  } = useBorder(props);
@@ -23491,11 +23453,11 @@ const VFooter = genericComponent()({
23491
23453
  const layout = useLayoutItem({
23492
23454
  id: props.name,
23493
23455
  order: computed(() => parseInt(props.order, 10)),
23494
- position: computed(() => 'bottom'),
23456
+ position: toRef(() => 'bottom'),
23495
23457
  layoutSize: height,
23496
23458
  elementSize: computed(() => props.height === 'auto' ? undefined : height.value),
23497
- active: computed(() => props.app),
23498
- absolute: toRef(props, 'absolute')
23459
+ active: toRef(() => props.app),
23460
+ absolute: toRef(() => props.absolute)
23499
23461
  });
23500
23462
  watchEffect(() => {
23501
23463
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23968,11 +23930,11 @@ const VLayoutItem = genericComponent()({
23968
23930
  } = useLayoutItem({
23969
23931
  id: props.name,
23970
23932
  order: computed(() => parseInt(props.order, 10)),
23971
- position: toRef(props, 'position'),
23972
- elementSize: toRef(props, 'size'),
23973
- layoutSize: toRef(props, 'size'),
23974
- active: toRef(props, 'modelValue'),
23975
- absolute: toRef(props, 'absolute')
23933
+ position: toRef(() => props.position),
23934
+ elementSize: toRef(() => props.size),
23935
+ layoutSize: toRef(() => props.size),
23936
+ active: toRef(() => props.modelValue),
23937
+ absolute: toRef(() => props.absolute)
23976
23938
  });
23977
23939
  return () => createVNode("div", {
23978
23940
  "class": ['v-layout-item', props.class],
@@ -24504,7 +24466,7 @@ const VNavigationDrawer = genericComponent()({
24504
24466
  const {
24505
24467
  backgroundColorClasses,
24506
24468
  backgroundColorStyles
24507
- } = useBackgroundColor(toRef(props, 'color'));
24469
+ } = useBackgroundColor(() => props.color);
24508
24470
  const {
24509
24471
  elevationClasses
24510
24472
  } = useElevation(props);
@@ -24537,7 +24499,7 @@ const VNavigationDrawer = genericComponent()({
24537
24499
  const location = computed(() => {
24538
24500
  return toPhysical(props.location, isRtl.value);
24539
24501
  });
24540
- const isPersistent = computed(() => props.persistent);
24502
+ const isPersistent = toRef(() => props.persistent);
24541
24503
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
24542
24504
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
24543
24505
  useToggleScope(() => props.expandOnHover && props.rail != null, () => {
@@ -24563,7 +24525,7 @@ const VNavigationDrawer = genericComponent()({
24563
24525
  isActive,
24564
24526
  isTemporary,
24565
24527
  width,
24566
- touchless: toRef(props, 'touchless'),
24528
+ touchless: toRef(() => props.touchless),
24567
24529
  position: location
24568
24530
  });
24569
24531
  const layoutSize = computed(() => {
@@ -24580,7 +24542,7 @@ const VNavigationDrawer = genericComponent()({
24580
24542
  layoutSize,
24581
24543
  elementSize: width,
24582
24544
  active: readonly(isActive),
24583
- disableTransitions: computed(() => isDragging.value),
24545
+ disableTransitions: toRef(() => isDragging.value),
24584
24546
  absolute: computed(() =>
24585
24547
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
24586
24548
  props.absolute || isSticky.value && typeof isStuck.value !== 'string')
@@ -24593,9 +24555,9 @@ const VNavigationDrawer = genericComponent()({
24593
24555
  isSticky,
24594
24556
  layoutItemStyles
24595
24557
  });
24596
- const scrimColor = useBackgroundColor(computed(() => {
24558
+ const scrimColor = useBackgroundColor(() => {
24597
24559
  return typeof props.scrim === 'string' ? props.scrim : null;
24598
- }));
24560
+ });
24599
24561
  const scrimStyles = computed(() => ({
24600
24562
  ...(isDragging.value ? {
24601
24563
  opacity: dragProgress.value * 0.2,
@@ -24809,24 +24771,24 @@ const VNumberInput = genericComponent()({
24809
24771
  const controlVariant = computed(() => {
24810
24772
  return props.hideInput ? 'stacked' : props.controlVariant;
24811
24773
  });
24812
- const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24813
- const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24814
- const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
24815
- const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24816
- const incrementSlotProps = computed(() => ({
24774
+ const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24775
+ const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24776
+ const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small');
24777
+ const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24778
+ const incrementSlotProps = {
24817
24779
  props: {
24818
24780
  onClick: onControlClick,
24819
24781
  onPointerup: onControlMouseup,
24820
24782
  onPointerdown: onUpControlMousedown
24821
24783
  }
24822
- }));
24823
- const decrementSlotProps = computed(() => ({
24784
+ };
24785
+ const decrementSlotProps = {
24824
24786
  props: {
24825
24787
  onClick: onControlClick,
24826
24788
  onPointerup: onControlMouseup,
24827
24789
  onPointerdown: onDownControlMousedown
24828
24790
  }
24829
- }));
24791
+ };
24830
24792
  watch(() => props.precision, () => formatInputValue());
24831
24793
  onMounted(() => {
24832
24794
  clampModel();
@@ -24978,7 +24940,7 @@ const VNumberInput = genericComponent()({
24978
24940
  }
24979
24941
  }
24980
24942
  }, {
24981
- default: () => [slots.increment(incrementSlotProps.value)]
24943
+ default: () => [slots.increment(incrementSlotProps)]
24982
24944
  });
24983
24945
  }
24984
24946
  function decrementControlNode() {
@@ -25007,7 +24969,7 @@ const VNumberInput = genericComponent()({
25007
24969
  }
25008
24970
  }
25009
24971
  }, {
25010
- default: () => [slots.decrement(decrementSlotProps.value)]
24972
+ default: () => [slots.decrement(decrementSlotProps)]
25011
24973
  });
25012
24974
  }
25013
24975
  function controlNode() {
@@ -25207,12 +25169,12 @@ const VOtpInput = genericComponent()({
25207
25169
  }
25208
25170
  provideDefaults({
25209
25171
  VField: {
25210
- color: computed(() => props.color),
25211
- bgColor: computed(() => props.color),
25212
- baseColor: computed(() => props.baseColor),
25213
- disabled: computed(() => props.disabled),
25214
- error: computed(() => props.error),
25215
- variant: computed(() => props.variant)
25172
+ color: toRef(() => props.color),
25173
+ bgColor: toRef(() => props.color),
25174
+ baseColor: toRef(() => props.baseColor),
25175
+ disabled: toRef(() => props.disabled),
25176
+ error: toRef(() => props.error),
25177
+ variant: toRef(() => props.variant)
25216
25178
  }
25217
25179
  }, {
25218
25180
  scoped: true
@@ -26013,7 +25975,7 @@ const VSkeletonLoader = genericComponent()({
26013
25975
  const {
26014
25976
  backgroundColorClasses,
26015
25977
  backgroundColorStyles
26016
- } = useBackgroundColor(toRef(props, 'color'));
25978
+ } = useBackgroundColor(() => props.color);
26017
25979
  const {
26018
25980
  dimensionStyles
26019
25981
  } = useDimension(props);
@@ -26812,7 +26774,7 @@ const VSparkline = genericComponent()({
26812
26774
  const {
26813
26775
  textColorClasses,
26814
26776
  textColorStyles
26815
- } = useTextColor(toRef(props, 'color'));
26777
+ } = useTextColor(() => props.color);
26816
26778
  const hasLabels = computed(() => {
26817
26779
  return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
26818
26780
  });
@@ -27358,11 +27320,11 @@ const VSwitch = genericComponent()({
27358
27320
  } = useFocus(props);
27359
27321
  const control = ref();
27360
27322
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
27361
- const loaderColor = computed(() => {
27323
+ const loaderColor = toRef(() => {
27362
27324
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
27363
27325
  });
27364
27326
  const uid = useId();
27365
- const id = computed(() => props.id || `switch-${uid}`);
27327
+ const id = toRef(() => props.id || `switch-${uid}`);
27366
27328
  function onChange() {
27367
27329
  if (indeterminate.value) {
27368
27330
  indeterminate.value = false;
@@ -27513,7 +27475,7 @@ const VSystemBar = genericComponent()({
27513
27475
  const {
27514
27476
  backgroundColorClasses,
27515
27477
  backgroundColorStyles
27516
- } = useBackgroundColor(toRef(props, 'color'));
27478
+ } = useBackgroundColor(() => props.color);
27517
27479
  const {
27518
27480
  elevationClasses
27519
27481
  } = useElevation(props);
@@ -27533,7 +27495,7 @@ const VSystemBar = genericComponent()({
27533
27495
  layoutSize: height,
27534
27496
  elementSize: height,
27535
27497
  active: computed(() => true),
27536
- absolute: toRef(props, 'absolute')
27498
+ absolute: toRef(() => props.absolute)
27537
27499
  });
27538
27500
  useRender(() => createVNode(props.tag, {
27539
27501
  "class": ['v-system-bar', {
@@ -27575,7 +27537,7 @@ const VTab = genericComponent()({
27575
27537
  const {
27576
27538
  textColorClasses: sliderColorClasses,
27577
27539
  textColorStyles: sliderColorStyles
27578
- } = useTextColor(props, 'sliderColor');
27540
+ } = useTextColor(() => props.sliderColor);
27579
27541
  const rootEl = ref();
27580
27542
  const sliderEl = ref();
27581
27543
  const isHorizontal = computed(() => props.direction === 'horizontal');
@@ -27768,18 +27730,18 @@ const VTabs = genericComponent()({
27768
27730
  const {
27769
27731
  backgroundColorClasses,
27770
27732
  backgroundColorStyles
27771
- } = useBackgroundColor(toRef(props, 'bgColor'));
27733
+ } = useBackgroundColor(() => props.bgColor);
27772
27734
  const {
27773
27735
  scopeId
27774
27736
  } = useScopeId();
27775
27737
  provideDefaults({
27776
27738
  VTab: {
27777
- color: toRef(props, 'color'),
27778
- direction: toRef(props, 'direction'),
27779
- stacked: toRef(props, 'stacked'),
27780
- fixed: toRef(props, 'fixedTabs'),
27781
- sliderColor: toRef(props, 'sliderColor'),
27782
- hideSlider: toRef(props, 'hideSlider')
27739
+ color: toRef(() => props.color),
27740
+ direction: toRef(() => props.direction),
27741
+ stacked: toRef(() => props.stacked),
27742
+ fixed: toRef(() => props.fixedTabs),
27743
+ sliderColor: toRef(() => props.sliderColor),
27744
+ hideSlider: toRef(() => props.hideSlider)
27783
27745
  }
27784
27746
  });
27785
27747
  useRender(() => {
@@ -28129,7 +28091,7 @@ const VTimelineDivider = genericComponent()({
28129
28091
  const {
28130
28092
  backgroundColorStyles,
28131
28093
  backgroundColorClasses
28132
- } = useBackgroundColor(toRef(props, 'dotColor'));
28094
+ } = useBackgroundColor(() => props.dotColor);
28133
28095
  const {
28134
28096
  roundedClasses
28135
28097
  } = useRounded(props, 'v-timeline-divider__dot');
@@ -28139,7 +28101,7 @@ const VTimelineDivider = genericComponent()({
28139
28101
  const {
28140
28102
  backgroundColorClasses: lineColorClasses,
28141
28103
  backgroundColorStyles: lineColorStyles
28142
- } = useBackgroundColor(toRef(props, 'lineColor'));
28104
+ } = useBackgroundColor(() => props.lineColor);
28143
28105
  useRender(() => createVNode("div", {
28144
28106
  "class": ['v-timeline-divider', {
28145
28107
  'v-timeline-divider--fill-dot': props.fillDot
@@ -28310,17 +28272,17 @@ const VTimeline = genericComponent()({
28310
28272
  } = useRtl();
28311
28273
  provideDefaults({
28312
28274
  VTimelineDivider: {
28313
- lineColor: toRef(props, 'lineColor')
28275
+ lineColor: toRef(() => props.lineColor)
28314
28276
  },
28315
28277
  VTimelineItem: {
28316
- density: toRef(props, 'density'),
28317
- dotColor: toRef(props, 'dotColor'),
28318
- fillDot: toRef(props, 'fillDot'),
28319
- hideOpposite: toRef(props, 'hideOpposite'),
28320
- iconColor: toRef(props, 'iconColor'),
28321
- lineColor: toRef(props, 'lineColor'),
28322
- lineInset: toRef(props, 'lineInset'),
28323
- size: toRef(props, 'size')
28278
+ density: toRef(() => props.density),
28279
+ dotColor: toRef(() => props.dotColor),
28280
+ fillDot: toRef(() => props.fillDot),
28281
+ hideOpposite: toRef(() => props.hideOpposite),
28282
+ iconColor: toRef(() => props.iconColor),
28283
+ lineColor: toRef(() => props.lineColor),
28284
+ lineInset: toRef(() => props.lineInset),
28285
+ size: toRef(() => props.size)
28324
28286
  }
28325
28287
  });
28326
28288
  const sideClasses = computed(() => {
@@ -28367,9 +28329,9 @@ const VToolbarItems = genericComponent()({
28367
28329
  } = _ref;
28368
28330
  provideDefaults({
28369
28331
  VBtn: {
28370
- color: toRef(props, 'color'),
28332
+ color: toRef(() => props.color),
28371
28333
  height: 'inherit',
28372
- variant: toRef(props, 'variant')
28334
+ variant: toRef(() => props.variant)
28373
28335
  }
28374
28336
  });
28375
28337
  useRender(() => createVNode("div", {
@@ -28416,7 +28378,7 @@ const VTooltip = genericComponent()({
28416
28378
  scopeId
28417
28379
  } = useScopeId();
28418
28380
  const uid = useId();
28419
- const id = computed(() => props.id || `v-tooltip-${uid}`);
28381
+ const id = toRef(() => props.id || `v-tooltip-${uid}`);
28420
28382
  const overlay = ref();
28421
28383
  const location = computed(() => {
28422
28384
  return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
@@ -28424,7 +28386,7 @@ const VTooltip = genericComponent()({
28424
28386
  const origin = computed(() => {
28425
28387
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28426
28388
  });
28427
- const transition = computed(() => {
28389
+ const transition = toRef(() => {
28428
28390
  if (props.transition) return props.transition;
28429
28391
  return isActive.value ? 'scale-transition' : 'fade-transition';
28430
28392
  });
@@ -28503,13 +28465,19 @@ const makeVCalendarIntervalEventProps = propsFactory({
28503
28465
  }, 'VCalendarIntervalEvent');
28504
28466
  const VCalendarIntervalEvent = genericComponent()({
28505
28467
  name: 'VCalendarIntervalEvent',
28468
+ inheritAttrs: false,
28506
28469
  props: makeVCalendarIntervalEventProps(),
28507
- setup(props) {
28470
+ setup(props, _ref) {
28471
+ let {
28472
+ attrs,
28473
+ emit,
28474
+ slots
28475
+ } = _ref;
28508
28476
  const adapter = useDate();
28509
28477
  const calcHeight = () => {
28510
- if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
28478
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.end, props.interval?.end)) {
28511
28479
  return {
28512
- height: '100%',
28480
+ height: `${props.intervalHeight}px`,
28513
28481
  margin: convertToUnit(0)
28514
28482
  };
28515
28483
  } else {
@@ -28518,8 +28486,8 @@ const VCalendarIntervalEvent = genericComponent()({
28518
28486
  margin
28519
28487
  } = Array.from({
28520
28488
  length: props.intervalDivisions
28521
- }, x => x * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28522
- if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.start)) {
28489
+ }, (_, x) => (x + 1) * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28490
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.end)) {
28523
28491
  return {
28524
28492
  height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
28525
28493
  margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
@@ -28540,16 +28508,30 @@ const VCalendarIntervalEvent = genericComponent()({
28540
28508
  }
28541
28509
  };
28542
28510
  useRender(() => {
28543
- return createVNode(VSheet, {
28511
+ return createVNode("div", null, [slots.intervalEvent?.({
28512
+ height: calcHeight().height,
28513
+ margin: calcHeight().margin,
28514
+ eventClass: 'v-calendar-internal-event',
28515
+ event: props.event,
28516
+ interval: props.interval
28517
+ }) ?? createVNode(VSheet, mergeProps({
28544
28518
  "height": calcHeight().height,
28545
28519
  "density": "comfortable",
28546
28520
  "style": `margin-top: ${calcHeight().margin}`,
28547
28521
  "class": "v-calendar-internal-event",
28548
28522
  "color": props.event?.color ?? undefined,
28549
28523
  "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
28550
- }, {
28524
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28525
+ event: props.event,
28526
+ allDay: false,
28527
+ day: null,
28528
+ interval: props.interval,
28529
+ intervalDivisions: props.intervalDivisions,
28530
+ intervalDuration: props.intervalDuration,
28531
+ intervalHeight: props.intervalHeight
28532
+ }))), {
28551
28533
  default: () => [props.event?.first ? props.event?.title : '']
28552
- });
28534
+ })]);
28553
28535
  });
28554
28536
  return {};
28555
28537
  }
@@ -28585,6 +28567,7 @@ const makeVCalendarIntervalProps = propsFactory({
28585
28567
  }, 'VCalendarInterval');
28586
28568
  const VCalendarInterval = genericComponent()({
28587
28569
  name: 'VCalendarInterval',
28570
+ inheritAttrs: false,
28588
28571
  props: {
28589
28572
  index: {
28590
28573
  type: Number,
@@ -28594,6 +28577,7 @@ const VCalendarInterval = genericComponent()({
28594
28577
  },
28595
28578
  setup(props, _ref) {
28596
28579
  let {
28580
+ attrs,
28597
28581
  emit,
28598
28582
  slots
28599
28583
  } = _ref;
@@ -28619,39 +28603,74 @@ const VCalendarInterval = genericComponent()({
28619
28603
  return props.dayIndex === 0 ? createVNode("div", {
28620
28604
  "class": "v-calendar-day__row-with-label",
28621
28605
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28622
- }, [createVNode("div", {
28606
+ }, [createVNode("div", mergeProps({
28623
28607
  "class": "v-calendar-day__row-label"
28624
- }, [createVNode("slot", {
28625
- "name": "intervalFormat",
28626
- "interval": interval.value
28627
- }, [props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : ''])]), createVNode("div", {
28608
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28609
+ interval: interval.value
28610
+ }) ?? (props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : '12 AM')]), createVNode("div", {
28628
28611
  "class": "v-calendar-day__row-hairline"
28629
- }, null), createVNode("div", {
28612
+ }, null), createVNode("div", mergeProps({
28630
28613
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28631
- }, [createVNode("slot", {
28632
- "name": "intervalBody",
28633
- "interval": interval.value
28634
- }, [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, {
28614
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28615
+ interval: interval.value
28616
+ }) ?? createVNode("div", null, [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
28635
28617
  "event": event,
28636
28618
  "interval": interval.value,
28637
28619
  "intervalDivisions": props.intervalDivisions,
28638
28620
  "intervalDuration": props.intervalDuration,
28639
28621
  "intervalHeight": props.intervalHeight
28640
- }, null))])])]) : createVNode("div", {
28622
+ }, attrs), {
28623
+ ...(slots.intervalEvent ? {
28624
+ intervalEvent: _ref2 => {
28625
+ let {
28626
+ height,
28627
+ margin,
28628
+ eventClass,
28629
+ event,
28630
+ interval
28631
+ } = _ref2;
28632
+ return slots.intervalEvent?.({
28633
+ height,
28634
+ margin,
28635
+ eventClass,
28636
+ event,
28637
+ interval
28638
+ });
28639
+ }
28640
+ } : {})
28641
+ }))])])]) : createVNode("div", {
28641
28642
  "class": "v-calendar-day__row-without-label",
28642
28643
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28643
- }, [createVNode("div", {
28644
+ }, [createVNode("div", mergeProps({
28644
28645
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28645
- }, [createVNode("slot", {
28646
- "name": "intervalBody",
28647
- "interval": interval.value
28648
- }, [interval.value.events?.filter(event => !event.allDay).map(event => createVNode(VCalendarIntervalEvent, {
28646
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28647
+ interval: interval.value
28648
+ }) ?? interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
28649
28649
  "event": event,
28650
28650
  "interval": interval.value,
28651
28651
  "intervalDivisions": props.intervalDivisions,
28652
28652
  "intervalDuration": props.intervalDuration,
28653
28653
  "intervalHeight": props.intervalHeight
28654
- }, null))])])]);
28654
+ }, attrs), {
28655
+ ...(slots.intervalEvent ? {
28656
+ intervalEvent: _ref3 => {
28657
+ let {
28658
+ height,
28659
+ margin,
28660
+ eventClass,
28661
+ event,
28662
+ interval
28663
+ } = _ref3;
28664
+ return slots.intervalEvent?.({
28665
+ height,
28666
+ margin,
28667
+ eventClass,
28668
+ event,
28669
+ interval
28670
+ });
28671
+ }
28672
+ } : {})
28673
+ }))])]);
28655
28674
  });
28656
28675
  return {
28657
28676
  interval
@@ -28659,6 +28678,8 @@ const VCalendarInterval = genericComponent()({
28659
28678
  }
28660
28679
  });
28661
28680
 
28681
+ // Types
28682
+
28662
28683
  const makeVCalendarDayProps = propsFactory({
28663
28684
  hideDayHeader: Boolean,
28664
28685
  intervals: {
@@ -28669,26 +28690,34 @@ const makeVCalendarDayProps = propsFactory({
28669
28690
  }, 'VCalendarDay');
28670
28691
  const VCalendarDay = genericComponent()({
28671
28692
  name: 'VCalendarDay',
28693
+ inheritAttrs: false,
28672
28694
  props: makeVCalendarDayProps(),
28673
- setup(props) {
28695
+ setup(props, _ref) {
28696
+ let {
28697
+ attrs,
28698
+ slots
28699
+ } = _ref;
28674
28700
  const adapter = useDate();
28675
28701
  const intervals = computed(() => [...Array.from({
28676
28702
  length: props.intervals
28677
- }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28703
+ }, (v, i) => i).filter((_, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28678
28704
  useRender(() => {
28679
28705
  const calendarIntervalProps = VCalendarInterval.filterProps(props);
28680
28706
  return createVNode("div", {
28681
28707
  "class": "v-calendar-day__container"
28682
- }, [!props.hideDayHeader && createVNode("div", {
28683
- "key": "calender-week-name",
28708
+ }, [!props.hideDayHeader && createVNode("div", mergeProps({
28709
+ "key": "calendar-week-name",
28684
28710
  "class": "v-calendar-weekly__head-weekday"
28685
- }, [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, {
28711
+ }, getPrefixedEventHandlers(attrs, ':day', () => props.day)), [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, mergeProps(getPrefixedEventHandlers(attrs, ':date', () => props.day), {
28712
+ "class": props.day?.isToday ? 'v-calendar-day-label__today' : undefined,
28686
28713
  "icon": true,
28687
28714
  "text": adapter.format(props.day.date, 'dayOfMonth'),
28688
- "variant": "text"
28689
- }, null)])]), intervals.value.map((_, index) => createVNode(VCalendarInterval, mergeProps({
28715
+ "variant": props.day?.isToday ? undefined : 'text'
28716
+ }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? createVNode(VCalendarInterval, mergeProps({
28690
28717
  "index": index
28691
- }, calendarIntervalProps), null))]);
28718
+ }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
28719
+ ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
28720
+ }))]);
28692
28721
  });
28693
28722
  return {
28694
28723
  intervals
@@ -28727,7 +28756,8 @@ const VCalendarHeader = genericComponent()({
28727
28756
  },
28728
28757
  setup(props, _ref) {
28729
28758
  let {
28730
- emit
28759
+ emit,
28760
+ slots
28731
28761
  } = _ref;
28732
28762
  const {
28733
28763
  t
@@ -28761,7 +28791,9 @@ const VCalendarHeader = genericComponent()({
28761
28791
  "onClick": next
28762
28792
  }, null), createVNode("div", {
28763
28793
  "class": "v-calendar-header__title"
28764
- }, [props.title])]));
28794
+ }, [slots.title?.({
28795
+ title: props.title
28796
+ }) ?? createVNode("span", null, [props.title])])]));
28765
28797
  return {};
28766
28798
  }
28767
28799
  });
@@ -28773,14 +28805,24 @@ const makeVCalendarEventProps = propsFactory({
28773
28805
  }, 'VCalendarEvent');
28774
28806
  const VCalendarEvent = genericComponent()({
28775
28807
  name: 'VCalendarEvent',
28808
+ inheritAttrs: false,
28776
28809
  props: makeVCalendarEventProps(),
28777
- setup(props) {
28778
- useRender(() => createVNode(VChip, {
28810
+ setup(props, _ref) {
28811
+ let {
28812
+ attrs,
28813
+ emit,
28814
+ slots
28815
+ } = _ref;
28816
+ useRender(() => createVNode(VChip, mergeProps({
28779
28817
  "color": props.allDay ? 'primary' : undefined,
28780
28818
  "density": "comfortable",
28781
28819
  "label": props.allDay,
28782
28820
  "width": "100%"
28783
- }, {
28821
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28822
+ allDay: props.allDay,
28823
+ day: props.day,
28824
+ event: props.event
28825
+ }))), {
28784
28826
  default: () => [createVNode(VBadge, {
28785
28827
  "inline": true,
28786
28828
  "dot": true,
@@ -28791,87 +28833,95 @@ const VCalendarEvent = genericComponent()({
28791
28833
  }
28792
28834
  });
28793
28835
 
28836
+ // Types
28837
+
28794
28838
  const makeVCalendarMonthDayProps = propsFactory({
28795
28839
  active: Boolean,
28796
28840
  color: String,
28797
- day: Object,
28841
+ day: {
28842
+ type: Object
28843
+ },
28798
28844
  disabled: Boolean,
28799
28845
  events: Array,
28800
28846
  title: [Number, String]
28801
28847
  }, 'VCalendarMonthDay');
28802
28848
  const VCalendarMonthDay = genericComponent()({
28803
28849
  name: 'VCalendarMonthDay',
28850
+ inheritAttrs: false,
28804
28851
  props: makeVCalendarMonthDayProps(),
28805
28852
  setup(props, _ref) {
28806
28853
  let {
28807
- emit,
28854
+ attrs,
28808
28855
  slots
28809
28856
  } = _ref;
28810
28857
  useRender(() => {
28811
- const hasTitle = !!(props.title || slots.title?.({
28812
- title: props.title
28813
- }));
28814
- return createVNode("div", {
28858
+ return createVNode("div", mergeProps({
28815
28859
  "class": ['v-calendar-month__day']
28816
- }, [!props.day?.isHidden && hasTitle && createVNode("div", {
28860
+ }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? createVNode("div", {
28817
28861
  "key": "title",
28818
28862
  "class": "v-calendar-weekly__day-label"
28819
- }, [slots.title?.({
28863
+ }, [slots.dayTitle?.({
28820
28864
  title: props.title
28821
- }) ?? createVNode(VBtn, {
28865
+ }) ?? createVNode(VBtn, mergeProps({
28822
28866
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
28823
28867
  "color": props.color,
28824
28868
  "disabled": props.disabled,
28825
28869
  "icon": true,
28826
28870
  "size": "x-small",
28827
- "variant": props.day?.isToday ? undefined : 'flat'
28828
- }, {
28829
- default: () => [props.title]
28830
- })]), !props.day?.isHidden && createVNode("div", {
28871
+ "variant": props.day?.isToday ? undefined : 'flat',
28872
+ "text": `${props.title}`
28873
+ }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? createVNode("div", {
28831
28874
  "key": "content",
28832
28875
  "class": "v-calendar-weekly__day-content"
28833
- }, [slots.content?.() ?? createVNode("div", null, [createVNode("div", {
28876
+ }, [slots.dayBody?.({
28877
+ day: props.day,
28878
+ events: props.events
28879
+ }) ?? createVNode("div", null, [createVNode("div", {
28834
28880
  "class": "v-calendar-weekly__day-alldayevents-container"
28835
- }, [props.events?.filter(event => event.allDay).map(event => slots.event ? slots.event({
28881
+ }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28836
28882
  day: props.day,
28837
28883
  allDay: true,
28838
28884
  event
28839
- }) : createVNode(VCalendarEvent, {
28885
+ }) : createVNode(VCalendarEvent, mergeProps({
28840
28886
  "day": props.day,
28841
28887
  "event": event,
28842
28888
  "allDay": true
28843
- }, null))]), createVNode("div", {
28889
+ }, attrs), null))]), createVNode("div", {
28844
28890
  "class": "v-calendar-weekly__day-events-container"
28845
- }, [props.events?.filter(event => !event.allDay).map(event => slots.event ? slots.event({
28891
+ }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28846
28892
  day: props.day,
28847
28893
  event,
28848
28894
  allDay: false
28849
- }) : createVNode(VCalendarEvent, {
28895
+ }) : createVNode(VCalendarEvent, mergeProps({
28850
28896
  "day": props.day,
28851
28897
  "event": event
28852
- }, null))])])]), !props.day?.isHidden && slots.default?.()]);
28898
+ }, attrs), null))])])]) : undefined]);
28853
28899
  });
28854
28900
  return {};
28855
28901
  }
28856
28902
  });
28857
28903
 
28904
+ // Types
28905
+
28858
28906
  const makeVCalendarProps = propsFactory({
28859
28907
  hideHeader: Boolean,
28860
28908
  hideWeekNumber: Boolean,
28861
28909
  ...makeCalendarProps(),
28862
28910
  ...makeVCalendarDayProps(),
28863
28911
  ...makeVCalendarHeaderProps()
28864
- }, 'VCalender');
28912
+ }, 'VCalendar');
28865
28913
  const VCalendar = genericComponent()({
28866
28914
  name: 'VCalendar',
28867
28915
  props: makeVCalendarProps(),
28868
28916
  emits: {
28869
28917
  next: null,
28870
28918
  prev: null,
28919
+ today: null,
28871
28920
  'update:modelValue': null
28872
28921
  },
28873
28922
  setup(props, _ref) {
28874
28923
  let {
28924
+ attrs,
28875
28925
  emit,
28876
28926
  slots
28877
28927
  } = _ref;
@@ -28889,27 +28939,33 @@ const VCalendar = genericComponent()({
28889
28939
  function onClickNext() {
28890
28940
  if (props.viewMode === 'month') {
28891
28941
  model.value = [adapter.addMonths(displayValue.value, 1)];
28892
- }
28893
- if (props.viewMode === 'week') {
28942
+ } else if (props.viewMode === 'week') {
28894
28943
  model.value = [adapter.addDays(displayValue.value, 7)];
28895
- }
28896
- if (props.viewMode === 'day') {
28944
+ } else if (props.viewMode === 'day') {
28897
28945
  model.value = [adapter.addDays(displayValue.value, 1)];
28898
28946
  }
28947
+ nextTick(() => {
28948
+ emit('next', model.value[0]);
28949
+ });
28899
28950
  }
28900
28951
  function onClickPrev() {
28901
28952
  if (props.viewMode === 'month') {
28902
28953
  model.value = [adapter.addMonths(displayValue.value, -1)];
28903
- }
28904
- if (props.viewMode === 'week') {
28954
+ } else if (props.viewMode === 'week') {
28905
28955
  model.value = [adapter.addDays(displayValue.value, -7)];
28906
- }
28907
- if (props.viewMode === 'day') {
28956
+ } else if (props.viewMode === 'day') {
28908
28957
  model.value = [adapter.addDays(displayValue.value, -1)];
28909
28958
  }
28959
+ nextTick(() => {
28960
+ emit('prev', model.value[0]);
28961
+ });
28910
28962
  }
28911
28963
  function onClickToday() {
28912
- model.value = [adapter.date()];
28964
+ const date = adapter.date();
28965
+ model.value = [date];
28966
+ nextTick(() => {
28967
+ emit('today', model.value[0]);
28968
+ });
28913
28969
  }
28914
28970
  const title = computed(() => {
28915
28971
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -28923,20 +28979,25 @@ const VCalendar = genericComponent()({
28923
28979
  'v-calendar-weekly': props.viewMode === 'week',
28924
28980
  'v-calendar-day': props.viewMode === 'day'
28925
28981
  }]
28926
- }, [createVNode("div", null, [!props.hideHeader && (!slots.header ? createVNode(VCalendarHeader, mergeProps({
28982
+ }, [createVNode("div", null, [!props.hideHeader && (slots.header?.({
28983
+ title: title.value,
28984
+ clickNext: onClickNext,
28985
+ clickPrev: onClickPrev,
28986
+ clickToday: onClickToday
28987
+ }) ?? createVNode(VCalendarHeader, mergeProps({
28927
28988
  "key": "calendar-header"
28928
28989
  }, calendarHeaderProps, {
28929
28990
  "title": title.value,
28930
28991
  "onClick:next": onClickNext,
28931
28992
  "onClick:prev": onClickPrev,
28932
28993
  "onClick:toToday": onClickToday
28933
- }), null) : slots.header({
28934
- title: title.value
28994
+ }), {
28995
+ title: slots.title
28935
28996
  }))]), createVNode("div", {
28936
28997
  "class": ['v-calendar__container', `days__${weekDays.value.length}`]
28937
28998
  }, [props.viewMode === 'month' && !props.hideDayHeader && createVNode("div", {
28938
28999
  "class": ['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
28939
- "key": "calenderWeeklyHead"
29000
+ "key": "calendarWeeklyHead"
28940
29001
  }, [!props.hideWeekNumber ? createVNode("div", {
28941
29002
  "key": "weekNumber0",
28942
29003
  "class": "v-calendar-weekly__head-weeknumber"
@@ -28945,24 +29006,39 @@ const VCalendar = genericComponent()({
28945
29006
  }, [dayNames[weekday]]))]), props.viewMode === 'month' && createVNode("div", {
28946
29007
  "key": "VCalendarMonth",
28947
29008
  "class": ['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])]
28948
- }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? createVNode("div", {
29009
+ }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? createVNode("div", mergeProps({
28949
29010
  "class": "v-calendar-month__weeknumber"
28950
- }, [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, {
28951
- "color": adapter.isSameDay(adapter.date(), day.date) ? 'primary' : undefined,
29011
+ }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
29012
+ weekNumber: weekNumbers.value[wi],
29013
+ week
29014
+ }))), [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, mergeProps({
29015
+ "key": day.date.getTime()
29016
+ }, calendarDayProps, {
28952
29017
  "day": day,
28953
- "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
29018
+ "title": adapter.format(day.date, 'dayOfMonth'),
28954
29019
  "events": props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end))
28955
- }, {
28956
- event: slots.event
28957
- }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => createVNode(VCalendarDay, mergeProps(calendarDayProps, {
29020
+ }, attrs), {
29021
+ ...pick(slots, ['day-body', 'day-event', 'day-title'])
29022
+ }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => slots['day-interval'] ? slots['day-interval']?.({
29023
+ ...calendarDayProps,
29024
+ day,
29025
+ dayIndex: i,
29026
+ events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
29027
+ }) : createVNode(VCalendarDay, mergeProps(calendarDayProps, {
28958
29028
  "day": day,
28959
29029
  "dayIndex": i,
28960
29030
  "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
28961
- }), null)), props.viewMode === 'day' && createVNode(VCalendarDay, mergeProps(calendarDayProps, {
28962
- "day": genDays([displayValue.value], adapter.date())[0],
29031
+ }, attrs), {
29032
+ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29033
+ })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29034
+ day: genDays([displayValue.value], adapter.date())[0],
29035
+ dayIndex: 0,
29036
+ events: props.events?.filter(e => adapter.isSameDay(e.start, genDays([displayValue.value], adapter.date())[0].date) || adapter.isSameDay(e.end, genDays([displayValue.value], adapter.date())[0].date))
29037
+ }) : createVNode(VCalendarDay, mergeProps(calendarDayProps, {
29038
+ "day": genDays([model.value[0]], adapter.date())[0],
28963
29039
  "dayIndex": 0,
28964
- "events": props.events?.filter(e => adapter.isSameDay(e.start, genDays([displayValue.value], adapter.date())[0].date) || adapter.isSameDay(e.end, genDays([displayValue.value], adapter.date())[0].date))
28965
- }), null)])]);
29040
+ "events": props.events?.filter(e => adapter.isSameDay(e.start, genDays([model.value[0]], adapter.date())[0].date) || adapter.isSameDay(e.end, genDays([model.value[0]], adapter.date())[0].date))
29041
+ }, attrs), null))])]);
28966
29042
  });
28967
29043
  return {
28968
29044
  daysInMonth,
@@ -29511,10 +29587,7 @@ const makeVIconBtnProps = propsFactory({
29511
29587
  hideOverlay: Boolean,
29512
29588
  icon: [String, Function, Object],
29513
29589
  iconColor: String,
29514
- iconSize: {
29515
- type: [Number, String],
29516
- default: 'default'
29517
- },
29590
+ iconSize: [Number, String],
29518
29591
  iconSizes: {
29519
29592
  type: Array,
29520
29593
  default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
@@ -29575,7 +29648,7 @@ const VIconBtn = genericComponent()({
29575
29648
  colorClasses,
29576
29649
  colorStyles,
29577
29650
  variantClasses
29578
- } = useVariant(toRef(() => ({
29651
+ } = useVariant(() => ({
29579
29652
  color: (() => {
29580
29653
  if (props.disabled) return undefined;
29581
29654
  if (!isActive.value) return props.color;
@@ -29590,7 +29663,7 @@ const VIconBtn = genericComponent()({
29590
29663
  if (isActive.value) return props.activeVariant ?? props.variant;
29591
29664
  return props.baseVariant ?? props.variant;
29592
29665
  })()
29593
- })));
29666
+ }));
29594
29667
  const btnSizeMap = new Map(props.sizes);
29595
29668
  const iconSizeMap = new Map(props.iconSizes);
29596
29669
  function onClick() {
@@ -29599,13 +29672,14 @@ const VIconBtn = genericComponent()({
29599
29672
  }
29600
29673
  useRender(() => {
29601
29674
  const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
29602
- const size = props.size;
29603
- const hasNamedSize = btnSizeMap.has(size);
29604
- const btnSize = hasNamedSize ? btnSizeMap.get(size) : size;
29675
+ const _btnSize = props.size;
29676
+ const hasNamedSize = btnSizeMap.has(_btnSize);
29677
+ const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
29605
29678
  const btnHeight = props.height ?? btnSize;
29606
29679
  const btnWidth = props.width ?? btnSize;
29607
- const _iconSize = hasNamedSize ? size : props.iconSize ?? size;
29608
- const iconSize = iconSizeMap.get(_iconSize) ?? _iconSize;
29680
+ const _iconSize = props.iconSize;
29681
+ const hasNamedIconSize = iconSizeMap.has(_iconSize);
29682
+ const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
29609
29683
  const iconProps = {
29610
29684
  icon,
29611
29685
  size: iconSize,
@@ -30086,11 +30160,11 @@ const VTimePickerClock = genericComponent()({
30086
30160
  const {
30087
30161
  textColorClasses,
30088
30162
  textColorStyles
30089
- } = useTextColor(toRef(props, 'color'));
30163
+ } = useTextColor(() => props.color);
30090
30164
  const {
30091
30165
  backgroundColorClasses,
30092
30166
  backgroundColorStyles
30093
- } = useBackgroundColor(toRef(props, 'color'));
30167
+ } = useBackgroundColor(() => props.color);
30094
30168
  const count = computed(() => props.max - props.min + 1);
30095
30169
  const roundCount = computed(() => props.double ? count.value / 2 : count.value);
30096
30170
  const degreesPerUnit = computed(() => 360 / roundCount.value);
@@ -30950,9 +31024,9 @@ const VTreeview = genericComponent()({
30950
31024
  const {
30951
31025
  items
30952
31026
  } = useListItems(props);
30953
- const activeColor = toRef(props, 'activeColor');
30954
- const baseColor = toRef(props, 'baseColor');
30955
- const color = toRef(props, 'color');
31027
+ const activeColor = toRef(() => props.activeColor);
31028
+ const baseColor = toRef(() => props.baseColor);
31029
+ const color = toRef(() => props.color);
30956
31030
  const activated = useProxiedModel(props, 'activated');
30957
31031
  const model = useProxiedModel(props, 'modelValue');
30958
31032
  const _selected = useProxiedModel(props, 'selected', props.modelValue);
@@ -30966,7 +31040,7 @@ const VTreeview = genericComponent()({
30966
31040
  const vListRef = ref();
30967
31041
  const opened = computed(() => props.openAll ? openAll(items.value) : props.opened);
30968
31042
  const flatItems = computed(() => flatten(items.value));
30969
- const search = toRef(props, 'search');
31043
+ const search = toRef(() => props.search);
30970
31044
  const {
30971
31045
  filteredItems
30972
31046
  } = useFilter(props, flatItems, search);
@@ -31009,18 +31083,18 @@ const VTreeview = genericComponent()({
31009
31083
  activeColor,
31010
31084
  baseColor,
31011
31085
  color,
31012
- collapseIcon: toRef(props, 'collapseIcon'),
31013
- expandIcon: toRef(props, 'expandIcon')
31086
+ collapseIcon: toRef(() => props.collapseIcon),
31087
+ expandIcon: toRef(() => props.expandIcon)
31014
31088
  },
31015
31089
  VTreeviewItem: {
31016
- activeClass: toRef(props, 'activeClass'),
31090
+ activeClass: toRef(() => props.activeClass),
31017
31091
  activeColor,
31018
31092
  baseColor,
31019
31093
  color,
31020
- density: toRef(props, 'density'),
31021
- disabled: toRef(props, 'disabled'),
31022
- lines: toRef(props, 'lines'),
31023
- variant: toRef(props, 'variant')
31094
+ density: toRef(() => props.density),
31095
+ disabled: toRef(() => props.disabled),
31096
+ lines: toRef(() => props.lines),
31097
+ variant: toRef(() => props.variant)
31024
31098
  }
31025
31099
  });
31026
31100
  useRender(() => {
@@ -31560,7 +31634,7 @@ function createVuetify$1() {
31560
31634
  };
31561
31635
  });
31562
31636
  }
31563
- const version$1 = "3.8.1";
31637
+ const version$1 = "3.8.3";
31564
31638
  createVuetify$1.version = version$1;
31565
31639
 
31566
31640
  // Vue's inject() can only be used in setup
@@ -31743,7 +31817,7 @@ const md3 = {
31743
31817
  flat: true
31744
31818
  },
31745
31819
  VAutocomplete: {
31746
- variant: 'filled'
31820
+ variant: 'outlined'
31747
31821
  },
31748
31822
  VBanner: {
31749
31823
  color: 'primary'
@@ -31772,7 +31846,10 @@ const md3 = {
31772
31846
  rounded: 'sm'
31773
31847
  },
31774
31848
  VCombobox: {
31775
- variant: 'filled'
31849
+ variant: 'outlined'
31850
+ },
31851
+ VDateInput: {
31852
+ variant: 'outlined'
31776
31853
  },
31777
31854
  VDatePicker: {
31778
31855
  controlHeight: 48,
@@ -31786,6 +31863,9 @@ const md3 = {
31786
31863
  rounded: 'circle'
31787
31864
  }
31788
31865
  },
31866
+ VFileInput: {
31867
+ variant: 'outlined'
31868
+ },
31789
31869
  VNavigationDrawer: {
31790
31870
  // VList: {
31791
31871
  // nav: true,
@@ -31794,8 +31874,15 @@ const md3 = {
31794
31874
  // },
31795
31875
  // },
31796
31876
  },
31877
+ VNumberInput: {
31878
+ variant: 'outlined',
31879
+ VBtn: {
31880
+ color: undefined,
31881
+ rounded: undefined
31882
+ }
31883
+ },
31797
31884
  VSelect: {
31798
- variant: 'filled'
31885
+ variant: 'outlined'
31799
31886
  },
31800
31887
  VSlider: {
31801
31888
  color: 'primary'
@@ -31804,10 +31891,10 @@ const md3 = {
31804
31891
  color: 'primary'
31805
31892
  },
31806
31893
  VTextarea: {
31807
- variant: 'filled'
31894
+ variant: 'outlined'
31808
31895
  },
31809
31896
  VTextField: {
31810
- variant: 'filled'
31897
+ variant: 'outlined'
31811
31898
  },
31812
31899
  VToolbar: {
31813
31900
  VBtn: {
@@ -31845,7 +31932,7 @@ var index = /*#__PURE__*/Object.freeze({
31845
31932
 
31846
31933
  /* eslint-disable local-rules/sort-imports */
31847
31934
 
31848
- const version = "3.8.1";
31935
+ const version = "3.8.3";
31849
31936
 
31850
31937
  /* eslint-disable local-rules/sort-imports */
31851
31938