@vuetify/nightly 3.8.2-master.2025-04-17 → 3.8.2-master.2025-04-22

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 (289) hide show
  1. package/CHANGELOG.md +24 -3
  2. package/dist/json/attributes.json +2022 -2022
  3. package/dist/json/importMap-labs.json +36 -36
  4. package/dist/json/importMap.json +170 -170
  5. package/dist/json/web-types.json +4067 -3809
  6. package/dist/vuetify-labs.cjs +631 -514
  7. package/dist/vuetify-labs.css +5232 -5223
  8. package/dist/vuetify-labs.d.ts +1855 -915
  9. package/dist/vuetify-labs.esm.js +632 -515
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +631 -514
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +402 -391
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2556 -2556
  16. package/dist/vuetify.d.ts +168 -166
  17. package/dist/vuetify.esm.js +403 -392
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +402 -391
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +893 -885
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.js +8 -9
  25. package/lib/components/VAlert/VAlert.js.map +1 -1
  26. package/lib/components/VAppBar/VAppBar.js +4 -4
  27. package/lib/components/VAppBar/VAppBar.js.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.js +1 -2
  29. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  30. package/lib/components/VBadge/VBadge.js +2 -3
  31. package/lib/components/VBadge/VBadge.js.map +1 -1
  32. package/lib/components/VBanner/VBanner.js +3 -3
  33. package/lib/components/VBanner/VBanner.js.map +1 -1
  34. package/lib/components/VBottomNavigation/VBottomNavigation.js +8 -8
  35. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  36. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +6 -6
  37. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  38. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +1 -2
  39. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  40. package/lib/components/VBtn/VBtn.js +3 -3
  41. package/lib/components/VBtn/VBtn.js.map +1 -1
  42. package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
  43. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  44. package/lib/components/VCard/VCard.js +7 -8
  45. package/lib/components/VCard/VCard.js.map +1 -1
  46. package/lib/components/VCheckbox/VCheckbox.js +2 -3
  47. package/lib/components/VCheckbox/VCheckbox.js.map +1 -1
  48. package/lib/components/VCheckbox/VCheckboxBtn.js +3 -3
  49. package/lib/components/VCheckbox/VCheckboxBtn.js.map +1 -1
  50. package/lib/components/VChip/VChip.js +8 -9
  51. package/lib/components/VChip/VChip.js.map +1 -1
  52. package/lib/components/VChipGroup/VChipGroup.js +5 -5
  53. package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
  54. package/lib/components/VCombobox/VCombobox.js +3 -4
  55. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  56. package/lib/components/VCounter/VCounter.js +2 -2
  57. package/lib/components/VCounter/VCounter.js.map +1 -1
  58. package/lib/components/VDataIterator/VDataIterator.js +2 -2
  59. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  60. package/lib/components/VDataTable/VDataTable.js +7 -7
  61. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  62. package/lib/components/VDataTable/VDataTableHeaders.js +1 -1
  63. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  64. package/lib/components/VDataTable/VDataTableServer.js +7 -7
  65. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  66. package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
  67. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  68. package/lib/components/VDataTable/composables/expand.d.ts +1 -1
  69. package/lib/components/VDataTable/composables/expand.js +1 -1
  70. package/lib/components/VDataTable/composables/expand.js.map +1 -1
  71. package/lib/components/VDataTable/composables/options.js +8 -8
  72. package/lib/components/VDataTable/composables/options.js.map +1 -1
  73. package/lib/components/VDataTable/composables/select.d.ts +2 -2
  74. package/lib/components/VDataTable/composables/select.js +2 -2
  75. package/lib/components/VDataTable/composables/select.js.map +1 -1
  76. package/lib/components/VDataTable/composables/sort.d.ts +2 -2
  77. package/lib/components/VDataTable/composables/sort.js +2 -2
  78. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  79. package/lib/components/VDatePicker/VDatePicker.js +4 -4
  80. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  81. package/lib/components/VDatePicker/VDatePickerHeader.js +1 -1
  82. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  83. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  84. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  85. package/lib/components/VDialog/VDialog.d.ts +9 -9
  86. package/lib/components/VDivider/VDivider.js +2 -2
  87. package/lib/components/VDivider/VDivider.js.map +1 -1
  88. package/lib/components/VEmptyState/VEmptyState.js +1 -2
  89. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  90. package/lib/components/VExpansionPanel/VExpansionPanel.js +3 -3
  91. package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
  92. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +3 -3
  93. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
  94. package/lib/components/VExpansionPanel/VExpansionPanels.js +14 -14
  95. package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  96. package/lib/components/VFab/VFab.js +2 -2
  97. package/lib/components/VFab/VFab.js.map +1 -1
  98. package/lib/components/VField/VField.js +5 -5
  99. package/lib/components/VField/VField.js.map +1 -1
  100. package/lib/components/VFileInput/VFileInput.js +2 -2
  101. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  102. package/lib/components/VFooter/VFooter.js +4 -4
  103. package/lib/components/VFooter/VFooter.js.map +1 -1
  104. package/lib/components/VForm/VForm.d.ts +40 -40
  105. package/lib/components/VIcon/VIcon.js +4 -4
  106. package/lib/components/VIcon/VIcon.js.map +1 -1
  107. package/lib/components/VImg/VImg.js +2 -2
  108. package/lib/components/VImg/VImg.js.map +1 -1
  109. package/lib/components/VInput/VInput.js +3 -3
  110. package/lib/components/VInput/VInput.js.map +1 -1
  111. package/lib/components/VLayout/VLayoutItem.js +5 -5
  112. package/lib/components/VLayout/VLayoutItem.js.map +1 -1
  113. package/lib/components/VList/VList.js +14 -14
  114. package/lib/components/VList/VList.js.map +1 -1
  115. package/lib/components/VList/VListGroup.js +2 -2
  116. package/lib/components/VList/VListGroup.js.map +1 -1
  117. package/lib/components/VList/VListItem.d.ts +3 -3
  118. package/lib/components/VList/VListItem.js +6 -6
  119. package/lib/components/VList/VListItem.js.map +1 -1
  120. package/lib/components/VList/VListSubheader.js +1 -2
  121. package/lib/components/VList/VListSubheader.js.map +1 -1
  122. package/lib/components/VMenu/VMenu.d.ts +15 -15
  123. package/lib/components/VMenu/VMenu.js +2 -2
  124. package/lib/components/VMenu/VMenu.js.map +1 -1
  125. package/lib/components/VMessages/VMessages.js +1 -1
  126. package/lib/components/VMessages/VMessages.js.map +1 -1
  127. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +6 -6
  128. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  129. package/lib/components/VNumberInput/VNumberInput.js +11 -11
  130. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  131. package/lib/components/VOtpInput/VOtpInput.js +7 -7
  132. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  133. package/lib/components/VOverlay/VOverlay.d.ts +3 -3
  134. package/lib/components/VOverlay/VOverlay.js +4 -4
  135. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  136. package/lib/components/VOverlay/locationStrategies.js +10 -1
  137. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  138. package/lib/components/VPagination/VPagination.js +7 -7
  139. package/lib/components/VPagination/VPagination.js.map +1 -1
  140. package/lib/components/VProgressCircular/VProgressCircular.js +9 -9
  141. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  142. package/lib/components/VProgressLinear/VProgressLinear.js +4 -4
  143. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  144. package/lib/components/VSelect/VSelect.js +2 -2
  145. package/lib/components/VSelect/VSelect.js.map +1 -1
  146. package/lib/components/VSelectionControl/VSelectionControl.d.ts +1 -1
  147. package/lib/components/VSelectionControl/VSelectionControl.js +7 -7
  148. package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
  149. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +15 -15
  150. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
  151. package/lib/components/VSheet/VSheet.js +1 -2
  152. package/lib/components/VSheet/VSheet.js.map +1 -1
  153. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +2 -2
  154. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  155. package/lib/components/VSlider/slider.js +10 -10
  156. package/lib/components/VSlider/slider.js.map +1 -1
  157. package/lib/components/VSnackbar/VSnackbar.d.ts +9 -9
  158. package/lib/components/VSparkline/VSparkline.js +2 -2
  159. package/lib/components/VSparkline/VSparkline.js.map +1 -1
  160. package/lib/components/VSwitch/VSwitch.js +3 -3
  161. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  162. package/lib/components/VSystemBar/VSystemBar.js +2 -2
  163. package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
  164. package/lib/components/VTabs/VTab.d.ts +3 -3
  165. package/lib/components/VTabs/VTab.js +1 -1
  166. package/lib/components/VTabs/VTab.js.map +1 -1
  167. package/lib/components/VTabs/VTabs.js +7 -7
  168. package/lib/components/VTabs/VTabs.js.map +1 -1
  169. package/lib/components/VTimeline/VTimeline.js +9 -9
  170. package/lib/components/VTimeline/VTimeline.js.map +1 -1
  171. package/lib/components/VTimeline/VTimelineDivider.js +2 -3
  172. package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
  173. package/lib/components/VToolbar/VToolbar.js +2 -2
  174. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  175. package/lib/components/VToolbar/VToolbarItems.js +2 -2
  176. package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
  177. package/lib/components/VTooltip/VTooltip.d.ts +9 -9
  178. package/lib/components/VTooltip/VTooltip.js +3 -3
  179. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  180. package/lib/components/VVirtualScroll/VVirtualScroll.js +1 -1
  181. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  182. package/lib/components/VWindow/VWindow.js +3 -3
  183. package/lib/components/VWindow/VWindow.js.map +1 -1
  184. package/lib/components/transitions/dialog-transition.js +11 -2
  185. package/lib/components/transitions/dialog-transition.js.map +1 -1
  186. package/lib/composables/border.d.ts +1 -1
  187. package/lib/composables/border.js +5 -8
  188. package/lib/composables/border.js.map +1 -1
  189. package/lib/composables/calendar.d.ts +21 -54
  190. package/lib/composables/calendar.js +11 -11
  191. package/lib/composables/calendar.js.map +1 -1
  192. package/lib/composables/color.d.ts +8 -10
  193. package/lib/composables/color.js +21 -22
  194. package/lib/composables/color.js.map +1 -1
  195. package/lib/composables/density.d.ts +1 -1
  196. package/lib/composables/density.js +2 -2
  197. package/lib/composables/density.js.map +1 -1
  198. package/lib/composables/display.d.ts +4 -2
  199. package/lib/composables/display.js +2 -2
  200. package/lib/composables/display.js.map +1 -1
  201. package/lib/composables/elevation.js +4 -6
  202. package/lib/composables/elevation.js.map +1 -1
  203. package/lib/composables/focus.d.ts +4 -2
  204. package/lib/composables/focus.js +2 -2
  205. package/lib/composables/focus.js.map +1 -1
  206. package/lib/composables/form.d.ts +7 -7
  207. package/lib/composables/form.js +3 -3
  208. package/lib/composables/form.js.map +1 -1
  209. package/lib/composables/goto.js +2 -2
  210. package/lib/composables/goto.js.map +1 -1
  211. package/lib/composables/group.d.ts +3 -3
  212. package/lib/composables/group.js +4 -4
  213. package/lib/composables/group.js.map +1 -1
  214. package/lib/composables/icons.d.ts +2 -2
  215. package/lib/composables/icons.js +2 -2
  216. package/lib/composables/icons.js.map +1 -1
  217. package/lib/composables/layout.d.ts +10 -4
  218. package/lib/composables/layout.js +4 -4
  219. package/lib/composables/layout.js.map +1 -1
  220. package/lib/composables/lazy.d.ts +1 -1
  221. package/lib/composables/lazy.js +2 -2
  222. package/lib/composables/lazy.js.map +1 -1
  223. package/lib/composables/loader.d.ts +4 -2
  224. package/lib/composables/loader.js +2 -2
  225. package/lib/composables/loader.js.map +1 -1
  226. package/lib/composables/locale.js +3 -3
  227. package/lib/composables/locale.js.map +1 -1
  228. package/lib/composables/nested/nested.d.ts +3 -3
  229. package/lib/composables/nested/nested.js +4 -4
  230. package/lib/composables/nested/nested.js.map +1 -1
  231. package/lib/composables/position.d.ts +1 -1
  232. package/lib/composables/position.js +2 -2
  233. package/lib/composables/position.js.map +1 -1
  234. package/lib/composables/router.d.ts +3 -3
  235. package/lib/composables/router.js +8 -8
  236. package/lib/composables/router.js.map +1 -1
  237. package/lib/composables/size.d.ts +8 -5
  238. package/lib/composables/size.js +6 -5
  239. package/lib/composables/size.js.map +1 -1
  240. package/lib/composables/ssrBoot.d.ts +4 -2
  241. package/lib/composables/ssrBoot.js +2 -2
  242. package/lib/composables/ssrBoot.js.map +1 -1
  243. package/lib/composables/stack.d.ts +7 -5
  244. package/lib/composables/stack.js +5 -5
  245. package/lib/composables/stack.js.map +1 -1
  246. package/lib/composables/theme.js +7 -7
  247. package/lib/composables/theme.js.map +1 -1
  248. package/lib/composables/variant.d.ts +5 -6
  249. package/lib/composables/variant.js +6 -6
  250. package/lib/composables/variant.js.map +1 -1
  251. package/lib/entry-bundler.js +1 -1
  252. package/lib/framework.d.ts +81 -79
  253. package/lib/framework.js +1 -1
  254. package/lib/labs/VCalendar/VCalendar.d.ts +600 -211
  255. package/lib/labs/VCalendar/VCalendar.js +55 -27
  256. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  257. package/lib/labs/VCalendar/VCalendarDay.css +9 -0
  258. package/lib/labs/VCalendar/VCalendarDay.d.ts +329 -17
  259. package/lib/labs/VCalendar/VCalendarDay.js +18 -10
  260. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  261. package/lib/labs/VCalendar/VCalendarDay.sass +8 -0
  262. package/lib/labs/VCalendar/VCalendarEvent.js +15 -5
  263. package/lib/labs/VCalendar/VCalendarEvent.js.map +1 -1
  264. package/lib/labs/VCalendar/VCalendarHeader.d.ts +44 -17
  265. package/lib/labs/VCalendar/VCalendarHeader.js +5 -2
  266. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  267. package/lib/labs/VCalendar/VCalendarInterval.d.ts +171 -17
  268. package/lib/labs/VCalendar/VCalendarInterval.js +66 -35
  269. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  270. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +92 -17
  271. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +30 -10
  272. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  273. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +122 -88
  274. package/lib/labs/VCalendar/VCalendarMonthDay.js +24 -22
  275. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  276. package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
  277. package/lib/labs/VIconBtn/VIconBtn.js +10 -12
  278. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  279. package/lib/labs/VPicker/VPicker.js +1 -2
  280. package/lib/labs/VPicker/VPicker.js.map +1 -1
  281. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -3
  282. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  283. package/lib/labs/VTreeview/VTreeview.js +11 -11
  284. package/lib/labs/VTreeview/VTreeview.js.map +1 -1
  285. package/lib/util/box.js.map +1 -1
  286. package/lib/util/helpers.d.ts +5 -2
  287. package/lib/util/helpers.js +9 -5
  288. package/lib/util/helpers.js.map +1 -1
  289. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.8.2-master.2025-04-17
2
+ * Vuetify v3.8.2-master.2025-04-22
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
@@ -442,15 +442,19 @@ function getEventCoordinates(e) {
442
442
 
443
443
  function destructComputed(getter) {
444
444
  const refs = reactive({});
445
- const base = computed(getter);
446
445
  watchEffect(() => {
447
- for (const key in base.value) {
448
- refs[key] = base.value[key];
446
+ const base = getter();
447
+ for (const key in base) {
448
+ refs[key] = base[key];
449
449
  }
450
450
  }, {
451
451
  flush: 'sync'
452
452
  });
453
- return toRefs(refs);
453
+ const obj = {};
454
+ for (const key in refs) {
455
+ obj[key] = toRef(() => refs[key]);
456
+ }
457
+ return obj;
454
458
  }
455
459
 
456
460
  /** Array.includes but value can be any type */
@@ -1741,7 +1745,7 @@ function createLayout(props) {
1741
1745
  const mainRect = computed(() => {
1742
1746
  return layers.value[layers.value.length - 1].layer;
1743
1747
  });
1744
- const mainStyles = computed(() => {
1748
+ const mainStyles = toRef(() => {
1745
1749
  return {
1746
1750
  '--v-layout-left': convertToUnit(mainRect.value.left),
1747
1751
  '--v-layout-right': convertToUnit(mainRect.value.right),
@@ -1856,10 +1860,10 @@ function createLayout(props) {
1856
1860
  layoutRect,
1857
1861
  rootZIndex
1858
1862
  });
1859
- const layoutClasses = computed(() => ['v-layout', {
1863
+ const layoutClasses = toRef(() => ['v-layout', {
1860
1864
  'v-layout--full-height': props.fullHeight
1861
1865
  }]);
1862
- const layoutStyles = computed(() => ({
1866
+ const layoutStyles = toRef(() => ({
1863
1867
  zIndex: parentLayout ? rootZIndex.value : undefined,
1864
1868
  position: parentLayout ? 'relative' : undefined,
1865
1869
  overflow: parentLayout ? 'hidden' : undefined
@@ -2250,7 +2254,7 @@ function createRtl(i18n, options) {
2250
2254
  return {
2251
2255
  isRtl,
2252
2256
  rtl,
2253
- rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2257
+ rtlClasses: toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2254
2258
  };
2255
2259
  }
2256
2260
  function provideRtl(locale, rtl, props) {
@@ -2258,7 +2262,7 @@ function provideRtl(locale, rtl, props) {
2258
2262
  return {
2259
2263
  isRtl,
2260
2264
  rtl,
2261
- rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2265
+ rtlClasses: toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2262
2266
  };
2263
2267
  }
2264
2268
  function useRtl() {
@@ -2482,7 +2486,7 @@ function createTheme(options) {
2482
2486
  }
2483
2487
  return acc;
2484
2488
  });
2485
- const current = computed(() => computedThemes.value[name.value]);
2489
+ const current = toRef(() => computedThemes.value[name.value]);
2486
2490
  const styles = computed(() => {
2487
2491
  const lines = [];
2488
2492
  if (current.value?.dark) {
@@ -2529,7 +2533,7 @@ function createTheme(options) {
2529
2533
  }
2530
2534
  } else {
2531
2535
  if (IN_BROWSER) {
2532
- head.addHeadObjs(computed(getHead));
2536
+ head.addHeadObjs(toRef(getHead));
2533
2537
  watchEffect(() => head.updateDOM());
2534
2538
  } else {
2535
2539
  head.addHeadObjs(getHead());
@@ -2548,7 +2552,7 @@ function createTheme(options) {
2548
2552
  }
2549
2553
  }
2550
2554
  }
2551
- const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2555
+ const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2552
2556
  return {
2553
2557
  install,
2554
2558
  isDisabled: parsedOptions.isDisabled,
@@ -2568,9 +2572,9 @@ function provideTheme(props) {
2568
2572
  getCurrentInstance('provideTheme');
2569
2573
  const theme = inject$1(ThemeSymbol, null);
2570
2574
  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}`);
2575
+ const name = toRef(() => props.theme ?? theme.name.value);
2576
+ const current = toRef(() => theme.themes.value[name.value]);
2577
+ const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2574
2578
  const newTheme = {
2575
2579
  ...theme,
2576
2580
  name,
@@ -2854,6 +2858,7 @@ function ExpandTransitionGenerator () {
2854
2858
  const makeVDialogTransitionProps = propsFactory({
2855
2859
  target: [Object, Array]
2856
2860
  }, 'v-dialog-transition');
2861
+ const saved = new WeakMap();
2857
2862
  const VDialogTransition = genericComponent()({
2858
2863
  name: 'VDialogTransition',
2859
2864
  props: makeVDialogTransitionProps(),
@@ -2870,13 +2875,15 @@ const VDialogTransition = genericComponent()({
2870
2875
  await new Promise(resolve => requestAnimationFrame(resolve));
2871
2876
  await new Promise(resolve => requestAnimationFrame(resolve));
2872
2877
  el.style.visibility = '';
2878
+ const dimensions = getDimensions(props.target, el);
2873
2879
  const {
2874
2880
  x,
2875
2881
  y,
2876
2882
  sx,
2877
2883
  sy,
2878
2884
  speed
2879
- } = getDimensions(props.target, el);
2885
+ } = dimensions;
2886
+ saved.set(el, dimensions);
2880
2887
  const animation = animate(el, [{
2881
2888
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2882
2889
  opacity: 0
@@ -2905,13 +2912,19 @@ const VDialogTransition = genericComponent()({
2905
2912
  },
2906
2913
  async onLeave(el, done) {
2907
2914
  await new Promise(resolve => requestAnimationFrame(resolve));
2915
+ let dimensions;
2916
+ if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
2917
+ dimensions = saved.get(el);
2918
+ } else {
2919
+ dimensions = getDimensions(props.target, el);
2920
+ }
2908
2921
  const {
2909
2922
  x,
2910
2923
  y,
2911
2924
  sx,
2912
2925
  sy,
2913
2926
  speed
2914
- } = getDimensions(props.target, el);
2927
+ } = dimensions;
2915
2928
  const animation = animate(el, [{}, {
2916
2929
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2917
2930
  opacity: 0
@@ -3131,13 +3144,14 @@ const VResponsive = genericComponent()({
3131
3144
  // Composables
3132
3145
  function useColor(colors) {
3133
3146
  return destructComputed(() => {
3147
+ const _colors = toValue(colors);
3134
3148
  const classes = [];
3135
3149
  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);
3150
+ if (_colors.background) {
3151
+ if (isCssColor(_colors.background)) {
3152
+ styles.backgroundColor = _colors.background;
3153
+ if (!_colors.text && isParsableColor(_colors.background)) {
3154
+ const backgroundColor = parseColor(_colors.background);
3141
3155
  if (backgroundColor.a == null || backgroundColor.a === 1) {
3142
3156
  const textColor = getForeground(backgroundColor);
3143
3157
  styles.color = textColor;
@@ -3145,15 +3159,15 @@ function useColor(colors) {
3145
3159
  }
3146
3160
  }
3147
3161
  } else {
3148
- classes.push(`bg-${colors.value.background}`);
3162
+ classes.push(`bg-${_colors.background}`);
3149
3163
  }
3150
3164
  }
3151
- if (colors.value.text) {
3152
- if (isCssColor(colors.value.text)) {
3153
- styles.color = colors.value.text;
3154
- styles.caretColor = colors.value.text;
3165
+ if (_colors.text) {
3166
+ if (isCssColor(_colors.text)) {
3167
+ styles.color = _colors.text;
3168
+ styles.caretColor = _colors.text;
3155
3169
  } else {
3156
- classes.push(`text-${colors.value.text}`);
3170
+ classes.push(`text-${_colors.text}`);
3157
3171
  }
3158
3172
  }
3159
3173
  return {
@@ -3162,27 +3176,25 @@ function useColor(colors) {
3162
3176
  };
3163
3177
  });
3164
3178
  }
3165
- function useTextColor(props, name) {
3166
- const colors = computed(() => ({
3167
- text: isRef(props) ? props.value : name ? props[name] : null
3168
- }));
3179
+ function useTextColor(color) {
3169
3180
  const {
3170
3181
  colorClasses: textColorClasses,
3171
3182
  colorStyles: textColorStyles
3172
- } = useColor(colors);
3183
+ } = useColor(() => ({
3184
+ text: toValue(color)
3185
+ }));
3173
3186
  return {
3174
3187
  textColorClasses,
3175
3188
  textColorStyles
3176
3189
  };
3177
3190
  }
3178
- function useBackgroundColor(props, name) {
3179
- const colors = computed(() => ({
3180
- background: isRef(props) ? props.value : name ? props[name] : null
3181
- }));
3191
+ function useBackgroundColor(color) {
3182
3192
  const {
3183
3193
  colorClasses: backgroundColorClasses,
3184
3194
  colorStyles: backgroundColorStyles
3185
- } = useColor(colors);
3195
+ } = useColor(() => ({
3196
+ background: toValue(color)
3197
+ }));
3186
3198
  return {
3187
3199
  backgroundColorClasses,
3188
3200
  backgroundColorStyles
@@ -3366,7 +3378,7 @@ const VImg = genericComponent()({
3366
3378
  const {
3367
3379
  backgroundColorClasses,
3368
3380
  backgroundColorStyles
3369
- } = useBackgroundColor(toRef(props, 'color'));
3381
+ } = useBackgroundColor(() => props.color);
3370
3382
  const {
3371
3383
  roundedClasses
3372
3384
  } = useRounded(props);
@@ -3473,7 +3485,7 @@ const VImg = genericComponent()({
3473
3485
  };
3474
3486
  poll();
3475
3487
  }
3476
- const containClasses = computed(() => ({
3488
+ const containClasses = toRef(() => ({
3477
3489
  'v-img__img--cover': props.cover,
3478
3490
  'v-img__img--contain': !props.cover
3479
3491
  }));
@@ -3610,16 +3622,13 @@ const makeBorderProps = propsFactory({
3610
3622
  function useBorder(props) {
3611
3623
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
3612
3624
  const borderClasses = computed(() => {
3613
- const border = isRef(props) ? props.value : props.border;
3614
- const classes = [];
3625
+ const border = props.border;
3615
3626
  if (border === true || border === '') {
3616
- classes.push(`${name}--border`);
3627
+ return `${name}--border`;
3617
3628
  } else if (typeof border === 'string' || border === 0) {
3618
- for (const value of String(border).split(' ')) {
3619
- classes.push(`border-${value}`);
3620
- }
3629
+ return String(border).split(' ').map(v => `border-${v}`);
3621
3630
  }
3622
- return classes;
3631
+ return [];
3623
3632
  });
3624
3633
  return {
3625
3634
  borderClasses
@@ -3644,12 +3653,10 @@ const makeElevationProps = propsFactory({
3644
3653
  }
3645
3654
  }, 'elevation');
3646
3655
  function useElevation(props) {
3647
- const elevationClasses = computed(() => {
3656
+ const elevationClasses = toRef(() => {
3648
3657
  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;
3658
+ if (elevation == null) return [];
3659
+ return [`elevation-${elevation}`];
3653
3660
  });
3654
3661
  return {
3655
3662
  elevationClasses
@@ -3700,7 +3707,7 @@ const VToolbar = genericComponent()({
3700
3707
  const {
3701
3708
  backgroundColorClasses,
3702
3709
  backgroundColorStyles
3703
- } = useBackgroundColor(toRef(props, 'color'));
3710
+ } = useBackgroundColor(() => props.color);
3704
3711
  const {
3705
3712
  borderClasses
3706
3713
  } = useBorder(props);
@@ -3909,7 +3916,7 @@ function useSsrBoot() {
3909
3916
  isBooted.value = true;
3910
3917
  });
3911
3918
  });
3912
- const ssrBootStyles = computed(() => !isBooted.value ? {
3919
+ const ssrBootStyles = toRef(() => !isBooted.value ? {
3913
3920
  transition: 'none !important'
3914
3921
  } : undefined);
3915
3922
  return {
@@ -3977,7 +3984,7 @@ const VAppBar = genericComponent()({
3977
3984
  } = useScroll(props, {
3978
3985
  canScroll
3979
3986
  });
3980
- const canHide = computed(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3987
+ const canHide = toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3981
3988
  const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3982
3989
  const isFlat = computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3983
3990
  const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
@@ -3988,7 +3995,7 @@ const VAppBar = genericComponent()({
3988
3995
  if (!canHide.value) return height + extensionHeight;
3989
3996
  return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
3990
3997
  });
3991
- useToggleScope(computed(() => !!props.scrollBehavior), () => {
3998
+ useToggleScope(() => !!props.scrollBehavior, () => {
3992
3999
  watchEffect(() => {
3993
4000
  if (canHide.value) {
3994
4001
  if (scrollBehavior.value.inverted) {
@@ -4009,11 +4016,11 @@ const VAppBar = genericComponent()({
4009
4016
  } = useLayoutItem({
4010
4017
  id: props.name,
4011
4018
  order: computed(() => parseInt(props.order, 10)),
4012
- position: toRef(props, 'location'),
4019
+ position: toRef(() => props.location),
4013
4020
  layoutSize: height,
4014
4021
  elementSize: shallowRef(undefined),
4015
4022
  active: isActive,
4016
- absolute: toRef(props, 'absolute')
4023
+ absolute: toRef(() => props.absolute)
4017
4024
  });
4018
4025
  useRender(() => {
4019
4026
  const toolbarProps = VToolbar.filterProps(props);
@@ -4056,7 +4063,7 @@ const makeDensityProps = propsFactory({
4056
4063
  }, 'density');
4057
4064
  function useDensity(props) {
4058
4065
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4059
- const densityClasses = computed(() => {
4066
+ const densityClasses = toRef(() => {
4060
4067
  return `${name}--density-${props.density}`;
4061
4068
  });
4062
4069
  return {
@@ -4086,24 +4093,24 @@ const makeVariantProps = propsFactory({
4086
4093
  }, 'variant');
4087
4094
  function useVariant(props) {
4088
4095
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4089
- const variantClasses = computed(() => {
4096
+ const variantClasses = toRef(() => {
4090
4097
  const {
4091
4098
  variant
4092
- } = unref(props);
4099
+ } = toValue(props);
4093
4100
  return `${name}--variant-${variant}`;
4094
4101
  });
4095
4102
  const {
4096
4103
  colorClasses,
4097
4104
  colorStyles
4098
- } = useColor(computed(() => {
4105
+ } = useColor(() => {
4099
4106
  const {
4100
4107
  variant,
4101
4108
  color
4102
- } = unref(props);
4109
+ } = toValue(props);
4103
4110
  return {
4104
4111
  [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color
4105
4112
  };
4106
- }));
4113
+ });
4107
4114
  return {
4108
4115
  colorClasses,
4109
4116
  colorStyles,
@@ -4148,11 +4155,11 @@ const VBtnGroup = genericComponent()({
4148
4155
  provideDefaults({
4149
4156
  VBtn: {
4150
4157
  height: 'auto',
4151
- baseColor: toRef(props, 'baseColor'),
4152
- color: toRef(props, 'color'),
4153
- density: toRef(props, 'density'),
4158
+ baseColor: toRef(() => props.baseColor),
4159
+ color: toRef(() => props.color),
4160
+ density: toRef(() => props.density),
4154
4161
  flat: true,
4155
- variant: toRef(props, 'variant')
4162
+ variant: toRef(() => props.variant)
4156
4163
  }
4157
4164
  });
4158
4165
  useRender(() => {
@@ -4202,7 +4209,7 @@ function useGroupItem(props, injectKey) {
4202
4209
  if (!required) return group;
4203
4210
  throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);
4204
4211
  }
4205
- const value = toRef(props, 'value');
4212
+ const value = toRef(() => props.value);
4206
4213
  const disabled = computed(() => !!(group.disabled.value || props.disabled));
4207
4214
  group.register({
4208
4215
  id,
@@ -4351,12 +4358,12 @@ function useGroup(props, injectKey) {
4351
4358
  unregister,
4352
4359
  selected,
4353
4360
  select,
4354
- disabled: toRef(props, 'disabled'),
4361
+ disabled: toRef(() => props.disabled),
4355
4362
  prev: () => step(items.length - 1),
4356
4363
  next: () => step(1),
4357
4364
  isSelected: id => selected.value.includes(id),
4358
- selectedClass: computed(() => props.selectedClass),
4359
- items: computed(() => items),
4365
+ selectedClass: toRef(() => props.selectedClass),
4366
+ items: toRef(() => items),
4360
4367
  getItemIndex: value => getItemIndex(items, value)
4361
4368
  };
4362
4369
  provide(injectKey, state);
@@ -4612,7 +4619,7 @@ const useIcon = props => {
4612
4619
  const icons = inject$1(IconSymbol);
4613
4620
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4614
4621
  const iconData = computed(() => {
4615
- const iconAlias = unref(props);
4622
+ const iconAlias = toValue(props);
4616
4623
  if (!iconAlias) return {
4617
4624
  component: VComponentIcon
4618
4625
  };
@@ -4662,14 +4669,15 @@ const makeSizeProps = propsFactory({
4662
4669
  function useSize(props) {
4663
4670
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4664
4671
  return destructComputed(() => {
4672
+ const size = props.size;
4665
4673
  let sizeClasses;
4666
4674
  let sizeStyles;
4667
- if (includes(predefinedSizes, props.size)) {
4668
- sizeClasses = `${name}--size-${props.size}`;
4669
- } else if (props.size) {
4675
+ if (includes(predefinedSizes, size)) {
4676
+ sizeClasses = `${name}--size-${size}`;
4677
+ } else if (size) {
4670
4678
  sizeStyles = {
4671
- width: convertToUnit(props.size),
4672
- height: convertToUnit(props.size)
4679
+ width: convertToUnit(size),
4680
+ height: convertToUnit(size)
4673
4681
  };
4674
4682
  }
4675
4683
  return {
@@ -4701,20 +4709,20 @@ const VIcon = genericComponent()({
4701
4709
  attrs,
4702
4710
  slots
4703
4711
  } = _ref;
4704
- const slotIcon = ref();
4712
+ const slotIcon = shallowRef();
4705
4713
  const {
4706
4714
  themeClasses
4707
4715
  } = useTheme();
4708
4716
  const {
4709
4717
  iconData
4710
- } = useIcon(computed(() => slotIcon.value || props.icon));
4718
+ } = useIcon(() => slotIcon.value || props.icon);
4711
4719
  const {
4712
4720
  sizeClasses
4713
4721
  } = useSize(props);
4714
4722
  const {
4715
4723
  textColorClasses,
4716
4724
  textColorStyles
4717
- } = useTextColor(toRef(props, 'color'));
4725
+ } = useTextColor(() => props.color);
4718
4726
  useRender(() => {
4719
4727
  const slotValue = slots.default?.();
4720
4728
  if (slotValue) {
@@ -4820,11 +4828,11 @@ const VProgressCircular = genericComponent()({
4820
4828
  const {
4821
4829
  textColorClasses,
4822
4830
  textColorStyles
4823
- } = useTextColor(toRef(props, 'color'));
4831
+ } = useTextColor(() => props.color);
4824
4832
  const {
4825
4833
  textColorClasses: underlayColorClasses,
4826
4834
  textColorStyles: underlayColorStyles
4827
- } = useTextColor(toRef(props, 'bgColor'));
4835
+ } = useTextColor(() => props.bgColor);
4828
4836
  const {
4829
4837
  intersectionRef,
4830
4838
  isIntersecting
@@ -4833,15 +4841,15 @@ const VProgressCircular = genericComponent()({
4833
4841
  resizeRef,
4834
4842
  contentRect
4835
4843
  } = 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(() => {
4844
+ const normalizedValue = toRef(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
4845
+ const width = toRef(() => Number(props.width));
4846
+ const size = toRef(() => {
4839
4847
  // Get size from element if size prop value is small, large etc
4840
4848
  return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
4841
4849
  });
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));
4850
+ const diameter = toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
4851
+ const strokeWidth = toRef(() => width.value / size.value * diameter.value);
4852
+ const strokeDashOffset = toRef(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));
4845
4853
  watchEffect(() => {
4846
4854
  intersectionRef.value = root.value;
4847
4855
  resizeRef.value = root.value;
@@ -5019,19 +5027,19 @@ const VProgressLinear = genericComponent()({
5019
5027
  const {
5020
5028
  textColorClasses,
5021
5029
  textColorStyles
5022
- } = useTextColor(props, 'color');
5030
+ } = useTextColor(() => props.color);
5023
5031
  const {
5024
5032
  backgroundColorClasses,
5025
5033
  backgroundColorStyles
5026
- } = useBackgroundColor(computed(() => props.bgColor || props.color));
5034
+ } = useBackgroundColor(() => props.bgColor || props.color);
5027
5035
  const {
5028
5036
  backgroundColorClasses: bufferColorClasses,
5029
5037
  backgroundColorStyles: bufferColorStyles
5030
- } = useBackgroundColor(computed(() => props.bufferColor || props.bgColor || props.color));
5038
+ } = useBackgroundColor(() => props.bufferColor || props.bgColor || props.color);
5031
5039
  const {
5032
5040
  backgroundColorClasses: barColorClasses,
5033
5041
  backgroundColorStyles: barColorStyles
5034
- } = useBackgroundColor(props, 'color');
5042
+ } = useBackgroundColor(() => props.color);
5035
5043
  const {
5036
5044
  roundedClasses
5037
5045
  } = useRounded(props);
@@ -5138,7 +5146,7 @@ const makeLoaderProps = propsFactory({
5138
5146
  }, 'loader');
5139
5147
  function useLoader(props) {
5140
5148
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5141
- const loaderClasses = computed(() => ({
5149
+ const loaderClasses = toRef(() => ({
5142
5150
  [`${name}--loading`]: props.loading
5143
5151
  }));
5144
5152
  return {
@@ -5177,7 +5185,7 @@ const makePositionProps = propsFactory({
5177
5185
  }, 'position');
5178
5186
  function usePosition(props) {
5179
5187
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5180
- const positionClasses = computed(() => {
5188
+ const positionClasses = toRef(() => {
5181
5189
  return props.position ? `${name}--${props.position}` : undefined;
5182
5190
  });
5183
5191
  return {
@@ -5198,12 +5206,12 @@ function useRouter() {
5198
5206
  }
5199
5207
  function useLink(props, attrs) {
5200
5208
  const RouterLink = resolveDynamicComponent('RouterLink');
5201
- const isLink = computed(() => !!(props.href || props.to));
5209
+ const isLink = toRef(() => !!(props.href || props.to));
5202
5210
  const isClickable = computed(() => {
5203
5211
  return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');
5204
5212
  });
5205
5213
  if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {
5206
- const href = toRef(props, 'href');
5214
+ const href = toRef(() => props.href);
5207
5215
  return {
5208
5216
  isLink,
5209
5217
  isClickable,
@@ -5213,12 +5221,12 @@ function useLink(props, attrs) {
5213
5221
  })
5214
5222
  };
5215
5223
  }
5224
+
5216
5225
  // 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);
5226
+ const routerLink = RouterLink.useLink({
5227
+ to: toRef(() => props.to || ''),
5228
+ replace: toRef(() => props.replace)
5229
+ });
5222
5230
  // Actual link needs to be undefined when to prop is not used
5223
5231
  const link = computed(() => props.to ? routerLink : undefined);
5224
5232
  const route = useRoute();
@@ -5238,7 +5246,7 @@ function useLink(props, attrs) {
5238
5246
  href,
5239
5247
  linkProps: reactive({
5240
5248
  href,
5241
- 'aria-current': computed(() => isActive.value ? 'page' : undefined)
5249
+ 'aria-current': toRef(() => isActive.value ? 'page' : undefined)
5242
5250
  })
5243
5251
  };
5244
5252
  }
@@ -5687,7 +5695,7 @@ const VBtn = genericComponent()({
5687
5695
  }
5688
5696
  return group?.isSelected.value;
5689
5697
  });
5690
- const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5698
+ const color = toRef(() => isActive.value ? props.activeColor ?? props.color : props.color);
5691
5699
  const variantProps = computed(() => {
5692
5700
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5693
5701
  return {
@@ -5701,7 +5709,7 @@ const VBtn = genericComponent()({
5701
5709
  variantClasses
5702
5710
  } = useVariant(variantProps);
5703
5711
  const isDisabled = computed(() => group?.disabled.value || props.disabled);
5704
- const isElevated = computed(() => {
5712
+ const isElevated = toRef(() => {
5705
5713
  return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);
5706
5714
  });
5707
5715
  const valueAttr = computed(() => {
@@ -5904,15 +5912,11 @@ const VAlert = genericComponent()({
5904
5912
  slots
5905
5913
  } = _ref;
5906
5914
  const isActive = useProxiedModel(props, 'modelValue');
5907
- const icon = computed(() => {
5915
+ const icon = toRef(() => {
5908
5916
  if (props.icon === false) return undefined;
5909
5917
  if (!props.type) return props.icon;
5910
5918
  return props.icon ?? `$${props.type}`;
5911
5919
  });
5912
- const variantProps = computed(() => ({
5913
- color: props.color ?? props.type,
5914
- variant: props.variant
5915
- }));
5916
5920
  const {
5917
5921
  themeClasses
5918
5922
  } = provideTheme(props);
@@ -5920,7 +5924,10 @@ const VAlert = genericComponent()({
5920
5924
  colorClasses,
5921
5925
  colorStyles,
5922
5926
  variantClasses
5923
- } = useVariant(variantProps);
5927
+ } = useVariant(() => ({
5928
+ color: props.color ?? props.type,
5929
+ variant: props.variant
5930
+ }));
5924
5931
  const {
5925
5932
  densityClasses
5926
5933
  } = useDensity(props);
@@ -5942,11 +5949,11 @@ const VAlert = genericComponent()({
5942
5949
  const {
5943
5950
  textColorClasses,
5944
5951
  textColorStyles
5945
- } = useTextColor(toRef(props, 'borderColor'));
5952
+ } = useTextColor(() => props.borderColor);
5946
5953
  const {
5947
5954
  t
5948
5955
  } = useLocale();
5949
- const closeProps = computed(() => ({
5956
+ const closeProps = toRef(() => ({
5950
5957
  'aria-label': t(props.closeLabel),
5951
5958
  onClick(e) {
5952
5959
  isActive.value = false;
@@ -6183,8 +6190,8 @@ const VSelectionControlGroup = genericComponent()({
6183
6190
  } = _ref;
6184
6191
  const modelValue = useProxiedModel(props, 'modelValue');
6185
6192
  const uid = useId();
6186
- const id = computed(() => props.id || `v-selection-control-group-${uid}`);
6187
- const name = computed(() => props.name || id.value);
6193
+ const id = toRef(() => props.id || `v-selection-control-group-${uid}`);
6194
+ const name = toRef(() => props.name || id.value);
6188
6195
  const updateHandlers = new Set();
6189
6196
  provide(VSelectionControlGroupSymbol, {
6190
6197
  modelValue,
@@ -6200,20 +6207,20 @@ const VSelectionControlGroup = genericComponent()({
6200
6207
  });
6201
6208
  provideDefaults({
6202
6209
  [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'),
6210
+ color: toRef(() => props.color),
6211
+ disabled: toRef(() => props.disabled),
6212
+ density: toRef(() => props.density),
6213
+ error: toRef(() => props.error),
6214
+ inline: toRef(() => props.inline),
6208
6215
  modelValue,
6209
- multiple: computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6216
+ multiple: toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6210
6217
  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')
6218
+ falseIcon: toRef(() => props.falseIcon),
6219
+ trueIcon: toRef(() => props.trueIcon),
6220
+ readonly: toRef(() => props.readonly),
6221
+ ripple: toRef(() => props.ripple),
6222
+ type: toRef(() => props.type),
6223
+ valueComparator: toRef(() => props.valueComparator)
6217
6224
  }
6218
6225
  });
6219
6226
  useRender(() => createVNode("div", {
@@ -6269,16 +6276,16 @@ function useSelectionControl(props) {
6269
6276
  const {
6270
6277
  textColorClasses,
6271
6278
  textColorStyles
6272
- } = useTextColor(computed(() => {
6279
+ } = useTextColor(() => {
6273
6280
  if (props.error || props.disabled) return undefined;
6274
6281
  return model.value ? props.color : props.baseColor;
6275
- }));
6282
+ });
6276
6283
  const {
6277
6284
  backgroundColorClasses,
6278
6285
  backgroundColorStyles
6279
- } = useBackgroundColor(computed(() => {
6286
+ } = useBackgroundColor(() => {
6280
6287
  return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
6281
- }));
6288
+ });
6282
6289
  const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);
6283
6290
  return {
6284
6291
  group,
@@ -6323,8 +6330,8 @@ const VSelectionControl = genericComponent()({
6323
6330
  const isFocused = shallowRef(false);
6324
6331
  const isFocusVisible = shallowRef(false);
6325
6332
  const input = ref();
6326
- const id = computed(() => props.id || `input-${uid}`);
6327
- const isInteractive = computed(() => !props.disabled && !props.readonly);
6333
+ const id = toRef(() => props.id || `input-${uid}`);
6334
+ const isInteractive = toRef(() => !props.disabled && !props.readonly);
6328
6335
  group?.onForceUpdate(() => {
6329
6336
  if (input.value) {
6330
6337
  input.value.checked = model.value;
@@ -6462,10 +6469,10 @@ const VCheckboxBtn = genericComponent()({
6462
6469
  indeterminate.value = false;
6463
6470
  }
6464
6471
  }
6465
- const falseIcon = computed(() => {
6472
+ const falseIcon = toRef(() => {
6466
6473
  return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
6467
6474
  });
6468
- const trueIcon = computed(() => {
6475
+ const trueIcon = toRef(() => {
6469
6476
  return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
6470
6477
  });
6471
6478
  useRender(() => {
@@ -6553,7 +6560,7 @@ const VMessages = genericComponent()({
6553
6560
  const {
6554
6561
  textColorClasses,
6555
6562
  textColorStyles
6556
- } = useTextColor(computed(() => props.color));
6563
+ } = useTextColor(() => props.color);
6557
6564
  useRender(() => createVNode(MaybeTransition, {
6558
6565
  "transition": props.transition,
6559
6566
  "tag": "div",
@@ -6583,7 +6590,7 @@ const makeFocusProps = propsFactory({
6583
6590
  function useFocus(props) {
6584
6591
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
6585
6592
  const isFocused = useProxiedModel(props, 'focused');
6586
- const focusClasses = computed(() => {
6593
+ const focusClasses = toRef(() => {
6587
6594
  return {
6588
6595
  [`${name}--focused`]: isFocused.value
6589
6596
  };
@@ -6622,8 +6629,8 @@ const makeFormProps = propsFactory({
6622
6629
  }, 'form');
6623
6630
  function createForm(props) {
6624
6631
  const model = useProxiedModel(props, 'modelValue');
6625
- const isDisabled = computed(() => props.disabled);
6626
- const isReadonly = computed(() => props.readonly);
6632
+ const isDisabled = toRef(() => props.disabled);
6633
+ const isReadonly = toRef(() => props.readonly);
6627
6634
  const isValidating = shallowRef(false);
6628
6635
  const items = ref([]);
6629
6636
  const errors = ref([]);
@@ -6713,7 +6720,7 @@ function createForm(props) {
6713
6720
  isValidating,
6714
6721
  isValid: model,
6715
6722
  items,
6716
- validateOn: toRef(props, 'validateOn')
6723
+ validateOn: toRef(() => props.validateOn)
6717
6724
  });
6718
6725
  return {
6719
6726
  errors,
@@ -7028,10 +7035,10 @@ const VInput = genericComponent()({
7028
7035
  resetValidation,
7029
7036
  validate
7030
7037
  }));
7031
- const color = computed(() => {
7038
+ const color = toRef(() => {
7032
7039
  return props.error || props.disabled ? undefined : props.focused ? props.color : props.baseColor;
7033
7040
  });
7034
- const iconColor = computed(() => {
7041
+ const iconColor = toRef(() => {
7035
7042
  if (!props.iconColor) return undefined;
7036
7043
  return props.iconColor === true ? color.value : props.iconColor;
7037
7044
  });
@@ -7121,7 +7128,6 @@ const VCheckbox = genericComponent()({
7121
7128
  blur
7122
7129
  } = useFocus(props);
7123
7130
  const uid = useId();
7124
- const id = computed(() => props.id || `checkbox-${uid}`);
7125
7131
  useRender(() => {
7126
7132
  const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
7127
7133
  const inputProps = VInput.filterProps(props);
@@ -7131,7 +7137,7 @@ const VCheckbox = genericComponent()({
7131
7137
  }, rootAttrs, inputProps, {
7132
7138
  "modelValue": model.value,
7133
7139
  "onUpdate:modelValue": $event => model.value = $event,
7134
- "id": id.value,
7140
+ "id": props.id || `checkbox-${uid}`,
7135
7141
  "focused": isFocused.value,
7136
7142
  "style": props.style
7137
7143
  }), {
@@ -7315,7 +7321,7 @@ function useDisplay() {
7315
7321
  return false;
7316
7322
  }
7317
7323
  });
7318
- const displayClasses = computed(() => {
7324
+ const displayClasses = toRef(() => {
7319
7325
  if (!name) return {};
7320
7326
  return {
7321
7327
  [`${name}--mobile`]: mobile.value
@@ -7430,7 +7436,7 @@ function useGoTo() {
7430
7436
  const goTo = {
7431
7437
  ...goToInstance,
7432
7438
  // can be set via VLocaleProvider
7433
- rtl: computed(() => goToInstance.rtl.value || isRtl.value)
7439
+ rtl: toRef(() => goToInstance.rtl.value || isRtl.value)
7434
7440
  };
7435
7441
  async function go(target, options) {
7436
7442
  return scrollTo(target, mergeDeep(_options, options), false, goTo);
@@ -7922,11 +7928,11 @@ const VChipGroup = genericComponent()({
7922
7928
  } = useGroup(props, VChipGroupSymbol);
7923
7929
  provideDefaults({
7924
7930
  VChip: {
7925
- baseColor: toRef(props, 'baseColor'),
7926
- color: toRef(props, 'color'),
7927
- disabled: toRef(props, 'disabled'),
7928
- filter: toRef(props, 'filter'),
7929
- variant: toRef(props, 'variant')
7931
+ baseColor: toRef(() => props.baseColor),
7932
+ color: toRef(() => props.color),
7933
+ disabled: toRef(() => props.disabled),
7934
+ filter: toRef(() => props.filter),
7935
+ variant: toRef(() => props.variant)
7930
7936
  }
7931
7937
  });
7932
7938
  useRender(() => {
@@ -8052,9 +8058,9 @@ const VChip = genericComponent()({
8052
8058
  const isActive = useProxiedModel(props, 'modelValue');
8053
8059
  const group = useGroupItem(props, VChipGroupSymbol, false);
8054
8060
  const link = useLink(props, attrs);
8055
- const isLink = computed(() => props.link !== false && link.isLink.value);
8061
+ const isLink = toRef(() => props.link !== false && link.isLink.value);
8056
8062
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8057
- const closeProps = computed(() => ({
8063
+ const closeProps = toRef(() => ({
8058
8064
  'aria-label': t(props.closeLabel),
8059
8065
  onClick(e) {
8060
8066
  e.preventDefault();
@@ -8063,18 +8069,17 @@ const VChip = genericComponent()({
8063
8069
  emit('click:close', e);
8064
8070
  }
8065
8071
  }));
8066
- const variantProps = computed(() => {
8072
+ const {
8073
+ colorClasses,
8074
+ colorStyles,
8075
+ variantClasses
8076
+ } = useVariant(() => {
8067
8077
  const showColor = !group || group.isSelected.value;
8068
8078
  return {
8069
8079
  color: showColor ? props.color ?? props.baseColor : props.baseColor,
8070
8080
  variant: props.variant
8071
8081
  };
8072
8082
  });
8073
- const {
8074
- colorClasses,
8075
- colorStyles,
8076
- variantClasses
8077
- } = useVariant(variantProps);
8078
8083
  function onClick(e) {
8079
8084
  emit('click', e);
8080
8085
  if (!isClickable.value) return;
@@ -8741,8 +8746,8 @@ const useNested = props => {
8741
8746
  id: shallowRef(),
8742
8747
  root: {
8743
8748
  opened,
8744
- activatable: toRef(props, 'activatable'),
8745
- selectable: toRef(props, 'selectable'),
8749
+ activatable: toRef(() => props.activatable),
8750
+ selectable: toRef(() => props.selectable),
8746
8751
  activated,
8747
8752
  selected,
8748
8753
  selectedValues: computed(() => {
@@ -8871,7 +8876,7 @@ const useNested = props => {
8871
8876
  const useNestedItem = (id, isGroup) => {
8872
8877
  const parent = inject$1(VNestedSymbol, emptyNested);
8873
8878
  const uidSymbol = Symbol('nested item');
8874
- const computedId = computed(() => id.value !== undefined ? id.value : uidSymbol);
8879
+ const computedId = computed(() => toValue(id) ?? uidSymbol);
8875
8880
  const item = {
8876
8881
  ...parent,
8877
8882
  id: computedId,
@@ -8947,7 +8952,7 @@ const VListGroup = genericComponent()({
8947
8952
  isOpen,
8948
8953
  open,
8949
8954
  id: _id
8950
- } = useNestedItem(toRef(props, 'value'), true);
8955
+ } = useNestedItem(() => props.value, true);
8951
8956
  const id = computed(() => `v-list-group--id-${String(_id.value)}`);
8952
8957
  const list = useList();
8953
8958
  const {
@@ -9121,12 +9126,12 @@ const VListItem = genericComponent()({
9121
9126
  } = useNestedItem(id, false);
9122
9127
  const list = useList();
9123
9128
  const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9124
- const isLink = computed(() => props.link !== false && link.isLink.value);
9129
+ const isLink = toRef(() => props.link !== false && link.isLink.value);
9125
9130
  const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9126
9131
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9127
- const roundedProps = computed(() => props.rounded || props.nav);
9128
- const color = computed(() => props.color ?? props.activeColor);
9129
- const variantProps = computed(() => ({
9132
+ const roundedProps = toRef(() => props.rounded || props.nav);
9133
+ const color = toRef(() => props.color ?? props.activeColor);
9134
+ const variantProps = toRef(() => ({
9130
9135
  color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
9131
9136
  variant: props.variant
9132
9137
  }));
@@ -9169,7 +9174,7 @@ const VListItem = genericComponent()({
9169
9174
  const {
9170
9175
  roundedClasses
9171
9176
  } = useRounded(roundedProps);
9172
- const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9177
+ const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9173
9178
  const slotProps = computed(() => ({
9174
9179
  isActive: isActive.value,
9175
9180
  select,
@@ -9339,7 +9344,7 @@ const VListSubheader = genericComponent()({
9339
9344
  const {
9340
9345
  textColorClasses,
9341
9346
  textColorStyles
9342
- } = useTextColor(toRef(props, 'color'));
9347
+ } = useTextColor(() => props.color);
9343
9348
  useRender(() => {
9344
9349
  const hasText = !!(slots.default || props.title);
9345
9350
  return createVNode(props.tag, {
@@ -9384,7 +9389,7 @@ const VDivider = genericComponent()({
9384
9389
  const {
9385
9390
  textColorClasses,
9386
9391
  textColorStyles
9387
- } = useTextColor(toRef(props, 'color'));
9392
+ } = useTextColor(() => props.color);
9388
9393
  const dividerStyles = computed(() => {
9389
9394
  const styles = {};
9390
9395
  if (props.length) {
@@ -9746,7 +9751,7 @@ const VList = genericComponent()({
9746
9751
  const {
9747
9752
  backgroundColorClasses,
9748
9753
  backgroundColorStyles
9749
- } = useBackgroundColor(toRef(props, 'bgColor'));
9754
+ } = useBackgroundColor(() => props.bgColor);
9750
9755
  const {
9751
9756
  borderClasses
9752
9757
  } = useBorder(props);
@@ -9769,30 +9774,30 @@ const VList = genericComponent()({
9769
9774
  select,
9770
9775
  getPath
9771
9776
  } = useNested(props);
9772
- const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9773
- const activeColor = toRef(props, 'activeColor');
9774
- const baseColor = toRef(props, 'baseColor');
9775
- const color = toRef(props, 'color');
9777
+ const lineClasses = toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9778
+ const activeColor = toRef(() => props.activeColor);
9779
+ const baseColor = toRef(() => props.baseColor);
9780
+ const color = toRef(() => props.color);
9776
9781
  createList();
9777
9782
  provideDefaults({
9778
9783
  VListGroup: {
9779
9784
  activeColor,
9780
9785
  baseColor,
9781
9786
  color,
9782
- expandIcon: toRef(props, 'expandIcon'),
9783
- collapseIcon: toRef(props, 'collapseIcon')
9787
+ expandIcon: toRef(() => props.expandIcon),
9788
+ collapseIcon: toRef(() => props.collapseIcon)
9784
9789
  },
9785
9790
  VListItem: {
9786
- activeClass: toRef(props, 'activeClass'),
9791
+ activeClass: toRef(() => props.activeClass),
9787
9792
  activeColor,
9788
9793
  baseColor,
9789
9794
  color,
9790
- density: toRef(props, 'density'),
9791
- disabled: toRef(props, 'disabled'),
9792
- lines: toRef(props, 'lines'),
9793
- nav: toRef(props, 'nav'),
9794
- slim: toRef(props, 'slim'),
9795
- variant: toRef(props, 'variant')
9795
+ density: toRef(() => props.density),
9796
+ disabled: toRef(() => props.disabled),
9797
+ lines: toRef(() => props.lines),
9798
+ nav: toRef(() => props.nav),
9799
+ slim: toRef(() => props.slim),
9800
+ variant: toRef(() => props.variant)
9796
9801
  }
9797
9802
  });
9798
9803
  const isFocused = shallowRef(false);
@@ -10120,13 +10125,22 @@ function connectedLocationStrategy(data, props, contentStyles) {
10120
10125
  onScopeDispose(() => {
10121
10126
  observer.disconnect();
10122
10127
  });
10128
+ let targetBox = new Box({
10129
+ x: 0,
10130
+ y: 0,
10131
+ width: 0,
10132
+ height: 0
10133
+ });
10123
10134
 
10124
10135
  // eslint-disable-next-line max-statements
10125
10136
  function updateLocation() {
10126
10137
  observe = false;
10127
10138
  requestAnimationFrame(() => observe = true);
10128
10139
  if (!data.target.value || !data.contentEl.value) return;
10129
- const targetBox = getTargetBox(data.target.value);
10140
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10141
+ targetBox = getTargetBox(data.target.value);
10142
+ } // Otherwise target element is hidden, use last known value
10143
+
10130
10144
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10131
10145
  const scrollParents = getScrollParents(data.contentEl.value);
10132
10146
  const viewportMargin = 12;
@@ -10836,7 +10850,7 @@ const makeLazyProps = propsFactory({
10836
10850
  }, 'lazy');
10837
10851
  function useLazy(props, active) {
10838
10852
  const isBooted = shallowRef(false);
10839
- const hasContent = computed(() => isBooted.value || props.eager || active.value);
10853
+ const hasContent = toRef(() => isBooted.value || props.eager || active.value);
10840
10854
  watch(active, () => isBooted.value = true);
10841
10855
  function onAfterLeave() {
10842
10856
  if (!props.eager) isBooted.value = false;
@@ -10873,10 +10887,10 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10873
10887
  activeChildren: new Set()
10874
10888
  });
10875
10889
  provide(StackSymbol, stack);
10876
- const _zIndex = shallowRef(Number(zIndex.value));
10890
+ const _zIndex = shallowRef(Number(toValue(zIndex)));
10877
10891
  useToggleScope(isActive, () => {
10878
10892
  const lastZIndex = globalStack.at(-1)?.[1];
10879
- _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10893
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(toValue(zIndex));
10880
10894
  if (createStackEntry) {
10881
10895
  globalStack.push([vm.uid, _zIndex.value]);
10882
10896
  }
@@ -10896,11 +10910,11 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10896
10910
  setTimeout(() => globalTop.value = _isTop);
10897
10911
  });
10898
10912
  }
10899
- const localTop = computed(() => !stack.activeChildren.size);
10913
+ const localTop = toRef(() => !stack.activeChildren.size);
10900
10914
  return {
10901
10915
  globalTop: readonly(globalTop),
10902
10916
  localTop,
10903
- stackStyles: computed(() => ({
10917
+ stackStyles: toRef(() => ({
10904
10918
  zIndex: _zIndex.value
10905
10919
  }))
10906
10920
  };
@@ -11117,14 +11131,14 @@ const VOverlay = genericComponent()({
11117
11131
  hasContent,
11118
11132
  onAfterLeave: _onAfterLeave
11119
11133
  } = useLazy(props, isActive);
11120
- const scrimColor = useBackgroundColor(computed(() => {
11134
+ const scrimColor = useBackgroundColor(() => {
11121
11135
  return typeof props.scrim === 'string' ? props.scrim : null;
11122
- }));
11136
+ });
11123
11137
  const {
11124
11138
  globalTop,
11125
11139
  localTop,
11126
11140
  stackStyles
11127
- } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack);
11141
+ } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);
11128
11142
  const {
11129
11143
  activatorEl,
11130
11144
  activatorRef,
@@ -11450,7 +11464,7 @@ const VMenu = genericComponent()({
11450
11464
  isRtl
11451
11465
  } = useRtl();
11452
11466
  const uid = useId();
11453
- const id = computed(() => props.id || `v-menu-${uid}`);
11467
+ const id = toRef(() => props.id || `v-menu-${uid}`);
11454
11468
  const overlay = ref();
11455
11469
  const parent = inject$1(VMenuSymbol, null);
11456
11470
  const openChildren = shallowRef(new Set());
@@ -11618,7 +11632,7 @@ const VCounter = genericComponent()({
11618
11632
  let {
11619
11633
  slots
11620
11634
  } = _ref;
11621
- const counter = computed(() => {
11635
+ const counter = toRef(() => {
11622
11636
  return props.max ? `${props.value} / ${props.max}` : String(props.value);
11623
11637
  });
11624
11638
  useRender(() => createVNode(MaybeTransition, {
@@ -11745,12 +11759,12 @@ const VField = genericComponent()({
11745
11759
  const {
11746
11760
  rtlClasses
11747
11761
  } = useRtl();
11748
- const isActive = computed(() => props.dirty || props.active);
11749
- const hasLabel = computed(() => !!(props.label || slots.label));
11750
- const hasFloatingLabel = computed(() => !props.singleLine && hasLabel.value);
11762
+ const isActive = toRef(() => props.dirty || props.active);
11763
+ const hasLabel = toRef(() => !!(props.label || slots.label));
11764
+ const hasFloatingLabel = toRef(() => !props.singleLine && hasLabel.value);
11751
11765
  const uid = useId();
11752
11766
  const id = computed(() => props.id || `input-${uid}`);
11753
- const messagesId = computed(() => `${id.value}-messages`);
11767
+ const messagesId = toRef(() => `${id.value}-messages`);
11754
11768
  const labelRef = ref();
11755
11769
  const floatingLabelRef = ref();
11756
11770
  const controlRef = ref();
@@ -11765,7 +11779,7 @@ const VField = genericComponent()({
11765
11779
  const {
11766
11780
  backgroundColorClasses,
11767
11781
  backgroundColorStyles
11768
- } = useBackgroundColor(toRef(props, 'bgColor'));
11782
+ } = useBackgroundColor(() => props.bgColor);
11769
11783
  const {
11770
11784
  textColorClasses,
11771
11785
  textColorStyles
@@ -12492,7 +12506,7 @@ const VVirtualScroll = genericComponent()({
12492
12506
  paddingTop,
12493
12507
  paddingBottom,
12494
12508
  computedItems
12495
- } = useVirtual(props, toRef(props, 'items'));
12509
+ } = useVirtual(props, toRef(() => props.items));
12496
12510
  useToggleScope(() => props.renderless, () => {
12497
12511
  function handleListeners() {
12498
12512
  let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -12729,7 +12743,7 @@ const VSelect = genericComponent()({
12729
12743
  _menu.value = v;
12730
12744
  }
12731
12745
  });
12732
- const label = computed(() => menu.value ? props.closeText : props.openText);
12746
+ const label = toRef(() => menu.value ? props.closeText : props.openText);
12733
12747
  const computedMenuProps = computed(() => {
12734
12748
  return {
12735
12749
  ...props.menuProps,
@@ -13231,7 +13245,6 @@ const VAutocomplete = genericComponent()({
13231
13245
  const vMenuRef = ref();
13232
13246
  const vVirtualScrollRef = ref();
13233
13247
  const selectionIndex = shallowRef(-1);
13234
- const color = computed(() => vTextFieldRef.value?.color);
13235
13248
  const {
13236
13249
  items,
13237
13250
  transformIn,
@@ -13240,7 +13253,7 @@ const VAutocomplete = genericComponent()({
13240
13253
  const {
13241
13254
  textColorClasses,
13242
13255
  textColorStyles
13243
- } = useTextColor(color);
13256
+ } = useTextColor(() => vTextFieldRef.value?.color);
13244
13257
  const search = useProxiedModel(props, 'search', '');
13245
13258
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13246
13259
  const transformed = transformOut(v);
@@ -13689,7 +13702,7 @@ const VBadge = genericComponent()({
13689
13702
  const {
13690
13703
  backgroundColorClasses,
13691
13704
  backgroundColorStyles
13692
- } = useBackgroundColor(toRef(props, 'color'));
13705
+ } = useBackgroundColor(() => props.color);
13693
13706
  const {
13694
13707
  roundedClasses
13695
13708
  } = useRounded(props);
@@ -13699,7 +13712,7 @@ const VBadge = genericComponent()({
13699
13712
  const {
13700
13713
  textColorClasses,
13701
13714
  textColorStyles
13702
- } = useTextColor(toRef(props, 'textColor'));
13715
+ } = useTextColor(() => props.textColor);
13703
13716
  const {
13704
13717
  themeClasses
13705
13718
  } = useTheme();
@@ -13811,7 +13824,7 @@ const VBanner = genericComponent()({
13811
13824
  const {
13812
13825
  backgroundColorClasses,
13813
13826
  backgroundColorStyles
13814
- } = useBackgroundColor(props, 'bgColor');
13827
+ } = useBackgroundColor(() => props.bgColor);
13815
13828
  const {
13816
13829
  borderClasses
13817
13830
  } = useBorder(props);
@@ -13840,8 +13853,8 @@ const VBanner = genericComponent()({
13840
13853
  const {
13841
13854
  themeClasses
13842
13855
  } = provideTheme(props);
13843
- const color = toRef(props, 'color');
13844
- const density = toRef(props, 'density');
13856
+ const color = toRef(() => props.color);
13857
+ const density = toRef(() => props.density);
13845
13858
  provideDefaults({
13846
13859
  VBannerActions: {
13847
13860
  color,
@@ -13950,7 +13963,7 @@ const VBottomNavigation = genericComponent()({
13950
13963
  const {
13951
13964
  backgroundColorClasses,
13952
13965
  backgroundColorStyles
13953
- } = useBackgroundColor(toRef(props, 'bgColor'));
13966
+ } = useBackgroundColor(() => props.bgColor);
13954
13967
  const {
13955
13968
  densityClasses
13956
13969
  } = useDensity(props);
@@ -13970,19 +13983,19 @@ const VBottomNavigation = genericComponent()({
13970
13983
  } = useLayoutItem({
13971
13984
  id: props.name,
13972
13985
  order: computed(() => parseInt(props.order, 10)),
13973
- position: computed(() => 'bottom'),
13974
- layoutSize: computed(() => isActive.value ? height.value : 0),
13986
+ position: toRef(() => 'bottom'),
13987
+ layoutSize: toRef(() => isActive.value ? height.value : 0),
13975
13988
  elementSize: height,
13976
13989
  active: isActive,
13977
- absolute: toRef(props, 'absolute')
13990
+ absolute: toRef(() => props.absolute)
13978
13991
  });
13979
13992
  useGroup(props, VBtnToggleSymbol);
13980
13993
  provideDefaults({
13981
13994
  VBtn: {
13982
- baseColor: toRef(props, 'baseColor'),
13983
- color: toRef(props, 'color'),
13984
- density: toRef(props, 'density'),
13985
- stacked: computed(() => props.mode !== 'horizontal'),
13995
+ baseColor: toRef(() => props.baseColor),
13996
+ color: toRef(() => props.color),
13997
+ density: toRef(() => props.density),
13998
+ stacked: toRef(() => props.mode !== 'horizontal'),
13986
13999
  variant: 'text'
13987
14000
  }
13988
14001
  }, {
@@ -14218,11 +14231,10 @@ const VBreadcrumbsItem = genericComponent()({
14218
14231
  } = _ref;
14219
14232
  const link = useLink(props, attrs);
14220
14233
  const isActive = computed(() => props.active || link.isActive?.value);
14221
- const color = computed(() => isActive.value ? props.activeColor : props.color);
14222
14234
  const {
14223
14235
  textColorClasses,
14224
14236
  textColorStyles
14225
- } = useTextColor(color);
14237
+ } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14226
14238
  useRender(() => {
14227
14239
  return createVNode(props.tag, {
14228
14240
  "class": ['v-breadcrumbs-item', {
@@ -14277,7 +14289,7 @@ const VBreadcrumbs = genericComponent()({
14277
14289
  const {
14278
14290
  backgroundColorClasses,
14279
14291
  backgroundColorStyles
14280
- } = useBackgroundColor(toRef(props, 'bgColor'));
14292
+ } = useBackgroundColor(() => props.bgColor);
14281
14293
  const {
14282
14294
  densityClasses
14283
14295
  } = useDensity(props);
@@ -14286,13 +14298,13 @@ const VBreadcrumbs = genericComponent()({
14286
14298
  } = useRounded(props);
14287
14299
  provideDefaults({
14288
14300
  VBreadcrumbsDivider: {
14289
- divider: toRef(props, 'divider')
14301
+ divider: toRef(() => props.divider)
14290
14302
  },
14291
14303
  VBreadcrumbsItem: {
14292
- activeClass: toRef(props, 'activeClass'),
14293
- activeColor: toRef(props, 'activeColor'),
14294
- color: toRef(props, 'color'),
14295
- disabled: toRef(props, 'disabled')
14304
+ activeClass: toRef(() => props.activeClass),
14305
+ activeColor: toRef(() => props.activeColor),
14306
+ color: toRef(() => props.color),
14307
+ disabled: toRef(() => props.disabled)
14296
14308
  }
14297
14309
  });
14298
14310
  const items = computed(() => props.items.map(item => {
@@ -14615,10 +14627,10 @@ const VCard = genericComponent()({
14615
14627
  roundedClasses
14616
14628
  } = useRounded(props);
14617
14629
  const link = useLink(props, attrs);
14618
- const isLink = computed(() => props.link !== false && link.isLink.value);
14619
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));
14620
14630
  useRender(() => {
14621
- const Tag = isLink.value ? 'a' : props.tag;
14631
+ const isLink = props.link !== false && link.isLink.value;
14632
+ const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
14633
+ const Tag = isLink ? 'a' : props.tag;
14622
14634
  const hasTitle = !!(slots.title || props.title != null);
14623
14635
  const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
14624
14636
  const hasHeader = hasTitle || hasSubtitle;
@@ -14632,10 +14644,10 @@ const VCard = genericComponent()({
14632
14644
  'v-card--disabled': props.disabled,
14633
14645
  'v-card--flat': props.flat,
14634
14646
  'v-card--hover': props.hover && !(props.disabled || props.flat),
14635
- 'v-card--link': isClickable.value
14647
+ 'v-card--link': isClickable
14636
14648
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14637
14649
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14638
- "onClick": isClickable.value && link.navigate,
14650
+ "onClick": isClickable && link.navigate,
14639
14651
  "tabindex": props.disabled ? -1 : undefined
14640
14652
  }, link.linkProps), {
14641
14653
  default: () => [hasImage && createVNode("div", {
@@ -14680,8 +14692,8 @@ const VCard = genericComponent()({
14680
14692
  default: () => [slots.text?.() ?? props.text]
14681
14693
  }), slots.default?.(), slots.actions && createVNode(VCardActions, null, {
14682
14694
  default: slots.actions
14683
- }), genOverlays(isClickable.value, 'v-card')]
14684
- }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
14695
+ }), genOverlays(isClickable, 'v-card')]
14696
+ }), [[resolveDirective("ripple"), isClickable && props.ripple]]);
14685
14697
  });
14686
14698
  return {};
14687
14699
  }
@@ -14894,8 +14906,8 @@ const VWindow = genericComponent()({
14894
14906
  transitionHeight,
14895
14907
  rootRef
14896
14908
  });
14897
- const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0);
14898
- const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14909
+ const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0);
14910
+ const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14899
14911
  function prev() {
14900
14912
  canMoveBack.value && group.prev();
14901
14913
  }
@@ -15797,7 +15809,7 @@ const useSlider = _ref => {
15797
15809
  const {
15798
15810
  isRtl
15799
15811
  } = useRtl();
15800
- const isReversed = toRef(props, 'reverse');
15812
+ const isReversed = toRef(() => props.reverse);
15801
15813
  const vertical = computed(() => props.direction === 'vertical');
15802
15814
  const indexFromEnd = computed(() => vertical.value !== isReversed.value);
15803
15815
  const {
@@ -15811,7 +15823,7 @@ const useSlider = _ref => {
15811
15823
  const tickSize = computed(() => parseInt(props.tickSize, 10));
15812
15824
  const trackSize = computed(() => parseInt(props.trackSize, 10));
15813
15825
  const numTicks = computed(() => (max.value - min.value) / step.value);
15814
- const disabled = toRef(props, 'disabled');
15826
+ const disabled = toRef(() => props.disabled);
15815
15827
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
15816
15828
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
15817
15829
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -15913,7 +15925,7 @@ const useSlider = _ref => {
15913
15925
  const percentage = (val - min.value) / (max.value - min.value) * 100;
15914
15926
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
15915
15927
  };
15916
- const showTicks = toRef(props, 'showTicks');
15928
+ const showTicks = toRef(() => props.showTicks);
15917
15929
  const parsedTicks = computed(() => {
15918
15930
  if (!showTicks.value) return [];
15919
15931
  if (!props.ticks) {
@@ -15944,11 +15956,11 @@ const useSlider = _ref => {
15944
15956
  }));
15945
15957
  const data = {
15946
15958
  activeThumbRef,
15947
- color: toRef(props, 'color'),
15959
+ color: toRef(() => props.color),
15948
15960
  decimals,
15949
15961
  disabled,
15950
- direction: toRef(props, 'direction'),
15951
- elevation: toRef(props, 'elevation'),
15962
+ direction: toRef(() => props.direction),
15963
+ elevation: toRef(() => props.elevation),
15952
15964
  hasLabels,
15953
15965
  isReversed,
15954
15966
  indexFromEnd,
@@ -15961,16 +15973,16 @@ const useSlider = _ref => {
15961
15973
  parsedTicks,
15962
15974
  parseMouseMove,
15963
15975
  position,
15964
- readonly: toRef(props, 'readonly'),
15965
- rounded: toRef(props, 'rounded'),
15976
+ readonly: toRef(() => props.readonly),
15977
+ rounded: toRef(() => props.rounded),
15966
15978
  roundValue,
15967
15979
  showTicks,
15968
15980
  startOffset,
15969
15981
  step,
15970
15982
  thumbSize,
15971
15983
  thumbColor,
15972
- thumbLabel: toRef(props, 'thumbLabel'),
15973
- ticks: toRef(props, 'ticks'),
15984
+ thumbLabel: toRef(() => props.thumbLabel),
15985
+ ticks: toRef(() => props.ticks),
15974
15986
  tickSize,
15975
15987
  trackColor,
15976
15988
  trackContainerRef,
@@ -16889,7 +16901,7 @@ const VSheet = genericComponent()({
16889
16901
  const {
16890
16902
  backgroundColorClasses,
16891
16903
  backgroundColorStyles
16892
- } = useBackgroundColor(toRef(props, 'color'));
16904
+ } = useBackgroundColor(() => props.color);
16893
16905
  const {
16894
16906
  borderClasses
16895
16907
  } = useBorder(props);
@@ -16936,7 +16948,7 @@ const VPicker = genericComponent()({
16936
16948
  const {
16937
16949
  backgroundColorClasses,
16938
16950
  backgroundColorStyles
16939
- } = useBackgroundColor(toRef(props, 'color'));
16951
+ } = useBackgroundColor(() => props.color);
16940
16952
  useRender(() => {
16941
16953
  const sheetProps = VSheet.filterProps(props);
16942
16954
  const hasTitle = !!(props.title || slots.title);
@@ -17921,7 +17933,6 @@ const VCombobox = genericComponent()({
17921
17933
  const vVirtualScrollRef = ref();
17922
17934
  const selectionIndex = shallowRef(-1);
17923
17935
  let cleared = false;
17924
- const color = computed(() => vTextFieldRef.value?.color);
17925
17936
  const {
17926
17937
  items,
17927
17938
  transformIn,
@@ -17930,7 +17941,7 @@ const VCombobox = genericComponent()({
17930
17941
  const {
17931
17942
  textColorClasses,
17932
17943
  textColorStyles
17933
- } = useTextColor(color);
17944
+ } = useTextColor(() => vTextFieldRef.value?.color);
17934
17945
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
17935
17946
  const transformed = transformOut(v);
17936
17947
  return props.multiple ? transformed : transformed[0] ?? null;
@@ -17985,7 +17996,7 @@ const VCombobox = genericComponent()({
17985
17996
  _menu.value = v;
17986
17997
  }
17987
17998
  });
17988
- const label = computed(() => menu.value ? props.closeText : props.openText);
17999
+ const label = toRef(() => menu.value ? props.closeText : props.openText);
17989
18000
  watch(_search, value => {
17990
18001
  if (cleared) {
17991
18002
  // wait for clear to finish, VTextField sets _search to null
@@ -18491,7 +18502,7 @@ const makeDataTableExpandProps = propsFactory({
18491
18502
  }, 'DataTable-expand');
18492
18503
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18493
18504
  function provideExpanded(props) {
18494
- const expandOnClick = toRef(props, 'expandOnClick');
18505
+ const expandOnClick = toRef(() => props.expandOnClick);
18495
18506
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18496
18507
  return new Set(v);
18497
18508
  }, v => {
@@ -18678,23 +18689,23 @@ function useOptions(_ref) {
18678
18689
  search
18679
18690
  } = _ref;
18680
18691
  const vm = getCurrentInstance('VDataTable');
18681
- const options = computed(() => ({
18692
+ const options = () => ({
18682
18693
  page: page.value,
18683
18694
  itemsPerPage: itemsPerPage.value,
18684
18695
  sortBy: sortBy.value,
18685
18696
  groupBy: groupBy.value,
18686
18697
  search: search.value
18687
- }));
18698
+ });
18688
18699
  let oldOptions = null;
18689
- watch(options, () => {
18690
- if (deepEqual(oldOptions, options.value)) return;
18700
+ watch(options, value => {
18701
+ if (deepEqual(oldOptions, value)) return;
18691
18702
 
18692
18703
  // Reset page when searching
18693
- if (oldOptions && oldOptions.search !== options.value.search) {
18704
+ if (oldOptions && oldOptions.search !== value.search) {
18694
18705
  page.value = 1;
18695
18706
  }
18696
- vm.emit('update:options', options.value);
18697
- oldOptions = options.value;
18707
+ vm.emit('update:options', value);
18708
+ oldOptions = value;
18698
18709
  }, {
18699
18710
  deep: true,
18700
18711
  immediate: true
@@ -18975,7 +18986,7 @@ function provideSelection(props, _ref9) {
18975
18986
  });
18976
18987
  return !!items.length && isSelected(items);
18977
18988
  });
18978
- const showSelectAll = computed(() => selectStrategy.value.showSelectAll);
18989
+ const showSelectAll = toRef(() => selectStrategy.value.showSelectAll);
18979
18990
  const data = {
18980
18991
  toggleSelect,
18981
18992
  select,
@@ -19013,8 +19024,8 @@ const makeDataTableSortProps = propsFactory({
19013
19024
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
19014
19025
  function createSort(props) {
19015
19026
  const sortBy = useProxiedModel(props, 'sortBy');
19016
- const mustSort = toRef(props, 'mustSort');
19017
- const multiSort = toRef(props, 'multiSort');
19027
+ const mustSort = toRef(() => props.mustSort);
19028
+ const multiSort = toRef(() => props.multiSort);
19018
19029
  return {
19019
19030
  sortBy,
19020
19031
  mustSort,
@@ -19232,7 +19243,7 @@ const VDataIterator = genericComponent()({
19232
19243
  slots
19233
19244
  } = _ref;
19234
19245
  const groupBy = useProxiedModel(props, 'groupBy');
19235
- const search = toRef(props, 'search');
19246
+ const search = toRef(() => props.search);
19236
19247
  const {
19237
19248
  items
19238
19249
  } = useDataIteratorItems(props);
@@ -19276,7 +19287,7 @@ const VDataIterator = genericComponent()({
19276
19287
  const {
19277
19288
  flatItems
19278
19289
  } = useGroupedItems(sortedItems, groupBy, opened);
19279
- const itemsLength = computed(() => flatItems.value.length);
19290
+ const itemsLength = toRef(() => flatItems.value.length);
19280
19291
  const {
19281
19292
  startIndex,
19282
19293
  stopIndex,
@@ -19556,13 +19567,13 @@ const VPagination = genericComponent()({
19556
19567
  } = useRefs();
19557
19568
  provideDefaults({
19558
19569
  VPaginationBtn: {
19559
- color: toRef(props, 'color'),
19560
- border: toRef(props, 'border'),
19561
- density: toRef(props, 'density'),
19562
- size: toRef(props, 'size'),
19563
- variant: toRef(props, 'variant'),
19564
- rounded: toRef(props, 'rounded'),
19565
- elevation: toRef(props, 'elevation')
19570
+ color: toRef(() => props.color),
19571
+ border: toRef(() => props.border),
19572
+ density: toRef(() => props.density),
19573
+ size: toRef(() => props.size),
19574
+ variant: toRef(() => props.variant),
19575
+ rounded: toRef(() => props.rounded),
19576
+ elevation: toRef(() => props.elevation)
19566
19577
  }
19567
19578
  });
19568
19579
  const items = computed(() => {
@@ -20203,7 +20214,7 @@ const VDataTableHeaders = genericComponent()({
20203
20214
  const {
20204
20215
  backgroundColorClasses,
20205
20216
  backgroundColorStyles
20206
- } = useBackgroundColor(props, 'color');
20217
+ } = useBackgroundColor(() => props.color);
20207
20218
  const {
20208
20219
  displayClasses,
20209
20220
  mobile
@@ -20861,13 +20872,13 @@ const VDataTable = genericComponent()({
20861
20872
  filterFunctions
20862
20873
  } = createHeaders(props, {
20863
20874
  groupBy,
20864
- showSelect: toRef(props, 'showSelect'),
20865
- showExpand: toRef(props, 'showExpand')
20875
+ showSelect: toRef(() => props.showSelect),
20876
+ showExpand: toRef(() => props.showExpand)
20866
20877
  });
20867
20878
  const {
20868
20879
  items
20869
20880
  } = useDataTableItems(props, columns);
20870
- const search = toRef(props, 'search');
20881
+ const search = toRef(() => props.search);
20871
20882
  const {
20872
20883
  filteredItems
20873
20884
  } = useFilter(props, items, search, {
@@ -20950,10 +20961,10 @@ const VDataTable = genericComponent()({
20950
20961
  });
20951
20962
  provideDefaults({
20952
20963
  VDataTableRows: {
20953
- hideNoData: toRef(props, 'hideNoData'),
20954
- noDataText: toRef(props, 'noDataText'),
20955
- loading: toRef(props, 'loading'),
20956
- loadingText: toRef(props, 'loadingText')
20964
+ hideNoData: toRef(() => props.hideNoData),
20965
+ noDataText: toRef(() => props.noDataText),
20966
+ loading: toRef(() => props.loading),
20967
+ loadingText: toRef(() => props.loadingText)
20957
20968
  }
20958
20969
  });
20959
20970
  const slotProps = computed(() => ({
@@ -21050,13 +21061,13 @@ const VDataTableVirtual = genericComponent()({
21050
21061
  sortRawFunctions
21051
21062
  } = createHeaders(props, {
21052
21063
  groupBy,
21053
- showSelect: toRef(props, 'showSelect'),
21054
- showExpand: toRef(props, 'showExpand')
21064
+ showSelect: toRef(() => props.showSelect),
21065
+ showExpand: toRef(() => props.showExpand)
21055
21066
  });
21056
21067
  const {
21057
21068
  items
21058
21069
  } = useDataTableItems(props, columns);
21059
- const search = toRef(props, 'search');
21070
+ const search = toRef(() => props.search);
21060
21071
  const {
21061
21072
  filteredItems
21062
21073
  } = useFilter(props, items, search, {
@@ -21132,10 +21143,10 @@ const VDataTableVirtual = genericComponent()({
21132
21143
  });
21133
21144
  provideDefaults({
21134
21145
  VDataTableRows: {
21135
- hideNoData: toRef(props, 'hideNoData'),
21136
- noDataText: toRef(props, 'noDataText'),
21137
- loading: toRef(props, 'loading'),
21138
- loadingText: toRef(props, 'loadingText')
21146
+ hideNoData: toRef(() => props.hideNoData),
21147
+ noDataText: toRef(() => props.noDataText),
21148
+ loading: toRef(() => props.loading),
21149
+ loadingText: toRef(() => props.loadingText)
21139
21150
  }
21140
21151
  });
21141
21152
  const slotProps = computed(() => ({
@@ -21288,8 +21299,8 @@ const VDataTableServer = genericComponent()({
21288
21299
  headers
21289
21300
  } = createHeaders(props, {
21290
21301
  groupBy,
21291
- showSelect: toRef(props, 'showSelect'),
21292
- showExpand: toRef(props, 'showExpand')
21302
+ showSelect: toRef(() => props.showSelect),
21303
+ showExpand: toRef(() => props.showExpand)
21293
21304
  });
21294
21305
  const {
21295
21306
  items
@@ -21344,7 +21355,7 @@ const VDataTableServer = genericComponent()({
21344
21355
  itemsPerPage,
21345
21356
  sortBy,
21346
21357
  groupBy,
21347
- search: toRef(props, 'search')
21358
+ search: toRef(() => props.search)
21348
21359
  });
21349
21360
  provide('v-data-table', {
21350
21361
  toggleSort,
@@ -21352,10 +21363,10 @@ const VDataTableServer = genericComponent()({
21352
21363
  });
21353
21364
  provideDefaults({
21354
21365
  VDataTableRows: {
21355
- hideNoData: toRef(props, 'hideNoData'),
21356
- noDataText: toRef(props, 'noDataText'),
21357
- loading: toRef(props, 'loading'),
21358
- loadingText: toRef(props, 'loadingText')
21366
+ hideNoData: toRef(() => props.hideNoData),
21367
+ noDataText: toRef(() => props.noDataText),
21368
+ loading: toRef(() => props.loading),
21369
+ loadingText: toRef(() => props.loadingText)
21359
21370
  }
21360
21371
  });
21361
21372
  const slotProps = computed(() => ({
@@ -21825,7 +21836,7 @@ const VDatePickerHeader = genericComponent()({
21825
21836
  const {
21826
21837
  backgroundColorClasses,
21827
21838
  backgroundColorStyles
21828
- } = useBackgroundColor(props, 'color');
21839
+ } = useBackgroundColor(() => props.color);
21829
21840
  function onClick() {
21830
21841
  emit('click');
21831
21842
  }
@@ -21964,21 +21975,21 @@ function useCalendar(props) {
21964
21975
  const isSame = adapter.isSameDay(date, month.value);
21965
21976
  return {
21966
21977
  date,
21967
- isoDate,
21968
21978
  formatted: adapter.format(date, 'keyboardDate'),
21969
- year: adapter.getYear(date),
21970
- month: adapter.getMonth(date),
21971
- isDisabled: isDisabled(date),
21972
- isWeekStart: index % 7 === 0,
21973
- isWeekEnd: index % 7 === 6,
21974
- isToday: adapter.isSameDay(date, today),
21975
21979
  isAdjacent,
21976
- isHidden: isAdjacent && !props.showAdjacentMonths,
21977
- isStart,
21978
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21980
+ isDisabled: isDisabled(date),
21979
21981
  isEnd,
21982
+ isHidden: isAdjacent && !props.showAdjacentMonths,
21980
21983
  isSame,
21981
- localized: adapter.format(date, 'dayOfMonth')
21984
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21985
+ isStart,
21986
+ isToday: adapter.isSameDay(date, today),
21987
+ isWeekEnd: index % 7 === 6,
21988
+ isWeekStart: index % 7 === 0,
21989
+ isoDate,
21990
+ localized: adapter.format(date, 'dayOfMonth'),
21991
+ month: adapter.getMonth(date),
21992
+ year: adapter.getYear(date)
21982
21993
  };
21983
21994
  });
21984
21995
  }
@@ -22066,7 +22077,7 @@ const VDatePickerMonth = genericComponent()({
22066
22077
  const rangeStart = shallowRef();
22067
22078
  const rangeStop = shallowRef();
22068
22079
  const isReverse = shallowRef(false);
22069
- const transition = computed(() => {
22080
+ const transition = toRef(() => {
22070
22081
  return !isReverse.value ? props.transition : props.reverseTransition;
22071
22082
  });
22072
22083
  if (props.multiple === 'range' && model.value.length > 0) {
@@ -22446,7 +22457,7 @@ const VDatePicker = genericComponent()({
22446
22457
  }
22447
22458
  return value && adapter.isValid(value) ? value : today;
22448
22459
  });
22449
- const headerColor = computed(() => props.headerColor ?? props.color);
22460
+ const headerColor = toRef(() => props.headerColor ?? props.color);
22450
22461
  const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22451
22462
  const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22452
22463
  const isReversing = shallowRef(false);
@@ -22463,8 +22474,8 @@ const VDatePicker = genericComponent()({
22463
22474
  date = adapter.setYear(date, year.value);
22464
22475
  return adapter.format(date, 'monthAndYear');
22465
22476
  });
22466
- // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22467
- const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22477
+ // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22478
+ const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22468
22479
  const disabled = computed(() => {
22469
22480
  if (props.disabled) return true;
22470
22481
  const targets = [];
@@ -22676,7 +22687,7 @@ const VEmptyState = genericComponent()({
22676
22687
  const {
22677
22688
  backgroundColorClasses,
22678
22689
  backgroundColorStyles
22679
- } = useBackgroundColor(toRef(props, 'bgColor'));
22690
+ } = useBackgroundColor(() => props.bgColor);
22680
22691
  const {
22681
22692
  dimensionStyles
22682
22693
  } = useDimension(props);
@@ -22839,7 +22850,7 @@ const VExpansionPanelTitle = genericComponent()({
22839
22850
  const {
22840
22851
  backgroundColorClasses,
22841
22852
  backgroundColorStyles
22842
- } = useBackgroundColor(props, 'color');
22853
+ } = useBackgroundColor(() => props.color);
22843
22854
  const {
22844
22855
  dimensionStyles
22845
22856
  } = useDimension(props);
@@ -22850,7 +22861,7 @@ const VExpansionPanelTitle = genericComponent()({
22850
22861
  expandIcon: props.expandIcon,
22851
22862
  readonly: props.readonly
22852
22863
  }));
22853
- const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22864
+ const icon = toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22854
22865
  useRender(() => withDirectives(createVNode("button", {
22855
22866
  "class": ['v-expansion-panel-title', {
22856
22867
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
@@ -22905,14 +22916,14 @@ const VExpansionPanel = genericComponent()({
22905
22916
  const {
22906
22917
  backgroundColorClasses,
22907
22918
  backgroundColorStyles
22908
- } = useBackgroundColor(props, 'bgColor');
22919
+ } = useBackgroundColor(() => props.bgColor);
22909
22920
  const {
22910
22921
  elevationClasses
22911
22922
  } = useElevation(props);
22912
22923
  const {
22913
22924
  roundedClasses
22914
22925
  } = useRounded(props);
22915
- const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);
22926
+ const isDisabled = toRef(() => groupItem?.disabled.value || props.disabled);
22916
22927
  const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
22917
22928
  if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
22918
22929
  return arr;
@@ -23003,21 +23014,21 @@ const VExpansionPanels = genericComponent()({
23003
23014
  const {
23004
23015
  themeClasses
23005
23016
  } = provideTheme(props);
23006
- const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23017
+ const variantClass = toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23007
23018
  provideDefaults({
23008
23019
  VExpansionPanel: {
23009
- bgColor: toRef(props, 'bgColor'),
23010
- collapseIcon: toRef(props, 'collapseIcon'),
23011
- color: toRef(props, 'color'),
23012
- eager: toRef(props, 'eager'),
23013
- elevation: toRef(props, 'elevation'),
23014
- expandIcon: toRef(props, 'expandIcon'),
23015
- focusable: toRef(props, 'focusable'),
23016
- hideActions: toRef(props, 'hideActions'),
23017
- readonly: toRef(props, 'readonly'),
23018
- ripple: toRef(props, 'ripple'),
23019
- rounded: toRef(props, 'rounded'),
23020
- static: toRef(props, 'static')
23020
+ bgColor: toRef(() => props.bgColor),
23021
+ collapseIcon: toRef(() => props.collapseIcon),
23022
+ color: toRef(() => props.color),
23023
+ eager: toRef(() => props.eager),
23024
+ elevation: toRef(() => props.elevation),
23025
+ expandIcon: toRef(() => props.expandIcon),
23026
+ focusable: toRef(() => props.focusable),
23027
+ hideActions: toRef(() => props.hideActions),
23028
+ readonly: toRef(() => props.readonly),
23029
+ ripple: toRef(() => props.ripple),
23030
+ rounded: toRef(() => props.rounded),
23031
+ static: toRef(() => props.static)
23021
23032
  }
23022
23033
  });
23023
23034
  useRender(() => createVNode(props.tag, {
@@ -23079,7 +23090,7 @@ const VFab = genericComponent()({
23079
23090
  if (!entries.length) return;
23080
23091
  height.value = entries[0].target.clientHeight;
23081
23092
  });
23082
- const hasPosition = computed(() => props.app || props.absolute);
23093
+ const hasPosition = toRef(() => props.app || props.absolute);
23083
23094
  const position = computed(() => {
23084
23095
  if (!hasPosition.value) return false;
23085
23096
  return props.location?.split(' ').shift() ?? 'bottom';
@@ -23096,7 +23107,7 @@ const VFab = genericComponent()({
23096
23107
  layoutSize: computed(() => props.layout ? height.value + 24 : 0),
23097
23108
  elementSize: computed(() => height.value + 24),
23098
23109
  active: computed(() => props.app && model.value),
23099
- absolute: toRef(props, 'absolute')
23110
+ absolute: toRef(() => props.absolute)
23100
23111
  });
23101
23112
  watchEffect(() => {
23102
23113
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23221,7 +23232,7 @@ const VFileInput = genericComponent()({
23221
23232
  const vInputRef = ref();
23222
23233
  const vFieldRef = ref();
23223
23234
  const inputRef = ref();
23224
- const isActive = computed(() => isFocused.value || props.active);
23235
+ const isActive = toRef(() => isFocused.value || props.active);
23225
23236
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
23226
23237
  function onFocus() {
23227
23238
  if (inputRef.value !== document.activeElement) {
@@ -23394,7 +23405,7 @@ const VFooter = genericComponent()({
23394
23405
  const {
23395
23406
  backgroundColorClasses,
23396
23407
  backgroundColorStyles
23397
- } = useBackgroundColor(toRef(props, 'color'));
23408
+ } = useBackgroundColor(() => props.color);
23398
23409
  const {
23399
23410
  borderClasses
23400
23411
  } = useBorder(props);
@@ -23416,11 +23427,11 @@ const VFooter = genericComponent()({
23416
23427
  const layout = useLayoutItem({
23417
23428
  id: props.name,
23418
23429
  order: computed(() => parseInt(props.order, 10)),
23419
- position: computed(() => 'bottom'),
23430
+ position: toRef(() => 'bottom'),
23420
23431
  layoutSize: height,
23421
23432
  elementSize: computed(() => props.height === 'auto' ? undefined : height.value),
23422
- active: computed(() => props.app),
23423
- absolute: toRef(props, 'absolute')
23433
+ active: toRef(() => props.app),
23434
+ absolute: toRef(() => props.absolute)
23424
23435
  });
23425
23436
  watchEffect(() => {
23426
23437
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23893,11 +23904,11 @@ const VLayoutItem = genericComponent()({
23893
23904
  } = useLayoutItem({
23894
23905
  id: props.name,
23895
23906
  order: computed(() => parseInt(props.order, 10)),
23896
- position: toRef(props, 'position'),
23897
- elementSize: toRef(props, 'size'),
23898
- layoutSize: toRef(props, 'size'),
23899
- active: toRef(props, 'modelValue'),
23900
- absolute: toRef(props, 'absolute')
23907
+ position: toRef(() => props.position),
23908
+ elementSize: toRef(() => props.size),
23909
+ layoutSize: toRef(() => props.size),
23910
+ active: toRef(() => props.modelValue),
23911
+ absolute: toRef(() => props.absolute)
23901
23912
  });
23902
23913
  return () => createVNode("div", {
23903
23914
  "class": ['v-layout-item', props.class],
@@ -24429,7 +24440,7 @@ const VNavigationDrawer = genericComponent()({
24429
24440
  const {
24430
24441
  backgroundColorClasses,
24431
24442
  backgroundColorStyles
24432
- } = useBackgroundColor(toRef(props, 'color'));
24443
+ } = useBackgroundColor(() => props.color);
24433
24444
  const {
24434
24445
  elevationClasses
24435
24446
  } = useElevation(props);
@@ -24462,7 +24473,7 @@ const VNavigationDrawer = genericComponent()({
24462
24473
  const location = computed(() => {
24463
24474
  return toPhysical(props.location, isRtl.value);
24464
24475
  });
24465
- const isPersistent = computed(() => props.persistent);
24476
+ const isPersistent = toRef(() => props.persistent);
24466
24477
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
24467
24478
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
24468
24479
  useToggleScope(() => props.expandOnHover && props.rail != null, () => {
@@ -24488,7 +24499,7 @@ const VNavigationDrawer = genericComponent()({
24488
24499
  isActive,
24489
24500
  isTemporary,
24490
24501
  width,
24491
- touchless: toRef(props, 'touchless'),
24502
+ touchless: toRef(() => props.touchless),
24492
24503
  position: location
24493
24504
  });
24494
24505
  const layoutSize = computed(() => {
@@ -24505,7 +24516,7 @@ const VNavigationDrawer = genericComponent()({
24505
24516
  layoutSize,
24506
24517
  elementSize: width,
24507
24518
  active: readonly(isActive),
24508
- disableTransitions: computed(() => isDragging.value),
24519
+ disableTransitions: toRef(() => isDragging.value),
24509
24520
  absolute: computed(() =>
24510
24521
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
24511
24522
  props.absolute || isSticky.value && typeof isStuck.value !== 'string')
@@ -24518,9 +24529,9 @@ const VNavigationDrawer = genericComponent()({
24518
24529
  isSticky,
24519
24530
  layoutItemStyles
24520
24531
  });
24521
- const scrimColor = useBackgroundColor(computed(() => {
24532
+ const scrimColor = useBackgroundColor(() => {
24522
24533
  return typeof props.scrim === 'string' ? props.scrim : null;
24523
- }));
24534
+ });
24524
24535
  const scrimStyles = computed(() => ({
24525
24536
  ...(isDragging.value ? {
24526
24537
  opacity: dragProgress.value * 0.2,
@@ -24734,24 +24745,24 @@ const VNumberInput = genericComponent()({
24734
24745
  const controlVariant = computed(() => {
24735
24746
  return props.hideInput ? 'stacked' : props.controlVariant;
24736
24747
  });
24737
- const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24738
- const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24739
- const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
24740
- const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24741
- const incrementSlotProps = computed(() => ({
24748
+ const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24749
+ const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24750
+ const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small');
24751
+ const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24752
+ const incrementSlotProps = {
24742
24753
  props: {
24743
24754
  onClick: onControlClick,
24744
24755
  onPointerup: onControlMouseup,
24745
24756
  onPointerdown: onUpControlMousedown
24746
24757
  }
24747
- }));
24748
- const decrementSlotProps = computed(() => ({
24758
+ };
24759
+ const decrementSlotProps = {
24749
24760
  props: {
24750
24761
  onClick: onControlClick,
24751
24762
  onPointerup: onControlMouseup,
24752
24763
  onPointerdown: onDownControlMousedown
24753
24764
  }
24754
- }));
24765
+ };
24755
24766
  watch(() => props.precision, () => formatInputValue());
24756
24767
  onMounted(() => {
24757
24768
  clampModel();
@@ -24903,7 +24914,7 @@ const VNumberInput = genericComponent()({
24903
24914
  }
24904
24915
  }
24905
24916
  }, {
24906
- default: () => [slots.increment(incrementSlotProps.value)]
24917
+ default: () => [slots.increment(incrementSlotProps)]
24907
24918
  });
24908
24919
  }
24909
24920
  function decrementControlNode() {
@@ -24932,7 +24943,7 @@ const VNumberInput = genericComponent()({
24932
24943
  }
24933
24944
  }
24934
24945
  }, {
24935
- default: () => [slots.decrement(decrementSlotProps.value)]
24946
+ default: () => [slots.decrement(decrementSlotProps)]
24936
24947
  });
24937
24948
  }
24938
24949
  function controlNode() {
@@ -25132,12 +25143,12 @@ const VOtpInput = genericComponent()({
25132
25143
  }
25133
25144
  provideDefaults({
25134
25145
  VField: {
25135
- color: computed(() => props.color),
25136
- bgColor: computed(() => props.color),
25137
- baseColor: computed(() => props.baseColor),
25138
- disabled: computed(() => props.disabled),
25139
- error: computed(() => props.error),
25140
- variant: computed(() => props.variant)
25146
+ color: toRef(() => props.color),
25147
+ bgColor: toRef(() => props.color),
25148
+ baseColor: toRef(() => props.baseColor),
25149
+ disabled: toRef(() => props.disabled),
25150
+ error: toRef(() => props.error),
25151
+ variant: toRef(() => props.variant)
25141
25152
  }
25142
25153
  }, {
25143
25154
  scoped: true
@@ -25938,7 +25949,7 @@ const VSkeletonLoader = genericComponent()({
25938
25949
  const {
25939
25950
  backgroundColorClasses,
25940
25951
  backgroundColorStyles
25941
- } = useBackgroundColor(toRef(props, 'color'));
25952
+ } = useBackgroundColor(() => props.color);
25942
25953
  const {
25943
25954
  dimensionStyles
25944
25955
  } = useDimension(props);
@@ -26737,7 +26748,7 @@ const VSparkline = genericComponent()({
26737
26748
  const {
26738
26749
  textColorClasses,
26739
26750
  textColorStyles
26740
- } = useTextColor(toRef(props, 'color'));
26751
+ } = useTextColor(() => props.color);
26741
26752
  const hasLabels = computed(() => {
26742
26753
  return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
26743
26754
  });
@@ -27283,11 +27294,11 @@ const VSwitch = genericComponent()({
27283
27294
  } = useFocus(props);
27284
27295
  const control = ref();
27285
27296
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
27286
- const loaderColor = computed(() => {
27297
+ const loaderColor = toRef(() => {
27287
27298
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
27288
27299
  });
27289
27300
  const uid = useId();
27290
- const id = computed(() => props.id || `switch-${uid}`);
27301
+ const id = toRef(() => props.id || `switch-${uid}`);
27291
27302
  function onChange() {
27292
27303
  if (indeterminate.value) {
27293
27304
  indeterminate.value = false;
@@ -27438,7 +27449,7 @@ const VSystemBar = genericComponent()({
27438
27449
  const {
27439
27450
  backgroundColorClasses,
27440
27451
  backgroundColorStyles
27441
- } = useBackgroundColor(toRef(props, 'color'));
27452
+ } = useBackgroundColor(() => props.color);
27442
27453
  const {
27443
27454
  elevationClasses
27444
27455
  } = useElevation(props);
@@ -27458,7 +27469,7 @@ const VSystemBar = genericComponent()({
27458
27469
  layoutSize: height,
27459
27470
  elementSize: height,
27460
27471
  active: computed(() => true),
27461
- absolute: toRef(props, 'absolute')
27472
+ absolute: toRef(() => props.absolute)
27462
27473
  });
27463
27474
  useRender(() => createVNode(props.tag, {
27464
27475
  "class": ['v-system-bar', {
@@ -27500,7 +27511,7 @@ const VTab = genericComponent()({
27500
27511
  const {
27501
27512
  textColorClasses: sliderColorClasses,
27502
27513
  textColorStyles: sliderColorStyles
27503
- } = useTextColor(props, 'sliderColor');
27514
+ } = useTextColor(() => props.sliderColor);
27504
27515
  const rootEl = ref();
27505
27516
  const sliderEl = ref();
27506
27517
  const isHorizontal = computed(() => props.direction === 'horizontal');
@@ -27693,18 +27704,18 @@ const VTabs = genericComponent()({
27693
27704
  const {
27694
27705
  backgroundColorClasses,
27695
27706
  backgroundColorStyles
27696
- } = useBackgroundColor(toRef(props, 'bgColor'));
27707
+ } = useBackgroundColor(() => props.bgColor);
27697
27708
  const {
27698
27709
  scopeId
27699
27710
  } = useScopeId();
27700
27711
  provideDefaults({
27701
27712
  VTab: {
27702
- color: toRef(props, 'color'),
27703
- direction: toRef(props, 'direction'),
27704
- stacked: toRef(props, 'stacked'),
27705
- fixed: toRef(props, 'fixedTabs'),
27706
- sliderColor: toRef(props, 'sliderColor'),
27707
- hideSlider: toRef(props, 'hideSlider')
27713
+ color: toRef(() => props.color),
27714
+ direction: toRef(() => props.direction),
27715
+ stacked: toRef(() => props.stacked),
27716
+ fixed: toRef(() => props.fixedTabs),
27717
+ sliderColor: toRef(() => props.sliderColor),
27718
+ hideSlider: toRef(() => props.hideSlider)
27708
27719
  }
27709
27720
  });
27710
27721
  useRender(() => {
@@ -28054,7 +28065,7 @@ const VTimelineDivider = genericComponent()({
28054
28065
  const {
28055
28066
  backgroundColorStyles,
28056
28067
  backgroundColorClasses
28057
- } = useBackgroundColor(toRef(props, 'dotColor'));
28068
+ } = useBackgroundColor(() => props.dotColor);
28058
28069
  const {
28059
28070
  roundedClasses
28060
28071
  } = useRounded(props, 'v-timeline-divider__dot');
@@ -28064,7 +28075,7 @@ const VTimelineDivider = genericComponent()({
28064
28075
  const {
28065
28076
  backgroundColorClasses: lineColorClasses,
28066
28077
  backgroundColorStyles: lineColorStyles
28067
- } = useBackgroundColor(toRef(props, 'lineColor'));
28078
+ } = useBackgroundColor(() => props.lineColor);
28068
28079
  useRender(() => createVNode("div", {
28069
28080
  "class": ['v-timeline-divider', {
28070
28081
  'v-timeline-divider--fill-dot': props.fillDot
@@ -28235,17 +28246,17 @@ const VTimeline = genericComponent()({
28235
28246
  } = useRtl();
28236
28247
  provideDefaults({
28237
28248
  VTimelineDivider: {
28238
- lineColor: toRef(props, 'lineColor')
28249
+ lineColor: toRef(() => props.lineColor)
28239
28250
  },
28240
28251
  VTimelineItem: {
28241
- density: toRef(props, 'density'),
28242
- dotColor: toRef(props, 'dotColor'),
28243
- fillDot: toRef(props, 'fillDot'),
28244
- hideOpposite: toRef(props, 'hideOpposite'),
28245
- iconColor: toRef(props, 'iconColor'),
28246
- lineColor: toRef(props, 'lineColor'),
28247
- lineInset: toRef(props, 'lineInset'),
28248
- size: toRef(props, 'size')
28252
+ density: toRef(() => props.density),
28253
+ dotColor: toRef(() => props.dotColor),
28254
+ fillDot: toRef(() => props.fillDot),
28255
+ hideOpposite: toRef(() => props.hideOpposite),
28256
+ iconColor: toRef(() => props.iconColor),
28257
+ lineColor: toRef(() => props.lineColor),
28258
+ lineInset: toRef(() => props.lineInset),
28259
+ size: toRef(() => props.size)
28249
28260
  }
28250
28261
  });
28251
28262
  const sideClasses = computed(() => {
@@ -28292,9 +28303,9 @@ const VToolbarItems = genericComponent()({
28292
28303
  } = _ref;
28293
28304
  provideDefaults({
28294
28305
  VBtn: {
28295
- color: toRef(props, 'color'),
28306
+ color: toRef(() => props.color),
28296
28307
  height: 'inherit',
28297
- variant: toRef(props, 'variant')
28308
+ variant: toRef(() => props.variant)
28298
28309
  }
28299
28310
  });
28300
28311
  useRender(() => createVNode("div", {
@@ -28341,7 +28352,7 @@ const VTooltip = genericComponent()({
28341
28352
  scopeId
28342
28353
  } = useScopeId();
28343
28354
  const uid = useId();
28344
- const id = computed(() => props.id || `v-tooltip-${uid}`);
28355
+ const id = toRef(() => props.id || `v-tooltip-${uid}`);
28345
28356
  const overlay = ref();
28346
28357
  const location = computed(() => {
28347
28358
  return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
@@ -28349,7 +28360,7 @@ const VTooltip = genericComponent()({
28349
28360
  const origin = computed(() => {
28350
28361
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28351
28362
  });
28352
- const transition = computed(() => {
28363
+ const transition = toRef(() => {
28353
28364
  if (props.transition) return props.transition;
28354
28365
  return isActive.value ? 'scale-transition' : 'fade-transition';
28355
28366
  });
@@ -28428,13 +28439,19 @@ const makeVCalendarIntervalEventProps = propsFactory({
28428
28439
  }, 'VCalendarIntervalEvent');
28429
28440
  const VCalendarIntervalEvent = genericComponent()({
28430
28441
  name: 'VCalendarIntervalEvent',
28442
+ inheritAttrs: false,
28431
28443
  props: makeVCalendarIntervalEventProps(),
28432
- setup(props) {
28444
+ setup(props, _ref) {
28445
+ let {
28446
+ attrs,
28447
+ emit,
28448
+ slots
28449
+ } = _ref;
28433
28450
  const adapter = useDate();
28434
28451
  const calcHeight = () => {
28435
- if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
28452
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.end, props.interval?.end)) {
28436
28453
  return {
28437
- height: '100%',
28454
+ height: `${props.intervalHeight}px`,
28438
28455
  margin: convertToUnit(0)
28439
28456
  };
28440
28457
  } else {
@@ -28443,8 +28460,8 @@ const VCalendarIntervalEvent = genericComponent()({
28443
28460
  margin
28444
28461
  } = Array.from({
28445
28462
  length: props.intervalDivisions
28446
- }, x => x * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28447
- if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.start)) {
28463
+ }, (_, x) => (x + 1) * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28464
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.end)) {
28448
28465
  return {
28449
28466
  height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
28450
28467
  margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
@@ -28465,16 +28482,30 @@ const VCalendarIntervalEvent = genericComponent()({
28465
28482
  }
28466
28483
  };
28467
28484
  useRender(() => {
28468
- return createVNode(VSheet, {
28485
+ return createVNode("div", null, [slots.intervalEvent?.({
28486
+ height: calcHeight().height,
28487
+ margin: calcHeight().margin,
28488
+ eventClass: 'v-calendar-internal-event',
28489
+ event: props.event,
28490
+ interval: props.interval
28491
+ }) ?? createVNode(VSheet, mergeProps({
28469
28492
  "height": calcHeight().height,
28470
28493
  "density": "comfortable",
28471
28494
  "style": `margin-top: ${calcHeight().margin}`,
28472
28495
  "class": "v-calendar-internal-event",
28473
28496
  "color": props.event?.color ?? undefined,
28474
28497
  "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
28475
- }, {
28498
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28499
+ event: props.event,
28500
+ allDay: false,
28501
+ day: null,
28502
+ interval: props.interval,
28503
+ intervalDivisions: props.intervalDivisions,
28504
+ intervalDuration: props.intervalDuration,
28505
+ intervalHeight: props.intervalHeight
28506
+ }))), {
28476
28507
  default: () => [props.event?.first ? props.event?.title : '']
28477
- });
28508
+ })]);
28478
28509
  });
28479
28510
  return {};
28480
28511
  }
@@ -28510,6 +28541,7 @@ const makeVCalendarIntervalProps = propsFactory({
28510
28541
  }, 'VCalendarInterval');
28511
28542
  const VCalendarInterval = genericComponent()({
28512
28543
  name: 'VCalendarInterval',
28544
+ inheritAttrs: false,
28513
28545
  props: {
28514
28546
  index: {
28515
28547
  type: Number,
@@ -28519,6 +28551,7 @@ const VCalendarInterval = genericComponent()({
28519
28551
  },
28520
28552
  setup(props, _ref) {
28521
28553
  let {
28554
+ attrs,
28522
28555
  emit,
28523
28556
  slots
28524
28557
  } = _ref;
@@ -28544,45 +28577,74 @@ const VCalendarInterval = genericComponent()({
28544
28577
  return props.dayIndex === 0 ? createVNode("div", {
28545
28578
  "class": "v-calendar-day__row-with-label",
28546
28579
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28547
- }, [createVNode("div", {
28580
+ }, [createVNode("div", mergeProps({
28548
28581
  "class": "v-calendar-day__row-label"
28549
- }, [createVNode(resolveComponent("slot"), {
28550
- "name": "intervalFormat",
28551
- "interval": interval.value
28552
- }, {
28553
- default: () => [props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : '']
28554
- })]), createVNode("div", {
28582
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28583
+ interval: interval.value
28584
+ }) ?? (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", {
28555
28585
  "class": "v-calendar-day__row-hairline"
28556
- }, null), createVNode("div", {
28586
+ }, null), createVNode("div", mergeProps({
28557
28587
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28558
- }, [createVNode(resolveComponent("slot"), {
28559
- "name": "intervalBody",
28560
- "interval": interval.value
28561
- }, {
28562
- default: () => [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, {
28563
- "event": event,
28564
- "interval": interval.value,
28565
- "intervalDivisions": props.intervalDivisions,
28566
- "intervalDuration": props.intervalDuration,
28567
- "intervalHeight": props.intervalHeight
28568
- }, null))]
28569
- })])]) : createVNode("div", {
28588
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28589
+ interval: interval.value
28590
+ }) ?? createVNode("div", null, [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
28591
+ "event": event,
28592
+ "interval": interval.value,
28593
+ "intervalDivisions": props.intervalDivisions,
28594
+ "intervalDuration": props.intervalDuration,
28595
+ "intervalHeight": props.intervalHeight
28596
+ }, attrs), {
28597
+ ...(slots.intervalEvent ? {
28598
+ intervalEvent: _ref2 => {
28599
+ let {
28600
+ height,
28601
+ margin,
28602
+ eventClass,
28603
+ event,
28604
+ interval
28605
+ } = _ref2;
28606
+ return slots.intervalEvent?.({
28607
+ height,
28608
+ margin,
28609
+ eventClass,
28610
+ event,
28611
+ interval
28612
+ });
28613
+ }
28614
+ } : {})
28615
+ }))])])]) : createVNode("div", {
28570
28616
  "class": "v-calendar-day__row-without-label",
28571
28617
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28572
- }, [createVNode("div", {
28618
+ }, [createVNode("div", mergeProps({
28573
28619
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28574
- }, [createVNode(resolveComponent("slot"), {
28575
- "name": "intervalBody",
28576
- "interval": interval.value
28577
- }, {
28578
- default: () => [interval.value.events?.filter(event => !event.allDay).map(event => createVNode(VCalendarIntervalEvent, {
28579
- "event": event,
28580
- "interval": interval.value,
28581
- "intervalDivisions": props.intervalDivisions,
28582
- "intervalDuration": props.intervalDuration,
28583
- "intervalHeight": props.intervalHeight
28584
- }, null))]
28585
- })])]);
28620
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28621
+ interval: interval.value
28622
+ }) ?? interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
28623
+ "event": event,
28624
+ "interval": interval.value,
28625
+ "intervalDivisions": props.intervalDivisions,
28626
+ "intervalDuration": props.intervalDuration,
28627
+ "intervalHeight": props.intervalHeight
28628
+ }, attrs), {
28629
+ ...(slots.intervalEvent ? {
28630
+ intervalEvent: _ref3 => {
28631
+ let {
28632
+ height,
28633
+ margin,
28634
+ eventClass,
28635
+ event,
28636
+ interval
28637
+ } = _ref3;
28638
+ return slots.intervalEvent?.({
28639
+ height,
28640
+ margin,
28641
+ eventClass,
28642
+ event,
28643
+ interval
28644
+ });
28645
+ }
28646
+ } : {})
28647
+ }))])]);
28586
28648
  });
28587
28649
  return {
28588
28650
  interval
@@ -28590,6 +28652,8 @@ const VCalendarInterval = genericComponent()({
28590
28652
  }
28591
28653
  });
28592
28654
 
28655
+ // Types
28656
+
28593
28657
  const makeVCalendarDayProps = propsFactory({
28594
28658
  hideDayHeader: Boolean,
28595
28659
  intervals: {
@@ -28600,26 +28664,34 @@ const makeVCalendarDayProps = propsFactory({
28600
28664
  }, 'VCalendarDay');
28601
28665
  const VCalendarDay = genericComponent()({
28602
28666
  name: 'VCalendarDay',
28667
+ inheritAttrs: false,
28603
28668
  props: makeVCalendarDayProps(),
28604
- setup(props) {
28669
+ setup(props, _ref) {
28670
+ let {
28671
+ attrs,
28672
+ slots
28673
+ } = _ref;
28605
28674
  const adapter = useDate();
28606
28675
  const intervals = computed(() => [...Array.from({
28607
28676
  length: props.intervals
28608
- }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28677
+ }, (v, i) => i).filter((_, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28609
28678
  useRender(() => {
28610
28679
  const calendarIntervalProps = VCalendarInterval.filterProps(props);
28611
28680
  return createVNode("div", {
28612
28681
  "class": "v-calendar-day__container"
28613
- }, [!props.hideDayHeader && createVNode("div", {
28614
- "key": "calender-week-name",
28682
+ }, [!props.hideDayHeader && createVNode("div", mergeProps({
28683
+ "key": "calendar-week-name",
28615
28684
  "class": "v-calendar-weekly__head-weekday"
28616
- }, [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, {
28685
+ }, getPrefixedEventHandlers(attrs, ':day', () => props.day)), [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, mergeProps(getPrefixedEventHandlers(attrs, ':date', () => props.day), {
28686
+ "class": props.day?.isToday ? 'v-calendar-day-label__today' : undefined,
28617
28687
  "icon": true,
28618
28688
  "text": adapter.format(props.day.date, 'dayOfMonth'),
28619
- "variant": "text"
28620
- }, null)])]), intervals.value.map((_, index) => createVNode(VCalendarInterval, mergeProps({
28689
+ "variant": props.day?.isToday ? undefined : 'text'
28690
+ }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? createVNode(VCalendarInterval, mergeProps({
28621
28691
  "index": index
28622
- }, calendarIntervalProps), null))]);
28692
+ }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
28693
+ ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
28694
+ }))]);
28623
28695
  });
28624
28696
  return {
28625
28697
  intervals
@@ -28658,7 +28730,8 @@ const VCalendarHeader = genericComponent()({
28658
28730
  },
28659
28731
  setup(props, _ref) {
28660
28732
  let {
28661
- emit
28733
+ emit,
28734
+ slots
28662
28735
  } = _ref;
28663
28736
  const {
28664
28737
  t
@@ -28692,7 +28765,9 @@ const VCalendarHeader = genericComponent()({
28692
28765
  "onClick": next
28693
28766
  }, null), createVNode("div", {
28694
28767
  "class": "v-calendar-header__title"
28695
- }, [props.title])]));
28768
+ }, [slots.title?.({
28769
+ title: props.title
28770
+ }) ?? createVNode("span", null, [props.title])])]));
28696
28771
  return {};
28697
28772
  }
28698
28773
  });
@@ -28704,14 +28779,24 @@ const makeVCalendarEventProps = propsFactory({
28704
28779
  }, 'VCalendarEvent');
28705
28780
  const VCalendarEvent = genericComponent()({
28706
28781
  name: 'VCalendarEvent',
28782
+ inheritAttrs: false,
28707
28783
  props: makeVCalendarEventProps(),
28708
- setup(props) {
28709
- useRender(() => createVNode(VChip, {
28784
+ setup(props, _ref) {
28785
+ let {
28786
+ attrs,
28787
+ emit,
28788
+ slots
28789
+ } = _ref;
28790
+ useRender(() => createVNode(VChip, mergeProps({
28710
28791
  "color": props.allDay ? 'primary' : undefined,
28711
28792
  "density": "comfortable",
28712
28793
  "label": props.allDay,
28713
28794
  "width": "100%"
28714
- }, {
28795
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28796
+ allDay: props.allDay,
28797
+ day: props.day,
28798
+ event: props.event
28799
+ }))), {
28715
28800
  default: () => [createVNode(VBadge, {
28716
28801
  "inline": true,
28717
28802
  "dot": true,
@@ -28722,87 +28807,95 @@ const VCalendarEvent = genericComponent()({
28722
28807
  }
28723
28808
  });
28724
28809
 
28810
+ // Types
28811
+
28725
28812
  const makeVCalendarMonthDayProps = propsFactory({
28726
28813
  active: Boolean,
28727
28814
  color: String,
28728
- day: Object,
28815
+ day: {
28816
+ type: Object
28817
+ },
28729
28818
  disabled: Boolean,
28730
28819
  events: Array,
28731
28820
  title: [Number, String]
28732
28821
  }, 'VCalendarMonthDay');
28733
28822
  const VCalendarMonthDay = genericComponent()({
28734
28823
  name: 'VCalendarMonthDay',
28824
+ inheritAttrs: false,
28735
28825
  props: makeVCalendarMonthDayProps(),
28736
28826
  setup(props, _ref) {
28737
28827
  let {
28738
- emit,
28828
+ attrs,
28739
28829
  slots
28740
28830
  } = _ref;
28741
28831
  useRender(() => {
28742
- const hasTitle = !!(props.title || slots.title?.({
28743
- title: props.title
28744
- }));
28745
- return createVNode("div", {
28832
+ return createVNode("div", mergeProps({
28746
28833
  "class": ['v-calendar-month__day']
28747
- }, [!props.day?.isHidden && hasTitle && createVNode("div", {
28834
+ }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? createVNode("div", {
28748
28835
  "key": "title",
28749
28836
  "class": "v-calendar-weekly__day-label"
28750
- }, [slots.title?.({
28837
+ }, [slots.dayTitle?.({
28751
28838
  title: props.title
28752
- }) ?? createVNode(VBtn, {
28839
+ }) ?? createVNode(VBtn, mergeProps({
28753
28840
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
28754
28841
  "color": props.color,
28755
28842
  "disabled": props.disabled,
28756
28843
  "icon": true,
28757
28844
  "size": "x-small",
28758
- "variant": props.day?.isToday ? undefined : 'flat'
28759
- }, {
28760
- default: () => [props.title]
28761
- })]), !props.day?.isHidden && createVNode("div", {
28845
+ "variant": props.day?.isToday ? undefined : 'flat',
28846
+ "text": `${props.title}`
28847
+ }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? createVNode("div", {
28762
28848
  "key": "content",
28763
28849
  "class": "v-calendar-weekly__day-content"
28764
- }, [slots.content?.() ?? createVNode("div", null, [createVNode("div", {
28850
+ }, [slots.dayBody?.({
28851
+ day: props.day,
28852
+ events: props.events
28853
+ }) ?? createVNode("div", null, [createVNode("div", {
28765
28854
  "class": "v-calendar-weekly__day-alldayevents-container"
28766
- }, [props.events?.filter(event => event.allDay).map(event => slots.event ? slots.event({
28855
+ }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28767
28856
  day: props.day,
28768
28857
  allDay: true,
28769
28858
  event
28770
- }) : createVNode(VCalendarEvent, {
28859
+ }) : createVNode(VCalendarEvent, mergeProps({
28771
28860
  "day": props.day,
28772
28861
  "event": event,
28773
28862
  "allDay": true
28774
- }, null))]), createVNode("div", {
28863
+ }, attrs), null))]), createVNode("div", {
28775
28864
  "class": "v-calendar-weekly__day-events-container"
28776
- }, [props.events?.filter(event => !event.allDay).map(event => slots.event ? slots.event({
28865
+ }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28777
28866
  day: props.day,
28778
28867
  event,
28779
28868
  allDay: false
28780
- }) : createVNode(VCalendarEvent, {
28869
+ }) : createVNode(VCalendarEvent, mergeProps({
28781
28870
  "day": props.day,
28782
28871
  "event": event
28783
- }, null))])])]), !props.day?.isHidden && slots.default?.()]);
28872
+ }, attrs), null))])])]) : undefined]);
28784
28873
  });
28785
28874
  return {};
28786
28875
  }
28787
28876
  });
28788
28877
 
28878
+ // Types
28879
+
28789
28880
  const makeVCalendarProps = propsFactory({
28790
28881
  hideHeader: Boolean,
28791
28882
  hideWeekNumber: Boolean,
28792
28883
  ...makeCalendarProps(),
28793
28884
  ...makeVCalendarDayProps(),
28794
28885
  ...makeVCalendarHeaderProps()
28795
- }, 'VCalender');
28886
+ }, 'VCalendar');
28796
28887
  const VCalendar = genericComponent()({
28797
28888
  name: 'VCalendar',
28798
28889
  props: makeVCalendarProps(),
28799
28890
  emits: {
28800
28891
  next: null,
28801
28892
  prev: null,
28893
+ today: null,
28802
28894
  'update:modelValue': null
28803
28895
  },
28804
28896
  setup(props, _ref) {
28805
28897
  let {
28898
+ attrs,
28806
28899
  emit,
28807
28900
  slots
28808
28901
  } = _ref;
@@ -28820,27 +28913,33 @@ const VCalendar = genericComponent()({
28820
28913
  function onClickNext() {
28821
28914
  if (props.viewMode === 'month') {
28822
28915
  model.value = [adapter.addMonths(displayValue.value, 1)];
28823
- }
28824
- if (props.viewMode === 'week') {
28916
+ } else if (props.viewMode === 'week') {
28825
28917
  model.value = [adapter.addDays(displayValue.value, 7)];
28826
- }
28827
- if (props.viewMode === 'day') {
28918
+ } else if (props.viewMode === 'day') {
28828
28919
  model.value = [adapter.addDays(displayValue.value, 1)];
28829
28920
  }
28921
+ nextTick(() => {
28922
+ emit('next', model.value[0]);
28923
+ });
28830
28924
  }
28831
28925
  function onClickPrev() {
28832
28926
  if (props.viewMode === 'month') {
28833
28927
  model.value = [adapter.addMonths(displayValue.value, -1)];
28834
- }
28835
- if (props.viewMode === 'week') {
28928
+ } else if (props.viewMode === 'week') {
28836
28929
  model.value = [adapter.addDays(displayValue.value, -7)];
28837
- }
28838
- if (props.viewMode === 'day') {
28930
+ } else if (props.viewMode === 'day') {
28839
28931
  model.value = [adapter.addDays(displayValue.value, -1)];
28840
28932
  }
28933
+ nextTick(() => {
28934
+ emit('prev', model.value[0]);
28935
+ });
28841
28936
  }
28842
28937
  function onClickToday() {
28843
- model.value = [adapter.date()];
28938
+ const date = adapter.date();
28939
+ model.value = [date];
28940
+ nextTick(() => {
28941
+ emit('today', model.value[0]);
28942
+ });
28844
28943
  }
28845
28944
  const title = computed(() => {
28846
28945
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -28854,20 +28953,25 @@ const VCalendar = genericComponent()({
28854
28953
  'v-calendar-weekly': props.viewMode === 'week',
28855
28954
  'v-calendar-day': props.viewMode === 'day'
28856
28955
  }]
28857
- }, [createVNode("div", null, [!props.hideHeader && (!slots.header ? createVNode(VCalendarHeader, mergeProps({
28956
+ }, [createVNode("div", null, [!props.hideHeader && (slots.header?.({
28957
+ title: title.value,
28958
+ clickNext: onClickNext,
28959
+ clickPrev: onClickPrev,
28960
+ clickToday: onClickToday
28961
+ }) ?? createVNode(VCalendarHeader, mergeProps({
28858
28962
  "key": "calendar-header"
28859
28963
  }, calendarHeaderProps, {
28860
28964
  "title": title.value,
28861
28965
  "onClick:next": onClickNext,
28862
28966
  "onClick:prev": onClickPrev,
28863
28967
  "onClick:toToday": onClickToday
28864
- }), null) : slots.header({
28865
- title: title.value
28968
+ }), {
28969
+ title: slots.title
28866
28970
  }))]), createVNode("div", {
28867
28971
  "class": ['v-calendar__container', `days__${weekDays.value.length}`]
28868
28972
  }, [props.viewMode === 'month' && !props.hideDayHeader && createVNode("div", {
28869
28973
  "class": ['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
28870
- "key": "calenderWeeklyHead"
28974
+ "key": "calendarWeeklyHead"
28871
28975
  }, [!props.hideWeekNumber ? createVNode("div", {
28872
28976
  "key": "weekNumber0",
28873
28977
  "class": "v-calendar-weekly__head-weeknumber"
@@ -28876,24 +28980,39 @@ const VCalendar = genericComponent()({
28876
28980
  }, [dayNames[weekday]]))]), props.viewMode === 'month' && createVNode("div", {
28877
28981
  "key": "VCalendarMonth",
28878
28982
  "class": ['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])]
28879
- }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? createVNode("div", {
28983
+ }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? createVNode("div", mergeProps({
28880
28984
  "class": "v-calendar-month__weeknumber"
28881
- }, [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, {
28882
- "color": adapter.isSameDay(adapter.date(), day.date) ? 'primary' : undefined,
28985
+ }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
28986
+ weekNumber: weekNumbers.value[wi],
28987
+ week
28988
+ }))), [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, mergeProps({
28989
+ "key": day.date.getTime()
28990
+ }, calendarDayProps, {
28883
28991
  "day": day,
28884
- "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
28992
+ "title": adapter.format(day.date, 'dayOfMonth'),
28885
28993
  "events": props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end))
28886
- }, {
28887
- event: slots.event
28888
- }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => createVNode(VCalendarDay, mergeProps(calendarDayProps, {
28994
+ }, attrs), {
28995
+ ...pick(slots, ['day-body', 'day-event', 'day-title'])
28996
+ }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => slots['day-interval'] ? slots['day-interval']?.({
28997
+ ...calendarDayProps,
28998
+ day,
28999
+ dayIndex: i,
29000
+ events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
29001
+ }) : createVNode(VCalendarDay, mergeProps(calendarDayProps, {
28889
29002
  "day": day,
28890
29003
  "dayIndex": i,
28891
29004
  "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
28892
- }), null)), props.viewMode === 'day' && createVNode(VCalendarDay, mergeProps(calendarDayProps, {
28893
- "day": genDays([displayValue.value], adapter.date())[0],
29005
+ }, attrs), {
29006
+ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29007
+ })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29008
+ day: genDays([displayValue.value], adapter.date())[0],
29009
+ dayIndex: 0,
29010
+ 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))
29011
+ }) : createVNode(VCalendarDay, mergeProps(calendarDayProps, {
29012
+ "day": genDays([model.value[0]], adapter.date())[0],
28894
29013
  "dayIndex": 0,
28895
- "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))
28896
- }), null)])]);
29014
+ "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))
29015
+ }, attrs), null))])]);
28897
29016
  });
28898
29017
  return {
28899
29018
  daysInMonth,
@@ -29442,10 +29561,7 @@ const makeVIconBtnProps = propsFactory({
29442
29561
  hideOverlay: Boolean,
29443
29562
  icon: [String, Function, Object],
29444
29563
  iconColor: String,
29445
- iconSize: {
29446
- type: [Number, String],
29447
- default: 'default'
29448
- },
29564
+ iconSize: [Number, String],
29449
29565
  iconSizes: {
29450
29566
  type: Array,
29451
29567
  default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
@@ -29506,7 +29622,7 @@ const VIconBtn = genericComponent()({
29506
29622
  colorClasses,
29507
29623
  colorStyles,
29508
29624
  variantClasses
29509
- } = useVariant(toRef(() => ({
29625
+ } = useVariant(() => ({
29510
29626
  color: (() => {
29511
29627
  if (props.disabled) return undefined;
29512
29628
  if (!isActive.value) return props.color;
@@ -29521,7 +29637,7 @@ const VIconBtn = genericComponent()({
29521
29637
  if (isActive.value) return props.activeVariant ?? props.variant;
29522
29638
  return props.baseVariant ?? props.variant;
29523
29639
  })()
29524
- })));
29640
+ }));
29525
29641
  const btnSizeMap = new Map(props.sizes);
29526
29642
  const iconSizeMap = new Map(props.iconSizes);
29527
29643
  function onClick() {
@@ -29530,13 +29646,14 @@ const VIconBtn = genericComponent()({
29530
29646
  }
29531
29647
  useRender(() => {
29532
29648
  const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
29533
- const size = props.size;
29534
- const hasNamedSize = btnSizeMap.has(size);
29535
- const btnSize = hasNamedSize ? btnSizeMap.get(size) : size;
29649
+ const _btnSize = props.size;
29650
+ const hasNamedSize = btnSizeMap.has(_btnSize);
29651
+ const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
29536
29652
  const btnHeight = props.height ?? btnSize;
29537
29653
  const btnWidth = props.width ?? btnSize;
29538
- const _iconSize = hasNamedSize ? size : props.iconSize ?? size;
29539
- const iconSize = iconSizeMap.get(_iconSize) ?? _iconSize;
29654
+ const _iconSize = props.iconSize;
29655
+ const hasNamedIconSize = iconSizeMap.has(_iconSize);
29656
+ const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
29540
29657
  const iconProps = {
29541
29658
  icon,
29542
29659
  size: iconSize,
@@ -30017,11 +30134,11 @@ const VTimePickerClock = genericComponent()({
30017
30134
  const {
30018
30135
  textColorClasses,
30019
30136
  textColorStyles
30020
- } = useTextColor(toRef(props, 'color'));
30137
+ } = useTextColor(() => props.color);
30021
30138
  const {
30022
30139
  backgroundColorClasses,
30023
30140
  backgroundColorStyles
30024
- } = useBackgroundColor(toRef(props, 'color'));
30141
+ } = useBackgroundColor(() => props.color);
30025
30142
  const count = computed(() => props.max - props.min + 1);
30026
30143
  const roundCount = computed(() => props.double ? count.value / 2 : count.value);
30027
30144
  const degreesPerUnit = computed(() => 360 / roundCount.value);
@@ -30881,9 +30998,9 @@ const VTreeview = genericComponent()({
30881
30998
  const {
30882
30999
  items
30883
31000
  } = useListItems(props);
30884
- const activeColor = toRef(props, 'activeColor');
30885
- const baseColor = toRef(props, 'baseColor');
30886
- const color = toRef(props, 'color');
31001
+ const activeColor = toRef(() => props.activeColor);
31002
+ const baseColor = toRef(() => props.baseColor);
31003
+ const color = toRef(() => props.color);
30887
31004
  const activated = useProxiedModel(props, 'activated');
30888
31005
  const model = useProxiedModel(props, 'modelValue');
30889
31006
  const _selected = useProxiedModel(props, 'selected', props.modelValue);
@@ -30897,7 +31014,7 @@ const VTreeview = genericComponent()({
30897
31014
  const vListRef = ref();
30898
31015
  const opened = computed(() => props.openAll ? openAll(items.value) : props.opened);
30899
31016
  const flatItems = computed(() => flatten(items.value));
30900
- const search = toRef(props, 'search');
31017
+ const search = toRef(() => props.search);
30901
31018
  const {
30902
31019
  filteredItems
30903
31020
  } = useFilter(props, flatItems, search);
@@ -30940,18 +31057,18 @@ const VTreeview = genericComponent()({
30940
31057
  activeColor,
30941
31058
  baseColor,
30942
31059
  color,
30943
- collapseIcon: toRef(props, 'collapseIcon'),
30944
- expandIcon: toRef(props, 'expandIcon')
31060
+ collapseIcon: toRef(() => props.collapseIcon),
31061
+ expandIcon: toRef(() => props.expandIcon)
30945
31062
  },
30946
31063
  VTreeviewItem: {
30947
- activeClass: toRef(props, 'activeClass'),
31064
+ activeClass: toRef(() => props.activeClass),
30948
31065
  activeColor,
30949
31066
  baseColor,
30950
31067
  color,
30951
- density: toRef(props, 'density'),
30952
- disabled: toRef(props, 'disabled'),
30953
- lines: toRef(props, 'lines'),
30954
- variant: toRef(props, 'variant')
31068
+ density: toRef(() => props.density),
31069
+ disabled: toRef(() => props.disabled),
31070
+ lines: toRef(() => props.lines),
31071
+ variant: toRef(() => props.variant)
30955
31072
  }
30956
31073
  });
30957
31074
  useRender(() => {
@@ -31491,7 +31608,7 @@ function createVuetify$1() {
31491
31608
  };
31492
31609
  });
31493
31610
  }
31494
- const version$1 = "3.8.2-master.2025-04-17";
31611
+ const version$1 = "3.8.2-master.2025-04-22";
31495
31612
  createVuetify$1.version = version$1;
31496
31613
 
31497
31614
  // Vue's inject() can only be used in setup
@@ -31789,7 +31906,7 @@ var index = /*#__PURE__*/Object.freeze({
31789
31906
 
31790
31907
  /* eslint-disable local-rules/sort-imports */
31791
31908
 
31792
- const version = "3.8.2-master.2025-04-17";
31909
+ const version = "3.8.2-master.2025-04-22";
31793
31910
 
31794
31911
  /* eslint-disable local-rules/sort-imports */
31795
31912