@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,5 +1,5 @@
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
  */
@@ -446,15 +446,19 @@
446
446
 
447
447
  function destructComputed(getter) {
448
448
  const refs = vue.reactive({});
449
- const base = vue.computed(getter);
450
449
  vue.watchEffect(() => {
451
- for (const key in base.value) {
452
- refs[key] = base.value[key];
450
+ const base = getter();
451
+ for (const key in base) {
452
+ refs[key] = base[key];
453
453
  }
454
454
  }, {
455
455
  flush: 'sync'
456
456
  });
457
- return vue.toRefs(refs);
457
+ const obj = {};
458
+ for (const key in refs) {
459
+ obj[key] = vue.toRef(() => refs[key]);
460
+ }
461
+ return obj;
458
462
  }
459
463
 
460
464
  /** Array.includes but value can be any type */
@@ -1745,7 +1749,7 @@
1745
1749
  const mainRect = vue.computed(() => {
1746
1750
  return layers.value[layers.value.length - 1].layer;
1747
1751
  });
1748
- const mainStyles = vue.computed(() => {
1752
+ const mainStyles = vue.toRef(() => {
1749
1753
  return {
1750
1754
  '--v-layout-left': convertToUnit(mainRect.value.left),
1751
1755
  '--v-layout-right': convertToUnit(mainRect.value.right),
@@ -1860,10 +1864,10 @@
1860
1864
  layoutRect,
1861
1865
  rootZIndex
1862
1866
  });
1863
- const layoutClasses = vue.computed(() => ['v-layout', {
1867
+ const layoutClasses = vue.toRef(() => ['v-layout', {
1864
1868
  'v-layout--full-height': props.fullHeight
1865
1869
  }]);
1866
- const layoutStyles = vue.computed(() => ({
1870
+ const layoutStyles = vue.toRef(() => ({
1867
1871
  zIndex: parentLayout ? rootZIndex.value : undefined,
1868
1872
  position: parentLayout ? 'relative' : undefined,
1869
1873
  overflow: parentLayout ? 'hidden' : undefined
@@ -2254,7 +2258,7 @@
2254
2258
  return {
2255
2259
  isRtl,
2256
2260
  rtl,
2257
- rtlClasses: vue.computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2261
+ rtlClasses: vue.toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2258
2262
  };
2259
2263
  }
2260
2264
  function provideRtl(locale, rtl, props) {
@@ -2262,7 +2266,7 @@
2262
2266
  return {
2263
2267
  isRtl,
2264
2268
  rtl,
2265
- rtlClasses: vue.computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2269
+ rtlClasses: vue.toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2266
2270
  };
2267
2271
  }
2268
2272
  function useRtl() {
@@ -2486,7 +2490,7 @@
2486
2490
  }
2487
2491
  return acc;
2488
2492
  });
2489
- const current = vue.computed(() => computedThemes.value[name.value]);
2493
+ const current = vue.toRef(() => computedThemes.value[name.value]);
2490
2494
  const styles = vue.computed(() => {
2491
2495
  const lines = [];
2492
2496
  if (current.value?.dark) {
@@ -2533,7 +2537,7 @@
2533
2537
  }
2534
2538
  } else {
2535
2539
  if (IN_BROWSER) {
2536
- head.addHeadObjs(vue.computed(getHead));
2540
+ head.addHeadObjs(vue.toRef(getHead));
2537
2541
  vue.watchEffect(() => head.updateDOM());
2538
2542
  } else {
2539
2543
  head.addHeadObjs(getHead());
@@ -2552,7 +2556,7 @@
2552
2556
  }
2553
2557
  }
2554
2558
  }
2555
- const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2559
+ const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2556
2560
  return {
2557
2561
  install,
2558
2562
  isDisabled: parsedOptions.isDisabled,
@@ -2572,9 +2576,9 @@
2572
2576
  getCurrentInstance('provideTheme');
2573
2577
  const theme = vue.inject(ThemeSymbol, null);
2574
2578
  if (!theme) throw new Error('Could not find Vuetify theme injection');
2575
- const name = vue.computed(() => props.theme ?? theme.name.value);
2576
- const current = vue.computed(() => theme.themes.value[name.value]);
2577
- const themeClasses = vue.computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2579
+ const name = vue.toRef(() => props.theme ?? theme.name.value);
2580
+ const current = vue.toRef(() => theme.themes.value[name.value]);
2581
+ const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2578
2582
  const newTheme = {
2579
2583
  ...theme,
2580
2584
  name,
@@ -2858,6 +2862,7 @@
2858
2862
  const makeVDialogTransitionProps = propsFactory({
2859
2863
  target: [Object, Array]
2860
2864
  }, 'v-dialog-transition');
2865
+ const saved = new WeakMap();
2861
2866
  const VDialogTransition = genericComponent()({
2862
2867
  name: 'VDialogTransition',
2863
2868
  props: makeVDialogTransitionProps(),
@@ -2874,13 +2879,15 @@
2874
2879
  await new Promise(resolve => requestAnimationFrame(resolve));
2875
2880
  await new Promise(resolve => requestAnimationFrame(resolve));
2876
2881
  el.style.visibility = '';
2882
+ const dimensions = getDimensions(props.target, el);
2877
2883
  const {
2878
2884
  x,
2879
2885
  y,
2880
2886
  sx,
2881
2887
  sy,
2882
2888
  speed
2883
- } = getDimensions(props.target, el);
2889
+ } = dimensions;
2890
+ saved.set(el, dimensions);
2884
2891
  const animation = animate(el, [{
2885
2892
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2886
2893
  opacity: 0
@@ -2909,13 +2916,19 @@
2909
2916
  },
2910
2917
  async onLeave(el, done) {
2911
2918
  await new Promise(resolve => requestAnimationFrame(resolve));
2919
+ let dimensions;
2920
+ if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
2921
+ dimensions = saved.get(el);
2922
+ } else {
2923
+ dimensions = getDimensions(props.target, el);
2924
+ }
2912
2925
  const {
2913
2926
  x,
2914
2927
  y,
2915
2928
  sx,
2916
2929
  sy,
2917
2930
  speed
2918
- } = getDimensions(props.target, el);
2931
+ } = dimensions;
2919
2932
  const animation = animate(el, [{}, {
2920
2933
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2921
2934
  opacity: 0
@@ -3135,13 +3148,14 @@
3135
3148
  // Composables
3136
3149
  function useColor(colors) {
3137
3150
  return destructComputed(() => {
3151
+ const _colors = vue.toValue(colors);
3138
3152
  const classes = [];
3139
3153
  const styles = {};
3140
- if (colors.value.background) {
3141
- if (isCssColor(colors.value.background)) {
3142
- styles.backgroundColor = colors.value.background;
3143
- if (!colors.value.text && isParsableColor(colors.value.background)) {
3144
- const backgroundColor = parseColor(colors.value.background);
3154
+ if (_colors.background) {
3155
+ if (isCssColor(_colors.background)) {
3156
+ styles.backgroundColor = _colors.background;
3157
+ if (!_colors.text && isParsableColor(_colors.background)) {
3158
+ const backgroundColor = parseColor(_colors.background);
3145
3159
  if (backgroundColor.a == null || backgroundColor.a === 1) {
3146
3160
  const textColor = getForeground(backgroundColor);
3147
3161
  styles.color = textColor;
@@ -3149,15 +3163,15 @@
3149
3163
  }
3150
3164
  }
3151
3165
  } else {
3152
- classes.push(`bg-${colors.value.background}`);
3166
+ classes.push(`bg-${_colors.background}`);
3153
3167
  }
3154
3168
  }
3155
- if (colors.value.text) {
3156
- if (isCssColor(colors.value.text)) {
3157
- styles.color = colors.value.text;
3158
- styles.caretColor = colors.value.text;
3169
+ if (_colors.text) {
3170
+ if (isCssColor(_colors.text)) {
3171
+ styles.color = _colors.text;
3172
+ styles.caretColor = _colors.text;
3159
3173
  } else {
3160
- classes.push(`text-${colors.value.text}`);
3174
+ classes.push(`text-${_colors.text}`);
3161
3175
  }
3162
3176
  }
3163
3177
  return {
@@ -3166,27 +3180,25 @@
3166
3180
  };
3167
3181
  });
3168
3182
  }
3169
- function useTextColor(props, name) {
3170
- const colors = vue.computed(() => ({
3171
- text: vue.isRef(props) ? props.value : name ? props[name] : null
3172
- }));
3183
+ function useTextColor(color) {
3173
3184
  const {
3174
3185
  colorClasses: textColorClasses,
3175
3186
  colorStyles: textColorStyles
3176
- } = useColor(colors);
3187
+ } = useColor(() => ({
3188
+ text: vue.toValue(color)
3189
+ }));
3177
3190
  return {
3178
3191
  textColorClasses,
3179
3192
  textColorStyles
3180
3193
  };
3181
3194
  }
3182
- function useBackgroundColor(props, name) {
3183
- const colors = vue.computed(() => ({
3184
- background: vue.isRef(props) ? props.value : name ? props[name] : null
3185
- }));
3195
+ function useBackgroundColor(color) {
3186
3196
  const {
3187
3197
  colorClasses: backgroundColorClasses,
3188
3198
  colorStyles: backgroundColorStyles
3189
- } = useColor(colors);
3199
+ } = useColor(() => ({
3200
+ background: vue.toValue(color)
3201
+ }));
3190
3202
  return {
3191
3203
  backgroundColorClasses,
3192
3204
  backgroundColorStyles
@@ -3370,7 +3382,7 @@
3370
3382
  const {
3371
3383
  backgroundColorClasses,
3372
3384
  backgroundColorStyles
3373
- } = useBackgroundColor(vue.toRef(props, 'color'));
3385
+ } = useBackgroundColor(() => props.color);
3374
3386
  const {
3375
3387
  roundedClasses
3376
3388
  } = useRounded(props);
@@ -3477,7 +3489,7 @@
3477
3489
  };
3478
3490
  poll();
3479
3491
  }
3480
- const containClasses = vue.computed(() => ({
3492
+ const containClasses = vue.toRef(() => ({
3481
3493
  'v-img__img--cover': props.cover,
3482
3494
  'v-img__img--contain': !props.cover
3483
3495
  }));
@@ -3614,16 +3626,13 @@
3614
3626
  function useBorder(props) {
3615
3627
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
3616
3628
  const borderClasses = vue.computed(() => {
3617
- const border = vue.isRef(props) ? props.value : props.border;
3618
- const classes = [];
3629
+ const border = props.border;
3619
3630
  if (border === true || border === '') {
3620
- classes.push(`${name}--border`);
3631
+ return `${name}--border`;
3621
3632
  } else if (typeof border === 'string' || border === 0) {
3622
- for (const value of String(border).split(' ')) {
3623
- classes.push(`border-${value}`);
3624
- }
3633
+ return String(border).split(' ').map(v => `border-${v}`);
3625
3634
  }
3626
- return classes;
3635
+ return [];
3627
3636
  });
3628
3637
  return {
3629
3638
  borderClasses
@@ -3648,12 +3657,10 @@
3648
3657
  }
3649
3658
  }, 'elevation');
3650
3659
  function useElevation(props) {
3651
- const elevationClasses = vue.computed(() => {
3660
+ const elevationClasses = vue.toRef(() => {
3652
3661
  const elevation = vue.isRef(props) ? props.value : props.elevation;
3653
- const classes = [];
3654
- if (elevation == null) return classes;
3655
- classes.push(`elevation-${elevation}`);
3656
- return classes;
3662
+ if (elevation == null) return [];
3663
+ return [`elevation-${elevation}`];
3657
3664
  });
3658
3665
  return {
3659
3666
  elevationClasses
@@ -3704,7 +3711,7 @@
3704
3711
  const {
3705
3712
  backgroundColorClasses,
3706
3713
  backgroundColorStyles
3707
- } = useBackgroundColor(vue.toRef(props, 'color'));
3714
+ } = useBackgroundColor(() => props.color);
3708
3715
  const {
3709
3716
  borderClasses
3710
3717
  } = useBorder(props);
@@ -3913,7 +3920,7 @@
3913
3920
  isBooted.value = true;
3914
3921
  });
3915
3922
  });
3916
- const ssrBootStyles = vue.computed(() => !isBooted.value ? {
3923
+ const ssrBootStyles = vue.toRef(() => !isBooted.value ? {
3917
3924
  transition: 'none !important'
3918
3925
  } : undefined);
3919
3926
  return {
@@ -3981,7 +3988,7 @@
3981
3988
  } = useScroll(props, {
3982
3989
  canScroll
3983
3990
  });
3984
- const canHide = vue.computed(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3991
+ const canHide = vue.toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3985
3992
  const isCollapsed = vue.computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3986
3993
  const isFlat = vue.computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3987
3994
  const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
@@ -3992,7 +3999,7 @@
3992
3999
  if (!canHide.value) return height + extensionHeight;
3993
4000
  return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
3994
4001
  });
3995
- useToggleScope(vue.computed(() => !!props.scrollBehavior), () => {
4002
+ useToggleScope(() => !!props.scrollBehavior, () => {
3996
4003
  vue.watchEffect(() => {
3997
4004
  if (canHide.value) {
3998
4005
  if (scrollBehavior.value.inverted) {
@@ -4013,11 +4020,11 @@
4013
4020
  } = useLayoutItem({
4014
4021
  id: props.name,
4015
4022
  order: vue.computed(() => parseInt(props.order, 10)),
4016
- position: vue.toRef(props, 'location'),
4023
+ position: vue.toRef(() => props.location),
4017
4024
  layoutSize: height,
4018
4025
  elementSize: vue.shallowRef(undefined),
4019
4026
  active: isActive,
4020
- absolute: vue.toRef(props, 'absolute')
4027
+ absolute: vue.toRef(() => props.absolute)
4021
4028
  });
4022
4029
  useRender(() => {
4023
4030
  const toolbarProps = VToolbar.filterProps(props);
@@ -4060,7 +4067,7 @@
4060
4067
  }, 'density');
4061
4068
  function useDensity(props) {
4062
4069
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4063
- const densityClasses = vue.computed(() => {
4070
+ const densityClasses = vue.toRef(() => {
4064
4071
  return `${name}--density-${props.density}`;
4065
4072
  });
4066
4073
  return {
@@ -4090,24 +4097,24 @@
4090
4097
  }, 'variant');
4091
4098
  function useVariant(props) {
4092
4099
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4093
- const variantClasses = vue.computed(() => {
4100
+ const variantClasses = vue.toRef(() => {
4094
4101
  const {
4095
4102
  variant
4096
- } = vue.unref(props);
4103
+ } = vue.toValue(props);
4097
4104
  return `${name}--variant-${variant}`;
4098
4105
  });
4099
4106
  const {
4100
4107
  colorClasses,
4101
4108
  colorStyles
4102
- } = useColor(vue.computed(() => {
4109
+ } = useColor(() => {
4103
4110
  const {
4104
4111
  variant,
4105
4112
  color
4106
- } = vue.unref(props);
4113
+ } = vue.toValue(props);
4107
4114
  return {
4108
4115
  [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color
4109
4116
  };
4110
- }));
4117
+ });
4111
4118
  return {
4112
4119
  colorClasses,
4113
4120
  colorStyles,
@@ -4152,11 +4159,11 @@
4152
4159
  provideDefaults({
4153
4160
  VBtn: {
4154
4161
  height: 'auto',
4155
- baseColor: vue.toRef(props, 'baseColor'),
4156
- color: vue.toRef(props, 'color'),
4157
- density: vue.toRef(props, 'density'),
4162
+ baseColor: vue.toRef(() => props.baseColor),
4163
+ color: vue.toRef(() => props.color),
4164
+ density: vue.toRef(() => props.density),
4158
4165
  flat: true,
4159
- variant: vue.toRef(props, 'variant')
4166
+ variant: vue.toRef(() => props.variant)
4160
4167
  }
4161
4168
  });
4162
4169
  useRender(() => {
@@ -4206,7 +4213,7 @@
4206
4213
  if (!required) return group;
4207
4214
  throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);
4208
4215
  }
4209
- const value = vue.toRef(props, 'value');
4216
+ const value = vue.toRef(() => props.value);
4210
4217
  const disabled = vue.computed(() => !!(group.disabled.value || props.disabled));
4211
4218
  group.register({
4212
4219
  id,
@@ -4355,12 +4362,12 @@
4355
4362
  unregister,
4356
4363
  selected,
4357
4364
  select,
4358
- disabled: vue.toRef(props, 'disabled'),
4365
+ disabled: vue.toRef(() => props.disabled),
4359
4366
  prev: () => step(items.length - 1),
4360
4367
  next: () => step(1),
4361
4368
  isSelected: id => selected.value.includes(id),
4362
- selectedClass: vue.computed(() => props.selectedClass),
4363
- items: vue.computed(() => items),
4369
+ selectedClass: vue.toRef(() => props.selectedClass),
4370
+ items: vue.toRef(() => items),
4364
4371
  getItemIndex: value => getItemIndex(items, value)
4365
4372
  };
4366
4373
  vue.provide(injectKey, state);
@@ -4616,7 +4623,7 @@
4616
4623
  const icons = vue.inject(IconSymbol);
4617
4624
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4618
4625
  const iconData = vue.computed(() => {
4619
- const iconAlias = vue.unref(props);
4626
+ const iconAlias = vue.toValue(props);
4620
4627
  if (!iconAlias) return {
4621
4628
  component: VComponentIcon
4622
4629
  };
@@ -4666,14 +4673,15 @@
4666
4673
  function useSize(props) {
4667
4674
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4668
4675
  return destructComputed(() => {
4676
+ const size = props.size;
4669
4677
  let sizeClasses;
4670
4678
  let sizeStyles;
4671
- if (includes(predefinedSizes, props.size)) {
4672
- sizeClasses = `${name}--size-${props.size}`;
4673
- } else if (props.size) {
4679
+ if (includes(predefinedSizes, size)) {
4680
+ sizeClasses = `${name}--size-${size}`;
4681
+ } else if (size) {
4674
4682
  sizeStyles = {
4675
- width: convertToUnit(props.size),
4676
- height: convertToUnit(props.size)
4683
+ width: convertToUnit(size),
4684
+ height: convertToUnit(size)
4677
4685
  };
4678
4686
  }
4679
4687
  return {
@@ -4705,20 +4713,20 @@
4705
4713
  attrs,
4706
4714
  slots
4707
4715
  } = _ref;
4708
- const slotIcon = vue.ref();
4716
+ const slotIcon = vue.shallowRef();
4709
4717
  const {
4710
4718
  themeClasses
4711
4719
  } = useTheme();
4712
4720
  const {
4713
4721
  iconData
4714
- } = useIcon(vue.computed(() => slotIcon.value || props.icon));
4722
+ } = useIcon(() => slotIcon.value || props.icon);
4715
4723
  const {
4716
4724
  sizeClasses
4717
4725
  } = useSize(props);
4718
4726
  const {
4719
4727
  textColorClasses,
4720
4728
  textColorStyles
4721
- } = useTextColor(vue.toRef(props, 'color'));
4729
+ } = useTextColor(() => props.color);
4722
4730
  useRender(() => {
4723
4731
  const slotValue = slots.default?.();
4724
4732
  if (slotValue) {
@@ -4824,11 +4832,11 @@
4824
4832
  const {
4825
4833
  textColorClasses,
4826
4834
  textColorStyles
4827
- } = useTextColor(vue.toRef(props, 'color'));
4835
+ } = useTextColor(() => props.color);
4828
4836
  const {
4829
4837
  textColorClasses: underlayColorClasses,
4830
4838
  textColorStyles: underlayColorStyles
4831
- } = useTextColor(vue.toRef(props, 'bgColor'));
4839
+ } = useTextColor(() => props.bgColor);
4832
4840
  const {
4833
4841
  intersectionRef,
4834
4842
  isIntersecting
@@ -4837,15 +4845,15 @@
4837
4845
  resizeRef,
4838
4846
  contentRect
4839
4847
  } = useResizeObserver();
4840
- const normalizedValue = vue.computed(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
4841
- const width = vue.computed(() => Number(props.width));
4842
- const size = vue.computed(() => {
4848
+ const normalizedValue = vue.toRef(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
4849
+ const width = vue.toRef(() => Number(props.width));
4850
+ const size = vue.toRef(() => {
4843
4851
  // Get size from element if size prop value is small, large etc
4844
4852
  return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
4845
4853
  });
4846
- const diameter = vue.computed(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
4847
- const strokeWidth = vue.computed(() => width.value / size.value * diameter.value);
4848
- const strokeDashOffset = vue.computed(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));
4854
+ const diameter = vue.toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
4855
+ const strokeWidth = vue.toRef(() => width.value / size.value * diameter.value);
4856
+ const strokeDashOffset = vue.toRef(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));
4849
4857
  vue.watchEffect(() => {
4850
4858
  intersectionRef.value = root.value;
4851
4859
  resizeRef.value = root.value;
@@ -5023,19 +5031,19 @@
5023
5031
  const {
5024
5032
  textColorClasses,
5025
5033
  textColorStyles
5026
- } = useTextColor(props, 'color');
5034
+ } = useTextColor(() => props.color);
5027
5035
  const {
5028
5036
  backgroundColorClasses,
5029
5037
  backgroundColorStyles
5030
- } = useBackgroundColor(vue.computed(() => props.bgColor || props.color));
5038
+ } = useBackgroundColor(() => props.bgColor || props.color);
5031
5039
  const {
5032
5040
  backgroundColorClasses: bufferColorClasses,
5033
5041
  backgroundColorStyles: bufferColorStyles
5034
- } = useBackgroundColor(vue.computed(() => props.bufferColor || props.bgColor || props.color));
5042
+ } = useBackgroundColor(() => props.bufferColor || props.bgColor || props.color);
5035
5043
  const {
5036
5044
  backgroundColorClasses: barColorClasses,
5037
5045
  backgroundColorStyles: barColorStyles
5038
- } = useBackgroundColor(props, 'color');
5046
+ } = useBackgroundColor(() => props.color);
5039
5047
  const {
5040
5048
  roundedClasses
5041
5049
  } = useRounded(props);
@@ -5142,7 +5150,7 @@
5142
5150
  }, 'loader');
5143
5151
  function useLoader(props) {
5144
5152
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5145
- const loaderClasses = vue.computed(() => ({
5153
+ const loaderClasses = vue.toRef(() => ({
5146
5154
  [`${name}--loading`]: props.loading
5147
5155
  }));
5148
5156
  return {
@@ -5181,7 +5189,7 @@
5181
5189
  }, 'position');
5182
5190
  function usePosition(props) {
5183
5191
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5184
- const positionClasses = vue.computed(() => {
5192
+ const positionClasses = vue.toRef(() => {
5185
5193
  return props.position ? `${name}--${props.position}` : undefined;
5186
5194
  });
5187
5195
  return {
@@ -5202,12 +5210,12 @@
5202
5210
  }
5203
5211
  function useLink(props, attrs) {
5204
5212
  const RouterLink = vue.resolveDynamicComponent('RouterLink');
5205
- const isLink = vue.computed(() => !!(props.href || props.to));
5213
+ const isLink = vue.toRef(() => !!(props.href || props.to));
5206
5214
  const isClickable = vue.computed(() => {
5207
5215
  return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');
5208
5216
  });
5209
5217
  if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {
5210
- const href = vue.toRef(props, 'href');
5218
+ const href = vue.toRef(() => props.href);
5211
5219
  return {
5212
5220
  isLink,
5213
5221
  isClickable,
@@ -5217,12 +5225,12 @@
5217
5225
  })
5218
5226
  };
5219
5227
  }
5228
+
5220
5229
  // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined
5221
- const linkProps = vue.computed(() => ({
5222
- ...props,
5223
- to: vue.toRef(() => props.to || '')
5224
- }));
5225
- const routerLink = RouterLink.useLink(linkProps.value);
5230
+ const routerLink = RouterLink.useLink({
5231
+ to: vue.toRef(() => props.to || ''),
5232
+ replace: vue.toRef(() => props.replace)
5233
+ });
5226
5234
  // Actual link needs to be undefined when to prop is not used
5227
5235
  const link = vue.computed(() => props.to ? routerLink : undefined);
5228
5236
  const route = useRoute();
@@ -5242,7 +5250,7 @@
5242
5250
  href,
5243
5251
  linkProps: vue.reactive({
5244
5252
  href,
5245
- 'aria-current': vue.computed(() => isActive.value ? 'page' : undefined)
5253
+ 'aria-current': vue.toRef(() => isActive.value ? 'page' : undefined)
5246
5254
  })
5247
5255
  };
5248
5256
  }
@@ -5691,7 +5699,7 @@
5691
5699
  }
5692
5700
  return group?.isSelected.value;
5693
5701
  });
5694
- const color = vue.computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5702
+ const color = vue.toRef(() => isActive.value ? props.activeColor ?? props.color : props.color);
5695
5703
  const variantProps = vue.computed(() => {
5696
5704
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5697
5705
  return {
@@ -5705,7 +5713,7 @@
5705
5713
  variantClasses
5706
5714
  } = useVariant(variantProps);
5707
5715
  const isDisabled = vue.computed(() => group?.disabled.value || props.disabled);
5708
- const isElevated = vue.computed(() => {
5716
+ const isElevated = vue.toRef(() => {
5709
5717
  return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);
5710
5718
  });
5711
5719
  const valueAttr = vue.computed(() => {
@@ -5908,15 +5916,11 @@
5908
5916
  slots
5909
5917
  } = _ref;
5910
5918
  const isActive = useProxiedModel(props, 'modelValue');
5911
- const icon = vue.computed(() => {
5919
+ const icon = vue.toRef(() => {
5912
5920
  if (props.icon === false) return undefined;
5913
5921
  if (!props.type) return props.icon;
5914
5922
  return props.icon ?? `$${props.type}`;
5915
5923
  });
5916
- const variantProps = vue.computed(() => ({
5917
- color: props.color ?? props.type,
5918
- variant: props.variant
5919
- }));
5920
5924
  const {
5921
5925
  themeClasses
5922
5926
  } = provideTheme(props);
@@ -5924,7 +5928,10 @@
5924
5928
  colorClasses,
5925
5929
  colorStyles,
5926
5930
  variantClasses
5927
- } = useVariant(variantProps);
5931
+ } = useVariant(() => ({
5932
+ color: props.color ?? props.type,
5933
+ variant: props.variant
5934
+ }));
5928
5935
  const {
5929
5936
  densityClasses
5930
5937
  } = useDensity(props);
@@ -5946,11 +5953,11 @@
5946
5953
  const {
5947
5954
  textColorClasses,
5948
5955
  textColorStyles
5949
- } = useTextColor(vue.toRef(props, 'borderColor'));
5956
+ } = useTextColor(() => props.borderColor);
5950
5957
  const {
5951
5958
  t
5952
5959
  } = useLocale();
5953
- const closeProps = vue.computed(() => ({
5960
+ const closeProps = vue.toRef(() => ({
5954
5961
  'aria-label': t(props.closeLabel),
5955
5962
  onClick(e) {
5956
5963
  isActive.value = false;
@@ -6187,8 +6194,8 @@
6187
6194
  } = _ref;
6188
6195
  const modelValue = useProxiedModel(props, 'modelValue');
6189
6196
  const uid = vue.useId();
6190
- const id = vue.computed(() => props.id || `v-selection-control-group-${uid}`);
6191
- const name = vue.computed(() => props.name || id.value);
6197
+ const id = vue.toRef(() => props.id || `v-selection-control-group-${uid}`);
6198
+ const name = vue.toRef(() => props.name || id.value);
6192
6199
  const updateHandlers = new Set();
6193
6200
  vue.provide(VSelectionControlGroupSymbol, {
6194
6201
  modelValue,
@@ -6204,20 +6211,20 @@
6204
6211
  });
6205
6212
  provideDefaults({
6206
6213
  [props.defaultsTarget]: {
6207
- color: vue.toRef(props, 'color'),
6208
- disabled: vue.toRef(props, 'disabled'),
6209
- density: vue.toRef(props, 'density'),
6210
- error: vue.toRef(props, 'error'),
6211
- inline: vue.toRef(props, 'inline'),
6214
+ color: vue.toRef(() => props.color),
6215
+ disabled: vue.toRef(() => props.disabled),
6216
+ density: vue.toRef(() => props.density),
6217
+ error: vue.toRef(() => props.error),
6218
+ inline: vue.toRef(() => props.inline),
6212
6219
  modelValue,
6213
- multiple: vue.computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6220
+ multiple: vue.toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6214
6221
  name,
6215
- falseIcon: vue.toRef(props, 'falseIcon'),
6216
- trueIcon: vue.toRef(props, 'trueIcon'),
6217
- readonly: vue.toRef(props, 'readonly'),
6218
- ripple: vue.toRef(props, 'ripple'),
6219
- type: vue.toRef(props, 'type'),
6220
- valueComparator: vue.toRef(props, 'valueComparator')
6222
+ falseIcon: vue.toRef(() => props.falseIcon),
6223
+ trueIcon: vue.toRef(() => props.trueIcon),
6224
+ readonly: vue.toRef(() => props.readonly),
6225
+ ripple: vue.toRef(() => props.ripple),
6226
+ type: vue.toRef(() => props.type),
6227
+ valueComparator: vue.toRef(() => props.valueComparator)
6221
6228
  }
6222
6229
  });
6223
6230
  useRender(() => vue.createVNode("div", {
@@ -6273,16 +6280,16 @@
6273
6280
  const {
6274
6281
  textColorClasses,
6275
6282
  textColorStyles
6276
- } = useTextColor(vue.computed(() => {
6283
+ } = useTextColor(() => {
6277
6284
  if (props.error || props.disabled) return undefined;
6278
6285
  return model.value ? props.color : props.baseColor;
6279
- }));
6286
+ });
6280
6287
  const {
6281
6288
  backgroundColorClasses,
6282
6289
  backgroundColorStyles
6283
- } = useBackgroundColor(vue.computed(() => {
6290
+ } = useBackgroundColor(() => {
6284
6291
  return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
6285
- }));
6292
+ });
6286
6293
  const icon = vue.computed(() => model.value ? props.trueIcon : props.falseIcon);
6287
6294
  return {
6288
6295
  group,
@@ -6327,8 +6334,8 @@
6327
6334
  const isFocused = vue.shallowRef(false);
6328
6335
  const isFocusVisible = vue.shallowRef(false);
6329
6336
  const input = vue.ref();
6330
- const id = vue.computed(() => props.id || `input-${uid}`);
6331
- const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
6337
+ const id = vue.toRef(() => props.id || `input-${uid}`);
6338
+ const isInteractive = vue.toRef(() => !props.disabled && !props.readonly);
6332
6339
  group?.onForceUpdate(() => {
6333
6340
  if (input.value) {
6334
6341
  input.value.checked = model.value;
@@ -6466,10 +6473,10 @@
6466
6473
  indeterminate.value = false;
6467
6474
  }
6468
6475
  }
6469
- const falseIcon = vue.computed(() => {
6476
+ const falseIcon = vue.toRef(() => {
6470
6477
  return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
6471
6478
  });
6472
- const trueIcon = vue.computed(() => {
6479
+ const trueIcon = vue.toRef(() => {
6473
6480
  return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
6474
6481
  });
6475
6482
  useRender(() => {
@@ -6557,7 +6564,7 @@
6557
6564
  const {
6558
6565
  textColorClasses,
6559
6566
  textColorStyles
6560
- } = useTextColor(vue.computed(() => props.color));
6567
+ } = useTextColor(() => props.color);
6561
6568
  useRender(() => vue.createVNode(MaybeTransition, {
6562
6569
  "transition": props.transition,
6563
6570
  "tag": "div",
@@ -6587,7 +6594,7 @@
6587
6594
  function useFocus(props) {
6588
6595
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
6589
6596
  const isFocused = useProxiedModel(props, 'focused');
6590
- const focusClasses = vue.computed(() => {
6597
+ const focusClasses = vue.toRef(() => {
6591
6598
  return {
6592
6599
  [`${name}--focused`]: isFocused.value
6593
6600
  };
@@ -6626,8 +6633,8 @@
6626
6633
  }, 'form');
6627
6634
  function createForm(props) {
6628
6635
  const model = useProxiedModel(props, 'modelValue');
6629
- const isDisabled = vue.computed(() => props.disabled);
6630
- const isReadonly = vue.computed(() => props.readonly);
6636
+ const isDisabled = vue.toRef(() => props.disabled);
6637
+ const isReadonly = vue.toRef(() => props.readonly);
6631
6638
  const isValidating = vue.shallowRef(false);
6632
6639
  const items = vue.ref([]);
6633
6640
  const errors = vue.ref([]);
@@ -6717,7 +6724,7 @@
6717
6724
  isValidating,
6718
6725
  isValid: model,
6719
6726
  items,
6720
- validateOn: vue.toRef(props, 'validateOn')
6727
+ validateOn: vue.toRef(() => props.validateOn)
6721
6728
  });
6722
6729
  return {
6723
6730
  errors,
@@ -6898,11 +6905,6 @@
6898
6905
  }
6899
6906
  async function validate() {
6900
6907
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6901
- if (props.disabled || props.readonly) {
6902
- internalErrorMessages.value = [];
6903
- isValidating.value = false;
6904
- return internalErrorMessages.value;
6905
- }
6906
6908
  const results = [];
6907
6909
  isValidating.value = true;
6908
6910
  for (const rule of props.rules) {
@@ -7032,10 +7034,10 @@
7032
7034
  resetValidation,
7033
7035
  validate
7034
7036
  }));
7035
- const color = vue.computed(() => {
7037
+ const color = vue.toRef(() => {
7036
7038
  return props.error || props.disabled ? undefined : props.focused ? props.color : props.baseColor;
7037
7039
  });
7038
- const iconColor = vue.computed(() => {
7040
+ const iconColor = vue.toRef(() => {
7039
7041
  if (!props.iconColor) return undefined;
7040
7042
  return props.iconColor === true ? color.value : props.iconColor;
7041
7043
  });
@@ -7125,7 +7127,6 @@
7125
7127
  blur
7126
7128
  } = useFocus(props);
7127
7129
  const uid = vue.useId();
7128
- const id = vue.computed(() => props.id || `checkbox-${uid}`);
7129
7130
  useRender(() => {
7130
7131
  const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
7131
7132
  const inputProps = VInput.filterProps(props);
@@ -7135,7 +7136,7 @@
7135
7136
  }, rootAttrs, inputProps, {
7136
7137
  "modelValue": model.value,
7137
7138
  "onUpdate:modelValue": $event => model.value = $event,
7138
- "id": id.value,
7139
+ "id": props.id || `checkbox-${uid}`,
7139
7140
  "focused": isFocused.value,
7140
7141
  "style": props.style
7141
7142
  }), {
@@ -7319,7 +7320,7 @@
7319
7320
  return false;
7320
7321
  }
7321
7322
  });
7322
- const displayClasses = vue.computed(() => {
7323
+ const displayClasses = vue.toRef(() => {
7323
7324
  if (!name) return {};
7324
7325
  return {
7325
7326
  [`${name}--mobile`]: mobile.value
@@ -7434,7 +7435,7 @@
7434
7435
  const goTo = {
7435
7436
  ...goToInstance,
7436
7437
  // can be set via VLocaleProvider
7437
- rtl: vue.computed(() => goToInstance.rtl.value || isRtl.value)
7438
+ rtl: vue.toRef(() => goToInstance.rtl.value || isRtl.value)
7438
7439
  };
7439
7440
  async function go(target, options) {
7440
7441
  return scrollTo(target, mergeDeep(_options, options), false, goTo);
@@ -7926,11 +7927,11 @@
7926
7927
  } = useGroup(props, VChipGroupSymbol);
7927
7928
  provideDefaults({
7928
7929
  VChip: {
7929
- baseColor: vue.toRef(props, 'baseColor'),
7930
- color: vue.toRef(props, 'color'),
7931
- disabled: vue.toRef(props, 'disabled'),
7932
- filter: vue.toRef(props, 'filter'),
7933
- variant: vue.toRef(props, 'variant')
7930
+ baseColor: vue.toRef(() => props.baseColor),
7931
+ color: vue.toRef(() => props.color),
7932
+ disabled: vue.toRef(() => props.disabled),
7933
+ filter: vue.toRef(() => props.filter),
7934
+ variant: vue.toRef(() => props.variant)
7934
7935
  }
7935
7936
  });
7936
7937
  useRender(() => {
@@ -8056,9 +8057,9 @@
8056
8057
  const isActive = useProxiedModel(props, 'modelValue');
8057
8058
  const group = useGroupItem(props, VChipGroupSymbol, false);
8058
8059
  const link = useLink(props, attrs);
8059
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
8060
+ const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
8060
8061
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8061
- const closeProps = vue.computed(() => ({
8062
+ const closeProps = vue.toRef(() => ({
8062
8063
  'aria-label': t(props.closeLabel),
8063
8064
  onClick(e) {
8064
8065
  e.preventDefault();
@@ -8067,18 +8068,17 @@
8067
8068
  emit('click:close', e);
8068
8069
  }
8069
8070
  }));
8070
- const variantProps = vue.computed(() => {
8071
+ const {
8072
+ colorClasses,
8073
+ colorStyles,
8074
+ variantClasses
8075
+ } = useVariant(() => {
8071
8076
  const showColor = !group || group.isSelected.value;
8072
8077
  return {
8073
8078
  color: showColor ? props.color ?? props.baseColor : props.baseColor,
8074
8079
  variant: props.variant
8075
8080
  };
8076
8081
  });
8077
- const {
8078
- colorClasses,
8079
- colorStyles,
8080
- variantClasses
8081
- } = useVariant(variantProps);
8082
8082
  function onClick(e) {
8083
8083
  emit('click', e);
8084
8084
  if (!isClickable.value) return;
@@ -8745,8 +8745,8 @@
8745
8745
  id: vue.shallowRef(),
8746
8746
  root: {
8747
8747
  opened,
8748
- activatable: vue.toRef(props, 'activatable'),
8749
- selectable: vue.toRef(props, 'selectable'),
8748
+ activatable: vue.toRef(() => props.activatable),
8749
+ selectable: vue.toRef(() => props.selectable),
8750
8750
  activated,
8751
8751
  selected,
8752
8752
  selectedValues: vue.computed(() => {
@@ -8875,7 +8875,7 @@
8875
8875
  const useNestedItem = (id, isGroup) => {
8876
8876
  const parent = vue.inject(VNestedSymbol, emptyNested);
8877
8877
  const uidSymbol = Symbol('nested item');
8878
- const computedId = vue.computed(() => id.value !== undefined ? id.value : uidSymbol);
8878
+ const computedId = vue.computed(() => vue.toValue(id) ?? uidSymbol);
8879
8879
  const item = {
8880
8880
  ...parent,
8881
8881
  id: computedId,
@@ -8951,7 +8951,7 @@
8951
8951
  isOpen,
8952
8952
  open,
8953
8953
  id: _id
8954
- } = useNestedItem(vue.toRef(props, 'value'), true);
8954
+ } = useNestedItem(() => props.value, true);
8955
8955
  const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
8956
8956
  const list = useList();
8957
8957
  const {
@@ -9125,12 +9125,12 @@
9125
9125
  } = useNestedItem(id, false);
9126
9126
  const list = useList();
9127
9127
  const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9128
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
9128
+ const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
9129
9129
  const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9130
9130
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9131
- const roundedProps = vue.computed(() => props.rounded || props.nav);
9132
- const color = vue.computed(() => props.color ?? props.activeColor);
9133
- const variantProps = vue.computed(() => ({
9131
+ const roundedProps = vue.toRef(() => props.rounded || props.nav);
9132
+ const color = vue.toRef(() => props.color ?? props.activeColor);
9133
+ const variantProps = vue.toRef(() => ({
9134
9134
  color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
9135
9135
  variant: props.variant
9136
9136
  }));
@@ -9173,7 +9173,7 @@
9173
9173
  const {
9174
9174
  roundedClasses
9175
9175
  } = useRounded(roundedProps);
9176
- const lineClasses = vue.computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9176
+ const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9177
9177
  const slotProps = vue.computed(() => ({
9178
9178
  isActive: isActive.value,
9179
9179
  select,
@@ -9343,7 +9343,7 @@
9343
9343
  const {
9344
9344
  textColorClasses,
9345
9345
  textColorStyles
9346
- } = useTextColor(vue.toRef(props, 'color'));
9346
+ } = useTextColor(() => props.color);
9347
9347
  useRender(() => {
9348
9348
  const hasText = !!(slots.default || props.title);
9349
9349
  return vue.createVNode(props.tag, {
@@ -9388,7 +9388,7 @@
9388
9388
  const {
9389
9389
  textColorClasses,
9390
9390
  textColorStyles
9391
- } = useTextColor(vue.toRef(props, 'color'));
9391
+ } = useTextColor(() => props.color);
9392
9392
  const dividerStyles = vue.computed(() => {
9393
9393
  const styles = {};
9394
9394
  if (props.length) {
@@ -9750,7 +9750,7 @@
9750
9750
  const {
9751
9751
  backgroundColorClasses,
9752
9752
  backgroundColorStyles
9753
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
9753
+ } = useBackgroundColor(() => props.bgColor);
9754
9754
  const {
9755
9755
  borderClasses
9756
9756
  } = useBorder(props);
@@ -9773,30 +9773,30 @@
9773
9773
  select,
9774
9774
  getPath
9775
9775
  } = useNested(props);
9776
- const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9777
- const activeColor = vue.toRef(props, 'activeColor');
9778
- const baseColor = vue.toRef(props, 'baseColor');
9779
- const color = vue.toRef(props, 'color');
9776
+ const lineClasses = vue.toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9777
+ const activeColor = vue.toRef(() => props.activeColor);
9778
+ const baseColor = vue.toRef(() => props.baseColor);
9779
+ const color = vue.toRef(() => props.color);
9780
9780
  createList();
9781
9781
  provideDefaults({
9782
9782
  VListGroup: {
9783
9783
  activeColor,
9784
9784
  baseColor,
9785
9785
  color,
9786
- expandIcon: vue.toRef(props, 'expandIcon'),
9787
- collapseIcon: vue.toRef(props, 'collapseIcon')
9786
+ expandIcon: vue.toRef(() => props.expandIcon),
9787
+ collapseIcon: vue.toRef(() => props.collapseIcon)
9788
9788
  },
9789
9789
  VListItem: {
9790
- activeClass: vue.toRef(props, 'activeClass'),
9790
+ activeClass: vue.toRef(() => props.activeClass),
9791
9791
  activeColor,
9792
9792
  baseColor,
9793
9793
  color,
9794
- density: vue.toRef(props, 'density'),
9795
- disabled: vue.toRef(props, 'disabled'),
9796
- lines: vue.toRef(props, 'lines'),
9797
- nav: vue.toRef(props, 'nav'),
9798
- slim: vue.toRef(props, 'slim'),
9799
- variant: vue.toRef(props, 'variant')
9794
+ density: vue.toRef(() => props.density),
9795
+ disabled: vue.toRef(() => props.disabled),
9796
+ lines: vue.toRef(() => props.lines),
9797
+ nav: vue.toRef(() => props.nav),
9798
+ slim: vue.toRef(() => props.slim),
9799
+ variant: vue.toRef(() => props.variant)
9800
9800
  }
9801
9801
  });
9802
9802
  const isFocused = vue.shallowRef(false);
@@ -10124,13 +10124,22 @@
10124
10124
  vue.onScopeDispose(() => {
10125
10125
  observer.disconnect();
10126
10126
  });
10127
+ let targetBox = new Box({
10128
+ x: 0,
10129
+ y: 0,
10130
+ width: 0,
10131
+ height: 0
10132
+ });
10127
10133
 
10128
10134
  // eslint-disable-next-line max-statements
10129
10135
  function updateLocation() {
10130
10136
  observe = false;
10131
10137
  requestAnimationFrame(() => observe = true);
10132
10138
  if (!data.target.value || !data.contentEl.value) return;
10133
- const targetBox = getTargetBox(data.target.value);
10139
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10140
+ targetBox = getTargetBox(data.target.value);
10141
+ } // Otherwise target element is hidden, use last known value
10142
+
10134
10143
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10135
10144
  const scrollParents = getScrollParents(data.contentEl.value);
10136
10145
  const viewportMargin = 12;
@@ -10840,7 +10849,7 @@
10840
10849
  }, 'lazy');
10841
10850
  function useLazy(props, active) {
10842
10851
  const isBooted = vue.shallowRef(false);
10843
- const hasContent = vue.computed(() => isBooted.value || props.eager || active.value);
10852
+ const hasContent = vue.toRef(() => isBooted.value || props.eager || active.value);
10844
10853
  vue.watch(active, () => isBooted.value = true);
10845
10854
  function onAfterLeave() {
10846
10855
  if (!props.eager) isBooted.value = false;
@@ -10877,10 +10886,10 @@
10877
10886
  activeChildren: new Set()
10878
10887
  });
10879
10888
  vue.provide(StackSymbol, stack);
10880
- const _zIndex = vue.shallowRef(Number(zIndex.value));
10889
+ const _zIndex = vue.shallowRef(Number(vue.toValue(zIndex)));
10881
10890
  useToggleScope(isActive, () => {
10882
10891
  const lastZIndex = globalStack.at(-1)?.[1];
10883
- _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10892
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(vue.toValue(zIndex));
10884
10893
  if (createStackEntry) {
10885
10894
  globalStack.push([vm.uid, _zIndex.value]);
10886
10895
  }
@@ -10900,11 +10909,11 @@
10900
10909
  setTimeout(() => globalTop.value = _isTop);
10901
10910
  });
10902
10911
  }
10903
- const localTop = vue.computed(() => !stack.activeChildren.size);
10912
+ const localTop = vue.toRef(() => !stack.activeChildren.size);
10904
10913
  return {
10905
10914
  globalTop: vue.readonly(globalTop),
10906
10915
  localTop,
10907
- stackStyles: vue.computed(() => ({
10916
+ stackStyles: vue.toRef(() => ({
10908
10917
  zIndex: _zIndex.value
10909
10918
  }))
10910
10919
  };
@@ -11121,14 +11130,14 @@
11121
11130
  hasContent,
11122
11131
  onAfterLeave: _onAfterLeave
11123
11132
  } = useLazy(props, isActive);
11124
- const scrimColor = useBackgroundColor(vue.computed(() => {
11133
+ const scrimColor = useBackgroundColor(() => {
11125
11134
  return typeof props.scrim === 'string' ? props.scrim : null;
11126
- }));
11135
+ });
11127
11136
  const {
11128
11137
  globalTop,
11129
11138
  localTop,
11130
11139
  stackStyles
11131
- } = useStack(isActive, vue.toRef(props, 'zIndex'), props._disableGlobalStack);
11140
+ } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);
11132
11141
  const {
11133
11142
  activatorEl,
11134
11143
  activatorRef,
@@ -11454,7 +11463,7 @@
11454
11463
  isRtl
11455
11464
  } = useRtl();
11456
11465
  const uid = vue.useId();
11457
- const id = vue.computed(() => props.id || `v-menu-${uid}`);
11466
+ const id = vue.toRef(() => props.id || `v-menu-${uid}`);
11458
11467
  const overlay = vue.ref();
11459
11468
  const parent = vue.inject(VMenuSymbol, null);
11460
11469
  const openChildren = vue.shallowRef(new Set());
@@ -11622,7 +11631,7 @@
11622
11631
  let {
11623
11632
  slots
11624
11633
  } = _ref;
11625
- const counter = vue.computed(() => {
11634
+ const counter = vue.toRef(() => {
11626
11635
  return props.max ? `${props.value} / ${props.max}` : String(props.value);
11627
11636
  });
11628
11637
  useRender(() => vue.createVNode(MaybeTransition, {
@@ -11749,12 +11758,12 @@
11749
11758
  const {
11750
11759
  rtlClasses
11751
11760
  } = useRtl();
11752
- const isActive = vue.computed(() => props.dirty || props.active);
11753
- const hasLabel = vue.computed(() => !!(props.label || slots.label));
11754
- const hasFloatingLabel = vue.computed(() => !props.singleLine && hasLabel.value);
11761
+ const isActive = vue.toRef(() => props.dirty || props.active);
11762
+ const hasLabel = vue.toRef(() => !!(props.label || slots.label));
11763
+ const hasFloatingLabel = vue.toRef(() => !props.singleLine && hasLabel.value);
11755
11764
  const uid = vue.useId();
11756
11765
  const id = vue.computed(() => props.id || `input-${uid}`);
11757
- const messagesId = vue.computed(() => `${id.value}-messages`);
11766
+ const messagesId = vue.toRef(() => `${id.value}-messages`);
11758
11767
  const labelRef = vue.ref();
11759
11768
  const floatingLabelRef = vue.ref();
11760
11769
  const controlRef = vue.ref();
@@ -11769,7 +11778,7 @@
11769
11778
  const {
11770
11779
  backgroundColorClasses,
11771
11780
  backgroundColorStyles
11772
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
11781
+ } = useBackgroundColor(() => props.bgColor);
11773
11782
  const {
11774
11783
  textColorClasses,
11775
11784
  textColorStyles
@@ -12496,7 +12505,7 @@
12496
12505
  paddingTop,
12497
12506
  paddingBottom,
12498
12507
  computedItems
12499
- } = useVirtual(props, vue.toRef(props, 'items'));
12508
+ } = useVirtual(props, vue.toRef(() => props.items));
12500
12509
  useToggleScope(() => props.renderless, () => {
12501
12510
  function handleListeners() {
12502
12511
  let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -12733,7 +12742,7 @@
12733
12742
  _menu.value = v;
12734
12743
  }
12735
12744
  });
12736
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12745
+ const label = vue.toRef(() => menu.value ? props.closeText : props.openText);
12737
12746
  const computedMenuProps = vue.computed(() => {
12738
12747
  return {
12739
12748
  ...props.menuProps,
@@ -13235,7 +13244,6 @@
13235
13244
  const vMenuRef = vue.ref();
13236
13245
  const vVirtualScrollRef = vue.ref();
13237
13246
  const selectionIndex = vue.shallowRef(-1);
13238
- const color = vue.computed(() => vTextFieldRef.value?.color);
13239
13247
  const {
13240
13248
  items,
13241
13249
  transformIn,
@@ -13244,7 +13252,7 @@
13244
13252
  const {
13245
13253
  textColorClasses,
13246
13254
  textColorStyles
13247
- } = useTextColor(color);
13255
+ } = useTextColor(() => vTextFieldRef.value?.color);
13248
13256
  const search = useProxiedModel(props, 'search', '');
13249
13257
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13250
13258
  const transformed = transformOut(v);
@@ -13693,7 +13701,7 @@
13693
13701
  const {
13694
13702
  backgroundColorClasses,
13695
13703
  backgroundColorStyles
13696
- } = useBackgroundColor(vue.toRef(props, 'color'));
13704
+ } = useBackgroundColor(() => props.color);
13697
13705
  const {
13698
13706
  roundedClasses
13699
13707
  } = useRounded(props);
@@ -13703,7 +13711,7 @@
13703
13711
  const {
13704
13712
  textColorClasses,
13705
13713
  textColorStyles
13706
- } = useTextColor(vue.toRef(props, 'textColor'));
13714
+ } = useTextColor(() => props.textColor);
13707
13715
  const {
13708
13716
  themeClasses
13709
13717
  } = useTheme();
@@ -13815,7 +13823,7 @@
13815
13823
  const {
13816
13824
  backgroundColorClasses,
13817
13825
  backgroundColorStyles
13818
- } = useBackgroundColor(props, 'bgColor');
13826
+ } = useBackgroundColor(() => props.bgColor);
13819
13827
  const {
13820
13828
  borderClasses
13821
13829
  } = useBorder(props);
@@ -13844,8 +13852,8 @@
13844
13852
  const {
13845
13853
  themeClasses
13846
13854
  } = provideTheme(props);
13847
- const color = vue.toRef(props, 'color');
13848
- const density = vue.toRef(props, 'density');
13855
+ const color = vue.toRef(() => props.color);
13856
+ const density = vue.toRef(() => props.density);
13849
13857
  provideDefaults({
13850
13858
  VBannerActions: {
13851
13859
  color,
@@ -13954,7 +13962,7 @@
13954
13962
  const {
13955
13963
  backgroundColorClasses,
13956
13964
  backgroundColorStyles
13957
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
13965
+ } = useBackgroundColor(() => props.bgColor);
13958
13966
  const {
13959
13967
  densityClasses
13960
13968
  } = useDensity(props);
@@ -13974,19 +13982,19 @@
13974
13982
  } = useLayoutItem({
13975
13983
  id: props.name,
13976
13984
  order: vue.computed(() => parseInt(props.order, 10)),
13977
- position: vue.computed(() => 'bottom'),
13978
- layoutSize: vue.computed(() => isActive.value ? height.value : 0),
13985
+ position: vue.toRef(() => 'bottom'),
13986
+ layoutSize: vue.toRef(() => isActive.value ? height.value : 0),
13979
13987
  elementSize: height,
13980
13988
  active: isActive,
13981
- absolute: vue.toRef(props, 'absolute')
13989
+ absolute: vue.toRef(() => props.absolute)
13982
13990
  });
13983
13991
  useGroup(props, VBtnToggleSymbol);
13984
13992
  provideDefaults({
13985
13993
  VBtn: {
13986
- baseColor: vue.toRef(props, 'baseColor'),
13987
- color: vue.toRef(props, 'color'),
13988
- density: vue.toRef(props, 'density'),
13989
- stacked: vue.computed(() => props.mode !== 'horizontal'),
13994
+ baseColor: vue.toRef(() => props.baseColor),
13995
+ color: vue.toRef(() => props.color),
13996
+ density: vue.toRef(() => props.density),
13997
+ stacked: vue.toRef(() => props.mode !== 'horizontal'),
13990
13998
  variant: 'text'
13991
13999
  }
13992
14000
  }, {
@@ -14222,11 +14230,10 @@
14222
14230
  } = _ref;
14223
14231
  const link = useLink(props, attrs);
14224
14232
  const isActive = vue.computed(() => props.active || link.isActive?.value);
14225
- const color = vue.computed(() => isActive.value ? props.activeColor : props.color);
14226
14233
  const {
14227
14234
  textColorClasses,
14228
14235
  textColorStyles
14229
- } = useTextColor(color);
14236
+ } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14230
14237
  useRender(() => {
14231
14238
  return vue.createVNode(props.tag, {
14232
14239
  "class": ['v-breadcrumbs-item', {
@@ -14281,7 +14288,7 @@
14281
14288
  const {
14282
14289
  backgroundColorClasses,
14283
14290
  backgroundColorStyles
14284
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
14291
+ } = useBackgroundColor(() => props.bgColor);
14285
14292
  const {
14286
14293
  densityClasses
14287
14294
  } = useDensity(props);
@@ -14290,13 +14297,13 @@
14290
14297
  } = useRounded(props);
14291
14298
  provideDefaults({
14292
14299
  VBreadcrumbsDivider: {
14293
- divider: vue.toRef(props, 'divider')
14300
+ divider: vue.toRef(() => props.divider)
14294
14301
  },
14295
14302
  VBreadcrumbsItem: {
14296
- activeClass: vue.toRef(props, 'activeClass'),
14297
- activeColor: vue.toRef(props, 'activeColor'),
14298
- color: vue.toRef(props, 'color'),
14299
- disabled: vue.toRef(props, 'disabled')
14303
+ activeClass: vue.toRef(() => props.activeClass),
14304
+ activeColor: vue.toRef(() => props.activeColor),
14305
+ color: vue.toRef(() => props.color),
14306
+ disabled: vue.toRef(() => props.disabled)
14300
14307
  }
14301
14308
  });
14302
14309
  const items = vue.computed(() => props.items.map(item => {
@@ -14619,10 +14626,10 @@
14619
14626
  roundedClasses
14620
14627
  } = useRounded(props);
14621
14628
  const link = useLink(props, attrs);
14622
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
14623
- const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));
14624
14629
  useRender(() => {
14625
- const Tag = isLink.value ? 'a' : props.tag;
14630
+ const isLink = props.link !== false && link.isLink.value;
14631
+ const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
14632
+ const Tag = isLink ? 'a' : props.tag;
14626
14633
  const hasTitle = !!(slots.title || props.title != null);
14627
14634
  const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
14628
14635
  const hasHeader = hasTitle || hasSubtitle;
@@ -14636,10 +14643,10 @@
14636
14643
  'v-card--disabled': props.disabled,
14637
14644
  'v-card--flat': props.flat,
14638
14645
  'v-card--hover': props.hover && !(props.disabled || props.flat),
14639
- 'v-card--link': isClickable.value
14646
+ 'v-card--link': isClickable
14640
14647
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14641
14648
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14642
- "onClick": isClickable.value && link.navigate,
14649
+ "onClick": isClickable && link.navigate,
14643
14650
  "tabindex": props.disabled ? -1 : undefined
14644
14651
  }, link.linkProps), {
14645
14652
  default: () => [hasImage && vue.createVNode("div", {
@@ -14684,8 +14691,8 @@
14684
14691
  default: () => [slots.text?.() ?? props.text]
14685
14692
  }), slots.default?.(), slots.actions && vue.createVNode(VCardActions, null, {
14686
14693
  default: slots.actions
14687
- }), genOverlays(isClickable.value, 'v-card')]
14688
- }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
14694
+ }), genOverlays(isClickable, 'v-card')]
14695
+ }), [[vue.resolveDirective("ripple"), isClickable && props.ripple]]);
14689
14696
  });
14690
14697
  return {};
14691
14698
  }
@@ -14898,8 +14905,8 @@
14898
14905
  transitionHeight,
14899
14906
  rootRef
14900
14907
  });
14901
- const canMoveBack = vue.computed(() => props.continuous || activeIndex.value !== 0);
14902
- const canMoveForward = vue.computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14908
+ const canMoveBack = vue.toRef(() => props.continuous || activeIndex.value !== 0);
14909
+ const canMoveForward = vue.toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14903
14910
  function prev() {
14904
14911
  canMoveBack.value && group.prev();
14905
14912
  }
@@ -15801,7 +15808,7 @@
15801
15808
  const {
15802
15809
  isRtl
15803
15810
  } = useRtl();
15804
- const isReversed = vue.toRef(props, 'reverse');
15811
+ const isReversed = vue.toRef(() => props.reverse);
15805
15812
  const vertical = vue.computed(() => props.direction === 'vertical');
15806
15813
  const indexFromEnd = vue.computed(() => vertical.value !== isReversed.value);
15807
15814
  const {
@@ -15815,7 +15822,7 @@
15815
15822
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
15816
15823
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
15817
15824
  const numTicks = vue.computed(() => (max.value - min.value) / step.value);
15818
- const disabled = vue.toRef(props, 'disabled');
15825
+ const disabled = vue.toRef(() => props.disabled);
15819
15826
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
15820
15827
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
15821
15828
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -15917,7 +15924,7 @@
15917
15924
  const percentage = (val - min.value) / (max.value - min.value) * 100;
15918
15925
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
15919
15926
  };
15920
- const showTicks = vue.toRef(props, 'showTicks');
15927
+ const showTicks = vue.toRef(() => props.showTicks);
15921
15928
  const parsedTicks = vue.computed(() => {
15922
15929
  if (!showTicks.value) return [];
15923
15930
  if (!props.ticks) {
@@ -15948,11 +15955,11 @@
15948
15955
  }));
15949
15956
  const data = {
15950
15957
  activeThumbRef,
15951
- color: vue.toRef(props, 'color'),
15958
+ color: vue.toRef(() => props.color),
15952
15959
  decimals,
15953
15960
  disabled,
15954
- direction: vue.toRef(props, 'direction'),
15955
- elevation: vue.toRef(props, 'elevation'),
15961
+ direction: vue.toRef(() => props.direction),
15962
+ elevation: vue.toRef(() => props.elevation),
15956
15963
  hasLabels,
15957
15964
  isReversed,
15958
15965
  indexFromEnd,
@@ -15965,16 +15972,16 @@
15965
15972
  parsedTicks,
15966
15973
  parseMouseMove,
15967
15974
  position,
15968
- readonly: vue.toRef(props, 'readonly'),
15969
- rounded: vue.toRef(props, 'rounded'),
15975
+ readonly: vue.toRef(() => props.readonly),
15976
+ rounded: vue.toRef(() => props.rounded),
15970
15977
  roundValue,
15971
15978
  showTicks,
15972
15979
  startOffset,
15973
15980
  step,
15974
15981
  thumbSize,
15975
15982
  thumbColor,
15976
- thumbLabel: vue.toRef(props, 'thumbLabel'),
15977
- ticks: vue.toRef(props, 'ticks'),
15983
+ thumbLabel: vue.toRef(() => props.thumbLabel),
15984
+ ticks: vue.toRef(() => props.ticks),
15978
15985
  tickSize,
15979
15986
  trackColor,
15980
15987
  trackContainerRef,
@@ -16893,7 +16900,7 @@
16893
16900
  const {
16894
16901
  backgroundColorClasses,
16895
16902
  backgroundColorStyles
16896
- } = useBackgroundColor(vue.toRef(props, 'color'));
16903
+ } = useBackgroundColor(() => props.color);
16897
16904
  const {
16898
16905
  borderClasses
16899
16906
  } = useBorder(props);
@@ -16940,7 +16947,7 @@
16940
16947
  const {
16941
16948
  backgroundColorClasses,
16942
16949
  backgroundColorStyles
16943
- } = useBackgroundColor(vue.toRef(props, 'color'));
16950
+ } = useBackgroundColor(() => props.color);
16944
16951
  useRender(() => {
16945
16952
  const sheetProps = VSheet.filterProps(props);
16946
16953
  const hasTitle = !!(props.title || slots.title);
@@ -17925,7 +17932,6 @@
17925
17932
  const vVirtualScrollRef = vue.ref();
17926
17933
  const selectionIndex = vue.shallowRef(-1);
17927
17934
  let cleared = false;
17928
- const color = vue.computed(() => vTextFieldRef.value?.color);
17929
17935
  const {
17930
17936
  items,
17931
17937
  transformIn,
@@ -17934,7 +17940,7 @@
17934
17940
  const {
17935
17941
  textColorClasses,
17936
17942
  textColorStyles
17937
- } = useTextColor(color);
17943
+ } = useTextColor(() => vTextFieldRef.value?.color);
17938
17944
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
17939
17945
  const transformed = transformOut(v);
17940
17946
  return props.multiple ? transformed : transformed[0] ?? null;
@@ -17989,7 +17995,7 @@
17989
17995
  _menu.value = v;
17990
17996
  }
17991
17997
  });
17992
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
17998
+ const label = vue.toRef(() => menu.value ? props.closeText : props.openText);
17993
17999
  vue.watch(_search, value => {
17994
18000
  if (cleared) {
17995
18001
  // wait for clear to finish, VTextField sets _search to null
@@ -18495,7 +18501,7 @@
18495
18501
  }, 'DataTable-expand');
18496
18502
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18497
18503
  function provideExpanded(props) {
18498
- const expandOnClick = vue.toRef(props, 'expandOnClick');
18504
+ const expandOnClick = vue.toRef(() => props.expandOnClick);
18499
18505
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18500
18506
  return new Set(v);
18501
18507
  }, v => {
@@ -18682,23 +18688,23 @@
18682
18688
  search
18683
18689
  } = _ref;
18684
18690
  const vm = getCurrentInstance('VDataTable');
18685
- const options = vue.computed(() => ({
18691
+ const options = () => ({
18686
18692
  page: page.value,
18687
18693
  itemsPerPage: itemsPerPage.value,
18688
18694
  sortBy: sortBy.value,
18689
18695
  groupBy: groupBy.value,
18690
18696
  search: search.value
18691
- }));
18697
+ });
18692
18698
  let oldOptions = null;
18693
- vue.watch(options, () => {
18694
- if (deepEqual(oldOptions, options.value)) return;
18699
+ vue.watch(options, value => {
18700
+ if (deepEqual(oldOptions, value)) return;
18695
18701
 
18696
18702
  // Reset page when searching
18697
- if (oldOptions && oldOptions.search !== options.value.search) {
18703
+ if (oldOptions && oldOptions.search !== value.search) {
18698
18704
  page.value = 1;
18699
18705
  }
18700
- vm.emit('update:options', options.value);
18701
- oldOptions = options.value;
18706
+ vm.emit('update:options', value);
18707
+ oldOptions = value;
18702
18708
  }, {
18703
18709
  deep: true,
18704
18710
  immediate: true
@@ -18979,7 +18985,7 @@
18979
18985
  });
18980
18986
  return !!items.length && isSelected(items);
18981
18987
  });
18982
- const showSelectAll = vue.computed(() => selectStrategy.value.showSelectAll);
18988
+ const showSelectAll = vue.toRef(() => selectStrategy.value.showSelectAll);
18983
18989
  const data = {
18984
18990
  toggleSelect,
18985
18991
  select,
@@ -19017,8 +19023,8 @@
19017
19023
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
19018
19024
  function createSort(props) {
19019
19025
  const sortBy = useProxiedModel(props, 'sortBy');
19020
- const mustSort = vue.toRef(props, 'mustSort');
19021
- const multiSort = vue.toRef(props, 'multiSort');
19026
+ const mustSort = vue.toRef(() => props.mustSort);
19027
+ const multiSort = vue.toRef(() => props.multiSort);
19022
19028
  return {
19023
19029
  sortBy,
19024
19030
  mustSort,
@@ -19236,7 +19242,7 @@
19236
19242
  slots
19237
19243
  } = _ref;
19238
19244
  const groupBy = useProxiedModel(props, 'groupBy');
19239
- const search = vue.toRef(props, 'search');
19245
+ const search = vue.toRef(() => props.search);
19240
19246
  const {
19241
19247
  items
19242
19248
  } = useDataIteratorItems(props);
@@ -19280,7 +19286,7 @@
19280
19286
  const {
19281
19287
  flatItems
19282
19288
  } = useGroupedItems(sortedItems, groupBy, opened);
19283
- const itemsLength = vue.computed(() => flatItems.value.length);
19289
+ const itemsLength = vue.toRef(() => flatItems.value.length);
19284
19290
  const {
19285
19291
  startIndex,
19286
19292
  stopIndex,
@@ -19560,13 +19566,13 @@
19560
19566
  } = useRefs();
19561
19567
  provideDefaults({
19562
19568
  VPaginationBtn: {
19563
- color: vue.toRef(props, 'color'),
19564
- border: vue.toRef(props, 'border'),
19565
- density: vue.toRef(props, 'density'),
19566
- size: vue.toRef(props, 'size'),
19567
- variant: vue.toRef(props, 'variant'),
19568
- rounded: vue.toRef(props, 'rounded'),
19569
- elevation: vue.toRef(props, 'elevation')
19569
+ color: vue.toRef(() => props.color),
19570
+ border: vue.toRef(() => props.border),
19571
+ density: vue.toRef(() => props.density),
19572
+ size: vue.toRef(() => props.size),
19573
+ variant: vue.toRef(() => props.variant),
19574
+ rounded: vue.toRef(() => props.rounded),
19575
+ elevation: vue.toRef(() => props.elevation)
19570
19576
  }
19571
19577
  });
19572
19578
  const items = vue.computed(() => {
@@ -20207,7 +20213,7 @@
20207
20213
  const {
20208
20214
  backgroundColorClasses,
20209
20215
  backgroundColorStyles
20210
- } = useBackgroundColor(props, 'color');
20216
+ } = useBackgroundColor(() => props.color);
20211
20217
  const {
20212
20218
  displayClasses,
20213
20219
  mobile
@@ -20865,13 +20871,13 @@
20865
20871
  filterFunctions
20866
20872
  } = createHeaders(props, {
20867
20873
  groupBy,
20868
- showSelect: vue.toRef(props, 'showSelect'),
20869
- showExpand: vue.toRef(props, 'showExpand')
20874
+ showSelect: vue.toRef(() => props.showSelect),
20875
+ showExpand: vue.toRef(() => props.showExpand)
20870
20876
  });
20871
20877
  const {
20872
20878
  items
20873
20879
  } = useDataTableItems(props, columns);
20874
- const search = vue.toRef(props, 'search');
20880
+ const search = vue.toRef(() => props.search);
20875
20881
  const {
20876
20882
  filteredItems
20877
20883
  } = useFilter(props, items, search, {
@@ -20954,10 +20960,10 @@
20954
20960
  });
20955
20961
  provideDefaults({
20956
20962
  VDataTableRows: {
20957
- hideNoData: vue.toRef(props, 'hideNoData'),
20958
- noDataText: vue.toRef(props, 'noDataText'),
20959
- loading: vue.toRef(props, 'loading'),
20960
- loadingText: vue.toRef(props, 'loadingText')
20963
+ hideNoData: vue.toRef(() => props.hideNoData),
20964
+ noDataText: vue.toRef(() => props.noDataText),
20965
+ loading: vue.toRef(() => props.loading),
20966
+ loadingText: vue.toRef(() => props.loadingText)
20961
20967
  }
20962
20968
  });
20963
20969
  const slotProps = vue.computed(() => ({
@@ -21054,13 +21060,13 @@
21054
21060
  sortRawFunctions
21055
21061
  } = createHeaders(props, {
21056
21062
  groupBy,
21057
- showSelect: vue.toRef(props, 'showSelect'),
21058
- showExpand: vue.toRef(props, 'showExpand')
21063
+ showSelect: vue.toRef(() => props.showSelect),
21064
+ showExpand: vue.toRef(() => props.showExpand)
21059
21065
  });
21060
21066
  const {
21061
21067
  items
21062
21068
  } = useDataTableItems(props, columns);
21063
- const search = vue.toRef(props, 'search');
21069
+ const search = vue.toRef(() => props.search);
21064
21070
  const {
21065
21071
  filteredItems
21066
21072
  } = useFilter(props, items, search, {
@@ -21136,10 +21142,10 @@
21136
21142
  });
21137
21143
  provideDefaults({
21138
21144
  VDataTableRows: {
21139
- hideNoData: vue.toRef(props, 'hideNoData'),
21140
- noDataText: vue.toRef(props, 'noDataText'),
21141
- loading: vue.toRef(props, 'loading'),
21142
- loadingText: vue.toRef(props, 'loadingText')
21145
+ hideNoData: vue.toRef(() => props.hideNoData),
21146
+ noDataText: vue.toRef(() => props.noDataText),
21147
+ loading: vue.toRef(() => props.loading),
21148
+ loadingText: vue.toRef(() => props.loadingText)
21143
21149
  }
21144
21150
  });
21145
21151
  const slotProps = vue.computed(() => ({
@@ -21292,8 +21298,8 @@
21292
21298
  headers
21293
21299
  } = createHeaders(props, {
21294
21300
  groupBy,
21295
- showSelect: vue.toRef(props, 'showSelect'),
21296
- showExpand: vue.toRef(props, 'showExpand')
21301
+ showSelect: vue.toRef(() => props.showSelect),
21302
+ showExpand: vue.toRef(() => props.showExpand)
21297
21303
  });
21298
21304
  const {
21299
21305
  items
@@ -21348,7 +21354,7 @@
21348
21354
  itemsPerPage,
21349
21355
  sortBy,
21350
21356
  groupBy,
21351
- search: vue.toRef(props, 'search')
21357
+ search: vue.toRef(() => props.search)
21352
21358
  });
21353
21359
  vue.provide('v-data-table', {
21354
21360
  toggleSort,
@@ -21356,10 +21362,10 @@
21356
21362
  });
21357
21363
  provideDefaults({
21358
21364
  VDataTableRows: {
21359
- hideNoData: vue.toRef(props, 'hideNoData'),
21360
- noDataText: vue.toRef(props, 'noDataText'),
21361
- loading: vue.toRef(props, 'loading'),
21362
- loadingText: vue.toRef(props, 'loadingText')
21365
+ hideNoData: vue.toRef(() => props.hideNoData),
21366
+ noDataText: vue.toRef(() => props.noDataText),
21367
+ loading: vue.toRef(() => props.loading),
21368
+ loadingText: vue.toRef(() => props.loadingText)
21363
21369
  }
21364
21370
  });
21365
21371
  const slotProps = vue.computed(() => ({
@@ -21829,7 +21835,7 @@
21829
21835
  const {
21830
21836
  backgroundColorClasses,
21831
21837
  backgroundColorStyles
21832
- } = useBackgroundColor(props, 'color');
21838
+ } = useBackgroundColor(() => props.color);
21833
21839
  function onClick() {
21834
21840
  emit('click');
21835
21841
  }
@@ -21968,21 +21974,21 @@
21968
21974
  const isSame = adapter.isSameDay(date, month.value);
21969
21975
  return {
21970
21976
  date,
21971
- isoDate,
21972
21977
  formatted: adapter.format(date, 'keyboardDate'),
21973
- year: adapter.getYear(date),
21974
- month: adapter.getMonth(date),
21975
- isDisabled: isDisabled(date),
21976
- isWeekStart: index % 7 === 0,
21977
- isWeekEnd: index % 7 === 6,
21978
- isToday: adapter.isSameDay(date, today),
21979
21978
  isAdjacent,
21980
- isHidden: isAdjacent && !props.showAdjacentMonths,
21981
- isStart,
21982
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21979
+ isDisabled: isDisabled(date),
21983
21980
  isEnd,
21981
+ isHidden: isAdjacent && !props.showAdjacentMonths,
21984
21982
  isSame,
21985
- localized: adapter.format(date, 'dayOfMonth')
21983
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21984
+ isStart,
21985
+ isToday: adapter.isSameDay(date, today),
21986
+ isWeekEnd: index % 7 === 6,
21987
+ isWeekStart: index % 7 === 0,
21988
+ isoDate,
21989
+ localized: adapter.format(date, 'dayOfMonth'),
21990
+ month: adapter.getMonth(date),
21991
+ year: adapter.getYear(date)
21986
21992
  };
21987
21993
  });
21988
21994
  }
@@ -22070,7 +22076,7 @@
22070
22076
  const rangeStart = vue.shallowRef();
22071
22077
  const rangeStop = vue.shallowRef();
22072
22078
  const isReverse = vue.shallowRef(false);
22073
- const transition = vue.computed(() => {
22079
+ const transition = vue.toRef(() => {
22074
22080
  return !isReverse.value ? props.transition : props.reverseTransition;
22075
22081
  });
22076
22082
  if (props.multiple === 'range' && model.value.length > 0) {
@@ -22450,7 +22456,7 @@
22450
22456
  }
22451
22457
  return value && adapter.isValid(value) ? value : today;
22452
22458
  });
22453
- const headerColor = vue.computed(() => props.headerColor ?? props.color);
22459
+ const headerColor = vue.toRef(() => props.headerColor ?? props.color);
22454
22460
  const month = vue.ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22455
22461
  const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22456
22462
  const isReversing = vue.shallowRef(false);
@@ -22467,8 +22473,8 @@
22467
22473
  date = adapter.setYear(date, year.value);
22468
22474
  return adapter.format(date, 'monthAndYear');
22469
22475
  });
22470
- // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22471
- const headerTransition = vue.computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22476
+ // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22477
+ const headerTransition = vue.toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22472
22478
  const disabled = vue.computed(() => {
22473
22479
  if (props.disabled) return true;
22474
22480
  const targets = [];
@@ -22680,7 +22686,7 @@
22680
22686
  const {
22681
22687
  backgroundColorClasses,
22682
22688
  backgroundColorStyles
22683
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
22689
+ } = useBackgroundColor(() => props.bgColor);
22684
22690
  const {
22685
22691
  dimensionStyles
22686
22692
  } = useDimension(props);
@@ -22843,7 +22849,7 @@
22843
22849
  const {
22844
22850
  backgroundColorClasses,
22845
22851
  backgroundColorStyles
22846
- } = useBackgroundColor(props, 'color');
22852
+ } = useBackgroundColor(() => props.color);
22847
22853
  const {
22848
22854
  dimensionStyles
22849
22855
  } = useDimension(props);
@@ -22854,7 +22860,7 @@
22854
22860
  expandIcon: props.expandIcon,
22855
22861
  readonly: props.readonly
22856
22862
  }));
22857
- const icon = vue.computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22863
+ const icon = vue.toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22858
22864
  useRender(() => vue.withDirectives(vue.createVNode("button", {
22859
22865
  "class": ['v-expansion-panel-title', {
22860
22866
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
@@ -22909,14 +22915,14 @@
22909
22915
  const {
22910
22916
  backgroundColorClasses,
22911
22917
  backgroundColorStyles
22912
- } = useBackgroundColor(props, 'bgColor');
22918
+ } = useBackgroundColor(() => props.bgColor);
22913
22919
  const {
22914
22920
  elevationClasses
22915
22921
  } = useElevation(props);
22916
22922
  const {
22917
22923
  roundedClasses
22918
22924
  } = useRounded(props);
22919
- const isDisabled = vue.computed(() => groupItem?.disabled.value || props.disabled);
22925
+ const isDisabled = vue.toRef(() => groupItem?.disabled.value || props.disabled);
22920
22926
  const selectedIndices = vue.computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
22921
22927
  if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
22922
22928
  return arr;
@@ -23007,21 +23013,21 @@
23007
23013
  const {
23008
23014
  themeClasses
23009
23015
  } = provideTheme(props);
23010
- const variantClass = vue.computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23016
+ const variantClass = vue.toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23011
23017
  provideDefaults({
23012
23018
  VExpansionPanel: {
23013
- bgColor: vue.toRef(props, 'bgColor'),
23014
- collapseIcon: vue.toRef(props, 'collapseIcon'),
23015
- color: vue.toRef(props, 'color'),
23016
- eager: vue.toRef(props, 'eager'),
23017
- elevation: vue.toRef(props, 'elevation'),
23018
- expandIcon: vue.toRef(props, 'expandIcon'),
23019
- focusable: vue.toRef(props, 'focusable'),
23020
- hideActions: vue.toRef(props, 'hideActions'),
23021
- readonly: vue.toRef(props, 'readonly'),
23022
- ripple: vue.toRef(props, 'ripple'),
23023
- rounded: vue.toRef(props, 'rounded'),
23024
- static: vue.toRef(props, 'static')
23019
+ bgColor: vue.toRef(() => props.bgColor),
23020
+ collapseIcon: vue.toRef(() => props.collapseIcon),
23021
+ color: vue.toRef(() => props.color),
23022
+ eager: vue.toRef(() => props.eager),
23023
+ elevation: vue.toRef(() => props.elevation),
23024
+ expandIcon: vue.toRef(() => props.expandIcon),
23025
+ focusable: vue.toRef(() => props.focusable),
23026
+ hideActions: vue.toRef(() => props.hideActions),
23027
+ readonly: vue.toRef(() => props.readonly),
23028
+ ripple: vue.toRef(() => props.ripple),
23029
+ rounded: vue.toRef(() => props.rounded),
23030
+ static: vue.toRef(() => props.static)
23025
23031
  }
23026
23032
  });
23027
23033
  useRender(() => vue.createVNode(props.tag, {
@@ -23083,7 +23089,7 @@
23083
23089
  if (!entries.length) return;
23084
23090
  height.value = entries[0].target.clientHeight;
23085
23091
  });
23086
- const hasPosition = vue.computed(() => props.app || props.absolute);
23092
+ const hasPosition = vue.toRef(() => props.app || props.absolute);
23087
23093
  const position = vue.computed(() => {
23088
23094
  if (!hasPosition.value) return false;
23089
23095
  return props.location?.split(' ').shift() ?? 'bottom';
@@ -23100,7 +23106,7 @@
23100
23106
  layoutSize: vue.computed(() => props.layout ? height.value + 24 : 0),
23101
23107
  elementSize: vue.computed(() => height.value + 24),
23102
23108
  active: vue.computed(() => props.app && model.value),
23103
- absolute: vue.toRef(props, 'absolute')
23109
+ absolute: vue.toRef(() => props.absolute)
23104
23110
  });
23105
23111
  vue.watchEffect(() => {
23106
23112
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23225,7 +23231,7 @@
23225
23231
  const vInputRef = vue.ref();
23226
23232
  const vFieldRef = vue.ref();
23227
23233
  const inputRef = vue.ref();
23228
- const isActive = vue.computed(() => isFocused.value || props.active);
23234
+ const isActive = vue.toRef(() => isFocused.value || props.active);
23229
23235
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
23230
23236
  function onFocus() {
23231
23237
  if (inputRef.value !== document.activeElement) {
@@ -23398,7 +23404,7 @@
23398
23404
  const {
23399
23405
  backgroundColorClasses,
23400
23406
  backgroundColorStyles
23401
- } = useBackgroundColor(vue.toRef(props, 'color'));
23407
+ } = useBackgroundColor(() => props.color);
23402
23408
  const {
23403
23409
  borderClasses
23404
23410
  } = useBorder(props);
@@ -23420,11 +23426,11 @@
23420
23426
  const layout = useLayoutItem({
23421
23427
  id: props.name,
23422
23428
  order: vue.computed(() => parseInt(props.order, 10)),
23423
- position: vue.computed(() => 'bottom'),
23429
+ position: vue.toRef(() => 'bottom'),
23424
23430
  layoutSize: height,
23425
23431
  elementSize: vue.computed(() => props.height === 'auto' ? undefined : height.value),
23426
- active: vue.computed(() => props.app),
23427
- absolute: vue.toRef(props, 'absolute')
23432
+ active: vue.toRef(() => props.app),
23433
+ absolute: vue.toRef(() => props.absolute)
23428
23434
  });
23429
23435
  vue.watchEffect(() => {
23430
23436
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23897,11 +23903,11 @@
23897
23903
  } = useLayoutItem({
23898
23904
  id: props.name,
23899
23905
  order: vue.computed(() => parseInt(props.order, 10)),
23900
- position: vue.toRef(props, 'position'),
23901
- elementSize: vue.toRef(props, 'size'),
23902
- layoutSize: vue.toRef(props, 'size'),
23903
- active: vue.toRef(props, 'modelValue'),
23904
- absolute: vue.toRef(props, 'absolute')
23906
+ position: vue.toRef(() => props.position),
23907
+ elementSize: vue.toRef(() => props.size),
23908
+ layoutSize: vue.toRef(() => props.size),
23909
+ active: vue.toRef(() => props.modelValue),
23910
+ absolute: vue.toRef(() => props.absolute)
23905
23911
  });
23906
23912
  return () => vue.createVNode("div", {
23907
23913
  "class": ['v-layout-item', props.class],
@@ -24433,7 +24439,7 @@
24433
24439
  const {
24434
24440
  backgroundColorClasses,
24435
24441
  backgroundColorStyles
24436
- } = useBackgroundColor(vue.toRef(props, 'color'));
24442
+ } = useBackgroundColor(() => props.color);
24437
24443
  const {
24438
24444
  elevationClasses
24439
24445
  } = useElevation(props);
@@ -24466,7 +24472,7 @@
24466
24472
  const location = vue.computed(() => {
24467
24473
  return toPhysical(props.location, isRtl.value);
24468
24474
  });
24469
- const isPersistent = vue.computed(() => props.persistent);
24475
+ const isPersistent = vue.toRef(() => props.persistent);
24470
24476
  const isTemporary = vue.computed(() => !props.permanent && (mobile.value || props.temporary));
24471
24477
  const isSticky = vue.computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
24472
24478
  useToggleScope(() => props.expandOnHover && props.rail != null, () => {
@@ -24492,7 +24498,7 @@
24492
24498
  isActive,
24493
24499
  isTemporary,
24494
24500
  width,
24495
- touchless: vue.toRef(props, 'touchless'),
24501
+ touchless: vue.toRef(() => props.touchless),
24496
24502
  position: location
24497
24503
  });
24498
24504
  const layoutSize = vue.computed(() => {
@@ -24509,7 +24515,7 @@
24509
24515
  layoutSize,
24510
24516
  elementSize: width,
24511
24517
  active: vue.readonly(isActive),
24512
- disableTransitions: vue.computed(() => isDragging.value),
24518
+ disableTransitions: vue.toRef(() => isDragging.value),
24513
24519
  absolute: vue.computed(() =>
24514
24520
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
24515
24521
  props.absolute || isSticky.value && typeof isStuck.value !== 'string')
@@ -24522,9 +24528,9 @@
24522
24528
  isSticky,
24523
24529
  layoutItemStyles
24524
24530
  });
24525
- const scrimColor = useBackgroundColor(vue.computed(() => {
24531
+ const scrimColor = useBackgroundColor(() => {
24526
24532
  return typeof props.scrim === 'string' ? props.scrim : null;
24527
- }));
24533
+ });
24528
24534
  const scrimStyles = vue.computed(() => ({
24529
24535
  ...(isDragging.value ? {
24530
24536
  opacity: dragProgress.value * 0.2,
@@ -24738,24 +24744,24 @@
24738
24744
  const controlVariant = vue.computed(() => {
24739
24745
  return props.hideInput ? 'stacked' : props.controlVariant;
24740
24746
  });
24741
- const incrementIcon = vue.computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24742
- const decrementIcon = vue.computed(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24743
- const controlNodeSize = vue.computed(() => controlVariant.value === 'split' ? 'default' : 'small');
24744
- const controlNodeDefaultHeight = vue.computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24745
- const incrementSlotProps = vue.computed(() => ({
24747
+ const incrementIcon = vue.toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24748
+ const decrementIcon = vue.toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24749
+ const controlNodeSize = vue.toRef(() => controlVariant.value === 'split' ? 'default' : 'small');
24750
+ const controlNodeDefaultHeight = vue.toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24751
+ const incrementSlotProps = {
24746
24752
  props: {
24747
24753
  onClick: onControlClick,
24748
24754
  onPointerup: onControlMouseup,
24749
24755
  onPointerdown: onUpControlMousedown
24750
24756
  }
24751
- }));
24752
- const decrementSlotProps = vue.computed(() => ({
24757
+ };
24758
+ const decrementSlotProps = {
24753
24759
  props: {
24754
24760
  onClick: onControlClick,
24755
24761
  onPointerup: onControlMouseup,
24756
24762
  onPointerdown: onDownControlMousedown
24757
24763
  }
24758
- }));
24764
+ };
24759
24765
  vue.watch(() => props.precision, () => formatInputValue());
24760
24766
  vue.onMounted(() => {
24761
24767
  clampModel();
@@ -24907,7 +24913,7 @@
24907
24913
  }
24908
24914
  }
24909
24915
  }, {
24910
- default: () => [slots.increment(incrementSlotProps.value)]
24916
+ default: () => [slots.increment(incrementSlotProps)]
24911
24917
  });
24912
24918
  }
24913
24919
  function decrementControlNode() {
@@ -24936,7 +24942,7 @@
24936
24942
  }
24937
24943
  }
24938
24944
  }, {
24939
- default: () => [slots.decrement(decrementSlotProps.value)]
24945
+ default: () => [slots.decrement(decrementSlotProps)]
24940
24946
  });
24941
24947
  }
24942
24948
  function controlNode() {
@@ -25136,12 +25142,12 @@
25136
25142
  }
25137
25143
  provideDefaults({
25138
25144
  VField: {
25139
- color: vue.computed(() => props.color),
25140
- bgColor: vue.computed(() => props.color),
25141
- baseColor: vue.computed(() => props.baseColor),
25142
- disabled: vue.computed(() => props.disabled),
25143
- error: vue.computed(() => props.error),
25144
- variant: vue.computed(() => props.variant)
25145
+ color: vue.toRef(() => props.color),
25146
+ bgColor: vue.toRef(() => props.color),
25147
+ baseColor: vue.toRef(() => props.baseColor),
25148
+ disabled: vue.toRef(() => props.disabled),
25149
+ error: vue.toRef(() => props.error),
25150
+ variant: vue.toRef(() => props.variant)
25145
25151
  }
25146
25152
  }, {
25147
25153
  scoped: true
@@ -25942,7 +25948,7 @@
25942
25948
  const {
25943
25949
  backgroundColorClasses,
25944
25950
  backgroundColorStyles
25945
- } = useBackgroundColor(vue.toRef(props, 'color'));
25951
+ } = useBackgroundColor(() => props.color);
25946
25952
  const {
25947
25953
  dimensionStyles
25948
25954
  } = useDimension(props);
@@ -26741,7 +26747,7 @@
26741
26747
  const {
26742
26748
  textColorClasses,
26743
26749
  textColorStyles
26744
- } = useTextColor(vue.toRef(props, 'color'));
26750
+ } = useTextColor(() => props.color);
26745
26751
  const hasLabels = vue.computed(() => {
26746
26752
  return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
26747
26753
  });
@@ -27287,11 +27293,11 @@
27287
27293
  } = useFocus(props);
27288
27294
  const control = vue.ref();
27289
27295
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
27290
- const loaderColor = vue.computed(() => {
27296
+ const loaderColor = vue.toRef(() => {
27291
27297
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
27292
27298
  });
27293
27299
  const uid = vue.useId();
27294
- const id = vue.computed(() => props.id || `switch-${uid}`);
27300
+ const id = vue.toRef(() => props.id || `switch-${uid}`);
27295
27301
  function onChange() {
27296
27302
  if (indeterminate.value) {
27297
27303
  indeterminate.value = false;
@@ -27442,7 +27448,7 @@
27442
27448
  const {
27443
27449
  backgroundColorClasses,
27444
27450
  backgroundColorStyles
27445
- } = useBackgroundColor(vue.toRef(props, 'color'));
27451
+ } = useBackgroundColor(() => props.color);
27446
27452
  const {
27447
27453
  elevationClasses
27448
27454
  } = useElevation(props);
@@ -27462,7 +27468,7 @@
27462
27468
  layoutSize: height,
27463
27469
  elementSize: height,
27464
27470
  active: vue.computed(() => true),
27465
- absolute: vue.toRef(props, 'absolute')
27471
+ absolute: vue.toRef(() => props.absolute)
27466
27472
  });
27467
27473
  useRender(() => vue.createVNode(props.tag, {
27468
27474
  "class": ['v-system-bar', {
@@ -27504,7 +27510,7 @@
27504
27510
  const {
27505
27511
  textColorClasses: sliderColorClasses,
27506
27512
  textColorStyles: sliderColorStyles
27507
- } = useTextColor(props, 'sliderColor');
27513
+ } = useTextColor(() => props.sliderColor);
27508
27514
  const rootEl = vue.ref();
27509
27515
  const sliderEl = vue.ref();
27510
27516
  const isHorizontal = vue.computed(() => props.direction === 'horizontal');
@@ -27697,18 +27703,18 @@
27697
27703
  const {
27698
27704
  backgroundColorClasses,
27699
27705
  backgroundColorStyles
27700
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
27706
+ } = useBackgroundColor(() => props.bgColor);
27701
27707
  const {
27702
27708
  scopeId
27703
27709
  } = useScopeId();
27704
27710
  provideDefaults({
27705
27711
  VTab: {
27706
- color: vue.toRef(props, 'color'),
27707
- direction: vue.toRef(props, 'direction'),
27708
- stacked: vue.toRef(props, 'stacked'),
27709
- fixed: vue.toRef(props, 'fixedTabs'),
27710
- sliderColor: vue.toRef(props, 'sliderColor'),
27711
- hideSlider: vue.toRef(props, 'hideSlider')
27712
+ color: vue.toRef(() => props.color),
27713
+ direction: vue.toRef(() => props.direction),
27714
+ stacked: vue.toRef(() => props.stacked),
27715
+ fixed: vue.toRef(() => props.fixedTabs),
27716
+ sliderColor: vue.toRef(() => props.sliderColor),
27717
+ hideSlider: vue.toRef(() => props.hideSlider)
27712
27718
  }
27713
27719
  });
27714
27720
  useRender(() => {
@@ -28058,7 +28064,7 @@
28058
28064
  const {
28059
28065
  backgroundColorStyles,
28060
28066
  backgroundColorClasses
28061
- } = useBackgroundColor(vue.toRef(props, 'dotColor'));
28067
+ } = useBackgroundColor(() => props.dotColor);
28062
28068
  const {
28063
28069
  roundedClasses
28064
28070
  } = useRounded(props, 'v-timeline-divider__dot');
@@ -28068,7 +28074,7 @@
28068
28074
  const {
28069
28075
  backgroundColorClasses: lineColorClasses,
28070
28076
  backgroundColorStyles: lineColorStyles
28071
- } = useBackgroundColor(vue.toRef(props, 'lineColor'));
28077
+ } = useBackgroundColor(() => props.lineColor);
28072
28078
  useRender(() => vue.createVNode("div", {
28073
28079
  "class": ['v-timeline-divider', {
28074
28080
  'v-timeline-divider--fill-dot': props.fillDot
@@ -28239,17 +28245,17 @@
28239
28245
  } = useRtl();
28240
28246
  provideDefaults({
28241
28247
  VTimelineDivider: {
28242
- lineColor: vue.toRef(props, 'lineColor')
28248
+ lineColor: vue.toRef(() => props.lineColor)
28243
28249
  },
28244
28250
  VTimelineItem: {
28245
- density: vue.toRef(props, 'density'),
28246
- dotColor: vue.toRef(props, 'dotColor'),
28247
- fillDot: vue.toRef(props, 'fillDot'),
28248
- hideOpposite: vue.toRef(props, 'hideOpposite'),
28249
- iconColor: vue.toRef(props, 'iconColor'),
28250
- lineColor: vue.toRef(props, 'lineColor'),
28251
- lineInset: vue.toRef(props, 'lineInset'),
28252
- size: vue.toRef(props, 'size')
28251
+ density: vue.toRef(() => props.density),
28252
+ dotColor: vue.toRef(() => props.dotColor),
28253
+ fillDot: vue.toRef(() => props.fillDot),
28254
+ hideOpposite: vue.toRef(() => props.hideOpposite),
28255
+ iconColor: vue.toRef(() => props.iconColor),
28256
+ lineColor: vue.toRef(() => props.lineColor),
28257
+ lineInset: vue.toRef(() => props.lineInset),
28258
+ size: vue.toRef(() => props.size)
28253
28259
  }
28254
28260
  });
28255
28261
  const sideClasses = vue.computed(() => {
@@ -28296,9 +28302,9 @@
28296
28302
  } = _ref;
28297
28303
  provideDefaults({
28298
28304
  VBtn: {
28299
- color: vue.toRef(props, 'color'),
28305
+ color: vue.toRef(() => props.color),
28300
28306
  height: 'inherit',
28301
- variant: vue.toRef(props, 'variant')
28307
+ variant: vue.toRef(() => props.variant)
28302
28308
  }
28303
28309
  });
28304
28310
  useRender(() => vue.createVNode("div", {
@@ -28345,7 +28351,7 @@
28345
28351
  scopeId
28346
28352
  } = useScopeId();
28347
28353
  const uid = vue.useId();
28348
- const id = vue.computed(() => props.id || `v-tooltip-${uid}`);
28354
+ const id = vue.toRef(() => props.id || `v-tooltip-${uid}`);
28349
28355
  const overlay = vue.ref();
28350
28356
  const location = vue.computed(() => {
28351
28357
  return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
@@ -28353,7 +28359,7 @@
28353
28359
  const origin = vue.computed(() => {
28354
28360
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28355
28361
  });
28356
- const transition = vue.computed(() => {
28362
+ const transition = vue.toRef(() => {
28357
28363
  if (props.transition) return props.transition;
28358
28364
  return isActive.value ? 'scale-transition' : 'fade-transition';
28359
28365
  });
@@ -28432,13 +28438,19 @@
28432
28438
  }, 'VCalendarIntervalEvent');
28433
28439
  const VCalendarIntervalEvent = genericComponent()({
28434
28440
  name: 'VCalendarIntervalEvent',
28441
+ inheritAttrs: false,
28435
28442
  props: makeVCalendarIntervalEventProps(),
28436
- setup(props) {
28443
+ setup(props, _ref) {
28444
+ let {
28445
+ attrs,
28446
+ emit,
28447
+ slots
28448
+ } = _ref;
28437
28449
  const adapter = useDate();
28438
28450
  const calcHeight = () => {
28439
- if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
28451
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.end, props.interval?.end)) {
28440
28452
  return {
28441
- height: '100%',
28453
+ height: `${props.intervalHeight}px`,
28442
28454
  margin: convertToUnit(0)
28443
28455
  };
28444
28456
  } else {
@@ -28447,8 +28459,8 @@
28447
28459
  margin
28448
28460
  } = Array.from({
28449
28461
  length: props.intervalDivisions
28450
- }, x => x * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28451
- if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.start)) {
28462
+ }, (_, x) => (x + 1) * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28463
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.end)) {
28452
28464
  return {
28453
28465
  height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
28454
28466
  margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
@@ -28469,16 +28481,30 @@
28469
28481
  }
28470
28482
  };
28471
28483
  useRender(() => {
28472
- return vue.createVNode(VSheet, {
28484
+ return vue.createVNode("div", null, [slots.intervalEvent?.({
28485
+ height: calcHeight().height,
28486
+ margin: calcHeight().margin,
28487
+ eventClass: 'v-calendar-internal-event',
28488
+ event: props.event,
28489
+ interval: props.interval
28490
+ }) ?? vue.createVNode(VSheet, vue.mergeProps({
28473
28491
  "height": calcHeight().height,
28474
28492
  "density": "comfortable",
28475
28493
  "style": `margin-top: ${calcHeight().margin}`,
28476
28494
  "class": "v-calendar-internal-event",
28477
28495
  "color": props.event?.color ?? undefined,
28478
28496
  "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
28479
- }, {
28497
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28498
+ event: props.event,
28499
+ allDay: false,
28500
+ day: null,
28501
+ interval: props.interval,
28502
+ intervalDivisions: props.intervalDivisions,
28503
+ intervalDuration: props.intervalDuration,
28504
+ intervalHeight: props.intervalHeight
28505
+ }))), {
28480
28506
  default: () => [props.event?.first ? props.event?.title : '']
28481
- });
28507
+ })]);
28482
28508
  });
28483
28509
  return {};
28484
28510
  }
@@ -28514,6 +28540,7 @@
28514
28540
  }, 'VCalendarInterval');
28515
28541
  const VCalendarInterval = genericComponent()({
28516
28542
  name: 'VCalendarInterval',
28543
+ inheritAttrs: false,
28517
28544
  props: {
28518
28545
  index: {
28519
28546
  type: Number,
@@ -28523,6 +28550,7 @@
28523
28550
  },
28524
28551
  setup(props, _ref) {
28525
28552
  let {
28553
+ attrs,
28526
28554
  emit,
28527
28555
  slots
28528
28556
  } = _ref;
@@ -28548,45 +28576,74 @@
28548
28576
  return props.dayIndex === 0 ? vue.createVNode("div", {
28549
28577
  "class": "v-calendar-day__row-with-label",
28550
28578
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28551
- }, [vue.createVNode("div", {
28579
+ }, [vue.createVNode("div", vue.mergeProps({
28552
28580
  "class": "v-calendar-day__row-label"
28553
- }, [vue.createVNode(vue.resolveComponent("slot"), {
28554
- "name": "intervalFormat",
28555
- "interval": interval.value
28556
- }, {
28557
- default: () => [props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : '']
28558
- })]), vue.createVNode("div", {
28581
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28582
+ interval: interval.value
28583
+ }) ?? (props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : '12 AM')]), vue.createVNode("div", {
28559
28584
  "class": "v-calendar-day__row-hairline"
28560
- }, null), vue.createVNode("div", {
28585
+ }, null), vue.createVNode("div", vue.mergeProps({
28561
28586
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28562
- }, [vue.createVNode(vue.resolveComponent("slot"), {
28563
- "name": "intervalBody",
28564
- "interval": interval.value
28565
- }, {
28566
- default: () => [interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, {
28567
- "event": event,
28568
- "interval": interval.value,
28569
- "intervalDivisions": props.intervalDivisions,
28570
- "intervalDuration": props.intervalDuration,
28571
- "intervalHeight": props.intervalHeight
28572
- }, null))]
28573
- })])]) : vue.createVNode("div", {
28587
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28588
+ interval: interval.value
28589
+ }) ?? vue.createVNode("div", null, [interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28590
+ "event": event,
28591
+ "interval": interval.value,
28592
+ "intervalDivisions": props.intervalDivisions,
28593
+ "intervalDuration": props.intervalDuration,
28594
+ "intervalHeight": props.intervalHeight
28595
+ }, attrs), {
28596
+ ...(slots.intervalEvent ? {
28597
+ intervalEvent: _ref2 => {
28598
+ let {
28599
+ height,
28600
+ margin,
28601
+ eventClass,
28602
+ event,
28603
+ interval
28604
+ } = _ref2;
28605
+ return slots.intervalEvent?.({
28606
+ height,
28607
+ margin,
28608
+ eventClass,
28609
+ event,
28610
+ interval
28611
+ });
28612
+ }
28613
+ } : {})
28614
+ }))])])]) : vue.createVNode("div", {
28574
28615
  "class": "v-calendar-day__row-without-label",
28575
28616
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28576
- }, [vue.createVNode("div", {
28617
+ }, [vue.createVNode("div", vue.mergeProps({
28577
28618
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28578
- }, [vue.createVNode(vue.resolveComponent("slot"), {
28579
- "name": "intervalBody",
28580
- "interval": interval.value
28581
- }, {
28582
- default: () => [interval.value.events?.filter(event => !event.allDay).map(event => vue.createVNode(VCalendarIntervalEvent, {
28583
- "event": event,
28584
- "interval": interval.value,
28585
- "intervalDivisions": props.intervalDivisions,
28586
- "intervalDuration": props.intervalDuration,
28587
- "intervalHeight": props.intervalHeight
28588
- }, null))]
28589
- })])]);
28619
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28620
+ interval: interval.value
28621
+ }) ?? interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28622
+ "event": event,
28623
+ "interval": interval.value,
28624
+ "intervalDivisions": props.intervalDivisions,
28625
+ "intervalDuration": props.intervalDuration,
28626
+ "intervalHeight": props.intervalHeight
28627
+ }, attrs), {
28628
+ ...(slots.intervalEvent ? {
28629
+ intervalEvent: _ref3 => {
28630
+ let {
28631
+ height,
28632
+ margin,
28633
+ eventClass,
28634
+ event,
28635
+ interval
28636
+ } = _ref3;
28637
+ return slots.intervalEvent?.({
28638
+ height,
28639
+ margin,
28640
+ eventClass,
28641
+ event,
28642
+ interval
28643
+ });
28644
+ }
28645
+ } : {})
28646
+ }))])]);
28590
28647
  });
28591
28648
  return {
28592
28649
  interval
@@ -28594,6 +28651,8 @@
28594
28651
  }
28595
28652
  });
28596
28653
 
28654
+ // Types
28655
+
28597
28656
  const makeVCalendarDayProps = propsFactory({
28598
28657
  hideDayHeader: Boolean,
28599
28658
  intervals: {
@@ -28604,26 +28663,34 @@
28604
28663
  }, 'VCalendarDay');
28605
28664
  const VCalendarDay = genericComponent()({
28606
28665
  name: 'VCalendarDay',
28666
+ inheritAttrs: false,
28607
28667
  props: makeVCalendarDayProps(),
28608
- setup(props) {
28668
+ setup(props, _ref) {
28669
+ let {
28670
+ attrs,
28671
+ slots
28672
+ } = _ref;
28609
28673
  const adapter = useDate();
28610
28674
  const intervals = vue.computed(() => [...Array.from({
28611
28675
  length: props.intervals
28612
- }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28676
+ }, (v, i) => i).filter((_, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28613
28677
  useRender(() => {
28614
28678
  const calendarIntervalProps = VCalendarInterval.filterProps(props);
28615
28679
  return vue.createVNode("div", {
28616
28680
  "class": "v-calendar-day__container"
28617
- }, [!props.hideDayHeader && vue.createVNode("div", {
28618
- "key": "calender-week-name",
28681
+ }, [!props.hideDayHeader && vue.createVNode("div", vue.mergeProps({
28682
+ "key": "calendar-week-name",
28619
28683
  "class": "v-calendar-weekly__head-weekday"
28620
- }, [adapter.format(props.day.date, 'weekdayShort'), vue.createVNode("div", null, [vue.createVNode(VBtn, {
28684
+ }, getPrefixedEventHandlers(attrs, ':day', () => props.day)), [adapter.format(props.day.date, 'weekdayShort'), vue.createVNode("div", null, [vue.createVNode(VBtn, vue.mergeProps(getPrefixedEventHandlers(attrs, ':date', () => props.day), {
28685
+ "class": props.day?.isToday ? 'v-calendar-day-label__today' : undefined,
28621
28686
  "icon": true,
28622
28687
  "text": adapter.format(props.day.date, 'dayOfMonth'),
28623
- "variant": "text"
28624
- }, null)])]), intervals.value.map((_, index) => vue.createVNode(VCalendarInterval, vue.mergeProps({
28688
+ "variant": props.day?.isToday ? undefined : 'text'
28689
+ }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? vue.createVNode(VCalendarInterval, vue.mergeProps({
28625
28690
  "index": index
28626
- }, calendarIntervalProps), null))]);
28691
+ }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
28692
+ ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
28693
+ }))]);
28627
28694
  });
28628
28695
  return {
28629
28696
  intervals
@@ -28662,7 +28729,8 @@
28662
28729
  },
28663
28730
  setup(props, _ref) {
28664
28731
  let {
28665
- emit
28732
+ emit,
28733
+ slots
28666
28734
  } = _ref;
28667
28735
  const {
28668
28736
  t
@@ -28696,7 +28764,9 @@
28696
28764
  "onClick": next
28697
28765
  }, null), vue.createVNode("div", {
28698
28766
  "class": "v-calendar-header__title"
28699
- }, [props.title])]));
28767
+ }, [slots.title?.({
28768
+ title: props.title
28769
+ }) ?? vue.createVNode("span", null, [props.title])])]));
28700
28770
  return {};
28701
28771
  }
28702
28772
  });
@@ -28708,14 +28778,24 @@
28708
28778
  }, 'VCalendarEvent');
28709
28779
  const VCalendarEvent = genericComponent()({
28710
28780
  name: 'VCalendarEvent',
28781
+ inheritAttrs: false,
28711
28782
  props: makeVCalendarEventProps(),
28712
- setup(props) {
28713
- useRender(() => vue.createVNode(VChip, {
28783
+ setup(props, _ref) {
28784
+ let {
28785
+ attrs,
28786
+ emit,
28787
+ slots
28788
+ } = _ref;
28789
+ useRender(() => vue.createVNode(VChip, vue.mergeProps({
28714
28790
  "color": props.allDay ? 'primary' : undefined,
28715
28791
  "density": "comfortable",
28716
28792
  "label": props.allDay,
28717
28793
  "width": "100%"
28718
- }, {
28794
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28795
+ allDay: props.allDay,
28796
+ day: props.day,
28797
+ event: props.event
28798
+ }))), {
28719
28799
  default: () => [vue.createVNode(VBadge, {
28720
28800
  "inline": true,
28721
28801
  "dot": true,
@@ -28726,87 +28806,95 @@
28726
28806
  }
28727
28807
  });
28728
28808
 
28809
+ // Types
28810
+
28729
28811
  const makeVCalendarMonthDayProps = propsFactory({
28730
28812
  active: Boolean,
28731
28813
  color: String,
28732
- day: Object,
28814
+ day: {
28815
+ type: Object
28816
+ },
28733
28817
  disabled: Boolean,
28734
28818
  events: Array,
28735
28819
  title: [Number, String]
28736
28820
  }, 'VCalendarMonthDay');
28737
28821
  const VCalendarMonthDay = genericComponent()({
28738
28822
  name: 'VCalendarMonthDay',
28823
+ inheritAttrs: false,
28739
28824
  props: makeVCalendarMonthDayProps(),
28740
28825
  setup(props, _ref) {
28741
28826
  let {
28742
- emit,
28827
+ attrs,
28743
28828
  slots
28744
28829
  } = _ref;
28745
28830
  useRender(() => {
28746
- const hasTitle = !!(props.title || slots.title?.({
28747
- title: props.title
28748
- }));
28749
- return vue.createVNode("div", {
28831
+ return vue.createVNode("div", vue.mergeProps({
28750
28832
  "class": ['v-calendar-month__day']
28751
- }, [!props.day?.isHidden && hasTitle && vue.createVNode("div", {
28833
+ }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? vue.createVNode("div", {
28752
28834
  "key": "title",
28753
28835
  "class": "v-calendar-weekly__day-label"
28754
- }, [slots.title?.({
28836
+ }, [slots.dayTitle?.({
28755
28837
  title: props.title
28756
- }) ?? vue.createVNode(VBtn, {
28838
+ }) ?? vue.createVNode(VBtn, vue.mergeProps({
28757
28839
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
28758
28840
  "color": props.color,
28759
28841
  "disabled": props.disabled,
28760
28842
  "icon": true,
28761
28843
  "size": "x-small",
28762
- "variant": props.day?.isToday ? undefined : 'flat'
28763
- }, {
28764
- default: () => [props.title]
28765
- })]), !props.day?.isHidden && vue.createVNode("div", {
28844
+ "variant": props.day?.isToday ? undefined : 'flat',
28845
+ "text": `${props.title}`
28846
+ }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? vue.createVNode("div", {
28766
28847
  "key": "content",
28767
28848
  "class": "v-calendar-weekly__day-content"
28768
- }, [slots.content?.() ?? vue.createVNode("div", null, [vue.createVNode("div", {
28849
+ }, [slots.dayBody?.({
28850
+ day: props.day,
28851
+ events: props.events
28852
+ }) ?? vue.createVNode("div", null, [vue.createVNode("div", {
28769
28853
  "class": "v-calendar-weekly__day-alldayevents-container"
28770
- }, [props.events?.filter(event => event.allDay).map(event => slots.event ? slots.event({
28854
+ }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28771
28855
  day: props.day,
28772
28856
  allDay: true,
28773
28857
  event
28774
- }) : vue.createVNode(VCalendarEvent, {
28858
+ }) : vue.createVNode(VCalendarEvent, vue.mergeProps({
28775
28859
  "day": props.day,
28776
28860
  "event": event,
28777
28861
  "allDay": true
28778
- }, null))]), vue.createVNode("div", {
28862
+ }, attrs), null))]), vue.createVNode("div", {
28779
28863
  "class": "v-calendar-weekly__day-events-container"
28780
- }, [props.events?.filter(event => !event.allDay).map(event => slots.event ? slots.event({
28864
+ }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28781
28865
  day: props.day,
28782
28866
  event,
28783
28867
  allDay: false
28784
- }) : vue.createVNode(VCalendarEvent, {
28868
+ }) : vue.createVNode(VCalendarEvent, vue.mergeProps({
28785
28869
  "day": props.day,
28786
28870
  "event": event
28787
- }, null))])])]), !props.day?.isHidden && slots.default?.()]);
28871
+ }, attrs), null))])])]) : undefined]);
28788
28872
  });
28789
28873
  return {};
28790
28874
  }
28791
28875
  });
28792
28876
 
28877
+ // Types
28878
+
28793
28879
  const makeVCalendarProps = propsFactory({
28794
28880
  hideHeader: Boolean,
28795
28881
  hideWeekNumber: Boolean,
28796
28882
  ...makeCalendarProps(),
28797
28883
  ...makeVCalendarDayProps(),
28798
28884
  ...makeVCalendarHeaderProps()
28799
- }, 'VCalender');
28885
+ }, 'VCalendar');
28800
28886
  const VCalendar = genericComponent()({
28801
28887
  name: 'VCalendar',
28802
28888
  props: makeVCalendarProps(),
28803
28889
  emits: {
28804
28890
  next: null,
28805
28891
  prev: null,
28892
+ today: null,
28806
28893
  'update:modelValue': null
28807
28894
  },
28808
28895
  setup(props, _ref) {
28809
28896
  let {
28897
+ attrs,
28810
28898
  emit,
28811
28899
  slots
28812
28900
  } = _ref;
@@ -28824,27 +28912,33 @@
28824
28912
  function onClickNext() {
28825
28913
  if (props.viewMode === 'month') {
28826
28914
  model.value = [adapter.addMonths(displayValue.value, 1)];
28827
- }
28828
- if (props.viewMode === 'week') {
28915
+ } else if (props.viewMode === 'week') {
28829
28916
  model.value = [adapter.addDays(displayValue.value, 7)];
28830
- }
28831
- if (props.viewMode === 'day') {
28917
+ } else if (props.viewMode === 'day') {
28832
28918
  model.value = [adapter.addDays(displayValue.value, 1)];
28833
28919
  }
28920
+ vue.nextTick(() => {
28921
+ emit('next', model.value[0]);
28922
+ });
28834
28923
  }
28835
28924
  function onClickPrev() {
28836
28925
  if (props.viewMode === 'month') {
28837
28926
  model.value = [adapter.addMonths(displayValue.value, -1)];
28838
- }
28839
- if (props.viewMode === 'week') {
28927
+ } else if (props.viewMode === 'week') {
28840
28928
  model.value = [adapter.addDays(displayValue.value, -7)];
28841
- }
28842
- if (props.viewMode === 'day') {
28929
+ } else if (props.viewMode === 'day') {
28843
28930
  model.value = [adapter.addDays(displayValue.value, -1)];
28844
28931
  }
28932
+ vue.nextTick(() => {
28933
+ emit('prev', model.value[0]);
28934
+ });
28845
28935
  }
28846
28936
  function onClickToday() {
28847
- model.value = [adapter.date()];
28937
+ const date = adapter.date();
28938
+ model.value = [date];
28939
+ vue.nextTick(() => {
28940
+ emit('today', model.value[0]);
28941
+ });
28848
28942
  }
28849
28943
  const title = vue.computed(() => {
28850
28944
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -28858,20 +28952,25 @@
28858
28952
  'v-calendar-weekly': props.viewMode === 'week',
28859
28953
  'v-calendar-day': props.viewMode === 'day'
28860
28954
  }]
28861
- }, [vue.createVNode("div", null, [!props.hideHeader && (!slots.header ? vue.createVNode(VCalendarHeader, vue.mergeProps({
28955
+ }, [vue.createVNode("div", null, [!props.hideHeader && (slots.header?.({
28956
+ title: title.value,
28957
+ clickNext: onClickNext,
28958
+ clickPrev: onClickPrev,
28959
+ clickToday: onClickToday
28960
+ }) ?? vue.createVNode(VCalendarHeader, vue.mergeProps({
28862
28961
  "key": "calendar-header"
28863
28962
  }, calendarHeaderProps, {
28864
28963
  "title": title.value,
28865
28964
  "onClick:next": onClickNext,
28866
28965
  "onClick:prev": onClickPrev,
28867
28966
  "onClick:toToday": onClickToday
28868
- }), null) : slots.header({
28869
- title: title.value
28967
+ }), {
28968
+ title: slots.title
28870
28969
  }))]), vue.createVNode("div", {
28871
28970
  "class": ['v-calendar__container', `days__${weekDays.value.length}`]
28872
28971
  }, [props.viewMode === 'month' && !props.hideDayHeader && vue.createVNode("div", {
28873
28972
  "class": ['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
28874
- "key": "calenderWeeklyHead"
28973
+ "key": "calendarWeeklyHead"
28875
28974
  }, [!props.hideWeekNumber ? vue.createVNode("div", {
28876
28975
  "key": "weekNumber0",
28877
28976
  "class": "v-calendar-weekly__head-weeknumber"
@@ -28880,24 +28979,39 @@
28880
28979
  }, [dayNames[weekday]]))]), props.viewMode === 'month' && vue.createVNode("div", {
28881
28980
  "key": "VCalendarMonth",
28882
28981
  "class": ['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])]
28883
- }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? vue.createVNode("div", {
28982
+ }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? vue.createVNode("div", vue.mergeProps({
28884
28983
  "class": "v-calendar-month__weeknumber"
28885
- }, [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, {
28886
- "color": adapter.isSameDay(adapter.date(), day.date) ? 'primary' : undefined,
28984
+ }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
28985
+ weekNumber: weekNumbers.value[wi],
28986
+ week
28987
+ }))), [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, vue.mergeProps({
28988
+ "key": day.date.getTime()
28989
+ }, calendarDayProps, {
28887
28990
  "day": day,
28888
- "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
28991
+ "title": adapter.format(day.date, 'dayOfMonth'),
28889
28992
  "events": props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end))
28890
- }, {
28891
- event: slots.event
28892
- }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
28993
+ }, attrs), {
28994
+ ...pick(slots, ['day-body', 'day-event', 'day-title'])
28995
+ }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => slots['day-interval'] ? slots['day-interval']?.({
28996
+ ...calendarDayProps,
28997
+ day,
28998
+ dayIndex: i,
28999
+ events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
29000
+ }) : vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
28893
29001
  "day": day,
28894
29002
  "dayIndex": i,
28895
29003
  "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
28896
- }), null)), props.viewMode === 'day' && vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
28897
- "day": genDays([displayValue.value], adapter.date())[0],
29004
+ }, attrs), {
29005
+ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29006
+ })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29007
+ day: genDays([displayValue.value], adapter.date())[0],
29008
+ dayIndex: 0,
29009
+ 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))
29010
+ }) : vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
29011
+ "day": genDays([model.value[0]], adapter.date())[0],
28898
29012
  "dayIndex": 0,
28899
- "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))
28900
- }), null)])]);
29013
+ "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))
29014
+ }, attrs), null))])]);
28901
29015
  });
28902
29016
  return {
28903
29017
  daysInMonth,
@@ -29507,7 +29621,7 @@
29507
29621
  colorClasses,
29508
29622
  colorStyles,
29509
29623
  variantClasses
29510
- } = useVariant(vue.toRef(() => ({
29624
+ } = useVariant(() => ({
29511
29625
  color: (() => {
29512
29626
  if (props.disabled) return undefined;
29513
29627
  if (!isActive.value) return props.color;
@@ -29522,7 +29636,7 @@
29522
29636
  if (isActive.value) return props.activeVariant ?? props.variant;
29523
29637
  return props.baseVariant ?? props.variant;
29524
29638
  })()
29525
- })));
29639
+ }));
29526
29640
  const btnSizeMap = new Map(props.sizes);
29527
29641
  const iconSizeMap = new Map(props.iconSizes);
29528
29642
  function onClick() {
@@ -30019,11 +30133,11 @@
30019
30133
  const {
30020
30134
  textColorClasses,
30021
30135
  textColorStyles
30022
- } = useTextColor(vue.toRef(props, 'color'));
30136
+ } = useTextColor(() => props.color);
30023
30137
  const {
30024
30138
  backgroundColorClasses,
30025
30139
  backgroundColorStyles
30026
- } = useBackgroundColor(vue.toRef(props, 'color'));
30140
+ } = useBackgroundColor(() => props.color);
30027
30141
  const count = vue.computed(() => props.max - props.min + 1);
30028
30142
  const roundCount = vue.computed(() => props.double ? count.value / 2 : count.value);
30029
30143
  const degreesPerUnit = vue.computed(() => 360 / roundCount.value);
@@ -30883,9 +30997,9 @@
30883
30997
  const {
30884
30998
  items
30885
30999
  } = useListItems(props);
30886
- const activeColor = vue.toRef(props, 'activeColor');
30887
- const baseColor = vue.toRef(props, 'baseColor');
30888
- const color = vue.toRef(props, 'color');
31000
+ const activeColor = vue.toRef(() => props.activeColor);
31001
+ const baseColor = vue.toRef(() => props.baseColor);
31002
+ const color = vue.toRef(() => props.color);
30889
31003
  const activated = useProxiedModel(props, 'activated');
30890
31004
  const model = useProxiedModel(props, 'modelValue');
30891
31005
  const _selected = useProxiedModel(props, 'selected', props.modelValue);
@@ -30899,7 +31013,7 @@
30899
31013
  const vListRef = vue.ref();
30900
31014
  const opened = vue.computed(() => props.openAll ? openAll(items.value) : props.opened);
30901
31015
  const flatItems = vue.computed(() => flatten(items.value));
30902
- const search = vue.toRef(props, 'search');
31016
+ const search = vue.toRef(() => props.search);
30903
31017
  const {
30904
31018
  filteredItems
30905
31019
  } = useFilter(props, flatItems, search);
@@ -30942,18 +31056,18 @@
30942
31056
  activeColor,
30943
31057
  baseColor,
30944
31058
  color,
30945
- collapseIcon: vue.toRef(props, 'collapseIcon'),
30946
- expandIcon: vue.toRef(props, 'expandIcon')
31059
+ collapseIcon: vue.toRef(() => props.collapseIcon),
31060
+ expandIcon: vue.toRef(() => props.expandIcon)
30947
31061
  },
30948
31062
  VTreeviewItem: {
30949
- activeClass: vue.toRef(props, 'activeClass'),
31063
+ activeClass: vue.toRef(() => props.activeClass),
30950
31064
  activeColor,
30951
31065
  baseColor,
30952
31066
  color,
30953
- density: vue.toRef(props, 'density'),
30954
- disabled: vue.toRef(props, 'disabled'),
30955
- lines: vue.toRef(props, 'lines'),
30956
- variant: vue.toRef(props, 'variant')
31067
+ density: vue.toRef(() => props.density),
31068
+ disabled: vue.toRef(() => props.disabled),
31069
+ lines: vue.toRef(() => props.lines),
31070
+ variant: vue.toRef(() => props.variant)
30957
31071
  }
30958
31072
  });
30959
31073
  useRender(() => {
@@ -31493,7 +31607,7 @@
31493
31607
  };
31494
31608
  });
31495
31609
  }
31496
- const version$1 = "3.8.2-master.2025-04-19";
31610
+ const version$1 = "3.8.2-master.2025-04-23";
31497
31611
  createVuetify$1.version = version$1;
31498
31612
 
31499
31613
  // Vue's inject() can only be used in setup
@@ -31791,7 +31905,7 @@
31791
31905
 
31792
31906
  /* eslint-disable local-rules/sort-imports */
31793
31907
 
31794
- const version = "3.8.2-master.2025-04-19";
31908
+ const version = "3.8.2-master.2025-04-23";
31795
31909
 
31796
31910
  /* eslint-disable local-rules/sort-imports */
31797
31911