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
  */
@@ -613,6 +613,13 @@
613
613
  }
614
614
  return out;
615
615
  }
616
+ function onlyDefinedProps(props) {
617
+ const booleanAttributes = ['checked', 'disabled'];
618
+ return Object.fromEntries(Object.entries(props).filter(_ref => {
619
+ let [key, v] = _ref;
620
+ return booleanAttributes.includes(key) ? !!v : v !== undefined;
621
+ }));
622
+ }
616
623
 
617
624
  // Utilities
618
625
  const block = ['top', 'bottom'];
@@ -937,7 +944,7 @@
937
944
  // WoB should always return negative value.
938
945
 
939
946
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
940
- outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
947
+ outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
941
948
  }
942
949
  return outputContrast * 100;
943
950
  }
@@ -3325,10 +3332,10 @@
3325
3332
  } = isObject(transition) ? transition : {};
3326
3333
  let transitionProps;
3327
3334
  if (isObject(transition)) {
3328
- transitionProps = vue.mergeProps(customProps, JSON.parse(JSON.stringify({
3335
+ transitionProps = vue.mergeProps(customProps, onlyDefinedProps({
3329
3336
  disabled,
3330
3337
  group
3331
- })), rest);
3338
+ }), rest);
3332
3339
  } else {
3333
3340
  transitionProps = vue.mergeProps({
3334
3341
  name: disabled || !transition ? '' : transition
@@ -4397,6 +4404,7 @@
4397
4404
  } else {
4398
4405
  const isSelected = selected.value.includes(id);
4399
4406
  if (props.mandatory && isSelected) return;
4407
+ if (!isSelected && !value) return;
4400
4408
  selected.value = value ?? !isSelected ? [id] : [];
4401
4409
  }
4402
4410
  }
@@ -4831,7 +4839,7 @@
4831
4839
  const observer = new IntersectionObserver(entries => {
4832
4840
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4833
4841
  }, options);
4834
- vue.onBeforeUnmount(() => {
4842
+ vue.onScopeDispose(() => {
4835
4843
  observer.disconnect();
4836
4844
  });
4837
4845
  vue.watch(intersectionRef, (newValue, oldValue) => {
@@ -5362,9 +5370,9 @@
5362
5370
 
5363
5371
  function useSelectLink(link, select) {
5364
5372
  vue.watch(() => link.isActive?.value, isActive => {
5365
- if (link.isLink.value && isActive && select) {
5373
+ if (link.isLink.value && isActive != null && select) {
5366
5374
  vue.nextTick(() => {
5367
- select(true);
5375
+ select(isActive);
5368
5376
  });
5369
5377
  }
5370
5378
  }, {
@@ -8978,6 +8986,7 @@
8978
8986
  type: IconValue,
8979
8987
  default: '$expand'
8980
8988
  },
8989
+ rawId: [String, Number],
8981
8990
  prependIcon: IconValue,
8982
8991
  appendIcon: IconValue,
8983
8992
  fluid: Boolean,
@@ -8999,13 +9008,12 @@
8999
9008
  open,
9000
9009
  id: _id
9001
9010
  } = useNestedItem(() => props.value, true);
9002
- const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
9011
+ const id = vue.computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
9003
9012
  const list = useList();
9004
9013
  const {
9005
9014
  isBooted
9006
9015
  } = useSsrBoot();
9007
9016
  function onClick(e) {
9008
- e.stopPropagation();
9009
9017
  if (['INPUT', 'TEXTAREA'].includes(e.target?.tagName)) return;
9010
9018
  open(!isOpen.value, e);
9011
9019
  }
@@ -9523,9 +9531,10 @@
9523
9531
  }) : undefined
9524
9532
  };
9525
9533
  const listGroupProps = VListGroup.filterProps(itemProps);
9526
- return children ? vue.createVNode(VListGroup, vue.mergeProps({
9527
- "value": itemProps?.value
9528
- }, listGroupProps), {
9534
+ return children ? vue.createVNode(VListGroup, vue.mergeProps(listGroupProps, {
9535
+ "value": props.returnObject ? item : itemProps?.value,
9536
+ "rawId": itemProps?.value
9537
+ }), {
9529
9538
  activator: _ref3 => {
9530
9539
  let {
9531
9540
  props: activatorProps
@@ -9704,7 +9713,7 @@
9704
9713
  function transformItem$2(props, item) {
9705
9714
  const type = getPropertyFromItem(item, props.itemType, 'item');
9706
9715
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9707
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9716
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9708
9717
  const children = getPropertyFromItem(item, props.itemChildren);
9709
9718
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9710
9719
  const _props = {
@@ -12053,6 +12062,16 @@
12053
12062
  }
12054
12063
  });
12055
12064
 
12065
+ function useAutofocus(props) {
12066
+ function onIntersect(isIntersecting, entries) {
12067
+ if (!props.autofocus || !isIntersecting) return;
12068
+ entries[0].target?.focus?.();
12069
+ }
12070
+ return {
12071
+ onIntersect
12072
+ };
12073
+ }
12074
+
12056
12075
  // Types
12057
12076
 
12058
12077
  const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
@@ -12099,6 +12118,9 @@
12099
12118
  focus,
12100
12119
  blur
12101
12120
  } = useFocus(props);
12121
+ const {
12122
+ onIntersect
12123
+ } = useAutofocus(props);
12102
12124
  const counterValue = vue.computed(() => {
12103
12125
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
12104
12126
  });
@@ -12108,10 +12130,6 @@
12108
12130
  return props.counter;
12109
12131
  });
12110
12132
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
12111
- function onIntersect(isIntersecting, entries) {
12112
- if (!props.autofocus || !isIntersecting) return;
12113
- entries[0].target?.focus?.();
12114
- }
12115
12133
  const vInputRef = vue.ref();
12116
12134
  const vFieldRef = vue.ref();
12117
12135
  const inputRef = vue.ref();
@@ -15203,6 +15221,7 @@
15203
15221
  }) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
15204
15222
  })]
15205
15223
  })]), props.progress && vue.createVNode(VProgressLinear, {
15224
+ "absolute": true,
15206
15225
  "class": "v-carousel__progress",
15207
15226
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15208
15227
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22083,8 +22102,11 @@
22083
22102
  }, v => adapter.getMonth(v));
22084
22103
  const weekDays = vue.computed(() => {
22085
22104
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22086
- // Always generate all days, regardless of props.weekdays
22087
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22105
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22106
+ });
22107
+ const weekdayLabels = vue.computed(() => {
22108
+ const labels = adapter.getWeekdays(props.firstDayOfWeek);
22109
+ return weekDays.value.map(day => labels[day]);
22088
22110
  });
22089
22111
  const weeksInMonth = vue.computed(() => {
22090
22112
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22165,7 +22187,7 @@
22165
22187
  if (typeof props.allowedDates === 'function') {
22166
22188
  return !props.allowedDates(date);
22167
22189
  }
22168
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22190
+ return false;
22169
22191
  }
22170
22192
  return {
22171
22193
  displayValue,
@@ -22175,6 +22197,7 @@
22175
22197
  model,
22176
22198
  weeksInMonth,
22177
22199
  weekDays,
22200
+ weekdayLabels,
22178
22201
  weekNumbers
22179
22202
  };
22180
22203
  }
@@ -22213,7 +22236,9 @@
22213
22236
  const {
22214
22237
  daysInMonth,
22215
22238
  model,
22216
- weekNumbers
22239
+ weekNumbers,
22240
+ weekDays,
22241
+ weekdayLabels
22217
22242
  } = useCalendar(props);
22218
22243
  const adapter = useDate();
22219
22244
  const rangeStart = vue.shallowRef();
@@ -22285,7 +22310,10 @@
22285
22310
  }
22286
22311
  }
22287
22312
  useRender(() => vue.createElementVNode("div", {
22288
- "class": "v-date-picker-month"
22313
+ "class": "v-date-picker-month",
22314
+ "style": {
22315
+ '--v-date-picker-days-in-week': weekDays.value.length
22316
+ }
22289
22317
  }, [props.showWeek && vue.createElementVNode("div", {
22290
22318
  "key": "weeks",
22291
22319
  "class": "v-date-picker-month__weeks"
@@ -22301,7 +22329,7 @@
22301
22329
  "ref": daysRef,
22302
22330
  "key": daysInMonth.value[0].date?.toString(),
22303
22331
  "class": "v-date-picker-month__days"
22304
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
22332
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
22305
22333
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22306
22334
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22307
22335
  const slotProps = {
@@ -22477,9 +22505,7 @@
22477
22505
  const yearRef = templateRef();
22478
22506
  vue.onMounted(async () => {
22479
22507
  await vue.nextTick();
22480
- yearRef.el?.scrollIntoView({
22481
- block: 'center'
22482
- });
22508
+ yearRef.el?.focus();
22483
22509
  });
22484
22510
  function isYearAllowed(year) {
22485
22511
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
@@ -22615,8 +22641,16 @@
22615
22641
  return value && adapter.isValid(value) ? value : today;
22616
22642
  });
22617
22643
  const headerColor = vue.toRef(() => props.headerColor ?? props.color);
22618
- const month = vue.ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22619
- const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22644
+ const _month = useProxiedModel(props, 'month');
22645
+ const month = vue.computed({
22646
+ get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),
22647
+ set: v => _month.value = v
22648
+ });
22649
+ const _year = useProxiedModel(props, 'year');
22650
+ const year = vue.computed({
22651
+ get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),
22652
+ set: v => _year.value = v
22653
+ });
22620
22654
  const isReversing = vue.shallowRef(false);
22621
22655
  const header = vue.computed(() => {
22622
22656
  if (props.multiple && model.value.length > 1) {
@@ -22700,9 +22734,9 @@
22700
22734
  } else {
22701
22735
  year.value++;
22702
22736
  month.value = 0;
22703
- onUpdateYear(year.value);
22737
+ onUpdateYear();
22704
22738
  }
22705
- onUpdateMonth(month.value);
22739
+ onUpdateMonth();
22706
22740
  }
22707
22741
  function onClickPrev() {
22708
22742
  if (month.value > 0) {
@@ -22710,9 +22744,9 @@
22710
22744
  } else {
22711
22745
  year.value--;
22712
22746
  month.value = 11;
22713
- onUpdateYear(year.value);
22747
+ onUpdateYear();
22714
22748
  }
22715
- onUpdateMonth(month.value);
22749
+ onUpdateMonth();
22716
22750
  }
22717
22751
  function onClickDate() {
22718
22752
  viewMode.value = 'month';
@@ -22723,13 +22757,11 @@
22723
22757
  function onClickYear() {
22724
22758
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
22725
22759
  }
22726
- function onUpdateMonth(value) {
22760
+ function onUpdateMonth() {
22727
22761
  if (viewMode.value === 'months') onClickMonth();
22728
- emit('update:month', value);
22729
22762
  }
22730
- function onUpdateYear(value) {
22763
+ function onUpdateYear() {
22731
22764
  if (viewMode.value === 'year') onClickYear();
22732
- emit('update:year', value);
22733
22765
  }
22734
22766
  vue.watch(model, (val, oldVal) => {
22735
22767
  const arrBefore = wrapInArray(oldVal);
@@ -22741,11 +22773,11 @@
22741
22773
  const newYear = adapter.getYear(after);
22742
22774
  if (newMonth !== month.value) {
22743
22775
  month.value = newMonth;
22744
- onUpdateMonth(month.value);
22776
+ onUpdateMonth();
22745
22777
  }
22746
22778
  if (newYear !== year.value) {
22747
22779
  year.value = newYear;
22748
- onUpdateYear(year.value);
22780
+ onUpdateYear();
22749
22781
  }
22750
22782
  isReversing.value = adapter.isBefore(before, after);
22751
22783
  });
@@ -24899,6 +24931,8 @@
24899
24931
  function holdStart(value) {
24900
24932
  holdStop();
24901
24933
  tick(value);
24934
+ window.addEventListener('pointerup', holdStop);
24935
+ document.addEventListener('blur', holdStop);
24902
24936
  timeout = window.setTimeout(() => {
24903
24937
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
24904
24938
  }, HOLD_DELAY);
@@ -24906,6 +24940,8 @@
24906
24940
  function holdStop() {
24907
24941
  window.clearTimeout(timeout);
24908
24942
  window.clearInterval(interval);
24943
+ window.removeEventListener('pointerup', holdStop);
24944
+ document.removeEventListener('blur', holdStop);
24909
24945
  }
24910
24946
  function tick(value) {
24911
24947
  toggleUpDown(value === 'up');
@@ -25017,7 +25053,7 @@
25017
25053
  onClick: onControlClick,
25018
25054
  onPointerup: onControlMouseup,
25019
25055
  onPointerdown: onUpControlMousedown,
25020
- onPointercancel: onControlPointerCancel
25056
+ onPointercancel: onControlMouseup
25021
25057
  }
25022
25058
  };
25023
25059
  const decrementSlotProps = {
@@ -25025,7 +25061,7 @@
25025
25061
  onClick: onControlClick,
25026
25062
  onPointerup: onControlMouseup,
25027
25063
  onPointerdown: onDownControlMousedown,
25028
- onPointercancel: onControlPointerCancel
25064
+ onPointercancel: onControlMouseup
25029
25065
  }
25030
25066
  };
25031
25067
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25105,7 +25141,6 @@
25105
25141
  const el = e.currentTarget;
25106
25142
  el?.releasePointerCapture(e.pointerId);
25107
25143
  e.preventDefault();
25108
- e.stopPropagation();
25109
25144
  holdStop();
25110
25145
  }
25111
25146
  function onUpControlMousedown(e) {
@@ -25122,11 +25157,6 @@
25122
25157
  e.stopPropagation();
25123
25158
  holdStart('down');
25124
25159
  }
25125
- function onControlPointerCancel(e) {
25126
- const el = e.currentTarget;
25127
- el?.releasePointerCapture(e.pointerId);
25128
- holdStop();
25129
- }
25130
25160
  function clampModel() {
25131
25161
  if (controlsDisabled.value) return;
25132
25162
  if (!vTextFieldRef.value) return;
@@ -25176,7 +25206,7 @@
25176
25206
  "onClick": onControlClick,
25177
25207
  "onPointerdown": onUpControlMousedown,
25178
25208
  "onPointerup": onControlMouseup,
25179
- "onPointercancel": onControlPointerCancel,
25209
+ "onPointercancel": onControlMouseup,
25180
25210
  "size": controlNodeSize.value,
25181
25211
  "tabindex": "-1"
25182
25212
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25206,7 +25236,7 @@
25206
25236
  "onClick": onControlClick,
25207
25237
  "onPointerdown": onDownControlMousedown,
25208
25238
  "onPointerup": onControlMouseup,
25209
- "onPointercancel": onControlPointerCancel,
25239
+ "onPointercancel": onControlMouseup,
25210
25240
  "size": controlNodeSize.value,
25211
25241
  "tabindex": "-1"
25212
25242
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25353,6 +25383,21 @@
25353
25383
  const contentRef = vue.ref();
25354
25384
  const inputRef = vue.ref([]);
25355
25385
  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];
25399
+ });
25400
+ });
25356
25401
  function onInput() {
25357
25402
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
25358
25403
  // The following logic simulates the behavior of a number input.
@@ -28099,6 +28144,9 @@
28099
28144
  focus,
28100
28145
  blur
28101
28146
  } = useFocus(props);
28147
+ const {
28148
+ onIntersect
28149
+ } = useAutofocus(props);
28102
28150
  const counterValue = vue.computed(() => {
28103
28151
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
28104
28152
  });
@@ -28107,10 +28155,6 @@
28107
28155
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
28108
28156
  return props.counter;
28109
28157
  });
28110
- function onIntersect(isIntersecting, entries) {
28111
- if (!props.autofocus || !isIntersecting) return;
28112
- entries[0].target?.focus?.();
28113
- }
28114
28158
  const vInputRef = vue.ref();
28115
28159
  const vFieldRef = vue.ref();
28116
28160
  const controlHeight = vue.shallowRef('');
@@ -29827,6 +29871,7 @@
29827
29871
  "class": "v-file-upload-item"
29828
29872
  }), {
29829
29873
  ...slots,
29874
+ title: () => props?.title ?? props.file?.name,
29830
29875
  prepend: slotProps => vue.createElementVNode(vue.Fragment, null, [!slots.prepend ? vue.createVNode(VAvatar, {
29831
29876
  "icon": props.fileIcon,
29832
29877
  "image": preview.value,
@@ -30675,6 +30720,7 @@
30675
30720
  const isDragging = vue.ref(false);
30676
30721
  const valueOnMouseDown = vue.ref(null);
30677
30722
  const valueOnMouseUp = vue.ref(null);
30723
+ const emitChangeDebounced = debounce(value => emit('change', value), 750);
30678
30724
  const {
30679
30725
  textColorClasses,
30680
30726
  textColorStyles
@@ -30720,6 +30766,7 @@
30720
30766
  if (value !== props.displayedValue) {
30721
30767
  update(value);
30722
30768
  }
30769
+ emitChangeDebounced(value);
30723
30770
  }
30724
30771
  function isInner(value) {
30725
30772
  return props.double && value - props.min >= roundCount.value;
@@ -31320,6 +31367,7 @@
31320
31367
  }
31321
31368
  function onClickAction(e) {
31322
31369
  e.preventDefault();
31370
+ e.stopPropagation();
31323
31371
  emit('toggleExpand', e);
31324
31372
  }
31325
31373
  useRender(() => {
@@ -31465,7 +31513,8 @@
31465
31513
  const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
31466
31514
  const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
31467
31515
  return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
31468
- "value": props.returnObject ? item.raw : treeviewGroupProps?.value
31516
+ "value": props.returnObject ? item.raw : treeviewGroupProps?.value,
31517
+ "rawId": treeviewGroupProps?.value
31469
31518
  }), {
31470
31519
  activator: _ref2 => {
31471
31520
  let {
@@ -32153,7 +32202,7 @@
32153
32202
  };
32154
32203
  });
32155
32204
  }
32156
- const version$1 = "3.8.9";
32205
+ const version$1 = "3.8.11";
32157
32206
  createVuetify$1.version = version$1;
32158
32207
 
32159
32208
  // Vue's inject() can only be used in setup
@@ -32451,7 +32500,7 @@
32451
32500
 
32452
32501
  /* eslint-disable local-rules/sort-imports */
32453
32502
 
32454
- const version = "3.8.9";
32503
+ const version = "3.8.11";
32455
32504
 
32456
32505
  /* eslint-disable local-rules/sort-imports */
32457
32506