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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -536,6 +536,13 @@
536
536
  }
537
537
  return out;
538
538
  }
539
+ function onlyDefinedProps(props) {
540
+ const booleanAttributes = ['checked', 'disabled'];
541
+ return Object.fromEntries(Object.entries(props).filter(_ref => {
542
+ let [key, v] = _ref;
543
+ return booleanAttributes.includes(key) ? !!v : v !== undefined;
544
+ }));
545
+ }
539
546
 
540
547
  // Utilities
541
548
  const block = ['top', 'bottom'];
@@ -860,7 +867,7 @@
860
867
  // WoB should always return negative value.
861
868
 
862
869
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
863
- outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
870
+ outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
864
871
  }
865
872
  return outputContrast * 100;
866
873
  }
@@ -3812,10 +3819,10 @@
3812
3819
  } = isObject(transition) ? transition : {};
3813
3820
  let transitionProps;
3814
3821
  if (isObject(transition)) {
3815
- transitionProps = vue.mergeProps(customProps, JSON.parse(JSON.stringify({
3822
+ transitionProps = vue.mergeProps(customProps, onlyDefinedProps({
3816
3823
  disabled,
3817
3824
  group
3818
- })), rest);
3825
+ }), rest);
3819
3826
  } else {
3820
3827
  transitionProps = vue.mergeProps({
3821
3828
  name: disabled || !transition ? '' : transition
@@ -4884,6 +4891,7 @@
4884
4891
  } else {
4885
4892
  const isSelected = selected.value.includes(id);
4886
4893
  if (props.mandatory && isSelected) return;
4894
+ if (!isSelected && !value) return;
4887
4895
  selected.value = value ?? !isSelected ? [id] : [];
4888
4896
  }
4889
4897
  }
@@ -5109,7 +5117,7 @@
5109
5117
  const observer = new IntersectionObserver(entries => {
5110
5118
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
5111
5119
  }, options);
5112
- vue.onBeforeUnmount(() => {
5120
+ vue.onScopeDispose(() => {
5113
5121
  observer.disconnect();
5114
5122
  });
5115
5123
  vue.watch(intersectionRef, (newValue, oldValue) => {
@@ -5640,9 +5648,9 @@
5640
5648
 
5641
5649
  function useSelectLink(link, select) {
5642
5650
  vue.watch(() => link.isActive?.value, isActive => {
5643
- if (link.isLink.value && isActive && select) {
5651
+ if (link.isLink.value && isActive != null && select) {
5644
5652
  vue.nextTick(() => {
5645
- select(true);
5653
+ select(isActive);
5646
5654
  });
5647
5655
  }
5648
5656
  }, {
@@ -9256,6 +9264,7 @@
9256
9264
  type: IconValue,
9257
9265
  default: '$expand'
9258
9266
  },
9267
+ rawId: [String, Number],
9259
9268
  prependIcon: IconValue,
9260
9269
  appendIcon: IconValue,
9261
9270
  fluid: Boolean,
@@ -9277,13 +9286,12 @@
9277
9286
  open,
9278
9287
  id: _id
9279
9288
  } = useNestedItem(() => props.value, true);
9280
- const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
9289
+ const id = vue.computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
9281
9290
  const list = useList();
9282
9291
  const {
9283
9292
  isBooted
9284
9293
  } = useSsrBoot();
9285
9294
  function onClick(e) {
9286
- e.stopPropagation();
9287
9295
  if (['INPUT', 'TEXTAREA'].includes(e.target?.tagName)) return;
9288
9296
  open(!isOpen.value, e);
9289
9297
  }
@@ -9801,9 +9809,10 @@
9801
9809
  }) : undefined
9802
9810
  };
9803
9811
  const listGroupProps = VListGroup.filterProps(itemProps);
9804
- return children ? vue.createVNode(VListGroup, vue.mergeProps({
9805
- "value": itemProps?.value
9806
- }, listGroupProps), {
9812
+ return children ? vue.createVNode(VListGroup, vue.mergeProps(listGroupProps, {
9813
+ "value": props.returnObject ? item : itemProps?.value,
9814
+ "rawId": itemProps?.value
9815
+ }), {
9807
9816
  activator: _ref3 => {
9808
9817
  let {
9809
9818
  props: activatorProps
@@ -9982,7 +9991,7 @@
9982
9991
  function transformItem$2(props, item) {
9983
9992
  const type = getPropertyFromItem(item, props.itemType, 'item');
9984
9993
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9985
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9994
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9986
9995
  const children = getPropertyFromItem(item, props.itemChildren);
9987
9996
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9988
9997
  const _props = {
@@ -12331,6 +12340,16 @@
12331
12340
  }
12332
12341
  });
12333
12342
 
12343
+ function useAutofocus(props) {
12344
+ function onIntersect(isIntersecting, entries) {
12345
+ if (!props.autofocus || !isIntersecting) return;
12346
+ entries[0].target?.focus?.();
12347
+ }
12348
+ return {
12349
+ onIntersect
12350
+ };
12351
+ }
12352
+
12334
12353
  // Types
12335
12354
 
12336
12355
  const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
@@ -12377,6 +12396,9 @@
12377
12396
  focus,
12378
12397
  blur
12379
12398
  } = useFocus(props);
12399
+ const {
12400
+ onIntersect
12401
+ } = useAutofocus(props);
12380
12402
  const counterValue = vue.computed(() => {
12381
12403
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
12382
12404
  });
@@ -12386,10 +12408,6 @@
12386
12408
  return props.counter;
12387
12409
  });
12388
12410
  const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
12389
- function onIntersect(isIntersecting, entries) {
12390
- if (!props.autofocus || !isIntersecting) return;
12391
- entries[0].target?.focus?.();
12392
- }
12393
12411
  const vInputRef = vue.ref();
12394
12412
  const vFieldRef = vue.ref();
12395
12413
  const inputRef = vue.ref();
@@ -15481,6 +15499,7 @@
15481
15499
  }) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
15482
15500
  })]
15483
15501
  })]), props.progress && vue.createVNode(VProgressLinear, {
15502
+ "absolute": true,
15484
15503
  "class": "v-carousel__progress",
15485
15504
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15486
15505
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22361,8 +22380,11 @@
22361
22380
  }, v => adapter.getMonth(v));
22362
22381
  const weekDays = vue.computed(() => {
22363
22382
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22364
- // Always generate all days, regardless of props.weekdays
22365
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22383
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22384
+ });
22385
+ const weekdayLabels = vue.computed(() => {
22386
+ const labels = adapter.getWeekdays(props.firstDayOfWeek);
22387
+ return weekDays.value.map(day => labels[day]);
22366
22388
  });
22367
22389
  const weeksInMonth = vue.computed(() => {
22368
22390
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22443,7 +22465,7 @@
22443
22465
  if (typeof props.allowedDates === 'function') {
22444
22466
  return !props.allowedDates(date);
22445
22467
  }
22446
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22468
+ return false;
22447
22469
  }
22448
22470
  return {
22449
22471
  displayValue,
@@ -22453,6 +22475,7 @@
22453
22475
  model,
22454
22476
  weeksInMonth,
22455
22477
  weekDays,
22478
+ weekdayLabels,
22456
22479
  weekNumbers
22457
22480
  };
22458
22481
  }
@@ -22491,7 +22514,9 @@
22491
22514
  const {
22492
22515
  daysInMonth,
22493
22516
  model,
22494
- weekNumbers
22517
+ weekNumbers,
22518
+ weekDays,
22519
+ weekdayLabels
22495
22520
  } = useCalendar(props);
22496
22521
  const adapter = useDate();
22497
22522
  const rangeStart = vue.shallowRef();
@@ -22563,7 +22588,10 @@
22563
22588
  }
22564
22589
  }
22565
22590
  useRender(() => vue.createElementVNode("div", {
22566
- "class": "v-date-picker-month"
22591
+ "class": "v-date-picker-month",
22592
+ "style": {
22593
+ '--v-date-picker-days-in-week': weekDays.value.length
22594
+ }
22567
22595
  }, [props.showWeek && vue.createElementVNode("div", {
22568
22596
  "key": "weeks",
22569
22597
  "class": "v-date-picker-month__weeks"
@@ -22579,7 +22607,7 @@
22579
22607
  "ref": daysRef,
22580
22608
  "key": daysInMonth.value[0].date?.toString(),
22581
22609
  "class": "v-date-picker-month__days"
22582
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
22610
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
22583
22611
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22584
22612
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22585
22613
  const slotProps = {
@@ -22755,9 +22783,7 @@
22755
22783
  const yearRef = templateRef();
22756
22784
  vue.onMounted(async () => {
22757
22785
  await vue.nextTick();
22758
- yearRef.el?.scrollIntoView({
22759
- block: 'center'
22760
- });
22786
+ yearRef.el?.focus();
22761
22787
  });
22762
22788
  function isYearAllowed(year) {
22763
22789
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
@@ -22893,8 +22919,16 @@
22893
22919
  return value && adapter.isValid(value) ? value : today;
22894
22920
  });
22895
22921
  const headerColor = vue.toRef(() => props.headerColor ?? props.color);
22896
- const month = vue.ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22897
- const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22922
+ const _month = useProxiedModel(props, 'month');
22923
+ const month = vue.computed({
22924
+ get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),
22925
+ set: v => _month.value = v
22926
+ });
22927
+ const _year = useProxiedModel(props, 'year');
22928
+ const year = vue.computed({
22929
+ get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),
22930
+ set: v => _year.value = v
22931
+ });
22898
22932
  const isReversing = vue.shallowRef(false);
22899
22933
  const header = vue.computed(() => {
22900
22934
  if (props.multiple && model.value.length > 1) {
@@ -22978,9 +23012,9 @@
22978
23012
  } else {
22979
23013
  year.value++;
22980
23014
  month.value = 0;
22981
- onUpdateYear(year.value);
23015
+ onUpdateYear();
22982
23016
  }
22983
- onUpdateMonth(month.value);
23017
+ onUpdateMonth();
22984
23018
  }
22985
23019
  function onClickPrev() {
22986
23020
  if (month.value > 0) {
@@ -22988,9 +23022,9 @@
22988
23022
  } else {
22989
23023
  year.value--;
22990
23024
  month.value = 11;
22991
- onUpdateYear(year.value);
23025
+ onUpdateYear();
22992
23026
  }
22993
- onUpdateMonth(month.value);
23027
+ onUpdateMonth();
22994
23028
  }
22995
23029
  function onClickDate() {
22996
23030
  viewMode.value = 'month';
@@ -23001,13 +23035,11 @@
23001
23035
  function onClickYear() {
23002
23036
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
23003
23037
  }
23004
- function onUpdateMonth(value) {
23038
+ function onUpdateMonth() {
23005
23039
  if (viewMode.value === 'months') onClickMonth();
23006
- emit('update:month', value);
23007
23040
  }
23008
- function onUpdateYear(value) {
23041
+ function onUpdateYear() {
23009
23042
  if (viewMode.value === 'year') onClickYear();
23010
- emit('update:year', value);
23011
23043
  }
23012
23044
  vue.watch(model, (val, oldVal) => {
23013
23045
  const arrBefore = wrapInArray(oldVal);
@@ -23019,11 +23051,11 @@
23019
23051
  const newYear = adapter.getYear(after);
23020
23052
  if (newMonth !== month.value) {
23021
23053
  month.value = newMonth;
23022
- onUpdateMonth(month.value);
23054
+ onUpdateMonth();
23023
23055
  }
23024
23056
  if (newYear !== year.value) {
23025
23057
  year.value = newYear;
23026
- onUpdateYear(year.value);
23058
+ onUpdateYear();
23027
23059
  }
23028
23060
  isReversing.value = adapter.isBefore(before, after);
23029
23061
  });
@@ -25177,6 +25209,8 @@
25177
25209
  function holdStart(value) {
25178
25210
  holdStop();
25179
25211
  tick(value);
25212
+ window.addEventListener('pointerup', holdStop);
25213
+ document.addEventListener('blur', holdStop);
25180
25214
  timeout = window.setTimeout(() => {
25181
25215
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25182
25216
  }, HOLD_DELAY);
@@ -25184,6 +25218,8 @@
25184
25218
  function holdStop() {
25185
25219
  window.clearTimeout(timeout);
25186
25220
  window.clearInterval(interval);
25221
+ window.removeEventListener('pointerup', holdStop);
25222
+ document.removeEventListener('blur', holdStop);
25187
25223
  }
25188
25224
  function tick(value) {
25189
25225
  toggleUpDown(value === 'up');
@@ -25295,7 +25331,7 @@
25295
25331
  onClick: onControlClick,
25296
25332
  onPointerup: onControlMouseup,
25297
25333
  onPointerdown: onUpControlMousedown,
25298
- onPointercancel: onControlPointerCancel
25334
+ onPointercancel: onControlMouseup
25299
25335
  }
25300
25336
  };
25301
25337
  const decrementSlotProps = {
@@ -25303,7 +25339,7 @@
25303
25339
  onClick: onControlClick,
25304
25340
  onPointerup: onControlMouseup,
25305
25341
  onPointerdown: onDownControlMousedown,
25306
- onPointercancel: onControlPointerCancel
25342
+ onPointercancel: onControlMouseup
25307
25343
  }
25308
25344
  };
25309
25345
  vue.watch(() => props.precision, () => formatInputValue());
@@ -25383,7 +25419,6 @@
25383
25419
  const el = e.currentTarget;
25384
25420
  el?.releasePointerCapture(e.pointerId);
25385
25421
  e.preventDefault();
25386
- e.stopPropagation();
25387
25422
  holdStop();
25388
25423
  }
25389
25424
  function onUpControlMousedown(e) {
@@ -25400,11 +25435,6 @@
25400
25435
  e.stopPropagation();
25401
25436
  holdStart('down');
25402
25437
  }
25403
- function onControlPointerCancel(e) {
25404
- const el = e.currentTarget;
25405
- el?.releasePointerCapture(e.pointerId);
25406
- holdStop();
25407
- }
25408
25438
  function clampModel() {
25409
25439
  if (controlsDisabled.value) return;
25410
25440
  if (!vTextFieldRef.value) return;
@@ -25454,7 +25484,7 @@
25454
25484
  "onClick": onControlClick,
25455
25485
  "onPointerdown": onUpControlMousedown,
25456
25486
  "onPointerup": onControlMouseup,
25457
- "onPointercancel": onControlPointerCancel,
25487
+ "onPointercancel": onControlMouseup,
25458
25488
  "size": controlNodeSize.value,
25459
25489
  "tabindex": "-1"
25460
25490
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25484,7 +25514,7 @@
25484
25514
  "onClick": onControlClick,
25485
25515
  "onPointerdown": onDownControlMousedown,
25486
25516
  "onPointerup": onControlMouseup,
25487
- "onPointercancel": onControlPointerCancel,
25517
+ "onPointercancel": onControlMouseup,
25488
25518
  "size": controlNodeSize.value,
25489
25519
  "tabindex": "-1"
25490
25520
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -25631,6 +25661,21 @@
25631
25661
  const contentRef = vue.ref();
25632
25662
  const inputRef = vue.ref([]);
25633
25663
  const current = vue.computed(() => inputRef.value[focusIndex.value]);
25664
+ const intersectScope = vue.effectScope();
25665
+ intersectScope.run(() => {
25666
+ const {
25667
+ intersectionRef,
25668
+ isIntersecting
25669
+ } = useIntersectionObserver();
25670
+ vue.watch(isIntersecting, v => {
25671
+ if (!v) return;
25672
+ intersectionRef.value?.focus();
25673
+ intersectScope.stop();
25674
+ });
25675
+ vue.watchEffect(() => {
25676
+ intersectionRef.value = inputRef.value[0];
25677
+ });
25678
+ });
25634
25679
  function onInput() {
25635
25680
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
25636
25681
  // The following logic simulates the behavior of a number input.
@@ -28377,6 +28422,9 @@
28377
28422
  focus,
28378
28423
  blur
28379
28424
  } = useFocus(props);
28425
+ const {
28426
+ onIntersect
28427
+ } = useAutofocus(props);
28380
28428
  const counterValue = vue.computed(() => {
28381
28429
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
28382
28430
  });
@@ -28385,10 +28433,6 @@
28385
28433
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
28386
28434
  return props.counter;
28387
28435
  });
28388
- function onIntersect(isIntersecting, entries) {
28389
- if (!props.autofocus || !isIntersecting) return;
28390
- entries[0].target?.focus?.();
28391
- }
28392
28436
  const vInputRef = vue.ref();
28393
28437
  const vFieldRef = vue.ref();
28394
28438
  const controlHeight = vue.shallowRef('');
@@ -29468,7 +29512,7 @@
29468
29512
  };
29469
29513
  });
29470
29514
  }
29471
- const version$1 = "3.8.9";
29515
+ const version$1 = "3.8.11";
29472
29516
  createVuetify$1.version = version$1;
29473
29517
 
29474
29518
  // Vue's inject() can only be used in setup
@@ -29493,7 +29537,7 @@
29493
29537
  ...options
29494
29538
  });
29495
29539
  };
29496
- const version = "3.8.9";
29540
+ const version = "3.8.11";
29497
29541
  createVuetify.version = version;
29498
29542
 
29499
29543
  exports.blueprints = index;