@vuetify/nightly 3.9.0-beta.1-dev.2025-06-28 → 3.9.0-beta.1-dev.2025-07-02

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 (65) hide show
  1. package/CHANGELOG.md +100 -3
  2. package/dist/json/attributes.json +725 -725
  3. package/dist/json/importMap-labs.json +30 -30
  4. package/dist/json/importMap.json +156 -156
  5. package/dist/json/web-types.json +1311 -1311
  6. package/dist/vuetify-labs.cjs +61 -63
  7. package/dist/vuetify-labs.css +4207 -4207
  8. package/dist/vuetify-labs.d.ts +203 -203
  9. package/dist/vuetify-labs.esm.js +61 -63
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +61 -63
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +36 -39
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4469 -4469
  16. package/dist/vuetify.d.ts +60 -60
  17. package/dist/vuetify.esm.js +36 -39
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +36 -39
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +34 -35
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTableColumn.js +0 -1
  25. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  26. package/lib/components/VDataTable/VDataTableHeaders.js +5 -5
  27. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  28. package/lib/components/VDataTable/composables/sort.js +2 -1
  29. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  30. package/lib/components/VDatePicker/VDatePickerMonth.js +1 -2
  31. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  32. package/lib/components/VOtpInput/VOtpInput.js +17 -14
  33. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  34. package/lib/components/VOverlay/locationStrategies.js +1 -1
  35. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  36. package/lib/components/VTextField/VTextField.js +1 -1
  37. package/lib/components/VTextField/VTextField.js.map +1 -1
  38. package/lib/composables/calendar.d.ts +0 -1
  39. package/lib/composables/calendar.js +6 -10
  40. package/lib/composables/calendar.js.map +1 -1
  41. package/lib/composables/date/adapters/vuetify.js +1 -1
  42. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  43. package/lib/composables/virtual.js +1 -1
  44. package/lib/composables/virtual.js.map +1 -1
  45. package/lib/entry-bundler.js +1 -1
  46. package/lib/framework.d.ts +60 -60
  47. package/lib/framework.js +1 -1
  48. package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
  49. package/lib/labs/VCalendar/VCalendar.js +9 -9
  50. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  51. package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
  52. package/lib/labs/VCalendar/VCalendarDay.js +1 -1
  53. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  54. package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
  55. package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
  56. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  57. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
  58. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
  59. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  60. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
  61. package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
  62. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  63. package/lib/labs/VIconBtn/VIconBtn.js +1 -0
  64. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  65. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.0-beta.1-dev.2025-06-28
2
+ * Vuetify v3.9.0-beta.1-dev.2025-07-02
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -10452,7 +10452,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
10452
10452
  });
10453
10453
  if (flipped.isFull) {
10454
10454
  const values = flipped.values();
10455
- if (deepEqual(values.at(-1), values.at(-3))) {
10455
+ if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
10456
10456
  // Flipping is causing a container resize loop
10457
10457
  return;
10458
10458
  }
@@ -12302,7 +12302,7 @@ const VTextField = genericComponent()({
12302
12302
  if (!isFocused.value) focus();
12303
12303
  nextTick(() => {
12304
12304
  if (inputRef.value !== document.activeElement) {
12305
- inputRef.value?.focus();
12305
+ nextTick(() => inputRef.value?.focus());
12306
12306
  }
12307
12307
  });
12308
12308
  }
@@ -12641,7 +12641,7 @@ function useVirtual(props, items) {
12641
12641
  raf = requestAnimationFrame(_calculateVisibleItems);
12642
12642
  }
12643
12643
  function _calculateVisibleItems() {
12644
- if (!containerRef.value || !viewportHeight.value) return;
12644
+ if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;
12645
12645
  const scrollTop = lastScrollTop - markerOffset;
12646
12646
  const direction = Math.sign(scrollVelocity);
12647
12647
  const startPx = Math.max(0, scrollTop - BUFFER_PX);
@@ -17524,7 +17524,7 @@ function format(value, formatString, locale, formats) {
17524
17524
  case 'fullDate':
17525
17525
  options = {
17526
17526
  year: 'numeric',
17527
- month: 'long',
17527
+ month: 'short',
17528
17528
  day: 'numeric'
17529
17529
  };
17530
17530
  break;
@@ -19841,7 +19841,8 @@ function sortItems(items, sortByItems, locale, options) {
19841
19841
 
19842
19842
  // Dates should be compared numerically
19843
19843
  if (sortA instanceof Date && sortB instanceof Date) {
19844
- return sortA.getTime() - sortB.getTime();
19844
+ sortA = sortA.getTime();
19845
+ sortB = sortB.getTime();
19845
19846
  }
19846
19847
  [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
19847
19848
  if (sortA !== sortB) {
@@ -20565,7 +20566,6 @@ const VDataTableColumn = defineFunctionalComponent({
20565
20566
  } = _ref;
20566
20567
  const Tag = props.tag ?? 'td';
20567
20568
  return createVNode(Tag, {
20568
- "tabindex": "0",
20569
20569
  "class": normalizeClass(['v-data-table__td', {
20570
20570
  'v-data-table-column--fixed': props.fixed,
20571
20571
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20968,14 +20968,14 @@ const VDataTableHeaders = genericComponent()({
20968
20968
  },
20969
20969
  "colspan": column.colspan,
20970
20970
  "rowspan": column.rowspan,
20971
- "onClick": column.sortable ? () => toggleSort(column) : undefined,
20972
20971
  "fixed": column.fixed,
20973
20972
  "nowrap": column.nowrap,
20974
20973
  "lastFixed": column.lastFixed,
20975
- "noPadding": noPadding
20976
- }, headerProps, {
20977
- "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20978
- }), {
20974
+ "noPadding": noPadding,
20975
+ "tabindex": column.sortable ? 0 : undefined,
20976
+ "onClick": column.sortable ? () => toggleSort(column) : undefined,
20977
+ "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
20978
+ }, headerProps), {
20979
20979
  default: () => {
20980
20980
  const columnSlotName = `header.${column.key}`;
20981
20981
  const columnSlotProps = {
@@ -22661,13 +22661,9 @@ function useCalendar(props) {
22661
22661
  const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
22662
22662
  return adapter.setMonth(date, value);
22663
22663
  }, v => adapter.getMonth(v));
22664
- const weekDays = computed(() => {
22665
- const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22666
- return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22667
- });
22668
22664
  const weekdayLabels = computed(() => {
22669
- const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
22670
- return weekDays.value.map(day => labels[day]);
22665
+ const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22666
+ return adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).filter((_, i) => props.weekdays.includes((i + firstDayOfWeek) % 7));
22671
22667
  });
22672
22668
  const weeksInMonth = computed(() => {
22673
22669
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22691,13 +22687,14 @@ function useCalendar(props) {
22691
22687
  });
22692
22688
  function genDays(days, today) {
22693
22689
  return days.filter(date => {
22694
- return weekDays.value.includes(adapter.toJsDate(date).getDay());
22690
+ return props.weekdays.includes(adapter.toJsDate(date).getDay());
22695
22691
  }).map((date, index) => {
22696
22692
  const isoDate = adapter.toISO(date);
22697
22693
  const isAdjacent = !adapter.isSameMonth(date, month.value);
22698
22694
  const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
22699
22695
  const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
22700
22696
  const isSame = adapter.isSameDay(date, month.value);
22697
+ const weekdaysCount = props.weekdays.length;
22701
22698
  return {
22702
22699
  date,
22703
22700
  formatted: adapter.format(date, 'keyboardDate'),
@@ -22709,8 +22706,8 @@ function useCalendar(props) {
22709
22706
  isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22710
22707
  isStart,
22711
22708
  isToday: adapter.isSameDay(date, today),
22712
- isWeekEnd: index % 7 === 6,
22713
- isWeekStart: index % 7 === 0,
22709
+ isWeekEnd: index % weekdaysCount === weekdaysCount - 1,
22710
+ isWeekStart: index % weekdaysCount === 0,
22714
22711
  isoDate,
22715
22712
  localized: adapter.format(date, 'dayOfMonth'),
22716
22713
  month: adapter.getMonth(date),
@@ -22757,7 +22754,6 @@ function useCalendar(props) {
22757
22754
  genDays,
22758
22755
  model,
22759
22756
  weeksInMonth,
22760
- weekDays,
22761
22757
  weekdayLabels,
22762
22758
  weekNumbers
22763
22759
  };
@@ -22798,7 +22794,6 @@ const VDatePickerMonth = genericComponent()({
22798
22794
  daysInMonth,
22799
22795
  model,
22800
22796
  weekNumbers,
22801
- weekDays,
22802
22797
  weekdayLabels
22803
22798
  } = useCalendar(props);
22804
22799
  const adapter = useDate();
@@ -22873,7 +22868,7 @@ const VDatePickerMonth = genericComponent()({
22873
22868
  useRender(() => createElementVNode("div", {
22874
22869
  "class": "v-date-picker-month",
22875
22870
  "style": {
22876
- '--v-date-picker-days-in-week': weekDays.value.length
22871
+ '--v-date-picker-days-in-week': props.weekdays.length
22877
22872
  }
22878
22873
  }, [props.showWeek && createElementVNode("div", {
22879
22874
  "key": "weeks",
@@ -26044,19 +26039,21 @@ const VOtpInput = genericComponent()({
26044
26039
  const contentRef = ref();
26045
26040
  const inputRef = ref([]);
26046
26041
  const current = computed(() => inputRef.value[focusIndex.value]);
26047
- const intersectScope = effectScope();
26048
- intersectScope.run(() => {
26049
- const {
26050
- intersectionRef,
26051
- isIntersecting
26052
- } = useIntersectionObserver();
26053
- watch(isIntersecting, v => {
26054
- if (!v) return;
26055
- intersectionRef.value?.focus();
26056
- intersectScope.stop();
26057
- });
26058
- watchEffect(() => {
26059
- intersectionRef.value = inputRef.value[0];
26042
+ useToggleScope(() => props.autofocus, () => {
26043
+ const intersectScope = effectScope();
26044
+ intersectScope.run(() => {
26045
+ const {
26046
+ intersectionRef,
26047
+ isIntersecting
26048
+ } = useIntersectionObserver();
26049
+ watchEffect(() => {
26050
+ intersectionRef.value = inputRef.value[0];
26051
+ });
26052
+ watch(isIntersecting, v => {
26053
+ if (!v) return;
26054
+ intersectionRef.value?.focus();
26055
+ intersectScope.stop();
26056
+ });
26060
26057
  });
26061
26058
  });
26062
26059
  function onInput() {
@@ -30524,7 +30521,7 @@ const VCalendarIntervalEvent = genericComponent()({
30524
30521
  }
30525
30522
  };
30526
30523
  useRender(() => {
30527
- return createElementVNode("div", null, [slots.intervalEvent?.({
30524
+ return createElementVNode("div", null, [slots['interval-event']?.({
30528
30525
  height: calcHeight().height,
30529
30526
  margin: calcHeight().margin,
30530
30527
  eventClass: 'v-calendar-internal-event',
@@ -30621,13 +30618,13 @@ const VCalendarInterval = genericComponent()({
30621
30618
  "style": normalizeStyle(`height: ${convertToUnit(props.intervalHeight)}`)
30622
30619
  }, [createElementVNode("div", mergeProps({
30623
30620
  "class": "v-calendar-day__row-label"
30624
- }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
30621
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots['interval-title']?.({
30625
30622
  interval: interval.value
30626
30623
  }) ?? (props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : '12 AM')]), createElementVNode("div", {
30627
30624
  "class": "v-calendar-day__row-hairline"
30628
30625
  }, null), createElementVNode("div", mergeProps({
30629
30626
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
30630
- }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
30627
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots['interval-body']?.({
30631
30628
  interval: interval.value
30632
30629
  }) ?? createElementVNode("div", null, [interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
30633
30630
  "event": event,
@@ -30636,8 +30633,8 @@ const VCalendarInterval = genericComponent()({
30636
30633
  "intervalDuration": props.intervalDuration,
30637
30634
  "intervalHeight": props.intervalHeight
30638
30635
  }, attrs), {
30639
- ...(slots.intervalEvent ? {
30640
- intervalEvent: _ref2 => {
30636
+ ...(slots['interval-event'] ? {
30637
+ 'interval-event': _ref2 => {
30641
30638
  let {
30642
30639
  height,
30643
30640
  margin,
@@ -30645,7 +30642,7 @@ const VCalendarInterval = genericComponent()({
30645
30642
  event,
30646
30643
  interval
30647
30644
  } = _ref2;
30648
- return slots.intervalEvent?.({
30645
+ return slots['interval-event']?.({
30649
30646
  height,
30650
30647
  margin,
30651
30648
  eventClass,
@@ -30659,7 +30656,7 @@ const VCalendarInterval = genericComponent()({
30659
30656
  "style": normalizeStyle(`height: ${convertToUnit(props.intervalHeight)}`)
30660
30657
  }, [createElementVNode("div", mergeProps({
30661
30658
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
30662
- }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
30659
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots['interval-body']?.({
30663
30660
  interval: interval.value
30664
30661
  }) ?? interval.value.events?.map(event => createVNode(VCalendarIntervalEvent, mergeProps({
30665
30662
  "event": event,
@@ -30668,8 +30665,8 @@ const VCalendarInterval = genericComponent()({
30668
30665
  "intervalDuration": props.intervalDuration,
30669
30666
  "intervalHeight": props.intervalHeight
30670
30667
  }, attrs), {
30671
- ...(slots.intervalEvent ? {
30672
- intervalEvent: _ref3 => {
30668
+ ...(slots['interval-event'] ? {
30669
+ 'interval-event': _ref3 => {
30673
30670
  let {
30674
30671
  height,
30675
30672
  margin,
@@ -30677,7 +30674,7 @@ const VCalendarInterval = genericComponent()({
30677
30674
  event,
30678
30675
  interval
30679
30676
  } = _ref3;
30680
- return slots.intervalEvent?.({
30677
+ return slots['interval-event']?.({
30681
30678
  height,
30682
30679
  margin,
30683
30680
  eventClass,
@@ -30732,7 +30729,7 @@ const VCalendarDay = genericComponent()({
30732
30729
  }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? createVNode(VCalendarInterval, mergeProps({
30733
30730
  "index": index
30734
30731
  }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
30735
- ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
30732
+ ...pick(slots, ['interval-body', 'interval-event', 'interval-title'])
30736
30733
  }))]);
30737
30734
  });
30738
30735
  return {
@@ -30876,7 +30873,7 @@ const VCalendarMonthDay = genericComponent()({
30876
30873
  }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? createElementVNode("div", {
30877
30874
  "key": "title",
30878
30875
  "class": "v-calendar-weekly__day-label"
30879
- }, [slots.dayTitle?.({
30876
+ }, [slots['day-title']?.({
30880
30877
  title: props.title
30881
30878
  }) ?? createVNode(VBtn, mergeProps({
30882
30879
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
@@ -30889,12 +30886,12 @@ const VCalendarMonthDay = genericComponent()({
30889
30886
  }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? createElementVNode("div", {
30890
30887
  "key": "content",
30891
30888
  "class": "v-calendar-weekly__day-content"
30892
- }, [slots.dayBody?.({
30889
+ }, [slots['day-body']?.({
30893
30890
  day: props.day,
30894
30891
  events: props.events
30895
30892
  }) ?? createElementVNode("div", null, [createElementVNode("div", {
30896
30893
  "class": "v-calendar-weekly__day-alldayevents-container"
30897
- }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
30894
+ }, [props.events?.filter(event => event.allDay).map(event => slots['day-event'] ? slots['day-event']({
30898
30895
  day: props.day,
30899
30896
  allDay: true,
30900
30897
  event
@@ -30904,7 +30901,7 @@ const VCalendarMonthDay = genericComponent()({
30904
30901
  "allDay": true
30905
30902
  }, attrs), null))]), createElementVNode("div", {
30906
30903
  "class": "v-calendar-weekly__day-events-container"
30907
- }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
30904
+ }, [props.events?.filter(event => !event.allDay).map(event => slots['day-event'] ? slots['day-event']({
30908
30905
  day: props.day,
30909
30906
  event,
30910
30907
  allDay: false
@@ -30949,9 +30946,8 @@ const VCalendar = genericComponent()({
30949
30946
  model,
30950
30947
  displayValue,
30951
30948
  weekNumbers,
30952
- weekDays
30949
+ weekdayLabels
30953
30950
  } = useCalendar(props);
30954
- const dayNames = adapter.getWeekdays();
30955
30951
  function onClickNext() {
30956
30952
  if (props.viewMode === 'month') {
30957
30953
  model.value = [adapter.addMonths(displayValue.value, 1)];
@@ -30989,6 +30985,7 @@ const VCalendar = genericComponent()({
30989
30985
  useRender(() => {
30990
30986
  const calendarDayProps = VCalendarDay.filterProps(props);
30991
30987
  const calendarHeaderProps = VCalendarHeader.filterProps(props);
30988
+ const weekdaysCount = daysInWeek.value.length;
30992
30989
  return createElementVNode("div", {
30993
30990
  "class": normalizeClass(['v-calendar', {
30994
30991
  'v-calendar-monthly': props.viewMode === 'month',
@@ -31010,19 +31007,19 @@ const VCalendar = genericComponent()({
31010
31007
  }), {
31011
31008
  title: slots.title
31012
31009
  }))]), createElementVNode("div", {
31013
- "class": normalizeClass(['v-calendar__container', `days__${weekDays.value.length}`])
31010
+ "class": normalizeClass(['v-calendar__container', `days__${weekdaysCount}`])
31014
31011
  }, [props.viewMode === 'month' && !props.hideDayHeader && createElementVNode("div", {
31015
- "class": normalizeClass(['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])]),
31012
+ "class": normalizeClass(['v-calendar-weekly__head', `days__${weekdaysCount}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])]),
31016
31013
  "key": "calendarWeeklyHead"
31017
31014
  }, [!props.hideWeekNumber ? createElementVNode("div", {
31018
31015
  "key": "weekNumber0",
31019
31016
  "class": "v-calendar-weekly__head-weeknumber"
31020
- }, null) : '', weekDays.value.map(weekday => createElementVNode("div", {
31017
+ }, null) : '', weekdayLabels.value.map(weekday => createElementVNode("div", {
31021
31018
  "class": normalizeClass(`v-calendar-weekly__head-weekday${!props.hideWeekNumber ? '-with-weeknumber' : ''}`)
31022
- }, [dayNames[weekday]]))]), props.viewMode === 'month' && createElementVNode("div", {
31019
+ }, [weekday]))]), props.viewMode === 'month' && createElementVNode("div", {
31023
31020
  "key": "VCalendarMonth",
31024
- "class": normalizeClass(['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])])
31025
- }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? createElementVNode("div", mergeProps({
31021
+ "class": normalizeClass(['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekdaysCount}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])])
31022
+ }, [chunkArray(daysInMonth.value, weekdaysCount).map((week, wi) => [!props.hideWeekNumber ? createElementVNode("div", mergeProps({
31026
31023
  "class": "v-calendar-month__weeknumber"
31027
31024
  }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
31028
31025
  weekNumber: weekNumbers.value[wi],
@@ -31045,7 +31042,7 @@ const VCalendar = genericComponent()({
31045
31042
  "dayIndex": i,
31046
31043
  "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
31047
31044
  }, attrs), {
31048
- ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
31045
+ ...pick(slots, ['interval', 'interval-body', 'interval-event', 'interval-title'])
31049
31046
  })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
31050
31047
  day: genDays([displayValue.value], adapter.date())[0],
31051
31048
  dayIndex: 0,
@@ -31960,6 +31957,7 @@ const VIconBtn = genericComponent()({
31960
31957
  opacity: props.opacity
31961
31958
  };
31962
31959
  return createVNode(props.tag, {
31960
+ "type": props.tag === 'button' ? 'button' : undefined,
31963
31961
  "class": normalizeClass([{
31964
31962
  'v-icon-btn': true,
31965
31963
  'v-icon-btn--active': isActive.value,
@@ -33522,7 +33520,7 @@ function createVuetify$1() {
33522
33520
  };
33523
33521
  });
33524
33522
  }
33525
- const version$1 = "3.9.0-beta.1-dev.2025-06-28";
33523
+ const version$1 = "3.9.0-beta.1-dev.2025-07-02";
33526
33524
  createVuetify$1.version = version$1;
33527
33525
 
33528
33526
  // Vue's inject() can only be used in setup
@@ -33820,7 +33818,7 @@ var index = /*#__PURE__*/Object.freeze({
33820
33818
 
33821
33819
  /* eslint-disable local-rules/sort-imports */
33822
33820
 
33823
- const version = "3.9.0-beta.1-dev.2025-06-28";
33821
+ const version = "3.9.0-beta.1-dev.2025-07-02";
33824
33822
 
33825
33823
  /* eslint-disable local-rules/sort-imports */
33826
33824