vuetify 3.8.10 → 3.8.12

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 (79) hide show
  1. package/dist/json/attributes.json +3366 -3366
  2. package/dist/json/importMap-labs.json +24 -24
  3. package/dist/json/importMap.json +150 -150
  4. package/dist/json/web-types.json +6157 -6157
  5. package/dist/vuetify-labs.cjs +81 -83
  6. package/dist/vuetify-labs.css +2588 -2594
  7. package/dist/vuetify-labs.d.ts +200 -200
  8. package/dist/vuetify-labs.esm.js +81 -83
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +81 -83
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.cjs +56 -59
  13. package/dist/vuetify.cjs.map +1 -1
  14. package/dist/vuetify.css +3957 -3963
  15. package/dist/vuetify.d.ts +57 -57
  16. package/dist/vuetify.esm.js +56 -59
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +56 -59
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +45 -46
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/components/VBtn/VBtn.sass +3 -1
  24. package/lib/components/VCarousel/VCarousel.css +0 -1
  25. package/lib/components/VCarousel/VCarousel.js +1 -0
  26. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  27. package/lib/components/VCarousel/VCarousel.sass +0 -1
  28. package/lib/components/VDataTable/VDataTableColumn.js +0 -1
  29. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  30. package/lib/components/VDataTable/VDataTableHeaders.js +5 -5
  31. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  32. package/lib/components/VDataTable/composables/sort.js +2 -1
  33. package/lib/components/VDataTable/composables/sort.js.map +1 -1
  34. package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
  35. package/lib/components/VDatePicker/VDatePickerMonth.js +7 -3
  36. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  37. package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
  38. package/lib/components/VField/VField.js +2 -10
  39. package/lib/components/VField/VField.js.map +1 -1
  40. package/lib/components/VList/VList.js +1 -1
  41. package/lib/components/VList/VList.js.map +1 -1
  42. package/lib/components/VNumberInput/VNumberInput.js +4 -10
  43. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  44. package/lib/components/VNumberInput/hold.js +4 -0
  45. package/lib/components/VNumberInput/hold.js.map +1 -1
  46. package/lib/components/VOtpInput/VOtpInput.js +17 -14
  47. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  48. package/lib/components/VOverlay/locationStrategies.js +1 -1
  49. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  50. package/lib/components/VTextField/VTextField.js +1 -1
  51. package/lib/components/VTextField/VTextField.js.map +1 -1
  52. package/lib/composables/calendar.d.ts +1 -1
  53. package/lib/composables/calendar.js +8 -8
  54. package/lib/composables/calendar.js.map +1 -1
  55. package/lib/composables/date/adapters/vuetify.js +1 -1
  56. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  57. package/lib/composables/virtual.js +1 -1
  58. package/lib/composables/virtual.js.map +1 -1
  59. package/lib/entry-bundler.js +1 -1
  60. package/lib/framework.d.ts +57 -57
  61. package/lib/framework.js +1 -1
  62. package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
  63. package/lib/labs/VCalendar/VCalendar.js +9 -9
  64. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  65. package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
  66. package/lib/labs/VCalendar/VCalendarDay.js +1 -1
  67. package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
  68. package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
  69. package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
  70. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  71. package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
  72. package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
  73. package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
  74. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
  75. package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
  76. package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
  77. package/lib/labs/VIconBtn/VIconBtn.js +1 -0
  78. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  79. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.10
2
+ * Vuetify v3.8.12
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -9713,7 +9713,7 @@
9713
9713
  function transformItem$2(props, item) {
9714
9714
  const type = getPropertyFromItem(item, props.itemType, 'item');
9715
9715
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9716
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9716
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9717
9717
  const children = getPropertyFromItem(item, props.itemChildren);
9718
9718
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9719
9719
  const _props = {
@@ -10192,7 +10192,7 @@
10192
10192
  });
10193
10193
  if (flipped.isFull) {
10194
10194
  const values = flipped.values();
10195
- if (deepEqual(values.at(-1), values.at(-3))) {
10195
+ if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
10196
10196
  // Flipping is causing a container resize loop
10197
10197
  return;
10198
10198
  }
@@ -11958,11 +11958,7 @@
11958
11958
  default: slots.loader
11959
11959
  }), hasPrepend && vue.createElementVNode("div", {
11960
11960
  "key": "prepend",
11961
- "class": "v-field__prepend-inner",
11962
- "onMousedown": e => {
11963
- e.preventDefault();
11964
- e.stopPropagation();
11965
- }
11961
+ "class": "v-field__prepend-inner"
11966
11962
  }, [props.prependInnerIcon && vue.createVNode(InputIcon, {
11967
11963
  "key": "prepend-icon",
11968
11964
  "name": "prependInner",
@@ -12031,11 +12027,7 @@
12031
12027
  })]), [[vue.vShow, props.dirty]])]
12032
12028
  }), hasAppend && vue.createElementVNode("div", {
12033
12029
  "key": "append",
12034
- "class": "v-field__append-inner",
12035
- "onMousedown": e => {
12036
- e.preventDefault();
12037
- e.stopPropagation();
12038
- }
12030
+ "class": "v-field__append-inner"
12039
12031
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
12040
12032
  "key": "append-icon",
12041
12033
  "name": "appendInner",
@@ -12146,7 +12138,7 @@
12146
12138
  if (!isFocused.value) focus();
12147
12139
  vue.nextTick(() => {
12148
12140
  if (inputRef.value !== document.activeElement) {
12149
- inputRef.value?.focus();
12141
+ vue.nextTick(() => inputRef.value?.focus());
12150
12142
  }
12151
12143
  });
12152
12144
  }
@@ -12480,7 +12472,7 @@
12480
12472
  raf = requestAnimationFrame(_calculateVisibleItems);
12481
12473
  }
12482
12474
  function _calculateVisibleItems() {
12483
- if (!containerRef.value || !viewportHeight.value) return;
12475
+ if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;
12484
12476
  const scrollTop = lastScrollTop - markerOffset;
12485
12477
  const direction = Math.sign(scrollVelocity);
12486
12478
  const startPx = Math.max(0, scrollTop - BUFFER_PX);
@@ -15229,6 +15221,7 @@
15229
15221
  }) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
15230
15222
  })]
15231
15223
  })]), props.progress && vue.createVNode(VProgressLinear, {
15224
+ "absolute": true,
15232
15225
  "class": "v-carousel__progress",
15233
15226
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15234
15227
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -17311,7 +17304,7 @@
17311
17304
  case 'fullDate':
17312
17305
  options = {
17313
17306
  year: 'numeric',
17314
- month: 'long',
17307
+ month: 'short',
17315
17308
  day: 'numeric'
17316
17309
  };
17317
17310
  break;
@@ -19299,7 +19292,8 @@
19299
19292
 
19300
19293
  // Dates should be compared numerically
19301
19294
  if (sortA instanceof Date && sortB instanceof Date) {
19302
- return sortA.getTime() - sortB.getTime();
19295
+ sortA = sortA.getTime();
19296
+ sortB = sortB.getTime();
19303
19297
  }
19304
19298
  [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
19305
19299
  if (sortA !== sortB) {
@@ -20023,7 +20017,6 @@
20023
20017
  } = _ref;
20024
20018
  const Tag = props.tag ?? 'td';
20025
20019
  return vue.createVNode(Tag, {
20026
- "tabindex": "0",
20027
20020
  "class": vue.normalizeClass(['v-data-table__td', {
20028
20021
  'v-data-table-column--fixed': props.fixed,
20029
20022
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20424,14 +20417,14 @@
20424
20417
  },
20425
20418
  "colspan": column.colspan,
20426
20419
  "rowspan": column.rowspan,
20427
- "onClick": column.sortable ? () => toggleSort(column) : undefined,
20428
20420
  "fixed": column.fixed,
20429
20421
  "nowrap": column.nowrap,
20430
20422
  "lastFixed": column.lastFixed,
20431
- "noPadding": noPadding
20432
- }, headerProps, {
20433
- "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20434
- }), {
20423
+ "noPadding": noPadding,
20424
+ "tabindex": column.sortable ? 0 : undefined,
20425
+ "onClick": column.sortable ? () => toggleSort(column) : undefined,
20426
+ "onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
20427
+ }, headerProps), {
20435
20428
  default: () => {
20436
20429
  const columnSlotName = `header.${column.key}`;
20437
20430
  const columnSlotProps = {
@@ -22107,10 +22100,9 @@
22107
22100
  const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
22108
22101
  return adapter.setMonth(date, value);
22109
22102
  }, v => adapter.getMonth(v));
22110
- const weekDays = vue.computed(() => {
22103
+ const weekdayLabels = vue.computed(() => {
22111
22104
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22112
- // Always generate all days, regardless of props.weekdays
22113
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22105
+ return adapter.getWeekdays(props.firstDayOfWeek).filter((_, i) => props.weekdays.includes((i + firstDayOfWeek) % 7));
22114
22106
  });
22115
22107
  const weeksInMonth = vue.computed(() => {
22116
22108
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22134,13 +22126,14 @@
22134
22126
  });
22135
22127
  function genDays(days, today) {
22136
22128
  return days.filter(date => {
22137
- return weekDays.value.includes(adapter.toJsDate(date).getDay());
22129
+ return props.weekdays.includes(adapter.toJsDate(date).getDay());
22138
22130
  }).map((date, index) => {
22139
22131
  const isoDate = adapter.toISO(date);
22140
22132
  const isAdjacent = !adapter.isSameMonth(date, month.value);
22141
22133
  const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
22142
22134
  const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
22143
22135
  const isSame = adapter.isSameDay(date, month.value);
22136
+ const weekdaysCount = props.weekdays.length;
22144
22137
  return {
22145
22138
  date,
22146
22139
  formatted: adapter.format(date, 'keyboardDate'),
@@ -22152,8 +22145,8 @@
22152
22145
  isSelected: model.value.some(value => adapter.isSameDay(date, value)),
22153
22146
  isStart,
22154
22147
  isToday: adapter.isSameDay(date, today),
22155
- isWeekEnd: index % 7 === 6,
22156
- isWeekStart: index % 7 === 0,
22148
+ isWeekEnd: index % weekdaysCount === weekdaysCount - 1,
22149
+ isWeekStart: index % weekdaysCount === 0,
22157
22150
  isoDate,
22158
22151
  localized: adapter.format(date, 'dayOfMonth'),
22159
22152
  month: adapter.getMonth(date),
@@ -22191,7 +22184,7 @@
22191
22184
  if (typeof props.allowedDates === 'function') {
22192
22185
  return !props.allowedDates(date);
22193
22186
  }
22194
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22187
+ return false;
22195
22188
  }
22196
22189
  return {
22197
22190
  displayValue,
@@ -22200,7 +22193,7 @@
22200
22193
  genDays,
22201
22194
  model,
22202
22195
  weeksInMonth,
22203
- weekDays,
22196
+ weekdayLabels,
22204
22197
  weekNumbers
22205
22198
  };
22206
22199
  }
@@ -22239,7 +22232,8 @@
22239
22232
  const {
22240
22233
  daysInMonth,
22241
22234
  model,
22242
- weekNumbers
22235
+ weekNumbers,
22236
+ weekdayLabels
22243
22237
  } = useCalendar(props);
22244
22238
  const adapter = useDate();
22245
22239
  const rangeStart = vue.shallowRef();
@@ -22311,7 +22305,10 @@
22311
22305
  }
22312
22306
  }
22313
22307
  useRender(() => vue.createElementVNode("div", {
22314
- "class": "v-date-picker-month"
22308
+ "class": "v-date-picker-month",
22309
+ "style": {
22310
+ '--v-date-picker-days-in-week': props.weekdays.length
22311
+ }
22315
22312
  }, [props.showWeek && vue.createElementVNode("div", {
22316
22313
  "key": "weeks",
22317
22314
  "class": "v-date-picker-month__weeks"
@@ -22327,7 +22324,7 @@
22327
22324
  "ref": daysRef,
22328
22325
  "key": daysInMonth.value[0].date?.toString(),
22329
22326
  "class": "v-date-picker-month__days"
22330
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
22327
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
22331
22328
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22332
22329
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22333
22330
  const slotProps = {
@@ -24929,6 +24926,8 @@
24929
24926
  function holdStart(value) {
24930
24927
  holdStop();
24931
24928
  tick(value);
24929
+ window.addEventListener('pointerup', holdStop);
24930
+ document.addEventListener('blur', holdStop);
24932
24931
  timeout = window.setTimeout(() => {
24933
24932
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
24934
24933
  }, HOLD_DELAY);
@@ -24936,6 +24935,8 @@
24936
24935
  function holdStop() {
24937
24936
  window.clearTimeout(timeout);
24938
24937
  window.clearInterval(interval);
24938
+ window.removeEventListener('pointerup', holdStop);
24939
+ document.removeEventListener('blur', holdStop);
24939
24940
  }
24940
24941
  function tick(value) {
24941
24942
  toggleUpDown(value === 'up');
@@ -25047,7 +25048,7 @@
25047
25048
  onClick: onControlClick,
25048
25049
  onPointerup: onControlMouseup,
25049
25050
  onPointerdown: onUpControlMousedown,
25050
- onPointercancel: onControlPointerCancel
25051
+ onPointercancel: onControlMouseup
25051
25052
  }
25052
25053
  };
25053
25054
  const decrementSlotProps = {
@@ -25055,7 +25056,7 @@
25055
25056
  onClick: onControlClick,
25056
25057
  onPointerup: onControlMouseup,
25057
25058
  onPointerdown: onDownControlMousedown,
25058
- onPointercancel: onControlPointerCancel
25059
+ onPointercancel: onControlMouseup
25059
25060
  }
25060
25061
  };
25061
25062
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25135,7 +25136,6 @@
25135
25136
  const el = e.currentTarget;
25136
25137
  el?.releasePointerCapture(e.pointerId);
25137
25138
  e.preventDefault();
25138
- e.stopPropagation();
25139
25139
  holdStop();
25140
25140
  }
25141
25141
  function onUpControlMousedown(e) {
@@ -25152,11 +25152,6 @@
25152
25152
  e.stopPropagation();
25153
25153
  holdStart('down');
25154
25154
  }
25155
- function onControlPointerCancel(e) {
25156
- const el = e.currentTarget;
25157
- el?.releasePointerCapture(e.pointerId);
25158
- holdStop();
25159
- }
25160
25155
  function clampModel() {
25161
25156
  if (controlsDisabled.value) return;
25162
25157
  if (!vTextFieldRef.value) return;
@@ -25206,7 +25201,7 @@
25206
25201
  "onClick": onControlClick,
25207
25202
  "onPointerdown": onUpControlMousedown,
25208
25203
  "onPointerup": onControlMouseup,
25209
- "onPointercancel": onControlPointerCancel,
25204
+ "onPointercancel": onControlMouseup,
25210
25205
  "size": controlNodeSize.value,
25211
25206
  "tabindex": "-1"
25212
25207
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25236,7 +25231,7 @@
25236
25231
  "onClick": onControlClick,
25237
25232
  "onPointerdown": onDownControlMousedown,
25238
25233
  "onPointerup": onControlMouseup,
25239
- "onPointercancel": onControlPointerCancel,
25234
+ "onPointercancel": onControlMouseup,
25240
25235
  "size": controlNodeSize.value,
25241
25236
  "tabindex": "-1"
25242
25237
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25383,19 +25378,21 @@
25383
25378
  const contentRef = vue.ref();
25384
25379
  const inputRef = vue.ref([]);
25385
25380
  const current = vue.computed(() => inputRef.value[focusIndex.value]);
25386
- const intersectScope = vue.effectScope();
25387
- intersectScope.run(() => {
25388
- const {
25389
- intersectionRef,
25390
- isIntersecting
25391
- } = useIntersectionObserver();
25392
- vue.watch(isIntersecting, v => {
25393
- if (!v) return;
25394
- intersectionRef.value?.focus();
25395
- intersectScope.stop();
25396
- });
25397
- vue.watchEffect(() => {
25398
- intersectionRef.value = inputRef.value[0];
25381
+ useToggleScope(() => props.autofocus, () => {
25382
+ const intersectScope = vue.effectScope();
25383
+ intersectScope.run(() => {
25384
+ const {
25385
+ intersectionRef,
25386
+ isIntersecting
25387
+ } = useIntersectionObserver();
25388
+ vue.watchEffect(() => {
25389
+ intersectionRef.value = inputRef.value[0];
25390
+ });
25391
+ vue.watch(isIntersecting, v => {
25392
+ if (!v) return;
25393
+ intersectionRef.value?.focus();
25394
+ intersectScope.stop();
25395
+ });
25399
25396
  });
25400
25397
  });
25401
25398
  function onInput() {
@@ -28809,7 +28806,7 @@
28809
28806
  }
28810
28807
  };
28811
28808
  useRender(() => {
28812
- return vue.createElementVNode("div", null, [slots.intervalEvent?.({
28809
+ return vue.createElementVNode("div", null, [slots['interval-event']?.({
28813
28810
  height: calcHeight().height,
28814
28811
  margin: calcHeight().margin,
28815
28812
  eventClass: 'v-calendar-internal-event',
@@ -28906,13 +28903,13 @@
28906
28903
  "style": vue.normalizeStyle(`height: ${convertToUnit(props.intervalHeight)}`)
28907
28904
  }, [vue.createElementVNode("div", vue.mergeProps({
28908
28905
  "class": "v-calendar-day__row-label"
28909
- }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots.intervalTitle?.({
28906
+ }, getPrefixedEventHandlers(attrs, ':time', () => props)), [slots['interval-title']?.({
28910
28907
  interval: interval.value
28911
28908
  }) ?? (props.index ? props.intervalFormat ? typeof props.intervalFormat === 'string' ? adapter.format(interval.value.start, 'hours12h') : props.intervalFormat(interval.value) : interval.value.label : '12 AM')]), vue.createElementVNode("div", {
28912
28909
  "class": "v-calendar-day__row-hairline"
28913
28910
  }, null), vue.createElementVNode("div", vue.mergeProps({
28914
28911
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28915
- }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28912
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots['interval-body']?.({
28916
28913
  interval: interval.value
28917
28914
  }) ?? vue.createElementVNode("div", null, [interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28918
28915
  "event": event,
@@ -28921,8 +28918,8 @@
28921
28918
  "intervalDuration": props.intervalDuration,
28922
28919
  "intervalHeight": props.intervalHeight
28923
28920
  }, attrs), {
28924
- ...(slots.intervalEvent ? {
28925
- intervalEvent: _ref2 => {
28921
+ ...(slots['interval-event'] ? {
28922
+ 'interval-event': _ref2 => {
28926
28923
  let {
28927
28924
  height,
28928
28925
  margin,
@@ -28930,7 +28927,7 @@
28930
28927
  event,
28931
28928
  interval
28932
28929
  } = _ref2;
28933
- return slots.intervalEvent?.({
28930
+ return slots['interval-event']?.({
28934
28931
  height,
28935
28932
  margin,
28936
28933
  eventClass,
@@ -28944,7 +28941,7 @@
28944
28941
  "style": vue.normalizeStyle(`height: ${convertToUnit(props.intervalHeight)}`)
28945
28942
  }, [vue.createElementVNode("div", vue.mergeProps({
28946
28943
  "class": ['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']
28947
- }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots.intervalBody?.({
28944
+ }, getPrefixedEventHandlers(attrs, ':interval', () => interval.value)), [slots['interval-body']?.({
28948
28945
  interval: interval.value
28949
28946
  }) ?? interval.value.events?.map(event => vue.createVNode(VCalendarIntervalEvent, vue.mergeProps({
28950
28947
  "event": event,
@@ -28953,8 +28950,8 @@
28953
28950
  "intervalDuration": props.intervalDuration,
28954
28951
  "intervalHeight": props.intervalHeight
28955
28952
  }, attrs), {
28956
- ...(slots.intervalEvent ? {
28957
- intervalEvent: _ref3 => {
28953
+ ...(slots['interval-event'] ? {
28954
+ 'interval-event': _ref3 => {
28958
28955
  let {
28959
28956
  height,
28960
28957
  margin,
@@ -28962,7 +28959,7 @@
28962
28959
  event,
28963
28960
  interval
28964
28961
  } = _ref3;
28965
- return slots.intervalEvent?.({
28962
+ return slots['interval-event']?.({
28966
28963
  height,
28967
28964
  margin,
28968
28965
  eventClass,
@@ -29017,7 +29014,7 @@
29017
29014
  }), null)])]), intervals.value.map((_, index) => slots.interval?.(calendarIntervalProps) ?? vue.createVNode(VCalendarInterval, vue.mergeProps({
29018
29015
  "index": index
29019
29016
  }, calendarIntervalProps, attrs, getPrefixedEventHandlers(attrs, ':interval', () => calendarIntervalProps)), {
29020
- ...pick(slots, ['intervalBody', 'intervalEvent', 'intervalTitle'])
29017
+ ...pick(slots, ['interval-body', 'interval-event', 'interval-title'])
29021
29018
  }))]);
29022
29019
  });
29023
29020
  return {
@@ -29161,7 +29158,7 @@
29161
29158
  }, getPrefixedEventHandlers(attrs, ':day', () => props)), [!props.day?.isHidden ? vue.createElementVNode("div", {
29162
29159
  "key": "title",
29163
29160
  "class": "v-calendar-weekly__day-label"
29164
- }, [slots.dayTitle?.({
29161
+ }, [slots['day-title']?.({
29165
29162
  title: props.title
29166
29163
  }) ?? vue.createVNode(VBtn, vue.mergeProps({
29167
29164
  "class": props.day?.isToday ? 'v-calendar-weekly__day-label__today' : undefined,
@@ -29174,12 +29171,12 @@
29174
29171
  }, getPrefixedEventHandlers(attrs, ':date', () => props)), null)]) : undefined, !props.day?.isHidden ? vue.createElementVNode("div", {
29175
29172
  "key": "content",
29176
29173
  "class": "v-calendar-weekly__day-content"
29177
- }, [slots.dayBody?.({
29174
+ }, [slots['day-body']?.({
29178
29175
  day: props.day,
29179
29176
  events: props.events
29180
29177
  }) ?? vue.createElementVNode("div", null, [vue.createElementVNode("div", {
29181
29178
  "class": "v-calendar-weekly__day-alldayevents-container"
29182
- }, [props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
29179
+ }, [props.events?.filter(event => event.allDay).map(event => slots['day-event'] ? slots['day-event']({
29183
29180
  day: props.day,
29184
29181
  allDay: true,
29185
29182
  event
@@ -29189,7 +29186,7 @@
29189
29186
  "allDay": true
29190
29187
  }, attrs), null))]), vue.createElementVNode("div", {
29191
29188
  "class": "v-calendar-weekly__day-events-container"
29192
- }, [props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({
29189
+ }, [props.events?.filter(event => !event.allDay).map(event => slots['day-event'] ? slots['day-event']({
29193
29190
  day: props.day,
29194
29191
  event,
29195
29192
  allDay: false
@@ -29234,9 +29231,8 @@
29234
29231
  model,
29235
29232
  displayValue,
29236
29233
  weekNumbers,
29237
- weekDays
29234
+ weekdayLabels
29238
29235
  } = useCalendar(props);
29239
- const dayNames = adapter.getWeekdays();
29240
29236
  function onClickNext() {
29241
29237
  if (props.viewMode === 'month') {
29242
29238
  model.value = [adapter.addMonths(displayValue.value, 1)];
@@ -29274,6 +29270,7 @@
29274
29270
  useRender(() => {
29275
29271
  const calendarDayProps = VCalendarDay.filterProps(props);
29276
29272
  const calendarHeaderProps = VCalendarHeader.filterProps(props);
29273
+ const weekdaysCount = daysInWeek.value.length;
29277
29274
  return vue.createElementVNode("div", {
29278
29275
  "class": vue.normalizeClass(['v-calendar', {
29279
29276
  'v-calendar-monthly': props.viewMode === 'month',
@@ -29295,19 +29292,19 @@
29295
29292
  }), {
29296
29293
  title: slots.title
29297
29294
  }))]), vue.createElementVNode("div", {
29298
- "class": vue.normalizeClass(['v-calendar__container', `days__${weekDays.value.length}`])
29295
+ "class": vue.normalizeClass(['v-calendar__container', `days__${weekdaysCount}`])
29299
29296
  }, [props.viewMode === 'month' && !props.hideDayHeader && vue.createElementVNode("div", {
29300
- "class": vue.normalizeClass(['v-calendar-weekly__head', `days__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])]),
29297
+ "class": vue.normalizeClass(['v-calendar-weekly__head', `days__${weekdaysCount}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])]),
29301
29298
  "key": "calendarWeeklyHead"
29302
29299
  }, [!props.hideWeekNumber ? vue.createElementVNode("div", {
29303
29300
  "key": "weekNumber0",
29304
29301
  "class": "v-calendar-weekly__head-weeknumber"
29305
- }, null) : '', weekDays.value.map(weekday => vue.createElementVNode("div", {
29302
+ }, null) : '', weekdayLabels.value.map(weekday => vue.createElementVNode("div", {
29306
29303
  "class": vue.normalizeClass(`v-calendar-weekly__head-weekday${!props.hideWeekNumber ? '-with-weeknumber' : ''}`)
29307
- }, [dayNames[weekday]]))]), props.viewMode === 'month' && vue.createElementVNode("div", {
29304
+ }, [weekday]))]), props.viewMode === 'month' && vue.createElementVNode("div", {
29308
29305
  "key": "VCalendarMonth",
29309
- "class": vue.normalizeClass(['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])])
29310
- }, [chunkArray(daysInMonth.value, weekDays.value.length).map((week, wi) => [!props.hideWeekNumber ? vue.createElementVNode("div", vue.mergeProps({
29306
+ "class": vue.normalizeClass(['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekdaysCount}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])])
29307
+ }, [chunkArray(daysInMonth.value, weekdaysCount).map((week, wi) => [!props.hideWeekNumber ? vue.createElementVNode("div", vue.mergeProps({
29311
29308
  "class": "v-calendar-month__weeknumber"
29312
29309
  }, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
29313
29310
  weekNumber: weekNumbers.value[wi],
@@ -29330,7 +29327,7 @@
29330
29327
  "dayIndex": i,
29331
29328
  "events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
29332
29329
  }, attrs), {
29333
- ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle'])
29330
+ ...pick(slots, ['interval', 'interval-body', 'interval-event', 'interval-title'])
29334
29331
  })), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
29335
29332
  day: genDays([displayValue.value], adapter.date())[0],
29336
29333
  dayIndex: 0,
@@ -30250,6 +30247,7 @@
30250
30247
  opacity: props.opacity
30251
30248
  };
30252
30249
  return vue.createVNode(props.tag, {
30250
+ "type": props.tag === 'button' ? 'button' : undefined,
30253
30251
  "class": vue.normalizeClass([{
30254
30252
  'v-icon-btn': true,
30255
30253
  'v-icon-btn--active': isActive.value,
@@ -32202,7 +32200,7 @@
32202
32200
  };
32203
32201
  });
32204
32202
  }
32205
- const version$1 = "3.8.10";
32203
+ const version$1 = "3.8.12";
32206
32204
  createVuetify$1.version = version$1;
32207
32205
 
32208
32206
  // Vue's inject() can only be used in setup
@@ -32500,7 +32498,7 @@
32500
32498
 
32501
32499
  /* eslint-disable local-rules/sort-imports */
32502
32500
 
32503
- const version = "3.8.10";
32501
+ const version = "3.8.12";
32504
32502
 
32505
32503
  /* eslint-disable local-rules/sort-imports */
32506
32504