vuetify 3.8.1 → 3.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/dist/json/attributes.json +2066 -2066
  2. package/dist/json/importMap-labs.json +26 -26
  3. package/dist/json/importMap.json +164 -164
  4. package/dist/json/web-types.json +4116 -3862
  5. package/dist/vuetify-labs.cjs +784 -697
  6. package/dist/vuetify-labs.css +3174 -3162
  7. package/dist/vuetify-labs.d.ts +2103 -1144
  8. package/dist/vuetify-labs.esm.js +785 -698
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +784 -697
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.cjs +565 -590
  13. package/dist/vuetify.cjs.map +1 -1
  14. package/dist/vuetify.css +2963 -2960
  15. package/dist/vuetify.d.ts +190 -169
  16. package/dist/vuetify.esm.js +566 -591
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +565 -590
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +1264 -1235
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/blueprints/md3.js +18 -5
  24. package/lib/blueprints/md3.js.map +1 -1
  25. package/lib/components/VAlert/VAlert.js +8 -9
  26. package/lib/components/VAlert/VAlert.js.map +1 -1
  27. package/lib/components/VAppBar/VAppBar.js +4 -4
  28. package/lib/components/VAppBar/VAppBar.js.map +1 -1
  29. package/lib/components/VAutocomplete/VAutocomplete.js +1 -2
  30. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  31. package/lib/components/VBadge/VBadge.js +2 -3
  32. package/lib/components/VBadge/VBadge.js.map +1 -1
  33. package/lib/components/VBanner/VBanner.js +3 -3
  34. package/lib/components/VBanner/VBanner.js.map +1 -1
  35. package/lib/components/VBottomNavigation/VBottomNavigation.js +8 -8
  36. package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
  37. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +6 -6
  38. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  39. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +1 -2
  40. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  41. package/lib/components/VBtn/VBtn.js +3 -3
  42. package/lib/components/VBtn/VBtn.js.map +1 -1
  43. package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
  44. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  45. package/lib/components/VCard/VCard.js +7 -8
  46. package/lib/components/VCard/VCard.js.map +1 -1
  47. package/lib/components/VCheckbox/VCheckbox.js +2 -3
  48. package/lib/components/VCheckbox/VCheckbox.js.map +1 -1
  49. package/lib/components/VCheckbox/VCheckboxBtn.js +3 -3
  50. package/lib/components/VCheckbox/VCheckboxBtn.js.map +1 -1
  51. package/lib/components/VChip/VChip.js +8 -9
  52. package/lib/components/VChip/VChip.js.map +1 -1
  53. package/lib/components/VChipGroup/VChipGroup.js +5 -5
  54. package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
  55. package/lib/components/VCode/VCode.css +3 -0
  56. package/lib/components/VCode/VCode.sass +3 -0
  57. package/lib/components/VCombobox/VCombobox.js +3 -4
  58. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  59. package/lib/components/VCounter/VCounter.js +2 -2
  60. package/lib/components/VCounter/VCounter.js.map +1 -1
  61. package/lib/components/VDataIterator/VDataIterator.js +2 -2
  62. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  63. package/lib/components/VDataTable/VDataTable.css +1 -1
  64. package/lib/components/VDataTable/VDataTable.js +7 -7
  65. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  66. package/lib/components/VDataTable/VDataTable.sass +1 -1
  67. package/lib/components/VDataTable/VDataTableHeaders.js +1 -1
  68. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  69. package/lib/components/VDataTable/VDataTableServer.js +7 -7
  70. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  71. package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
  72. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  73. package/lib/components/VDataTable/composables/expand.d.ts +1 -1
  74. package/lib/components/VDataTable/composables/expand.js +1 -1
  75. package/lib/components/VDataTable/composables/expand.js.map +1 -1
  76. package/lib/components/VDataTable/composables/options.js +8 -8
  77. package/lib/components/VDataTable/composables/options.js.map +1 -1
  78. package/lib/components/VDataTable/composables/select.d.ts +2 -2
  79. package/lib/components/VDataTable/composables/select.js +2 -2
  80. package/lib/components/VDataTable/composables/select.js.map +1 -1
  81. package/lib/components/VDataTable/composables/sort.d.ts +2 -2
  82. package/lib/components/VDataTable/composables/sort.js +2 -2
  83. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  84. package/lib/components/VDatePicker/VDatePicker.d.ts +7 -7
  85. package/lib/components/VDatePicker/VDatePicker.js +4 -4
  86. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  87. package/lib/components/VDatePicker/VDatePickerHeader.js +1 -1
  88. package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
  89. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +7 -7
  90. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  91. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  92. package/lib/components/VDialog/VDialog.d.ts +9 -9
  93. package/lib/components/VDivider/VDivider.js +2 -2
  94. package/lib/components/VDivider/VDivider.js.map +1 -1
  95. package/lib/components/VEmptyState/VEmptyState.js +1 -2
  96. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  97. package/lib/components/VExpansionPanel/VExpansionPanel.js +3 -3
  98. package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
  99. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +3 -3
  100. package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
  101. package/lib/components/VExpansionPanel/VExpansionPanels.js +14 -14
  102. package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
  103. package/lib/components/VFab/VFab.js +2 -2
  104. package/lib/components/VFab/VFab.js.map +1 -1
  105. package/lib/components/VField/VField.js +5 -5
  106. package/lib/components/VField/VField.js.map +1 -1
  107. package/lib/components/VFileInput/VFileInput.js +2 -2
  108. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  109. package/lib/components/VFooter/VFooter.js +4 -4
  110. package/lib/components/VFooter/VFooter.js.map +1 -1
  111. package/lib/components/VForm/VForm.d.ts +40 -40
  112. package/lib/components/VIcon/VIcon.js +4 -4
  113. package/lib/components/VIcon/VIcon.js.map +1 -1
  114. package/lib/components/VImg/VImg.js +2 -2
  115. package/lib/components/VImg/VImg.js.map +1 -1
  116. package/lib/components/VInput/VInput.js +3 -3
  117. package/lib/components/VInput/VInput.js.map +1 -1
  118. package/lib/components/VLayout/VLayoutItem.js +5 -5
  119. package/lib/components/VLayout/VLayoutItem.js.map +1 -1
  120. package/lib/components/VList/VList.js +14 -14
  121. package/lib/components/VList/VList.js.map +1 -1
  122. package/lib/components/VList/VListGroup.js +2 -2
  123. package/lib/components/VList/VListGroup.js.map +1 -1
  124. package/lib/components/VList/VListItem.d.ts +3 -3
  125. package/lib/components/VList/VListItem.js +6 -6
  126. package/lib/components/VList/VListItem.js.map +1 -1
  127. package/lib/components/VList/VListSubheader.js +1 -2
  128. package/lib/components/VList/VListSubheader.js.map +1 -1
  129. package/lib/components/VMenu/VMenu.d.ts +15 -15
  130. package/lib/components/VMenu/VMenu.js +2 -2
  131. package/lib/components/VMenu/VMenu.js.map +1 -1
  132. package/lib/components/VMessages/VMessages.js +1 -1
  133. package/lib/components/VMessages/VMessages.js.map +1 -1
  134. package/lib/components/VNavigationDrawer/VNavigationDrawer.js +6 -6
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
  136. package/lib/components/VNumberInput/VNumberInput.js +11 -11
  137. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  138. package/lib/components/VOtpInput/VOtpInput.js +7 -7
  139. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  140. package/lib/components/VOverlay/VOverlay.d.ts +3 -3
  141. package/lib/components/VOverlay/VOverlay.js +4 -4
  142. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  143. package/lib/components/VOverlay/locationStrategies.d.ts +4 -0
  144. package/lib/components/VOverlay/locationStrategies.js +33 -4
  145. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  146. package/lib/components/VPagination/VPagination.js +7 -7
  147. package/lib/components/VPagination/VPagination.js.map +1 -1
  148. package/lib/components/VProgressCircular/VProgressCircular.js +9 -9
  149. package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
  150. package/lib/components/VProgressLinear/VProgressLinear.js +4 -4
  151. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  152. package/lib/components/VSelect/VSelect.js +3 -2
  153. package/lib/components/VSelect/VSelect.js.map +1 -1
  154. package/lib/components/VSelectionControl/VSelectionControl.d.ts +1 -1
  155. package/lib/components/VSelectionControl/VSelectionControl.js +7 -7
  156. package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
  157. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +15 -15
  158. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
  159. package/lib/components/VSheet/VSheet.js +1 -2
  160. package/lib/components/VSheet/VSheet.js.map +1 -1
  161. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +2 -2
  162. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  163. package/lib/components/VSlider/slider.js +10 -10
  164. package/lib/components/VSlider/slider.js.map +1 -1
  165. package/lib/components/VSnackbar/VSnackbar.d.ts +9 -9
  166. package/lib/components/VSparkline/VSparkline.js +2 -2
  167. package/lib/components/VSparkline/VSparkline.js.map +1 -1
  168. package/lib/components/VSwitch/VSwitch.js +3 -3
  169. package/lib/components/VSwitch/VSwitch.js.map +1 -1
  170. package/lib/components/VSystemBar/VSystemBar.js +2 -2
  171. package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
  172. package/lib/components/VTabs/VTab.d.ts +3 -3
  173. package/lib/components/VTabs/VTab.js +1 -1
  174. package/lib/components/VTabs/VTab.js.map +1 -1
  175. package/lib/components/VTabs/VTabs.js +7 -7
  176. package/lib/components/VTabs/VTabs.js.map +1 -1
  177. package/lib/components/VTimeline/VTimeline.js +9 -9
  178. package/lib/components/VTimeline/VTimeline.js.map +1 -1
  179. package/lib/components/VTimeline/VTimelineDivider.js +2 -3
  180. package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
  181. package/lib/components/VToolbar/VToolbar.js +2 -2
  182. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  183. package/lib/components/VToolbar/VToolbarItems.js +2 -2
  184. package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
  185. package/lib/components/VTooltip/VTooltip.d.ts +9 -9
  186. package/lib/components/VTooltip/VTooltip.js +3 -3
  187. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  188. package/lib/components/VVirtualScroll/VVirtualScroll.js +1 -1
  189. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  190. package/lib/components/VWindow/VWindow.js +3 -3
  191. package/lib/components/VWindow/VWindow.js.map +1 -1
  192. package/lib/components/transitions/dialog-transition.js +11 -2
  193. package/lib/components/transitions/dialog-transition.js.map +1 -1
  194. package/lib/composables/border.d.ts +1 -1
  195. package/lib/composables/border.js +5 -8
  196. package/lib/composables/border.js.map +1 -1
  197. package/lib/composables/calendar.d.ts +23 -56
  198. package/lib/composables/calendar.js +16 -18
  199. package/lib/composables/calendar.js.map +1 -1
  200. package/lib/composables/color.d.ts +8 -10
  201. package/lib/composables/color.js +21 -22
  202. package/lib/composables/color.js.map +1 -1
  203. package/lib/composables/date/DateAdapter.d.ts +1 -0
  204. package/lib/composables/date/DateAdapter.js.map +1 -1
  205. package/lib/composables/date/adapters/vuetify.d.ts +1 -0
  206. package/lib/composables/date/adapters/vuetify.js +101 -160
  207. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  208. package/lib/composables/date/date.d.ts +1 -1
  209. package/lib/composables/date/date.js +0 -20
  210. package/lib/composables/date/date.js.map +1 -1
  211. package/lib/composables/defaults.js +6 -3
  212. package/lib/composables/defaults.js.map +1 -1
  213. package/lib/composables/density.d.ts +1 -1
  214. package/lib/composables/density.js +2 -2
  215. package/lib/composables/density.js.map +1 -1
  216. package/lib/composables/display.d.ts +4 -2
  217. package/lib/composables/display.js +2 -2
  218. package/lib/composables/display.js.map +1 -1
  219. package/lib/composables/elevation.js +4 -6
  220. package/lib/composables/elevation.js.map +1 -1
  221. package/lib/composables/filter.js +2 -1
  222. package/lib/composables/filter.js.map +1 -1
  223. package/lib/composables/focus.d.ts +4 -2
  224. package/lib/composables/focus.js +2 -2
  225. package/lib/composables/focus.js.map +1 -1
  226. package/lib/composables/form.d.ts +7 -7
  227. package/lib/composables/form.js +3 -3
  228. package/lib/composables/form.js.map +1 -1
  229. package/lib/composables/goto.js +2 -2
  230. package/lib/composables/goto.js.map +1 -1
  231. package/lib/composables/group.d.ts +3 -3
  232. package/lib/composables/group.js +4 -4
  233. package/lib/composables/group.js.map +1 -1
  234. package/lib/composables/icons.d.ts +2 -2
  235. package/lib/composables/icons.js +2 -2
  236. package/lib/composables/icons.js.map +1 -1
  237. package/lib/composables/layout.d.ts +10 -4
  238. package/lib/composables/layout.js +4 -4
  239. package/lib/composables/layout.js.map +1 -1
  240. package/lib/composables/lazy.d.ts +1 -1
  241. package/lib/composables/lazy.js +2 -2
  242. package/lib/composables/lazy.js.map +1 -1
  243. package/lib/composables/loader.d.ts +4 -2
  244. package/lib/composables/loader.js +2 -2
  245. package/lib/composables/loader.js.map +1 -1
  246. package/lib/composables/locale.js +3 -3
  247. package/lib/composables/locale.js.map +1 -1
  248. package/lib/composables/nested/nested.d.ts +3 -3
  249. package/lib/composables/nested/nested.js +4 -4
  250. package/lib/composables/nested/nested.js.map +1 -1
  251. package/lib/composables/position.d.ts +1 -1
  252. package/lib/composables/position.js +2 -2
  253. package/lib/composables/position.js.map +1 -1
  254. package/lib/composables/router.d.ts +3 -3
  255. package/lib/composables/router.js +8 -8
  256. package/lib/composables/router.js.map +1 -1
  257. package/lib/composables/size.d.ts +8 -5
  258. package/lib/composables/size.js +6 -5
  259. package/lib/composables/size.js.map +1 -1
  260. package/lib/composables/ssrBoot.d.ts +4 -2
  261. package/lib/composables/ssrBoot.js +2 -2
  262. package/lib/composables/ssrBoot.js.map +1 -1
  263. package/lib/composables/stack.d.ts +7 -5
  264. package/lib/composables/stack.js +5 -5
  265. package/lib/composables/stack.js.map +1 -1
  266. package/lib/composables/theme.js +9 -9
  267. package/lib/composables/theme.js.map +1 -1
  268. package/lib/composables/variant.d.ts +5 -6
  269. package/lib/composables/variant.js +6 -6
  270. package/lib/composables/variant.js.map +1 -1
  271. package/lib/entry-bundler.d.ts +1 -0
  272. package/lib/entry-bundler.js +1 -1
  273. package/lib/framework.d.ts +80 -71
  274. package/lib/framework.js +1 -1
  275. package/lib/labs/VCalendar/VCalendar.d.ts +607 -218
  276. package/lib/labs/VCalendar/VCalendar.js +55 -27
  277. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  278. package/lib/labs/VCalendar/VCalendarDay.css +9 -0
  279. package/lib/labs/VCalendar/VCalendarDay.d.ts +329 -17
  280. package/lib/labs/VCalendar/VCalendarDay.js +18 -10
  281. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  282. package/lib/labs/VCalendar/VCalendarDay.sass +8 -0
  283. package/lib/labs/VCalendar/VCalendarEvent.js +15 -5
  284. package/lib/labs/VCalendar/VCalendarEvent.js.map +1 -1
  285. package/lib/labs/VCalendar/VCalendarHeader.d.ts +44 -17
  286. package/lib/labs/VCalendar/VCalendarHeader.js +5 -2
  287. package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
  288. package/lib/labs/VCalendar/VCalendarInterval.d.ts +171 -17
  289. package/lib/labs/VCalendar/VCalendarInterval.js +56 -19
  290. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  291. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +92 -17
  292. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +30 -10
  293. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  294. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +122 -88
  295. package/lib/labs/VCalendar/VCalendarMonthDay.js +24 -22
  296. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  297. package/lib/labs/VDateInput/VDateInput.d.ts +7 -7
  298. package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
  299. package/lib/labs/VIconBtn/VIconBtn.js +10 -12
  300. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  301. package/lib/labs/VPicker/VPicker.js +1 -2
  302. package/lib/labs/VPicker/VPicker.js.map +1 -1
  303. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -3
  304. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  305. package/lib/labs/VTreeview/VTreeview.js +11 -11
  306. package/lib/labs/VTreeview/VTreeview.js.map +1 -1
  307. package/lib/labs/entry-bundler.d.ts +1 -0
  308. package/lib/util/box.js.map +1 -1
  309. package/lib/util/helpers.d.ts +7 -2
  310. package/lib/util/helpers.js +16 -5
  311. package/lib/util/helpers.js.map +1 -1
  312. package/package.json +49 -47
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.1
2
+ * Vuetify v3.8.3
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -416,6 +416,9 @@
416
416
  _classPrivateFieldInitSpec(this, _pointer, 0);
417
417
  this.size = size;
418
418
  }
419
+ get isFull() {
420
+ return _classPrivateFieldGet(_arr, this).length === this.size;
421
+ }
419
422
  push(val) {
420
423
  _classPrivateFieldGet(_arr, this)[_classPrivateFieldGet(_pointer, this)] = val;
421
424
  _classPrivateFieldSet(_pointer, this, (_classPrivateFieldGet(_pointer, this) + 1) % this.size);
@@ -423,6 +426,10 @@
423
426
  values() {
424
427
  return _classPrivateFieldGet(_arr, this).slice(_classPrivateFieldGet(_pointer, this)).concat(_classPrivateFieldGet(_arr, this).slice(0, _classPrivateFieldGet(_pointer, this)));
425
428
  }
429
+ clear() {
430
+ _classPrivateFieldGet(_arr, this).length = 0;
431
+ _classPrivateFieldSet(_pointer, this, 0);
432
+ }
426
433
  }
427
434
  function getEventCoordinates(e) {
428
435
  if ('touches' in e) {
@@ -446,15 +453,19 @@
446
453
 
447
454
  function destructComputed(getter) {
448
455
  const refs = vue.reactive({});
449
- const base = vue.computed(getter);
450
456
  vue.watchEffect(() => {
451
- for (const key in base.value) {
452
- refs[key] = base.value[key];
457
+ const base = getter();
458
+ for (const key in base) {
459
+ refs[key] = base[key];
453
460
  }
454
461
  }, {
455
462
  flush: 'sync'
456
463
  });
457
- return vue.toRefs(refs);
464
+ const obj = {};
465
+ for (const key in refs) {
466
+ obj[key] = vue.toRef(() => refs[key]);
467
+ }
468
+ return obj;
458
469
  }
459
470
 
460
471
  /** Array.includes but value can be any type */
@@ -1338,7 +1349,7 @@
1338
1349
  return newDefaults;
1339
1350
  }
1340
1351
  function propIsDefined(vnode, prop) {
1341
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1352
+ return vnode.props && (typeof vnode.props[prop] !== 'undefined' || typeof vnode.props[toKebabCase(prop)] !== 'undefined');
1342
1353
  }
1343
1354
  function internalUseDefaults() {
1344
1355
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1355,9 +1366,12 @@
1355
1366
  const propValue = Reflect.get(target, prop);
1356
1367
  if (prop === 'class' || prop === 'style') {
1357
1368
  return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1358
- } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1359
- return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;
1360
1369
  }
1370
+ if (propIsDefined(vm.vnode, prop)) return propValue;
1371
+ const _componentDefault = componentDefaults.value?.[prop];
1372
+ if (_componentDefault !== undefined) return _componentDefault;
1373
+ const _globalDefault = defaults.value?.global?.[prop];
1374
+ if (_globalDefault !== undefined) return _globalDefault;
1361
1375
  return propValue;
1362
1376
  }
1363
1377
  });
@@ -1745,7 +1759,7 @@
1745
1759
  const mainRect = vue.computed(() => {
1746
1760
  return layers.value[layers.value.length - 1].layer;
1747
1761
  });
1748
- const mainStyles = vue.computed(() => {
1762
+ const mainStyles = vue.toRef(() => {
1749
1763
  return {
1750
1764
  '--v-layout-left': convertToUnit(mainRect.value.left),
1751
1765
  '--v-layout-right': convertToUnit(mainRect.value.right),
@@ -1860,10 +1874,10 @@
1860
1874
  layoutRect,
1861
1875
  rootZIndex
1862
1876
  });
1863
- const layoutClasses = vue.computed(() => ['v-layout', {
1877
+ const layoutClasses = vue.toRef(() => ['v-layout', {
1864
1878
  'v-layout--full-height': props.fullHeight
1865
1879
  }]);
1866
- const layoutStyles = vue.computed(() => ({
1880
+ const layoutStyles = vue.toRef(() => ({
1867
1881
  zIndex: parentLayout ? rootZIndex.value : undefined,
1868
1882
  position: parentLayout ? 'relative' : undefined,
1869
1883
  overflow: parentLayout ? 'hidden' : undefined
@@ -2254,7 +2268,7 @@
2254
2268
  return {
2255
2269
  isRtl,
2256
2270
  rtl,
2257
- rtlClasses: vue.computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2271
+ rtlClasses: vue.toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2258
2272
  };
2259
2273
  }
2260
2274
  function provideRtl(locale, rtl, props) {
@@ -2262,7 +2276,7 @@
2262
2276
  return {
2263
2277
  isRtl,
2264
2278
  rtl,
2265
- rtlClasses: vue.computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2279
+ rtlClasses: vue.toRef(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)
2266
2280
  };
2267
2281
  }
2268
2282
  function useRtl() {
@@ -2335,8 +2349,8 @@
2335
2349
  surface: '#212121',
2336
2350
  'surface-bright': '#ccbfd6',
2337
2351
  'surface-light': '#424242',
2338
- 'surface-variant': '#a3a3a3',
2339
- 'on-surface-variant': '#424242',
2352
+ 'surface-variant': '#c8c8c8',
2353
+ 'on-surface-variant': '#000000',
2340
2354
  primary: '#2196F3',
2341
2355
  'primary-darken-1': '#277CC1',
2342
2356
  secondary: '#54B6B2',
@@ -2486,7 +2500,7 @@
2486
2500
  }
2487
2501
  return acc;
2488
2502
  });
2489
- const current = vue.computed(() => computedThemes.value[name.value]);
2503
+ const current = vue.toRef(() => computedThemes.value[name.value]);
2490
2504
  const styles = vue.computed(() => {
2491
2505
  const lines = [];
2492
2506
  if (current.value?.dark) {
@@ -2533,7 +2547,7 @@
2533
2547
  }
2534
2548
  } else {
2535
2549
  if (IN_BROWSER) {
2536
- head.addHeadObjs(vue.computed(getHead));
2550
+ head.addHeadObjs(vue.toRef(getHead));
2537
2551
  vue.watchEffect(() => head.updateDOM());
2538
2552
  } else {
2539
2553
  head.addHeadObjs(getHead());
@@ -2552,7 +2566,7 @@
2552
2566
  }
2553
2567
  }
2554
2568
  }
2555
- const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2569
+ const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2556
2570
  return {
2557
2571
  install,
2558
2572
  isDisabled: parsedOptions.isDisabled,
@@ -2572,9 +2586,9 @@
2572
2586
  getCurrentInstance('provideTheme');
2573
2587
  const theme = vue.inject(ThemeSymbol, null);
2574
2588
  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}`);
2589
+ const name = vue.toRef(() => props.theme ?? theme.name.value);
2590
+ const current = vue.toRef(() => theme.themes.value[name.value]);
2591
+ const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2578
2592
  const newTheme = {
2579
2593
  ...theme,
2580
2594
  name,
@@ -2858,6 +2872,7 @@
2858
2872
  const makeVDialogTransitionProps = propsFactory({
2859
2873
  target: [Object, Array]
2860
2874
  }, 'v-dialog-transition');
2875
+ const saved = new WeakMap();
2861
2876
  const VDialogTransition = genericComponent()({
2862
2877
  name: 'VDialogTransition',
2863
2878
  props: makeVDialogTransitionProps(),
@@ -2874,13 +2889,15 @@
2874
2889
  await new Promise(resolve => requestAnimationFrame(resolve));
2875
2890
  await new Promise(resolve => requestAnimationFrame(resolve));
2876
2891
  el.style.visibility = '';
2892
+ const dimensions = getDimensions(props.target, el);
2877
2893
  const {
2878
2894
  x,
2879
2895
  y,
2880
2896
  sx,
2881
2897
  sy,
2882
2898
  speed
2883
- } = getDimensions(props.target, el);
2899
+ } = dimensions;
2900
+ saved.set(el, dimensions);
2884
2901
  const animation = animate(el, [{
2885
2902
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2886
2903
  opacity: 0
@@ -2909,13 +2926,19 @@
2909
2926
  },
2910
2927
  async onLeave(el, done) {
2911
2928
  await new Promise(resolve => requestAnimationFrame(resolve));
2929
+ let dimensions;
2930
+ if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
2931
+ dimensions = saved.get(el);
2932
+ } else {
2933
+ dimensions = getDimensions(props.target, el);
2934
+ }
2912
2935
  const {
2913
2936
  x,
2914
2937
  y,
2915
2938
  sx,
2916
2939
  sy,
2917
2940
  speed
2918
- } = getDimensions(props.target, el);
2941
+ } = dimensions;
2919
2942
  const animation = animate(el, [{}, {
2920
2943
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2921
2944
  opacity: 0
@@ -3135,13 +3158,14 @@
3135
3158
  // Composables
3136
3159
  function useColor(colors) {
3137
3160
  return destructComputed(() => {
3161
+ const _colors = vue.toValue(colors);
3138
3162
  const classes = [];
3139
3163
  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);
3164
+ if (_colors.background) {
3165
+ if (isCssColor(_colors.background)) {
3166
+ styles.backgroundColor = _colors.background;
3167
+ if (!_colors.text && isParsableColor(_colors.background)) {
3168
+ const backgroundColor = parseColor(_colors.background);
3145
3169
  if (backgroundColor.a == null || backgroundColor.a === 1) {
3146
3170
  const textColor = getForeground(backgroundColor);
3147
3171
  styles.color = textColor;
@@ -3149,15 +3173,15 @@
3149
3173
  }
3150
3174
  }
3151
3175
  } else {
3152
- classes.push(`bg-${colors.value.background}`);
3176
+ classes.push(`bg-${_colors.background}`);
3153
3177
  }
3154
3178
  }
3155
- if (colors.value.text) {
3156
- if (isCssColor(colors.value.text)) {
3157
- styles.color = colors.value.text;
3158
- styles.caretColor = colors.value.text;
3179
+ if (_colors.text) {
3180
+ if (isCssColor(_colors.text)) {
3181
+ styles.color = _colors.text;
3182
+ styles.caretColor = _colors.text;
3159
3183
  } else {
3160
- classes.push(`text-${colors.value.text}`);
3184
+ classes.push(`text-${_colors.text}`);
3161
3185
  }
3162
3186
  }
3163
3187
  return {
@@ -3166,27 +3190,25 @@
3166
3190
  };
3167
3191
  });
3168
3192
  }
3169
- function useTextColor(props, name) {
3170
- const colors = vue.computed(() => ({
3171
- text: vue.isRef(props) ? props.value : name ? props[name] : null
3172
- }));
3193
+ function useTextColor(color) {
3173
3194
  const {
3174
3195
  colorClasses: textColorClasses,
3175
3196
  colorStyles: textColorStyles
3176
- } = useColor(colors);
3197
+ } = useColor(() => ({
3198
+ text: vue.toValue(color)
3199
+ }));
3177
3200
  return {
3178
3201
  textColorClasses,
3179
3202
  textColorStyles
3180
3203
  };
3181
3204
  }
3182
- function useBackgroundColor(props, name) {
3183
- const colors = vue.computed(() => ({
3184
- background: vue.isRef(props) ? props.value : name ? props[name] : null
3185
- }));
3205
+ function useBackgroundColor(color) {
3186
3206
  const {
3187
3207
  colorClasses: backgroundColorClasses,
3188
3208
  colorStyles: backgroundColorStyles
3189
- } = useColor(colors);
3209
+ } = useColor(() => ({
3210
+ background: vue.toValue(color)
3211
+ }));
3190
3212
  return {
3191
3213
  backgroundColorClasses,
3192
3214
  backgroundColorStyles
@@ -3370,7 +3392,7 @@
3370
3392
  const {
3371
3393
  backgroundColorClasses,
3372
3394
  backgroundColorStyles
3373
- } = useBackgroundColor(vue.toRef(props, 'color'));
3395
+ } = useBackgroundColor(() => props.color);
3374
3396
  const {
3375
3397
  roundedClasses
3376
3398
  } = useRounded(props);
@@ -3477,7 +3499,7 @@
3477
3499
  };
3478
3500
  poll();
3479
3501
  }
3480
- const containClasses = vue.computed(() => ({
3502
+ const containClasses = vue.toRef(() => ({
3481
3503
  'v-img__img--cover': props.cover,
3482
3504
  'v-img__img--contain': !props.cover
3483
3505
  }));
@@ -3614,16 +3636,13 @@
3614
3636
  function useBorder(props) {
3615
3637
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
3616
3638
  const borderClasses = vue.computed(() => {
3617
- const border = vue.isRef(props) ? props.value : props.border;
3618
- const classes = [];
3639
+ const border = props.border;
3619
3640
  if (border === true || border === '') {
3620
- classes.push(`${name}--border`);
3641
+ return `${name}--border`;
3621
3642
  } else if (typeof border === 'string' || border === 0) {
3622
- for (const value of String(border).split(' ')) {
3623
- classes.push(`border-${value}`);
3624
- }
3643
+ return String(border).split(' ').map(v => `border-${v}`);
3625
3644
  }
3626
- return classes;
3645
+ return [];
3627
3646
  });
3628
3647
  return {
3629
3648
  borderClasses
@@ -3648,12 +3667,10 @@
3648
3667
  }
3649
3668
  }, 'elevation');
3650
3669
  function useElevation(props) {
3651
- const elevationClasses = vue.computed(() => {
3670
+ const elevationClasses = vue.toRef(() => {
3652
3671
  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;
3672
+ if (elevation == null) return [];
3673
+ return [`elevation-${elevation}`];
3657
3674
  });
3658
3675
  return {
3659
3676
  elevationClasses
@@ -3704,7 +3721,7 @@
3704
3721
  const {
3705
3722
  backgroundColorClasses,
3706
3723
  backgroundColorStyles
3707
- } = useBackgroundColor(vue.toRef(props, 'color'));
3724
+ } = useBackgroundColor(() => props.color);
3708
3725
  const {
3709
3726
  borderClasses
3710
3727
  } = useBorder(props);
@@ -3913,7 +3930,7 @@
3913
3930
  isBooted.value = true;
3914
3931
  });
3915
3932
  });
3916
- const ssrBootStyles = vue.computed(() => !isBooted.value ? {
3933
+ const ssrBootStyles = vue.toRef(() => !isBooted.value ? {
3917
3934
  transition: 'none !important'
3918
3935
  } : undefined);
3919
3936
  return {
@@ -3981,7 +3998,7 @@
3981
3998
  } = useScroll(props, {
3982
3999
  canScroll
3983
4000
  });
3984
- const canHide = vue.computed(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
4001
+ const canHide = vue.toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
3985
4002
  const isCollapsed = vue.computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3986
4003
  const isFlat = vue.computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3987
4004
  const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
@@ -3992,7 +4009,7 @@
3992
4009
  if (!canHide.value) return height + extensionHeight;
3993
4010
  return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
3994
4011
  });
3995
- useToggleScope(vue.computed(() => !!props.scrollBehavior), () => {
4012
+ useToggleScope(() => !!props.scrollBehavior, () => {
3996
4013
  vue.watchEffect(() => {
3997
4014
  if (canHide.value) {
3998
4015
  if (scrollBehavior.value.inverted) {
@@ -4013,11 +4030,11 @@
4013
4030
  } = useLayoutItem({
4014
4031
  id: props.name,
4015
4032
  order: vue.computed(() => parseInt(props.order, 10)),
4016
- position: vue.toRef(props, 'location'),
4033
+ position: vue.toRef(() => props.location),
4017
4034
  layoutSize: height,
4018
4035
  elementSize: vue.shallowRef(undefined),
4019
4036
  active: isActive,
4020
- absolute: vue.toRef(props, 'absolute')
4037
+ absolute: vue.toRef(() => props.absolute)
4021
4038
  });
4022
4039
  useRender(() => {
4023
4040
  const toolbarProps = VToolbar.filterProps(props);
@@ -4060,7 +4077,7 @@
4060
4077
  }, 'density');
4061
4078
  function useDensity(props) {
4062
4079
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4063
- const densityClasses = vue.computed(() => {
4080
+ const densityClasses = vue.toRef(() => {
4064
4081
  return `${name}--density-${props.density}`;
4065
4082
  });
4066
4083
  return {
@@ -4090,24 +4107,24 @@
4090
4107
  }, 'variant');
4091
4108
  function useVariant(props) {
4092
4109
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4093
- const variantClasses = vue.computed(() => {
4110
+ const variantClasses = vue.toRef(() => {
4094
4111
  const {
4095
4112
  variant
4096
- } = vue.unref(props);
4113
+ } = vue.toValue(props);
4097
4114
  return `${name}--variant-${variant}`;
4098
4115
  });
4099
4116
  const {
4100
4117
  colorClasses,
4101
4118
  colorStyles
4102
- } = useColor(vue.computed(() => {
4119
+ } = useColor(() => {
4103
4120
  const {
4104
4121
  variant,
4105
4122
  color
4106
- } = vue.unref(props);
4123
+ } = vue.toValue(props);
4107
4124
  return {
4108
4125
  [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color
4109
4126
  };
4110
- }));
4127
+ });
4111
4128
  return {
4112
4129
  colorClasses,
4113
4130
  colorStyles,
@@ -4152,11 +4169,11 @@
4152
4169
  provideDefaults({
4153
4170
  VBtn: {
4154
4171
  height: 'auto',
4155
- baseColor: vue.toRef(props, 'baseColor'),
4156
- color: vue.toRef(props, 'color'),
4157
- density: vue.toRef(props, 'density'),
4172
+ baseColor: vue.toRef(() => props.baseColor),
4173
+ color: vue.toRef(() => props.color),
4174
+ density: vue.toRef(() => props.density),
4158
4175
  flat: true,
4159
- variant: vue.toRef(props, 'variant')
4176
+ variant: vue.toRef(() => props.variant)
4160
4177
  }
4161
4178
  });
4162
4179
  useRender(() => {
@@ -4206,7 +4223,7 @@
4206
4223
  if (!required) return group;
4207
4224
  throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);
4208
4225
  }
4209
- const value = vue.toRef(props, 'value');
4226
+ const value = vue.toRef(() => props.value);
4210
4227
  const disabled = vue.computed(() => !!(group.disabled.value || props.disabled));
4211
4228
  group.register({
4212
4229
  id,
@@ -4355,12 +4372,12 @@
4355
4372
  unregister,
4356
4373
  selected,
4357
4374
  select,
4358
- disabled: vue.toRef(props, 'disabled'),
4375
+ disabled: vue.toRef(() => props.disabled),
4359
4376
  prev: () => step(items.length - 1),
4360
4377
  next: () => step(1),
4361
4378
  isSelected: id => selected.value.includes(id),
4362
- selectedClass: vue.computed(() => props.selectedClass),
4363
- items: vue.computed(() => items),
4379
+ selectedClass: vue.toRef(() => props.selectedClass),
4380
+ items: vue.toRef(() => items),
4364
4381
  getItemIndex: value => getItemIndex(items, value)
4365
4382
  };
4366
4383
  vue.provide(injectKey, state);
@@ -4616,7 +4633,7 @@
4616
4633
  const icons = vue.inject(IconSymbol);
4617
4634
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
4618
4635
  const iconData = vue.computed(() => {
4619
- const iconAlias = vue.unref(props);
4636
+ const iconAlias = vue.toValue(props);
4620
4637
  if (!iconAlias) return {
4621
4638
  component: VComponentIcon
4622
4639
  };
@@ -4666,14 +4683,15 @@
4666
4683
  function useSize(props) {
4667
4684
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
4668
4685
  return destructComputed(() => {
4686
+ const size = props.size;
4669
4687
  let sizeClasses;
4670
4688
  let sizeStyles;
4671
- if (includes(predefinedSizes, props.size)) {
4672
- sizeClasses = `${name}--size-${props.size}`;
4673
- } else if (props.size) {
4689
+ if (includes(predefinedSizes, size)) {
4690
+ sizeClasses = `${name}--size-${size}`;
4691
+ } else if (size) {
4674
4692
  sizeStyles = {
4675
- width: convertToUnit(props.size),
4676
- height: convertToUnit(props.size)
4693
+ width: convertToUnit(size),
4694
+ height: convertToUnit(size)
4677
4695
  };
4678
4696
  }
4679
4697
  return {
@@ -4705,20 +4723,20 @@
4705
4723
  attrs,
4706
4724
  slots
4707
4725
  } = _ref;
4708
- const slotIcon = vue.ref();
4726
+ const slotIcon = vue.shallowRef();
4709
4727
  const {
4710
4728
  themeClasses
4711
4729
  } = useTheme();
4712
4730
  const {
4713
4731
  iconData
4714
- } = useIcon(vue.computed(() => slotIcon.value || props.icon));
4732
+ } = useIcon(() => slotIcon.value || props.icon);
4715
4733
  const {
4716
4734
  sizeClasses
4717
4735
  } = useSize(props);
4718
4736
  const {
4719
4737
  textColorClasses,
4720
4738
  textColorStyles
4721
- } = useTextColor(vue.toRef(props, 'color'));
4739
+ } = useTextColor(() => props.color);
4722
4740
  useRender(() => {
4723
4741
  const slotValue = slots.default?.();
4724
4742
  if (slotValue) {
@@ -4824,11 +4842,11 @@
4824
4842
  const {
4825
4843
  textColorClasses,
4826
4844
  textColorStyles
4827
- } = useTextColor(vue.toRef(props, 'color'));
4845
+ } = useTextColor(() => props.color);
4828
4846
  const {
4829
4847
  textColorClasses: underlayColorClasses,
4830
4848
  textColorStyles: underlayColorStyles
4831
- } = useTextColor(vue.toRef(props, 'bgColor'));
4849
+ } = useTextColor(() => props.bgColor);
4832
4850
  const {
4833
4851
  intersectionRef,
4834
4852
  isIntersecting
@@ -4837,15 +4855,15 @@
4837
4855
  resizeRef,
4838
4856
  contentRect
4839
4857
  } = 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(() => {
4858
+ const normalizedValue = vue.toRef(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));
4859
+ const width = vue.toRef(() => Number(props.width));
4860
+ const size = vue.toRef(() => {
4843
4861
  // Get size from element if size prop value is small, large etc
4844
4862
  return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
4845
4863
  });
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));
4864
+ const diameter = vue.toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
4865
+ const strokeWidth = vue.toRef(() => width.value / size.value * diameter.value);
4866
+ const strokeDashOffset = vue.toRef(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));
4849
4867
  vue.watchEffect(() => {
4850
4868
  intersectionRef.value = root.value;
4851
4869
  resizeRef.value = root.value;
@@ -5023,19 +5041,19 @@
5023
5041
  const {
5024
5042
  textColorClasses,
5025
5043
  textColorStyles
5026
- } = useTextColor(props, 'color');
5044
+ } = useTextColor(() => props.color);
5027
5045
  const {
5028
5046
  backgroundColorClasses,
5029
5047
  backgroundColorStyles
5030
- } = useBackgroundColor(vue.computed(() => props.bgColor || props.color));
5048
+ } = useBackgroundColor(() => props.bgColor || props.color);
5031
5049
  const {
5032
5050
  backgroundColorClasses: bufferColorClasses,
5033
5051
  backgroundColorStyles: bufferColorStyles
5034
- } = useBackgroundColor(vue.computed(() => props.bufferColor || props.bgColor || props.color));
5052
+ } = useBackgroundColor(() => props.bufferColor || props.bgColor || props.color);
5035
5053
  const {
5036
5054
  backgroundColorClasses: barColorClasses,
5037
5055
  backgroundColorStyles: barColorStyles
5038
- } = useBackgroundColor(props, 'color');
5056
+ } = useBackgroundColor(() => props.color);
5039
5057
  const {
5040
5058
  roundedClasses
5041
5059
  } = useRounded(props);
@@ -5142,7 +5160,7 @@
5142
5160
  }, 'loader');
5143
5161
  function useLoader(props) {
5144
5162
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5145
- const loaderClasses = vue.computed(() => ({
5163
+ const loaderClasses = vue.toRef(() => ({
5146
5164
  [`${name}--loading`]: props.loading
5147
5165
  }));
5148
5166
  return {
@@ -5181,7 +5199,7 @@
5181
5199
  }, 'position');
5182
5200
  function usePosition(props) {
5183
5201
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5184
- const positionClasses = vue.computed(() => {
5202
+ const positionClasses = vue.toRef(() => {
5185
5203
  return props.position ? `${name}--${props.position}` : undefined;
5186
5204
  });
5187
5205
  return {
@@ -5202,12 +5220,12 @@
5202
5220
  }
5203
5221
  function useLink(props, attrs) {
5204
5222
  const RouterLink = vue.resolveDynamicComponent('RouterLink');
5205
- const isLink = vue.computed(() => !!(props.href || props.to));
5223
+ const isLink = vue.toRef(() => !!(props.href || props.to));
5206
5224
  const isClickable = vue.computed(() => {
5207
5225
  return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');
5208
5226
  });
5209
5227
  if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {
5210
- const href = vue.toRef(props, 'href');
5228
+ const href = vue.toRef(() => props.href);
5211
5229
  return {
5212
5230
  isLink,
5213
5231
  isClickable,
@@ -5217,12 +5235,12 @@
5217
5235
  })
5218
5236
  };
5219
5237
  }
5238
+
5220
5239
  // 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);
5240
+ const routerLink = RouterLink.useLink({
5241
+ to: vue.toRef(() => props.to || ''),
5242
+ replace: vue.toRef(() => props.replace)
5243
+ });
5226
5244
  // Actual link needs to be undefined when to prop is not used
5227
5245
  const link = vue.computed(() => props.to ? routerLink : undefined);
5228
5246
  const route = useRoute();
@@ -5242,7 +5260,7 @@
5242
5260
  href,
5243
5261
  linkProps: vue.reactive({
5244
5262
  href,
5245
- 'aria-current': vue.computed(() => isActive.value ? 'page' : undefined)
5263
+ 'aria-current': vue.toRef(() => isActive.value ? 'page' : undefined)
5246
5264
  })
5247
5265
  };
5248
5266
  }
@@ -5691,7 +5709,7 @@
5691
5709
  }
5692
5710
  return group?.isSelected.value;
5693
5711
  });
5694
- const color = vue.computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
5712
+ const color = vue.toRef(() => isActive.value ? props.activeColor ?? props.color : props.color);
5695
5713
  const variantProps = vue.computed(() => {
5696
5714
  const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
5697
5715
  return {
@@ -5705,7 +5723,7 @@
5705
5723
  variantClasses
5706
5724
  } = useVariant(variantProps);
5707
5725
  const isDisabled = vue.computed(() => group?.disabled.value || props.disabled);
5708
- const isElevated = vue.computed(() => {
5726
+ const isElevated = vue.toRef(() => {
5709
5727
  return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);
5710
5728
  });
5711
5729
  const valueAttr = vue.computed(() => {
@@ -5908,15 +5926,11 @@
5908
5926
  slots
5909
5927
  } = _ref;
5910
5928
  const isActive = useProxiedModel(props, 'modelValue');
5911
- const icon = vue.computed(() => {
5929
+ const icon = vue.toRef(() => {
5912
5930
  if (props.icon === false) return undefined;
5913
5931
  if (!props.type) return props.icon;
5914
5932
  return props.icon ?? `$${props.type}`;
5915
5933
  });
5916
- const variantProps = vue.computed(() => ({
5917
- color: props.color ?? props.type,
5918
- variant: props.variant
5919
- }));
5920
5934
  const {
5921
5935
  themeClasses
5922
5936
  } = provideTheme(props);
@@ -5924,7 +5938,10 @@
5924
5938
  colorClasses,
5925
5939
  colorStyles,
5926
5940
  variantClasses
5927
- } = useVariant(variantProps);
5941
+ } = useVariant(() => ({
5942
+ color: props.color ?? props.type,
5943
+ variant: props.variant
5944
+ }));
5928
5945
  const {
5929
5946
  densityClasses
5930
5947
  } = useDensity(props);
@@ -5946,11 +5963,11 @@
5946
5963
  const {
5947
5964
  textColorClasses,
5948
5965
  textColorStyles
5949
- } = useTextColor(vue.toRef(props, 'borderColor'));
5966
+ } = useTextColor(() => props.borderColor);
5950
5967
  const {
5951
5968
  t
5952
5969
  } = useLocale();
5953
- const closeProps = vue.computed(() => ({
5970
+ const closeProps = vue.toRef(() => ({
5954
5971
  'aria-label': t(props.closeLabel),
5955
5972
  onClick(e) {
5956
5973
  isActive.value = false;
@@ -6187,8 +6204,8 @@
6187
6204
  } = _ref;
6188
6205
  const modelValue = useProxiedModel(props, 'modelValue');
6189
6206
  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);
6207
+ const id = vue.toRef(() => props.id || `v-selection-control-group-${uid}`);
6208
+ const name = vue.toRef(() => props.name || id.value);
6192
6209
  const updateHandlers = new Set();
6193
6210
  vue.provide(VSelectionControlGroupSymbol, {
6194
6211
  modelValue,
@@ -6204,20 +6221,20 @@
6204
6221
  });
6205
6222
  provideDefaults({
6206
6223
  [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'),
6224
+ color: vue.toRef(() => props.color),
6225
+ disabled: vue.toRef(() => props.disabled),
6226
+ density: vue.toRef(() => props.density),
6227
+ error: vue.toRef(() => props.error),
6228
+ inline: vue.toRef(() => props.inline),
6212
6229
  modelValue,
6213
- multiple: vue.computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6230
+ multiple: vue.toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
6214
6231
  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')
6232
+ falseIcon: vue.toRef(() => props.falseIcon),
6233
+ trueIcon: vue.toRef(() => props.trueIcon),
6234
+ readonly: vue.toRef(() => props.readonly),
6235
+ ripple: vue.toRef(() => props.ripple),
6236
+ type: vue.toRef(() => props.type),
6237
+ valueComparator: vue.toRef(() => props.valueComparator)
6221
6238
  }
6222
6239
  });
6223
6240
  useRender(() => vue.createVNode("div", {
@@ -6273,16 +6290,16 @@
6273
6290
  const {
6274
6291
  textColorClasses,
6275
6292
  textColorStyles
6276
- } = useTextColor(vue.computed(() => {
6293
+ } = useTextColor(() => {
6277
6294
  if (props.error || props.disabled) return undefined;
6278
6295
  return model.value ? props.color : props.baseColor;
6279
- }));
6296
+ });
6280
6297
  const {
6281
6298
  backgroundColorClasses,
6282
6299
  backgroundColorStyles
6283
- } = useBackgroundColor(vue.computed(() => {
6300
+ } = useBackgroundColor(() => {
6284
6301
  return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
6285
- }));
6302
+ });
6286
6303
  const icon = vue.computed(() => model.value ? props.trueIcon : props.falseIcon);
6287
6304
  return {
6288
6305
  group,
@@ -6327,8 +6344,8 @@
6327
6344
  const isFocused = vue.shallowRef(false);
6328
6345
  const isFocusVisible = vue.shallowRef(false);
6329
6346
  const input = vue.ref();
6330
- const id = vue.computed(() => props.id || `input-${uid}`);
6331
- const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
6347
+ const id = vue.toRef(() => props.id || `input-${uid}`);
6348
+ const isInteractive = vue.toRef(() => !props.disabled && !props.readonly);
6332
6349
  group?.onForceUpdate(() => {
6333
6350
  if (input.value) {
6334
6351
  input.value.checked = model.value;
@@ -6466,10 +6483,10 @@
6466
6483
  indeterminate.value = false;
6467
6484
  }
6468
6485
  }
6469
- const falseIcon = vue.computed(() => {
6486
+ const falseIcon = vue.toRef(() => {
6470
6487
  return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
6471
6488
  });
6472
- const trueIcon = vue.computed(() => {
6489
+ const trueIcon = vue.toRef(() => {
6473
6490
  return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
6474
6491
  });
6475
6492
  useRender(() => {
@@ -6557,7 +6574,7 @@
6557
6574
  const {
6558
6575
  textColorClasses,
6559
6576
  textColorStyles
6560
- } = useTextColor(vue.computed(() => props.color));
6577
+ } = useTextColor(() => props.color);
6561
6578
  useRender(() => vue.createVNode(MaybeTransition, {
6562
6579
  "transition": props.transition,
6563
6580
  "tag": "div",
@@ -6587,7 +6604,7 @@
6587
6604
  function useFocus(props) {
6588
6605
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
6589
6606
  const isFocused = useProxiedModel(props, 'focused');
6590
- const focusClasses = vue.computed(() => {
6607
+ const focusClasses = vue.toRef(() => {
6591
6608
  return {
6592
6609
  [`${name}--focused`]: isFocused.value
6593
6610
  };
@@ -6626,8 +6643,8 @@
6626
6643
  }, 'form');
6627
6644
  function createForm(props) {
6628
6645
  const model = useProxiedModel(props, 'modelValue');
6629
- const isDisabled = vue.computed(() => props.disabled);
6630
- const isReadonly = vue.computed(() => props.readonly);
6646
+ const isDisabled = vue.toRef(() => props.disabled);
6647
+ const isReadonly = vue.toRef(() => props.readonly);
6631
6648
  const isValidating = vue.shallowRef(false);
6632
6649
  const items = vue.ref([]);
6633
6650
  const errors = vue.ref([]);
@@ -6717,7 +6734,7 @@
6717
6734
  isValidating,
6718
6735
  isValid: model,
6719
6736
  items,
6720
- validateOn: vue.toRef(props, 'validateOn')
6737
+ validateOn: vue.toRef(() => props.validateOn)
6721
6738
  });
6722
6739
  return {
6723
6740
  errors,
@@ -7027,10 +7044,10 @@
7027
7044
  resetValidation,
7028
7045
  validate
7029
7046
  }));
7030
- const color = vue.computed(() => {
7047
+ const color = vue.toRef(() => {
7031
7048
  return props.error || props.disabled ? undefined : props.focused ? props.color : props.baseColor;
7032
7049
  });
7033
- const iconColor = vue.computed(() => {
7050
+ const iconColor = vue.toRef(() => {
7034
7051
  if (!props.iconColor) return undefined;
7035
7052
  return props.iconColor === true ? color.value : props.iconColor;
7036
7053
  });
@@ -7120,7 +7137,6 @@
7120
7137
  blur
7121
7138
  } = useFocus(props);
7122
7139
  const uid = vue.useId();
7123
- const id = vue.computed(() => props.id || `checkbox-${uid}`);
7124
7140
  useRender(() => {
7125
7141
  const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
7126
7142
  const inputProps = VInput.filterProps(props);
@@ -7130,7 +7146,7 @@
7130
7146
  }, rootAttrs, inputProps, {
7131
7147
  "modelValue": model.value,
7132
7148
  "onUpdate:modelValue": $event => model.value = $event,
7133
- "id": id.value,
7149
+ "id": props.id || `checkbox-${uid}`,
7134
7150
  "focused": isFocused.value,
7135
7151
  "style": props.style
7136
7152
  }), {
@@ -7314,7 +7330,7 @@
7314
7330
  return false;
7315
7331
  }
7316
7332
  });
7317
- const displayClasses = vue.computed(() => {
7333
+ const displayClasses = vue.toRef(() => {
7318
7334
  if (!name) return {};
7319
7335
  return {
7320
7336
  [`${name}--mobile`]: mobile.value
@@ -7429,7 +7445,7 @@
7429
7445
  const goTo = {
7430
7446
  ...goToInstance,
7431
7447
  // can be set via VLocaleProvider
7432
- rtl: vue.computed(() => goToInstance.rtl.value || isRtl.value)
7448
+ rtl: vue.toRef(() => goToInstance.rtl.value || isRtl.value)
7433
7449
  };
7434
7450
  async function go(target, options) {
7435
7451
  return scrollTo(target, mergeDeep(_options, options), false, goTo);
@@ -7921,11 +7937,11 @@
7921
7937
  } = useGroup(props, VChipGroupSymbol);
7922
7938
  provideDefaults({
7923
7939
  VChip: {
7924
- baseColor: vue.toRef(props, 'baseColor'),
7925
- color: vue.toRef(props, 'color'),
7926
- disabled: vue.toRef(props, 'disabled'),
7927
- filter: vue.toRef(props, 'filter'),
7928
- variant: vue.toRef(props, 'variant')
7940
+ baseColor: vue.toRef(() => props.baseColor),
7941
+ color: vue.toRef(() => props.color),
7942
+ disabled: vue.toRef(() => props.disabled),
7943
+ filter: vue.toRef(() => props.filter),
7944
+ variant: vue.toRef(() => props.variant)
7929
7945
  }
7930
7946
  });
7931
7947
  useRender(() => {
@@ -8051,9 +8067,9 @@
8051
8067
  const isActive = useProxiedModel(props, 'modelValue');
8052
8068
  const group = useGroupItem(props, VChipGroupSymbol, false);
8053
8069
  const link = useLink(props, attrs);
8054
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
8070
+ const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
8055
8071
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
8056
- const closeProps = vue.computed(() => ({
8072
+ const closeProps = vue.toRef(() => ({
8057
8073
  'aria-label': t(props.closeLabel),
8058
8074
  onClick(e) {
8059
8075
  e.preventDefault();
@@ -8062,18 +8078,17 @@
8062
8078
  emit('click:close', e);
8063
8079
  }
8064
8080
  }));
8065
- const variantProps = vue.computed(() => {
8081
+ const {
8082
+ colorClasses,
8083
+ colorStyles,
8084
+ variantClasses
8085
+ } = useVariant(() => {
8066
8086
  const showColor = !group || group.isSelected.value;
8067
8087
  return {
8068
8088
  color: showColor ? props.color ?? props.baseColor : props.baseColor,
8069
8089
  variant: props.variant
8070
8090
  };
8071
8091
  });
8072
- const {
8073
- colorClasses,
8074
- colorStyles,
8075
- variantClasses
8076
- } = useVariant(variantProps);
8077
8092
  function onClick(e) {
8078
8093
  emit('click', e);
8079
8094
  if (!isClickable.value) return;
@@ -8740,8 +8755,8 @@
8740
8755
  id: vue.shallowRef(),
8741
8756
  root: {
8742
8757
  opened,
8743
- activatable: vue.toRef(props, 'activatable'),
8744
- selectable: vue.toRef(props, 'selectable'),
8758
+ activatable: vue.toRef(() => props.activatable),
8759
+ selectable: vue.toRef(() => props.selectable),
8745
8760
  activated,
8746
8761
  selected,
8747
8762
  selectedValues: vue.computed(() => {
@@ -8870,7 +8885,7 @@
8870
8885
  const useNestedItem = (id, isGroup) => {
8871
8886
  const parent = vue.inject(VNestedSymbol, emptyNested);
8872
8887
  const uidSymbol = Symbol('nested item');
8873
- const computedId = vue.computed(() => id.value !== undefined ? id.value : uidSymbol);
8888
+ const computedId = vue.computed(() => vue.toValue(id) ?? uidSymbol);
8874
8889
  const item = {
8875
8890
  ...parent,
8876
8891
  id: computedId,
@@ -8946,7 +8961,7 @@
8946
8961
  isOpen,
8947
8962
  open,
8948
8963
  id: _id
8949
- } = useNestedItem(vue.toRef(props, 'value'), true);
8964
+ } = useNestedItem(() => props.value, true);
8950
8965
  const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
8951
8966
  const list = useList();
8952
8967
  const {
@@ -9120,12 +9135,12 @@
9120
9135
  } = useNestedItem(id, false);
9121
9136
  const list = useList();
9122
9137
  const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9123
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
9138
+ const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
9124
9139
  const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9125
9140
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9126
- const roundedProps = vue.computed(() => props.rounded || props.nav);
9127
- const color = vue.computed(() => props.color ?? props.activeColor);
9128
- const variantProps = vue.computed(() => ({
9141
+ const roundedProps = vue.toRef(() => props.rounded || props.nav);
9142
+ const color = vue.toRef(() => props.color ?? props.activeColor);
9143
+ const variantProps = vue.toRef(() => ({
9129
9144
  color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
9130
9145
  variant: props.variant
9131
9146
  }));
@@ -9168,7 +9183,7 @@
9168
9183
  const {
9169
9184
  roundedClasses
9170
9185
  } = useRounded(roundedProps);
9171
- const lineClasses = vue.computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9186
+ const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9172
9187
  const slotProps = vue.computed(() => ({
9173
9188
  isActive: isActive.value,
9174
9189
  select,
@@ -9338,7 +9353,7 @@
9338
9353
  const {
9339
9354
  textColorClasses,
9340
9355
  textColorStyles
9341
- } = useTextColor(vue.toRef(props, 'color'));
9356
+ } = useTextColor(() => props.color);
9342
9357
  useRender(() => {
9343
9358
  const hasText = !!(slots.default || props.title);
9344
9359
  return vue.createVNode(props.tag, {
@@ -9383,7 +9398,7 @@
9383
9398
  const {
9384
9399
  textColorClasses,
9385
9400
  textColorStyles
9386
- } = useTextColor(vue.toRef(props, 'color'));
9401
+ } = useTextColor(() => props.color);
9387
9402
  const dividerStyles = vue.computed(() => {
9388
9403
  const styles = {};
9389
9404
  if (props.length) {
@@ -9745,7 +9760,7 @@
9745
9760
  const {
9746
9761
  backgroundColorClasses,
9747
9762
  backgroundColorStyles
9748
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
9763
+ } = useBackgroundColor(() => props.bgColor);
9749
9764
  const {
9750
9765
  borderClasses
9751
9766
  } = useBorder(props);
@@ -9768,30 +9783,30 @@
9768
9783
  select,
9769
9784
  getPath
9770
9785
  } = useNested(props);
9771
- const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9772
- const activeColor = vue.toRef(props, 'activeColor');
9773
- const baseColor = vue.toRef(props, 'baseColor');
9774
- const color = vue.toRef(props, 'color');
9786
+ const lineClasses = vue.toRef(() => props.lines ? `v-list--${props.lines}-line` : undefined);
9787
+ const activeColor = vue.toRef(() => props.activeColor);
9788
+ const baseColor = vue.toRef(() => props.baseColor);
9789
+ const color = vue.toRef(() => props.color);
9775
9790
  createList();
9776
9791
  provideDefaults({
9777
9792
  VListGroup: {
9778
9793
  activeColor,
9779
9794
  baseColor,
9780
9795
  color,
9781
- expandIcon: vue.toRef(props, 'expandIcon'),
9782
- collapseIcon: vue.toRef(props, 'collapseIcon')
9796
+ expandIcon: vue.toRef(() => props.expandIcon),
9797
+ collapseIcon: vue.toRef(() => props.collapseIcon)
9783
9798
  },
9784
9799
  VListItem: {
9785
- activeClass: vue.toRef(props, 'activeClass'),
9800
+ activeClass: vue.toRef(() => props.activeClass),
9786
9801
  activeColor,
9787
9802
  baseColor,
9788
9803
  color,
9789
- density: vue.toRef(props, 'density'),
9790
- disabled: vue.toRef(props, 'disabled'),
9791
- lines: vue.toRef(props, 'lines'),
9792
- nav: vue.toRef(props, 'nav'),
9793
- slim: vue.toRef(props, 'slim'),
9794
- variant: vue.toRef(props, 'variant')
9804
+ density: vue.toRef(() => props.density),
9805
+ disabled: vue.toRef(() => props.disabled),
9806
+ lines: vue.toRef(() => props.lines),
9807
+ nav: vue.toRef(() => props.nav),
9808
+ slim: vue.toRef(() => props.slim),
9809
+ variant: vue.toRef(() => props.variant)
9795
9810
  }
9796
9811
  });
9797
9812
  const isFocused = vue.shallowRef(false);
@@ -10103,8 +10118,27 @@
10103
10118
  return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];
10104
10119
  });
10105
10120
  let observe = false;
10121
+ let lastFrame = -1;
10122
+ const flipped = new CircularBuffer(4);
10106
10123
  const observer = new ResizeObserver(() => {
10107
- if (observe) updateLocation();
10124
+ if (!observe) return;
10125
+
10126
+ // Detect consecutive frames
10127
+ requestAnimationFrame(newTime => {
10128
+ if (newTime !== lastFrame) flipped.clear();
10129
+ requestAnimationFrame(newNewTime => {
10130
+ lastFrame = newNewTime;
10131
+ });
10132
+ });
10133
+ if (flipped.isFull) {
10134
+ const values = flipped.values();
10135
+ if (deepEqual(values.at(-1), values.at(-3))) {
10136
+ // Flipping is causing a container resize loop
10137
+ return;
10138
+ }
10139
+ }
10140
+ const result = updateLocation();
10141
+ if (result) flipped.push(result.flipped);
10108
10142
  });
10109
10143
  vue.watch([data.target, data.contentEl], (_ref, _ref2) => {
10110
10144
  let [newTarget, newContentEl] = _ref;
@@ -10119,13 +10153,22 @@
10119
10153
  vue.onScopeDispose(() => {
10120
10154
  observer.disconnect();
10121
10155
  });
10156
+ let targetBox = new Box({
10157
+ x: 0,
10158
+ y: 0,
10159
+ width: 0,
10160
+ height: 0
10161
+ });
10122
10162
 
10123
10163
  // eslint-disable-next-line max-statements
10124
10164
  function updateLocation() {
10125
10165
  observe = false;
10126
10166
  requestAnimationFrame(() => observe = true);
10127
10167
  if (!data.target.value || !data.contentEl.value) return;
10128
- const targetBox = getTargetBox(data.target.value);
10168
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10169
+ targetBox = getTargetBox(data.target.value);
10170
+ } // Otherwise target element is hidden, use last known value
10171
+
10129
10172
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10130
10173
  const scrollParents = getScrollParents(data.contentEl.value);
10131
10174
  const viewportMargin = 12;
@@ -10310,7 +10353,8 @@
10310
10353
  });
10311
10354
  return {
10312
10355
  available,
10313
- contentBox
10356
+ contentBox,
10357
+ flipped
10314
10358
  };
10315
10359
  }
10316
10360
  vue.watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
@@ -10835,7 +10879,7 @@
10835
10879
  }, 'lazy');
10836
10880
  function useLazy(props, active) {
10837
10881
  const isBooted = vue.shallowRef(false);
10838
- const hasContent = vue.computed(() => isBooted.value || props.eager || active.value);
10882
+ const hasContent = vue.toRef(() => isBooted.value || props.eager || active.value);
10839
10883
  vue.watch(active, () => isBooted.value = true);
10840
10884
  function onAfterLeave() {
10841
10885
  if (!props.eager) isBooted.value = false;
@@ -10872,10 +10916,10 @@
10872
10916
  activeChildren: new Set()
10873
10917
  });
10874
10918
  vue.provide(StackSymbol, stack);
10875
- const _zIndex = vue.shallowRef(Number(zIndex.value));
10919
+ const _zIndex = vue.shallowRef(Number(vue.toValue(zIndex)));
10876
10920
  useToggleScope(isActive, () => {
10877
10921
  const lastZIndex = globalStack.at(-1)?.[1];
10878
- _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
10922
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(vue.toValue(zIndex));
10879
10923
  if (createStackEntry) {
10880
10924
  globalStack.push([vm.uid, _zIndex.value]);
10881
10925
  }
@@ -10895,11 +10939,11 @@
10895
10939
  setTimeout(() => globalTop.value = _isTop);
10896
10940
  });
10897
10941
  }
10898
- const localTop = vue.computed(() => !stack.activeChildren.size);
10942
+ const localTop = vue.toRef(() => !stack.activeChildren.size);
10899
10943
  return {
10900
10944
  globalTop: vue.readonly(globalTop),
10901
10945
  localTop,
10902
- stackStyles: vue.computed(() => ({
10946
+ stackStyles: vue.toRef(() => ({
10903
10947
  zIndex: _zIndex.value
10904
10948
  }))
10905
10949
  };
@@ -11116,14 +11160,14 @@
11116
11160
  hasContent,
11117
11161
  onAfterLeave: _onAfterLeave
11118
11162
  } = useLazy(props, isActive);
11119
- const scrimColor = useBackgroundColor(vue.computed(() => {
11163
+ const scrimColor = useBackgroundColor(() => {
11120
11164
  return typeof props.scrim === 'string' ? props.scrim : null;
11121
- }));
11165
+ });
11122
11166
  const {
11123
11167
  globalTop,
11124
11168
  localTop,
11125
11169
  stackStyles
11126
- } = useStack(isActive, vue.toRef(props, 'zIndex'), props._disableGlobalStack);
11170
+ } = useStack(isActive, () => props.zIndex, props._disableGlobalStack);
11127
11171
  const {
11128
11172
  activatorEl,
11129
11173
  activatorRef,
@@ -11449,7 +11493,7 @@
11449
11493
  isRtl
11450
11494
  } = useRtl();
11451
11495
  const uid = vue.useId();
11452
- const id = vue.computed(() => props.id || `v-menu-${uid}`);
11496
+ const id = vue.toRef(() => props.id || `v-menu-${uid}`);
11453
11497
  const overlay = vue.ref();
11454
11498
  const parent = vue.inject(VMenuSymbol, null);
11455
11499
  const openChildren = vue.shallowRef(new Set());
@@ -11617,7 +11661,7 @@
11617
11661
  let {
11618
11662
  slots
11619
11663
  } = _ref;
11620
- const counter = vue.computed(() => {
11664
+ const counter = vue.toRef(() => {
11621
11665
  return props.max ? `${props.value} / ${props.max}` : String(props.value);
11622
11666
  });
11623
11667
  useRender(() => vue.createVNode(MaybeTransition, {
@@ -11744,12 +11788,12 @@
11744
11788
  const {
11745
11789
  rtlClasses
11746
11790
  } = useRtl();
11747
- const isActive = vue.computed(() => props.dirty || props.active);
11748
- const hasLabel = vue.computed(() => !!(props.label || slots.label));
11749
- const hasFloatingLabel = vue.computed(() => !props.singleLine && hasLabel.value);
11791
+ const isActive = vue.toRef(() => props.dirty || props.active);
11792
+ const hasLabel = vue.toRef(() => !!(props.label || slots.label));
11793
+ const hasFloatingLabel = vue.toRef(() => !props.singleLine && hasLabel.value);
11750
11794
  const uid = vue.useId();
11751
11795
  const id = vue.computed(() => props.id || `input-${uid}`);
11752
- const messagesId = vue.computed(() => `${id.value}-messages`);
11796
+ const messagesId = vue.toRef(() => `${id.value}-messages`);
11753
11797
  const labelRef = vue.ref();
11754
11798
  const floatingLabelRef = vue.ref();
11755
11799
  const controlRef = vue.ref();
@@ -11764,7 +11808,7 @@
11764
11808
  const {
11765
11809
  backgroundColorClasses,
11766
11810
  backgroundColorStyles
11767
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
11811
+ } = useBackgroundColor(() => props.bgColor);
11768
11812
  const {
11769
11813
  textColorClasses,
11770
11814
  textColorStyles
@@ -12491,7 +12535,7 @@
12491
12535
  paddingTop,
12492
12536
  paddingBottom,
12493
12537
  computedItems
12494
- } = useVirtual(props, vue.toRef(props, 'items'));
12538
+ } = useVirtual(props, vue.toRef(() => props.items));
12495
12539
  useToggleScope(() => props.renderless, () => {
12496
12540
  function handleListeners() {
12497
12541
  let add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -12728,7 +12772,7 @@
12728
12772
  _menu.value = v;
12729
12773
  }
12730
12774
  });
12731
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
12775
+ const label = vue.toRef(() => menu.value ? props.closeText : props.openText);
12732
12776
  const computedMenuProps = vue.computed(() => {
12733
12777
  return {
12734
12778
  ...props.menuProps,
@@ -12913,6 +12957,7 @@
12913
12957
  "onFocusin": onFocusin,
12914
12958
  "tabindex": "-1",
12915
12959
  "aria-live": "polite",
12960
+ "aria-label": `${props.label}-list`,
12916
12961
  "color": props.itemColor ?? props.color
12917
12962
  }, listEvents, props.listProps), {
12918
12963
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
@@ -13054,6 +13099,7 @@
13054
13099
  // Composables
13055
13100
  const defaultFilter = (value, query, item) => {
13056
13101
  if (value == null || query == null) return -1;
13102
+ if (!query.length) return 0;
13057
13103
  value = value.toString().toLocaleLowerCase();
13058
13104
  query = query.toString().toLocaleLowerCase();
13059
13105
  const result = [];
@@ -13066,7 +13112,7 @@
13066
13112
  };
13067
13113
  function normaliseMatch(match, query) {
13068
13114
  if (match == null || typeof match === 'boolean' || match === -1) return;
13069
- if (typeof match === 'number') return [[match, query.length]];
13115
+ if (typeof match === 'number') return [[match, match + query.length]];
13070
13116
  if (Array.isArray(match[0])) return match;
13071
13117
  return [match];
13072
13118
  }
@@ -13229,7 +13275,6 @@
13229
13275
  const vMenuRef = vue.ref();
13230
13276
  const vVirtualScrollRef = vue.ref();
13231
13277
  const selectionIndex = vue.shallowRef(-1);
13232
- const color = vue.computed(() => vTextFieldRef.value?.color);
13233
13278
  const {
13234
13279
  items,
13235
13280
  transformIn,
@@ -13238,7 +13283,7 @@
13238
13283
  const {
13239
13284
  textColorClasses,
13240
13285
  textColorStyles
13241
- } = useTextColor(color);
13286
+ } = useTextColor(() => vTextFieldRef.value?.color);
13242
13287
  const search = useProxiedModel(props, 'search', '');
13243
13288
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13244
13289
  const transformed = transformOut(v);
@@ -13687,7 +13732,7 @@
13687
13732
  const {
13688
13733
  backgroundColorClasses,
13689
13734
  backgroundColorStyles
13690
- } = useBackgroundColor(vue.toRef(props, 'color'));
13735
+ } = useBackgroundColor(() => props.color);
13691
13736
  const {
13692
13737
  roundedClasses
13693
13738
  } = useRounded(props);
@@ -13697,7 +13742,7 @@
13697
13742
  const {
13698
13743
  textColorClasses,
13699
13744
  textColorStyles
13700
- } = useTextColor(vue.toRef(props, 'textColor'));
13745
+ } = useTextColor(() => props.textColor);
13701
13746
  const {
13702
13747
  themeClasses
13703
13748
  } = useTheme();
@@ -13809,7 +13854,7 @@
13809
13854
  const {
13810
13855
  backgroundColorClasses,
13811
13856
  backgroundColorStyles
13812
- } = useBackgroundColor(props, 'bgColor');
13857
+ } = useBackgroundColor(() => props.bgColor);
13813
13858
  const {
13814
13859
  borderClasses
13815
13860
  } = useBorder(props);
@@ -13838,8 +13883,8 @@
13838
13883
  const {
13839
13884
  themeClasses
13840
13885
  } = provideTheme(props);
13841
- const color = vue.toRef(props, 'color');
13842
- const density = vue.toRef(props, 'density');
13886
+ const color = vue.toRef(() => props.color);
13887
+ const density = vue.toRef(() => props.density);
13843
13888
  provideDefaults({
13844
13889
  VBannerActions: {
13845
13890
  color,
@@ -13948,7 +13993,7 @@
13948
13993
  const {
13949
13994
  backgroundColorClasses,
13950
13995
  backgroundColorStyles
13951
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
13996
+ } = useBackgroundColor(() => props.bgColor);
13952
13997
  const {
13953
13998
  densityClasses
13954
13999
  } = useDensity(props);
@@ -13968,19 +14013,19 @@
13968
14013
  } = useLayoutItem({
13969
14014
  id: props.name,
13970
14015
  order: vue.computed(() => parseInt(props.order, 10)),
13971
- position: vue.computed(() => 'bottom'),
13972
- layoutSize: vue.computed(() => isActive.value ? height.value : 0),
14016
+ position: vue.toRef(() => 'bottom'),
14017
+ layoutSize: vue.toRef(() => isActive.value ? height.value : 0),
13973
14018
  elementSize: height,
13974
14019
  active: isActive,
13975
- absolute: vue.toRef(props, 'absolute')
14020
+ absolute: vue.toRef(() => props.absolute)
13976
14021
  });
13977
14022
  useGroup(props, VBtnToggleSymbol);
13978
14023
  provideDefaults({
13979
14024
  VBtn: {
13980
- baseColor: vue.toRef(props, 'baseColor'),
13981
- color: vue.toRef(props, 'color'),
13982
- density: vue.toRef(props, 'density'),
13983
- stacked: vue.computed(() => props.mode !== 'horizontal'),
14025
+ baseColor: vue.toRef(() => props.baseColor),
14026
+ color: vue.toRef(() => props.color),
14027
+ density: vue.toRef(() => props.density),
14028
+ stacked: vue.toRef(() => props.mode !== 'horizontal'),
13984
14029
  variant: 'text'
13985
14030
  }
13986
14031
  }, {
@@ -14216,11 +14261,10 @@
14216
14261
  } = _ref;
14217
14262
  const link = useLink(props, attrs);
14218
14263
  const isActive = vue.computed(() => props.active || link.isActive?.value);
14219
- const color = vue.computed(() => isActive.value ? props.activeColor : props.color);
14220
14264
  const {
14221
14265
  textColorClasses,
14222
14266
  textColorStyles
14223
- } = useTextColor(color);
14267
+ } = useTextColor(() => isActive.value ? props.activeColor : props.color);
14224
14268
  useRender(() => {
14225
14269
  return vue.createVNode(props.tag, {
14226
14270
  "class": ['v-breadcrumbs-item', {
@@ -14275,7 +14319,7 @@
14275
14319
  const {
14276
14320
  backgroundColorClasses,
14277
14321
  backgroundColorStyles
14278
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
14322
+ } = useBackgroundColor(() => props.bgColor);
14279
14323
  const {
14280
14324
  densityClasses
14281
14325
  } = useDensity(props);
@@ -14284,13 +14328,13 @@
14284
14328
  } = useRounded(props);
14285
14329
  provideDefaults({
14286
14330
  VBreadcrumbsDivider: {
14287
- divider: vue.toRef(props, 'divider')
14331
+ divider: vue.toRef(() => props.divider)
14288
14332
  },
14289
14333
  VBreadcrumbsItem: {
14290
- activeClass: vue.toRef(props, 'activeClass'),
14291
- activeColor: vue.toRef(props, 'activeColor'),
14292
- color: vue.toRef(props, 'color'),
14293
- disabled: vue.toRef(props, 'disabled')
14334
+ activeClass: vue.toRef(() => props.activeClass),
14335
+ activeColor: vue.toRef(() => props.activeColor),
14336
+ color: vue.toRef(() => props.color),
14337
+ disabled: vue.toRef(() => props.disabled)
14294
14338
  }
14295
14339
  });
14296
14340
  const items = vue.computed(() => props.items.map(item => {
@@ -14613,10 +14657,10 @@
14613
14657
  roundedClasses
14614
14658
  } = useRounded(props);
14615
14659
  const link = useLink(props, attrs);
14616
- const isLink = vue.computed(() => props.link !== false && link.isLink.value);
14617
- const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value));
14618
14660
  useRender(() => {
14619
- const Tag = isLink.value ? 'a' : props.tag;
14661
+ const isLink = props.link !== false && link.isLink.value;
14662
+ const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
14663
+ const Tag = isLink ? 'a' : props.tag;
14620
14664
  const hasTitle = !!(slots.title || props.title != null);
14621
14665
  const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
14622
14666
  const hasHeader = hasTitle || hasSubtitle;
@@ -14630,10 +14674,10 @@
14630
14674
  'v-card--disabled': props.disabled,
14631
14675
  'v-card--flat': props.flat,
14632
14676
  'v-card--hover': props.hover && !(props.disabled || props.flat),
14633
- 'v-card--link': isClickable.value
14677
+ 'v-card--link': isClickable
14634
14678
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
14635
14679
  "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
14636
- "onClick": isClickable.value && link.navigate,
14680
+ "onClick": isClickable && link.navigate,
14637
14681
  "tabindex": props.disabled ? -1 : undefined
14638
14682
  }, link.linkProps), {
14639
14683
  default: () => [hasImage && vue.createVNode("div", {
@@ -14678,8 +14722,8 @@
14678
14722
  default: () => [slots.text?.() ?? props.text]
14679
14723
  }), slots.default?.(), slots.actions && vue.createVNode(VCardActions, null, {
14680
14724
  default: slots.actions
14681
- }), genOverlays(isClickable.value, 'v-card')]
14682
- }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
14725
+ }), genOverlays(isClickable, 'v-card')]
14726
+ }), [[vue.resolveDirective("ripple"), isClickable && props.ripple]]);
14683
14727
  });
14684
14728
  return {};
14685
14729
  }
@@ -14892,8 +14936,8 @@
14892
14936
  transitionHeight,
14893
14937
  rootRef
14894
14938
  });
14895
- const canMoveBack = vue.computed(() => props.continuous || activeIndex.value !== 0);
14896
- const canMoveForward = vue.computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14939
+ const canMoveBack = vue.toRef(() => props.continuous || activeIndex.value !== 0);
14940
+ const canMoveForward = vue.toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1);
14897
14941
  function prev() {
14898
14942
  canMoveBack.value && group.prev();
14899
14943
  }
@@ -15795,7 +15839,7 @@
15795
15839
  const {
15796
15840
  isRtl
15797
15841
  } = useRtl();
15798
- const isReversed = vue.toRef(props, 'reverse');
15842
+ const isReversed = vue.toRef(() => props.reverse);
15799
15843
  const vertical = vue.computed(() => props.direction === 'vertical');
15800
15844
  const indexFromEnd = vue.computed(() => vertical.value !== isReversed.value);
15801
15845
  const {
@@ -15809,7 +15853,7 @@
15809
15853
  const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
15810
15854
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
15811
15855
  const numTicks = vue.computed(() => (max.value - min.value) / step.value);
15812
- const disabled = vue.toRef(props, 'disabled');
15856
+ const disabled = vue.toRef(() => props.disabled);
15813
15857
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
15814
15858
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
15815
15859
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -15911,7 +15955,7 @@
15911
15955
  const percentage = (val - min.value) / (max.value - min.value) * 100;
15912
15956
  return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
15913
15957
  };
15914
- const showTicks = vue.toRef(props, 'showTicks');
15958
+ const showTicks = vue.toRef(() => props.showTicks);
15915
15959
  const parsedTicks = vue.computed(() => {
15916
15960
  if (!showTicks.value) return [];
15917
15961
  if (!props.ticks) {
@@ -15942,11 +15986,11 @@
15942
15986
  }));
15943
15987
  const data = {
15944
15988
  activeThumbRef,
15945
- color: vue.toRef(props, 'color'),
15989
+ color: vue.toRef(() => props.color),
15946
15990
  decimals,
15947
15991
  disabled,
15948
- direction: vue.toRef(props, 'direction'),
15949
- elevation: vue.toRef(props, 'elevation'),
15992
+ direction: vue.toRef(() => props.direction),
15993
+ elevation: vue.toRef(() => props.elevation),
15950
15994
  hasLabels,
15951
15995
  isReversed,
15952
15996
  indexFromEnd,
@@ -15959,16 +16003,16 @@
15959
16003
  parsedTicks,
15960
16004
  parseMouseMove,
15961
16005
  position,
15962
- readonly: vue.toRef(props, 'readonly'),
15963
- rounded: vue.toRef(props, 'rounded'),
16006
+ readonly: vue.toRef(() => props.readonly),
16007
+ rounded: vue.toRef(() => props.rounded),
15964
16008
  roundValue,
15965
16009
  showTicks,
15966
16010
  startOffset,
15967
16011
  step,
15968
16012
  thumbSize,
15969
16013
  thumbColor,
15970
- thumbLabel: vue.toRef(props, 'thumbLabel'),
15971
- ticks: vue.toRef(props, 'ticks'),
16014
+ thumbLabel: vue.toRef(() => props.thumbLabel),
16015
+ ticks: vue.toRef(() => props.ticks),
15972
16016
  tickSize,
15973
16017
  trackColor,
15974
16018
  trackContainerRef,
@@ -16887,7 +16931,7 @@
16887
16931
  const {
16888
16932
  backgroundColorClasses,
16889
16933
  backgroundColorStyles
16890
- } = useBackgroundColor(vue.toRef(props, 'color'));
16934
+ } = useBackgroundColor(() => props.color);
16891
16935
  const {
16892
16936
  borderClasses
16893
16937
  } = useBorder(props);
@@ -16934,7 +16978,7 @@
16934
16978
  const {
16935
16979
  backgroundColorClasses,
16936
16980
  backgroundColorStyles
16937
- } = useBackgroundColor(vue.toRef(props, 'color'));
16981
+ } = useBackgroundColor(() => props.color);
16938
16982
  useRender(() => {
16939
16983
  const sheetProps = VSheet.filterProps(props);
16940
16984
  const hasTitle = !!(props.title || slots.title);
@@ -16981,165 +17025,81 @@
16981
17025
 
16982
17026
  // Types
16983
17027
 
16984
- const firstDay = {
16985
- '001': 1,
16986
- AD: 1,
16987
- AE: 6,
16988
- AF: 6,
16989
- AG: 0,
16990
- AI: 1,
16991
- AL: 1,
16992
- AM: 1,
16993
- AN: 1,
16994
- AR: 1,
16995
- AS: 0,
16996
- AT: 1,
16997
- AU: 1,
16998
- AX: 1,
16999
- AZ: 1,
17000
- BA: 1,
17001
- BD: 0,
17002
- BE: 1,
17003
- BG: 1,
17004
- BH: 6,
17005
- BM: 1,
17006
- BN: 1,
17007
- BR: 0,
17008
- BS: 0,
17009
- BT: 0,
17010
- BW: 0,
17011
- BY: 1,
17012
- BZ: 0,
17013
- CA: 0,
17014
- CH: 1,
17015
- CL: 1,
17016
- CM: 1,
17017
- CN: 1,
17018
- CO: 0,
17019
- CR: 1,
17020
- CY: 1,
17021
- CZ: 1,
17022
- DE: 1,
17023
- DJ: 6,
17024
- DK: 1,
17025
- DM: 0,
17026
- DO: 0,
17027
- DZ: 6,
17028
- EC: 1,
17029
- EE: 1,
17030
- EG: 6,
17031
- ES: 1,
17032
- ET: 0,
17033
- FI: 1,
17034
- FJ: 1,
17035
- FO: 1,
17036
- FR: 1,
17037
- GB: 1,
17038
- 'GB-alt-variant': 0,
17039
- GE: 1,
17040
- GF: 1,
17041
- GP: 1,
17042
- GR: 1,
17043
- GT: 0,
17044
- GU: 0,
17045
- HK: 0,
17046
- HN: 0,
17047
- HR: 1,
17048
- HU: 1,
17049
- ID: 0,
17050
- IE: 1,
17051
- IL: 0,
17052
- IN: 0,
17053
- IQ: 6,
17054
- IR: 6,
17055
- IS: 1,
17056
- IT: 1,
17057
- JM: 0,
17058
- JO: 6,
17059
- JP: 0,
17060
- KE: 0,
17061
- KG: 1,
17062
- KH: 0,
17063
- KR: 0,
17064
- KW: 6,
17065
- KZ: 1,
17066
- LA: 0,
17067
- LB: 1,
17068
- LI: 1,
17069
- LK: 1,
17070
- LT: 1,
17071
- LU: 1,
17072
- LV: 1,
17073
- LY: 6,
17074
- MC: 1,
17075
- MD: 1,
17076
- ME: 1,
17077
- MH: 0,
17078
- MK: 1,
17079
- MM: 0,
17080
- MN: 1,
17081
- MO: 0,
17082
- MQ: 1,
17083
- MT: 0,
17084
- MV: 5,
17085
- MX: 0,
17086
- MY: 1,
17087
- MZ: 0,
17088
- NI: 0,
17089
- NL: 1,
17090
- NO: 1,
17091
- NP: 0,
17092
- NZ: 1,
17093
- OM: 6,
17094
- PA: 0,
17095
- PE: 0,
17096
- PH: 0,
17097
- PK: 0,
17098
- PL: 1,
17099
- PR: 0,
17100
- PT: 0,
17101
- PY: 0,
17102
- QA: 6,
17103
- RE: 1,
17104
- RO: 1,
17105
- RS: 1,
17106
- RU: 1,
17107
- SA: 0,
17108
- SD: 6,
17109
- SE: 1,
17110
- SG: 0,
17111
- SI: 1,
17112
- SK: 1,
17113
- SM: 1,
17114
- SV: 0,
17115
- SY: 6,
17116
- TH: 0,
17117
- TJ: 1,
17118
- TM: 1,
17119
- TR: 1,
17120
- TT: 0,
17121
- TW: 0,
17122
- UA: 1,
17123
- UM: 0,
17124
- US: 0,
17125
- UY: 1,
17126
- UZ: 1,
17127
- VA: 1,
17128
- VE: 0,
17129
- VI: 0,
17130
- VN: 1,
17131
- WS: 0,
17132
- XK: 1,
17133
- YE: 0,
17134
- ZA: 0,
17135
- ZW: 0
17136
- };
17028
+ function weekInfo(locale) {
17029
+ // https://simplelocalize.io/data/locales/
17030
+ // then `new Intl.Locale(...).getWeekInfo()`
17031
+ const code = locale.slice(-2).toUpperCase();
17032
+ switch (true) {
17033
+ case locale === 'GB-alt-variant':
17034
+ {
17035
+ return {
17036
+ firstDay: 0,
17037
+ firstWeekSize: 4
17038
+ };
17039
+ }
17040
+ case locale === '001':
17041
+ {
17042
+ return {
17043
+ firstDay: 1,
17044
+ firstWeekSize: 1
17045
+ };
17046
+ }
17047
+ case `AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE
17048
+ KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US
17049
+ VE VI WS YE ZA ZW`.includes(code):
17050
+ {
17051
+ return {
17052
+ firstDay: 0,
17053
+ firstWeekSize: 1
17054
+ };
17055
+ }
17056
+ case `AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV
17057
+ MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(code):
17058
+ {
17059
+ return {
17060
+ firstDay: 1,
17061
+ firstWeekSize: 1
17062
+ };
17063
+ }
17064
+ case `AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS
17065
+ IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(code):
17066
+ {
17067
+ return {
17068
+ firstDay: 1,
17069
+ firstWeekSize: 4
17070
+ };
17071
+ }
17072
+ case `AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY`.includes(code):
17073
+ {
17074
+ return {
17075
+ firstDay: 6,
17076
+ firstWeekSize: 1
17077
+ };
17078
+ }
17079
+ case code === 'MV':
17080
+ {
17081
+ return {
17082
+ firstDay: 5,
17083
+ firstWeekSize: 1
17084
+ };
17085
+ }
17086
+ case code === 'PT':
17087
+ {
17088
+ return {
17089
+ firstDay: 0,
17090
+ firstWeekSize: 4
17091
+ };
17092
+ }
17093
+ default:
17094
+ return null;
17095
+ }
17096
+ }
17137
17097
  function getWeekArray(date, locale, firstDayOfWeek) {
17138
17098
  const weeks = [];
17139
17099
  let currentWeek = [];
17140
17100
  const firstDayOfMonth = startOfMonth(date);
17141
17101
  const lastDayOfMonth = endOfMonth(date);
17142
- const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17102
+ const first = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17143
17103
  const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;
17144
17104
  const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;
17145
17105
  for (let i = 0; i < firstDayWeekIndex; i++) {
@@ -17170,7 +17130,7 @@
17170
17130
  return weeks;
17171
17131
  }
17172
17132
  function startOfWeek(date, locale, firstDayOfWeek) {
17173
- const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17133
+ const day = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17174
17134
  const d = new Date(date);
17175
17135
  while (d.getDay() !== day) {
17176
17136
  d.setDate(d.getDate() - 1);
@@ -17179,7 +17139,7 @@
17179
17139
  }
17180
17140
  function endOfWeek(date, locale) {
17181
17141
  const d = new Date(date);
17182
- const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
17142
+ const lastDay = ((weekInfo(locale)?.firstDay ?? 0) + 6) % 7;
17183
17143
  while (d.getDay() !== lastDay) {
17184
17144
  d.setDate(d.getDate() + 1);
17185
17145
  }
@@ -17214,7 +17174,7 @@
17214
17174
  }
17215
17175
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17216
17176
  function getWeekdays(locale, firstDayOfWeek) {
17217
- const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17177
+ const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17218
17178
  return createRange(7).map(i => {
17219
17179
  const weekday = new Date(sundayJanuarySecond2000);
17220
17180
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
@@ -17462,6 +17422,24 @@
17462
17422
  function getMonth(date) {
17463
17423
  return date.getMonth();
17464
17424
  }
17425
+ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
17426
+ const weekInfoFromLocale = weekInfo(locale);
17427
+ const weekStart = firstDayOfWeek ?? weekInfoFromLocale?.firstDay ?? 0;
17428
+ const minWeekSize = firstWeekMinSize ?? weekInfoFromLocale?.firstWeekSize ?? 1;
17429
+ function firstWeekSize(year) {
17430
+ const yearStart = new Date(year, 0, 1);
17431
+ return 7 - getDiff(yearStart, startOfWeek(yearStart, locale, weekStart), 'days');
17432
+ }
17433
+ let year = getYear(date);
17434
+ const currentWeekEnd = addDays(startOfWeek(date, locale, weekStart), 6);
17435
+ if (year < getYear(currentWeekEnd) && firstWeekSize(year + 1) >= minWeekSize) {
17436
+ year++;
17437
+ }
17438
+ const yearStart = new Date(year, 0, 1);
17439
+ const size = firstWeekSize(year);
17440
+ const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17441
+ return 1 + getDiff(date, d1w1, 'weeks');
17442
+ }
17465
17443
  function getDate(date) {
17466
17444
  return date.getDate();
17467
17445
  }
@@ -17601,10 +17579,12 @@
17601
17579
  return addMonths(date, amount);
17602
17580
  }
17603
17581
  getWeekArray(date, firstDayOfWeek) {
17604
- return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17582
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17583
+ return getWeekArray(date, this.locale, firstDay);
17605
17584
  }
17606
17585
  startOfWeek(date, firstDayOfWeek) {
17607
- return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17586
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17587
+ return startOfWeek(date, this.locale, firstDay);
17608
17588
  }
17609
17589
  endOfWeek(date) {
17610
17590
  return endOfWeek(date, this.locale);
@@ -17664,7 +17644,8 @@
17664
17644
  return getDiff(date, comparing, unit);
17665
17645
  }
17666
17646
  getWeekdays(firstDayOfWeek) {
17667
- return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17647
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17648
+ return getWeekdays(this.locale, firstDay);
17668
17649
  }
17669
17650
  getYear(date) {
17670
17651
  return getYear(date);
@@ -17672,6 +17653,10 @@
17672
17653
  getMonth(date) {
17673
17654
  return getMonth(date);
17674
17655
  }
17656
+ getWeek(date, firstDayOfWeek, firstWeekMinSize) {
17657
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17658
+ return getWeek(date, this.locale, firstDay, firstWeekMinSize);
17659
+ }
17675
17660
  getDate(date) {
17676
17661
  return getDate(date);
17677
17662
  }
@@ -17775,26 +17760,6 @@
17775
17760
  return createInstance(options, locale);
17776
17761
  }
17777
17762
 
17778
- // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
17779
- function getWeek(adapter, value) {
17780
- const date = adapter.toJsDate(value);
17781
- let year = date.getFullYear();
17782
- let d1w1 = new Date(year, 0, 1);
17783
- if (date < d1w1) {
17784
- year = year - 1;
17785
- d1w1 = new Date(year, 0, 1);
17786
- } else {
17787
- const tv = new Date(year + 1, 0, 1);
17788
- if (date >= tv) {
17789
- year = year + 1;
17790
- d1w1 = tv;
17791
- }
17792
- }
17793
- const diffTime = Math.abs(date.getTime() - d1w1.getTime());
17794
- const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
17795
- return Math.floor(diffDays / 7) + 1;
17796
- }
17797
-
17798
17763
  // Types
17799
17764
 
17800
17765
  const makeVColorPickerProps = propsFactory({
@@ -17998,7 +17963,6 @@
17998
17963
  const vVirtualScrollRef = vue.ref();
17999
17964
  const selectionIndex = vue.shallowRef(-1);
18000
17965
  let cleared = false;
18001
- const color = vue.computed(() => vTextFieldRef.value?.color);
18002
17966
  const {
18003
17967
  items,
18004
17968
  transformIn,
@@ -18007,7 +17971,7 @@
18007
17971
  const {
18008
17972
  textColorClasses,
18009
17973
  textColorStyles
18010
- } = useTextColor(color);
17974
+ } = useTextColor(() => vTextFieldRef.value?.color);
18011
17975
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
18012
17976
  const transformed = transformOut(v);
18013
17977
  return props.multiple ? transformed : transformed[0] ?? null;
@@ -18062,7 +18026,7 @@
18062
18026
  _menu.value = v;
18063
18027
  }
18064
18028
  });
18065
- const label = vue.computed(() => menu.value ? props.closeText : props.openText);
18029
+ const label = vue.toRef(() => menu.value ? props.closeText : props.openText);
18066
18030
  vue.watch(_search, value => {
18067
18031
  if (cleared) {
18068
18032
  // wait for clear to finish, VTextField sets _search to null
@@ -18568,7 +18532,7 @@
18568
18532
  }, 'DataTable-expand');
18569
18533
  const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
18570
18534
  function provideExpanded(props) {
18571
- const expandOnClick = vue.toRef(props, 'expandOnClick');
18535
+ const expandOnClick = vue.toRef(() => props.expandOnClick);
18572
18536
  const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
18573
18537
  return new Set(v);
18574
18538
  }, v => {
@@ -18755,23 +18719,23 @@
18755
18719
  search
18756
18720
  } = _ref;
18757
18721
  const vm = getCurrentInstance('VDataTable');
18758
- const options = vue.computed(() => ({
18722
+ const options = () => ({
18759
18723
  page: page.value,
18760
18724
  itemsPerPage: itemsPerPage.value,
18761
18725
  sortBy: sortBy.value,
18762
18726
  groupBy: groupBy.value,
18763
18727
  search: search.value
18764
- }));
18728
+ });
18765
18729
  let oldOptions = null;
18766
- vue.watch(options, () => {
18767
- if (deepEqual(oldOptions, options.value)) return;
18730
+ vue.watch(options, value => {
18731
+ if (deepEqual(oldOptions, value)) return;
18768
18732
 
18769
18733
  // Reset page when searching
18770
- if (oldOptions && oldOptions.search !== options.value.search) {
18734
+ if (oldOptions && oldOptions.search !== value.search) {
18771
18735
  page.value = 1;
18772
18736
  }
18773
- vm.emit('update:options', options.value);
18774
- oldOptions = options.value;
18737
+ vm.emit('update:options', value);
18738
+ oldOptions = value;
18775
18739
  }, {
18776
18740
  deep: true,
18777
18741
  immediate: true
@@ -19052,7 +19016,7 @@
19052
19016
  });
19053
19017
  return !!items.length && isSelected(items);
19054
19018
  });
19055
- const showSelectAll = vue.computed(() => selectStrategy.value.showSelectAll);
19019
+ const showSelectAll = vue.toRef(() => selectStrategy.value.showSelectAll);
19056
19020
  const data = {
19057
19021
  toggleSelect,
19058
19022
  select,
@@ -19090,8 +19054,8 @@
19090
19054
  const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
19091
19055
  function createSort(props) {
19092
19056
  const sortBy = useProxiedModel(props, 'sortBy');
19093
- const mustSort = vue.toRef(props, 'mustSort');
19094
- const multiSort = vue.toRef(props, 'multiSort');
19057
+ const mustSort = vue.toRef(() => props.mustSort);
19058
+ const multiSort = vue.toRef(() => props.multiSort);
19095
19059
  return {
19096
19060
  sortBy,
19097
19061
  mustSort,
@@ -19309,7 +19273,7 @@
19309
19273
  slots
19310
19274
  } = _ref;
19311
19275
  const groupBy = useProxiedModel(props, 'groupBy');
19312
- const search = vue.toRef(props, 'search');
19276
+ const search = vue.toRef(() => props.search);
19313
19277
  const {
19314
19278
  items
19315
19279
  } = useDataIteratorItems(props);
@@ -19353,7 +19317,7 @@
19353
19317
  const {
19354
19318
  flatItems
19355
19319
  } = useGroupedItems(sortedItems, groupBy, opened);
19356
- const itemsLength = vue.computed(() => flatItems.value.length);
19320
+ const itemsLength = vue.toRef(() => flatItems.value.length);
19357
19321
  const {
19358
19322
  startIndex,
19359
19323
  stopIndex,
@@ -19633,13 +19597,13 @@
19633
19597
  } = useRefs();
19634
19598
  provideDefaults({
19635
19599
  VPaginationBtn: {
19636
- color: vue.toRef(props, 'color'),
19637
- border: vue.toRef(props, 'border'),
19638
- density: vue.toRef(props, 'density'),
19639
- size: vue.toRef(props, 'size'),
19640
- variant: vue.toRef(props, 'variant'),
19641
- rounded: vue.toRef(props, 'rounded'),
19642
- elevation: vue.toRef(props, 'elevation')
19600
+ color: vue.toRef(() => props.color),
19601
+ border: vue.toRef(() => props.border),
19602
+ density: vue.toRef(() => props.density),
19603
+ size: vue.toRef(() => props.size),
19604
+ variant: vue.toRef(() => props.variant),
19605
+ rounded: vue.toRef(() => props.rounded),
19606
+ elevation: vue.toRef(() => props.elevation)
19643
19607
  }
19644
19608
  });
19645
19609
  const items = vue.computed(() => {
@@ -20280,7 +20244,7 @@
20280
20244
  const {
20281
20245
  backgroundColorClasses,
20282
20246
  backgroundColorStyles
20283
- } = useBackgroundColor(props, 'color');
20247
+ } = useBackgroundColor(() => props.color);
20284
20248
  const {
20285
20249
  displayClasses,
20286
20250
  mobile
@@ -20938,13 +20902,13 @@
20938
20902
  filterFunctions
20939
20903
  } = createHeaders(props, {
20940
20904
  groupBy,
20941
- showSelect: vue.toRef(props, 'showSelect'),
20942
- showExpand: vue.toRef(props, 'showExpand')
20905
+ showSelect: vue.toRef(() => props.showSelect),
20906
+ showExpand: vue.toRef(() => props.showExpand)
20943
20907
  });
20944
20908
  const {
20945
20909
  items
20946
20910
  } = useDataTableItems(props, columns);
20947
- const search = vue.toRef(props, 'search');
20911
+ const search = vue.toRef(() => props.search);
20948
20912
  const {
20949
20913
  filteredItems
20950
20914
  } = useFilter(props, items, search, {
@@ -21027,10 +20991,10 @@
21027
20991
  });
21028
20992
  provideDefaults({
21029
20993
  VDataTableRows: {
21030
- hideNoData: vue.toRef(props, 'hideNoData'),
21031
- noDataText: vue.toRef(props, 'noDataText'),
21032
- loading: vue.toRef(props, 'loading'),
21033
- loadingText: vue.toRef(props, 'loadingText')
20994
+ hideNoData: vue.toRef(() => props.hideNoData),
20995
+ noDataText: vue.toRef(() => props.noDataText),
20996
+ loading: vue.toRef(() => props.loading),
20997
+ loadingText: vue.toRef(() => props.loadingText)
21034
20998
  }
21035
20999
  });
21036
21000
  const slotProps = vue.computed(() => ({
@@ -21127,13 +21091,13 @@
21127
21091
  sortRawFunctions
21128
21092
  } = createHeaders(props, {
21129
21093
  groupBy,
21130
- showSelect: vue.toRef(props, 'showSelect'),
21131
- showExpand: vue.toRef(props, 'showExpand')
21094
+ showSelect: vue.toRef(() => props.showSelect),
21095
+ showExpand: vue.toRef(() => props.showExpand)
21132
21096
  });
21133
21097
  const {
21134
21098
  items
21135
21099
  } = useDataTableItems(props, columns);
21136
- const search = vue.toRef(props, 'search');
21100
+ const search = vue.toRef(() => props.search);
21137
21101
  const {
21138
21102
  filteredItems
21139
21103
  } = useFilter(props, items, search, {
@@ -21209,10 +21173,10 @@
21209
21173
  });
21210
21174
  provideDefaults({
21211
21175
  VDataTableRows: {
21212
- hideNoData: vue.toRef(props, 'hideNoData'),
21213
- noDataText: vue.toRef(props, 'noDataText'),
21214
- loading: vue.toRef(props, 'loading'),
21215
- loadingText: vue.toRef(props, 'loadingText')
21176
+ hideNoData: vue.toRef(() => props.hideNoData),
21177
+ noDataText: vue.toRef(() => props.noDataText),
21178
+ loading: vue.toRef(() => props.loading),
21179
+ loadingText: vue.toRef(() => props.loadingText)
21216
21180
  }
21217
21181
  });
21218
21182
  const slotProps = vue.computed(() => ({
@@ -21365,8 +21329,8 @@
21365
21329
  headers
21366
21330
  } = createHeaders(props, {
21367
21331
  groupBy,
21368
- showSelect: vue.toRef(props, 'showSelect'),
21369
- showExpand: vue.toRef(props, 'showExpand')
21332
+ showSelect: vue.toRef(() => props.showSelect),
21333
+ showExpand: vue.toRef(() => props.showExpand)
21370
21334
  });
21371
21335
  const {
21372
21336
  items
@@ -21421,7 +21385,7 @@
21421
21385
  itemsPerPage,
21422
21386
  sortBy,
21423
21387
  groupBy,
21424
- search: vue.toRef(props, 'search')
21388
+ search: vue.toRef(() => props.search)
21425
21389
  });
21426
21390
  vue.provide('v-data-table', {
21427
21391
  toggleSort,
@@ -21429,10 +21393,10 @@
21429
21393
  });
21430
21394
  provideDefaults({
21431
21395
  VDataTableRows: {
21432
- hideNoData: vue.toRef(props, 'hideNoData'),
21433
- noDataText: vue.toRef(props, 'noDataText'),
21434
- loading: vue.toRef(props, 'loading'),
21435
- loadingText: vue.toRef(props, 'loadingText')
21396
+ hideNoData: vue.toRef(() => props.hideNoData),
21397
+ noDataText: vue.toRef(() => props.noDataText),
21398
+ loading: vue.toRef(() => props.loading),
21399
+ loadingText: vue.toRef(() => props.loadingText)
21436
21400
  }
21437
21401
  });
21438
21402
  const slotProps = vue.computed(() => ({
@@ -21902,7 +21866,7 @@
21902
21866
  const {
21903
21867
  backgroundColorClasses,
21904
21868
  backgroundColorStyles
21905
- } = useBackgroundColor(props, 'color');
21869
+ } = useBackgroundColor(() => props.color);
21906
21870
  function onClick() {
21907
21871
  emit('click');
21908
21872
  }
@@ -21983,7 +21947,7 @@
21983
21947
  },
21984
21948
  firstDayOfWeek: {
21985
21949
  type: [Number, String],
21986
- default: 0
21950
+ default: undefined
21987
21951
  }
21988
21952
  }, 'calendar');
21989
21953
  function useCalendar(props) {
@@ -22006,14 +21970,12 @@
22006
21970
  return adapter.setMonth(date, value);
22007
21971
  }, v => adapter.getMonth(v));
22008
21972
  const weekDays = vue.computed(() => {
22009
- const firstDayOfWeek = Number(props.firstDayOfWeek);
22010
-
21973
+ const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22011
21974
  // Always generate all days, regardless of props.weekdays
22012
21975
  return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22013
21976
  });
22014
21977
  const weeksInMonth = vue.computed(() => {
22015
- const firstDayOfWeek = Number(props.firstDayOfWeek);
22016
- const weeks = adapter.getWeekArray(month.value, firstDayOfWeek);
21978
+ const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
22017
21979
  const days = weeks.flat();
22018
21980
 
22019
21981
  // Make sure there's always 6 weeks in month (6 * 7 days)
@@ -22043,21 +22005,21 @@
22043
22005
  const isSame = adapter.isSameDay(date, month.value);
22044
22006
  return {
22045
22007
  date,
22046
- isoDate,
22047
22008
  formatted: adapter.format(date, 'keyboardDate'),
22048
- year: adapter.getYear(date),
22049
- month: adapter.getMonth(date),
22050
- isDisabled: isDisabled(date),
22051
- isWeekStart: index % 7 === 0,
22052
- isWeekEnd: index % 7 === 6,
22053
- isToday: adapter.isSameDay(date, today),
22054
22009
  isAdjacent,
22055
- isHidden: isAdjacent && !props.showAdjacentMonths,
22056
- isStart,
22057
- isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22010
+ isDisabled: isDisabled(date),
22058
22011
  isEnd,
22012
+ isHidden: isAdjacent && !props.showAdjacentMonths,
22059
22013
  isSame,
22060
- localized: adapter.format(date, 'dayOfMonth')
22014
+ isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22015
+ isStart,
22016
+ isToday: adapter.isSameDay(date, today),
22017
+ isWeekEnd: index % 7 === 6,
22018
+ isWeekStart: index % 7 === 0,
22019
+ isoDate,
22020
+ localized: adapter.format(date, 'dayOfMonth'),
22021
+ month: adapter.getMonth(date),
22022
+ year: adapter.getYear(date)
22061
22023
  };
22062
22024
  });
22063
22025
  }
@@ -22077,7 +22039,7 @@
22077
22039
  });
22078
22040
  const weekNumbers = vue.computed(() => {
22079
22041
  return weeksInMonth.value.map(week => {
22080
- return week.length ? getWeek(adapter, week[0]) : null;
22042
+ return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null;
22081
22043
  });
22082
22044
  });
22083
22045
  function isDisabled(value) {
@@ -22145,7 +22107,7 @@
22145
22107
  const rangeStart = vue.shallowRef();
22146
22108
  const rangeStop = vue.shallowRef();
22147
22109
  const isReverse = vue.shallowRef(false);
22148
- const transition = vue.computed(() => {
22110
+ const transition = vue.toRef(() => {
22149
22111
  return !isReverse.value ? props.transition : props.reverseTransition;
22150
22112
  });
22151
22113
  if (props.multiple === 'range' && model.value.length > 0) {
@@ -22525,7 +22487,7 @@
22525
22487
  }
22526
22488
  return value && adapter.isValid(value) ? value : today;
22527
22489
  });
22528
- const headerColor = vue.computed(() => props.headerColor ?? props.color);
22490
+ const headerColor = vue.toRef(() => props.headerColor ?? props.color);
22529
22491
  const month = vue.ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22530
22492
  const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22531
22493
  const isReversing = vue.shallowRef(false);
@@ -22542,8 +22504,8 @@
22542
22504
  date = adapter.setYear(date, year.value);
22543
22505
  return adapter.format(date, 'monthAndYear');
22544
22506
  });
22545
- // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22546
- const headerTransition = vue.computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22507
+ // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22508
+ const headerTransition = vue.toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22547
22509
  const disabled = vue.computed(() => {
22548
22510
  if (props.disabled) return true;
22549
22511
  const targets = [];
@@ -22755,7 +22717,7 @@
22755
22717
  const {
22756
22718
  backgroundColorClasses,
22757
22719
  backgroundColorStyles
22758
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
22720
+ } = useBackgroundColor(() => props.bgColor);
22759
22721
  const {
22760
22722
  dimensionStyles
22761
22723
  } = useDimension(props);
@@ -22918,7 +22880,7 @@
22918
22880
  const {
22919
22881
  backgroundColorClasses,
22920
22882
  backgroundColorStyles
22921
- } = useBackgroundColor(props, 'color');
22883
+ } = useBackgroundColor(() => props.color);
22922
22884
  const {
22923
22885
  dimensionStyles
22924
22886
  } = useDimension(props);
@@ -22929,7 +22891,7 @@
22929
22891
  expandIcon: props.expandIcon,
22930
22892
  readonly: props.readonly
22931
22893
  }));
22932
- const icon = vue.computed(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22894
+ const icon = vue.toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
22933
22895
  useRender(() => vue.withDirectives(vue.createVNode("button", {
22934
22896
  "class": ['v-expansion-panel-title', {
22935
22897
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
@@ -22984,14 +22946,14 @@
22984
22946
  const {
22985
22947
  backgroundColorClasses,
22986
22948
  backgroundColorStyles
22987
- } = useBackgroundColor(props, 'bgColor');
22949
+ } = useBackgroundColor(() => props.bgColor);
22988
22950
  const {
22989
22951
  elevationClasses
22990
22952
  } = useElevation(props);
22991
22953
  const {
22992
22954
  roundedClasses
22993
22955
  } = useRounded(props);
22994
- const isDisabled = vue.computed(() => groupItem?.disabled.value || props.disabled);
22956
+ const isDisabled = vue.toRef(() => groupItem?.disabled.value || props.disabled);
22995
22957
  const selectedIndices = vue.computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
22996
22958
  if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
22997
22959
  return arr;
@@ -23082,21 +23044,21 @@
23082
23044
  const {
23083
23045
  themeClasses
23084
23046
  } = provideTheme(props);
23085
- const variantClass = vue.computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23047
+ const variantClass = vue.toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`);
23086
23048
  provideDefaults({
23087
23049
  VExpansionPanel: {
23088
- bgColor: vue.toRef(props, 'bgColor'),
23089
- collapseIcon: vue.toRef(props, 'collapseIcon'),
23090
- color: vue.toRef(props, 'color'),
23091
- eager: vue.toRef(props, 'eager'),
23092
- elevation: vue.toRef(props, 'elevation'),
23093
- expandIcon: vue.toRef(props, 'expandIcon'),
23094
- focusable: vue.toRef(props, 'focusable'),
23095
- hideActions: vue.toRef(props, 'hideActions'),
23096
- readonly: vue.toRef(props, 'readonly'),
23097
- ripple: vue.toRef(props, 'ripple'),
23098
- rounded: vue.toRef(props, 'rounded'),
23099
- static: vue.toRef(props, 'static')
23050
+ bgColor: vue.toRef(() => props.bgColor),
23051
+ collapseIcon: vue.toRef(() => props.collapseIcon),
23052
+ color: vue.toRef(() => props.color),
23053
+ eager: vue.toRef(() => props.eager),
23054
+ elevation: vue.toRef(() => props.elevation),
23055
+ expandIcon: vue.toRef(() => props.expandIcon),
23056
+ focusable: vue.toRef(() => props.focusable),
23057
+ hideActions: vue.toRef(() => props.hideActions),
23058
+ readonly: vue.toRef(() => props.readonly),
23059
+ ripple: vue.toRef(() => props.ripple),
23060
+ rounded: vue.toRef(() => props.rounded),
23061
+ static: vue.toRef(() => props.static)
23100
23062
  }
23101
23063
  });
23102
23064
  useRender(() => vue.createVNode(props.tag, {
@@ -23158,7 +23120,7 @@
23158
23120
  if (!entries.length) return;
23159
23121
  height.value = entries[0].target.clientHeight;
23160
23122
  });
23161
- const hasPosition = vue.computed(() => props.app || props.absolute);
23123
+ const hasPosition = vue.toRef(() => props.app || props.absolute);
23162
23124
  const position = vue.computed(() => {
23163
23125
  if (!hasPosition.value) return false;
23164
23126
  return props.location?.split(' ').shift() ?? 'bottom';
@@ -23175,7 +23137,7 @@
23175
23137
  layoutSize: vue.computed(() => props.layout ? height.value + 24 : 0),
23176
23138
  elementSize: vue.computed(() => height.value + 24),
23177
23139
  active: vue.computed(() => props.app && model.value),
23178
- absolute: vue.toRef(props, 'absolute')
23140
+ absolute: vue.toRef(() => props.absolute)
23179
23141
  });
23180
23142
  vue.watchEffect(() => {
23181
23143
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23300,7 +23262,7 @@
23300
23262
  const vInputRef = vue.ref();
23301
23263
  const vFieldRef = vue.ref();
23302
23264
  const inputRef = vue.ref();
23303
- const isActive = vue.computed(() => isFocused.value || props.active);
23265
+ const isActive = vue.toRef(() => isFocused.value || props.active);
23304
23266
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
23305
23267
  function onFocus() {
23306
23268
  if (inputRef.value !== document.activeElement) {
@@ -23473,7 +23435,7 @@
23473
23435
  const {
23474
23436
  backgroundColorClasses,
23475
23437
  backgroundColorStyles
23476
- } = useBackgroundColor(vue.toRef(props, 'color'));
23438
+ } = useBackgroundColor(() => props.color);
23477
23439
  const {
23478
23440
  borderClasses
23479
23441
  } = useBorder(props);
@@ -23495,11 +23457,11 @@
23495
23457
  const layout = useLayoutItem({
23496
23458
  id: props.name,
23497
23459
  order: vue.computed(() => parseInt(props.order, 10)),
23498
- position: vue.computed(() => 'bottom'),
23460
+ position: vue.toRef(() => 'bottom'),
23499
23461
  layoutSize: height,
23500
23462
  elementSize: vue.computed(() => props.height === 'auto' ? undefined : height.value),
23501
- active: vue.computed(() => props.app),
23502
- absolute: vue.toRef(props, 'absolute')
23463
+ active: vue.toRef(() => props.app),
23464
+ absolute: vue.toRef(() => props.absolute)
23503
23465
  });
23504
23466
  vue.watchEffect(() => {
23505
23467
  layoutItemStyles.value = layout.layoutItemStyles.value;
@@ -23972,11 +23934,11 @@
23972
23934
  } = useLayoutItem({
23973
23935
  id: props.name,
23974
23936
  order: vue.computed(() => parseInt(props.order, 10)),
23975
- position: vue.toRef(props, 'position'),
23976
- elementSize: vue.toRef(props, 'size'),
23977
- layoutSize: vue.toRef(props, 'size'),
23978
- active: vue.toRef(props, 'modelValue'),
23979
- absolute: vue.toRef(props, 'absolute')
23937
+ position: vue.toRef(() => props.position),
23938
+ elementSize: vue.toRef(() => props.size),
23939
+ layoutSize: vue.toRef(() => props.size),
23940
+ active: vue.toRef(() => props.modelValue),
23941
+ absolute: vue.toRef(() => props.absolute)
23980
23942
  });
23981
23943
  return () => vue.createVNode("div", {
23982
23944
  "class": ['v-layout-item', props.class],
@@ -24508,7 +24470,7 @@
24508
24470
  const {
24509
24471
  backgroundColorClasses,
24510
24472
  backgroundColorStyles
24511
- } = useBackgroundColor(vue.toRef(props, 'color'));
24473
+ } = useBackgroundColor(() => props.color);
24512
24474
  const {
24513
24475
  elevationClasses
24514
24476
  } = useElevation(props);
@@ -24541,7 +24503,7 @@
24541
24503
  const location = vue.computed(() => {
24542
24504
  return toPhysical(props.location, isRtl.value);
24543
24505
  });
24544
- const isPersistent = vue.computed(() => props.persistent);
24506
+ const isPersistent = vue.toRef(() => props.persistent);
24545
24507
  const isTemporary = vue.computed(() => !props.permanent && (mobile.value || props.temporary));
24546
24508
  const isSticky = vue.computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
24547
24509
  useToggleScope(() => props.expandOnHover && props.rail != null, () => {
@@ -24567,7 +24529,7 @@
24567
24529
  isActive,
24568
24530
  isTemporary,
24569
24531
  width,
24570
- touchless: vue.toRef(props, 'touchless'),
24532
+ touchless: vue.toRef(() => props.touchless),
24571
24533
  position: location
24572
24534
  });
24573
24535
  const layoutSize = vue.computed(() => {
@@ -24584,7 +24546,7 @@
24584
24546
  layoutSize,
24585
24547
  elementSize: width,
24586
24548
  active: vue.readonly(isActive),
24587
- disableTransitions: vue.computed(() => isDragging.value),
24549
+ disableTransitions: vue.toRef(() => isDragging.value),
24588
24550
  absolute: vue.computed(() =>
24589
24551
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
24590
24552
  props.absolute || isSticky.value && typeof isStuck.value !== 'string')
@@ -24597,9 +24559,9 @@
24597
24559
  isSticky,
24598
24560
  layoutItemStyles
24599
24561
  });
24600
- const scrimColor = useBackgroundColor(vue.computed(() => {
24562
+ const scrimColor = useBackgroundColor(() => {
24601
24563
  return typeof props.scrim === 'string' ? props.scrim : null;
24602
- }));
24564
+ });
24603
24565
  const scrimStyles = vue.computed(() => ({
24604
24566
  ...(isDragging.value ? {
24605
24567
  opacity: dragProgress.value * 0.2,
@@ -24813,24 +24775,24 @@
24813
24775
  const controlVariant = vue.computed(() => {
24814
24776
  return props.hideInput ? 'stacked' : props.controlVariant;
24815
24777
  });
24816
- const incrementIcon = vue.computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24817
- const decrementIcon = vue.computed(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24818
- const controlNodeSize = vue.computed(() => controlVariant.value === 'split' ? 'default' : 'small');
24819
- const controlNodeDefaultHeight = vue.computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24820
- const incrementSlotProps = vue.computed(() => ({
24778
+ const incrementIcon = vue.toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
24779
+ const decrementIcon = vue.toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');
24780
+ const controlNodeSize = vue.toRef(() => controlVariant.value === 'split' ? 'default' : 'small');
24781
+ const controlNodeDefaultHeight = vue.toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
24782
+ const incrementSlotProps = {
24821
24783
  props: {
24822
24784
  onClick: onControlClick,
24823
24785
  onPointerup: onControlMouseup,
24824
24786
  onPointerdown: onUpControlMousedown
24825
24787
  }
24826
- }));
24827
- const decrementSlotProps = vue.computed(() => ({
24788
+ };
24789
+ const decrementSlotProps = {
24828
24790
  props: {
24829
24791
  onClick: onControlClick,
24830
24792
  onPointerup: onControlMouseup,
24831
24793
  onPointerdown: onDownControlMousedown
24832
24794
  }
24833
- }));
24795
+ };
24834
24796
  vue.watch(() => props.precision, () => formatInputValue());
24835
24797
  vue.onMounted(() => {
24836
24798
  clampModel();
@@ -24982,7 +24944,7 @@
24982
24944
  }
24983
24945
  }
24984
24946
  }, {
24985
- default: () => [slots.increment(incrementSlotProps.value)]
24947
+ default: () => [slots.increment(incrementSlotProps)]
24986
24948
  });
24987
24949
  }
24988
24950
  function decrementControlNode() {
@@ -25011,7 +24973,7 @@
25011
24973
  }
25012
24974
  }
25013
24975
  }, {
25014
- default: () => [slots.decrement(decrementSlotProps.value)]
24976
+ default: () => [slots.decrement(decrementSlotProps)]
25015
24977
  });
25016
24978
  }
25017
24979
  function controlNode() {
@@ -25211,12 +25173,12 @@
25211
25173
  }
25212
25174
  provideDefaults({
25213
25175
  VField: {
25214
- color: vue.computed(() => props.color),
25215
- bgColor: vue.computed(() => props.color),
25216
- baseColor: vue.computed(() => props.baseColor),
25217
- disabled: vue.computed(() => props.disabled),
25218
- error: vue.computed(() => props.error),
25219
- variant: vue.computed(() => props.variant)
25176
+ color: vue.toRef(() => props.color),
25177
+ bgColor: vue.toRef(() => props.color),
25178
+ baseColor: vue.toRef(() => props.baseColor),
25179
+ disabled: vue.toRef(() => props.disabled),
25180
+ error: vue.toRef(() => props.error),
25181
+ variant: vue.toRef(() => props.variant)
25220
25182
  }
25221
25183
  }, {
25222
25184
  scoped: true
@@ -26017,7 +25979,7 @@
26017
25979
  const {
26018
25980
  backgroundColorClasses,
26019
25981
  backgroundColorStyles
26020
- } = useBackgroundColor(vue.toRef(props, 'color'));
25982
+ } = useBackgroundColor(() => props.color);
26021
25983
  const {
26022
25984
  dimensionStyles
26023
25985
  } = useDimension(props);
@@ -26816,7 +26778,7 @@
26816
26778
  const {
26817
26779
  textColorClasses,
26818
26780
  textColorStyles
26819
- } = useTextColor(vue.toRef(props, 'color'));
26781
+ } = useTextColor(() => props.color);
26820
26782
  const hasLabels = vue.computed(() => {
26821
26783
  return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
26822
26784
  });
@@ -27362,11 +27324,11 @@
27362
27324
  } = useFocus(props);
27363
27325
  const control = vue.ref();
27364
27326
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
27365
- const loaderColor = vue.computed(() => {
27327
+ const loaderColor = vue.toRef(() => {
27366
27328
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
27367
27329
  });
27368
27330
  const uid = vue.useId();
27369
- const id = vue.computed(() => props.id || `switch-${uid}`);
27331
+ const id = vue.toRef(() => props.id || `switch-${uid}`);
27370
27332
  function onChange() {
27371
27333
  if (indeterminate.value) {
27372
27334
  indeterminate.value = false;
@@ -27517,7 +27479,7 @@
27517
27479
  const {
27518
27480
  backgroundColorClasses,
27519
27481
  backgroundColorStyles
27520
- } = useBackgroundColor(vue.toRef(props, 'color'));
27482
+ } = useBackgroundColor(() => props.color);
27521
27483
  const {
27522
27484
  elevationClasses
27523
27485
  } = useElevation(props);
@@ -27537,7 +27499,7 @@
27537
27499
  layoutSize: height,
27538
27500
  elementSize: height,
27539
27501
  active: vue.computed(() => true),
27540
- absolute: vue.toRef(props, 'absolute')
27502
+ absolute: vue.toRef(() => props.absolute)
27541
27503
  });
27542
27504
  useRender(() => vue.createVNode(props.tag, {
27543
27505
  "class": ['v-system-bar', {
@@ -27579,7 +27541,7 @@
27579
27541
  const {
27580
27542
  textColorClasses: sliderColorClasses,
27581
27543
  textColorStyles: sliderColorStyles
27582
- } = useTextColor(props, 'sliderColor');
27544
+ } = useTextColor(() => props.sliderColor);
27583
27545
  const rootEl = vue.ref();
27584
27546
  const sliderEl = vue.ref();
27585
27547
  const isHorizontal = vue.computed(() => props.direction === 'horizontal');
@@ -27772,18 +27734,18 @@
27772
27734
  const {
27773
27735
  backgroundColorClasses,
27774
27736
  backgroundColorStyles
27775
- } = useBackgroundColor(vue.toRef(props, 'bgColor'));
27737
+ } = useBackgroundColor(() => props.bgColor);
27776
27738
  const {
27777
27739
  scopeId
27778
27740
  } = useScopeId();
27779
27741
  provideDefaults({
27780
27742
  VTab: {
27781
- color: vue.toRef(props, 'color'),
27782
- direction: vue.toRef(props, 'direction'),
27783
- stacked: vue.toRef(props, 'stacked'),
27784
- fixed: vue.toRef(props, 'fixedTabs'),
27785
- sliderColor: vue.toRef(props, 'sliderColor'),
27786
- hideSlider: vue.toRef(props, 'hideSlider')
27743
+ color: vue.toRef(() => props.color),
27744
+ direction: vue.toRef(() => props.direction),
27745
+ stacked: vue.toRef(() => props.stacked),
27746
+ fixed: vue.toRef(() => props.fixedTabs),
27747
+ sliderColor: vue.toRef(() => props.sliderColor),
27748
+ hideSlider: vue.toRef(() => props.hideSlider)
27787
27749
  }
27788
27750
  });
27789
27751
  useRender(() => {
@@ -28133,7 +28095,7 @@
28133
28095
  const {
28134
28096
  backgroundColorStyles,
28135
28097
  backgroundColorClasses
28136
- } = useBackgroundColor(vue.toRef(props, 'dotColor'));
28098
+ } = useBackgroundColor(() => props.dotColor);
28137
28099
  const {
28138
28100
  roundedClasses
28139
28101
  } = useRounded(props, 'v-timeline-divider__dot');
@@ -28143,7 +28105,7 @@
28143
28105
  const {
28144
28106
  backgroundColorClasses: lineColorClasses,
28145
28107
  backgroundColorStyles: lineColorStyles
28146
- } = useBackgroundColor(vue.toRef(props, 'lineColor'));
28108
+ } = useBackgroundColor(() => props.lineColor);
28147
28109
  useRender(() => vue.createVNode("div", {
28148
28110
  "class": ['v-timeline-divider', {
28149
28111
  'v-timeline-divider--fill-dot': props.fillDot
@@ -28314,17 +28276,17 @@
28314
28276
  } = useRtl();
28315
28277
  provideDefaults({
28316
28278
  VTimelineDivider: {
28317
- lineColor: vue.toRef(props, 'lineColor')
28279
+ lineColor: vue.toRef(() => props.lineColor)
28318
28280
  },
28319
28281
  VTimelineItem: {
28320
- density: vue.toRef(props, 'density'),
28321
- dotColor: vue.toRef(props, 'dotColor'),
28322
- fillDot: vue.toRef(props, 'fillDot'),
28323
- hideOpposite: vue.toRef(props, 'hideOpposite'),
28324
- iconColor: vue.toRef(props, 'iconColor'),
28325
- lineColor: vue.toRef(props, 'lineColor'),
28326
- lineInset: vue.toRef(props, 'lineInset'),
28327
- size: vue.toRef(props, 'size')
28282
+ density: vue.toRef(() => props.density),
28283
+ dotColor: vue.toRef(() => props.dotColor),
28284
+ fillDot: vue.toRef(() => props.fillDot),
28285
+ hideOpposite: vue.toRef(() => props.hideOpposite),
28286
+ iconColor: vue.toRef(() => props.iconColor),
28287
+ lineColor: vue.toRef(() => props.lineColor),
28288
+ lineInset: vue.toRef(() => props.lineInset),
28289
+ size: vue.toRef(() => props.size)
28328
28290
  }
28329
28291
  });
28330
28292
  const sideClasses = vue.computed(() => {
@@ -28371,9 +28333,9 @@
28371
28333
  } = _ref;
28372
28334
  provideDefaults({
28373
28335
  VBtn: {
28374
- color: vue.toRef(props, 'color'),
28336
+ color: vue.toRef(() => props.color),
28375
28337
  height: 'inherit',
28376
- variant: vue.toRef(props, 'variant')
28338
+ variant: vue.toRef(() => props.variant)
28377
28339
  }
28378
28340
  });
28379
28341
  useRender(() => vue.createVNode("div", {
@@ -28420,7 +28382,7 @@
28420
28382
  scopeId
28421
28383
  } = useScopeId();
28422
28384
  const uid = vue.useId();
28423
- const id = vue.computed(() => props.id || `v-tooltip-${uid}`);
28385
+ const id = vue.toRef(() => props.id || `v-tooltip-${uid}`);
28424
28386
  const overlay = vue.ref();
28425
28387
  const location = vue.computed(() => {
28426
28388
  return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
@@ -28428,7 +28390,7 @@
28428
28390
  const origin = vue.computed(() => {
28429
28391
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28430
28392
  });
28431
- const transition = vue.computed(() => {
28393
+ const transition = vue.toRef(() => {
28432
28394
  if (props.transition) return props.transition;
28433
28395
  return isActive.value ? 'scale-transition' : 'fade-transition';
28434
28396
  });
@@ -28507,13 +28469,19 @@
28507
28469
  }, 'VCalendarIntervalEvent');
28508
28470
  const VCalendarIntervalEvent = genericComponent()({
28509
28471
  name: 'VCalendarIntervalEvent',
28472
+ inheritAttrs: false,
28510
28473
  props: makeVCalendarIntervalEventProps(),
28511
- setup(props) {
28474
+ setup(props, _ref) {
28475
+ let {
28476
+ attrs,
28477
+ emit,
28478
+ slots
28479
+ } = _ref;
28512
28480
  const adapter = useDate();
28513
28481
  const calcHeight = () => {
28514
- if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
28482
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.end, props.interval?.end)) {
28515
28483
  return {
28516
- height: '100%',
28484
+ height: `${props.intervalHeight}px`,
28517
28485
  margin: convertToUnit(0)
28518
28486
  };
28519
28487
  } else {
@@ -28522,8 +28490,8 @@
28522
28490
  margin
28523
28491
  } = Array.from({
28524
28492
  length: props.intervalDivisions
28525
- }, x => x * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28526
- if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.start)) {
28493
+ }, (_, x) => (x + 1) * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
28494
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.end)) {
28527
28495
  return {
28528
28496
  height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
28529
28497
  margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
@@ -28544,16 +28512,30 @@
28544
28512
  }
28545
28513
  };
28546
28514
  useRender(() => {
28547
- return vue.createVNode(VSheet, {
28515
+ return vue.createVNode("div", null, [slots.intervalEvent?.({
28516
+ height: calcHeight().height,
28517
+ margin: calcHeight().margin,
28518
+ eventClass: 'v-calendar-internal-event',
28519
+ event: props.event,
28520
+ interval: props.interval
28521
+ }) ?? vue.createVNode(VSheet, vue.mergeProps({
28548
28522
  "height": calcHeight().height,
28549
28523
  "density": "comfortable",
28550
28524
  "style": `margin-top: ${calcHeight().margin}`,
28551
28525
  "class": "v-calendar-internal-event",
28552
28526
  "color": props.event?.color ?? undefined,
28553
28527
  "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
28554
- }, {
28528
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28529
+ event: props.event,
28530
+ allDay: false,
28531
+ day: null,
28532
+ interval: props.interval,
28533
+ intervalDivisions: props.intervalDivisions,
28534
+ intervalDuration: props.intervalDuration,
28535
+ intervalHeight: props.intervalHeight
28536
+ }))), {
28555
28537
  default: () => [props.event?.first ? props.event?.title : '']
28556
- });
28538
+ })]);
28557
28539
  });
28558
28540
  return {};
28559
28541
  }
@@ -28589,6 +28571,7 @@
28589
28571
  }, 'VCalendarInterval');
28590
28572
  const VCalendarInterval = genericComponent()({
28591
28573
  name: 'VCalendarInterval',
28574
+ inheritAttrs: false,
28592
28575
  props: {
28593
28576
  index: {
28594
28577
  type: Number,
@@ -28598,6 +28581,7 @@
28598
28581
  },
28599
28582
  setup(props, _ref) {
28600
28583
  let {
28584
+ attrs,
28601
28585
  emit,
28602
28586
  slots
28603
28587
  } = _ref;
@@ -28623,39 +28607,74 @@
28623
28607
  return props.dayIndex === 0 ? vue.createVNode("div", {
28624
28608
  "class": "v-calendar-day__row-with-label",
28625
28609
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28626
- }, [vue.createVNode("div", {
28610
+ }, [vue.createVNode("div", vue.mergeProps({
28627
28611
  "class": "v-calendar-day__row-label"
28628
- }, [vue.createVNode("slot", {
28629
- "name": "intervalFormat",
28630
- "interval": interval.value
28631
- }, [props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : ''])]), vue.createVNode("div", {
28612
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28613
+ interval: interval.value
28614
+ }) ?? (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", {
28632
28615
  "class": "v-calendar-day__row-hairline"
28633
- }, null), vue.createVNode("div", {
28616
+ }, null), vue.createVNode("div", vue.mergeProps({
28634
28617
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28635
- }, [vue.createVNode("slot", {
28636
- "name": "intervalBody",
28637
- "interval": interval.value
28638
- }, [interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, {
28618
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28619
+ interval: interval.value
28620
+ }) ?? vue.createVNode("div", null, [interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28639
28621
  "event": event,
28640
28622
  "interval": interval.value,
28641
28623
  "intervalDivisions": props.intervalDivisions,
28642
28624
  "intervalDuration": props.intervalDuration,
28643
28625
  "intervalHeight": props.intervalHeight
28644
- }, null))])])]) : vue.createVNode("div", {
28626
+ }, attrs), {
28627
+ ...(slots.intervalEvent ? {
28628
+ intervalEvent: _ref2 => {
28629
+ let {
28630
+ height,
28631
+ margin,
28632
+ eventClass,
28633
+ event,
28634
+ interval
28635
+ } = _ref2;
28636
+ return slots.intervalEvent?.({
28637
+ height,
28638
+ margin,
28639
+ eventClass,
28640
+ event,
28641
+ interval
28642
+ });
28643
+ }
28644
+ } : {})
28645
+ }))])])]) : vue.createVNode("div", {
28645
28646
  "class": "v-calendar-day__row-without-label",
28646
28647
  "style": `height: ${convertToUnit(props.intervalHeight)}`
28647
- }, [vue.createVNode("div", {
28648
+ }, [vue.createVNode("div", vue.mergeProps({
28648
28649
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28649
- }, [vue.createVNode("slot", {
28650
- "name": "intervalBody",
28651
- "interval": interval.value
28652
- }, [interval.value.events?.filter(event => !event.allDay).map(event => vue.createVNode(VCalendarIntervalEvent, {
28650
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28651
+ interval: interval.value
28652
+ }) ?? interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28653
28653
  "event": event,
28654
28654
  "interval": interval.value,
28655
28655
  "intervalDivisions": props.intervalDivisions,
28656
28656
  "intervalDuration": props.intervalDuration,
28657
28657
  "intervalHeight": props.intervalHeight
28658
- }, null))])])]);
28658
+ }, attrs), {
28659
+ ...(slots.intervalEvent ? {
28660
+ intervalEvent: _ref3 => {
28661
+ let {
28662
+ height,
28663
+ margin,
28664
+ eventClass,
28665
+ event,
28666
+ interval
28667
+ } = _ref3;
28668
+ return slots.intervalEvent?.({
28669
+ height,
28670
+ margin,
28671
+ eventClass,
28672
+ event,
28673
+ interval
28674
+ });
28675
+ }
28676
+ } : {})
28677
+ }))])]);
28659
28678
  });
28660
28679
  return {
28661
28680
  interval
@@ -28663,6 +28682,8 @@
28663
28682
  }
28664
28683
  });
28665
28684
 
28685
+ // Types
28686
+
28666
28687
  const makeVCalendarDayProps = propsFactory({
28667
28688
  hideDayHeader: Boolean,
28668
28689
  intervals: {
@@ -28673,26 +28694,34 @@
28673
28694
  }, 'VCalendarDay');
28674
28695
  const VCalendarDay = genericComponent()({
28675
28696
  name: 'VCalendarDay',
28697
+ inheritAttrs: false,
28676
28698
  props: makeVCalendarDayProps(),
28677
- setup(props) {
28699
+ setup(props, _ref) {
28700
+ let {
28701
+ attrs,
28702
+ slots
28703
+ } = _ref;
28678
28704
  const adapter = useDate();
28679
28705
  const intervals = vue.computed(() => [...Array.from({
28680
28706
  length: props.intervals
28681
- }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28707
+ }, (v, i) => i).filter((_, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
28682
28708
  useRender(() => {
28683
28709
  const calendarIntervalProps = VCalendarInterval.filterProps(props);
28684
28710
  return vue.createVNode("div", {
28685
28711
  "class": "v-calendar-day__container"
28686
- }, [!props.hideDayHeader && vue.createVNode("div", {
28687
- "key": "calender-week-name",
28712
+ }, [!props.hideDayHeader && vue.createVNode("div", vue.mergeProps({
28713
+ "key": "calendar-week-name",
28688
28714
  "class": "v-calendar-weekly__head-weekday"
28689
- }, [adapter.format(props.day.date, 'weekdayShort'), vue.createVNode("div", null, [vue.createVNode(VBtn, {
28715
+ }, 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), {
28716
+ "class": props.day?.isToday ? 'v-calendar-day-label__today' : undefined,
28690
28717
  "icon": true,
28691
28718
  "text": adapter.format(props.day.date, 'dayOfMonth'),
28692
- "variant": "text"
28693
- }, null)])]), intervals.value.map((_, index) => vue.createVNode(VCalendarInterval, vue.mergeProps({
28719
+ "variant": props.day?.isToday ? undefined : 'text'
28720
+ }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? vue.createVNode(VCalendarInterval, vue.mergeProps({
28694
28721
  "index": index
28695
- }, calendarIntervalProps), null))]);
28722
+ }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
28723
+ ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
28724
+ }))]);
28696
28725
  });
28697
28726
  return {
28698
28727
  intervals
@@ -28731,7 +28760,8 @@
28731
28760
  },
28732
28761
  setup(props, _ref) {
28733
28762
  let {
28734
- emit
28763
+ emit,
28764
+ slots
28735
28765
  } = _ref;
28736
28766
  const {
28737
28767
  t
@@ -28765,7 +28795,9 @@
28765
28795
  "onClick": next
28766
28796
  }, null), vue.createVNode("div", {
28767
28797
  "class": "v-calendar-header__title"
28768
- }, [props.title])]));
28798
+ }, [slots.title?.({
28799
+ title: props.title
28800
+ }) ?? vue.createVNode("span", null, [props.title])])]));
28769
28801
  return {};
28770
28802
  }
28771
28803
  });
@@ -28777,14 +28809,24 @@
28777
28809
  }, 'VCalendarEvent');
28778
28810
  const VCalendarEvent = genericComponent()({
28779
28811
  name: 'VCalendarEvent',
28812
+ inheritAttrs: false,
28780
28813
  props: makeVCalendarEventProps(),
28781
- setup(props) {
28782
- useRender(() => vue.createVNode(VChip, {
28814
+ setup(props, _ref) {
28815
+ let {
28816
+ attrs,
28817
+ emit,
28818
+ slots
28819
+ } = _ref;
28820
+ useRender(() => vue.createVNode(VChip, vue.mergeProps({
28783
28821
  "color": props.allDay ? 'primary' : undefined,
28784
28822
  "density": "comfortable",
28785
28823
  "label": props.allDay,
28786
28824
  "width": "100%"
28787
- }, {
28825
+ }, getPrefixedEventHandlers(attrs, ':event', () => ({
28826
+ allDay: props.allDay,
28827
+ day: props.day,
28828
+ event: props.event
28829
+ }))), {
28788
28830
  default: () => [vue.createVNode(VBadge, {
28789
28831
  "inline": true,
28790
28832
  "dot": true,
@@ -28795,87 +28837,95 @@
28795
28837
  }
28796
28838
  });
28797
28839
 
28840
+ // Types
28841
+
28798
28842
  const makeVCalendarMonthDayProps = propsFactory({
28799
28843
  active: Boolean,
28800
28844
  color: String,
28801
- day: Object,
28845
+ day: {
28846
+ type: Object
28847
+ },
28802
28848
  disabled: Boolean,
28803
28849
  events: Array,
28804
28850
  title: [Number, String]
28805
28851
  }, 'VCalendarMonthDay');
28806
28852
  const VCalendarMonthDay = genericComponent()({
28807
28853
  name: 'VCalendarMonthDay',
28854
+ inheritAttrs: false,
28808
28855
  props: makeVCalendarMonthDayProps(),
28809
28856
  setup(props, _ref) {
28810
28857
  let {
28811
- emit,
28858
+ attrs,
28812
28859
  slots
28813
28860
  } = _ref;
28814
28861
  useRender(() => {
28815
- const hasTitle = !!(props.title || slots.title?.({
28816
- title: props.title
28817
- }));
28818
- return vue.createVNode("div", {
28862
+ return vue.createVNode("div", vue.mergeProps({
28819
28863
  "class": ['v-calendar-month__day']
28820
- }, [!props.day?.isHidden && hasTitle && vue.createVNode("div", {
28864
+ }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? vue.createVNode("div", {
28821
28865
  "key": "title",
28822
28866
  "class": "v-calendar-weekly__day-label"
28823
- }, [slots.title?.({
28867
+ }, [slots.dayTitle?.({
28824
28868
  title: props.title
28825
- }) ?? vue.createVNode(VBtn, {
28869
+ }) ?? vue.createVNode(VBtn, vue.mergeProps({
28826
28870
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
28827
28871
  "color": props.color,
28828
28872
  "disabled": props.disabled,
28829
28873
  "icon": true,
28830
28874
  "size": "x-small",
28831
- "variant": props.day?.isToday ? undefined : 'flat'
28832
- }, {
28833
- default: () => [props.title]
28834
- })]), !props.day?.isHidden && vue.createVNode("div", {
28875
+ "variant": props.day?.isToday ? undefined : 'flat',
28876
+ "text": `${props.title}`
28877
+ }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? vue.createVNode("div", {
28835
28878
  "key": "content",
28836
28879
  "class": "v-calendar-weekly__day-content"
28837
- }, [slots.content?.() ?? vue.createVNode("div", null, [vue.createVNode("div", {
28880
+ }, [slots.dayBody?.({
28881
+ day: props.day,
28882
+ events: props.events
28883
+ }) ?? vue.createVNode("div", null, [vue.createVNode("div", {
28838
28884
  "class": "v-calendar-weekly__day-alldayevents-container"
28839
- }, [props.events?.filter(event => event.allDay).map(event => slots.event ? slots.event({
28885
+ }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28840
28886
  day: props.day,
28841
28887
  allDay: true,
28842
28888
  event
28843
- }) : vue.createVNode(VCalendarEvent, {
28889
+ }) : vue.createVNode(VCalendarEvent, vue.mergeProps({
28844
28890
  "day": props.day,
28845
28891
  "event": event,
28846
28892
  "allDay": true
28847
- }, null))]), vue.createVNode("div", {
28893
+ }, attrs), null))]), vue.createVNode("div", {
28848
28894
  "class": "v-calendar-weekly__day-events-container"
28849
- }, [props.events?.filter(event => !event.allDay).map(event => slots.event ? slots.event({
28895
+ }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
28850
28896
  day: props.day,
28851
28897
  event,
28852
28898
  allDay: false
28853
- }) : vue.createVNode(VCalendarEvent, {
28899
+ }) : vue.createVNode(VCalendarEvent, vue.mergeProps({
28854
28900
  "day": props.day,
28855
28901
  "event": event
28856
- }, null))])])]), !props.day?.isHidden && slots.default?.()]);
28902
+ }, attrs), null))])])]) : undefined]);
28857
28903
  });
28858
28904
  return {};
28859
28905
  }
28860
28906
  });
28861
28907
 
28908
+ // Types
28909
+
28862
28910
  const makeVCalendarProps = propsFactory({
28863
28911
  hideHeader: Boolean,
28864
28912
  hideWeekNumber: Boolean,
28865
28913
  ...makeCalendarProps(),
28866
28914
  ...makeVCalendarDayProps(),
28867
28915
  ...makeVCalendarHeaderProps()
28868
- }, 'VCalender');
28916
+ }, 'VCalendar');
28869
28917
  const VCalendar = genericComponent()({
28870
28918
  name: 'VCalendar',
28871
28919
  props: makeVCalendarProps(),
28872
28920
  emits: {
28873
28921
  next: null,
28874
28922
  prev: null,
28923
+ today: null,
28875
28924
  'update:modelValue': null
28876
28925
  },
28877
28926
  setup(props, _ref) {
28878
28927
  let {
28928
+ attrs,
28879
28929
  emit,
28880
28930
  slots
28881
28931
  } = _ref;
@@ -28893,27 +28943,33 @@
28893
28943
  function onClickNext() {
28894
28944
  if (props.viewMode === 'month') {
28895
28945
  model.value = [adapter.addMonths(displayValue.value, 1)];
28896
- }
28897
- if (props.viewMode === 'week') {
28946
+ } else if (props.viewMode === 'week') {
28898
28947
  model.value = [adapter.addDays(displayValue.value, 7)];
28899
- }
28900
- if (props.viewMode === 'day') {
28948
+ } else if (props.viewMode === 'day') {
28901
28949
  model.value = [adapter.addDays(displayValue.value, 1)];
28902
28950
  }
28951
+ vue.nextTick(() => {
28952
+ emit('next', model.value[0]);
28953
+ });
28903
28954
  }
28904
28955
  function onClickPrev() {
28905
28956
  if (props.viewMode === 'month') {
28906
28957
  model.value = [adapter.addMonths(displayValue.value, -1)];
28907
- }
28908
- if (props.viewMode === 'week') {
28958
+ } else if (props.viewMode === 'week') {
28909
28959
  model.value = [adapter.addDays(displayValue.value, -7)];
28910
- }
28911
- if (props.viewMode === 'day') {
28960
+ } else if (props.viewMode === 'day') {
28912
28961
  model.value = [adapter.addDays(displayValue.value, -1)];
28913
28962
  }
28963
+ vue.nextTick(() => {
28964
+ emit('prev', model.value[0]);
28965
+ });
28914
28966
  }
28915
28967
  function onClickToday() {
28916
- model.value = [adapter.date()];
28968
+ const date = adapter.date();
28969
+ model.value = [date];
28970
+ vue.nextTick(() => {
28971
+ emit('today', model.value[0]);
28972
+ });
28917
28973
  }
28918
28974
  const title = vue.computed(() => {
28919
28975
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -28927,20 +28983,25 @@
28927
28983
  'v-calendar-weekly': props.viewMode === 'week',
28928
28984
  'v-calendar-day': props.viewMode === 'day'
28929
28985
  }]
28930
- }, [vue.createVNode("div", null, [!props.hideHeader && (!slots.header ? vue.createVNode(VCalendarHeader, vue.mergeProps({
28986
+ }, [vue.createVNode("div", null, [!props.hideHeader && (slots.header?.({
28987
+ title: title.value,
28988
+ clickNext: onClickNext,
28989
+ clickPrev: onClickPrev,
28990
+ clickToday: onClickToday
28991
+ }) ?? vue.createVNode(VCalendarHeader, vue.mergeProps({
28931
28992
  "key": "calendar-header"
28932
28993
  }, calendarHeaderProps, {
28933
28994
  "title": title.value,
28934
28995
  "onClick:next": onClickNext,
28935
28996
  "onClick:prev": onClickPrev,
28936
28997
  "onClick:toToday": onClickToday
28937
- }), null) : slots.header({
28938
- title: title.value
28998
+ }), {
28999
+ title: slots.title
28939
29000
  }))]), vue.createVNode("div", {
28940
29001
  "class": ['v-calendar__container', `days__${weekDays.value.length}`]
28941
29002
  }, [props.viewMode === 'month' && !props.hideDayHeader && vue.createVNode("div", {
28942
29003
  "class": ['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
28943
- "key": "calenderWeeklyHead"
29004
+ "key": "calendarWeeklyHead"
28944
29005
  }, [!props.hideWeekNumber ? vue.createVNode("div", {
28945
29006
  "key": "weekNumber0",
28946
29007
  "class": "v-calendar-weekly__head-weeknumber"
@@ -28949,24 +29010,39 @@
28949
29010
  }, [dayNames[weekday]]))]), props.viewMode === 'month' && vue.createVNode("div", {
28950
29011
  "key": "VCalendarMonth",
28951
29012
  "class": ['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])]
28952
- }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? vue.createVNode("div", {
29013
+ }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? vue.createVNode("div", vue.mergeProps({
28953
29014
  "class": "v-calendar-month__weeknumber"
28954
- }, [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, {
28955
- "color": adapter.isSameDay(adapter.date(), day.date) ? 'primary' : undefined,
29015
+ }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
29016
+ weekNumber: weekNumbers.value[wi],
29017
+ week
29018
+ }))), [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, vue.mergeProps({
29019
+ "key": day.date.getTime()
29020
+ }, calendarDayProps, {
28956
29021
  "day": day,
28957
- "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
29022
+ "title": adapter.format(day.date, 'dayOfMonth'),
28958
29023
  "events": props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end))
28959
- }, {
28960
- event: slots.event
28961
- }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
29024
+ }, attrs), {
29025
+ ...pick(slots, ['day-body', 'day-event', 'day-title'])
29026
+ }))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => slots['day-interval'] ? slots['day-interval']?.({
29027
+ ...calendarDayProps,
29028
+ day,
29029
+ dayIndex: i,
29030
+ events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
29031
+ }) : vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
28962
29032
  "day": day,
28963
29033
  "dayIndex": i,
28964
29034
  "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
28965
- }), null)), props.viewMode === 'day' && vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
28966
- "day": genDays([displayValue.value], adapter.date())[0],
29035
+ }, attrs), {
29036
+ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29037
+ })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29038
+ day: genDays([displayValue.value], adapter.date())[0],
29039
+ dayIndex: 0,
29040
+ 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))
29041
+ }) : vue.createVNode(VCalendarDay, vue.mergeProps(calendarDayProps, {
29042
+ "day": genDays([model.value[0]], adapter.date())[0],
28967
29043
  "dayIndex": 0,
28968
- "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))
28969
- }), null)])]);
29044
+ "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))
29045
+ }, attrs), null))])]);
28970
29046
  });
28971
29047
  return {
28972
29048
  daysInMonth,
@@ -29515,10 +29591,7 @@
29515
29591
  hideOverlay: Boolean,
29516
29592
  icon: [String, Function, Object],
29517
29593
  iconColor: String,
29518
- iconSize: {
29519
- type: [Number, String],
29520
- default: 'default'
29521
- },
29594
+ iconSize: [Number, String],
29522
29595
  iconSizes: {
29523
29596
  type: Array,
29524
29597
  default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
@@ -29579,7 +29652,7 @@
29579
29652
  colorClasses,
29580
29653
  colorStyles,
29581
29654
  variantClasses
29582
- } = useVariant(vue.toRef(() => ({
29655
+ } = useVariant(() => ({
29583
29656
  color: (() => {
29584
29657
  if (props.disabled) return undefined;
29585
29658
  if (!isActive.value) return props.color;
@@ -29594,7 +29667,7 @@
29594
29667
  if (isActive.value) return props.activeVariant ?? props.variant;
29595
29668
  return props.baseVariant ?? props.variant;
29596
29669
  })()
29597
- })));
29670
+ }));
29598
29671
  const btnSizeMap = new Map(props.sizes);
29599
29672
  const iconSizeMap = new Map(props.iconSizes);
29600
29673
  function onClick() {
@@ -29603,13 +29676,14 @@
29603
29676
  }
29604
29677
  useRender(() => {
29605
29678
  const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
29606
- const size = props.size;
29607
- const hasNamedSize = btnSizeMap.has(size);
29608
- const btnSize = hasNamedSize ? btnSizeMap.get(size) : size;
29679
+ const _btnSize = props.size;
29680
+ const hasNamedSize = btnSizeMap.has(_btnSize);
29681
+ const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
29609
29682
  const btnHeight = props.height ?? btnSize;
29610
29683
  const btnWidth = props.width ?? btnSize;
29611
- const _iconSize = hasNamedSize ? size : props.iconSize ?? size;
29612
- const iconSize = iconSizeMap.get(_iconSize) ?? _iconSize;
29684
+ const _iconSize = props.iconSize;
29685
+ const hasNamedIconSize = iconSizeMap.has(_iconSize);
29686
+ const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
29613
29687
  const iconProps = {
29614
29688
  icon,
29615
29689
  size: iconSize,
@@ -30090,11 +30164,11 @@
30090
30164
  const {
30091
30165
  textColorClasses,
30092
30166
  textColorStyles
30093
- } = useTextColor(vue.toRef(props, 'color'));
30167
+ } = useTextColor(() => props.color);
30094
30168
  const {
30095
30169
  backgroundColorClasses,
30096
30170
  backgroundColorStyles
30097
- } = useBackgroundColor(vue.toRef(props, 'color'));
30171
+ } = useBackgroundColor(() => props.color);
30098
30172
  const count = vue.computed(() => props.max - props.min + 1);
30099
30173
  const roundCount = vue.computed(() => props.double ? count.value / 2 : count.value);
30100
30174
  const degreesPerUnit = vue.computed(() => 360 / roundCount.value);
@@ -30954,9 +31028,9 @@
30954
31028
  const {
30955
31029
  items
30956
31030
  } = useListItems(props);
30957
- const activeColor = vue.toRef(props, 'activeColor');
30958
- const baseColor = vue.toRef(props, 'baseColor');
30959
- const color = vue.toRef(props, 'color');
31031
+ const activeColor = vue.toRef(() => props.activeColor);
31032
+ const baseColor = vue.toRef(() => props.baseColor);
31033
+ const color = vue.toRef(() => props.color);
30960
31034
  const activated = useProxiedModel(props, 'activated');
30961
31035
  const model = useProxiedModel(props, 'modelValue');
30962
31036
  const _selected = useProxiedModel(props, 'selected', props.modelValue);
@@ -30970,7 +31044,7 @@
30970
31044
  const vListRef = vue.ref();
30971
31045
  const opened = vue.computed(() => props.openAll ? openAll(items.value) : props.opened);
30972
31046
  const flatItems = vue.computed(() => flatten(items.value));
30973
- const search = vue.toRef(props, 'search');
31047
+ const search = vue.toRef(() => props.search);
30974
31048
  const {
30975
31049
  filteredItems
30976
31050
  } = useFilter(props, flatItems, search);
@@ -31013,18 +31087,18 @@
31013
31087
  activeColor,
31014
31088
  baseColor,
31015
31089
  color,
31016
- collapseIcon: vue.toRef(props, 'collapseIcon'),
31017
- expandIcon: vue.toRef(props, 'expandIcon')
31090
+ collapseIcon: vue.toRef(() => props.collapseIcon),
31091
+ expandIcon: vue.toRef(() => props.expandIcon)
31018
31092
  },
31019
31093
  VTreeviewItem: {
31020
- activeClass: vue.toRef(props, 'activeClass'),
31094
+ activeClass: vue.toRef(() => props.activeClass),
31021
31095
  activeColor,
31022
31096
  baseColor,
31023
31097
  color,
31024
- density: vue.toRef(props, 'density'),
31025
- disabled: vue.toRef(props, 'disabled'),
31026
- lines: vue.toRef(props, 'lines'),
31027
- variant: vue.toRef(props, 'variant')
31098
+ density: vue.toRef(() => props.density),
31099
+ disabled: vue.toRef(() => props.disabled),
31100
+ lines: vue.toRef(() => props.lines),
31101
+ variant: vue.toRef(() => props.variant)
31028
31102
  }
31029
31103
  });
31030
31104
  useRender(() => {
@@ -31564,7 +31638,7 @@
31564
31638
  };
31565
31639
  });
31566
31640
  }
31567
- const version$1 = "3.8.1";
31641
+ const version$1 = "3.8.3";
31568
31642
  createVuetify$1.version = version$1;
31569
31643
 
31570
31644
  // Vue's inject() can only be used in setup
@@ -31747,7 +31821,7 @@
31747
31821
  flat: true
31748
31822
  },
31749
31823
  VAutocomplete: {
31750
- variant: 'filled'
31824
+ variant: 'outlined'
31751
31825
  },
31752
31826
  VBanner: {
31753
31827
  color: 'primary'
@@ -31776,7 +31850,10 @@
31776
31850
  rounded: 'sm'
31777
31851
  },
31778
31852
  VCombobox: {
31779
- variant: 'filled'
31853
+ variant: 'outlined'
31854
+ },
31855
+ VDateInput: {
31856
+ variant: 'outlined'
31780
31857
  },
31781
31858
  VDatePicker: {
31782
31859
  controlHeight: 48,
@@ -31790,6 +31867,9 @@
31790
31867
  rounded: 'circle'
31791
31868
  }
31792
31869
  },
31870
+ VFileInput: {
31871
+ variant: 'outlined'
31872
+ },
31793
31873
  VNavigationDrawer: {
31794
31874
  // VList: {
31795
31875
  // nav: true,
@@ -31798,8 +31878,15 @@
31798
31878
  // },
31799
31879
  // },
31800
31880
  },
31881
+ VNumberInput: {
31882
+ variant: 'outlined',
31883
+ VBtn: {
31884
+ color: undefined,
31885
+ rounded: undefined
31886
+ }
31887
+ },
31801
31888
  VSelect: {
31802
- variant: 'filled'
31889
+ variant: 'outlined'
31803
31890
  },
31804
31891
  VSlider: {
31805
31892
  color: 'primary'
@@ -31808,10 +31895,10 @@
31808
31895
  color: 'primary'
31809
31896
  },
31810
31897
  VTextarea: {
31811
- variant: 'filled'
31898
+ variant: 'outlined'
31812
31899
  },
31813
31900
  VTextField: {
31814
- variant: 'filled'
31901
+ variant: 'outlined'
31815
31902
  },
31816
31903
  VToolbar: {
31817
31904
  VBtn: {
@@ -31849,7 +31936,7 @@
31849
31936
 
31850
31937
  /* eslint-disable local-rules/sort-imports */
31851
31938
 
31852
- const version = "3.8.1";
31939
+ const version = "3.8.3";
31853
31940
 
31854
31941
  /* eslint-disable local-rules/sort-imports */
31855
31942