vuetify 3.4.8 → 3.4.10

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 (292) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +260 -0
  3. package/dist/json/importMap-labs.json +24 -0
  4. package/dist/json/importMap.json +122 -122
  5. package/dist/json/tags.json +95 -0
  6. package/dist/json/web-types.json +857 -4
  7. package/dist/vuetify-labs.css +2977 -2604
  8. package/dist/vuetify-labs.d.ts +1770 -71
  9. package/dist/vuetify-labs.esm.js +784 -140
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +784 -140
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +689 -686
  14. package/dist/vuetify.d.ts +221 -106
  15. package/dist/vuetify.esm.js +301 -140
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +301 -140
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +214 -195
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/index.d.mts +9 -0
  23. package/lib/blueprints/md1.d.mts +9 -0
  24. package/lib/blueprints/md2.d.mts +9 -0
  25. package/lib/blueprints/md3.d.mts +9 -0
  26. package/lib/components/VAlert/VAlert.css +2 -2
  27. package/lib/components/VAppBar/VAppBar.css +1 -1
  28. package/lib/components/VAppBar/VAppBar.mjs +0 -1
  29. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  30. package/lib/components/VAutocomplete/VAutocomplete.css +2 -2
  31. package/lib/components/VAutocomplete/VAutocomplete.mjs +15 -2
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  33. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  34. package/lib/components/VAutocomplete/_variables.scss +1 -0
  35. package/lib/components/VAvatar/VAvatar.css +2 -2
  36. package/lib/components/VBanner/VBanner.css +1 -1
  37. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -1
  38. package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
  39. package/lib/components/VBtn/VBtn.css +4 -4
  40. package/lib/components/VBtnGroup/VBtnGroup.css +1 -1
  41. package/lib/components/VCard/VCard.css +5 -5
  42. package/lib/components/VChip/VChip.css +2 -2
  43. package/lib/components/VChip/VChip.mjs +2 -1
  44. package/lib/components/VChip/VChip.mjs.map +1 -1
  45. package/lib/components/VColorPicker/VColorPicker.css +3 -3
  46. package/lib/components/VCombobox/VCombobox.css +2 -2
  47. package/lib/components/VCombobox/VCombobox.mjs +15 -5
  48. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  49. package/lib/components/VCombobox/VCombobox.sass +2 -2
  50. package/lib/components/VCombobox/_variables.scss +2 -0
  51. package/lib/components/VDataIterator/index.d.mts +1 -1
  52. package/lib/components/VDataTable/VDataTable.css +1 -1
  53. package/lib/components/VDataTable/VDataTable.sass +1 -1
  54. package/lib/components/VDataTable/VDataTableFooter.mjs +33 -30
  55. package/lib/components/VDataTable/VDataTableFooter.mjs.map +1 -1
  56. package/lib/components/VDataTable/VDataTableHeaders.mjs +2 -1
  57. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  58. package/lib/components/VDataTable/index.d.mts +1 -1
  59. package/lib/components/VDatePicker/VDatePicker.mjs +4 -1
  60. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  61. package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
  62. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  63. package/lib/components/VDatePicker/index.d.mts +82 -0
  64. package/lib/components/VDialog/VDialog.css +1 -1
  65. package/lib/components/VDialog/index.d.mts +3 -3
  66. package/lib/components/VExpansionPanel/VExpansionPanel.css +1 -1
  67. package/lib/components/VField/VField.css +2 -2
  68. package/lib/components/VFileInput/index.d.mts +3 -3
  69. package/lib/components/VFooter/VFooter.css +1 -1
  70. package/lib/components/VForm/index.d.mts +21 -21
  71. package/lib/components/VImg/index.d.mts +6 -6
  72. package/lib/components/VKbd/VKbd.css +1 -1
  73. package/lib/components/VList/VList.css +1 -1
  74. package/lib/components/VList/VList.mjs +7 -2
  75. package/lib/components/VList/VList.mjs.map +1 -1
  76. package/lib/components/VList/VListItem.css +5 -2
  77. package/lib/components/VList/VListItem.sass +3 -0
  78. package/lib/components/VList/_variables.scss +1 -0
  79. package/lib/components/VMenu/VMenu.css +1 -1
  80. package/lib/components/VMenu/index.d.mts +6 -6
  81. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +2 -2
  82. package/lib/components/VNavigationDrawer/index.d.mts +3 -3
  83. package/lib/components/VOverflowBtn/VOverflowBtn.mjs +0 -1
  84. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  85. package/lib/components/VOverlay/VOverlay.mjs +2 -2
  86. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  87. package/lib/components/VOverlay/locationStrategies.mjs +0 -1
  88. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  89. package/lib/components/VSelect/VSelect.css +1 -1
  90. package/lib/components/VSelect/VSelect.mjs +15 -3
  91. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  92. package/lib/components/VSelectionControl/index.d.mts +3 -3
  93. package/lib/components/VSheet/VSheet.css +1 -1
  94. package/lib/components/VSlideGroup/index.d.mts +3 -3
  95. package/lib/components/VSnackbar/VSnackbar.css +2 -2
  96. package/lib/components/VSnackbar/index.d.mts +3 -3
  97. package/lib/components/VStepper/VStepper.css +3 -3
  98. package/lib/components/VSwitch/VSwitch.css +2 -2
  99. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  100. package/lib/components/VTabs/VTab.css +2 -2
  101. package/lib/components/VTabs/VTab.sass +2 -2
  102. package/lib/components/VTextField/index.d.mts +6 -6
  103. package/lib/components/VTextarea/index.d.mts +3 -3
  104. package/lib/components/VTimeline/VTimeline.css +1 -1
  105. package/lib/components/VToolbar/VToolbar.css +2 -2
  106. package/lib/components/VTooltip/index.d.mts +3 -3
  107. package/lib/components/VTreeview/VTreeview.mjs +0 -1
  108. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  109. package/lib/components/VTreeview/VTreeviewNode.mjs +0 -1
  110. package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
  111. package/lib/components/VValidation/index.d.mts +6 -6
  112. package/lib/components/VWindow/VWindowItem.mjs +0 -1
  113. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  114. package/lib/components/index.d.mts +152 -70
  115. package/lib/composables/calendar.mjs +26 -5
  116. package/lib/composables/calendar.mjs.map +1 -1
  117. package/lib/composables/date/DateAdapter.mjs.map +1 -1
  118. package/lib/composables/date/adapters/vuetify.mjs +89 -2
  119. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  120. package/lib/composables/delay.mjs +19 -18
  121. package/lib/composables/delay.mjs.map +1 -1
  122. package/lib/composables/density.mjs +1 -0
  123. package/lib/composables/density.mjs.map +1 -1
  124. package/lib/entry-bundler.mjs +1 -1
  125. package/lib/entry-bundler.mjs.map +1 -1
  126. package/lib/framework.mjs +1 -1
  127. package/lib/framework.mjs.map +1 -1
  128. package/lib/index.d.mts +69 -36
  129. package/lib/labs/VCalendar/VCalendar.css +220 -0
  130. package/lib/labs/VCalendar/VCalendar.mjs +124 -0
  131. package/lib/labs/VCalendar/VCalendar.mjs.map +1 -0
  132. package/lib/labs/VCalendar/VCalendar.sass +168 -0
  133. package/lib/labs/VCalendar/VCalendarDay.css +33 -0
  134. package/lib/labs/VCalendar/VCalendarDay.mjs +47 -0
  135. package/lib/labs/VCalendar/VCalendarDay.mjs.map +1 -0
  136. package/lib/labs/VCalendar/VCalendarDay.sass +32 -0
  137. package/lib/labs/VCalendar/VCalendarEvent.mjs +30 -0
  138. package/lib/labs/VCalendar/VCalendarEvent.mjs.map +1 -0
  139. package/lib/labs/VCalendar/VCalendarHeader.css +14 -0
  140. package/lib/labs/VCalendar/VCalendarHeader.mjs +76 -0
  141. package/lib/labs/VCalendar/VCalendarHeader.mjs.map +1 -0
  142. package/lib/labs/VCalendar/VCalendarHeader.sass +13 -0
  143. package/lib/labs/VCalendar/VCalendarInterval.css +42 -0
  144. package/lib/labs/VCalendar/VCalendarInterval.mjs +113 -0
  145. package/lib/labs/VCalendar/VCalendarInterval.mjs.map +1 -0
  146. package/lib/labs/VCalendar/VCalendarInterval.sass +39 -0
  147. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs +76 -0
  148. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs.map +1 -0
  149. package/lib/labs/VCalendar/VCalendarMonthDay.css +61 -0
  150. package/lib/labs/VCalendar/VCalendarMonthDay.mjs +64 -0
  151. package/lib/labs/VCalendar/VCalendarMonthDay.mjs.map +1 -0
  152. package/lib/labs/VCalendar/VCalendarMonthDay.sass +65 -0
  153. package/lib/{components → labs}/VCalendar/_variables.scss +14 -6
  154. package/lib/labs/VCalendar/index.d.mts +1592 -0
  155. package/lib/labs/VCalendar/index.mjs +7 -0
  156. package/lib/labs/VCalendar/index.mjs.map +1 -0
  157. package/lib/labs/VPicker/VPicker.css +1 -1
  158. package/lib/labs/components.d.mts +1586 -2
  159. package/lib/labs/components.mjs +1 -0
  160. package/lib/labs/components.mjs.map +1 -1
  161. package/lib/locale/af.mjs +2 -1
  162. package/lib/locale/af.mjs.map +1 -1
  163. package/lib/locale/ar.mjs +2 -1
  164. package/lib/locale/ar.mjs.map +1 -1
  165. package/lib/locale/az.mjs +2 -1
  166. package/lib/locale/az.mjs.map +1 -1
  167. package/lib/locale/bg.mjs +2 -1
  168. package/lib/locale/bg.mjs.map +1 -1
  169. package/lib/locale/ca.mjs +2 -1
  170. package/lib/locale/ca.mjs.map +1 -1
  171. package/lib/locale/ckb.mjs +2 -1
  172. package/lib/locale/ckb.mjs.map +1 -1
  173. package/lib/locale/cs.mjs +3 -2
  174. package/lib/locale/cs.mjs.map +1 -1
  175. package/lib/locale/da.mjs +2 -1
  176. package/lib/locale/da.mjs.map +1 -1
  177. package/lib/locale/de.mjs +2 -1
  178. package/lib/locale/de.mjs.map +1 -1
  179. package/lib/locale/el.mjs +2 -1
  180. package/lib/locale/el.mjs.map +1 -1
  181. package/lib/locale/en.mjs +2 -1
  182. package/lib/locale/en.mjs.map +1 -1
  183. package/lib/locale/es.mjs +2 -1
  184. package/lib/locale/es.mjs.map +1 -1
  185. package/lib/locale/et.mjs +2 -1
  186. package/lib/locale/et.mjs.map +1 -1
  187. package/lib/locale/fa.mjs +2 -1
  188. package/lib/locale/fa.mjs.map +1 -1
  189. package/lib/locale/fi.mjs +2 -1
  190. package/lib/locale/fi.mjs.map +1 -1
  191. package/lib/locale/fr.mjs +2 -1
  192. package/lib/locale/fr.mjs.map +1 -1
  193. package/lib/locale/he.mjs +2 -1
  194. package/lib/locale/he.mjs.map +1 -1
  195. package/lib/locale/hr.mjs +2 -1
  196. package/lib/locale/hr.mjs.map +1 -1
  197. package/lib/locale/hu.mjs +2 -1
  198. package/lib/locale/hu.mjs.map +1 -1
  199. package/lib/locale/id.mjs +2 -1
  200. package/lib/locale/id.mjs.map +1 -1
  201. package/lib/locale/index.d.mts +42 -0
  202. package/lib/locale/it.mjs +2 -1
  203. package/lib/locale/it.mjs.map +1 -1
  204. package/lib/locale/ja.mjs +2 -1
  205. package/lib/locale/ja.mjs.map +1 -1
  206. package/lib/locale/ko.mjs +2 -1
  207. package/lib/locale/ko.mjs.map +1 -1
  208. package/lib/locale/lt.mjs +2 -1
  209. package/lib/locale/lt.mjs.map +1 -1
  210. package/lib/locale/lv.mjs +2 -1
  211. package/lib/locale/lv.mjs.map +1 -1
  212. package/lib/locale/nl.mjs +3 -2
  213. package/lib/locale/nl.mjs.map +1 -1
  214. package/lib/locale/no.mjs +2 -1
  215. package/lib/locale/no.mjs.map +1 -1
  216. package/lib/locale/pl.mjs +2 -1
  217. package/lib/locale/pl.mjs.map +1 -1
  218. package/lib/locale/pt.mjs +19 -18
  219. package/lib/locale/pt.mjs.map +1 -1
  220. package/lib/locale/ro.mjs +2 -1
  221. package/lib/locale/ro.mjs.map +1 -1
  222. package/lib/locale/ru.mjs +2 -1
  223. package/lib/locale/ru.mjs.map +1 -1
  224. package/lib/locale/sk.mjs +2 -1
  225. package/lib/locale/sk.mjs.map +1 -1
  226. package/lib/locale/sl.mjs +2 -1
  227. package/lib/locale/sl.mjs.map +1 -1
  228. package/lib/locale/sr-Cyrl.mjs +2 -1
  229. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  230. package/lib/locale/sr-Latn.mjs +2 -1
  231. package/lib/locale/sr-Latn.mjs.map +1 -1
  232. package/lib/locale/sv.mjs +2 -1
  233. package/lib/locale/sv.mjs.map +1 -1
  234. package/lib/locale/th.mjs +2 -1
  235. package/lib/locale/th.mjs.map +1 -1
  236. package/lib/locale/tr.mjs +2 -1
  237. package/lib/locale/tr.mjs.map +1 -1
  238. package/lib/locale/uk.mjs +2 -1
  239. package/lib/locale/uk.mjs.map +1 -1
  240. package/lib/locale/vi.mjs +2 -1
  241. package/lib/locale/vi.mjs.map +1 -1
  242. package/lib/locale/zh-Hans.mjs +2 -1
  243. package/lib/locale/zh-Hans.mjs.map +1 -1
  244. package/lib/locale/zh-Hant.mjs +2 -1
  245. package/lib/locale/zh-Hant.mjs.map +1 -1
  246. package/lib/styles/main.css +25 -25
  247. package/lib/styles/settings/_elevations.scss +1 -1
  248. package/lib/util/helpers.mjs +14 -0
  249. package/lib/util/helpers.mjs.map +1 -1
  250. package/package.json +12 -12
  251. package/lib/components/VCalendar/VCalendar.mjs +0 -352
  252. package/lib/components/VCalendar/VCalendar.mjs.map +0 -1
  253. package/lib/components/VCalendar/VCalendarCategory.mjs +0 -124
  254. package/lib/components/VCalendar/VCalendarCategory.mjs.map +0 -1
  255. package/lib/components/VCalendar/VCalendarCategory.sass +0 -100
  256. package/lib/components/VCalendar/VCalendarDaily.mjs +0 -239
  257. package/lib/components/VCalendar/VCalendarDaily.mjs.map +0 -1
  258. package/lib/components/VCalendar/VCalendarDaily.sass +0 -140
  259. package/lib/components/VCalendar/VCalendarMonthly.mjs +0 -25
  260. package/lib/components/VCalendar/VCalendarMonthly.mjs.map +0 -1
  261. package/lib/components/VCalendar/VCalendarWeekly.mjs +0 -193
  262. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +0 -1
  263. package/lib/components/VCalendar/VCalendarWeekly.sass +0 -118
  264. package/lib/components/VCalendar/index.mjs +0 -16
  265. package/lib/components/VCalendar/index.mjs.map +0 -1
  266. package/lib/components/VCalendar/mixins/calendar-base.mjs +0 -89
  267. package/lib/components/VCalendar/mixins/calendar-base.mjs.map +0 -1
  268. package/lib/components/VCalendar/mixins/calendar-with-events.mjs +0 -416
  269. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +0 -1
  270. package/lib/components/VCalendar/mixins/calendar-with-events.sass +0 -67
  271. package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs +0 -135
  272. package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs.map +0 -1
  273. package/lib/components/VCalendar/mixins/mouse.mjs +0 -85
  274. package/lib/components/VCalendar/mixins/mouse.mjs.map +0 -1
  275. package/lib/components/VCalendar/mixins/times.mjs +0 -65
  276. package/lib/components/VCalendar/mixins/times.mjs.map +0 -1
  277. package/lib/components/VCalendar/modes/column.mjs +0 -18
  278. package/lib/components/VCalendar/modes/column.mjs.map +0 -1
  279. package/lib/components/VCalendar/modes/common.mjs +0 -112
  280. package/lib/components/VCalendar/modes/common.mjs.map +0 -1
  281. package/lib/components/VCalendar/modes/index.mjs +0 -9
  282. package/lib/components/VCalendar/modes/index.mjs.map +0 -1
  283. package/lib/components/VCalendar/modes/stack.mjs +0 -204
  284. package/lib/components/VCalendar/modes/stack.mjs.map +0 -1
  285. package/lib/components/VCalendar/util/events.mjs +0 -44
  286. package/lib/components/VCalendar/util/events.mjs.map +0 -1
  287. package/lib/components/VCalendar/util/parser.mjs +0 -21
  288. package/lib/components/VCalendar/util/parser.mjs.map +0 -1
  289. package/lib/components/VCalendar/util/props.mjs +0 -248
  290. package/lib/components/VCalendar/util/props.mjs.map +0 -1
  291. package/lib/components/VCalendar/util/timestamp.mjs +0 -407
  292. package/lib/components/VCalendar/util/timestamp.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.4.8
2
+ * Vuetify v3.4.10
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -327,6 +327,12 @@ function chunk(str) {
327
327
  }
328
328
  return chunked;
329
329
  }
330
+ function chunkArray(array) {
331
+ let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
332
+ return Array.from({
333
+ length: Math.ceil(array.length / size)
334
+ }, (v, i) => array.slice(i * size, i * size + size));
335
+ }
330
336
  function humanReadableFileSize(bytes) {
331
337
  let base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;
332
338
  if (bytes < base) {
@@ -531,6 +537,14 @@ function ensureValidVNode(vnodes) {
531
537
  return child.type !== Fragment || ensureValidVNode(child.children);
532
538
  }) ? vnodes : null;
533
539
  }
540
+ function defer(timeout, cb) {
541
+ if (!IN_BROWSER || timeout === 0) {
542
+ cb();
543
+ return () => {};
544
+ }
545
+ const timeoutId = window.setTimeout(cb, timeout);
546
+ return () => window.clearTimeout(timeoutId);
547
+ }
534
548
 
535
549
  // Utilities
536
550
  const block = ['top', 'bottom'];
@@ -1895,7 +1909,8 @@ var en = {
1895
1909
  }
1896
1910
  },
1897
1911
  calendar: {
1898
- moreEvents: '{0} more'
1912
+ moreEvents: '{0} more',
1913
+ today: 'Today'
1899
1914
  },
1900
1915
  input: {
1901
1916
  clear: 'Clear {0}',
@@ -3827,7 +3842,6 @@ const VAppBar = genericComponent()({
3827
3842
  // shrink: behavior.has('shrink'),
3828
3843
  };
3829
3844
  });
3830
-
3831
3845
  const canScroll = computed(() => {
3832
3846
  const behavior = scrollBehavior.value;
3833
3847
  return behavior.hide ||
@@ -3910,6 +3924,7 @@ const allowedDensities = [null, 'default', 'comfortable', 'compact'];
3910
3924
 
3911
3925
  // typeof allowedDensities[number] evalutes to any
3912
3926
  // when generating api types for whatever reason.
3927
+
3913
3928
  // Composables
3914
3929
  const makeDensityProps = propsFactory({
3915
3930
  density: {
@@ -5805,6 +5820,68 @@ const VAlert = genericComponent()({
5805
5820
  }
5806
5821
  });
5807
5822
 
5823
+ const makeVAvatarProps = propsFactory({
5824
+ start: Boolean,
5825
+ end: Boolean,
5826
+ icon: IconValue,
5827
+ image: String,
5828
+ text: String,
5829
+ ...makeComponentProps(),
5830
+ ...makeDensityProps(),
5831
+ ...makeRoundedProps(),
5832
+ ...makeSizeProps(),
5833
+ ...makeTagProps(),
5834
+ ...makeThemeProps(),
5835
+ ...makeVariantProps({
5836
+ variant: 'flat'
5837
+ })
5838
+ }, 'VAvatar');
5839
+ const VAvatar = genericComponent()({
5840
+ name: 'VAvatar',
5841
+ props: makeVAvatarProps(),
5842
+ setup(props, _ref) {
5843
+ let {
5844
+ slots
5845
+ } = _ref;
5846
+ const {
5847
+ themeClasses
5848
+ } = provideTheme(props);
5849
+ const {
5850
+ colorClasses,
5851
+ colorStyles,
5852
+ variantClasses
5853
+ } = useVariant(props);
5854
+ const {
5855
+ densityClasses
5856
+ } = useDensity(props);
5857
+ const {
5858
+ roundedClasses
5859
+ } = useRounded(props);
5860
+ const {
5861
+ sizeClasses,
5862
+ sizeStyles
5863
+ } = useSize(props);
5864
+ useRender(() => createVNode(props.tag, {
5865
+ "class": ['v-avatar', {
5866
+ 'v-avatar--start': props.start,
5867
+ 'v-avatar--end': props.end
5868
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5869
+ "style": [colorStyles.value, sizeStyles.value, props.style]
5870
+ }, {
5871
+ default: () => [props.image ? createVNode(VImg, {
5872
+ "key": "image",
5873
+ "src": props.image,
5874
+ "alt": "",
5875
+ "cover": true
5876
+ }, null) : props.icon ? createVNode(VIcon, {
5877
+ "key": "icon",
5878
+ "icon": props.icon
5879
+ }, null) : slots.default?.() ?? props.text, genOverlays(false, 'v-avatar')]
5880
+ }));
5881
+ return {};
5882
+ }
5883
+ });
5884
+
5808
5885
  const makeVLabelProps = propsFactory({
5809
5886
  text: String,
5810
5887
  clickable: Boolean,
@@ -6772,68 +6849,6 @@ const VCheckbox = genericComponent()({
6772
6849
  }
6773
6850
  });
6774
6851
 
6775
- const makeVAvatarProps = propsFactory({
6776
- start: Boolean,
6777
- end: Boolean,
6778
- icon: IconValue,
6779
- image: String,
6780
- text: String,
6781
- ...makeComponentProps(),
6782
- ...makeDensityProps(),
6783
- ...makeRoundedProps(),
6784
- ...makeSizeProps(),
6785
- ...makeTagProps(),
6786
- ...makeThemeProps(),
6787
- ...makeVariantProps({
6788
- variant: 'flat'
6789
- })
6790
- }, 'VAvatar');
6791
- const VAvatar = genericComponent()({
6792
- name: 'VAvatar',
6793
- props: makeVAvatarProps(),
6794
- setup(props, _ref) {
6795
- let {
6796
- slots
6797
- } = _ref;
6798
- const {
6799
- themeClasses
6800
- } = provideTheme(props);
6801
- const {
6802
- colorClasses,
6803
- colorStyles,
6804
- variantClasses
6805
- } = useVariant(props);
6806
- const {
6807
- densityClasses
6808
- } = useDensity(props);
6809
- const {
6810
- roundedClasses
6811
- } = useRounded(props);
6812
- const {
6813
- sizeClasses,
6814
- sizeStyles
6815
- } = useSize(props);
6816
- useRender(() => createVNode(props.tag, {
6817
- "class": ['v-avatar', {
6818
- 'v-avatar--start': props.start,
6819
- 'v-avatar--end': props.end
6820
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6821
- "style": [colorStyles.value, sizeStyles.value, props.style]
6822
- }, {
6823
- default: () => [props.image ? createVNode(VImg, {
6824
- "key": "image",
6825
- "src": props.image,
6826
- "alt": "",
6827
- "cover": true
6828
- }, null) : props.icon ? createVNode(VIcon, {
6829
- "key": "icon",
6830
- "icon": props.icon
6831
- }, null) : slots.default?.() ?? props.text, genOverlays(false, 'v-avatar')]
6832
- }));
6833
- return {};
6834
- }
6835
- });
6836
-
6837
6852
  // Types
6838
6853
 
6839
6854
  const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group');
@@ -7126,7 +7141,8 @@ const VChip = genericComponent()({
7126
7141
  }
7127
7142
  }, slots.append)]), hasClose && createVNode("button", mergeProps({
7128
7143
  "key": "close",
7129
- "class": "v-chip__close"
7144
+ "class": "v-chip__close",
7145
+ "type": "button"
7130
7146
  }, closeProps.value), [!slots.close ? createVNode(VIcon, {
7131
7147
  "key": "close-icon",
7132
7148
  "icon": props.closeIcon,
@@ -8392,6 +8408,9 @@ const VList = genericComponent()({
8392
8408
  }
8393
8409
  e.preventDefault();
8394
8410
  }
8411
+ function onMousedown(e) {
8412
+ isFocused.value = true;
8413
+ }
8395
8414
  function focus(location) {
8396
8415
  if (contentRef.value) {
8397
8416
  return focusChild(contentRef.value, location);
@@ -8402,7 +8421,8 @@ const VList = genericComponent()({
8402
8421
  "ref": contentRef,
8403
8422
  "class": ['v-list', {
8404
8423
  'v-list--disabled': props.disabled,
8405
- 'v-list--nav': props.nav
8424
+ 'v-list--nav': props.nav,
8425
+ 'v-list--slim': props.slim
8406
8426
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8407
8427
  "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8408
8428
  "tabindex": props.disabled || isFocused.value ? -1 : 0,
@@ -8411,7 +8431,8 @@ const VList = genericComponent()({
8411
8431
  "onFocusin": onFocusin,
8412
8432
  "onFocusout": onFocusout,
8413
8433
  "onFocus": onFocus,
8414
- "onKeydown": onKeydown
8434
+ "onKeydown": onKeydown,
8435
+ "onMousedown": onMousedown
8415
8436
  }, {
8416
8437
  default: () => [createVNode(VListChildren, {
8417
8438
  "items": items.value,
@@ -8538,7 +8559,6 @@ const locationStrategies = {
8538
8559
  // specific viewport position, usually centered
8539
8560
  connected: connectedLocationStrategy // connected to a certain element
8540
8561
  };
8541
-
8542
8562
  const makeLocationStrategyProps = propsFactory({
8543
8563
  locationStrategy: {
8544
8564
  type: [String, Function],
@@ -9085,26 +9105,27 @@ const makeDelayProps = propsFactory({
9085
9105
  openDelay: [Number, String]
9086
9106
  }, 'delay');
9087
9107
  function useDelay(props, cb) {
9088
- const delays = {};
9089
- const runDelayFactory = prop => () => {
9090
- // istanbul ignore next
9091
- if (!IN_BROWSER) return Promise.resolve(true);
9092
- const active = prop === 'openDelay';
9093
- delays.closeDelay && window.clearTimeout(delays.closeDelay);
9094
- delete delays.closeDelay;
9095
- delays.openDelay && window.clearTimeout(delays.openDelay);
9096
- delete delays.openDelay;
9108
+ let clearDelay = () => {};
9109
+ function runDelay(isOpening) {
9110
+ clearDelay?.();
9111
+ const delay = Number(isOpening ? props.openDelay : props.closeDelay);
9097
9112
  return new Promise(resolve => {
9098
- const delay = parseInt(props[prop] ?? 0, 10);
9099
- delays[prop] = window.setTimeout(() => {
9100
- cb?.(active);
9101
- resolve(active);
9102
- }, delay);
9113
+ clearDelay = defer(delay, () => {
9114
+ cb?.(isOpening);
9115
+ resolve(isOpening);
9116
+ });
9103
9117
  });
9104
- };
9118
+ }
9119
+ function runOpenDelay() {
9120
+ return runDelay(true);
9121
+ }
9122
+ function runCloseDelay() {
9123
+ return runDelay(false);
9124
+ }
9105
9125
  return {
9106
- runCloseDelay: runDelayFactory('closeDelay'),
9107
- runOpenDelay: runDelayFactory('openDelay')
9126
+ clearDelay,
9127
+ runOpenDelay,
9128
+ runCloseDelay
9108
9129
  };
9109
9130
  }
9110
9131
 
@@ -9951,7 +9972,7 @@ const VOverlay = genericComponent()({
9951
9972
  ref: activatorRef,
9952
9973
  targetRef
9953
9974
  }, activatorEvents.value, props.activatorProps)
9954
- }), isMounted.value && hasContent.value && createVNode(Teleport, {
9975
+ }), !props.disabled && isMounted.value && hasContent.value && createVNode(Teleport, {
9955
9976
  "disabled": !teleportTarget.value,
9956
9977
  "to": teleportTarget.value
9957
9978
  }, {
@@ -9967,7 +9988,7 @@ const VOverlay = genericComponent()({
9967
9988
  "ref": root
9968
9989
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9969
9990
  "color": scrimColor,
9970
- "modelValue": isActive.value && !!props.scrim
9991
+ "modelValue": !!props.scrim && isActive.value
9971
9992
  }, scrimEvents.value), null), createVNode(MaybeTransition, {
9972
9993
  "appear": true,
9973
9994
  "persisted": true,
@@ -11320,7 +11341,7 @@ const VSelect = genericComponent()({
11320
11341
  }
11321
11342
  return items.value;
11322
11343
  });
11323
- const menuDisabled = computed(() => props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value);
11344
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
11324
11345
  const computedMenuProps = computed(() => {
11325
11346
  return {
11326
11347
  ...props.menuProps,
@@ -11330,7 +11351,6 @@ const VSelect = genericComponent()({
11330
11351
  }
11331
11352
  };
11332
11353
  });
11333
-
11334
11354
  const listRef = ref();
11335
11355
  const {
11336
11356
  onListScroll,
@@ -11428,6 +11448,15 @@ const VSelect = genericComponent()({
11428
11448
  });
11429
11449
  }
11430
11450
  });
11451
+ watch(displayItems, (val, oldVal) => {
11452
+ if (!isFocused.value) return;
11453
+ if (!val.length && props.hideNoData) {
11454
+ menu.value = false;
11455
+ }
11456
+ if (!oldVal.length && val.length) {
11457
+ menu.value = true;
11458
+ }
11459
+ });
11431
11460
  useRender(() => {
11432
11461
  const hasChips = !!(props.chips || slots.chip);
11433
11462
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -11485,6 +11514,7 @@ const VSelect = genericComponent()({
11485
11514
  "onFocusin": onFocusin,
11486
11515
  "onScrollPassive": onListScroll,
11487
11516
  "tabindex": "-1",
11517
+ "aria-live": "polite",
11488
11518
  "color": props.itemColor ?? props.color
11489
11519
  }, {
11490
11520
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
@@ -11521,7 +11551,9 @@ const VSelect = genericComponent()({
11521
11551
  "modelValue": isSelected,
11522
11552
  "ripple": false,
11523
11553
  "tabindex": "-1"
11524
- }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
11554
+ }, null) : undefined, item.props.prependAvatar && createVNode(VAvatar, {
11555
+ "image": item.props.prependAvatar
11556
+ }, null), item.props.prependIcon && createVNode(VIcon, {
11525
11557
  "icon": item.props.prependIcon
11526
11558
  }, null)]);
11527
11559
  }
@@ -11812,7 +11844,7 @@ const VAutocomplete = genericComponent()({
11812
11844
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
11813
11845
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
11814
11846
  });
11815
- const menuDisabled = computed(() => props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value);
11847
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
11816
11848
  const listRef = ref();
11817
11849
  const {
11818
11850
  onListScroll,
@@ -11971,6 +12003,15 @@ const VAutocomplete = genericComponent()({
11971
12003
  });
11972
12004
  }
11973
12005
  });
12006
+ watch(displayItems, (val, oldVal) => {
12007
+ if (!isFocused.value) return;
12008
+ if (!val.length && props.hideNoData) {
12009
+ menu.value = false;
12010
+ }
12011
+ if (!oldVal.length && val.length) {
12012
+ menu.value = true;
12013
+ }
12014
+ });
11974
12015
  useRender(() => {
11975
12016
  const hasChips = !!(props.chips || slots.chip);
11976
12017
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -12025,6 +12066,7 @@ const VAutocomplete = genericComponent()({
12025
12066
  "onFocusout": onFocusout,
12026
12067
  "onScrollPassive": onListScroll,
12027
12068
  "tabindex": "-1",
12069
+ "aria-live": "polite",
12028
12070
  "color": props.itemColor ?? props.color
12029
12071
  }, {
12030
12072
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
@@ -12060,7 +12102,9 @@ const VAutocomplete = genericComponent()({
12060
12102
  "modelValue": isSelected,
12061
12103
  "ripple": false,
12062
12104
  "tabindex": "-1"
12063
- }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
12105
+ }, null) : undefined, item.props.prependAvatar && createVNode(VAvatar, {
12106
+ "image": item.props.prependAvatar
12107
+ }, null), item.props.prependIcon && createVNode(VIcon, {
12064
12108
  "icon": item.props.prependIcon
12065
12109
  }, null)]);
12066
12110
  },
@@ -13569,7 +13613,6 @@ const VWindowItem = genericComponent()({
13569
13613
  function onTransitionCancelled() {
13570
13614
  onAfterTransition(); // This should have the same path as normal transition end.
13571
13615
  }
13572
-
13573
13616
  function onEnterTransition(el) {
13574
13617
  if (!isTransitioning.value) {
13575
13618
  return;
@@ -15568,7 +15611,7 @@ const VCombobox = genericComponent()({
15568
15611
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
15569
15612
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
15570
15613
  });
15571
- const menuDisabled = computed(() => props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value);
15614
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
15572
15615
  const listRef = ref();
15573
15616
  const {
15574
15617
  onListScroll,
@@ -15696,9 +15739,6 @@ const VCombobox = genericComponent()({
15696
15739
  function onUpdateModelValue(v) {
15697
15740
  if (v == null || v === '' && !props.multiple) model.value = [];
15698
15741
  }
15699
- watch(filteredItems, val => {
15700
- if (!val.length && props.hideNoData) menu.value = false;
15701
- });
15702
15742
  watch(isFocused, (val, oldVal) => {
15703
15743
  if (val || val === oldVal) return;
15704
15744
  selectionIndex.value = -1;
@@ -15722,6 +15762,15 @@ const VCombobox = genericComponent()({
15722
15762
  });
15723
15763
  }
15724
15764
  });
15765
+ watch(displayItems, (val, oldVal) => {
15766
+ if (!isFocused.value) return;
15767
+ if (!val.length && props.hideNoData) {
15768
+ menu.value = false;
15769
+ }
15770
+ if (!oldVal.length && val.length) {
15771
+ menu.value = true;
15772
+ }
15773
+ });
15725
15774
  useRender(() => {
15726
15775
  const hasChips = !!(props.chips || slots.chip);
15727
15776
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -15776,6 +15825,7 @@ const VCombobox = genericComponent()({
15776
15825
  "onFocusout": onFocusout,
15777
15826
  "onScrollPassive": onListScroll,
15778
15827
  "tabindex": "-1",
15828
+ "aria-live": "polite",
15779
15829
  "color": props.itemColor ?? props.color
15780
15830
  }, {
15781
15831
  default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
@@ -15811,7 +15861,9 @@ const VCombobox = genericComponent()({
15811
15861
  "modelValue": isSelected,
15812
15862
  "ripple": false,
15813
15863
  "tabindex": "-1"
15814
- }, null) : undefined, item.props.prependIcon && createVNode(VIcon, {
15864
+ }, null) : undefined, item.props.prependAvatar && createVNode(VAvatar, {
15865
+ "image": item.props.prependAvatar
15866
+ }, null), item.props.prependIcon && createVNode(VIcon, {
15815
15867
  "icon": item.props.prependIcon
15816
15868
  }, null)]);
15817
15869
  },
@@ -16596,6 +16648,20 @@ function getWeekArray(date, locale) {
16596
16648
  }
16597
16649
  return weeks;
16598
16650
  }
16651
+ function startOfWeek(date) {
16652
+ const d = new Date(date);
16653
+ while (d.getDay() !== 0) {
16654
+ d.setDate(d.getDate() - 1);
16655
+ }
16656
+ return d;
16657
+ }
16658
+ function endOfWeek(date) {
16659
+ const d = new Date(date);
16660
+ while (d.getDay() !== 6) {
16661
+ d.setDate(d.getDate() + 1);
16662
+ }
16663
+ return d;
16664
+ }
16599
16665
  function startOfMonth(date) {
16600
16666
  return new Date(date.getFullYear(), date.getMonth(), 1);
16601
16667
  }
@@ -16624,14 +16690,18 @@ function date(value) {
16624
16690
  return null;
16625
16691
  }
16626
16692
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
16693
+
16694
+ // The number of letters returned by getWeekday() varies by date library
16695
+ // So we've opted for 3-letter abbreviations for all locales
16627
16696
  function getWeekdays(locale) {
16628
16697
  const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
16629
16698
  return createRange(7).map(i => {
16630
16699
  const weekday = new Date(sundayJanuarySecond2000);
16631
16700
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
16632
- return new Intl.DateTimeFormat(locale, {
16633
- weekday: 'narrow'
16701
+ const formattedDay = new Intl.DateTimeFormat(locale, {
16702
+ weekday: 'short'
16634
16703
  }).format(weekday);
16704
+ return formattedDay.charAt(0).toUpperCase() + formattedDay.slice(1);
16635
16705
  });
16636
16706
  }
16637
16707
  function format(value, formatString, locale, formats) {
@@ -16650,6 +16720,12 @@ function format(value, formatString, locale, formats) {
16650
16720
  year: 'numeric'
16651
16721
  };
16652
16722
  break;
16723
+ case 'hours12h':
16724
+ options = {
16725
+ hour: 'numeric',
16726
+ hour12: true
16727
+ };
16728
+ break;
16653
16729
  case 'normalDateWithWeekday':
16654
16730
  options = {
16655
16731
  weekday: 'short',
@@ -16698,6 +16774,11 @@ function format(value, formatString, locale, formats) {
16698
16774
  day: 'numeric'
16699
16775
  };
16700
16776
  break;
16777
+ case 'weekdayShort':
16778
+ options = {
16779
+ weekday: 'short'
16780
+ };
16781
+ break;
16701
16782
  case 'year':
16702
16783
  options = {
16703
16784
  year: 'numeric'
@@ -16722,11 +16803,26 @@ function parseISO(value) {
16722
16803
  const [year, month, day] = value.split('-').map(Number);
16723
16804
  return new Date(year, month - 1, day);
16724
16805
  }
16806
+ function addMinutes(date, amount) {
16807
+ const d = new Date(date);
16808
+ d.setMinutes(d.getMinutes() + amount);
16809
+ return d;
16810
+ }
16811
+ function addHours(date, amount) {
16812
+ const d = new Date(date);
16813
+ d.setHours(d.getHours() + amount);
16814
+ return d;
16815
+ }
16725
16816
  function addDays(date, amount) {
16726
16817
  const d = new Date(date);
16727
16818
  d.setDate(d.getDate() + amount);
16728
16819
  return d;
16729
16820
  }
16821
+ function addWeeks(date, amount) {
16822
+ const d = new Date(date);
16823
+ d.setDate(d.getDate() + amount * 7);
16824
+ return d;
16825
+ }
16730
16826
  function addMonths(date, amount) {
16731
16827
  const d = new Date(date);
16732
16828
  d.setMonth(d.getMonth() + amount);
@@ -16741,6 +16837,12 @@ function getMonth(date) {
16741
16837
  function getNextMonth(date) {
16742
16838
  return new Date(date.getFullYear(), date.getMonth() + 1, 1);
16743
16839
  }
16840
+ function getHours(date) {
16841
+ return date.getHours();
16842
+ }
16843
+ function getMinutes(date) {
16844
+ return date.getMinutes();
16845
+ }
16744
16846
  function startOfYear(date) {
16745
16847
  return new Date(date.getFullYear(), 0, 1);
16746
16848
  }
@@ -16777,6 +16879,16 @@ function getDiff(date, comparing, unit) {
16777
16879
  }
16778
16880
  return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
16779
16881
  }
16882
+ function setHours(date, count) {
16883
+ const d = new Date(date);
16884
+ d.setHours(count);
16885
+ return d;
16886
+ }
16887
+ function setMinutes(date, count) {
16888
+ const d = new Date(date);
16889
+ d.setMinutes(count);
16890
+ return d;
16891
+ }
16780
16892
  function setMonth(date, count) {
16781
16893
  const d = new Date(date);
16782
16894
  d.setMonth(count);
@@ -16810,15 +16922,30 @@ class VuetifyDateAdapter {
16810
16922
  parseISO(date) {
16811
16923
  return parseISO(date);
16812
16924
  }
16925
+ addMinutes(date, amount) {
16926
+ return addMinutes(date, amount);
16927
+ }
16928
+ addHours(date, amount) {
16929
+ return addHours(date, amount);
16930
+ }
16813
16931
  addDays(date, amount) {
16814
16932
  return addDays(date, amount);
16815
16933
  }
16934
+ addWeeks(date, amount) {
16935
+ return addWeeks(date, amount);
16936
+ }
16816
16937
  addMonths(date, amount) {
16817
16938
  return addMonths(date, amount);
16818
16939
  }
16819
16940
  getWeekArray(date) {
16820
16941
  return getWeekArray(date, this.locale);
16821
16942
  }
16943
+ startOfWeek(date) {
16944
+ return startOfWeek(date);
16945
+ }
16946
+ endOfWeek(date) {
16947
+ return endOfWeek(date);
16948
+ }
16822
16949
  startOfMonth(date) {
16823
16950
  return startOfMonth(date);
16824
16951
  }
@@ -16849,6 +16976,12 @@ class VuetifyDateAdapter {
16849
16976
  isSameMonth(date, comparing) {
16850
16977
  return isSameMonth(date, comparing);
16851
16978
  }
16979
+ setMinutes(date, count) {
16980
+ return setMinutes(date, count);
16981
+ }
16982
+ setHours(date, count) {
16983
+ return setHours(date, count);
16984
+ }
16852
16985
  setMonth(date, count) {
16853
16986
  return setMonth(date, count);
16854
16987
  }
@@ -16870,6 +17003,12 @@ class VuetifyDateAdapter {
16870
17003
  getNextMonth(date) {
16871
17004
  return getNextMonth(date);
16872
17005
  }
17006
+ getHours(date) {
17007
+ return getHours(date);
17008
+ }
17009
+ getMinutes(date) {
17010
+ return getMinutes(date);
17011
+ }
16873
17012
  startOfDay(date) {
16874
17013
  return startOfDay(date);
16875
17014
  }
@@ -17728,35 +17867,38 @@ const VDataTableFooter = genericComponent()({
17728
17867
  title: t(option.title)
17729
17868
  };
17730
17869
  }));
17731
- useRender(() => createVNode("div", {
17732
- "class": "v-data-table-footer"
17733
- }, [slots.prepend?.(), createVNode("div", {
17734
- "class": "v-data-table-footer__items-per-page"
17735
- }, [createVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
17736
- "items": itemsPerPageOptions.value,
17737
- "modelValue": itemsPerPage.value,
17738
- "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
17739
- "density": "compact",
17740
- "variant": "outlined",
17741
- "hide-details": true
17742
- }, null)]), createVNode("div", {
17743
- "class": "v-data-table-footer__info"
17744
- }, [createVNode("div", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), createVNode("div", {
17745
- "class": "v-data-table-footer__pagination"
17746
- }, [createVNode(VPagination, {
17747
- "modelValue": page.value,
17748
- "onUpdate:modelValue": $event => page.value = $event,
17749
- "density": "comfortable",
17750
- "first-aria-label": props.firstPageLabel,
17751
- "last-aria-label": props.lastPageLabel,
17752
- "length": pageCount.value,
17753
- "next-aria-label": props.nextPageLabel,
17754
- "previous-aria-label": props.prevPageLabel,
17755
- "rounded": true,
17756
- "show-first-last-page": true,
17757
- "total-visible": props.showCurrentPage ? 1 : 0,
17758
- "variant": "plain"
17759
- }, null)])]));
17870
+ useRender(() => {
17871
+ const paginationProps = VPagination.filterProps(props);
17872
+ return createVNode("div", {
17873
+ "class": "v-data-table-footer"
17874
+ }, [slots.prepend?.(), createVNode("div", {
17875
+ "class": "v-data-table-footer__items-per-page"
17876
+ }, [createVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
17877
+ "items": itemsPerPageOptions.value,
17878
+ "modelValue": itemsPerPage.value,
17879
+ "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
17880
+ "density": "compact",
17881
+ "variant": "outlined",
17882
+ "hide-details": true
17883
+ }, null)]), createVNode("div", {
17884
+ "class": "v-data-table-footer__info"
17885
+ }, [createVNode("div", null, [t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value)])]), createVNode("div", {
17886
+ "class": "v-data-table-footer__pagination"
17887
+ }, [createVNode(VPagination, mergeProps({
17888
+ "modelValue": page.value,
17889
+ "onUpdate:modelValue": $event => page.value = $event,
17890
+ "density": "comfortable",
17891
+ "first-aria-label": props.firstPageLabel,
17892
+ "last-aria-label": props.lastPageLabel,
17893
+ "length": pageCount.value,
17894
+ "next-aria-label": props.nextPageLabel,
17895
+ "previous-aria-label": props.prevPageLabel,
17896
+ "rounded": true,
17897
+ "show-first-last-page": true,
17898
+ "total-visible": props.showCurrentPage ? 1 : 0,
17899
+ "variant": "plain"
17900
+ }, paginationProps), null)])]);
17901
+ });
17760
17902
  return {};
17761
17903
  }
17762
17904
  });
@@ -18140,7 +18282,8 @@ const VDataTableHeaders = genericComponent()({
18140
18282
  "class": ['v-data-table__th', {
18141
18283
  'v-data-table__th--sortable': column.sortable,
18142
18284
  'v-data-table__th--sorted': isSorted(column),
18143
- 'v-data-table__th--fixed': column.fixed
18285
+ 'v-data-table__th--fixed': column.fixed,
18286
+ 'v-data-table__th--sticky': props.sticky
18144
18287
  }, loaderClasses.value],
18145
18288
  "style": {
18146
18289
  width: convertToUnit(column.width),
@@ -19634,7 +19777,11 @@ const makeCalendarProps = propsFactory({
19634
19777
  max: null,
19635
19778
  min: null,
19636
19779
  showAdjacentMonths: Boolean,
19637
- year: [Number, String]
19780
+ year: [Number, String],
19781
+ weekdays: {
19782
+ type: Array,
19783
+ default: () => [0, 1, 2, 3, 4, 5, 6]
19784
+ }
19638
19785
  }, 'calendar');
19639
19786
  function useCalendar(props) {
19640
19787
  const adapter = useDate();
@@ -19675,10 +19822,10 @@ function useCalendar(props) {
19675
19822
  }
19676
19823
  return weeks;
19677
19824
  });
19678
- const daysInMonth = computed(() => {
19679
- const days = weeksInMonth.value.flat();
19680
- const today = adapter.date();
19681
- return days.map((date, index) => {
19825
+ function genDays(days, today) {
19826
+ return days.filter(date => {
19827
+ return props.weekdays.includes(date.getDay());
19828
+ }).map((date, index) => {
19682
19829
  const isoDate = adapter.toISO(date);
19683
19830
  const isAdjacent = !adapter.isSameMonth(date, month.value);
19684
19831
  const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
@@ -19703,6 +19850,21 @@ function useCalendar(props) {
19703
19850
  localized: adapter.format(date, 'dayOfMonth')
19704
19851
  };
19705
19852
  });
19853
+ }
19854
+ const daysInWeek = computed(() => {
19855
+ const lastDay = adapter.startOfWeek(model.value);
19856
+ const week = [];
19857
+ for (let day = 0; day <= 6; day++) {
19858
+ week.push(adapter.addDays(lastDay, day));
19859
+ }
19860
+ const days = week;
19861
+ const today = adapter.date();
19862
+ return genDays(days, today);
19863
+ });
19864
+ const daysInMonth = computed(() => {
19865
+ const days = weeksInMonth.value.flat();
19866
+ const today = adapter.date();
19867
+ return genDays(days, today);
19706
19868
  });
19707
19869
  const weekNumbers = computed(() => {
19708
19870
  return weeksInMonth.value.map(week => {
@@ -19725,6 +19887,8 @@ function useCalendar(props) {
19725
19887
  return {
19726
19888
  displayValue,
19727
19889
  daysInMonth,
19890
+ daysInWeek,
19891
+ genDays,
19728
19892
  model,
19729
19893
  weeksInMonth,
19730
19894
  weekNumbers
@@ -19787,7 +19951,7 @@ const VDatePickerMonth = genericComponent()({
19787
19951
  "class": "v-date-picker-month__days"
19788
19952
  }, [!props.hideWeekdays && adapter.getWeekdays().map(weekDay => createVNode("div", {
19789
19953
  "class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
19790
- }, [weekDay])), daysInMonth.value.map((item, i) => {
19954
+ }, [weekDay[0]])), daysInMonth.value.map((item, i) => {
19791
19955
  const slotProps = {
19792
19956
  props: {
19793
19957
  onClick: () => onClick(item.date)
@@ -20215,7 +20379,10 @@ const VDatePicker = genericComponent()({
20215
20379
  "key": "header"
20216
20380
  }, datePickerHeaderProps, headerProps, {
20217
20381
  "onClick": viewMode.value !== 'month' ? onClickDate : undefined
20218
- }), slots),
20382
+ }), {
20383
+ ...slots,
20384
+ default: undefined
20385
+ }),
20219
20386
  default: () => createVNode(Fragment, null, [createVNode(VDatePickerControls, mergeProps(datePickerControlsProps, {
20220
20387
  "disabled": disabled.value,
20221
20388
  "text": text.value,
@@ -24925,6 +25092,477 @@ const VConfirmEdit = genericComponent()({
24925
25092
  }
24926
25093
  });
24927
25094
 
25095
+ const makeVCalendarIntervalEventProps = propsFactory({
25096
+ allDay: Boolean,
25097
+ interval: Object,
25098
+ intervalDivisions: {
25099
+ type: Number,
25100
+ required: true
25101
+ },
25102
+ intervalDuration: {
25103
+ type: Number,
25104
+ required: true
25105
+ },
25106
+ intervalHeight: {
25107
+ type: Number,
25108
+ required: true
25109
+ },
25110
+ event: Object
25111
+ }, 'VCalendarIntervalEvent');
25112
+ const VCalendarIntervalEvent = genericComponent()({
25113
+ name: 'VCalendarIntervalEvent',
25114
+ props: makeVCalendarIntervalEventProps(),
25115
+ setup(props) {
25116
+ const adapter = useDate();
25117
+ const calcHeight = () => {
25118
+ if (!props.event?.first && !props.event?.last || adapter.isEqual(props.event?.start, props.interval?.start)) {
25119
+ return {
25120
+ height: '100%',
25121
+ margin: convertToUnit(0)
25122
+ };
25123
+ } else {
25124
+ const {
25125
+ height,
25126
+ margin
25127
+ } = Array.from({
25128
+ length: props.intervalDivisions
25129
+ }, x => x * (props.intervalDuration / props.intervalDivisions)).reduce((total, div, index) => {
25130
+ if (adapter.isBefore(adapter.addMinutes(props.interval?.start, div), props.event?.start)) {
25131
+ return {
25132
+ height: convertToUnit(props.intervalHeight / props.intervalDivisions * index),
25133
+ margin: convertToUnit(props.intervalHeight / props.intervalDivisions * index)
25134
+ };
25135
+ }
25136
+ return {
25137
+ height: total.height,
25138
+ margin: total.margin
25139
+ };
25140
+ }, {
25141
+ height: '',
25142
+ margin: ''
25143
+ });
25144
+ return {
25145
+ height,
25146
+ margin
25147
+ };
25148
+ }
25149
+ };
25150
+ useRender(() => {
25151
+ return createVNode(VSheet, {
25152
+ "height": calcHeight().height,
25153
+ "density": "comfortable",
25154
+ "style": `width: 100%; margin-top: ${calcHeight().margin}`,
25155
+ "class": "align-center pa-1",
25156
+ "color": props.event?.color ?? undefined,
25157
+ "rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
25158
+ }, {
25159
+ default: () => [props.event?.first ? props.event?.title : '']
25160
+ });
25161
+ });
25162
+ return {};
25163
+ }
25164
+ });
25165
+
25166
+ const makeVCalendarIntervalProps = propsFactory({
25167
+ day: {
25168
+ type: Object,
25169
+ default: () => ({})
25170
+ },
25171
+ dayIndex: Number,
25172
+ events: Array,
25173
+ intervalDivisions: {
25174
+ type: Number,
25175
+ default: 2
25176
+ },
25177
+ intervalDuration: {
25178
+ type: Number,
25179
+ default: 60
25180
+ },
25181
+ intervalHeight: {
25182
+ type: Number,
25183
+ default: 48
25184
+ },
25185
+ intervalFormat: {
25186
+ type: [String, Function],
25187
+ default: 'fullTime12h'
25188
+ },
25189
+ intervalStart: {
25190
+ type: Number,
25191
+ default: 0
25192
+ }
25193
+ }, 'VCalendarInterval');
25194
+ const VCalendarInterval = genericComponent()({
25195
+ name: 'VCalendarInterval',
25196
+ props: {
25197
+ index: {
25198
+ type: Number,
25199
+ required: true
25200
+ },
25201
+ ...makeVCalendarIntervalProps()
25202
+ },
25203
+ setup(props, _ref) {
25204
+ const adapter = useDate();
25205
+ const interval = computed(() => {
25206
+ const start = adapter.addMinutes(adapter.startOfDay(props.day.date), props.intervalDuration * (props.index + props.intervalStart));
25207
+ const end = adapter.addMinutes(adapter.startOfDay(props.day.date), props.intervalDuration * (props.index + props.intervalStart + 1) - 1);
25208
+ return {
25209
+ ...props.day,
25210
+ label: adapter.format(start, 'fullTime24h'),
25211
+ start,
25212
+ end,
25213
+ events: props.events ? props.events.filter(e => !e.allDay && (adapter.isEqual(start, e.start) || adapter.isWithinRange(e.start, [start, end]) || adapter.isWithinRange(start, [e.start, e.end]) || adapter.isEqual(end, e.end))).map(e => {
25214
+ return {
25215
+ ...e,
25216
+ first: adapter.isEqual(start, e.start) || adapter.isWithinRange(e.start, [start, end]),
25217
+ last: adapter.isEqual(end, e.end) || adapter.isWithinRange(e.end, [start, end])
25218
+ };
25219
+ }) : []
25220
+ };
25221
+ });
25222
+ useRender(() => {
25223
+ return props.dayIndex === 0 ? createVNode("div", {
25224
+ "class": "v-calendar-day__row-with-label",
25225
+ "style": `height: ${convertToUnit(props.intervalHeight)}`
25226
+ }, [createVNode("div", {
25227
+ "class": "v-calendar-day__row-label"
25228
+ }, [createVNode("slot", {
25229
+ "name": "intervalFormat",
25230
+ "interval": interval.value
25231
+ }, [props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : ''])]), createVNode("div", {
25232
+ "class": "v-calendar-day__row-hairline"
25233
+ }, null), createVNode("div", {
25234
+ "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
25235
+ }, [createVNode("slot", {
25236
+ "name": "intervalBody",
25237
+ "interval": interval.value
25238
+ }, [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, {
25239
+ "event": event,
25240
+ "interval": interval.value,
25241
+ "intervalDivisions": props.intervalDivisions,
25242
+ "intervalDuration": props.intervalDuration,
25243
+ "intervalHeight": props.intervalHeight
25244
+ }, null))])])]) : createVNode("div", {
25245
+ "class": "v-calendar-day__row-without-label",
25246
+ "style": `height: ${convertToUnit(props.intervalHeight)}`
25247
+ }, [createVNode("div", {
25248
+ "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
25249
+ }, [createVNode("slot", {
25250
+ "name": "intervalBody",
25251
+ "interval": interval.value
25252
+ }, [interval.value.events?.filter(event => !event.allDay).map(event => createVNode(VCalendarIntervalEvent, {
25253
+ "event": event,
25254
+ "interval": interval.value,
25255
+ "intervalDivisions": props.intervalDivisions,
25256
+ "intervalDuration": props.intervalDuration,
25257
+ "intervalHeight": props.intervalHeight
25258
+ }, null))])])]);
25259
+ });
25260
+ return {
25261
+ interval
25262
+ };
25263
+ }
25264
+ });
25265
+
25266
+ const makeVCalendarDayProps = propsFactory({
25267
+ hideDayHeader: Boolean,
25268
+ intervals: {
25269
+ type: Number,
25270
+ default: 24
25271
+ },
25272
+ ...makeVCalendarIntervalProps()
25273
+ }, 'VCalendarDay');
25274
+ const VCalendarDay = genericComponent()({
25275
+ name: 'VCalendarDay',
25276
+ props: makeVCalendarDayProps(),
25277
+ setup(props) {
25278
+ const adapter = useDate();
25279
+ const intervals = computed(() => [...Array.from({
25280
+ length: props.intervals
25281
+ }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
25282
+ useRender(() => {
25283
+ const calendarIntervalProps = VCalendarInterval.filterProps(props);
25284
+ return createVNode("div", {
25285
+ "class": "v-calendar-day__container"
25286
+ }, [!props.hideDayHeader && createVNode("div", {
25287
+ "key": "calender-week-name",
25288
+ "class": "v-calendar-weekly__head-weekday"
25289
+ }, [adapter.format(props.day.date, 'weekdayShort'), createVNode("div", null, [createVNode(VBtn, {
25290
+ "icon": true,
25291
+ "text": adapter.format(props.day.date, 'dayOfMonth'),
25292
+ "variant": "text"
25293
+ }, null)])]), intervals.value.map((_, index) => createVNode(VCalendarInterval, mergeProps({
25294
+ "index": index
25295
+ }, calendarIntervalProps), null))]);
25296
+ });
25297
+ return {
25298
+ intervals
25299
+ };
25300
+ }
25301
+ });
25302
+
25303
+ // Types
25304
+
25305
+ const makeVCalendarHeaderProps = propsFactory({
25306
+ nextIcon: {
25307
+ type: String,
25308
+ default: '$next'
25309
+ },
25310
+ prevIcon: {
25311
+ type: String,
25312
+ default: '$prev'
25313
+ },
25314
+ title: String,
25315
+ text: {
25316
+ type: String,
25317
+ default: '$vuetify.calendar.today'
25318
+ },
25319
+ viewMode: {
25320
+ type: String,
25321
+ default: 'month'
25322
+ }
25323
+ }, 'VCalendarHeader');
25324
+ const VCalendarHeader = genericComponent()({
25325
+ name: 'VCalendarHeader',
25326
+ props: makeVCalendarHeaderProps(),
25327
+ emits: {
25328
+ 'click:next': () => true,
25329
+ 'click:prev': () => true,
25330
+ 'click:toToday': () => true
25331
+ },
25332
+ setup(props, _ref) {
25333
+ let {
25334
+ emit
25335
+ } = _ref;
25336
+ const {
25337
+ t
25338
+ } = useLocale();
25339
+ function prev() {
25340
+ emit('click:prev');
25341
+ }
25342
+ function next() {
25343
+ emit('click:next');
25344
+ }
25345
+ function toToday() {
25346
+ emit('click:toToday');
25347
+ }
25348
+ useRender(() => createVNode("div", {
25349
+ "class": "v-calendar-header"
25350
+ }, [props.text && createVNode(VBtn, {
25351
+ "key": "today",
25352
+ "class": "v-calendar-header__today",
25353
+ "text": t(props.text),
25354
+ "variant": "outlined",
25355
+ "onClick": toToday
25356
+ }, null), createVNode(VBtn, {
25357
+ "density": "comfortable",
25358
+ "icon": props.prevIcon,
25359
+ "variant": "text",
25360
+ "onClick": prev
25361
+ }, null), createVNode(VBtn, {
25362
+ "density": "comfortable",
25363
+ "icon": props.nextIcon,
25364
+ "variant": "text",
25365
+ "onClick": next
25366
+ }, null), createVNode("div", {
25367
+ "class": "v-calendar-header__title"
25368
+ }, [props.title])]));
25369
+ return {};
25370
+ }
25371
+ });
25372
+
25373
+ const makeVCalendarEventProps = propsFactory({
25374
+ allDay: Boolean,
25375
+ day: Object,
25376
+ event: Object
25377
+ }, 'VCalendarEvent');
25378
+ const VCalendarEvent = genericComponent()({
25379
+ name: 'VCalendarEvent',
25380
+ props: makeVCalendarEventProps(),
25381
+ setup(props) {
25382
+ useRender(() => createVNode(VChip, {
25383
+ "color": props.allDay ? 'primary' : undefined,
25384
+ "density": "comfortable",
25385
+ "label": props.allDay,
25386
+ "width": "100%"
25387
+ }, {
25388
+ default: () => [createVNode(VBadge, {
25389
+ "inline": true,
25390
+ "dot": true,
25391
+ "color": props.event?.color
25392
+ }, null), props.event?.title]
25393
+ }));
25394
+ return {};
25395
+ }
25396
+ });
25397
+
25398
+ const makeVCalendarMonthDayProps = propsFactory({
25399
+ active: Boolean,
25400
+ color: String,
25401
+ day: Object,
25402
+ disabled: Boolean,
25403
+ events: Array,
25404
+ title: [Number, String]
25405
+ }, 'VCalendarMonthDay');
25406
+ const VCalendarMonthDay = genericComponent()({
25407
+ name: 'VCalendarMonthDay',
25408
+ props: makeVCalendarMonthDayProps(),
25409
+ setup(props, _ref) {
25410
+ let {
25411
+ emit,
25412
+ slots
25413
+ } = _ref;
25414
+ useRender(() => {
25415
+ const hasTitle = !!(props.title || slots.title?.({
25416
+ title: props.title
25417
+ }));
25418
+ return createVNode("div", {
25419
+ "class": ['v-calendar-month__day']
25420
+ }, [!props.day?.isHidden && hasTitle && createVNode("div", {
25421
+ "key": "title",
25422
+ "class": "v-calendar-weekly__day-label"
25423
+ }, [slots.title?.({
25424
+ title: props.title
25425
+ }) ?? createVNode(VBtn, {
25426
+ "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
25427
+ "color": props.color,
25428
+ "disabled": props.disabled,
25429
+ "icon": true,
25430
+ "size": "x-small",
25431
+ "variant": props.day?.isToday ? undefined : 'flat'
25432
+ }, {
25433
+ default: () => [props.title]
25434
+ })]), createVNode("div", {
25435
+ "key": "content",
25436
+ "class": "v-calendar-weekly__day-content"
25437
+ }, [slots.content?.() ?? createVNode("div", null, [createVNode("div", {
25438
+ "class": "v-calendar-weekly__day-alldayevents-container"
25439
+ }, [props.events?.filter(event => event.allDay).map(event => createVNode(VCalendarEvent, {
25440
+ "day": props.day,
25441
+ "event": event,
25442
+ "allDay": true
25443
+ }, null))]), createVNode("div", {
25444
+ "class": "v-calendar-weekly__day-events-container"
25445
+ }, [props.events?.filter(event => !event.allDay).map(event => createVNode(VCalendarEvent, {
25446
+ "day": props.day,
25447
+ "event": event
25448
+ }, null))])])]), slots.default?.()]);
25449
+ });
25450
+ return {};
25451
+ }
25452
+ });
25453
+
25454
+ const makeVCalendarProps = propsFactory({
25455
+ hideHeader: Boolean,
25456
+ hideWeekNumber: Boolean,
25457
+ ...makeCalendarProps(),
25458
+ ...makeVCalendarDayProps(),
25459
+ ...makeVCalendarHeaderProps()
25460
+ }, 'VCalender');
25461
+ const VCalendar = genericComponent()({
25462
+ name: 'VCalendar',
25463
+ props: makeVCalendarProps(),
25464
+ emits: {
25465
+ next: null,
25466
+ prev: null,
25467
+ 'update:modelValue': null
25468
+ },
25469
+ setup(props, _ref) {
25470
+ let {
25471
+ emit,
25472
+ slots
25473
+ } = _ref;
25474
+ const adapter = useDate();
25475
+ const {
25476
+ daysInMonth,
25477
+ daysInWeek,
25478
+ genDays,
25479
+ model,
25480
+ weekNumbers
25481
+ } = useCalendar(props);
25482
+ const dayNames = adapter.getWeekdays();
25483
+ function onClickNext() {
25484
+ if (props.viewMode === 'month') {
25485
+ model.value = [adapter.addMonths(model.value[0], 1)];
25486
+ }
25487
+ if (props.viewMode === 'week') {
25488
+ model.value = [adapter.addDays(model.value[0], 7)];
25489
+ }
25490
+ if (props.viewMode === 'day') {
25491
+ model.value = [adapter.addDays(model.value[0], 1)];
25492
+ }
25493
+ }
25494
+ function onClickPrev() {
25495
+ if (props.viewMode === 'month') {
25496
+ model.value = [adapter.addMonths(model.value[0], -1)];
25497
+ }
25498
+ if (props.viewMode === 'week') {
25499
+ model.value = [adapter.addDays(model.value[0], -7)];
25500
+ }
25501
+ if (props.viewMode === 'day') {
25502
+ model.value = [adapter.addDays(model.value[0], -1)];
25503
+ }
25504
+ }
25505
+ function onClickToday() {
25506
+ model.value = [new Date()];
25507
+ }
25508
+ const title = computed(() => {
25509
+ return adapter.format(model.value[0], 'monthAndYear');
25510
+ });
25511
+ useRender(() => {
25512
+ const calendarDayProps = VCalendarDay.filterProps(props);
25513
+ const calendarHeaderProps = VCalendarHeader.filterProps(props);
25514
+ return createVNode("div", {
25515
+ "class": ['v-calendar', {
25516
+ 'v-calendar-monthly': props.viewMode === 'month',
25517
+ 'v-calendar-weekly': props.viewMode === 'week',
25518
+ 'v-calendar-day': props.viewMode === 'day'
25519
+ }]
25520
+ }, [createVNode("div", null, [!props.hideHeader && (!slots.header ? createVNode(VCalendarHeader, mergeProps({
25521
+ "key": "calendar-header"
25522
+ }, calendarHeaderProps, {
25523
+ "title": title.value,
25524
+ "onClick:next": onClickNext,
25525
+ "onClick:prev": onClickPrev,
25526
+ "onClick:toToday": onClickToday
25527
+ }), null) : slots.header({
25528
+ title: title.value
25529
+ }))]), createVNode("div", {
25530
+ "class": ['v-calendar__container', `days__${props.weekdays.length}`]
25531
+ }, [props.viewMode === 'month' && !props.hideDayHeader && createVNode("div", {
25532
+ "class": ['v-calendar-weekly__head', `days__${props.weekdays.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])],
25533
+ "key": "calenderWeeklyHead"
25534
+ }, [!props.hideWeekNumber ? createVNode("div", {
25535
+ "key": "weekNumber0",
25536
+ "class": "v-calendar-weekly__head-weeknumber"
25537
+ }, null) : '', props.weekdays.sort((a, b) => a - b).map(weekday => createVNode("div", {
25538
+ "class": `v-calendar-weekly__head-weekday${!props.hideWeekNumber ? '-with-weeknumber' : ''}`
25539
+ }, [dayNames[weekday]]))]), props.viewMode === 'month' && createVNode("div", {
25540
+ "key": "VCalendarMonth",
25541
+ "class": ['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${props.weekdays.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])]
25542
+ }, [chunkArray(daysInMonth.value, props.weekdays.length).map((week, wi) => [!props.hideWeekNumber ? createVNode("div", {
25543
+ "class": "v-calendar-month__weeknumber"
25544
+ }, [weekNumbers.value[wi]]) : '', week.map(day => createVNode(VCalendarMonthDay, {
25545
+ "color": adapter.isSameDay(new Date(), day.date) ? 'primary' : undefined,
25546
+ "day": day,
25547
+ "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
25548
+ "events": props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end))
25549
+ }, null))])]), props.viewMode === 'week' && daysInWeek.value.map((day, i) => createVNode(VCalendarDay, mergeProps(calendarDayProps, {
25550
+ "day": day,
25551
+ "dayIndex": i,
25552
+ "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
25553
+ }), null)), props.viewMode === 'day' && createVNode(VCalendarDay, mergeProps(calendarDayProps, {
25554
+ "day": genDays([model.value[0]], adapter.date())[0],
25555
+ "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))
25556
+ }), null)])]);
25557
+ });
25558
+ return {
25559
+ daysInMonth,
25560
+ daysInWeek,
25561
+ genDays
25562
+ };
25563
+ }
25564
+ });
25565
+
24928
25566
  var components = /*#__PURE__*/Object.freeze({
24929
25567
  __proto__: null,
24930
25568
  VAlert: VAlert,
@@ -24947,6 +25585,12 @@ var components = /*#__PURE__*/Object.freeze({
24947
25585
  VBtn: VBtn,
24948
25586
  VBtnGroup: VBtnGroup,
24949
25587
  VBtnToggle: VBtnToggle,
25588
+ VCalendar: VCalendar,
25589
+ VCalendarDay: VCalendarDay,
25590
+ VCalendarHeader: VCalendarHeader,
25591
+ VCalendarInterval: VCalendarInterval,
25592
+ VCalendarIntervalEvent: VCalendarIntervalEvent,
25593
+ VCalendarMonthDay: VCalendarMonthDay,
24950
25594
  VCard: VCard,
24951
25595
  VCardActions: VCardActions,
24952
25596
  VCardItem: VCardItem,
@@ -25305,7 +25949,7 @@ function createVuetify$1() {
25305
25949
  date
25306
25950
  };
25307
25951
  }
25308
- const version$1 = "3.4.8";
25952
+ const version$1 = "3.4.10";
25309
25953
  createVuetify$1.version = version$1;
25310
25954
 
25311
25955
  // Vue's inject() can only be used in setup
@@ -25319,7 +25963,7 @@ function inject(key) {
25319
25963
 
25320
25964
  /* eslint-disable local-rules/sort-imports */
25321
25965
 
25322
- const version = "3.4.8";
25966
+ const version = "3.4.10";
25323
25967
 
25324
25968
  /* eslint-disable local-rules/sort-imports */
25325
25969