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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/CHANGELOG.md +24 -3
  2. package/dist/json/attributes.json +2022 -2022
  3. package/dist/json/importMap-labs.json +36 -36
  4. package/dist/json/importMap.json +170 -170
  5. package/dist/json/web-types.json +4067 -3809
  6. package/dist/vuetify-labs.cjs +631 -514
  7. package/dist/vuetify-labs.css +5232 -5223
  8. package/dist/vuetify-labs.d.ts +1855 -915
  9. package/dist/vuetify-labs.esm.js +632 -515
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +631 -514
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +402 -391
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2556 -2556
  16. package/dist/vuetify.d.ts +168 -166
  17. package/dist/vuetify.esm.js +403 -392
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +402 -391
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +893 -885
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.js +8 -9
  25. package/lib/components/VAlert/VAlert.js.map +1 -1
  26. package/lib/components/VAppBar/VAppBar.js +4 -4
  27. package/lib/components/VAppBar/VAppBar.js.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.js +1 -2
  29. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  30. package/lib/components/VBadge/VBadge.js +2 -3
  31. package/lib/components/VBadge/VBadge.js.map +1 -1
  32. package/lib/components/VBanner/VBanner.js +3 -3
  33. package/lib/components/VBanner/VBanner.js.map +1 -1
  34. package/lib/components/VBottomNavigation/VBottomNavigation.js +8 -8
  35. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  36. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +6 -6
  37. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  38. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +1 -2
  39. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  40. package/lib/components/VBtn/VBtn.js +3 -3
  41. package/lib/components/VBtn/VBtn.js.map +1 -1
  42. package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
  43. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  44. package/lib/components/VCard/VCard.js +7 -8
  45. package/lib/components/VCard/VCard.js.map +1 -1
  46. package/lib/components/VCheckbox/VCheckbox.js +2 -3
  47. package/lib/components/VCheckbox/VCheckbox.js.map +1 -1
  48. package/lib/components/VCheckbox/VCheckboxBtn.js +3 -3
  49. package/lib/components/VCheckbox/VCheckboxBtn.js.map +1 -1
  50. package/lib/components/VChip/VChip.js +8 -9
  51. package/lib/components/VChip/VChip.js.map +1 -1
  52. package/lib/components/VChipGroup/VChipGroup.js +5 -5
  53. package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
  54. package/lib/components/VCombobox/VCombobox.js +3 -4
  55. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  56. package/lib/components/VCounter/VCounter.js +2 -2
  57. package/lib/components/VCounter/VCounter.js.map +1 -1
  58. package/lib/components/VDataIterator/VDataIterator.js +2 -2
  59. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  60. package/lib/components/VDataTable/VDataTable.js +7 -7
  61. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  62. package/lib/components/VDataTable/VDataTableHeaders.js +1 -1
  63. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  64. package/lib/components/VDataTable/VDataTableServer.js +7 -7
  65. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  66. package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
  67. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  68. package/lib/components/VDataTable/composables/expand.d.ts +1 -1
  69. package/lib/components/VDataTable/composables/expand.js +1 -1
  70. package/lib/components/VDataTable/composables/expand.js.map +1 -1
  71. package/lib/components/VDataTable/composables/options.js +8 -8
  72. package/lib/components/VDataTable/composables/options.js.map +1 -1
  73. package/lib/components/VDataTable/composables/select.d.ts +2 -2
  74. package/lib/components/VDataTable/composables/select.js +2 -2
  75. package/lib/components/VDataTable/composables/select.js.map +1 -1
  76. package/lib/components/VDataTable/composables/sort.d.ts +2 -2
  77. package/lib/components/VDataTable/composables/sort.js +2 -2
  78. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  79. package/lib/components/VDatePicker/VDatePicker.js +4 -4
  80. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  81. package/lib/components/VDatePicker/VDatePickerHeader.js +1 -1
  82. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  83. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  84. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  85. package/lib/components/VDialog/VDialog.d.ts +9 -9
  86. package/lib/components/VDivider/VDivider.js +2 -2
  87. package/lib/components/VDivider/VDivider.js.map +1 -1
  88. package/lib/components/VEmptyState/VEmptyState.js +1 -2
  89. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  90. package/lib/components/VExpansionPanel/VExpansionPanel.js +3 -3
  91. package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
  92. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +3 -3
  93. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
  94. package/lib/components/VExpansionPanel/VExpansionPanels.js +14 -14
  95. package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  96. package/lib/components/VFab/VFab.js +2 -2
  97. package/lib/components/VFab/VFab.js.map +1 -1
  98. package/lib/components/VField/VField.js +5 -5
  99. package/lib/components/VField/VField.js.map +1 -1
  100. package/lib/components/VFileInput/VFileInput.js +2 -2
  101. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  102. package/lib/components/VFooter/VFooter.js +4 -4
  103. package/lib/components/VFooter/VFooter.js.map +1 -1
  104. package/lib/components/VForm/VForm.d.ts +40 -40
  105. package/lib/components/VIcon/VIcon.js +4 -4
  106. package/lib/components/VIcon/VIcon.js.map +1 -1
  107. package/lib/components/VImg/VImg.js +2 -2
  108. package/lib/components/VImg/VImg.js.map +1 -1
  109. package/lib/components/VInput/VInput.js +3 -3
  110. package/lib/components/VInput/VInput.js.map +1 -1
  111. package/lib/components/VLayout/VLayoutItem.js +5 -5
  112. package/lib/components/VLayout/VLayoutItem.js.map +1 -1
  113. package/lib/components/VList/VList.js +14 -14
  114. package/lib/components/VList/VList.js.map +1 -1
  115. package/lib/components/VList/VListGroup.js +2 -2
  116. package/lib/components/VList/VListGroup.js.map +1 -1
  117. package/lib/components/VList/VListItem.d.ts +3 -3
  118. package/lib/components/VList/VListItem.js +6 -6
  119. package/lib/components/VList/VListItem.js.map +1 -1
  120. package/lib/components/VList/VListSubheader.js +1 -2
  121. package/lib/components/VList/VListSubheader.js.map +1 -1
  122. package/lib/components/VMenu/VMenu.d.ts +15 -15
  123. package/lib/components/VMenu/VMenu.js +2 -2
  124. package/lib/components/VMenu/VMenu.js.map +1 -1
  125. package/lib/components/VMessages/VMessages.js +1 -1
  126. package/lib/components/VMessages/VMessages.js.map +1 -1
  127. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +6 -6
  128. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  129. package/lib/components/VNumberInput/VNumberInput.js +11 -11
  130. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  131. package/lib/components/VOtpInput/VOtpInput.js +7 -7
  132. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  133. package/lib/components/VOverlay/VOverlay.d.ts +3 -3
  134. package/lib/components/VOverlay/VOverlay.js +4 -4
  135. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  136. package/lib/components/VOverlay/locationStrategies.js +10 -1
  137. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  138. package/lib/components/VPagination/VPagination.js +7 -7
  139. package/lib/components/VPagination/VPagination.js.map +1 -1
  140. package/lib/components/VProgressCircular/VProgressCircular.js +9 -9
  141. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  142. package/lib/components/VProgressLinear/VProgressLinear.js +4 -4
  143. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  144. package/lib/components/VSelect/VSelect.js +2 -2
  145. package/lib/components/VSelect/VSelect.js.map +1 -1
  146. package/lib/components/VSelectionControl/VSelectionControl.d.ts +1 -1
  147. package/lib/components/VSelectionControl/VSelectionControl.js +7 -7
  148. package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
  149. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +15 -15
  150. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
  151. package/lib/components/VSheet/VSheet.js +1 -2
  152. package/lib/components/VSheet/VSheet.js.map +1 -1
  153. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +2 -2
  154. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  155. package/lib/components/VSlider/slider.js +10 -10
  156. package/lib/components/VSlider/slider.js.map +1 -1
  157. package/lib/components/VSnackbar/VSnackbar.d.ts +9 -9
  158. package/lib/components/VSparkline/VSparkline.js +2 -2
  159. package/lib/components/VSparkline/VSparkline.js.map +1 -1
  160. package/lib/components/VSwitch/VSwitch.js +3 -3
  161. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  162. package/lib/components/VSystemBar/VSystemBar.js +2 -2
  163. package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
  164. package/lib/components/VTabs/VTab.d.ts +3 -3
  165. package/lib/components/VTabs/VTab.js +1 -1
  166. package/lib/components/VTabs/VTab.js.map +1 -1
  167. package/lib/components/VTabs/VTabs.js +7 -7
  168. package/lib/components/VTabs/VTabs.js.map +1 -1
  169. package/lib/components/VTimeline/VTimeline.js +9 -9
  170. package/lib/components/VTimeline/VTimeline.js.map +1 -1
  171. package/lib/components/VTimeline/VTimelineDivider.js +2 -3
  172. package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
  173. package/lib/components/VToolbar/VToolbar.js +2 -2
  174. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  175. package/lib/components/VToolbar/VToolbarItems.js +2 -2
  176. package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
  177. package/lib/components/VTooltip/VTooltip.d.ts +9 -9
  178. package/lib/components/VTooltip/VTooltip.js +3 -3
  179. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  180. package/lib/components/VVirtualScroll/VVirtualScroll.js +1 -1
  181. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  182. package/lib/components/VWindow/VWindow.js +3 -3
  183. package/lib/components/VWindow/VWindow.js.map +1 -1
  184. package/lib/components/transitions/dialog-transition.js +11 -2
  185. package/lib/components/transitions/dialog-transition.js.map +1 -1
  186. package/lib/composables/border.d.ts +1 -1
  187. package/lib/composables/border.js +5 -8
  188. package/lib/composables/border.js.map +1 -1
  189. package/lib/composables/calendar.d.ts +21 -54
  190. package/lib/composables/calendar.js +11 -11
  191. package/lib/composables/calendar.js.map +1 -1
  192. package/lib/composables/color.d.ts +8 -10
  193. package/lib/composables/color.js +21 -22
  194. package/lib/composables/color.js.map +1 -1
  195. package/lib/composables/density.d.ts +1 -1
  196. package/lib/composables/density.js +2 -2
  197. package/lib/composables/density.js.map +1 -1
  198. package/lib/composables/display.d.ts +4 -2
  199. package/lib/composables/display.js +2 -2
  200. package/lib/composables/display.js.map +1 -1
  201. package/lib/composables/elevation.js +4 -6
  202. package/lib/composables/elevation.js.map +1 -1
  203. package/lib/composables/focus.d.ts +4 -2
  204. package/lib/composables/focus.js +2 -2
  205. package/lib/composables/focus.js.map +1 -1
  206. package/lib/composables/form.d.ts +7 -7
  207. package/lib/composables/form.js +3 -3
  208. package/lib/composables/form.js.map +1 -1
  209. package/lib/composables/goto.js +2 -2
  210. package/lib/composables/goto.js.map +1 -1
  211. package/lib/composables/group.d.ts +3 -3
  212. package/lib/composables/group.js +4 -4
  213. package/lib/composables/group.js.map +1 -1
  214. package/lib/composables/icons.d.ts +2 -2
  215. package/lib/composables/icons.js +2 -2
  216. package/lib/composables/icons.js.map +1 -1
  217. package/lib/composables/layout.d.ts +10 -4
  218. package/lib/composables/layout.js +4 -4
  219. package/lib/composables/layout.js.map +1 -1
  220. package/lib/composables/lazy.d.ts +1 -1
  221. package/lib/composables/lazy.js +2 -2
  222. package/lib/composables/lazy.js.map +1 -1
  223. package/lib/composables/loader.d.ts +4 -2
  224. package/lib/composables/loader.js +2 -2
  225. package/lib/composables/loader.js.map +1 -1
  226. package/lib/composables/locale.js +3 -3
  227. package/lib/composables/locale.js.map +1 -1
  228. package/lib/composables/nested/nested.d.ts +3 -3
  229. package/lib/composables/nested/nested.js +4 -4
  230. package/lib/composables/nested/nested.js.map +1 -1
  231. package/lib/composables/position.d.ts +1 -1
  232. package/lib/composables/position.js +2 -2
  233. package/lib/composables/position.js.map +1 -1
  234. package/lib/composables/router.d.ts +3 -3
  235. package/lib/composables/router.js +8 -8
  236. package/lib/composables/router.js.map +1 -1
  237. package/lib/composables/size.d.ts +8 -5
  238. package/lib/composables/size.js +6 -5
  239. package/lib/composables/size.js.map +1 -1
  240. package/lib/composables/ssrBoot.d.ts +4 -2
  241. package/lib/composables/ssrBoot.js +2 -2
  242. package/lib/composables/ssrBoot.js.map +1 -1
  243. package/lib/composables/stack.d.ts +7 -5
  244. package/lib/composables/stack.js +5 -5
  245. package/lib/composables/stack.js.map +1 -1
  246. package/lib/composables/theme.js +7 -7
  247. package/lib/composables/theme.js.map +1 -1
  248. package/lib/composables/variant.d.ts +5 -6
  249. package/lib/composables/variant.js +6 -6
  250. package/lib/composables/variant.js.map +1 -1
  251. package/lib/entry-bundler.js +1 -1
  252. package/lib/framework.d.ts +81 -79
  253. package/lib/framework.js +1 -1
  254. package/lib/labs/VCalendar/VCalendar.d.ts +600 -211
  255. package/lib/labs/VCalendar/VCalendar.js +55 -27
  256. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  257. package/lib/labs/VCalendar/VCalendarDay.css +9 -0
  258. package/lib/labs/VCalendar/VCalendarDay.d.ts +329 -17
  259. package/lib/labs/VCalendar/VCalendarDay.js +18 -10
  260. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  261. package/lib/labs/VCalendar/VCalendarDay.sass +8 -0
  262. package/lib/labs/VCalendar/VCalendarEvent.js +15 -5
  263. package/lib/labs/VCalendar/VCalendarEvent.js.map +1 -1
  264. package/lib/labs/VCalendar/VCalendarHeader.d.ts +44 -17
  265. package/lib/labs/VCalendar/VCalendarHeader.js +5 -2
  266. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  267. package/lib/labs/VCalendar/VCalendarInterval.d.ts +171 -17
  268. package/lib/labs/VCalendar/VCalendarInterval.js +66 -35
  269. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  270. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +92 -17
  271. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +30 -10
  272. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  273. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +122 -88
  274. package/lib/labs/VCalendar/VCalendarMonthDay.js +24 -22
  275. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  276. package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
  277. package/lib/labs/VIconBtn/VIconBtn.js +10 -12
  278. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  279. package/lib/labs/VPicker/VPicker.js +1 -2
  280. package/lib/labs/VPicker/VPicker.js.map +1 -1
  281. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -3
  282. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  283. package/lib/labs/VTreeview/VTreeview.js +11 -11
  284. package/lib/labs/VTreeview/VTreeview.js.map +1 -1
  285. package/lib/util/box.js.map +1 -1
  286. package/lib/util/helpers.d.ts +5 -2
  287. package/lib/util/helpers.js +9 -5
  288. package/lib/util/helpers.js.map +1 -1
  289. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.2-master.2025-04-17
2
+ * Vuetify v3.8.2-master.2025-04-22
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -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,
@@ -7032,10 +7039,10 @@
7032
7039
  resetValidation,
7033
7040
  validate
7034
7041
  }));
7035
- const color = vue.computed(() => {
7042
+ const color = vue.toRef(() => {
7036
7043
  return props.error || props.disabled ? undefined : props.focused ? props.color : props.baseColor;
7037
7044
  });
7038
- const iconColor = vue.computed(() => {
7045
+ const iconColor = vue.toRef(() => {
7039
7046
  if (!props.iconColor) return undefined;
7040
7047
  return props.iconColor === true ? color.value : props.iconColor;
7041
7048
  });
@@ -7125,7 +7132,6 @@
7125
7132
  blur
7126
7133
  } = useFocus(props);
7127
7134
  const uid = vue.useId();
7128
- const id = vue.computed(() => props.id || `checkbox-${uid}`);
7129
7135
  useRender(() => {
7130
7136
  const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
7131
7137
  const inputProps = VInput.filterProps(props);
@@ -7135,7 +7141,7 @@
7135
7141
  }, rootAttrs, inputProps, {
7136
7142
  "modelValue": model.value,
7137
7143
  "onUpdate:modelValue": $event => model.value = $event,
7138
- "id": id.value,
7144
+ "id": props.id || `checkbox-${uid}`,
7139
7145
  "focused": isFocused.value,
7140
7146
  "style": props.style
7141
7147
  }), {
@@ -7319,7 +7325,7 @@
7319
7325
  return false;
7320
7326
  }
7321
7327
  });
7322
- const displayClasses = vue.computed(() => {
7328
+ const displayClasses = vue.toRef(() => {
7323
7329
  if (!name) return {};
7324
7330
  return {
7325
7331
  [`${name}--mobile`]: mobile.value
@@ -7434,7 +7440,7 @@
7434
7440
  const goTo = {
7435
7441
  ...goToInstance,
7436
7442
  // can be set via VLocaleProvider
7437
- rtl: vue.computed(() => goToInstance.rtl.value || isRtl.value)
7443
+ rtl: vue.toRef(() => goToInstance.rtl.value || isRtl.value)
7438
7444
  };
7439
7445
  async function go(target, options) {
7440
7446
  return scrollTo(target, mergeDeep(_options, options), false, goTo);
@@ -7926,11 +7932,11 @@
7926
7932
  } = useGroup(props, VChipGroupSymbol);
7927
7933
  provideDefaults({
7928
7934
  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')
7935
+ baseColor: vue.toRef(() => props.baseColor),
7936
+ color: vue.toRef(() => props.color),
7937
+ disabled: vue.toRef(() => props.disabled),
7938
+ filter: vue.toRef(() => props.filter),
7939
+ variant: vue.toRef(() => props.variant)
7934
7940
  }
7935
7941
  });
7936
7942
  useRender(() => {
@@ -8056,9 +8062,9 @@
8056
8062
  const isActive = useProxiedModel(props, 'modelValue');
8057
8063
  const group = useGroupItem(props, VChipGroupSymbol, false);
8058
8064
  const link = useLink(props, attrs);
8059
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
8065
+ const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
8060
8066
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8061
- const closeProps = vue.computed(() => ({
8067
+ const closeProps = vue.toRef(() => ({
8062
8068
  'aria-label': t(props.closeLabel),
8063
8069
  onClick(e) {
8064
8070
  e.preventDefault();
@@ -8067,18 +8073,17 @@
8067
8073
  emit('click:close', e);
8068
8074
  }
8069
8075
  }));
8070
- const variantProps = vue.computed(() => {
8076
+ const {
8077
+ colorClasses,
8078
+ colorStyles,
8079
+ variantClasses
8080
+ } = useVariant(() => {
8071
8081
  const showColor = !group || group.isSelected.value;
8072
8082
  return {
8073
8083
  color: showColor ? props.color ?? props.baseColor : props.baseColor,
8074
8084
  variant: props.variant
8075
8085
  };
8076
8086
  });
8077
- const {
8078
- colorClasses,
8079
- colorStyles,
8080
- variantClasses
8081
- } = useVariant(variantProps);
8082
8087
  function onClick(e) {
8083
8088
  emit('click', e);
8084
8089
  if (!isClickable.value) return;
@@ -8745,8 +8750,8 @@
8745
8750
  id: vue.shallowRef(),
8746
8751
  root: {
8747
8752
  opened,
8748
- activatable: vue.toRef(props, 'activatable'),
8749
- selectable: vue.toRef(props, 'selectable'),
8753
+ activatable: vue.toRef(() => props.activatable),
8754
+ selectable: vue.toRef(() => props.selectable),
8750
8755
  activated,
8751
8756
  selected,
8752
8757
  selectedValues: vue.computed(() => {
@@ -8875,7 +8880,7 @@
8875
8880
  const useNestedItem = (id, isGroup) => {
8876
8881
  const parent = vue.inject(VNestedSymbol, emptyNested);
8877
8882
  const uidSymbol = Symbol('nested item');
8878
- const computedId = vue.computed(() => id.value !== undefined ? id.value : uidSymbol);
8883
+ const computedId = vue.computed(() => vue.toValue(id) ?? uidSymbol);
8879
8884
  const item = {
8880
8885
  ...parent,
8881
8886
  id: computedId,
@@ -8951,7 +8956,7 @@
8951
8956
  isOpen,
8952
8957
  open,
8953
8958
  id: _id
8954
- } = useNestedItem(vue.toRef(props, 'value'), true);
8959
+ } = useNestedItem(() => props.value, true);
8955
8960
  const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
8956
8961
  const list = useList();
8957
8962
  const {
@@ -9125,12 +9130,12 @@
9125
9130
  } = useNestedItem(id, false);
9126
9131
  const list = useList();
9127
9132
  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);
9133
+ const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
9129
9134
  const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9130
9135
  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(() => ({
9136
+ const roundedProps = vue.toRef(() => props.rounded || props.nav);
9137
+ const color = vue.toRef(() => props.color ?? props.activeColor);
9138
+ const variantProps = vue.toRef(() => ({
9134
9139
  color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
9135
9140
  variant: props.variant
9136
9141
  }));
@@ -9173,7 +9178,7 @@
9173
9178
  const {
9174
9179
  roundedClasses
9175
9180
  } = useRounded(roundedProps);
9176
- const lineClasses = vue.computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9181
+ const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9177
9182
  const slotProps = vue.computed(() => ({
9178
9183
  isActive: isActive.value,
9179
9184
  select,
@@ -9343,7 +9348,7 @@
9343
9348
  const {
9344
9349
  textColorClasses,
9345
9350
  textColorStyles
9346
- } = useTextColor(vue.toRef(props, 'color'));
9351
+ } = useTextColor(() => props.color);
9347
9352
  useRender(() => {
9348
9353
  const hasText = !!(slots.default || props.title);
9349
9354
  return vue.createVNode(props.tag, {
@@ -9388,7 +9393,7 @@
9388
9393
  const {
9389
9394
  textColorClasses,
9390
9395
  textColorStyles
9391
- } = useTextColor(vue.toRef(props, 'color'));
9396
+ } = useTextColor(() => props.color);
9392
9397
  const dividerStyles = vue.computed(() => {
9393
9398
  const styles = {};
9394
9399
  if (props.length) {
@@ -9750,7 +9755,7 @@
9750
9755
  const {
9751
9756
  backgroundColorClasses,
9752
9757
  backgroundColorStyles
9753
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
9758
+ } = useBackgroundColor(() => props.bgColor);
9754
9759
  const {
9755
9760
  borderClasses
9756
9761
  } = useBorder(props);
@@ -9773,30 +9778,30 @@
9773
9778
  select,
9774
9779
  getPath
9775
9780
  } = 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');
9781
+ const lineClasses = vue.toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9782
+ const activeColor = vue.toRef(() => props.activeColor);
9783
+ const baseColor = vue.toRef(() => props.baseColor);
9784
+ const color = vue.toRef(() => props.color);
9780
9785
  createList();
9781
9786
  provideDefaults({
9782
9787
  VListGroup: {
9783
9788
  activeColor,
9784
9789
  baseColor,
9785
9790
  color,
9786
- expandIcon: vue.toRef(props, 'expandIcon'),
9787
- collapseIcon: vue.toRef(props, 'collapseIcon')
9791
+ expandIcon: vue.toRef(() => props.expandIcon),
9792
+ collapseIcon: vue.toRef(() => props.collapseIcon)
9788
9793
  },
9789
9794
  VListItem: {
9790
- activeClass: vue.toRef(props, 'activeClass'),
9795
+ activeClass: vue.toRef(() => props.activeClass),
9791
9796
  activeColor,
9792
9797
  baseColor,
9793
9798
  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')
9799
+ density: vue.toRef(() => props.density),
9800
+ disabled: vue.toRef(() => props.disabled),
9801
+ lines: vue.toRef(() => props.lines),
9802
+ nav: vue.toRef(() => props.nav),
9803
+ slim: vue.toRef(() => props.slim),
9804
+ variant: vue.toRef(() => props.variant)
9800
9805
  }
9801
9806
  });
9802
9807
  const isFocused = vue.shallowRef(false);
@@ -10124,13 +10129,22 @@
10124
10129
  vue.onScopeDispose(() => {
10125
10130
  observer.disconnect();
10126
10131
  });
10132
+ let targetBox = new Box({
10133
+ x: 0,
10134
+ y: 0,
10135
+ width: 0,
10136
+ height: 0
10137
+ });
10127
10138
 
10128
10139
  // eslint-disable-next-line max-statements
10129
10140
  function updateLocation() {
10130
10141
  observe = false;
10131
10142
  requestAnimationFrame(() => observe = true);
10132
10143
  if (!data.target.value || !data.contentEl.value) return;
10133
- const targetBox = getTargetBox(data.target.value);
10144
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10145
+ targetBox = getTargetBox(data.target.value);
10146
+ } // Otherwise target element is hidden, use last known value
10147
+
10134
10148
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10135
10149
  const scrollParents = getScrollParents(data.contentEl.value);
10136
10150
  const viewportMargin = 12;
@@ -10840,7 +10854,7 @@
10840
10854
  }, 'lazy');
10841
10855
  function useLazy(props, active) {
10842
10856
  const isBooted = vue.shallowRef(false);
10843
- const hasContent = vue.computed(() => isBooted.value || props.eager || active.value);
10857
+ const hasContent = vue.toRef(() => isBooted.value || props.eager || active.value);
10844
10858
  vue.watch(active, () => isBooted.value = true);
10845
10859
  function onAfterLeave() {
10846
10860
  if (!props.eager) isBooted.value = false;
@@ -10877,10 +10891,10 @@
10877
10891
  activeChildren: new Set()
10878
10892
  });
10879
10893
  vue.provide(StackSymbol, stack);
10880
- const _zIndex = vue.shallowRef(Number(zIndex.value));
10894
+ const _zIndex = vue.shallowRef(Number(vue.toValue(zIndex)));
10881
10895
  useToggleScope(isActive, () => {
10882
10896
  const lastZIndex = globalStack.at(-1)?.[1];
10883
- _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10897
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(vue.toValue(zIndex));
10884
10898
  if (createStackEntry) {
10885
10899
  globalStack.push([vm.uid, _zIndex.value]);
10886
10900
  }
@@ -10900,11 +10914,11 @@
10900
10914
  setTimeout(() => globalTop.value = _isTop);
10901
10915
  });
10902
10916
  }
10903
- const localTop = vue.computed(() => !stack.activeChildren.size);
10917
+ const localTop = vue.toRef(() => !stack.activeChildren.size);
10904
10918
  return {
10905
10919
  globalTop: vue.readonly(globalTop),
10906
10920
  localTop,
10907
- stackStyles: vue.computed(() => ({
10921
+ stackStyles: vue.toRef(() => ({
10908
10922
  zIndex: _zIndex.value
10909
10923
  }))
10910
10924
  };
@@ -11121,14 +11135,14 @@
11121
11135
  hasContent,
11122
11136
  onAfterLeave: _onAfterLeave
11123
11137
  } = useLazy(props, isActive);
11124
- const scrimColor = useBackgroundColor(vue.computed(() => {
11138
+ const scrimColor = useBackgroundColor(() => {
11125
11139
  return typeof props.scrim === 'string' ? props.scrim : null;
11126
- }));
11140
+ });
11127
11141
  const {
11128
11142
  globalTop,
11129
11143
  localTop,
11130
11144
  stackStyles
11131
- } = useStack(isActive, vue.toRef(props, 'zIndex'), props._disableGlobalStack);
11145
+ } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);
11132
11146
  const {
11133
11147
  activatorEl,
11134
11148
  activatorRef,
@@ -11454,7 +11468,7 @@
11454
11468
  isRtl
11455
11469
  } = useRtl();
11456
11470
  const uid = vue.useId();
11457
- const id = vue.computed(() => props.id || `v-menu-${uid}`);
11471
+ const id = vue.toRef(() => props.id || `v-menu-${uid}`);
11458
11472
  const overlay = vue.ref();
11459
11473
  const parent = vue.inject(VMenuSymbol, null);
11460
11474
  const openChildren = vue.shallowRef(new Set());
@@ -11622,7 +11636,7 @@
11622
11636
  let {
11623
11637
  slots
11624
11638
  } = _ref;
11625
- const counter = vue.computed(() => {
11639
+ const counter = vue.toRef(() => {
11626
11640
  return props.max ? `${props.value} / ${props.max}` : String(props.value);
11627
11641
  });
11628
11642
  useRender(() => vue.createVNode(MaybeTransition, {
@@ -11749,12 +11763,12 @@
11749
11763
  const {
11750
11764
  rtlClasses
11751
11765
  } = 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);
11766
+ const isActive = vue.toRef(() => props.dirty || props.active);
11767
+ const hasLabel = vue.toRef(() => !!(props.label || slots.label));
11768
+ const hasFloatingLabel = vue.toRef(() => !props.singleLine && hasLabel.value);
11755
11769
  const uid = vue.useId();
11756
11770
  const id = vue.computed(() => props.id || `input-${uid}`);
11757
- const messagesId = vue.computed(() => `${id.value}-messages`);
11771
+ const messagesId = vue.toRef(() => `${id.value}-messages`);
11758
11772
  const labelRef = vue.ref();
11759
11773
  const floatingLabelRef = vue.ref();
11760
11774
  const controlRef = vue.ref();
@@ -11769,7 +11783,7 @@
11769
11783
  const {
11770
11784
  backgroundColorClasses,
11771
11785
  backgroundColorStyles
11772
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
11786
+ } = useBackgroundColor(() => props.bgColor);
11773
11787
  const {
11774
11788
  textColorClasses,
11775
11789
  textColorStyles
@@ -12496,7 +12510,7 @@
12496
12510
  paddingTop,
12497
12511
  paddingBottom,
12498
12512
  computedItems
12499
- } = useVirtual(props, vue.toRef(props, 'items'));
12513
+ } = useVirtual(props, vue.toRef(() => props.items));
12500
12514
  useToggleScope(() => props.renderless, () => {
12501
12515
  function handleListeners() {
12502
12516
  let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -12733,7 +12747,7 @@
12733
12747
  _menu.value = v;
12734
12748
  }
12735
12749
  });
12736
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12750
+ const label = vue.toRef(() => menu.value ? props.closeText : props.openText);
12737
12751
  const computedMenuProps = vue.computed(() => {
12738
12752
  return {
12739
12753
  ...props.menuProps,
@@ -13235,7 +13249,6 @@
13235
13249
  const vMenuRef = vue.ref();
13236
13250
  const vVirtualScrollRef = vue.ref();
13237
13251
  const selectionIndex = vue.shallowRef(-1);
13238
- const color = vue.computed(() => vTextFieldRef.value?.color);
13239
13252
  const {
13240
13253
  items,
13241
13254
  transformIn,
@@ -13244,7 +13257,7 @@
13244
13257
  const {
13245
13258
  textColorClasses,
13246
13259
  textColorStyles
13247
- } = useTextColor(color);
13260
+ } = useTextColor(() => vTextFieldRef.value?.color);
13248
13261
  const search = useProxiedModel(props, 'search', '');
13249
13262
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13250
13263
  const transformed = transformOut(v);
@@ -13693,7 +13706,7 @@
13693
13706
  const {
13694
13707
  backgroundColorClasses,
13695
13708
  backgroundColorStyles
13696
- } = useBackgroundColor(vue.toRef(props, 'color'));
13709
+ } = useBackgroundColor(() => props.color);
13697
13710
  const {
13698
13711
  roundedClasses
13699
13712
  } = useRounded(props);
@@ -13703,7 +13716,7 @@
13703
13716
  const {
13704
13717
  textColorClasses,
13705
13718
  textColorStyles
13706
- } = useTextColor(vue.toRef(props, 'textColor'));
13719
+ } = useTextColor(() => props.textColor);
13707
13720
  const {
13708
13721
  themeClasses
13709
13722
  } = useTheme();
@@ -13815,7 +13828,7 @@
13815
13828
  const {
13816
13829
  backgroundColorClasses,
13817
13830
  backgroundColorStyles
13818
- } = useBackgroundColor(props, 'bgColor');
13831
+ } = useBackgroundColor(() => props.bgColor);
13819
13832
  const {
13820
13833
  borderClasses
13821
13834
  } = useBorder(props);
@@ -13844,8 +13857,8 @@
13844
13857
  const {
13845
13858
  themeClasses
13846
13859
  } = provideTheme(props);
13847
- const color = vue.toRef(props, 'color');
13848
- const density = vue.toRef(props, 'density');
13860
+ const color = vue.toRef(() => props.color);
13861
+ const density = vue.toRef(() => props.density);
13849
13862
  provideDefaults({
13850
13863
  VBannerActions: {
13851
13864
  color,
@@ -13954,7 +13967,7 @@
13954
13967
  const {
13955
13968
  backgroundColorClasses,
13956
13969
  backgroundColorStyles
13957
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
13970
+ } = useBackgroundColor(() => props.bgColor);
13958
13971
  const {
13959
13972
  densityClasses
13960
13973
  } = useDensity(props);
@@ -13974,19 +13987,19 @@
13974
13987
  } = useLayoutItem({
13975
13988
  id: props.name,
13976
13989
  order: vue.computed(() => parseInt(props.order, 10)),
13977
- position: vue.computed(() => 'bottom'),
13978
- layoutSize: vue.computed(() => isActive.value ? height.value : 0),
13990
+ position: vue.toRef(() => 'bottom'),
13991
+ layoutSize: vue.toRef(() => isActive.value ? height.value : 0),
13979
13992
  elementSize: height,
13980
13993
  active: isActive,
13981
- absolute: vue.toRef(props, 'absolute')
13994
+ absolute: vue.toRef(() => props.absolute)
13982
13995
  });
13983
13996
  useGroup(props, VBtnToggleSymbol);
13984
13997
  provideDefaults({
13985
13998
  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'),
13999
+ baseColor: vue.toRef(() => props.baseColor),
14000
+ color: vue.toRef(() => props.color),
14001
+ density: vue.toRef(() => props.density),
14002
+ stacked: vue.toRef(() => props.mode !== 'horizontal'),
13990
14003
  variant: 'text'
13991
14004
  }
13992
14005
  }, {
@@ -14222,11 +14235,10 @@
14222
14235
  } = _ref;
14223
14236
  const link = useLink(props, attrs);
14224
14237
  const isActive = vue.computed(() => props.active || link.isActive?.value);
14225
- const color = vue.computed(() => isActive.value ? props.activeColor : props.color);
14226
14238
  const {
14227
14239
  textColorClasses,
14228
14240
  textColorStyles
14229
- } = useTextColor(color);
14241
+ } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14230
14242
  useRender(() => {
14231
14243
  return vue.createVNode(props.tag, {
14232
14244
  "class": ['v-breadcrumbs-item', {
@@ -14281,7 +14293,7 @@
14281
14293
  const {
14282
14294
  backgroundColorClasses,
14283
14295
  backgroundColorStyles
14284
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
14296
+ } = useBackgroundColor(() => props.bgColor);
14285
14297
  const {
14286
14298
  densityClasses
14287
14299
  } = useDensity(props);
@@ -14290,13 +14302,13 @@
14290
14302
  } = useRounded(props);
14291
14303
  provideDefaults({
14292
14304
  VBreadcrumbsDivider: {
14293
- divider: vue.toRef(props, 'divider')
14305
+ divider: vue.toRef(() => props.divider)
14294
14306
  },
14295
14307
  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')
14308
+ activeClass: vue.toRef(() => props.activeClass),
14309
+ activeColor: vue.toRef(() => props.activeColor),
14310
+ color: vue.toRef(() => props.color),
14311
+ disabled: vue.toRef(() => props.disabled)
14300
14312
  }
14301
14313
  });
14302
14314
  const items = vue.computed(() => props.items.map(item => {
@@ -14619,10 +14631,10 @@
14619
14631
  roundedClasses
14620
14632
  } = useRounded(props);
14621
14633
  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
14634
  useRender(() => {
14625
- const Tag = isLink.value ? 'a' : props.tag;
14635
+ const isLink = props.link !== false && link.isLink.value;
14636
+ const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
14637
+ const Tag = isLink ? 'a' : props.tag;
14626
14638
  const hasTitle = !!(slots.title || props.title != null);
14627
14639
  const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
14628
14640
  const hasHeader = hasTitle || hasSubtitle;
@@ -14636,10 +14648,10 @@
14636
14648
  'v-card--disabled': props.disabled,
14637
14649
  'v-card--flat': props.flat,
14638
14650
  'v-card--hover': props.hover && !(props.disabled || props.flat),
14639
- 'v-card--link': isClickable.value
14651
+ 'v-card--link': isClickable
14640
14652
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14641
14653
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14642
- "onClick": isClickable.value && link.navigate,
14654
+ "onClick": isClickable && link.navigate,
14643
14655
  "tabindex": props.disabled ? -1 : undefined
14644
14656
  }, link.linkProps), {
14645
14657
  default: () => [hasImage && vue.createVNode("div", {
@@ -14684,8 +14696,8 @@
14684
14696
  default: () => [slots.text?.() ?? props.text]
14685
14697
  }), slots.default?.(), slots.actions && vue.createVNode(VCardActions, null, {
14686
14698
  default: slots.actions
14687
- }), genOverlays(isClickable.value, 'v-card')]
14688
- }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
14699
+ }), genOverlays(isClickable, 'v-card')]
14700
+ }), [[vue.resolveDirective("ripple"), isClickable && props.ripple]]);
14689
14701
  });
14690
14702
  return {};
14691
14703
  }
@@ -14898,8 +14910,8 @@
14898
14910
  transitionHeight,
14899
14911
  rootRef
14900
14912
  });
14901
- const canMoveBack = vue.computed(() => props.continuous || activeIndex.value !== 0);
14902
- const canMoveForward = vue.computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14913
+ const canMoveBack = vue.toRef(() => props.continuous || activeIndex.value !== 0);
14914
+ const canMoveForward = vue.toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14903
14915
  function prev() {
14904
14916
  canMoveBack.value && group.prev();
14905
14917
  }
@@ -15801,7 +15813,7 @@
15801
15813
  const {
15802
15814
  isRtl
15803
15815
  } = useRtl();
15804
- const isReversed = vue.toRef(props, 'reverse');
15816
+ const isReversed = vue.toRef(() => props.reverse);
15805
15817
  const vertical = vue.computed(() => props.direction === 'vertical');
15806
15818
  const indexFromEnd = vue.computed(() => vertical.value !== isReversed.value);
15807
15819
  const {
@@ -15815,7 +15827,7 @@
15815
15827
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
15816
15828
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
15817
15829
  const numTicks = vue.computed(() => (max.value - min.value) / step.value);
15818
- const disabled = vue.toRef(props, 'disabled');
15830
+ const disabled = vue.toRef(() => props.disabled);
15819
15831
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
15820
15832
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
15821
15833
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -15917,7 +15929,7 @@
15917
15929
  const percentage = (val - min.value) / (max.value - min.value) * 100;
15918
15930
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
15919
15931
  };
15920
- const showTicks = vue.toRef(props, 'showTicks');
15932
+ const showTicks = vue.toRef(() => props.showTicks);
15921
15933
  const parsedTicks = vue.computed(() => {
15922
15934
  if (!showTicks.value) return [];
15923
15935
  if (!props.ticks) {
@@ -15948,11 +15960,11 @@
15948
15960
  }));
15949
15961
  const data = {
15950
15962
  activeThumbRef,
15951
- color: vue.toRef(props, 'color'),
15963
+ color: vue.toRef(() => props.color),
15952
15964
  decimals,
15953
15965
  disabled,
15954
- direction: vue.toRef(props, 'direction'),
15955
- elevation: vue.toRef(props, 'elevation'),
15966
+ direction: vue.toRef(() => props.direction),
15967
+ elevation: vue.toRef(() => props.elevation),
15956
15968
  hasLabels,
15957
15969
  isReversed,
15958
15970
  indexFromEnd,
@@ -15965,16 +15977,16 @@
15965
15977
  parsedTicks,
15966
15978
  parseMouseMove,
15967
15979
  position,
15968
- readonly: vue.toRef(props, 'readonly'),
15969
- rounded: vue.toRef(props, 'rounded'),
15980
+ readonly: vue.toRef(() => props.readonly),
15981
+ rounded: vue.toRef(() => props.rounded),
15970
15982
  roundValue,
15971
15983
  showTicks,
15972
15984
  startOffset,
15973
15985
  step,
15974
15986
  thumbSize,
15975
15987
  thumbColor,
15976
- thumbLabel: vue.toRef(props, 'thumbLabel'),
15977
- ticks: vue.toRef(props, 'ticks'),
15988
+ thumbLabel: vue.toRef(() => props.thumbLabel),
15989
+ ticks: vue.toRef(() => props.ticks),
15978
15990
  tickSize,
15979
15991
  trackColor,
15980
15992
  trackContainerRef,
@@ -16893,7 +16905,7 @@
16893
16905
  const {
16894
16906
  backgroundColorClasses,
16895
16907
  backgroundColorStyles
16896
- } = useBackgroundColor(vue.toRef(props, 'color'));
16908
+ } = useBackgroundColor(() => props.color);
16897
16909
  const {
16898
16910
  borderClasses
16899
16911
  } = useBorder(props);
@@ -16940,7 +16952,7 @@
16940
16952
  const {
16941
16953
  backgroundColorClasses,
16942
16954
  backgroundColorStyles
16943
- } = useBackgroundColor(vue.toRef(props, 'color'));
16955
+ } = useBackgroundColor(() => props.color);
16944
16956
  useRender(() => {
16945
16957
  const sheetProps = VSheet.filterProps(props);
16946
16958
  const hasTitle = !!(props.title || slots.title);
@@ -17925,7 +17937,6 @@
17925
17937
  const vVirtualScrollRef = vue.ref();
17926
17938
  const selectionIndex = vue.shallowRef(-1);
17927
17939
  let cleared = false;
17928
- const color = vue.computed(() => vTextFieldRef.value?.color);
17929
17940
  const {
17930
17941
  items,
17931
17942
  transformIn,
@@ -17934,7 +17945,7 @@
17934
17945
  const {
17935
17946
  textColorClasses,
17936
17947
  textColorStyles
17937
- } = useTextColor(color);
17948
+ } = useTextColor(() => vTextFieldRef.value?.color);
17938
17949
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
17939
17950
  const transformed = transformOut(v);
17940
17951
  return props.multiple ? transformed : transformed[0] ?? null;
@@ -17989,7 +18000,7 @@
17989
18000
  _menu.value = v;
17990
18001
  }
17991
18002
  });
17992
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
18003
+ const label = vue.toRef(() => menu.value ? props.closeText : props.openText);
17993
18004
  vue.watch(_search, value => {
17994
18005
  if (cleared) {
17995
18006
  // wait for clear to finish, VTextField sets _search to null
@@ -18495,7 +18506,7 @@
18495
18506
  }, 'DataTable-expand');
18496
18507
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18497
18508
  function provideExpanded(props) {
18498
- const expandOnClick = vue.toRef(props, 'expandOnClick');
18509
+ const expandOnClick = vue.toRef(() => props.expandOnClick);
18499
18510
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18500
18511
  return new Set(v);
18501
18512
  }, v => {
@@ -18682,23 +18693,23 @@
18682
18693
  search
18683
18694
  } = _ref;
18684
18695
  const vm = getCurrentInstance('VDataTable');
18685
- const options = vue.computed(() => ({
18696
+ const options = () => ({
18686
18697
  page: page.value,
18687
18698
  itemsPerPage: itemsPerPage.value,
18688
18699
  sortBy: sortBy.value,
18689
18700
  groupBy: groupBy.value,
18690
18701
  search: search.value
18691
- }));
18702
+ });
18692
18703
  let oldOptions = null;
18693
- vue.watch(options, () => {
18694
- if (deepEqual(oldOptions, options.value)) return;
18704
+ vue.watch(options, value => {
18705
+ if (deepEqual(oldOptions, value)) return;
18695
18706
 
18696
18707
  // Reset page when searching
18697
- if (oldOptions && oldOptions.search !== options.value.search) {
18708
+ if (oldOptions && oldOptions.search !== value.search) {
18698
18709
  page.value = 1;
18699
18710
  }
18700
- vm.emit('update:options', options.value);
18701
- oldOptions = options.value;
18711
+ vm.emit('update:options', value);
18712
+ oldOptions = value;
18702
18713
  }, {
18703
18714
  deep: true,
18704
18715
  immediate: true
@@ -18979,7 +18990,7 @@
18979
18990
  });
18980
18991
  return !!items.length && isSelected(items);
18981
18992
  });
18982
- const showSelectAll = vue.computed(() => selectStrategy.value.showSelectAll);
18993
+ const showSelectAll = vue.toRef(() => selectStrategy.value.showSelectAll);
18983
18994
  const data = {
18984
18995
  toggleSelect,
18985
18996
  select,
@@ -19017,8 +19028,8 @@
19017
19028
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
19018
19029
  function createSort(props) {
19019
19030
  const sortBy = useProxiedModel(props, 'sortBy');
19020
- const mustSort = vue.toRef(props, 'mustSort');
19021
- const multiSort = vue.toRef(props, 'multiSort');
19031
+ const mustSort = vue.toRef(() => props.mustSort);
19032
+ const multiSort = vue.toRef(() => props.multiSort);
19022
19033
  return {
19023
19034
  sortBy,
19024
19035
  mustSort,
@@ -19236,7 +19247,7 @@
19236
19247
  slots
19237
19248
  } = _ref;
19238
19249
  const groupBy = useProxiedModel(props, 'groupBy');
19239
- const search = vue.toRef(props, 'search');
19250
+ const search = vue.toRef(() => props.search);
19240
19251
  const {
19241
19252
  items
19242
19253
  } = useDataIteratorItems(props);
@@ -19280,7 +19291,7 @@
19280
19291
  const {
19281
19292
  flatItems
19282
19293
  } = useGroupedItems(sortedItems, groupBy, opened);
19283
- const itemsLength = vue.computed(() => flatItems.value.length);
19294
+ const itemsLength = vue.toRef(() => flatItems.value.length);
19284
19295
  const {
19285
19296
  startIndex,
19286
19297
  stopIndex,
@@ -19560,13 +19571,13 @@
19560
19571
  } = useRefs();
19561
19572
  provideDefaults({
19562
19573
  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')
19574
+ color: vue.toRef(() => props.color),
19575
+ border: vue.toRef(() => props.border),
19576
+ density: vue.toRef(() => props.density),
19577
+ size: vue.toRef(() => props.size),
19578
+ variant: vue.toRef(() => props.variant),
19579
+ rounded: vue.toRef(() => props.rounded),
19580
+ elevation: vue.toRef(() => props.elevation)
19570
19581
  }
19571
19582
  });
19572
19583
  const items = vue.computed(() => {
@@ -20207,7 +20218,7 @@
20207
20218
  const {
20208
20219
  backgroundColorClasses,
20209
20220
  backgroundColorStyles
20210
- } = useBackgroundColor(props, 'color');
20221
+ } = useBackgroundColor(() => props.color);
20211
20222
  const {
20212
20223
  displayClasses,
20213
20224
  mobile
@@ -20865,13 +20876,13 @@
20865
20876
  filterFunctions
20866
20877
  } = createHeaders(props, {
20867
20878
  groupBy,
20868
- showSelect: vue.toRef(props, 'showSelect'),
20869
- showExpand: vue.toRef(props, 'showExpand')
20879
+ showSelect: vue.toRef(() => props.showSelect),
20880
+ showExpand: vue.toRef(() => props.showExpand)
20870
20881
  });
20871
20882
  const {
20872
20883
  items
20873
20884
  } = useDataTableItems(props, columns);
20874
- const search = vue.toRef(props, 'search');
20885
+ const search = vue.toRef(() => props.search);
20875
20886
  const {
20876
20887
  filteredItems
20877
20888
  } = useFilter(props, items, search, {
@@ -20954,10 +20965,10 @@
20954
20965
  });
20955
20966
  provideDefaults({
20956
20967
  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')
20968
+ hideNoData: vue.toRef(() => props.hideNoData),
20969
+ noDataText: vue.toRef(() => props.noDataText),
20970
+ loading: vue.toRef(() => props.loading),
20971
+ loadingText: vue.toRef(() => props.loadingText)
20961
20972
  }
20962
20973
  });
20963
20974
  const slotProps = vue.computed(() => ({
@@ -21054,13 +21065,13 @@
21054
21065
  sortRawFunctions
21055
21066
  } = createHeaders(props, {
21056
21067
  groupBy,
21057
- showSelect: vue.toRef(props, 'showSelect'),
21058
- showExpand: vue.toRef(props, 'showExpand')
21068
+ showSelect: vue.toRef(() => props.showSelect),
21069
+ showExpand: vue.toRef(() => props.showExpand)
21059
21070
  });
21060
21071
  const {
21061
21072
  items
21062
21073
  } = useDataTableItems(props, columns);
21063
- const search = vue.toRef(props, 'search');
21074
+ const search = vue.toRef(() => props.search);
21064
21075
  const {
21065
21076
  filteredItems
21066
21077
  } = useFilter(props, items, search, {
@@ -21136,10 +21147,10 @@
21136
21147
  });
21137
21148
  provideDefaults({
21138
21149
  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')
21150
+ hideNoData: vue.toRef(() => props.hideNoData),
21151
+ noDataText: vue.toRef(() => props.noDataText),
21152
+ loading: vue.toRef(() => props.loading),
21153
+ loadingText: vue.toRef(() => props.loadingText)
21143
21154
  }
21144
21155
  });
21145
21156
  const slotProps = vue.computed(() => ({
@@ -21292,8 +21303,8 @@
21292
21303
  headers
21293
21304
  } = createHeaders(props, {
21294
21305
  groupBy,
21295
- showSelect: vue.toRef(props, 'showSelect'),
21296
- showExpand: vue.toRef(props, 'showExpand')
21306
+ showSelect: vue.toRef(() => props.showSelect),
21307
+ showExpand: vue.toRef(() => props.showExpand)
21297
21308
  });
21298
21309
  const {
21299
21310
  items
@@ -21348,7 +21359,7 @@
21348
21359
  itemsPerPage,
21349
21360
  sortBy,
21350
21361
  groupBy,
21351
- search: vue.toRef(props, 'search')
21362
+ search: vue.toRef(() => props.search)
21352
21363
  });
21353
21364
  vue.provide('v-data-table', {
21354
21365
  toggleSort,
@@ -21356,10 +21367,10 @@
21356
21367
  });
21357
21368
  provideDefaults({
21358
21369
  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')
21370
+ hideNoData: vue.toRef(() => props.hideNoData),
21371
+ noDataText: vue.toRef(() => props.noDataText),
21372
+ loading: vue.toRef(() => props.loading),
21373
+ loadingText: vue.toRef(() => props.loadingText)
21363
21374
  }
21364
21375
  });
21365
21376
  const slotProps = vue.computed(() => ({
@@ -21829,7 +21840,7 @@
21829
21840
  const {
21830
21841
  backgroundColorClasses,
21831
21842
  backgroundColorStyles
21832
- } = useBackgroundColor(props, 'color');
21843
+ } = useBackgroundColor(() => props.color);
21833
21844
  function onClick() {
21834
21845
  emit('click');
21835
21846
  }
@@ -21968,21 +21979,21 @@
21968
21979
  const isSame = adapter.isSameDay(date, month.value);
21969
21980
  return {
21970
21981
  date,
21971
- isoDate,
21972
21982
  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
21983
  isAdjacent,
21980
- isHidden: isAdjacent && !props.showAdjacentMonths,
21981
- isStart,
21982
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21984
+ isDisabled: isDisabled(date),
21983
21985
  isEnd,
21986
+ isHidden: isAdjacent && !props.showAdjacentMonths,
21984
21987
  isSame,
21985
- localized: adapter.format(date, 'dayOfMonth')
21988
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
21989
+ isStart,
21990
+ isToday: adapter.isSameDay(date, today),
21991
+ isWeekEnd: index % 7 === 6,
21992
+ isWeekStart: index % 7 === 0,
21993
+ isoDate,
21994
+ localized: adapter.format(date, 'dayOfMonth'),
21995
+ month: adapter.getMonth(date),
21996
+ year: adapter.getYear(date)
21986
21997
  };
21987
21998
  });
21988
21999
  }
@@ -22070,7 +22081,7 @@
22070
22081
  const rangeStart = vue.shallowRef();
22071
22082
  const rangeStop = vue.shallowRef();
22072
22083
  const isReverse = vue.shallowRef(false);
22073
- const transition = vue.computed(() => {
22084
+ const transition = vue.toRef(() => {
22074
22085
  return !isReverse.value ? props.transition : props.reverseTransition;
22075
22086
  });
22076
22087
  if (props.multiple === 'range' && model.value.length > 0) {
@@ -22450,7 +22461,7 @@
22450
22461
  }
22451
22462
  return value && adapter.isValid(value) ? value : today;
22452
22463
  });
22453
- const headerColor = vue.computed(() => props.headerColor ?? props.color);
22464
+ const headerColor = vue.toRef(() => props.headerColor ?? props.color);
22454
22465
  const month = vue.ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22455
22466
  const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22456
22467
  const isReversing = vue.shallowRef(false);
@@ -22467,8 +22478,8 @@
22467
22478
  date = adapter.setYear(date, year.value);
22468
22479
  return adapter.format(date, 'monthAndYear');
22469
22480
  });
22470
- // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22471
- const headerTransition = vue.computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22481
+ // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22482
+ const headerTransition = vue.toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22472
22483
  const disabled = vue.computed(() => {
22473
22484
  if (props.disabled) return true;
22474
22485
  const targets = [];
@@ -22680,7 +22691,7 @@
22680
22691
  const {
22681
22692
  backgroundColorClasses,
22682
22693
  backgroundColorStyles
22683
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
22694
+ } = useBackgroundColor(() => props.bgColor);
22684
22695
  const {
22685
22696
  dimensionStyles
22686
22697
  } = useDimension(props);
@@ -22843,7 +22854,7 @@
22843
22854
  const {
22844
22855
  backgroundColorClasses,
22845
22856
  backgroundColorStyles
22846
- } = useBackgroundColor(props, 'color');
22857
+ } = useBackgroundColor(() => props.color);
22847
22858
  const {
22848
22859
  dimensionStyles
22849
22860
  } = useDimension(props);
@@ -22854,7 +22865,7 @@
22854
22865
  expandIcon: props.expandIcon,
22855
22866
  readonly: props.readonly
22856
22867
  }));
22857
- const icon = vue.computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22868
+ const icon = vue.toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22858
22869
  useRender(() => vue.withDirectives(vue.createVNode("button", {
22859
22870
  "class": ['v-expansion-panel-title', {
22860
22871
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
@@ -22909,14 +22920,14 @@
22909
22920
  const {
22910
22921
  backgroundColorClasses,
22911
22922
  backgroundColorStyles
22912
- } = useBackgroundColor(props, 'bgColor');
22923
+ } = useBackgroundColor(() => props.bgColor);
22913
22924
  const {
22914
22925
  elevationClasses
22915
22926
  } = useElevation(props);
22916
22927
  const {
22917
22928
  roundedClasses
22918
22929
  } = useRounded(props);
22919
- const isDisabled = vue.computed(() => groupItem?.disabled.value || props.disabled);
22930
+ const isDisabled = vue.toRef(() => groupItem?.disabled.value || props.disabled);
22920
22931
  const selectedIndices = vue.computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
22921
22932
  if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
22922
22933
  return arr;
@@ -23007,21 +23018,21 @@
23007
23018
  const {
23008
23019
  themeClasses
23009
23020
  } = provideTheme(props);
23010
- const variantClass = vue.computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23021
+ const variantClass = vue.toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23011
23022
  provideDefaults({
23012
23023
  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')
23024
+ bgColor: vue.toRef(() => props.bgColor),
23025
+ collapseIcon: vue.toRef(() => props.collapseIcon),
23026
+ color: vue.toRef(() => props.color),
23027
+ eager: vue.toRef(() => props.eager),
23028
+ elevation: vue.toRef(() => props.elevation),
23029
+ expandIcon: vue.toRef(() => props.expandIcon),
23030
+ focusable: vue.toRef(() => props.focusable),
23031
+ hideActions: vue.toRef(() => props.hideActions),
23032
+ readonly: vue.toRef(() => props.readonly),
23033
+ ripple: vue.toRef(() => props.ripple),
23034
+ rounded: vue.toRef(() => props.rounded),
23035
+ static: vue.toRef(() => props.static)
23025
23036
  }
23026
23037
  });
23027
23038
  useRender(() => vue.createVNode(props.tag, {
@@ -23083,7 +23094,7 @@
23083
23094
  if (!entries.length) return;
23084
23095
  height.value = entries[0].target.clientHeight;
23085
23096
  });
23086
- const hasPosition = vue.computed(() => props.app || props.absolute);
23097
+ const hasPosition = vue.toRef(() => props.app || props.absolute);
23087
23098
  const position = vue.computed(() => {
23088
23099
  if (!hasPosition.value) return false;
23089
23100
  return props.location?.split(' ').shift() ?? 'bottom';
@@ -23100,7 +23111,7 @@
23100
23111
  layoutSize: vue.computed(() => props.layout ? height.value + 24 : 0),
23101
23112
  elementSize: vue.computed(() => height.value + 24),
23102
23113
  active: vue.computed(() => props.app && model.value),
23103
- absolute: vue.toRef(props, 'absolute')
23114
+ absolute: vue.toRef(() => props.absolute)
23104
23115
  });
23105
23116
  vue.watchEffect(() => {
23106
23117
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23225,7 +23236,7 @@
23225
23236
  const vInputRef = vue.ref();
23226
23237
  const vFieldRef = vue.ref();
23227
23238
  const inputRef = vue.ref();
23228
- const isActive = vue.computed(() => isFocused.value || props.active);
23239
+ const isActive = vue.toRef(() => isFocused.value || props.active);
23229
23240
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
23230
23241
  function onFocus() {
23231
23242
  if (inputRef.value !== document.activeElement) {
@@ -23398,7 +23409,7 @@
23398
23409
  const {
23399
23410
  backgroundColorClasses,
23400
23411
  backgroundColorStyles
23401
- } = useBackgroundColor(vue.toRef(props, 'color'));
23412
+ } = useBackgroundColor(() => props.color);
23402
23413
  const {
23403
23414
  borderClasses
23404
23415
  } = useBorder(props);
@@ -23420,11 +23431,11 @@
23420
23431
  const layout = useLayoutItem({
23421
23432
  id: props.name,
23422
23433
  order: vue.computed(() => parseInt(props.order, 10)),
23423
- position: vue.computed(() => 'bottom'),
23434
+ position: vue.toRef(() => 'bottom'),
23424
23435
  layoutSize: height,
23425
23436
  elementSize: vue.computed(() => props.height === 'auto' ? undefined : height.value),
23426
- active: vue.computed(() => props.app),
23427
- absolute: vue.toRef(props, 'absolute')
23437
+ active: vue.toRef(() => props.app),
23438
+ absolute: vue.toRef(() => props.absolute)
23428
23439
  });
23429
23440
  vue.watchEffect(() => {
23430
23441
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23897,11 +23908,11 @@
23897
23908
  } = useLayoutItem({
23898
23909
  id: props.name,
23899
23910
  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')
23911
+ position: vue.toRef(() => props.position),
23912
+ elementSize: vue.toRef(() => props.size),
23913
+ layoutSize: vue.toRef(() => props.size),
23914
+ active: vue.toRef(() => props.modelValue),
23915
+ absolute: vue.toRef(() => props.absolute)
23905
23916
  });
23906
23917
  return () => vue.createVNode("div", {
23907
23918
  "class": ['v-layout-item', props.class],
@@ -24433,7 +24444,7 @@
24433
24444
  const {
24434
24445
  backgroundColorClasses,
24435
24446
  backgroundColorStyles
24436
- } = useBackgroundColor(vue.toRef(props, 'color'));
24447
+ } = useBackgroundColor(() => props.color);
24437
24448
  const {
24438
24449
  elevationClasses
24439
24450
  } = useElevation(props);
@@ -24466,7 +24477,7 @@
24466
24477
  const location = vue.computed(() => {
24467
24478
  return toPhysical(props.location, isRtl.value);
24468
24479
  });
24469
- const isPersistent = vue.computed(() => props.persistent);
24480
+ const isPersistent = vue.toRef(() => props.persistent);
24470
24481
  const isTemporary = vue.computed(() => !props.permanent && (mobile.value || props.temporary));
24471
24482
  const isSticky = vue.computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
24472
24483
  useToggleScope(() => props.expandOnHover && props.rail != null, () => {
@@ -24492,7 +24503,7 @@
24492
24503
  isActive,
24493
24504
  isTemporary,
24494
24505
  width,
24495
- touchless: vue.toRef(props, 'touchless'),
24506
+ touchless: vue.toRef(() => props.touchless),
24496
24507
  position: location
24497
24508
  });
24498
24509
  const layoutSize = vue.computed(() => {
@@ -24509,7 +24520,7 @@
24509
24520
  layoutSize,
24510
24521
  elementSize: width,
24511
24522
  active: vue.readonly(isActive),
24512
- disableTransitions: vue.computed(() => isDragging.value),
24523
+ disableTransitions: vue.toRef(() => isDragging.value),
24513
24524
  absolute: vue.computed(() =>
24514
24525
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
24515
24526
  props.absolute || isSticky.value && typeof isStuck.value !== 'string')
@@ -24522,9 +24533,9 @@
24522
24533
  isSticky,
24523
24534
  layoutItemStyles
24524
24535
  });
24525
- const scrimColor = useBackgroundColor(vue.computed(() => {
24536
+ const scrimColor = useBackgroundColor(() => {
24526
24537
  return typeof props.scrim === 'string' ? props.scrim : null;
24527
- }));
24538
+ });
24528
24539
  const scrimStyles = vue.computed(() => ({
24529
24540
  ...(isDragging.value ? {
24530
24541
  opacity: dragProgress.value * 0.2,
@@ -24738,24 +24749,24 @@
24738
24749
  const controlVariant = vue.computed(() => {
24739
24750
  return props.hideInput ? 'stacked' : props.controlVariant;
24740
24751
  });
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(() => ({
24752
+ const incrementIcon = vue.toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24753
+ const decrementIcon = vue.toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24754
+ const controlNodeSize = vue.toRef(() => controlVariant.value === 'split' ? 'default' : 'small');
24755
+ const controlNodeDefaultHeight = vue.toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24756
+ const incrementSlotProps = {
24746
24757
  props: {
24747
24758
  onClick: onControlClick,
24748
24759
  onPointerup: onControlMouseup,
24749
24760
  onPointerdown: onUpControlMousedown
24750
24761
  }
24751
- }));
24752
- const decrementSlotProps = vue.computed(() => ({
24762
+ };
24763
+ const decrementSlotProps = {
24753
24764
  props: {
24754
24765
  onClick: onControlClick,
24755
24766
  onPointerup: onControlMouseup,
24756
24767
  onPointerdown: onDownControlMousedown
24757
24768
  }
24758
- }));
24769
+ };
24759
24770
  vue.watch(() => props.precision, () => formatInputValue());
24760
24771
  vue.onMounted(() => {
24761
24772
  clampModel();
@@ -24907,7 +24918,7 @@
24907
24918
  }
24908
24919
  }
24909
24920
  }, {
24910
- default: () => [slots.increment(incrementSlotProps.value)]
24921
+ default: () => [slots.increment(incrementSlotProps)]
24911
24922
  });
24912
24923
  }
24913
24924
  function decrementControlNode() {
@@ -24936,7 +24947,7 @@
24936
24947
  }
24937
24948
  }
24938
24949
  }, {
24939
- default: () => [slots.decrement(decrementSlotProps.value)]
24950
+ default: () => [slots.decrement(decrementSlotProps)]
24940
24951
  });
24941
24952
  }
24942
24953
  function controlNode() {
@@ -25136,12 +25147,12 @@
25136
25147
  }
25137
25148
  provideDefaults({
25138
25149
  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)
25150
+ color: vue.toRef(() => props.color),
25151
+ bgColor: vue.toRef(() => props.color),
25152
+ baseColor: vue.toRef(() => props.baseColor),
25153
+ disabled: vue.toRef(() => props.disabled),
25154
+ error: vue.toRef(() => props.error),
25155
+ variant: vue.toRef(() => props.variant)
25145
25156
  }
25146
25157
  }, {
25147
25158
  scoped: true
@@ -25942,7 +25953,7 @@
25942
25953
  const {
25943
25954
  backgroundColorClasses,
25944
25955
  backgroundColorStyles
25945
- } = useBackgroundColor(vue.toRef(props, 'color'));
25956
+ } = useBackgroundColor(() => props.color);
25946
25957
  const {
25947
25958
  dimensionStyles
25948
25959
  } = useDimension(props);
@@ -26741,7 +26752,7 @@
26741
26752
  const {
26742
26753
  textColorClasses,
26743
26754
  textColorStyles
26744
- } = useTextColor(vue.toRef(props, 'color'));
26755
+ } = useTextColor(() => props.color);
26745
26756
  const hasLabels = vue.computed(() => {
26746
26757
  return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
26747
26758
  });
@@ -27287,11 +27298,11 @@
27287
27298
  } = useFocus(props);
27288
27299
  const control = vue.ref();
27289
27300
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
27290
- const loaderColor = vue.computed(() => {
27301
+ const loaderColor = vue.toRef(() => {
27291
27302
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
27292
27303
  });
27293
27304
  const uid = vue.useId();
27294
- const id = vue.computed(() => props.id || `switch-${uid}`);
27305
+ const id = vue.toRef(() => props.id || `switch-${uid}`);
27295
27306
  function onChange() {
27296
27307
  if (indeterminate.value) {
27297
27308
  indeterminate.value = false;
@@ -27442,7 +27453,7 @@
27442
27453
  const {
27443
27454
  backgroundColorClasses,
27444
27455
  backgroundColorStyles
27445
- } = useBackgroundColor(vue.toRef(props, 'color'));
27456
+ } = useBackgroundColor(() => props.color);
27446
27457
  const {
27447
27458
  elevationClasses
27448
27459
  } = useElevation(props);
@@ -27462,7 +27473,7 @@
27462
27473
  layoutSize: height,
27463
27474
  elementSize: height,
27464
27475
  active: vue.computed(() => true),
27465
- absolute: vue.toRef(props, 'absolute')
27476
+ absolute: vue.toRef(() => props.absolute)
27466
27477
  });
27467
27478
  useRender(() => vue.createVNode(props.tag, {
27468
27479
  "class": ['v-system-bar', {
@@ -27504,7 +27515,7 @@
27504
27515
  const {
27505
27516
  textColorClasses: sliderColorClasses,
27506
27517
  textColorStyles: sliderColorStyles
27507
- } = useTextColor(props, 'sliderColor');
27518
+ } = useTextColor(() => props.sliderColor);
27508
27519
  const rootEl = vue.ref();
27509
27520
  const sliderEl = vue.ref();
27510
27521
  const isHorizontal = vue.computed(() => props.direction === 'horizontal');
@@ -27697,18 +27708,18 @@
27697
27708
  const {
27698
27709
  backgroundColorClasses,
27699
27710
  backgroundColorStyles
27700
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
27711
+ } = useBackgroundColor(() => props.bgColor);
27701
27712
  const {
27702
27713
  scopeId
27703
27714
  } = useScopeId();
27704
27715
  provideDefaults({
27705
27716
  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')
27717
+ color: vue.toRef(() => props.color),
27718
+ direction: vue.toRef(() => props.direction),
27719
+ stacked: vue.toRef(() => props.stacked),
27720
+ fixed: vue.toRef(() => props.fixedTabs),
27721
+ sliderColor: vue.toRef(() => props.sliderColor),
27722
+ hideSlider: vue.toRef(() => props.hideSlider)
27712
27723
  }
27713
27724
  });
27714
27725
  useRender(() => {
@@ -28058,7 +28069,7 @@
28058
28069
  const {
28059
28070
  backgroundColorStyles,
28060
28071
  backgroundColorClasses
28061
- } = useBackgroundColor(vue.toRef(props, 'dotColor'));
28072
+ } = useBackgroundColor(() => props.dotColor);
28062
28073
  const {
28063
28074
  roundedClasses
28064
28075
  } = useRounded(props, 'v-timeline-divider__dot');
@@ -28068,7 +28079,7 @@
28068
28079
  const {
28069
28080
  backgroundColorClasses: lineColorClasses,
28070
28081
  backgroundColorStyles: lineColorStyles
28071
- } = useBackgroundColor(vue.toRef(props, 'lineColor'));
28082
+ } = useBackgroundColor(() => props.lineColor);
28072
28083
  useRender(() => vue.createVNode("div", {
28073
28084
  "class": ['v-timeline-divider', {
28074
28085
  'v-timeline-divider--fill-dot': props.fillDot
@@ -28239,17 +28250,17 @@
28239
28250
  } = useRtl();
28240
28251
  provideDefaults({
28241
28252
  VTimelineDivider: {
28242
- lineColor: vue.toRef(props, 'lineColor')
28253
+ lineColor: vue.toRef(() => props.lineColor)
28243
28254
  },
28244
28255
  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')
28256
+ density: vue.toRef(() => props.density),
28257
+ dotColor: vue.toRef(() => props.dotColor),
28258
+ fillDot: vue.toRef(() => props.fillDot),
28259
+ hideOpposite: vue.toRef(() => props.hideOpposite),
28260
+ iconColor: vue.toRef(() => props.iconColor),
28261
+ lineColor: vue.toRef(() => props.lineColor),
28262
+ lineInset: vue.toRef(() => props.lineInset),
28263
+ size: vue.toRef(() => props.size)
28253
28264
  }
28254
28265
  });
28255
28266
  const sideClasses = vue.computed(() => {
@@ -28296,9 +28307,9 @@
28296
28307
  } = _ref;
28297
28308
  provideDefaults({
28298
28309
  VBtn: {
28299
- color: vue.toRef(props, 'color'),
28310
+ color: vue.toRef(() => props.color),
28300
28311
  height: 'inherit',
28301
- variant: vue.toRef(props, 'variant')
28312
+ variant: vue.toRef(() => props.variant)
28302
28313
  }
28303
28314
  });
28304
28315
  useRender(() => vue.createVNode("div", {
@@ -28345,7 +28356,7 @@
28345
28356
  scopeId
28346
28357
  } = useScopeId();
28347
28358
  const uid = vue.useId();
28348
- const id = vue.computed(() => props.id || `v-tooltip-${uid}`);
28359
+ const id = vue.toRef(() => props.id || `v-tooltip-${uid}`);
28349
28360
  const overlay = vue.ref();
28350
28361
  const location = vue.computed(() => {
28351
28362
  return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
@@ -28353,7 +28364,7 @@
28353
28364
  const origin = vue.computed(() => {
28354
28365
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28355
28366
  });
28356
- const transition = vue.computed(() => {
28367
+ const transition = vue.toRef(() => {
28357
28368
  if (props.transition) return props.transition;
28358
28369
  return isActive.value ? 'scale-transition' : 'fade-transition';
28359
28370
  });
@@ -28432,13 +28443,19 @@
28432
28443
  }, 'VCalendarIntervalEvent');
28433
28444
  const VCalendarIntervalEvent = genericComponent()({
28434
28445
  name: 'VCalendarIntervalEvent',
28446
+ inheritAttrs: false,
28435
28447
  props: makeVCalendarIntervalEventProps(),
28436
- setup(props) {
28448
+ setup(props, _ref) {
28449
+ let {
28450
+ attrs,
28451
+ emit,
28452
+ slots
28453
+ } = _ref;
28437
28454
  const adapter = useDate();
28438
28455
  const calcHeight = () => {
28439
- if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
28456
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.end, props.interval?.end)) {
28440
28457
  return {
28441
- height: '100%',
28458
+ height: `${props.intervalHeight}px`,
28442
28459
  margin: convertToUnit(0)
28443
28460
  };
28444
28461
  } else {
@@ -28447,8 +28464,8 @@
28447
28464
  margin
28448
28465
  } = Array.from({
28449
28466
  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)) {
28467
+ }, (_, x) => (x + 1) * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28468
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.end)) {
28452
28469
  return {
28453
28470
  height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
28454
28471
  margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
@@ -28469,16 +28486,30 @@
28469
28486
  }
28470
28487
  };
28471
28488
  useRender(() => {
28472
- return vue.createVNode(VSheet, {
28489
+ return vue.createVNode("div", null, [slots.intervalEvent?.({
28490
+ height: calcHeight().height,
28491
+ margin: calcHeight().margin,
28492
+ eventClass: 'v-calendar-internal-event',
28493
+ event: props.event,
28494
+ interval: props.interval
28495
+ }) ?? vue.createVNode(VSheet, vue.mergeProps({
28473
28496
  "height": calcHeight().height,
28474
28497
  "density": "comfortable",
28475
28498
  "style": `margin-top: ${calcHeight().margin}`,
28476
28499
  "class": "v-calendar-internal-event",
28477
28500
  "color": props.event?.color ?? undefined,
28478
28501
  "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
28479
- }, {
28502
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28503
+ event: props.event,
28504
+ allDay: false,
28505
+ day: null,
28506
+ interval: props.interval,
28507
+ intervalDivisions: props.intervalDivisions,
28508
+ intervalDuration: props.intervalDuration,
28509
+ intervalHeight: props.intervalHeight
28510
+ }))), {
28480
28511
  default: () => [props.event?.first ? props.event?.title : '']
28481
- });
28512
+ })]);
28482
28513
  });
28483
28514
  return {};
28484
28515
  }
@@ -28514,6 +28545,7 @@
28514
28545
  }, 'VCalendarInterval');
28515
28546
  const VCalendarInterval = genericComponent()({
28516
28547
  name: 'VCalendarInterval',
28548
+ inheritAttrs: false,
28517
28549
  props: {
28518
28550
  index: {
28519
28551
  type: Number,
@@ -28523,6 +28555,7 @@
28523
28555
  },
28524
28556
  setup(props, _ref) {
28525
28557
  let {
28558
+ attrs,
28526
28559
  emit,
28527
28560
  slots
28528
28561
  } = _ref;
@@ -28548,45 +28581,74 @@
28548
28581
  return props.dayIndex === 0 ? vue.createVNode("div", {
28549
28582
  "class": "v-calendar-day__row-with-label",
28550
28583
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28551
- }, [vue.createVNode("div", {
28584
+ }, [vue.createVNode("div", vue.mergeProps({
28552
28585
  "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", {
28586
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28587
+ interval: interval.value
28588
+ }) ?? (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
28589
  "class": "v-calendar-day__row-hairline"
28560
- }, null), vue.createVNode("div", {
28590
+ }, null), vue.createVNode("div", vue.mergeProps({
28561
28591
  "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", {
28592
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28593
+ interval: interval.value
28594
+ }) ?? vue.createVNode("div", null, [interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28595
+ "event": event,
28596
+ "interval": interval.value,
28597
+ "intervalDivisions": props.intervalDivisions,
28598
+ "intervalDuration": props.intervalDuration,
28599
+ "intervalHeight": props.intervalHeight
28600
+ }, attrs), {
28601
+ ...(slots.intervalEvent ? {
28602
+ intervalEvent: _ref2 => {
28603
+ let {
28604
+ height,
28605
+ margin,
28606
+ eventClass,
28607
+ event,
28608
+ interval
28609
+ } = _ref2;
28610
+ return slots.intervalEvent?.({
28611
+ height,
28612
+ margin,
28613
+ eventClass,
28614
+ event,
28615
+ interval
28616
+ });
28617
+ }
28618
+ } : {})
28619
+ }))])])]) : vue.createVNode("div", {
28574
28620
  "class": "v-calendar-day__row-without-label",
28575
28621
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28576
- }, [vue.createVNode("div", {
28622
+ }, [vue.createVNode("div", vue.mergeProps({
28577
28623
  "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
- })])]);
28624
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28625
+ interval: interval.value
28626
+ }) ?? interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28627
+ "event": event,
28628
+ "interval": interval.value,
28629
+ "intervalDivisions": props.intervalDivisions,
28630
+ "intervalDuration": props.intervalDuration,
28631
+ "intervalHeight": props.intervalHeight
28632
+ }, attrs), {
28633
+ ...(slots.intervalEvent ? {
28634
+ intervalEvent: _ref3 => {
28635
+ let {
28636
+ height,
28637
+ margin,
28638
+ eventClass,
28639
+ event,
28640
+ interval
28641
+ } = _ref3;
28642
+ return slots.intervalEvent?.({
28643
+ height,
28644
+ margin,
28645
+ eventClass,
28646
+ event,
28647
+ interval
28648
+ });
28649
+ }
28650
+ } : {})
28651
+ }))])]);
28590
28652
  });
28591
28653
  return {
28592
28654
  interval
@@ -28594,6 +28656,8 @@
28594
28656
  }
28595
28657
  });
28596
28658
 
28659
+ // Types
28660
+
28597
28661
  const makeVCalendarDayProps = propsFactory({
28598
28662
  hideDayHeader: Boolean,
28599
28663
  intervals: {
@@ -28604,26 +28668,34 @@
28604
28668
  }, 'VCalendarDay');
28605
28669
  const VCalendarDay = genericComponent()({
28606
28670
  name: 'VCalendarDay',
28671
+ inheritAttrs: false,
28607
28672
  props: makeVCalendarDayProps(),
28608
- setup(props) {
28673
+ setup(props, _ref) {
28674
+ let {
28675
+ attrs,
28676
+ slots
28677
+ } = _ref;
28609
28678
  const adapter = useDate();
28610
28679
  const intervals = vue.computed(() => [...Array.from({
28611
28680
  length: props.intervals
28612
- }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28681
+ }, (v, i) => i).filter((_, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28613
28682
  useRender(() => {
28614
28683
  const calendarIntervalProps = VCalendarInterval.filterProps(props);
28615
28684
  return vue.createVNode("div", {
28616
28685
  "class": "v-calendar-day__container"
28617
- }, [!props.hideDayHeader && vue.createVNode("div", {
28618
- "key": "calender-week-name",
28686
+ }, [!props.hideDayHeader && vue.createVNode("div", vue.mergeProps({
28687
+ "key": "calendar-week-name",
28619
28688
  "class": "v-calendar-weekly__head-weekday"
28620
- }, [adapter.format(props.day.date, 'weekdayShort'), vue.createVNode("div", null, [vue.createVNode(VBtn, {
28689
+ }, 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), {
28690
+ "class": props.day?.isToday ? 'v-calendar-day-label__today' : undefined,
28621
28691
  "icon": true,
28622
28692
  "text": adapter.format(props.day.date, 'dayOfMonth'),
28623
- "variant": "text"
28624
- }, null)])]), intervals.value.map((_, index) => vue.createVNode(VCalendarInterval, vue.mergeProps({
28693
+ "variant": props.day?.isToday ? undefined : 'text'
28694
+ }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? vue.createVNode(VCalendarInterval, vue.mergeProps({
28625
28695
  "index": index
28626
- }, calendarIntervalProps), null))]);
28696
+ }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
28697
+ ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
28698
+ }))]);
28627
28699
  });
28628
28700
  return {
28629
28701
  intervals
@@ -28662,7 +28734,8 @@
28662
28734
  },
28663
28735
  setup(props, _ref) {
28664
28736
  let {
28665
- emit
28737
+ emit,
28738
+ slots
28666
28739
  } = _ref;
28667
28740
  const {
28668
28741
  t
@@ -28696,7 +28769,9 @@
28696
28769
  "onClick": next
28697
28770
  }, null), vue.createVNode("div", {
28698
28771
  "class": "v-calendar-header__title"
28699
- }, [props.title])]));
28772
+ }, [slots.title?.({
28773
+ title: props.title
28774
+ }) ?? vue.createVNode("span", null, [props.title])])]));
28700
28775
  return {};
28701
28776
  }
28702
28777
  });
@@ -28708,14 +28783,24 @@
28708
28783
  }, 'VCalendarEvent');
28709
28784
  const VCalendarEvent = genericComponent()({
28710
28785
  name: 'VCalendarEvent',
28786
+ inheritAttrs: false,
28711
28787
  props: makeVCalendarEventProps(),
28712
- setup(props) {
28713
- useRender(() => vue.createVNode(VChip, {
28788
+ setup(props, _ref) {
28789
+ let {
28790
+ attrs,
28791
+ emit,
28792
+ slots
28793
+ } = _ref;
28794
+ useRender(() => vue.createVNode(VChip, vue.mergeProps({
28714
28795
  "color": props.allDay ? 'primary' : undefined,
28715
28796
  "density": "comfortable",
28716
28797
  "label": props.allDay,
28717
28798
  "width": "100%"
28718
- }, {
28799
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28800
+ allDay: props.allDay,
28801
+ day: props.day,
28802
+ event: props.event
28803
+ }))), {
28719
28804
  default: () => [vue.createVNode(VBadge, {
28720
28805
  "inline": true,
28721
28806
  "dot": true,
@@ -28726,87 +28811,95 @@
28726
28811
  }
28727
28812
  });
28728
28813
 
28814
+ // Types
28815
+
28729
28816
  const makeVCalendarMonthDayProps = propsFactory({
28730
28817
  active: Boolean,
28731
28818
  color: String,
28732
- day: Object,
28819
+ day: {
28820
+ type: Object
28821
+ },
28733
28822
  disabled: Boolean,
28734
28823
  events: Array,
28735
28824
  title: [Number, String]
28736
28825
  }, 'VCalendarMonthDay');
28737
28826
  const VCalendarMonthDay = genericComponent()({
28738
28827
  name: 'VCalendarMonthDay',
28828
+ inheritAttrs: false,
28739
28829
  props: makeVCalendarMonthDayProps(),
28740
28830
  setup(props, _ref) {
28741
28831
  let {
28742
- emit,
28832
+ attrs,
28743
28833
  slots
28744
28834
  } = _ref;
28745
28835
  useRender(() => {
28746
- const hasTitle = !!(props.title || slots.title?.({
28747
- title: props.title
28748
- }));
28749
- return vue.createVNode("div", {
28836
+ return vue.createVNode("div", vue.mergeProps({
28750
28837
  "class": ['v-calendar-month__day']
28751
- }, [!props.day?.isHidden && hasTitle && vue.createVNode("div", {
28838
+ }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? vue.createVNode("div", {
28752
28839
  "key": "title",
28753
28840
  "class": "v-calendar-weekly__day-label"
28754
- }, [slots.title?.({
28841
+ }, [slots.dayTitle?.({
28755
28842
  title: props.title
28756
- }) ?? vue.createVNode(VBtn, {
28843
+ }) ?? vue.createVNode(VBtn, vue.mergeProps({
28757
28844
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
28758
28845
  "color": props.color,
28759
28846
  "disabled": props.disabled,
28760
28847
  "icon": true,
28761
28848
  "size": "x-small",
28762
- "variant": props.day?.isToday ? undefined : 'flat'
28763
- }, {
28764
- default: () => [props.title]
28765
- })]), !props.day?.isHidden && vue.createVNode("div", {
28849
+ "variant": props.day?.isToday ? undefined : 'flat',
28850
+ "text": `${props.title}`
28851
+ }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? vue.createVNode("div", {
28766
28852
  "key": "content",
28767
28853
  "class": "v-calendar-weekly__day-content"
28768
- }, [slots.content?.() ?? vue.createVNode("div", null, [vue.createVNode("div", {
28854
+ }, [slots.dayBody?.({
28855
+ day: props.day,
28856
+ events: props.events
28857
+ }) ?? vue.createVNode("div", null, [vue.createVNode("div", {
28769
28858
  "class": "v-calendar-weekly__day-alldayevents-container"
28770
- }, [props.events?.filter(event => event.allDay).map(event => slots.event ? slots.event({
28859
+ }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28771
28860
  day: props.day,
28772
28861
  allDay: true,
28773
28862
  event
28774
- }) : vue.createVNode(VCalendarEvent, {
28863
+ }) : vue.createVNode(VCalendarEvent, vue.mergeProps({
28775
28864
  "day": props.day,
28776
28865
  "event": event,
28777
28866
  "allDay": true
28778
- }, null))]), vue.createVNode("div", {
28867
+ }, attrs), null))]), vue.createVNode("div", {
28779
28868
  "class": "v-calendar-weekly__day-events-container"
28780
- }, [props.events?.filter(event => !event.allDay).map(event => slots.event ? slots.event({
28869
+ }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28781
28870
  day: props.day,
28782
28871
  event,
28783
28872
  allDay: false
28784
- }) : vue.createVNode(VCalendarEvent, {
28873
+ }) : vue.createVNode(VCalendarEvent, vue.mergeProps({
28785
28874
  "day": props.day,
28786
28875
  "event": event
28787
- }, null))])])]), !props.day?.isHidden && slots.default?.()]);
28876
+ }, attrs), null))])])]) : undefined]);
28788
28877
  });
28789
28878
  return {};
28790
28879
  }
28791
28880
  });
28792
28881
 
28882
+ // Types
28883
+
28793
28884
  const makeVCalendarProps = propsFactory({
28794
28885
  hideHeader: Boolean,
28795
28886
  hideWeekNumber: Boolean,
28796
28887
  ...makeCalendarProps(),
28797
28888
  ...makeVCalendarDayProps(),
28798
28889
  ...makeVCalendarHeaderProps()
28799
- }, 'VCalender');
28890
+ }, 'VCalendar');
28800
28891
  const VCalendar = genericComponent()({
28801
28892
  name: 'VCalendar',
28802
28893
  props: makeVCalendarProps(),
28803
28894
  emits: {
28804
28895
  next: null,
28805
28896
  prev: null,
28897
+ today: null,
28806
28898
  'update:modelValue': null
28807
28899
  },
28808
28900
  setup(props, _ref) {
28809
28901
  let {
28902
+ attrs,
28810
28903
  emit,
28811
28904
  slots
28812
28905
  } = _ref;
@@ -28824,27 +28917,33 @@
28824
28917
  function onClickNext() {
28825
28918
  if (props.viewMode === 'month') {
28826
28919
  model.value = [adapter.addMonths(displayValue.value, 1)];
28827
- }
28828
- if (props.viewMode === 'week') {
28920
+ } else if (props.viewMode === 'week') {
28829
28921
  model.value = [adapter.addDays(displayValue.value, 7)];
28830
- }
28831
- if (props.viewMode === 'day') {
28922
+ } else if (props.viewMode === 'day') {
28832
28923
  model.value = [adapter.addDays(displayValue.value, 1)];
28833
28924
  }
28925
+ vue.nextTick(() => {
28926
+ emit('next', model.value[0]);
28927
+ });
28834
28928
  }
28835
28929
  function onClickPrev() {
28836
28930
  if (props.viewMode === 'month') {
28837
28931
  model.value = [adapter.addMonths(displayValue.value, -1)];
28838
- }
28839
- if (props.viewMode === 'week') {
28932
+ } else if (props.viewMode === 'week') {
28840
28933
  model.value = [adapter.addDays(displayValue.value, -7)];
28841
- }
28842
- if (props.viewMode === 'day') {
28934
+ } else if (props.viewMode === 'day') {
28843
28935
  model.value = [adapter.addDays(displayValue.value, -1)];
28844
28936
  }
28937
+ vue.nextTick(() => {
28938
+ emit('prev', model.value[0]);
28939
+ });
28845
28940
  }
28846
28941
  function onClickToday() {
28847
- model.value = [adapter.date()];
28942
+ const date = adapter.date();
28943
+ model.value = [date];
28944
+ vue.nextTick(() => {
28945
+ emit('today', model.value[0]);
28946
+ });
28848
28947
  }
28849
28948
  const title = vue.computed(() => {
28850
28949
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -28858,20 +28957,25 @@
28858
28957
  'v-calendar-weekly': props.viewMode === 'week',
28859
28958
  'v-calendar-day': props.viewMode === 'day'
28860
28959
  }]
28861
- }, [vue.createVNode("div", null, [!props.hideHeader && (!slots.header ? vue.createVNode(VCalendarHeader, vue.mergeProps({
28960
+ }, [vue.createVNode("div", null, [!props.hideHeader && (slots.header?.({
28961
+ title: title.value,
28962
+ clickNext: onClickNext,
28963
+ clickPrev: onClickPrev,
28964
+ clickToday: onClickToday
28965
+ }) ?? vue.createVNode(VCalendarHeader, vue.mergeProps({
28862
28966
  "key": "calendar-header"
28863
28967
  }, calendarHeaderProps, {
28864
28968
  "title": title.value,
28865
28969
  "onClick:next": onClickNext,
28866
28970
  "onClick:prev": onClickPrev,
28867
28971
  "onClick:toToday": onClickToday
28868
- }), null) : slots.header({
28869
- title: title.value
28972
+ }), {
28973
+ title: slots.title
28870
28974
  }))]), vue.createVNode("div", {
28871
28975
  "class": ['v-calendar__container', `days__${weekDays.value.length}`]
28872
28976
  }, [props.viewMode === 'month' && !props.hideDayHeader && vue.createVNode("div", {
28873
28977
  "class": ['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
28874
- "key": "calenderWeeklyHead"
28978
+ "key": "calendarWeeklyHead"
28875
28979
  }, [!props.hideWeekNumber ? vue.createVNode("div", {
28876
28980
  "key": "weekNumber0",
28877
28981
  "class": "v-calendar-weekly__head-weeknumber"
@@ -28880,24 +28984,39 @@
28880
28984
  }, [dayNames[weekday]]))]), props.viewMode === 'month' && vue.createVNode("div", {
28881
28985
  "key": "VCalendarMonth",
28882
28986
  "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", {
28987
+ }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? vue.createVNode("div", vue.mergeProps({
28884
28988
  "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,
28989
+ }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
28990
+ weekNumber: weekNumbers.value[wi],
28991
+ week
28992
+ }))), [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, vue.mergeProps({
28993
+ "key": day.date.getTime()
28994
+ }, calendarDayProps, {
28887
28995
  "day": day,
28888
- "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
28996
+ "title": adapter.format(day.date, 'dayOfMonth'),
28889
28997
  "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, {
28998
+ }, attrs), {
28999
+ ...pick(slots, ['day-body', 'day-event', 'day-title'])
29000
+ }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => slots['day-interval'] ? slots['day-interval']?.({
29001
+ ...calendarDayProps,
29002
+ day,
29003
+ dayIndex: i,
29004
+ events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
29005
+ }) : vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
28893
29006
  "day": day,
28894
29007
  "dayIndex": i,
28895
29008
  "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],
29009
+ }, attrs), {
29010
+ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29011
+ })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29012
+ day: genDays([displayValue.value], adapter.date())[0],
29013
+ dayIndex: 0,
29014
+ 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))
29015
+ }) : vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
29016
+ "day": genDays([model.value[0]], adapter.date())[0],
28898
29017
  "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)])]);
29018
+ "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))
29019
+ }, attrs), null))])]);
28901
29020
  });
28902
29021
  return {
28903
29022
  daysInMonth,
@@ -29446,10 +29565,7 @@
29446
29565
  hideOverlay: Boolean,
29447
29566
  icon: [String, Function, Object],
29448
29567
  iconColor: String,
29449
- iconSize: {
29450
- type: [Number, String],
29451
- default: 'default'
29452
- },
29568
+ iconSize: [Number, String],
29453
29569
  iconSizes: {
29454
29570
  type: Array,
29455
29571
  default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
@@ -29510,7 +29626,7 @@
29510
29626
  colorClasses,
29511
29627
  colorStyles,
29512
29628
  variantClasses
29513
- } = useVariant(vue.toRef(() => ({
29629
+ } = useVariant(() => ({
29514
29630
  color: (() => {
29515
29631
  if (props.disabled) return undefined;
29516
29632
  if (!isActive.value) return props.color;
@@ -29525,7 +29641,7 @@
29525
29641
  if (isActive.value) return props.activeVariant ?? props.variant;
29526
29642
  return props.baseVariant ?? props.variant;
29527
29643
  })()
29528
- })));
29644
+ }));
29529
29645
  const btnSizeMap = new Map(props.sizes);
29530
29646
  const iconSizeMap = new Map(props.iconSizes);
29531
29647
  function onClick() {
@@ -29534,13 +29650,14 @@
29534
29650
  }
29535
29651
  useRender(() => {
29536
29652
  const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
29537
- const size = props.size;
29538
- const hasNamedSize = btnSizeMap.has(size);
29539
- const btnSize = hasNamedSize ? btnSizeMap.get(size) : size;
29653
+ const _btnSize = props.size;
29654
+ const hasNamedSize = btnSizeMap.has(_btnSize);
29655
+ const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
29540
29656
  const btnHeight = props.height ?? btnSize;
29541
29657
  const btnWidth = props.width ?? btnSize;
29542
- const _iconSize = hasNamedSize ? size : props.iconSize ?? size;
29543
- const iconSize = iconSizeMap.get(_iconSize) ?? _iconSize;
29658
+ const _iconSize = props.iconSize;
29659
+ const hasNamedIconSize = iconSizeMap.has(_iconSize);
29660
+ const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
29544
29661
  const iconProps = {
29545
29662
  icon,
29546
29663
  size: iconSize,
@@ -30021,11 +30138,11 @@
30021
30138
  const {
30022
30139
  textColorClasses,
30023
30140
  textColorStyles
30024
- } = useTextColor(vue.toRef(props, 'color'));
30141
+ } = useTextColor(() => props.color);
30025
30142
  const {
30026
30143
  backgroundColorClasses,
30027
30144
  backgroundColorStyles
30028
- } = useBackgroundColor(vue.toRef(props, 'color'));
30145
+ } = useBackgroundColor(() => props.color);
30029
30146
  const count = vue.computed(() => props.max - props.min + 1);
30030
30147
  const roundCount = vue.computed(() => props.double ? count.value / 2 : count.value);
30031
30148
  const degreesPerUnit = vue.computed(() => 360 / roundCount.value);
@@ -30885,9 +31002,9 @@
30885
31002
  const {
30886
31003
  items
30887
31004
  } = useListItems(props);
30888
- const activeColor = vue.toRef(props, 'activeColor');
30889
- const baseColor = vue.toRef(props, 'baseColor');
30890
- const color = vue.toRef(props, 'color');
31005
+ const activeColor = vue.toRef(() => props.activeColor);
31006
+ const baseColor = vue.toRef(() => props.baseColor);
31007
+ const color = vue.toRef(() => props.color);
30891
31008
  const activated = useProxiedModel(props, 'activated');
30892
31009
  const model = useProxiedModel(props, 'modelValue');
30893
31010
  const _selected = useProxiedModel(props, 'selected', props.modelValue);
@@ -30901,7 +31018,7 @@
30901
31018
  const vListRef = vue.ref();
30902
31019
  const opened = vue.computed(() => props.openAll ? openAll(items.value) : props.opened);
30903
31020
  const flatItems = vue.computed(() => flatten(items.value));
30904
- const search = vue.toRef(props, 'search');
31021
+ const search = vue.toRef(() => props.search);
30905
31022
  const {
30906
31023
  filteredItems
30907
31024
  } = useFilter(props, flatItems, search);
@@ -30944,18 +31061,18 @@
30944
31061
  activeColor,
30945
31062
  baseColor,
30946
31063
  color,
30947
- collapseIcon: vue.toRef(props, 'collapseIcon'),
30948
- expandIcon: vue.toRef(props, 'expandIcon')
31064
+ collapseIcon: vue.toRef(() => props.collapseIcon),
31065
+ expandIcon: vue.toRef(() => props.expandIcon)
30949
31066
  },
30950
31067
  VTreeviewItem: {
30951
- activeClass: vue.toRef(props, 'activeClass'),
31068
+ activeClass: vue.toRef(() => props.activeClass),
30952
31069
  activeColor,
30953
31070
  baseColor,
30954
31071
  color,
30955
- density: vue.toRef(props, 'density'),
30956
- disabled: vue.toRef(props, 'disabled'),
30957
- lines: vue.toRef(props, 'lines'),
30958
- variant: vue.toRef(props, 'variant')
31072
+ density: vue.toRef(() => props.density),
31073
+ disabled: vue.toRef(() => props.disabled),
31074
+ lines: vue.toRef(() => props.lines),
31075
+ variant: vue.toRef(() => props.variant)
30959
31076
  }
30960
31077
  });
30961
31078
  useRender(() => {
@@ -31495,7 +31612,7 @@
31495
31612
  };
31496
31613
  });
31497
31614
  }
31498
- const version$1 = "3.8.2-master.2025-04-17";
31615
+ const version$1 = "3.8.2-master.2025-04-22";
31499
31616
  createVuetify$1.version = version$1;
31500
31617
 
31501
31618
  // Vue's inject() can only be used in setup
@@ -31793,7 +31910,7 @@
31793
31910
 
31794
31911
  /* eslint-disable local-rules/sort-imports */
31795
31912
 
31796
- const version = "3.8.2-master.2025-04-17";
31913
+ const version = "3.8.2-master.2025-04-22";
31797
31914
 
31798
31915
  /* eslint-disable local-rules/sort-imports */
31799
31916