@vuetify/nightly 3.8.2-master.2025-04-19 → 3.8.2-master.2025-04-23

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 (290) hide show
  1. package/CHANGELOG.md +23 -3
  2. package/dist/json/attributes.json +3523 -3523
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +144 -144
  5. package/dist/json/web-types.json +6716 -6457
  6. package/dist/vuetify-labs.cjs +624 -510
  7. package/dist/vuetify-labs.css +3327 -3318
  8. package/dist/vuetify-labs.d.ts +1835 -886
  9. package/dist/vuetify-labs.esm.js +625 -511
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +624 -510
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +402 -396
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3130 -3130
  16. package/dist/vuetify.d.ts +153 -151
  17. package/dist/vuetify.esm.js +403 -397
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +402 -396
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +893 -886
  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/validation.js +0 -5
  249. package/lib/composables/validation.js.map +1 -1
  250. package/lib/composables/variant.d.ts +5 -6
  251. package/lib/composables/variant.js +6 -6
  252. package/lib/composables/variant.js.map +1 -1
  253. package/lib/entry-bundler.js +1 -1
  254. package/lib/framework.d.ts +66 -64
  255. package/lib/framework.js +1 -1
  256. package/lib/labs/VCalendar/VCalendar.d.ts +600 -211
  257. package/lib/labs/VCalendar/VCalendar.js +55 -27
  258. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  259. package/lib/labs/VCalendar/VCalendarDay.css +9 -0
  260. package/lib/labs/VCalendar/VCalendarDay.d.ts +329 -17
  261. package/lib/labs/VCalendar/VCalendarDay.js +18 -10
  262. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  263. package/lib/labs/VCalendar/VCalendarDay.sass +8 -0
  264. package/lib/labs/VCalendar/VCalendarEvent.js +15 -5
  265. package/lib/labs/VCalendar/VCalendarEvent.js.map +1 -1
  266. package/lib/labs/VCalendar/VCalendarHeader.d.ts +44 -17
  267. package/lib/labs/VCalendar/VCalendarHeader.js +5 -2
  268. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  269. package/lib/labs/VCalendar/VCalendarInterval.d.ts +171 -17
  270. package/lib/labs/VCalendar/VCalendarInterval.js +66 -35
  271. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  272. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +92 -17
  273. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +30 -10
  274. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  275. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +122 -88
  276. package/lib/labs/VCalendar/VCalendarMonthDay.js +24 -22
  277. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  278. package/lib/labs/VIconBtn/VIconBtn.js +3 -3
  279. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  280. package/lib/labs/VPicker/VPicker.js +1 -2
  281. package/lib/labs/VPicker/VPicker.js.map +1 -1
  282. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -3
  283. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  284. package/lib/labs/VTreeview/VTreeview.js +11 -11
  285. package/lib/labs/VTreeview/VTreeview.js.map +1 -1
  286. package/lib/util/box.js.map +1 -1
  287. package/lib/util/helpers.d.ts +5 -2
  288. package/lib/util/helpers.js +9 -5
  289. package/lib/util/helpers.js.map +1 -1
  290. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.8.2-master.2025-04-19
2
+ * Vuetify v3.8.2-master.2025-04-23
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,
@@ -6894,11 +6901,6 @@ function useValidation(props) {
6894
6901
  }
6895
6902
  async function validate() {
6896
6903
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6897
- if (props.disabled || props.readonly) {
6898
- internalErrorMessages.value = [];
6899
- isValidating.value = false;
6900
- return internalErrorMessages.value;
6901
- }
6902
6904
  const results = [];
6903
6905
  isValidating.value = true;
6904
6906
  for (const rule of props.rules) {
@@ -7028,10 +7030,10 @@ const VInput = genericComponent()({
7028
7030
  resetValidation,
7029
7031
  validate
7030
7032
  }));
7031
- const color = computed(() => {
7033
+ const color = toRef(() => {
7032
7034
  return props.error || props.disabled ? undefined : props.focused ? props.color : props.baseColor;
7033
7035
  });
7034
- const iconColor = computed(() => {
7036
+ const iconColor = toRef(() => {
7035
7037
  if (!props.iconColor) return undefined;
7036
7038
  return props.iconColor === true ? color.value : props.iconColor;
7037
7039
  });
@@ -7121,7 +7123,6 @@ const VCheckbox = genericComponent()({
7121
7123
  blur
7122
7124
  } = useFocus(props);
7123
7125
  const uid = useId();
7124
- const id = computed(() => props.id || `checkbox-${uid}`);
7125
7126
  useRender(() => {
7126
7127
  const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
7127
7128
  const inputProps = VInput.filterProps(props);
@@ -7131,7 +7132,7 @@ const VCheckbox = genericComponent()({
7131
7132
  }, rootAttrs, inputProps, {
7132
7133
  "modelValue": model.value,
7133
7134
  "onUpdate:modelValue": $event => model.value = $event,
7134
- "id": id.value,
7135
+ "id": props.id || `checkbox-${uid}`,
7135
7136
  "focused": isFocused.value,
7136
7137
  "style": props.style
7137
7138
  }), {
@@ -7315,7 +7316,7 @@ function useDisplay() {
7315
7316
  return false;
7316
7317
  }
7317
7318
  });
7318
- const displayClasses = computed(() => {
7319
+ const displayClasses = toRef(() => {
7319
7320
  if (!name) return {};
7320
7321
  return {
7321
7322
  [`${name}--mobile`]: mobile.value
@@ -7430,7 +7431,7 @@ function useGoTo() {
7430
7431
  const goTo = {
7431
7432
  ...goToInstance,
7432
7433
  // can be set via VLocaleProvider
7433
- rtl: computed(() => goToInstance.rtl.value || isRtl.value)
7434
+ rtl: toRef(() => goToInstance.rtl.value || isRtl.value)
7434
7435
  };
7435
7436
  async function go(target, options) {
7436
7437
  return scrollTo(target, mergeDeep(_options, options), false, goTo);
@@ -7922,11 +7923,11 @@ const VChipGroup = genericComponent()({
7922
7923
  } = useGroup(props, VChipGroupSymbol);
7923
7924
  provideDefaults({
7924
7925
  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')
7926
+ baseColor: toRef(() => props.baseColor),
7927
+ color: toRef(() => props.color),
7928
+ disabled: toRef(() => props.disabled),
7929
+ filter: toRef(() => props.filter),
7930
+ variant: toRef(() => props.variant)
7930
7931
  }
7931
7932
  });
7932
7933
  useRender(() => {
@@ -8052,9 +8053,9 @@ const VChip = genericComponent()({
8052
8053
  const isActive = useProxiedModel(props, 'modelValue');
8053
8054
  const group = useGroupItem(props, VChipGroupSymbol, false);
8054
8055
  const link = useLink(props, attrs);
8055
- const isLink = computed(() => props.link !== false && link.isLink.value);
8056
+ const isLink = toRef(() => props.link !== false && link.isLink.value);
8056
8057
  const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8057
- const closeProps = computed(() => ({
8058
+ const closeProps = toRef(() => ({
8058
8059
  'aria-label': t(props.closeLabel),
8059
8060
  onClick(e) {
8060
8061
  e.preventDefault();
@@ -8063,18 +8064,17 @@ const VChip = genericComponent()({
8063
8064
  emit('click:close', e);
8064
8065
  }
8065
8066
  }));
8066
- const variantProps = computed(() => {
8067
+ const {
8068
+ colorClasses,
8069
+ colorStyles,
8070
+ variantClasses
8071
+ } = useVariant(() => {
8067
8072
  const showColor = !group || group.isSelected.value;
8068
8073
  return {
8069
8074
  color: showColor ? props.color ?? props.baseColor : props.baseColor,
8070
8075
  variant: props.variant
8071
8076
  };
8072
8077
  });
8073
- const {
8074
- colorClasses,
8075
- colorStyles,
8076
- variantClasses
8077
- } = useVariant(variantProps);
8078
8078
  function onClick(e) {
8079
8079
  emit('click', e);
8080
8080
  if (!isClickable.value) return;
@@ -8741,8 +8741,8 @@ const useNested = props => {
8741
8741
  id: shallowRef(),
8742
8742
  root: {
8743
8743
  opened,
8744
- activatable: toRef(props, 'activatable'),
8745
- selectable: toRef(props, 'selectable'),
8744
+ activatable: toRef(() => props.activatable),
8745
+ selectable: toRef(() => props.selectable),
8746
8746
  activated,
8747
8747
  selected,
8748
8748
  selectedValues: computed(() => {
@@ -8871,7 +8871,7 @@ const useNested = props => {
8871
8871
  const useNestedItem = (id, isGroup) => {
8872
8872
  const parent = inject$1(VNestedSymbol, emptyNested);
8873
8873
  const uidSymbol = Symbol('nested item');
8874
- const computedId = computed(() => id.value !== undefined ? id.value : uidSymbol);
8874
+ const computedId = computed(() => toValue(id) ?? uidSymbol);
8875
8875
  const item = {
8876
8876
  ...parent,
8877
8877
  id: computedId,
@@ -8947,7 +8947,7 @@ const VListGroup = genericComponent()({
8947
8947
  isOpen,
8948
8948
  open,
8949
8949
  id: _id
8950
- } = useNestedItem(toRef(props, 'value'), true);
8950
+ } = useNestedItem(() => props.value, true);
8951
8951
  const id = computed(() => `v-list-group--id-${String(_id.value)}`);
8952
8952
  const list = useList();
8953
8953
  const {
@@ -9121,12 +9121,12 @@ const VListItem = genericComponent()({
9121
9121
  } = useNestedItem(id, false);
9122
9122
  const list = useList();
9123
9123
  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);
9124
+ const isLink = toRef(() => props.link !== false && link.isLink.value);
9125
9125
  const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9126
9126
  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(() => ({
9127
+ const roundedProps = toRef(() => props.rounded || props.nav);
9128
+ const color = toRef(() => props.color ?? props.activeColor);
9129
+ const variantProps = toRef(() => ({
9130
9130
  color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
9131
9131
  variant: props.variant
9132
9132
  }));
@@ -9169,7 +9169,7 @@ const VListItem = genericComponent()({
9169
9169
  const {
9170
9170
  roundedClasses
9171
9171
  } = useRounded(roundedProps);
9172
- const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9172
+ const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9173
9173
  const slotProps = computed(() => ({
9174
9174
  isActive: isActive.value,
9175
9175
  select,
@@ -9339,7 +9339,7 @@ const VListSubheader = genericComponent()({
9339
9339
  const {
9340
9340
  textColorClasses,
9341
9341
  textColorStyles
9342
- } = useTextColor(toRef(props, 'color'));
9342
+ } = useTextColor(() => props.color);
9343
9343
  useRender(() => {
9344
9344
  const hasText = !!(slots.default || props.title);
9345
9345
  return createVNode(props.tag, {
@@ -9384,7 +9384,7 @@ const VDivider = genericComponent()({
9384
9384
  const {
9385
9385
  textColorClasses,
9386
9386
  textColorStyles
9387
- } = useTextColor(toRef(props, 'color'));
9387
+ } = useTextColor(() => props.color);
9388
9388
  const dividerStyles = computed(() => {
9389
9389
  const styles = {};
9390
9390
  if (props.length) {
@@ -9746,7 +9746,7 @@ const VList = genericComponent()({
9746
9746
  const {
9747
9747
  backgroundColorClasses,
9748
9748
  backgroundColorStyles
9749
- } = useBackgroundColor(toRef(props, 'bgColor'));
9749
+ } = useBackgroundColor(() => props.bgColor);
9750
9750
  const {
9751
9751
  borderClasses
9752
9752
  } = useBorder(props);
@@ -9769,30 +9769,30 @@ const VList = genericComponent()({
9769
9769
  select,
9770
9770
  getPath
9771
9771
  } = 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');
9772
+ const lineClasses = toRef(() => 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);
9776
9776
  createList();
9777
9777
  provideDefaults({
9778
9778
  VListGroup: {
9779
9779
  activeColor,
9780
9780
  baseColor,
9781
9781
  color,
9782
- expandIcon: toRef(props, 'expandIcon'),
9783
- collapseIcon: toRef(props, 'collapseIcon')
9782
+ expandIcon: toRef(() => props.expandIcon),
9783
+ collapseIcon: toRef(() => props.collapseIcon)
9784
9784
  },
9785
9785
  VListItem: {
9786
- activeClass: toRef(props, 'activeClass'),
9786
+ activeClass: toRef(() => props.activeClass),
9787
9787
  activeColor,
9788
9788
  baseColor,
9789
9789
  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')
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)
9796
9796
  }
9797
9797
  });
9798
9798
  const isFocused = shallowRef(false);
@@ -10120,13 +10120,22 @@ function connectedLocationStrategy(data, props, contentStyles) {
10120
10120
  onScopeDispose(() => {
10121
10121
  observer.disconnect();
10122
10122
  });
10123
+ let targetBox = new Box({
10124
+ x: 0,
10125
+ y: 0,
10126
+ width: 0,
10127
+ height: 0
10128
+ });
10123
10129
 
10124
10130
  // eslint-disable-next-line max-statements
10125
10131
  function updateLocation() {
10126
10132
  observe = false;
10127
10133
  requestAnimationFrame(() => observe = true);
10128
10134
  if (!data.target.value || !data.contentEl.value) return;
10129
- const targetBox = getTargetBox(data.target.value);
10135
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10136
+ targetBox = getTargetBox(data.target.value);
10137
+ } // Otherwise target element is hidden, use last known value
10138
+
10130
10139
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10131
10140
  const scrollParents = getScrollParents(data.contentEl.value);
10132
10141
  const viewportMargin = 12;
@@ -10836,7 +10845,7 @@ const makeLazyProps = propsFactory({
10836
10845
  }, 'lazy');
10837
10846
  function useLazy(props, active) {
10838
10847
  const isBooted = shallowRef(false);
10839
- const hasContent = computed(() => isBooted.value || props.eager || active.value);
10848
+ const hasContent = toRef(() => isBooted.value || props.eager || active.value);
10840
10849
  watch(active, () => isBooted.value = true);
10841
10850
  function onAfterLeave() {
10842
10851
  if (!props.eager) isBooted.value = false;
@@ -10873,10 +10882,10 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10873
10882
  activeChildren: new Set()
10874
10883
  });
10875
10884
  provide(StackSymbol, stack);
10876
- const _zIndex = shallowRef(Number(zIndex.value));
10885
+ const _zIndex = shallowRef(Number(toValue(zIndex)));
10877
10886
  useToggleScope(isActive, () => {
10878
10887
  const lastZIndex = globalStack.at(-1)?.[1];
10879
- _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10888
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(toValue(zIndex));
10880
10889
  if (createStackEntry) {
10881
10890
  globalStack.push([vm.uid, _zIndex.value]);
10882
10891
  }
@@ -10896,11 +10905,11 @@ function useStack(isActive, zIndex, disableGlobalStack) {
10896
10905
  setTimeout(() => globalTop.value = _isTop);
10897
10906
  });
10898
10907
  }
10899
- const localTop = computed(() => !stack.activeChildren.size);
10908
+ const localTop = toRef(() => !stack.activeChildren.size);
10900
10909
  return {
10901
10910
  globalTop: readonly(globalTop),
10902
10911
  localTop,
10903
- stackStyles: computed(() => ({
10912
+ stackStyles: toRef(() => ({
10904
10913
  zIndex: _zIndex.value
10905
10914
  }))
10906
10915
  };
@@ -11117,14 +11126,14 @@ const VOverlay = genericComponent()({
11117
11126
  hasContent,
11118
11127
  onAfterLeave: _onAfterLeave
11119
11128
  } = useLazy(props, isActive);
11120
- const scrimColor = useBackgroundColor(computed(() => {
11129
+ const scrimColor = useBackgroundColor(() => {
11121
11130
  return typeof props.scrim === 'string' ? props.scrim : null;
11122
- }));
11131
+ });
11123
11132
  const {
11124
11133
  globalTop,
11125
11134
  localTop,
11126
11135
  stackStyles
11127
- } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack);
11136
+ } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);
11128
11137
  const {
11129
11138
  activatorEl,
11130
11139
  activatorRef,
@@ -11450,7 +11459,7 @@ const VMenu = genericComponent()({
11450
11459
  isRtl
11451
11460
  } = useRtl();
11452
11461
  const uid = useId();
11453
- const id = computed(() => props.id || `v-menu-${uid}`);
11462
+ const id = toRef(() => props.id || `v-menu-${uid}`);
11454
11463
  const overlay = ref();
11455
11464
  const parent = inject$1(VMenuSymbol, null);
11456
11465
  const openChildren = shallowRef(new Set());
@@ -11618,7 +11627,7 @@ const VCounter = genericComponent()({
11618
11627
  let {
11619
11628
  slots
11620
11629
  } = _ref;
11621
- const counter = computed(() => {
11630
+ const counter = toRef(() => {
11622
11631
  return props.max ? `${props.value} / ${props.max}` : String(props.value);
11623
11632
  });
11624
11633
  useRender(() => createVNode(MaybeTransition, {
@@ -11745,12 +11754,12 @@ const VField = genericComponent()({
11745
11754
  const {
11746
11755
  rtlClasses
11747
11756
  } = 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);
11757
+ const isActive = toRef(() => props.dirty || props.active);
11758
+ const hasLabel = toRef(() => !!(props.label || slots.label));
11759
+ const hasFloatingLabel = toRef(() => !props.singleLine && hasLabel.value);
11751
11760
  const uid = useId();
11752
11761
  const id = computed(() => props.id || `input-${uid}`);
11753
- const messagesId = computed(() => `${id.value}-messages`);
11762
+ const messagesId = toRef(() => `${id.value}-messages`);
11754
11763
  const labelRef = ref();
11755
11764
  const floatingLabelRef = ref();
11756
11765
  const controlRef = ref();
@@ -11765,7 +11774,7 @@ const VField = genericComponent()({
11765
11774
  const {
11766
11775
  backgroundColorClasses,
11767
11776
  backgroundColorStyles
11768
- } = useBackgroundColor(toRef(props, 'bgColor'));
11777
+ } = useBackgroundColor(() => props.bgColor);
11769
11778
  const {
11770
11779
  textColorClasses,
11771
11780
  textColorStyles
@@ -12492,7 +12501,7 @@ const VVirtualScroll = genericComponent()({
12492
12501
  paddingTop,
12493
12502
  paddingBottom,
12494
12503
  computedItems
12495
- } = useVirtual(props, toRef(props, 'items'));
12504
+ } = useVirtual(props, toRef(() => props.items));
12496
12505
  useToggleScope(() => props.renderless, () => {
12497
12506
  function handleListeners() {
12498
12507
  let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -12729,7 +12738,7 @@ const VSelect = genericComponent()({
12729
12738
  _menu.value = v;
12730
12739
  }
12731
12740
  });
12732
- const label = computed(() => menu.value ? props.closeText : props.openText);
12741
+ const label = toRef(() => menu.value ? props.closeText : props.openText);
12733
12742
  const computedMenuProps = computed(() => {
12734
12743
  return {
12735
12744
  ...props.menuProps,
@@ -13231,7 +13240,6 @@ const VAutocomplete = genericComponent()({
13231
13240
  const vMenuRef = ref();
13232
13241
  const vVirtualScrollRef = ref();
13233
13242
  const selectionIndex = shallowRef(-1);
13234
- const color = computed(() => vTextFieldRef.value?.color);
13235
13243
  const {
13236
13244
  items,
13237
13245
  transformIn,
@@ -13240,7 +13248,7 @@ const VAutocomplete = genericComponent()({
13240
13248
  const {
13241
13249
  textColorClasses,
13242
13250
  textColorStyles
13243
- } = useTextColor(color);
13251
+ } = useTextColor(() => vTextFieldRef.value?.color);
13244
13252
  const search = useProxiedModel(props, 'search', '');
13245
13253
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13246
13254
  const transformed = transformOut(v);
@@ -13689,7 +13697,7 @@ const VBadge = genericComponent()({
13689
13697
  const {
13690
13698
  backgroundColorClasses,
13691
13699
  backgroundColorStyles
13692
- } = useBackgroundColor(toRef(props, 'color'));
13700
+ } = useBackgroundColor(() => props.color);
13693
13701
  const {
13694
13702
  roundedClasses
13695
13703
  } = useRounded(props);
@@ -13699,7 +13707,7 @@ const VBadge = genericComponent()({
13699
13707
  const {
13700
13708
  textColorClasses,
13701
13709
  textColorStyles
13702
- } = useTextColor(toRef(props, 'textColor'));
13710
+ } = useTextColor(() => props.textColor);
13703
13711
  const {
13704
13712
  themeClasses
13705
13713
  } = useTheme();
@@ -13811,7 +13819,7 @@ const VBanner = genericComponent()({
13811
13819
  const {
13812
13820
  backgroundColorClasses,
13813
13821
  backgroundColorStyles
13814
- } = useBackgroundColor(props, 'bgColor');
13822
+ } = useBackgroundColor(() => props.bgColor);
13815
13823
  const {
13816
13824
  borderClasses
13817
13825
  } = useBorder(props);
@@ -13840,8 +13848,8 @@ const VBanner = genericComponent()({
13840
13848
  const {
13841
13849
  themeClasses
13842
13850
  } = provideTheme(props);
13843
- const color = toRef(props, 'color');
13844
- const density = toRef(props, 'density');
13851
+ const color = toRef(() => props.color);
13852
+ const density = toRef(() => props.density);
13845
13853
  provideDefaults({
13846
13854
  VBannerActions: {
13847
13855
  color,
@@ -13950,7 +13958,7 @@ const VBottomNavigation = genericComponent()({
13950
13958
  const {
13951
13959
  backgroundColorClasses,
13952
13960
  backgroundColorStyles
13953
- } = useBackgroundColor(toRef(props, 'bgColor'));
13961
+ } = useBackgroundColor(() => props.bgColor);
13954
13962
  const {
13955
13963
  densityClasses
13956
13964
  } = useDensity(props);
@@ -13970,19 +13978,19 @@ const VBottomNavigation = genericComponent()({
13970
13978
  } = useLayoutItem({
13971
13979
  id: props.name,
13972
13980
  order: computed(() => parseInt(props.order, 10)),
13973
- position: computed(() => 'bottom'),
13974
- layoutSize: computed(() => isActive.value ? height.value : 0),
13981
+ position: toRef(() => 'bottom'),
13982
+ layoutSize: toRef(() => isActive.value ? height.value : 0),
13975
13983
  elementSize: height,
13976
13984
  active: isActive,
13977
- absolute: toRef(props, 'absolute')
13985
+ absolute: toRef(() => props.absolute)
13978
13986
  });
13979
13987
  useGroup(props, VBtnToggleSymbol);
13980
13988
  provideDefaults({
13981
13989
  VBtn: {
13982
- baseColor: toRef(props, 'baseColor'),
13983
- color: toRef(props, 'color'),
13984
- density: toRef(props, 'density'),
13985
- stacked: computed(() => props.mode !== 'horizontal'),
13990
+ baseColor: toRef(() => props.baseColor),
13991
+ color: toRef(() => props.color),
13992
+ density: toRef(() => props.density),
13993
+ stacked: toRef(() => props.mode !== 'horizontal'),
13986
13994
  variant: 'text'
13987
13995
  }
13988
13996
  }, {
@@ -14218,11 +14226,10 @@ const VBreadcrumbsItem = genericComponent()({
14218
14226
  } = _ref;
14219
14227
  const link = useLink(props, attrs);
14220
14228
  const isActive = computed(() => props.active || link.isActive?.value);
14221
- const color = computed(() => isActive.value ? props.activeColor : props.color);
14222
14229
  const {
14223
14230
  textColorClasses,
14224
14231
  textColorStyles
14225
- } = useTextColor(color);
14232
+ } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14226
14233
  useRender(() => {
14227
14234
  return createVNode(props.tag, {
14228
14235
  "class": ['v-breadcrumbs-item', {
@@ -14277,7 +14284,7 @@ const VBreadcrumbs = genericComponent()({
14277
14284
  const {
14278
14285
  backgroundColorClasses,
14279
14286
  backgroundColorStyles
14280
- } = useBackgroundColor(toRef(props, 'bgColor'));
14287
+ } = useBackgroundColor(() => props.bgColor);
14281
14288
  const {
14282
14289
  densityClasses
14283
14290
  } = useDensity(props);
@@ -14286,13 +14293,13 @@ const VBreadcrumbs = genericComponent()({
14286
14293
  } = useRounded(props);
14287
14294
  provideDefaults({
14288
14295
  VBreadcrumbsDivider: {
14289
- divider: toRef(props, 'divider')
14296
+ divider: toRef(() => props.divider)
14290
14297
  },
14291
14298
  VBreadcrumbsItem: {
14292
- activeClass: toRef(props, 'activeClass'),
14293
- activeColor: toRef(props, 'activeColor'),
14294
- color: toRef(props, 'color'),
14295
- disabled: toRef(props, 'disabled')
14299
+ activeClass: toRef(() => props.activeClass),
14300
+ activeColor: toRef(() => props.activeColor),
14301
+ color: toRef(() => props.color),
14302
+ disabled: toRef(() => props.disabled)
14296
14303
  }
14297
14304
  });
14298
14305
  const items = computed(() => props.items.map(item => {
@@ -14615,10 +14622,10 @@ const VCard = genericComponent()({
14615
14622
  roundedClasses
14616
14623
  } = useRounded(props);
14617
14624
  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
14625
  useRender(() => {
14621
- const Tag = isLink.value ? 'a' : props.tag;
14626
+ const isLink = props.link !== false && link.isLink.value;
14627
+ const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
14628
+ const Tag = isLink ? 'a' : props.tag;
14622
14629
  const hasTitle = !!(slots.title || props.title != null);
14623
14630
  const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
14624
14631
  const hasHeader = hasTitle || hasSubtitle;
@@ -14632,10 +14639,10 @@ const VCard = genericComponent()({
14632
14639
  'v-card--disabled': props.disabled,
14633
14640
  'v-card--flat': props.flat,
14634
14641
  'v-card--hover': props.hover && !(props.disabled || props.flat),
14635
- 'v-card--link': isClickable.value
14642
+ 'v-card--link': isClickable
14636
14643
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14637
14644
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14638
- "onClick": isClickable.value && link.navigate,
14645
+ "onClick": isClickable && link.navigate,
14639
14646
  "tabindex": props.disabled ? -1 : undefined
14640
14647
  }, link.linkProps), {
14641
14648
  default: () => [hasImage && createVNode("div", {
@@ -14680,8 +14687,8 @@ const VCard = genericComponent()({
14680
14687
  default: () => [slots.text?.() ?? props.text]
14681
14688
  }), slots.default?.(), slots.actions && createVNode(VCardActions, null, {
14682
14689
  default: slots.actions
14683
- }), genOverlays(isClickable.value, 'v-card')]
14684
- }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
14690
+ }), genOverlays(isClickable, 'v-card')]
14691
+ }), [[resolveDirective("ripple"), isClickable && props.ripple]]);
14685
14692
  });
14686
14693
  return {};
14687
14694
  }
@@ -14894,8 +14901,8 @@ const VWindow = genericComponent()({
14894
14901
  transitionHeight,
14895
14902
  rootRef
14896
14903
  });
14897
- const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0);
14898
- const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14904
+ const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0);
14905
+ const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14899
14906
  function prev() {
14900
14907
  canMoveBack.value && group.prev();
14901
14908
  }
@@ -15797,7 +15804,7 @@ const useSlider = _ref => {
15797
15804
  const {
15798
15805
  isRtl
15799
15806
  } = useRtl();
15800
- const isReversed = toRef(props, 'reverse');
15807
+ const isReversed = toRef(() => props.reverse);
15801
15808
  const vertical = computed(() => props.direction === 'vertical');
15802
15809
  const indexFromEnd = computed(() => vertical.value !== isReversed.value);
15803
15810
  const {
@@ -15811,7 +15818,7 @@ const useSlider = _ref => {
15811
15818
  const tickSize = computed(() => parseInt(props.tickSize, 10));
15812
15819
  const trackSize = computed(() => parseInt(props.trackSize, 10));
15813
15820
  const numTicks = computed(() => (max.value - min.value) / step.value);
15814
- const disabled = toRef(props, 'disabled');
15821
+ const disabled = toRef(() => props.disabled);
15815
15822
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
15816
15823
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
15817
15824
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -15913,7 +15920,7 @@ const useSlider = _ref => {
15913
15920
  const percentage = (val - min.value) / (max.value - min.value) * 100;
15914
15921
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
15915
15922
  };
15916
- const showTicks = toRef(props, 'showTicks');
15923
+ const showTicks = toRef(() => props.showTicks);
15917
15924
  const parsedTicks = computed(() => {
15918
15925
  if (!showTicks.value) return [];
15919
15926
  if (!props.ticks) {
@@ -15944,11 +15951,11 @@ const useSlider = _ref => {
15944
15951
  }));
15945
15952
  const data = {
15946
15953
  activeThumbRef,
15947
- color: toRef(props, 'color'),
15954
+ color: toRef(() => props.color),
15948
15955
  decimals,
15949
15956
  disabled,
15950
- direction: toRef(props, 'direction'),
15951
- elevation: toRef(props, 'elevation'),
15957
+ direction: toRef(() => props.direction),
15958
+ elevation: toRef(() => props.elevation),
15952
15959
  hasLabels,
15953
15960
  isReversed,
15954
15961
  indexFromEnd,
@@ -15961,16 +15968,16 @@ const useSlider = _ref => {
15961
15968
  parsedTicks,
15962
15969
  parseMouseMove,
15963
15970
  position,
15964
- readonly: toRef(props, 'readonly'),
15965
- rounded: toRef(props, 'rounded'),
15971
+ readonly: toRef(() => props.readonly),
15972
+ rounded: toRef(() => props.rounded),
15966
15973
  roundValue,
15967
15974
  showTicks,
15968
15975
  startOffset,
15969
15976
  step,
15970
15977
  thumbSize,
15971
15978
  thumbColor,
15972
- thumbLabel: toRef(props, 'thumbLabel'),
15973
- ticks: toRef(props, 'ticks'),
15979
+ thumbLabel: toRef(() => props.thumbLabel),
15980
+ ticks: toRef(() => props.ticks),
15974
15981
  tickSize,
15975
15982
  trackColor,
15976
15983
  trackContainerRef,
@@ -16889,7 +16896,7 @@ const VSheet = genericComponent()({
16889
16896
  const {
16890
16897
  backgroundColorClasses,
16891
16898
  backgroundColorStyles
16892
- } = useBackgroundColor(toRef(props, 'color'));
16899
+ } = useBackgroundColor(() => props.color);
16893
16900
  const {
16894
16901
  borderClasses
16895
16902
  } = useBorder(props);
@@ -16936,7 +16943,7 @@ const VPicker = genericComponent()({
16936
16943
  const {
16937
16944
  backgroundColorClasses,
16938
16945
  backgroundColorStyles
16939
- } = useBackgroundColor(toRef(props, 'color'));
16946
+ } = useBackgroundColor(() => props.color);
16940
16947
  useRender(() => {
16941
16948
  const sheetProps = VSheet.filterProps(props);
16942
16949
  const hasTitle = !!(props.title || slots.title);
@@ -17921,7 +17928,6 @@ const VCombobox = genericComponent()({
17921
17928
  const vVirtualScrollRef = ref();
17922
17929
  const selectionIndex = shallowRef(-1);
17923
17930
  let cleared = false;
17924
- const color = computed(() => vTextFieldRef.value?.color);
17925
17931
  const {
17926
17932
  items,
17927
17933
  transformIn,
@@ -17930,7 +17936,7 @@ const VCombobox = genericComponent()({
17930
17936
  const {
17931
17937
  textColorClasses,
17932
17938
  textColorStyles
17933
- } = useTextColor(color);
17939
+ } = useTextColor(() => vTextFieldRef.value?.color);
17934
17940
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
17935
17941
  const transformed = transformOut(v);
17936
17942
  return props.multiple ? transformed : transformed[0] ?? null;
@@ -17985,7 +17991,7 @@ const VCombobox = genericComponent()({
17985
17991
  _menu.value = v;
17986
17992
  }
17987
17993
  });
17988
- const label = computed(() => menu.value ? props.closeText : props.openText);
17994
+ const label = toRef(() => menu.value ? props.closeText : props.openText);
17989
17995
  watch(_search, value => {
17990
17996
  if (cleared) {
17991
17997
  // wait for clear to finish, VTextField sets _search to null
@@ -18491,7 +18497,7 @@ const makeDataTableExpandProps = propsFactory({
18491
18497
  }, 'DataTable-expand');
18492
18498
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18493
18499
  function provideExpanded(props) {
18494
- const expandOnClick = toRef(props, 'expandOnClick');
18500
+ const expandOnClick = toRef(() => props.expandOnClick);
18495
18501
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18496
18502
  return new Set(v);
18497
18503
  }, v => {
@@ -18678,23 +18684,23 @@ function useOptions(_ref) {
18678
18684
  search
18679
18685
  } = _ref;
18680
18686
  const vm = getCurrentInstance('VDataTable');
18681
- const options = computed(() => ({
18687
+ const options = () => ({
18682
18688
  page: page.value,
18683
18689
  itemsPerPage: itemsPerPage.value,
18684
18690
  sortBy: sortBy.value,
18685
18691
  groupBy: groupBy.value,
18686
18692
  search: search.value
18687
- }));
18693
+ });
18688
18694
  let oldOptions = null;
18689
- watch(options, () => {
18690
- if (deepEqual(oldOptions, options.value)) return;
18695
+ watch(options, value => {
18696
+ if (deepEqual(oldOptions, value)) return;
18691
18697
 
18692
18698
  // Reset page when searching
18693
- if (oldOptions && oldOptions.search !== options.value.search) {
18699
+ if (oldOptions && oldOptions.search !== value.search) {
18694
18700
  page.value = 1;
18695
18701
  }
18696
- vm.emit('update:options', options.value);
18697
- oldOptions = options.value;
18702
+ vm.emit('update:options', value);
18703
+ oldOptions = value;
18698
18704
  }, {
18699
18705
  deep: true,
18700
18706
  immediate: true
@@ -18975,7 +18981,7 @@ function provideSelection(props, _ref9) {
18975
18981
  });
18976
18982
  return !!items.length && isSelected(items);
18977
18983
  });
18978
- const showSelectAll = computed(() => selectStrategy.value.showSelectAll);
18984
+ const showSelectAll = toRef(() => selectStrategy.value.showSelectAll);
18979
18985
  const data = {
18980
18986
  toggleSelect,
18981
18987
  select,
@@ -19013,8 +19019,8 @@ const makeDataTableSortProps = propsFactory({
19013
19019
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
19014
19020
  function createSort(props) {
19015
19021
  const sortBy = useProxiedModel(props, 'sortBy');
19016
- const mustSort = toRef(props, 'mustSort');
19017
- const multiSort = toRef(props, 'multiSort');
19022
+ const mustSort = toRef(() => props.mustSort);
19023
+ const multiSort = toRef(() => props.multiSort);
19018
19024
  return {
19019
19025
  sortBy,
19020
19026
  mustSort,
@@ -19232,7 +19238,7 @@ const VDataIterator = genericComponent()({
19232
19238
  slots
19233
19239
  } = _ref;
19234
19240
  const groupBy = useProxiedModel(props, 'groupBy');
19235
- const search = toRef(props, 'search');
19241
+ const search = toRef(() => props.search);
19236
19242
  const {
19237
19243
  items
19238
19244
  } = useDataIteratorItems(props);
@@ -19276,7 +19282,7 @@ const VDataIterator = genericComponent()({
19276
19282
  const {
19277
19283
  flatItems
19278
19284
  } = useGroupedItems(sortedItems, groupBy, opened);
19279
- const itemsLength = computed(() => flatItems.value.length);
19285
+ const itemsLength = toRef(() => flatItems.value.length);
19280
19286
  const {
19281
19287
  startIndex,
19282
19288
  stopIndex,
@@ -19556,13 +19562,13 @@ const VPagination = genericComponent()({
19556
19562
  } = useRefs();
19557
19563
  provideDefaults({
19558
19564
  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')
19565
+ color: toRef(() => props.color),
19566
+ border: toRef(() => props.border),
19567
+ density: toRef(() => props.density),
19568
+ size: toRef(() => props.size),
19569
+ variant: toRef(() => props.variant),
19570
+ rounded: toRef(() => props.rounded),
19571
+ elevation: toRef(() => props.elevation)
19566
19572
  }
19567
19573
  });
19568
19574
  const items = computed(() => {
@@ -20203,7 +20209,7 @@ const VDataTableHeaders = genericComponent()({
20203
20209
  const {
20204
20210
  backgroundColorClasses,
20205
20211
  backgroundColorStyles
20206
- } = useBackgroundColor(props, 'color');
20212
+ } = useBackgroundColor(() => props.color);
20207
20213
  const {
20208
20214
  displayClasses,
20209
20215
  mobile
@@ -20861,13 +20867,13 @@ const VDataTable = genericComponent()({
20861
20867
  filterFunctions
20862
20868
  } = createHeaders(props, {
20863
20869
  groupBy,
20864
- showSelect: toRef(props, 'showSelect'),
20865
- showExpand: toRef(props, 'showExpand')
20870
+ showSelect: toRef(() => props.showSelect),
20871
+ showExpand: toRef(() => props.showExpand)
20866
20872
  });
20867
20873
  const {
20868
20874
  items
20869
20875
  } = useDataTableItems(props, columns);
20870
- const search = toRef(props, 'search');
20876
+ const search = toRef(() => props.search);
20871
20877
  const {
20872
20878
  filteredItems
20873
20879
  } = useFilter(props, items, search, {
@@ -20950,10 +20956,10 @@ const VDataTable = genericComponent()({
20950
20956
  });
20951
20957
  provideDefaults({
20952
20958
  VDataTableRows: {
20953
- hideNoData: toRef(props, 'hideNoData'),
20954
- noDataText: toRef(props, 'noDataText'),
20955
- loading: toRef(props, 'loading'),
20956
- loadingText: toRef(props, 'loadingText')
20959
+ hideNoData: toRef(() => props.hideNoData),
20960
+ noDataText: toRef(() => props.noDataText),
20961
+ loading: toRef(() => props.loading),
20962
+ loadingText: toRef(() => props.loadingText)
20957
20963
  }
20958
20964
  });
20959
20965
  const slotProps = computed(() => ({
@@ -21050,13 +21056,13 @@ const VDataTableVirtual = genericComponent()({
21050
21056
  sortRawFunctions
21051
21057
  } = createHeaders(props, {
21052
21058
  groupBy,
21053
- showSelect: toRef(props, 'showSelect'),
21054
- showExpand: toRef(props, 'showExpand')
21059
+ showSelect: toRef(() => props.showSelect),
21060
+ showExpand: toRef(() => props.showExpand)
21055
21061
  });
21056
21062
  const {
21057
21063
  items
21058
21064
  } = useDataTableItems(props, columns);
21059
- const search = toRef(props, 'search');
21065
+ const search = toRef(() => props.search);
21060
21066
  const {
21061
21067
  filteredItems
21062
21068
  } = useFilter(props, items, search, {
@@ -21132,10 +21138,10 @@ const VDataTableVirtual = genericComponent()({
21132
21138
  });
21133
21139
  provideDefaults({
21134
21140
  VDataTableRows: {
21135
- hideNoData: toRef(props, 'hideNoData'),
21136
- noDataText: toRef(props, 'noDataText'),
21137
- loading: toRef(props, 'loading'),
21138
- loadingText: toRef(props, 'loadingText')
21141
+ hideNoData: toRef(() => props.hideNoData),
21142
+ noDataText: toRef(() => props.noDataText),
21143
+ loading: toRef(() => props.loading),
21144
+ loadingText: toRef(() => props.loadingText)
21139
21145
  }
21140
21146
  });
21141
21147
  const slotProps = computed(() => ({
@@ -21288,8 +21294,8 @@ const VDataTableServer = genericComponent()({
21288
21294
  headers
21289
21295
  } = createHeaders(props, {
21290
21296
  groupBy,
21291
- showSelect: toRef(props, 'showSelect'),
21292
- showExpand: toRef(props, 'showExpand')
21297
+ showSelect: toRef(() => props.showSelect),
21298
+ showExpand: toRef(() => props.showExpand)
21293
21299
  });
21294
21300
  const {
21295
21301
  items
@@ -21344,7 +21350,7 @@ const VDataTableServer = genericComponent()({
21344
21350
  itemsPerPage,
21345
21351
  sortBy,
21346
21352
  groupBy,
21347
- search: toRef(props, 'search')
21353
+ search: toRef(() => props.search)
21348
21354
  });
21349
21355
  provide('v-data-table', {
21350
21356
  toggleSort,
@@ -21352,10 +21358,10 @@ const VDataTableServer = genericComponent()({
21352
21358
  });
21353
21359
  provideDefaults({
21354
21360
  VDataTableRows: {
21355
- hideNoData: toRef(props, 'hideNoData'),
21356
- noDataText: toRef(props, 'noDataText'),
21357
- loading: toRef(props, 'loading'),
21358
- loadingText: toRef(props, 'loadingText')
21361
+ hideNoData: toRef(() => props.hideNoData),
21362
+ noDataText: toRef(() => props.noDataText),
21363
+ loading: toRef(() => props.loading),
21364
+ loadingText: toRef(() => props.loadingText)
21359
21365
  }
21360
21366
  });
21361
21367
  const slotProps = computed(() => ({
@@ -21825,7 +21831,7 @@ const VDatePickerHeader = genericComponent()({
21825
21831
  const {
21826
21832
  backgroundColorClasses,
21827
21833
  backgroundColorStyles
21828
- } = useBackgroundColor(props, 'color');
21834
+ } = useBackgroundColor(() => props.color);
21829
21835
  function onClick() {
21830
21836
  emit('click');
21831
21837
  }
@@ -21964,21 +21970,21 @@ function useCalendar(props) {
21964
21970
  const isSame = adapter.isSameDay(date, month.value);
21965
21971
  return {
21966
21972
  date,
21967
- isoDate,
21968
21973
  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
21974
  isAdjacent,
21976
- isHidden: isAdjacent && !props.showAdjacentMonths,
21977
- isStart,
21978
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21975
+ isDisabled: isDisabled(date),
21979
21976
  isEnd,
21977
+ isHidden: isAdjacent && !props.showAdjacentMonths,
21980
21978
  isSame,
21981
- localized: adapter.format(date, 'dayOfMonth')
21979
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21980
+ isStart,
21981
+ isToday: adapter.isSameDay(date, today),
21982
+ isWeekEnd: index % 7 === 6,
21983
+ isWeekStart: index % 7 === 0,
21984
+ isoDate,
21985
+ localized: adapter.format(date, 'dayOfMonth'),
21986
+ month: adapter.getMonth(date),
21987
+ year: adapter.getYear(date)
21982
21988
  };
21983
21989
  });
21984
21990
  }
@@ -22066,7 +22072,7 @@ const VDatePickerMonth = genericComponent()({
22066
22072
  const rangeStart = shallowRef();
22067
22073
  const rangeStop = shallowRef();
22068
22074
  const isReverse = shallowRef(false);
22069
- const transition = computed(() => {
22075
+ const transition = toRef(() => {
22070
22076
  return !isReverse.value ? props.transition : props.reverseTransition;
22071
22077
  });
22072
22078
  if (props.multiple === 'range' && model.value.length > 0) {
@@ -22446,7 +22452,7 @@ const VDatePicker = genericComponent()({
22446
22452
  }
22447
22453
  return value && adapter.isValid(value) ? value : today;
22448
22454
  });
22449
- const headerColor = computed(() => props.headerColor ?? props.color);
22455
+ const headerColor = toRef(() => props.headerColor ?? props.color);
22450
22456
  const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22451
22457
  const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22452
22458
  const isReversing = shallowRef(false);
@@ -22463,8 +22469,8 @@ const VDatePicker = genericComponent()({
22463
22469
  date = adapter.setYear(date, year.value);
22464
22470
  return adapter.format(date, 'monthAndYear');
22465
22471
  });
22466
- // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22467
- const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22472
+ // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22473
+ const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22468
22474
  const disabled = computed(() => {
22469
22475
  if (props.disabled) return true;
22470
22476
  const targets = [];
@@ -22676,7 +22682,7 @@ const VEmptyState = genericComponent()({
22676
22682
  const {
22677
22683
  backgroundColorClasses,
22678
22684
  backgroundColorStyles
22679
- } = useBackgroundColor(toRef(props, 'bgColor'));
22685
+ } = useBackgroundColor(() => props.bgColor);
22680
22686
  const {
22681
22687
  dimensionStyles
22682
22688
  } = useDimension(props);
@@ -22839,7 +22845,7 @@ const VExpansionPanelTitle = genericComponent()({
22839
22845
  const {
22840
22846
  backgroundColorClasses,
22841
22847
  backgroundColorStyles
22842
- } = useBackgroundColor(props, 'color');
22848
+ } = useBackgroundColor(() => props.color);
22843
22849
  const {
22844
22850
  dimensionStyles
22845
22851
  } = useDimension(props);
@@ -22850,7 +22856,7 @@ const VExpansionPanelTitle = genericComponent()({
22850
22856
  expandIcon: props.expandIcon,
22851
22857
  readonly: props.readonly
22852
22858
  }));
22853
- const icon = computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22859
+ const icon = toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22854
22860
  useRender(() => withDirectives(createVNode("button", {
22855
22861
  "class": ['v-expansion-panel-title', {
22856
22862
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
@@ -22905,14 +22911,14 @@ const VExpansionPanel = genericComponent()({
22905
22911
  const {
22906
22912
  backgroundColorClasses,
22907
22913
  backgroundColorStyles
22908
- } = useBackgroundColor(props, 'bgColor');
22914
+ } = useBackgroundColor(() => props.bgColor);
22909
22915
  const {
22910
22916
  elevationClasses
22911
22917
  } = useElevation(props);
22912
22918
  const {
22913
22919
  roundedClasses
22914
22920
  } = useRounded(props);
22915
- const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);
22921
+ const isDisabled = toRef(() => groupItem?.disabled.value || props.disabled);
22916
22922
  const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
22917
22923
  if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
22918
22924
  return arr;
@@ -23003,21 +23009,21 @@ const VExpansionPanels = genericComponent()({
23003
23009
  const {
23004
23010
  themeClasses
23005
23011
  } = provideTheme(props);
23006
- const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23012
+ const variantClass = toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23007
23013
  provideDefaults({
23008
23014
  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')
23015
+ bgColor: toRef(() => props.bgColor),
23016
+ collapseIcon: toRef(() => props.collapseIcon),
23017
+ color: toRef(() => props.color),
23018
+ eager: toRef(() => props.eager),
23019
+ elevation: toRef(() => props.elevation),
23020
+ expandIcon: toRef(() => props.expandIcon),
23021
+ focusable: toRef(() => props.focusable),
23022
+ hideActions: toRef(() => props.hideActions),
23023
+ readonly: toRef(() => props.readonly),
23024
+ ripple: toRef(() => props.ripple),
23025
+ rounded: toRef(() => props.rounded),
23026
+ static: toRef(() => props.static)
23021
23027
  }
23022
23028
  });
23023
23029
  useRender(() => createVNode(props.tag, {
@@ -23079,7 +23085,7 @@ const VFab = genericComponent()({
23079
23085
  if (!entries.length) return;
23080
23086
  height.value = entries[0].target.clientHeight;
23081
23087
  });
23082
- const hasPosition = computed(() => props.app || props.absolute);
23088
+ const hasPosition = toRef(() => props.app || props.absolute);
23083
23089
  const position = computed(() => {
23084
23090
  if (!hasPosition.value) return false;
23085
23091
  return props.location?.split(' ').shift() ?? 'bottom';
@@ -23096,7 +23102,7 @@ const VFab = genericComponent()({
23096
23102
  layoutSize: computed(() => props.layout ? height.value + 24 : 0),
23097
23103
  elementSize: computed(() => height.value + 24),
23098
23104
  active: computed(() => props.app && model.value),
23099
- absolute: toRef(props, 'absolute')
23105
+ absolute: toRef(() => props.absolute)
23100
23106
  });
23101
23107
  watchEffect(() => {
23102
23108
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23221,7 +23227,7 @@ const VFileInput = genericComponent()({
23221
23227
  const vInputRef = ref();
23222
23228
  const vFieldRef = ref();
23223
23229
  const inputRef = ref();
23224
- const isActive = computed(() => isFocused.value || props.active);
23230
+ const isActive = toRef(() => isFocused.value || props.active);
23225
23231
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
23226
23232
  function onFocus() {
23227
23233
  if (inputRef.value !== document.activeElement) {
@@ -23394,7 +23400,7 @@ const VFooter = genericComponent()({
23394
23400
  const {
23395
23401
  backgroundColorClasses,
23396
23402
  backgroundColorStyles
23397
- } = useBackgroundColor(toRef(props, 'color'));
23403
+ } = useBackgroundColor(() => props.color);
23398
23404
  const {
23399
23405
  borderClasses
23400
23406
  } = useBorder(props);
@@ -23416,11 +23422,11 @@ const VFooter = genericComponent()({
23416
23422
  const layout = useLayoutItem({
23417
23423
  id: props.name,
23418
23424
  order: computed(() => parseInt(props.order, 10)),
23419
- position: computed(() => 'bottom'),
23425
+ position: toRef(() => 'bottom'),
23420
23426
  layoutSize: height,
23421
23427
  elementSize: computed(() => props.height === 'auto' ? undefined : height.value),
23422
- active: computed(() => props.app),
23423
- absolute: toRef(props, 'absolute')
23428
+ active: toRef(() => props.app),
23429
+ absolute: toRef(() => props.absolute)
23424
23430
  });
23425
23431
  watchEffect(() => {
23426
23432
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23893,11 +23899,11 @@ const VLayoutItem = genericComponent()({
23893
23899
  } = useLayoutItem({
23894
23900
  id: props.name,
23895
23901
  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')
23902
+ position: toRef(() => props.position),
23903
+ elementSize: toRef(() => props.size),
23904
+ layoutSize: toRef(() => props.size),
23905
+ active: toRef(() => props.modelValue),
23906
+ absolute: toRef(() => props.absolute)
23901
23907
  });
23902
23908
  return () => createVNode("div", {
23903
23909
  "class": ['v-layout-item', props.class],
@@ -24429,7 +24435,7 @@ const VNavigationDrawer = genericComponent()({
24429
24435
  const {
24430
24436
  backgroundColorClasses,
24431
24437
  backgroundColorStyles
24432
- } = useBackgroundColor(toRef(props, 'color'));
24438
+ } = useBackgroundColor(() => props.color);
24433
24439
  const {
24434
24440
  elevationClasses
24435
24441
  } = useElevation(props);
@@ -24462,7 +24468,7 @@ const VNavigationDrawer = genericComponent()({
24462
24468
  const location = computed(() => {
24463
24469
  return toPhysical(props.location, isRtl.value);
24464
24470
  });
24465
- const isPersistent = computed(() => props.persistent);
24471
+ const isPersistent = toRef(() => props.persistent);
24466
24472
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
24467
24473
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
24468
24474
  useToggleScope(() => props.expandOnHover && props.rail != null, () => {
@@ -24488,7 +24494,7 @@ const VNavigationDrawer = genericComponent()({
24488
24494
  isActive,
24489
24495
  isTemporary,
24490
24496
  width,
24491
- touchless: toRef(props, 'touchless'),
24497
+ touchless: toRef(() => props.touchless),
24492
24498
  position: location
24493
24499
  });
24494
24500
  const layoutSize = computed(() => {
@@ -24505,7 +24511,7 @@ const VNavigationDrawer = genericComponent()({
24505
24511
  layoutSize,
24506
24512
  elementSize: width,
24507
24513
  active: readonly(isActive),
24508
- disableTransitions: computed(() => isDragging.value),
24514
+ disableTransitions: toRef(() => isDragging.value),
24509
24515
  absolute: computed(() =>
24510
24516
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
24511
24517
  props.absolute || isSticky.value && typeof isStuck.value !== 'string')
@@ -24518,9 +24524,9 @@ const VNavigationDrawer = genericComponent()({
24518
24524
  isSticky,
24519
24525
  layoutItemStyles
24520
24526
  });
24521
- const scrimColor = useBackgroundColor(computed(() => {
24527
+ const scrimColor = useBackgroundColor(() => {
24522
24528
  return typeof props.scrim === 'string' ? props.scrim : null;
24523
- }));
24529
+ });
24524
24530
  const scrimStyles = computed(() => ({
24525
24531
  ...(isDragging.value ? {
24526
24532
  opacity: dragProgress.value * 0.2,
@@ -24734,24 +24740,24 @@ const VNumberInput = genericComponent()({
24734
24740
  const controlVariant = computed(() => {
24735
24741
  return props.hideInput ? 'stacked' : props.controlVariant;
24736
24742
  });
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(() => ({
24743
+ const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24744
+ const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24745
+ const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small');
24746
+ const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24747
+ const incrementSlotProps = {
24742
24748
  props: {
24743
24749
  onClick: onControlClick,
24744
24750
  onPointerup: onControlMouseup,
24745
24751
  onPointerdown: onUpControlMousedown
24746
24752
  }
24747
- }));
24748
- const decrementSlotProps = computed(() => ({
24753
+ };
24754
+ const decrementSlotProps = {
24749
24755
  props: {
24750
24756
  onClick: onControlClick,
24751
24757
  onPointerup: onControlMouseup,
24752
24758
  onPointerdown: onDownControlMousedown
24753
24759
  }
24754
- }));
24760
+ };
24755
24761
  watch(() => props.precision, () => formatInputValue());
24756
24762
  onMounted(() => {
24757
24763
  clampModel();
@@ -24903,7 +24909,7 @@ const VNumberInput = genericComponent()({
24903
24909
  }
24904
24910
  }
24905
24911
  }, {
24906
- default: () => [slots.increment(incrementSlotProps.value)]
24912
+ default: () => [slots.increment(incrementSlotProps)]
24907
24913
  });
24908
24914
  }
24909
24915
  function decrementControlNode() {
@@ -24932,7 +24938,7 @@ const VNumberInput = genericComponent()({
24932
24938
  }
24933
24939
  }
24934
24940
  }, {
24935
- default: () => [slots.decrement(decrementSlotProps.value)]
24941
+ default: () => [slots.decrement(decrementSlotProps)]
24936
24942
  });
24937
24943
  }
24938
24944
  function controlNode() {
@@ -25132,12 +25138,12 @@ const VOtpInput = genericComponent()({
25132
25138
  }
25133
25139
  provideDefaults({
25134
25140
  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)
25141
+ color: toRef(() => props.color),
25142
+ bgColor: toRef(() => props.color),
25143
+ baseColor: toRef(() => props.baseColor),
25144
+ disabled: toRef(() => props.disabled),
25145
+ error: toRef(() => props.error),
25146
+ variant: toRef(() => props.variant)
25141
25147
  }
25142
25148
  }, {
25143
25149
  scoped: true
@@ -25938,7 +25944,7 @@ const VSkeletonLoader = genericComponent()({
25938
25944
  const {
25939
25945
  backgroundColorClasses,
25940
25946
  backgroundColorStyles
25941
- } = useBackgroundColor(toRef(props, 'color'));
25947
+ } = useBackgroundColor(() => props.color);
25942
25948
  const {
25943
25949
  dimensionStyles
25944
25950
  } = useDimension(props);
@@ -26737,7 +26743,7 @@ const VSparkline = genericComponent()({
26737
26743
  const {
26738
26744
  textColorClasses,
26739
26745
  textColorStyles
26740
- } = useTextColor(toRef(props, 'color'));
26746
+ } = useTextColor(() => props.color);
26741
26747
  const hasLabels = computed(() => {
26742
26748
  return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
26743
26749
  });
@@ -27283,11 +27289,11 @@ const VSwitch = genericComponent()({
27283
27289
  } = useFocus(props);
27284
27290
  const control = ref();
27285
27291
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
27286
- const loaderColor = computed(() => {
27292
+ const loaderColor = toRef(() => {
27287
27293
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
27288
27294
  });
27289
27295
  const uid = useId();
27290
- const id = computed(() => props.id || `switch-${uid}`);
27296
+ const id = toRef(() => props.id || `switch-${uid}`);
27291
27297
  function onChange() {
27292
27298
  if (indeterminate.value) {
27293
27299
  indeterminate.value = false;
@@ -27438,7 +27444,7 @@ const VSystemBar = genericComponent()({
27438
27444
  const {
27439
27445
  backgroundColorClasses,
27440
27446
  backgroundColorStyles
27441
- } = useBackgroundColor(toRef(props, 'color'));
27447
+ } = useBackgroundColor(() => props.color);
27442
27448
  const {
27443
27449
  elevationClasses
27444
27450
  } = useElevation(props);
@@ -27458,7 +27464,7 @@ const VSystemBar = genericComponent()({
27458
27464
  layoutSize: height,
27459
27465
  elementSize: height,
27460
27466
  active: computed(() => true),
27461
- absolute: toRef(props, 'absolute')
27467
+ absolute: toRef(() => props.absolute)
27462
27468
  });
27463
27469
  useRender(() => createVNode(props.tag, {
27464
27470
  "class": ['v-system-bar', {
@@ -27500,7 +27506,7 @@ const VTab = genericComponent()({
27500
27506
  const {
27501
27507
  textColorClasses: sliderColorClasses,
27502
27508
  textColorStyles: sliderColorStyles
27503
- } = useTextColor(props, 'sliderColor');
27509
+ } = useTextColor(() => props.sliderColor);
27504
27510
  const rootEl = ref();
27505
27511
  const sliderEl = ref();
27506
27512
  const isHorizontal = computed(() => props.direction === 'horizontal');
@@ -27693,18 +27699,18 @@ const VTabs = genericComponent()({
27693
27699
  const {
27694
27700
  backgroundColorClasses,
27695
27701
  backgroundColorStyles
27696
- } = useBackgroundColor(toRef(props, 'bgColor'));
27702
+ } = useBackgroundColor(() => props.bgColor);
27697
27703
  const {
27698
27704
  scopeId
27699
27705
  } = useScopeId();
27700
27706
  provideDefaults({
27701
27707
  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')
27708
+ color: toRef(() => props.color),
27709
+ direction: toRef(() => props.direction),
27710
+ stacked: toRef(() => props.stacked),
27711
+ fixed: toRef(() => props.fixedTabs),
27712
+ sliderColor: toRef(() => props.sliderColor),
27713
+ hideSlider: toRef(() => props.hideSlider)
27708
27714
  }
27709
27715
  });
27710
27716
  useRender(() => {
@@ -28054,7 +28060,7 @@ const VTimelineDivider = genericComponent()({
28054
28060
  const {
28055
28061
  backgroundColorStyles,
28056
28062
  backgroundColorClasses
28057
- } = useBackgroundColor(toRef(props, 'dotColor'));
28063
+ } = useBackgroundColor(() => props.dotColor);
28058
28064
  const {
28059
28065
  roundedClasses
28060
28066
  } = useRounded(props, 'v-timeline-divider__dot');
@@ -28064,7 +28070,7 @@ const VTimelineDivider = genericComponent()({
28064
28070
  const {
28065
28071
  backgroundColorClasses: lineColorClasses,
28066
28072
  backgroundColorStyles: lineColorStyles
28067
- } = useBackgroundColor(toRef(props, 'lineColor'));
28073
+ } = useBackgroundColor(() => props.lineColor);
28068
28074
  useRender(() => createVNode("div", {
28069
28075
  "class": ['v-timeline-divider', {
28070
28076
  'v-timeline-divider--fill-dot': props.fillDot
@@ -28235,17 +28241,17 @@ const VTimeline = genericComponent()({
28235
28241
  } = useRtl();
28236
28242
  provideDefaults({
28237
28243
  VTimelineDivider: {
28238
- lineColor: toRef(props, 'lineColor')
28244
+ lineColor: toRef(() => props.lineColor)
28239
28245
  },
28240
28246
  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')
28247
+ density: toRef(() => props.density),
28248
+ dotColor: toRef(() => props.dotColor),
28249
+ fillDot: toRef(() => props.fillDot),
28250
+ hideOpposite: toRef(() => props.hideOpposite),
28251
+ iconColor: toRef(() => props.iconColor),
28252
+ lineColor: toRef(() => props.lineColor),
28253
+ lineInset: toRef(() => props.lineInset),
28254
+ size: toRef(() => props.size)
28249
28255
  }
28250
28256
  });
28251
28257
  const sideClasses = computed(() => {
@@ -28292,9 +28298,9 @@ const VToolbarItems = genericComponent()({
28292
28298
  } = _ref;
28293
28299
  provideDefaults({
28294
28300
  VBtn: {
28295
- color: toRef(props, 'color'),
28301
+ color: toRef(() => props.color),
28296
28302
  height: 'inherit',
28297
- variant: toRef(props, 'variant')
28303
+ variant: toRef(() => props.variant)
28298
28304
  }
28299
28305
  });
28300
28306
  useRender(() => createVNode("div", {
@@ -28341,7 +28347,7 @@ const VTooltip = genericComponent()({
28341
28347
  scopeId
28342
28348
  } = useScopeId();
28343
28349
  const uid = useId();
28344
- const id = computed(() => props.id || `v-tooltip-${uid}`);
28350
+ const id = toRef(() => props.id || `v-tooltip-${uid}`);
28345
28351
  const overlay = ref();
28346
28352
  const location = computed(() => {
28347
28353
  return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
@@ -28349,7 +28355,7 @@ const VTooltip = genericComponent()({
28349
28355
  const origin = computed(() => {
28350
28356
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28351
28357
  });
28352
- const transition = computed(() => {
28358
+ const transition = toRef(() => {
28353
28359
  if (props.transition) return props.transition;
28354
28360
  return isActive.value ? 'scale-transition' : 'fade-transition';
28355
28361
  });
@@ -28428,13 +28434,19 @@ const makeVCalendarIntervalEventProps = propsFactory({
28428
28434
  }, 'VCalendarIntervalEvent');
28429
28435
  const VCalendarIntervalEvent = genericComponent()({
28430
28436
  name: 'VCalendarIntervalEvent',
28437
+ inheritAttrs: false,
28431
28438
  props: makeVCalendarIntervalEventProps(),
28432
- setup(props) {
28439
+ setup(props, _ref) {
28440
+ let {
28441
+ attrs,
28442
+ emit,
28443
+ slots
28444
+ } = _ref;
28433
28445
  const adapter = useDate();
28434
28446
  const calcHeight = () => {
28435
- if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
28447
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.end, props.interval?.end)) {
28436
28448
  return {
28437
- height: '100%',
28449
+ height: `${props.intervalHeight}px`,
28438
28450
  margin: convertToUnit(0)
28439
28451
  };
28440
28452
  } else {
@@ -28443,8 +28455,8 @@ const VCalendarIntervalEvent = genericComponent()({
28443
28455
  margin
28444
28456
  } = Array.from({
28445
28457
  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)) {
28458
+ }, (_, x) => (x + 1) * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28459
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.end)) {
28448
28460
  return {
28449
28461
  height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
28450
28462
  margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
@@ -28465,16 +28477,30 @@ const VCalendarIntervalEvent = genericComponent()({
28465
28477
  }
28466
28478
  };
28467
28479
  useRender(() => {
28468
- return createVNode(VSheet, {
28480
+ return createVNode("div", null, [slots.intervalEvent?.({
28481
+ height: calcHeight().height,
28482
+ margin: calcHeight().margin,
28483
+ eventClass: 'v-calendar-internal-event',
28484
+ event: props.event,
28485
+ interval: props.interval
28486
+ }) ?? createVNode(VSheet, mergeProps({
28469
28487
  "height": calcHeight().height,
28470
28488
  "density": "comfortable",
28471
28489
  "style": `margin-top: ${calcHeight().margin}`,
28472
28490
  "class": "v-calendar-internal-event",
28473
28491
  "color": props.event?.color ?? undefined,
28474
28492
  "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
28475
- }, {
28493
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28494
+ event: props.event,
28495
+ allDay: false,
28496
+ day: null,
28497
+ interval: props.interval,
28498
+ intervalDivisions: props.intervalDivisions,
28499
+ intervalDuration: props.intervalDuration,
28500
+ intervalHeight: props.intervalHeight
28501
+ }))), {
28476
28502
  default: () => [props.event?.first ? props.event?.title : '']
28477
- });
28503
+ })]);
28478
28504
  });
28479
28505
  return {};
28480
28506
  }
@@ -28510,6 +28536,7 @@ const makeVCalendarIntervalProps = propsFactory({
28510
28536
  }, 'VCalendarInterval');
28511
28537
  const VCalendarInterval = genericComponent()({
28512
28538
  name: 'VCalendarInterval',
28539
+ inheritAttrs: false,
28513
28540
  props: {
28514
28541
  index: {
28515
28542
  type: Number,
@@ -28519,6 +28546,7 @@ const VCalendarInterval = genericComponent()({
28519
28546
  },
28520
28547
  setup(props, _ref) {
28521
28548
  let {
28549
+ attrs,
28522
28550
  emit,
28523
28551
  slots
28524
28552
  } = _ref;
@@ -28544,45 +28572,74 @@ const VCalendarInterval = genericComponent()({
28544
28572
  return props.dayIndex === 0 ? createVNode("div", {
28545
28573
  "class": "v-calendar-day__row-with-label",
28546
28574
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28547
- }, [createVNode("div", {
28575
+ }, [createVNode("div", mergeProps({
28548
28576
  "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", {
28577
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28578
+ interval: interval.value
28579
+ }) ?? (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
28580
  "class": "v-calendar-day__row-hairline"
28556
- }, null), createVNode("div", {
28581
+ }, null), createVNode("div", mergeProps({
28557
28582
  "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", {
28583
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28584
+ interval: interval.value
28585
+ }) ?? createVNode("div", null, [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
28586
+ "event": event,
28587
+ "interval": interval.value,
28588
+ "intervalDivisions": props.intervalDivisions,
28589
+ "intervalDuration": props.intervalDuration,
28590
+ "intervalHeight": props.intervalHeight
28591
+ }, attrs), {
28592
+ ...(slots.intervalEvent ? {
28593
+ intervalEvent: _ref2 => {
28594
+ let {
28595
+ height,
28596
+ margin,
28597
+ eventClass,
28598
+ event,
28599
+ interval
28600
+ } = _ref2;
28601
+ return slots.intervalEvent?.({
28602
+ height,
28603
+ margin,
28604
+ eventClass,
28605
+ event,
28606
+ interval
28607
+ });
28608
+ }
28609
+ } : {})
28610
+ }))])])]) : createVNode("div", {
28570
28611
  "class": "v-calendar-day__row-without-label",
28571
28612
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28572
- }, [createVNode("div", {
28613
+ }, [createVNode("div", mergeProps({
28573
28614
  "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
- })])]);
28615
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28616
+ interval: interval.value
28617
+ }) ?? interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
28618
+ "event": event,
28619
+ "interval": interval.value,
28620
+ "intervalDivisions": props.intervalDivisions,
28621
+ "intervalDuration": props.intervalDuration,
28622
+ "intervalHeight": props.intervalHeight
28623
+ }, attrs), {
28624
+ ...(slots.intervalEvent ? {
28625
+ intervalEvent: _ref3 => {
28626
+ let {
28627
+ height,
28628
+ margin,
28629
+ eventClass,
28630
+ event,
28631
+ interval
28632
+ } = _ref3;
28633
+ return slots.intervalEvent?.({
28634
+ height,
28635
+ margin,
28636
+ eventClass,
28637
+ event,
28638
+ interval
28639
+ });
28640
+ }
28641
+ } : {})
28642
+ }))])]);
28586
28643
  });
28587
28644
  return {
28588
28645
  interval
@@ -28590,6 +28647,8 @@ const VCalendarInterval = genericComponent()({
28590
28647
  }
28591
28648
  });
28592
28649
 
28650
+ // Types
28651
+
28593
28652
  const makeVCalendarDayProps = propsFactory({
28594
28653
  hideDayHeader: Boolean,
28595
28654
  intervals: {
@@ -28600,26 +28659,34 @@ const makeVCalendarDayProps = propsFactory({
28600
28659
  }, 'VCalendarDay');
28601
28660
  const VCalendarDay = genericComponent()({
28602
28661
  name: 'VCalendarDay',
28662
+ inheritAttrs: false,
28603
28663
  props: makeVCalendarDayProps(),
28604
- setup(props) {
28664
+ setup(props, _ref) {
28665
+ let {
28666
+ attrs,
28667
+ slots
28668
+ } = _ref;
28605
28669
  const adapter = useDate();
28606
28670
  const intervals = computed(() => [...Array.from({
28607
28671
  length: props.intervals
28608
- }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28672
+ }, (v, i) => i).filter((_, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28609
28673
  useRender(() => {
28610
28674
  const calendarIntervalProps = VCalendarInterval.filterProps(props);
28611
28675
  return createVNode("div", {
28612
28676
  "class": "v-calendar-day__container"
28613
- }, [!props.hideDayHeader && createVNode("div", {
28614
- "key": "calender-week-name",
28677
+ }, [!props.hideDayHeader && createVNode("div", mergeProps({
28678
+ "key": "calendar-week-name",
28615
28679
  "class": "v-calendar-weekly__head-weekday"
28616
- }, [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, {
28680
+ }, getPrefixedEventHandlers(attrs, ':day', () => props.day)), [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, mergeProps(getPrefixedEventHandlers(attrs, ':date', () => props.day), {
28681
+ "class": props.day?.isToday ? 'v-calendar-day-label__today' : undefined,
28617
28682
  "icon": true,
28618
28683
  "text": adapter.format(props.day.date, 'dayOfMonth'),
28619
- "variant": "text"
28620
- }, null)])]), intervals.value.map((_, index) => createVNode(VCalendarInterval, mergeProps({
28684
+ "variant": props.day?.isToday ? undefined : 'text'
28685
+ }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? createVNode(VCalendarInterval, mergeProps({
28621
28686
  "index": index
28622
- }, calendarIntervalProps), null))]);
28687
+ }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
28688
+ ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
28689
+ }))]);
28623
28690
  });
28624
28691
  return {
28625
28692
  intervals
@@ -28658,7 +28725,8 @@ const VCalendarHeader = genericComponent()({
28658
28725
  },
28659
28726
  setup(props, _ref) {
28660
28727
  let {
28661
- emit
28728
+ emit,
28729
+ slots
28662
28730
  } = _ref;
28663
28731
  const {
28664
28732
  t
@@ -28692,7 +28760,9 @@ const VCalendarHeader = genericComponent()({
28692
28760
  "onClick": next
28693
28761
  }, null), createVNode("div", {
28694
28762
  "class": "v-calendar-header__title"
28695
- }, [props.title])]));
28763
+ }, [slots.title?.({
28764
+ title: props.title
28765
+ }) ?? createVNode("span", null, [props.title])])]));
28696
28766
  return {};
28697
28767
  }
28698
28768
  });
@@ -28704,14 +28774,24 @@ const makeVCalendarEventProps = propsFactory({
28704
28774
  }, 'VCalendarEvent');
28705
28775
  const VCalendarEvent = genericComponent()({
28706
28776
  name: 'VCalendarEvent',
28777
+ inheritAttrs: false,
28707
28778
  props: makeVCalendarEventProps(),
28708
- setup(props) {
28709
- useRender(() => createVNode(VChip, {
28779
+ setup(props, _ref) {
28780
+ let {
28781
+ attrs,
28782
+ emit,
28783
+ slots
28784
+ } = _ref;
28785
+ useRender(() => createVNode(VChip, mergeProps({
28710
28786
  "color": props.allDay ? 'primary' : undefined,
28711
28787
  "density": "comfortable",
28712
28788
  "label": props.allDay,
28713
28789
  "width": "100%"
28714
- }, {
28790
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28791
+ allDay: props.allDay,
28792
+ day: props.day,
28793
+ event: props.event
28794
+ }))), {
28715
28795
  default: () => [createVNode(VBadge, {
28716
28796
  "inline": true,
28717
28797
  "dot": true,
@@ -28722,87 +28802,95 @@ const VCalendarEvent = genericComponent()({
28722
28802
  }
28723
28803
  });
28724
28804
 
28805
+ // Types
28806
+
28725
28807
  const makeVCalendarMonthDayProps = propsFactory({
28726
28808
  active: Boolean,
28727
28809
  color: String,
28728
- day: Object,
28810
+ day: {
28811
+ type: Object
28812
+ },
28729
28813
  disabled: Boolean,
28730
28814
  events: Array,
28731
28815
  title: [Number, String]
28732
28816
  }, 'VCalendarMonthDay');
28733
28817
  const VCalendarMonthDay = genericComponent()({
28734
28818
  name: 'VCalendarMonthDay',
28819
+ inheritAttrs: false,
28735
28820
  props: makeVCalendarMonthDayProps(),
28736
28821
  setup(props, _ref) {
28737
28822
  let {
28738
- emit,
28823
+ attrs,
28739
28824
  slots
28740
28825
  } = _ref;
28741
28826
  useRender(() => {
28742
- const hasTitle = !!(props.title || slots.title?.({
28743
- title: props.title
28744
- }));
28745
- return createVNode("div", {
28827
+ return createVNode("div", mergeProps({
28746
28828
  "class": ['v-calendar-month__day']
28747
- }, [!props.day?.isHidden && hasTitle && createVNode("div", {
28829
+ }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? createVNode("div", {
28748
28830
  "key": "title",
28749
28831
  "class": "v-calendar-weekly__day-label"
28750
- }, [slots.title?.({
28832
+ }, [slots.dayTitle?.({
28751
28833
  title: props.title
28752
- }) ?? createVNode(VBtn, {
28834
+ }) ?? createVNode(VBtn, mergeProps({
28753
28835
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
28754
28836
  "color": props.color,
28755
28837
  "disabled": props.disabled,
28756
28838
  "icon": true,
28757
28839
  "size": "x-small",
28758
- "variant": props.day?.isToday ? undefined : 'flat'
28759
- }, {
28760
- default: () => [props.title]
28761
- })]), !props.day?.isHidden && createVNode("div", {
28840
+ "variant": props.day?.isToday ? undefined : 'flat',
28841
+ "text": `${props.title}`
28842
+ }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? createVNode("div", {
28762
28843
  "key": "content",
28763
28844
  "class": "v-calendar-weekly__day-content"
28764
- }, [slots.content?.() ?? createVNode("div", null, [createVNode("div", {
28845
+ }, [slots.dayBody?.({
28846
+ day: props.day,
28847
+ events: props.events
28848
+ }) ?? createVNode("div", null, [createVNode("div", {
28765
28849
  "class": "v-calendar-weekly__day-alldayevents-container"
28766
- }, [props.events?.filter(event => event.allDay).map(event => slots.event ? slots.event({
28850
+ }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28767
28851
  day: props.day,
28768
28852
  allDay: true,
28769
28853
  event
28770
- }) : createVNode(VCalendarEvent, {
28854
+ }) : createVNode(VCalendarEvent, mergeProps({
28771
28855
  "day": props.day,
28772
28856
  "event": event,
28773
28857
  "allDay": true
28774
- }, null))]), createVNode("div", {
28858
+ }, attrs), null))]), createVNode("div", {
28775
28859
  "class": "v-calendar-weekly__day-events-container"
28776
- }, [props.events?.filter(event => !event.allDay).map(event => slots.event ? slots.event({
28860
+ }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28777
28861
  day: props.day,
28778
28862
  event,
28779
28863
  allDay: false
28780
- }) : createVNode(VCalendarEvent, {
28864
+ }) : createVNode(VCalendarEvent, mergeProps({
28781
28865
  "day": props.day,
28782
28866
  "event": event
28783
- }, null))])])]), !props.day?.isHidden && slots.default?.()]);
28867
+ }, attrs), null))])])]) : undefined]);
28784
28868
  });
28785
28869
  return {};
28786
28870
  }
28787
28871
  });
28788
28872
 
28873
+ // Types
28874
+
28789
28875
  const makeVCalendarProps = propsFactory({
28790
28876
  hideHeader: Boolean,
28791
28877
  hideWeekNumber: Boolean,
28792
28878
  ...makeCalendarProps(),
28793
28879
  ...makeVCalendarDayProps(),
28794
28880
  ...makeVCalendarHeaderProps()
28795
- }, 'VCalender');
28881
+ }, 'VCalendar');
28796
28882
  const VCalendar = genericComponent()({
28797
28883
  name: 'VCalendar',
28798
28884
  props: makeVCalendarProps(),
28799
28885
  emits: {
28800
28886
  next: null,
28801
28887
  prev: null,
28888
+ today: null,
28802
28889
  'update:modelValue': null
28803
28890
  },
28804
28891
  setup(props, _ref) {
28805
28892
  let {
28893
+ attrs,
28806
28894
  emit,
28807
28895
  slots
28808
28896
  } = _ref;
@@ -28820,27 +28908,33 @@ const VCalendar = genericComponent()({
28820
28908
  function onClickNext() {
28821
28909
  if (props.viewMode === 'month') {
28822
28910
  model.value = [adapter.addMonths(displayValue.value, 1)];
28823
- }
28824
- if (props.viewMode === 'week') {
28911
+ } else if (props.viewMode === 'week') {
28825
28912
  model.value = [adapter.addDays(displayValue.value, 7)];
28826
- }
28827
- if (props.viewMode === 'day') {
28913
+ } else if (props.viewMode === 'day') {
28828
28914
  model.value = [adapter.addDays(displayValue.value, 1)];
28829
28915
  }
28916
+ nextTick(() => {
28917
+ emit('next', model.value[0]);
28918
+ });
28830
28919
  }
28831
28920
  function onClickPrev() {
28832
28921
  if (props.viewMode === 'month') {
28833
28922
  model.value = [adapter.addMonths(displayValue.value, -1)];
28834
- }
28835
- if (props.viewMode === 'week') {
28923
+ } else if (props.viewMode === 'week') {
28836
28924
  model.value = [adapter.addDays(displayValue.value, -7)];
28837
- }
28838
- if (props.viewMode === 'day') {
28925
+ } else if (props.viewMode === 'day') {
28839
28926
  model.value = [adapter.addDays(displayValue.value, -1)];
28840
28927
  }
28928
+ nextTick(() => {
28929
+ emit('prev', model.value[0]);
28930
+ });
28841
28931
  }
28842
28932
  function onClickToday() {
28843
- model.value = [adapter.date()];
28933
+ const date = adapter.date();
28934
+ model.value = [date];
28935
+ nextTick(() => {
28936
+ emit('today', model.value[0]);
28937
+ });
28844
28938
  }
28845
28939
  const title = computed(() => {
28846
28940
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -28854,20 +28948,25 @@ const VCalendar = genericComponent()({
28854
28948
  'v-calendar-weekly': props.viewMode === 'week',
28855
28949
  'v-calendar-day': props.viewMode === 'day'
28856
28950
  }]
28857
- }, [createVNode("div", null, [!props.hideHeader && (!slots.header ? createVNode(VCalendarHeader, mergeProps({
28951
+ }, [createVNode("div", null, [!props.hideHeader && (slots.header?.({
28952
+ title: title.value,
28953
+ clickNext: onClickNext,
28954
+ clickPrev: onClickPrev,
28955
+ clickToday: onClickToday
28956
+ }) ?? createVNode(VCalendarHeader, mergeProps({
28858
28957
  "key": "calendar-header"
28859
28958
  }, calendarHeaderProps, {
28860
28959
  "title": title.value,
28861
28960
  "onClick:next": onClickNext,
28862
28961
  "onClick:prev": onClickPrev,
28863
28962
  "onClick:toToday": onClickToday
28864
- }), null) : slots.header({
28865
- title: title.value
28963
+ }), {
28964
+ title: slots.title
28866
28965
  }))]), createVNode("div", {
28867
28966
  "class": ['v-calendar__container', `days__${weekDays.value.length}`]
28868
28967
  }, [props.viewMode === 'month' && !props.hideDayHeader && createVNode("div", {
28869
28968
  "class": ['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
28870
- "key": "calenderWeeklyHead"
28969
+ "key": "calendarWeeklyHead"
28871
28970
  }, [!props.hideWeekNumber ? createVNode("div", {
28872
28971
  "key": "weekNumber0",
28873
28972
  "class": "v-calendar-weekly__head-weeknumber"
@@ -28876,24 +28975,39 @@ const VCalendar = genericComponent()({
28876
28975
  }, [dayNames[weekday]]))]), props.viewMode === 'month' && createVNode("div", {
28877
28976
  "key": "VCalendarMonth",
28878
28977
  "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", {
28978
+ }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? createVNode("div", mergeProps({
28880
28979
  "class": "v-calendar-month__weeknumber"
28881
- }, [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, {
28882
- "color": adapter.isSameDay(adapter.date(), day.date) ? 'primary' : undefined,
28980
+ }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
28981
+ weekNumber: weekNumbers.value[wi],
28982
+ week
28983
+ }))), [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, mergeProps({
28984
+ "key": day.date.getTime()
28985
+ }, calendarDayProps, {
28883
28986
  "day": day,
28884
- "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
28987
+ "title": adapter.format(day.date, 'dayOfMonth'),
28885
28988
  "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, {
28989
+ }, attrs), {
28990
+ ...pick(slots, ['day-body', 'day-event', 'day-title'])
28991
+ }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => slots['day-interval'] ? slots['day-interval']?.({
28992
+ ...calendarDayProps,
28993
+ day,
28994
+ dayIndex: i,
28995
+ events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
28996
+ }) : createVNode(VCalendarDay, mergeProps(calendarDayProps, {
28889
28997
  "day": day,
28890
28998
  "dayIndex": i,
28891
28999
  "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],
29000
+ }, attrs), {
29001
+ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29002
+ })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29003
+ day: genDays([displayValue.value], adapter.date())[0],
29004
+ dayIndex: 0,
29005
+ 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))
29006
+ }) : createVNode(VCalendarDay, mergeProps(calendarDayProps, {
29007
+ "day": genDays([model.value[0]], adapter.date())[0],
28894
29008
  "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)])]);
29009
+ "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))
29010
+ }, attrs), null))])]);
28897
29011
  });
28898
29012
  return {
28899
29013
  daysInMonth,
@@ -29503,7 +29617,7 @@ const VIconBtn = genericComponent()({
29503
29617
  colorClasses,
29504
29618
  colorStyles,
29505
29619
  variantClasses
29506
- } = useVariant(toRef(() => ({
29620
+ } = useVariant(() => ({
29507
29621
  color: (() => {
29508
29622
  if (props.disabled) return undefined;
29509
29623
  if (!isActive.value) return props.color;
@@ -29518,7 +29632,7 @@ const VIconBtn = genericComponent()({
29518
29632
  if (isActive.value) return props.activeVariant ?? props.variant;
29519
29633
  return props.baseVariant ?? props.variant;
29520
29634
  })()
29521
- })));
29635
+ }));
29522
29636
  const btnSizeMap = new Map(props.sizes);
29523
29637
  const iconSizeMap = new Map(props.iconSizes);
29524
29638
  function onClick() {
@@ -30015,11 +30129,11 @@ const VTimePickerClock = genericComponent()({
30015
30129
  const {
30016
30130
  textColorClasses,
30017
30131
  textColorStyles
30018
- } = useTextColor(toRef(props, 'color'));
30132
+ } = useTextColor(() => props.color);
30019
30133
  const {
30020
30134
  backgroundColorClasses,
30021
30135
  backgroundColorStyles
30022
- } = useBackgroundColor(toRef(props, 'color'));
30136
+ } = useBackgroundColor(() => props.color);
30023
30137
  const count = computed(() => props.max - props.min + 1);
30024
30138
  const roundCount = computed(() => props.double ? count.value / 2 : count.value);
30025
30139
  const degreesPerUnit = computed(() => 360 / roundCount.value);
@@ -30879,9 +30993,9 @@ const VTreeview = genericComponent()({
30879
30993
  const {
30880
30994
  items
30881
30995
  } = useListItems(props);
30882
- const activeColor = toRef(props, 'activeColor');
30883
- const baseColor = toRef(props, 'baseColor');
30884
- const color = toRef(props, 'color');
30996
+ const activeColor = toRef(() => props.activeColor);
30997
+ const baseColor = toRef(() => props.baseColor);
30998
+ const color = toRef(() => props.color);
30885
30999
  const activated = useProxiedModel(props, 'activated');
30886
31000
  const model = useProxiedModel(props, 'modelValue');
30887
31001
  const _selected = useProxiedModel(props, 'selected', props.modelValue);
@@ -30895,7 +31009,7 @@ const VTreeview = genericComponent()({
30895
31009
  const vListRef = ref();
30896
31010
  const opened = computed(() => props.openAll ? openAll(items.value) : props.opened);
30897
31011
  const flatItems = computed(() => flatten(items.value));
30898
- const search = toRef(props, 'search');
31012
+ const search = toRef(() => props.search);
30899
31013
  const {
30900
31014
  filteredItems
30901
31015
  } = useFilter(props, flatItems, search);
@@ -30938,18 +31052,18 @@ const VTreeview = genericComponent()({
30938
31052
  activeColor,
30939
31053
  baseColor,
30940
31054
  color,
30941
- collapseIcon: toRef(props, 'collapseIcon'),
30942
- expandIcon: toRef(props, 'expandIcon')
31055
+ collapseIcon: toRef(() => props.collapseIcon),
31056
+ expandIcon: toRef(() => props.expandIcon)
30943
31057
  },
30944
31058
  VTreeviewItem: {
30945
- activeClass: toRef(props, 'activeClass'),
31059
+ activeClass: toRef(() => props.activeClass),
30946
31060
  activeColor,
30947
31061
  baseColor,
30948
31062
  color,
30949
- density: toRef(props, 'density'),
30950
- disabled: toRef(props, 'disabled'),
30951
- lines: toRef(props, 'lines'),
30952
- variant: toRef(props, 'variant')
31063
+ density: toRef(() => props.density),
31064
+ disabled: toRef(() => props.disabled),
31065
+ lines: toRef(() => props.lines),
31066
+ variant: toRef(() => props.variant)
30953
31067
  }
30954
31068
  });
30955
31069
  useRender(() => {
@@ -31489,7 +31603,7 @@ function createVuetify$1() {
31489
31603
  };
31490
31604
  });
31491
31605
  }
31492
- const version$1 = "3.8.2-master.2025-04-19";
31606
+ const version$1 = "3.8.2-master.2025-04-23";
31493
31607
  createVuetify$1.version = version$1;
31494
31608
 
31495
31609
  // Vue's inject() can only be used in setup
@@ -31787,7 +31901,7 @@ var index = /*#__PURE__*/Object.freeze({
31787
31901
 
31788
31902
  /* eslint-disable local-rules/sort-imports */
31789
31903
 
31790
- const version = "3.8.2-master.2025-04-19";
31904
+ const version = "3.8.2-master.2025-04-23";
31791
31905
 
31792
31906
  /* eslint-disable local-rules/sort-imports */
31793
31907