vuetify 3.8.9 → 3.8.11

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 (98) hide show
  1. package/dist/json/attributes.json +3247 -3239
  2. package/dist/json/importMap-labs.json +22 -22
  3. package/dist/json/importMap.json +180 -180
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +6004 -5986
  6. package/dist/vuetify-labs.cjs +104 -55
  7. package/dist/vuetify-labs.css +5367 -5364
  8. package/dist/vuetify-labs.d.ts +70 -60
  9. package/dist/vuetify-labs.esm.js +104 -55
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +104 -55
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +98 -54
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4065 -4062
  16. package/dist/vuetify.d.ts +65 -60
  17. package/dist/vuetify.esm.js +98 -54
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +98 -54
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +413 -410
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBtn/VBtn.css +3 -0
  25. package/lib/components/VBtn/VBtn.sass +5 -0
  26. package/lib/components/VBtnGroup/VBtnGroup.css +2 -1
  27. package/lib/components/VBtnGroup/VBtnGroup.sass +2 -1
  28. package/lib/components/VCarousel/VCarousel.css +0 -1
  29. package/lib/components/VCarousel/VCarousel.js +1 -0
  30. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  31. package/lib/components/VCarousel/VCarousel.sass +0 -1
  32. package/lib/components/VDataTable/VDataTable.css +6 -3
  33. package/lib/components/VDataTable/VDataTable.sass +4 -2
  34. package/lib/components/VDatePicker/VDatePicker.js +19 -13
  35. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  36. package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
  37. package/lib/components/VDatePicker/VDatePickerMonth.js +8 -3
  38. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  39. package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
  40. package/lib/components/VDatePicker/VDatePickerYears.js +1 -3
  41. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  42. package/lib/components/VList/VList.js +1 -1
  43. package/lib/components/VList/VList.js.map +1 -1
  44. package/lib/components/VList/VListChildren.js +4 -3
  45. package/lib/components/VList/VListChildren.js.map +1 -1
  46. package/lib/components/VList/VListGroup.d.ts +10 -0
  47. package/lib/components/VList/VListGroup.js +2 -2
  48. package/lib/components/VList/VListGroup.js.map +1 -1
  49. package/lib/components/VList/VListItem.css +2 -0
  50. package/lib/components/VList/VListItem.sass +2 -0
  51. package/lib/components/VList/_variables.scss +1 -0
  52. package/lib/components/VNumberInput/VNumberInput.js +4 -10
  53. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  54. package/lib/components/VNumberInput/hold.js +4 -0
  55. package/lib/components/VNumberInput/hold.js.map +1 -1
  56. package/lib/components/VOtpInput/VOtpInput.js +17 -1
  57. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  58. package/lib/components/VSpeedDial/VSpeedDial.css +1 -1
  59. package/lib/components/VSpeedDial/VSpeedDial.sass +3 -1
  60. package/lib/components/VTextField/VTextField.js +4 -4
  61. package/lib/components/VTextField/VTextField.js.map +1 -1
  62. package/lib/components/VTextarea/VTextarea.js +4 -4
  63. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  64. package/lib/composables/autofocus.d.ts +7 -0
  65. package/lib/composables/autofocus.js +10 -0
  66. package/lib/composables/autofocus.js.map +1 -0
  67. package/lib/composables/calendar.d.ts +1 -0
  68. package/lib/composables/calendar.js +7 -3
  69. package/lib/composables/calendar.js.map +1 -1
  70. package/lib/composables/group.js +1 -0
  71. package/lib/composables/group.js.map +1 -1
  72. package/lib/composables/hotkey.d.ts +9 -0
  73. package/lib/composables/hotkey.js +131 -0
  74. package/lib/composables/hotkey.js.map +1 -0
  75. package/lib/composables/intersectionObserver.js +2 -2
  76. package/lib/composables/intersectionObserver.js.map +1 -1
  77. package/lib/composables/selectLink.js +2 -2
  78. package/lib/composables/selectLink.js.map +1 -1
  79. package/lib/composables/transition.js +3 -3
  80. package/lib/composables/transition.js.map +1 -1
  81. package/lib/entry-bundler.js +1 -1
  82. package/lib/entry-bundler.js.map +1 -1
  83. package/lib/framework.d.ts +60 -60
  84. package/lib/framework.js +1 -1
  85. package/lib/framework.js.map +1 -1
  86. package/lib/labs/VFileUpload/VFileUploadItem.js +1 -0
  87. package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
  88. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -1
  89. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  90. package/lib/labs/VTreeview/VTreeviewChildren.js +2 -1
  91. package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
  92. package/lib/labs/VTreeview/VTreeviewGroup.d.ts +10 -0
  93. package/lib/labs/VTreeview/VTreeviewItem.js +1 -0
  94. package/lib/labs/VTreeview/VTreeviewItem.js.map +1 -1
  95. package/lib/util/helpers.d.ts +3 -0
  96. package/lib/util/helpers.js +7 -0
  97. package/lib/util/helpers.js.map +1 -1
  98. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.9
2
+ * Vuetify v3.8.11
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -609,6 +609,13 @@ function camelizeProps(props) {
609
609
  }
610
610
  return out;
611
611
  }
612
+ function onlyDefinedProps(props) {
613
+ const booleanAttributes = ['checked', 'disabled'];
614
+ return Object.fromEntries(Object.entries(props).filter(_ref => {
615
+ let [key, v] = _ref;
616
+ return booleanAttributes.includes(key) ? !!v : v !== undefined;
617
+ }));
618
+ }
612
619
 
613
620
  // Utilities
614
621
  const block = ['top', 'bottom'];
@@ -933,7 +940,7 @@ function APCAcontrast(text, background) {
933
940
  // WoB should always return negative value.
934
941
 
935
942
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
936
- outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
943
+ outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
937
944
  }
938
945
  return outputContrast * 100;
939
946
  }
@@ -3321,10 +3328,10 @@ const MaybeTransition = (props, _ref) => {
3321
3328
  } = isObject(transition) ? transition : {};
3322
3329
  let transitionProps;
3323
3330
  if (isObject(transition)) {
3324
- transitionProps = mergeProps(customProps, JSON.parse(JSON.stringify({
3331
+ transitionProps = mergeProps(customProps, onlyDefinedProps({
3325
3332
  disabled,
3326
3333
  group
3327
- })), rest);
3334
+ }), rest);
3328
3335
  } else {
3329
3336
  transitionProps = mergeProps({
3330
3337
  name: disabled || !transition ? '' : transition
@@ -4393,6 +4400,7 @@ function useGroup(props, injectKey) {
4393
4400
  } else {
4394
4401
  const isSelected = selected.value.includes(id);
4395
4402
  if (props.mandatory && isSelected) return;
4403
+ if (!isSelected && !value) return;
4396
4404
  selected.value = value ?? !isSelected ? [id] : [];
4397
4405
  }
4398
4406
  }
@@ -4827,7 +4835,7 @@ function useIntersectionObserver(callback, options) {
4827
4835
  const observer = new IntersectionObserver(entries => {
4828
4836
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4829
4837
  }, options);
4830
- onBeforeUnmount(() => {
4838
+ onScopeDispose(() => {
4831
4839
  observer.disconnect();
4832
4840
  });
4833
4841
  watch(intersectionRef, (newValue, oldValue) => {
@@ -5358,9 +5366,9 @@ function useBackButton(router, cb) {
5358
5366
 
5359
5367
  function useSelectLink(link, select) {
5360
5368
  watch(() => link.isActive?.value, isActive => {
5361
- if (link.isLink.value && isActive && select) {
5369
+ if (link.isLink.value && isActive != null && select) {
5362
5370
  nextTick(() => {
5363
- select(true);
5371
+ select(isActive);
5364
5372
  });
5365
5373
  }
5366
5374
  }, {
@@ -8974,6 +8982,7 @@ const makeVListGroupProps = propsFactory({
8974
8982
  type: IconValue,
8975
8983
  default: '$expand'
8976
8984
  },
8985
+ rawId: [String, Number],
8977
8986
  prependIcon: IconValue,
8978
8987
  appendIcon: IconValue,
8979
8988
  fluid: Boolean,
@@ -8995,13 +9004,12 @@ const VListGroup = genericComponent()({
8995
9004
  open,
8996
9005
  id: _id
8997
9006
  } = useNestedItem(() => props.value, true);
8998
- const id = computed(() => `v-list-group--id-${String(_id.value)}`);
9007
+ const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
8999
9008
  const list = useList();
9000
9009
  const {
9001
9010
  isBooted
9002
9011
  } = useSsrBoot();
9003
9012
  function onClick(e) {
9004
- e.stopPropagation();
9005
9013
  if (['INPUT', 'TEXTAREA'].includes(e.target?.tagName)) return;
9006
9014
  open(!isOpen.value, e);
9007
9015
  }
@@ -9519,9 +9527,10 @@ const VListChildren = genericComponent()({
9519
9527
  }) : undefined
9520
9528
  };
9521
9529
  const listGroupProps = VListGroup.filterProps(itemProps);
9522
- return children ? createVNode(VListGroup, mergeProps({
9523
- "value": itemProps?.value
9524
- }, listGroupProps), {
9530
+ return children ? createVNode(VListGroup, mergeProps(listGroupProps, {
9531
+ "value": props.returnObject ? item : itemProps?.value,
9532
+ "rawId": itemProps?.value
9533
+ }), {
9525
9534
  activator: _ref3 => {
9526
9535
  let {
9527
9536
  props: activatorProps
@@ -9700,7 +9709,7 @@ function useItems(props) {
9700
9709
  function transformItem$2(props, item) {
9701
9710
  const type = getPropertyFromItem(item, props.itemType, 'item');
9702
9711
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9703
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9712
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9704
9713
  const children = getPropertyFromItem(item, props.itemChildren);
9705
9714
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9706
9715
  const _props = {
@@ -12049,6 +12058,16 @@ const VField = genericComponent()({
12049
12058
  }
12050
12059
  });
12051
12060
 
12061
+ function useAutofocus(props) {
12062
+ function onIntersect(isIntersecting, entries) {
12063
+ if (!props.autofocus || !isIntersecting) return;
12064
+ entries[0].target?.focus?.();
12065
+ }
12066
+ return {
12067
+ onIntersect
12068
+ };
12069
+ }
12070
+
12052
12071
  // Types
12053
12072
 
12054
12073
  const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
@@ -12095,6 +12114,9 @@ const VTextField = genericComponent()({
12095
12114
  focus,
12096
12115
  blur
12097
12116
  } = useFocus(props);
12117
+ const {
12118
+ onIntersect
12119
+ } = useAutofocus(props);
12098
12120
  const counterValue = computed(() => {
12099
12121
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
12100
12122
  });
@@ -12104,10 +12126,6 @@ const VTextField = genericComponent()({
12104
12126
  return props.counter;
12105
12127
  });
12106
12128
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
12107
- function onIntersect(isIntersecting, entries) {
12108
- if (!props.autofocus || !isIntersecting) return;
12109
- entries[0].target?.focus?.();
12110
- }
12111
12129
  const vInputRef = ref();
12112
12130
  const vFieldRef = ref();
12113
12131
  const inputRef = ref();
@@ -15199,6 +15217,7 @@ const VCarousel = genericComponent()({
15199
15217
  }) : createVNode(VBtn, mergeProps(item, props), null);
15200
15218
  })]
15201
15219
  })]), props.progress && createVNode(VProgressLinear, {
15220
+ "absolute": true,
15202
15221
  "class": "v-carousel__progress",
15203
15222
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15204
15223
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22079,8 +22098,11 @@ function useCalendar(props) {
22079
22098
  }, v => adapter.getMonth(v));
22080
22099
  const weekDays = computed(() => {
22081
22100
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22082
- // Always generate all days, regardless of props.weekdays
22083
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22101
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22102
+ });
22103
+ const weekdayLabels = computed(() => {
22104
+ const labels = adapter.getWeekdays(props.firstDayOfWeek);
22105
+ return weekDays.value.map(day => labels[day]);
22084
22106
  });
22085
22107
  const weeksInMonth = computed(() => {
22086
22108
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22161,7 +22183,7 @@ function useCalendar(props) {
22161
22183
  if (typeof props.allowedDates === 'function') {
22162
22184
  return !props.allowedDates(date);
22163
22185
  }
22164
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22186
+ return false;
22165
22187
  }
22166
22188
  return {
22167
22189
  displayValue,
@@ -22171,6 +22193,7 @@ function useCalendar(props) {
22171
22193
  model,
22172
22194
  weeksInMonth,
22173
22195
  weekDays,
22196
+ weekdayLabels,
22174
22197
  weekNumbers
22175
22198
  };
22176
22199
  }
@@ -22209,7 +22232,9 @@ const VDatePickerMonth = genericComponent()({
22209
22232
  const {
22210
22233
  daysInMonth,
22211
22234
  model,
22212
- weekNumbers
22235
+ weekNumbers,
22236
+ weekDays,
22237
+ weekdayLabels
22213
22238
  } = useCalendar(props);
22214
22239
  const adapter = useDate();
22215
22240
  const rangeStart = shallowRef();
@@ -22281,7 +22306,10 @@ const VDatePickerMonth = genericComponent()({
22281
22306
  }
22282
22307
  }
22283
22308
  useRender(() => createElementVNode("div", {
22284
- "class": "v-date-picker-month"
22309
+ "class": "v-date-picker-month",
22310
+ "style": {
22311
+ '--v-date-picker-days-in-week': weekDays.value.length
22312
+ }
22285
22313
  }, [props.showWeek && createElementVNode("div", {
22286
22314
  "key": "weeks",
22287
22315
  "class": "v-date-picker-month__weeks"
@@ -22297,7 +22325,7 @@ const VDatePickerMonth = genericComponent()({
22297
22325
  "ref": daysRef,
22298
22326
  "key": daysInMonth.value[0].date?.toString(),
22299
22327
  "class": "v-date-picker-month__days"
22300
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
22328
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => createElementVNode("div", {
22301
22329
  "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22302
22330
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22303
22331
  const slotProps = {
@@ -22473,9 +22501,7 @@ const VDatePickerYears = genericComponent()({
22473
22501
  const yearRef = templateRef();
22474
22502
  onMounted(async () => {
22475
22503
  await nextTick();
22476
- yearRef.el?.scrollIntoView({
22477
- block: 'center'
22478
- });
22504
+ yearRef.el?.focus();
22479
22505
  });
22480
22506
  function isYearAllowed(year) {
22481
22507
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
@@ -22611,8 +22637,16 @@ const VDatePicker = genericComponent()({
22611
22637
  return value && adapter.isValid(value) ? value : today;
22612
22638
  });
22613
22639
  const headerColor = toRef(() => props.headerColor ?? props.color);
22614
- const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22615
- const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22640
+ const _month = useProxiedModel(props, 'month');
22641
+ const month = computed({
22642
+ get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),
22643
+ set: v => _month.value = v
22644
+ });
22645
+ const _year = useProxiedModel(props, 'year');
22646
+ const year = computed({
22647
+ get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),
22648
+ set: v => _year.value = v
22649
+ });
22616
22650
  const isReversing = shallowRef(false);
22617
22651
  const header = computed(() => {
22618
22652
  if (props.multiple && model.value.length > 1) {
@@ -22696,9 +22730,9 @@ const VDatePicker = genericComponent()({
22696
22730
  } else {
22697
22731
  year.value++;
22698
22732
  month.value = 0;
22699
- onUpdateYear(year.value);
22733
+ onUpdateYear();
22700
22734
  }
22701
- onUpdateMonth(month.value);
22735
+ onUpdateMonth();
22702
22736
  }
22703
22737
  function onClickPrev() {
22704
22738
  if (month.value > 0) {
@@ -22706,9 +22740,9 @@ const VDatePicker = genericComponent()({
22706
22740
  } else {
22707
22741
  year.value--;
22708
22742
  month.value = 11;
22709
- onUpdateYear(year.value);
22743
+ onUpdateYear();
22710
22744
  }
22711
- onUpdateMonth(month.value);
22745
+ onUpdateMonth();
22712
22746
  }
22713
22747
  function onClickDate() {
22714
22748
  viewMode.value = 'month';
@@ -22719,13 +22753,11 @@ const VDatePicker = genericComponent()({
22719
22753
  function onClickYear() {
22720
22754
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
22721
22755
  }
22722
- function onUpdateMonth(value) {
22756
+ function onUpdateMonth() {
22723
22757
  if (viewMode.value === 'months') onClickMonth();
22724
- emit('update:month', value);
22725
22758
  }
22726
- function onUpdateYear(value) {
22759
+ function onUpdateYear() {
22727
22760
  if (viewMode.value === 'year') onClickYear();
22728
- emit('update:year', value);
22729
22761
  }
22730
22762
  watch(model, (val, oldVal) => {
22731
22763
  const arrBefore = wrapInArray(oldVal);
@@ -22737,11 +22769,11 @@ const VDatePicker = genericComponent()({
22737
22769
  const newYear = adapter.getYear(after);
22738
22770
  if (newMonth !== month.value) {
22739
22771
  month.value = newMonth;
22740
- onUpdateMonth(month.value);
22772
+ onUpdateMonth();
22741
22773
  }
22742
22774
  if (newYear !== year.value) {
22743
22775
  year.value = newYear;
22744
- onUpdateYear(year.value);
22776
+ onUpdateYear();
22745
22777
  }
22746
22778
  isReversing.value = adapter.isBefore(before, after);
22747
22779
  });
@@ -24895,6 +24927,8 @@ function useHold(_ref) {
24895
24927
  function holdStart(value) {
24896
24928
  holdStop();
24897
24929
  tick(value);
24930
+ window.addEventListener('pointerup', holdStop);
24931
+ document.addEventListener('blur', holdStop);
24898
24932
  timeout = window.setTimeout(() => {
24899
24933
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
24900
24934
  }, HOLD_DELAY);
@@ -24902,6 +24936,8 @@ function useHold(_ref) {
24902
24936
  function holdStop() {
24903
24937
  window.clearTimeout(timeout);
24904
24938
  window.clearInterval(interval);
24939
+ window.removeEventListener('pointerup', holdStop);
24940
+ document.removeEventListener('blur', holdStop);
24905
24941
  }
24906
24942
  function tick(value) {
24907
24943
  toggleUpDown(value === 'up');
@@ -25013,7 +25049,7 @@ const VNumberInput = genericComponent()({
25013
25049
  onClick: onControlClick,
25014
25050
  onPointerup: onControlMouseup,
25015
25051
  onPointerdown: onUpControlMousedown,
25016
- onPointercancel: onControlPointerCancel
25052
+ onPointercancel: onControlMouseup
25017
25053
  }
25018
25054
  };
25019
25055
  const decrementSlotProps = {
@@ -25021,7 +25057,7 @@ const VNumberInput = genericComponent()({
25021
25057
  onClick: onControlClick,
25022
25058
  onPointerup: onControlMouseup,
25023
25059
  onPointerdown: onDownControlMousedown,
25024
- onPointercancel: onControlPointerCancel
25060
+ onPointercancel: onControlMouseup
25025
25061
  }
25026
25062
  };
25027
25063
  watch(() => props.precision, () => formatInputValue());
@@ -25101,7 +25137,6 @@ const VNumberInput = genericComponent()({
25101
25137
  const el = e.currentTarget;
25102
25138
  el?.releasePointerCapture(e.pointerId);
25103
25139
  e.preventDefault();
25104
- e.stopPropagation();
25105
25140
  holdStop();
25106
25141
  }
25107
25142
  function onUpControlMousedown(e) {
@@ -25118,11 +25153,6 @@ const VNumberInput = genericComponent()({
25118
25153
  e.stopPropagation();
25119
25154
  holdStart('down');
25120
25155
  }
25121
- function onControlPointerCancel(e) {
25122
- const el = e.currentTarget;
25123
- el?.releasePointerCapture(e.pointerId);
25124
- holdStop();
25125
- }
25126
25156
  function clampModel() {
25127
25157
  if (controlsDisabled.value) return;
25128
25158
  if (!vTextFieldRef.value) return;
@@ -25172,7 +25202,7 @@ const VNumberInput = genericComponent()({
25172
25202
  "onClick": onControlClick,
25173
25203
  "onPointerdown": onUpControlMousedown,
25174
25204
  "onPointerup": onControlMouseup,
25175
- "onPointercancel": onControlPointerCancel,
25205
+ "onPointercancel": onControlMouseup,
25176
25206
  "size": controlNodeSize.value,
25177
25207
  "tabindex": "-1"
25178
25208
  }, null) : createVNode(VDefaultsProvider, {
@@ -25202,7 +25232,7 @@ const VNumberInput = genericComponent()({
25202
25232
  "onClick": onControlClick,
25203
25233
  "onPointerdown": onDownControlMousedown,
25204
25234
  "onPointerup": onControlMouseup,
25205
- "onPointercancel": onControlPointerCancel,
25235
+ "onPointercancel": onControlMouseup,
25206
25236
  "size": controlNodeSize.value,
25207
25237
  "tabindex": "-1"
25208
25238
  }, null) : createVNode(VDefaultsProvider, {
@@ -25349,6 +25379,21 @@ const VOtpInput = genericComponent()({
25349
25379
  const contentRef = ref();
25350
25380
  const inputRef = ref([]);
25351
25381
  const current = computed(() => inputRef.value[focusIndex.value]);
25382
+ const intersectScope = effectScope();
25383
+ intersectScope.run(() => {
25384
+ const {
25385
+ intersectionRef,
25386
+ isIntersecting
25387
+ } = useIntersectionObserver();
25388
+ watch(isIntersecting, v => {
25389
+ if (!v) return;
25390
+ intersectionRef.value?.focus();
25391
+ intersectScope.stop();
25392
+ });
25393
+ watchEffect(() => {
25394
+ intersectionRef.value = inputRef.value[0];
25395
+ });
25396
+ });
25352
25397
  function onInput() {
25353
25398
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
25354
25399
  // The following logic simulates the behavior of a number input.
@@ -28095,6 +28140,9 @@ const VTextarea = genericComponent()({
28095
28140
  focus,
28096
28141
  blur
28097
28142
  } = useFocus(props);
28143
+ const {
28144
+ onIntersect
28145
+ } = useAutofocus(props);
28098
28146
  const counterValue = computed(() => {
28099
28147
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
28100
28148
  });
@@ -28103,10 +28151,6 @@ const VTextarea = genericComponent()({
28103
28151
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
28104
28152
  return props.counter;
28105
28153
  });
28106
- function onIntersect(isIntersecting, entries) {
28107
- if (!props.autofocus || !isIntersecting) return;
28108
- entries[0].target?.focus?.();
28109
- }
28110
28154
  const vInputRef = ref();
28111
28155
  const vFieldRef = ref();
28112
28156
  const controlHeight = shallowRef('');
@@ -29823,6 +29867,7 @@ const VFileUploadItem = genericComponent()({
29823
29867
  "class": "v-file-upload-item"
29824
29868
  }), {
29825
29869
  ...slots,
29870
+ title: () => props?.title ?? props.file?.name,
29826
29871
  prepend: slotProps => createElementVNode(Fragment, null, [!slots.prepend ? createVNode(VAvatar, {
29827
29872
  "icon": props.fileIcon,
29828
29873
  "image": preview.value,
@@ -30671,6 +30716,7 @@ const VTimePickerClock = genericComponent()({
30671
30716
  const isDragging = ref(false);
30672
30717
  const valueOnMouseDown = ref(null);
30673
30718
  const valueOnMouseUp = ref(null);
30719
+ const emitChangeDebounced = debounce(value => emit('change', value), 750);
30674
30720
  const {
30675
30721
  textColorClasses,
30676
30722
  textColorStyles
@@ -30716,6 +30762,7 @@ const VTimePickerClock = genericComponent()({
30716
30762
  if (value !== props.displayedValue) {
30717
30763
  update(value);
30718
30764
  }
30765
+ emitChangeDebounced(value);
30719
30766
  }
30720
30767
  function isInner(value) {
30721
30768
  return props.double && value - props.min >= roundCount.value;
@@ -31316,6 +31363,7 @@ const VTreeviewItem = genericComponent()({
31316
31363
  }
31317
31364
  function onClickAction(e) {
31318
31365
  e.preventDefault();
31366
+ e.stopPropagation();
31319
31367
  emit('toggleExpand', e);
31320
31368
  }
31321
31369
  useRender(() => {
@@ -31461,7 +31509,8 @@ const VTreeviewChildren = genericComponent()({
31461
31509
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
31462
31510
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
31463
31511
  return children ? createVNode(VTreeviewGroup, mergeProps(treeviewGroupProps, {
31464
- "value": props.returnObject ? item.raw : treeviewGroupProps?.value
31512
+ "value": props.returnObject ? item.raw : treeviewGroupProps?.value,
31513
+ "rawId": treeviewGroupProps?.value
31465
31514
  }), {
31466
31515
  activator: _ref2 => {
31467
31516
  let {
@@ -32149,7 +32198,7 @@ function createVuetify$1() {
32149
32198
  };
32150
32199
  });
32151
32200
  }
32152
- const version$1 = "3.8.9";
32201
+ const version$1 = "3.8.11";
32153
32202
  createVuetify$1.version = version$1;
32154
32203
 
32155
32204
  // Vue's inject() can only be used in setup
@@ -32447,7 +32496,7 @@ var index = /*#__PURE__*/Object.freeze({
32447
32496
 
32448
32497
  /* eslint-disable local-rules/sort-imports */
32449
32498
 
32450
- const version = "3.8.9";
32499
+ const version = "3.8.11";
32451
32500
 
32452
32501
  /* eslint-disable local-rules/sort-imports */
32453
32502