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
  */
@@ -532,6 +532,13 @@ function camelizeProps(props) {
532
532
  }
533
533
  return out;
534
534
  }
535
+ function onlyDefinedProps(props) {
536
+ const booleanAttributes = ['checked', 'disabled'];
537
+ return Object.fromEntries(Object.entries(props).filter(_ref => {
538
+ let [key, v] = _ref;
539
+ return booleanAttributes.includes(key) ? !!v : v !== undefined;
540
+ }));
541
+ }
535
542
 
536
543
  // Utilities
537
544
  const block = ['top', 'bottom'];
@@ -856,7 +863,7 @@ function APCAcontrast(text, background) {
856
863
  // WoB should always return negative value.
857
864
 
858
865
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
859
- outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
866
+ outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
860
867
  }
861
868
  return outputContrast * 100;
862
869
  }
@@ -3808,10 +3815,10 @@ const MaybeTransition = (props, _ref) => {
3808
3815
  } = isObject(transition) ? transition : {};
3809
3816
  let transitionProps;
3810
3817
  if (isObject(transition)) {
3811
- transitionProps = mergeProps(customProps, JSON.parse(JSON.stringify({
3818
+ transitionProps = mergeProps(customProps, onlyDefinedProps({
3812
3819
  disabled,
3813
3820
  group
3814
- })), rest);
3821
+ }), rest);
3815
3822
  } else {
3816
3823
  transitionProps = mergeProps({
3817
3824
  name: disabled || !transition ? '' : transition
@@ -4880,6 +4887,7 @@ function useGroup(props, injectKey) {
4880
4887
  } else {
4881
4888
  const isSelected = selected.value.includes(id);
4882
4889
  if (props.mandatory && isSelected) return;
4890
+ if (!isSelected && !value) return;
4883
4891
  selected.value = value ?? !isSelected ? [id] : [];
4884
4892
  }
4885
4893
  }
@@ -5105,7 +5113,7 @@ function useIntersectionObserver(callback, options) {
5105
5113
  const observer = new IntersectionObserver(entries => {
5106
5114
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
5107
5115
  }, options);
5108
- onBeforeUnmount(() => {
5116
+ onScopeDispose(() => {
5109
5117
  observer.disconnect();
5110
5118
  });
5111
5119
  watch(intersectionRef, (newValue, oldValue) => {
@@ -5636,9 +5644,9 @@ function useBackButton(router, cb) {
5636
5644
 
5637
5645
  function useSelectLink(link, select) {
5638
5646
  watch(() => link.isActive?.value, isActive => {
5639
- if (link.isLink.value && isActive && select) {
5647
+ if (link.isLink.value && isActive != null && select) {
5640
5648
  nextTick(() => {
5641
- select(true);
5649
+ select(isActive);
5642
5650
  });
5643
5651
  }
5644
5652
  }, {
@@ -9252,6 +9260,7 @@ const makeVListGroupProps = propsFactory({
9252
9260
  type: IconValue,
9253
9261
  default: '$expand'
9254
9262
  },
9263
+ rawId: [String, Number],
9255
9264
  prependIcon: IconValue,
9256
9265
  appendIcon: IconValue,
9257
9266
  fluid: Boolean,
@@ -9273,13 +9282,12 @@ const VListGroup = genericComponent()({
9273
9282
  open,
9274
9283
  id: _id
9275
9284
  } = useNestedItem(() => props.value, true);
9276
- const id = computed(() => `v-list-group--id-${String(_id.value)}`);
9285
+ const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
9277
9286
  const list = useList();
9278
9287
  const {
9279
9288
  isBooted
9280
9289
  } = useSsrBoot();
9281
9290
  function onClick(e) {
9282
- e.stopPropagation();
9283
9291
  if (['INPUT', 'TEXTAREA'].includes(e.target?.tagName)) return;
9284
9292
  open(!isOpen.value, e);
9285
9293
  }
@@ -9797,9 +9805,10 @@ const VListChildren = genericComponent()({
9797
9805
  }) : undefined
9798
9806
  };
9799
9807
  const listGroupProps = VListGroup.filterProps(itemProps);
9800
- return children ? createVNode(VListGroup, mergeProps({
9801
- "value": itemProps?.value
9802
- }, listGroupProps), {
9808
+ return children ? createVNode(VListGroup, mergeProps(listGroupProps, {
9809
+ "value": props.returnObject ? item : itemProps?.value,
9810
+ "rawId": itemProps?.value
9811
+ }), {
9803
9812
  activator: _ref3 => {
9804
9813
  let {
9805
9814
  props: activatorProps
@@ -9978,7 +9987,7 @@ function useItems(props) {
9978
9987
  function transformItem$2(props, item) {
9979
9988
  const type = getPropertyFromItem(item, props.itemType, 'item');
9980
9989
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
9981
- const value = getPropertyFromItem(item, props.itemValue, undefined);
9990
+ const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
9982
9991
  const children = getPropertyFromItem(item, props.itemChildren);
9983
9992
  const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
9984
9993
  const _props = {
@@ -12327,6 +12336,16 @@ const VField = genericComponent()({
12327
12336
  }
12328
12337
  });
12329
12338
 
12339
+ function useAutofocus(props) {
12340
+ function onIntersect(isIntersecting, entries) {
12341
+ if (!props.autofocus || !isIntersecting) return;
12342
+ entries[0].target?.focus?.();
12343
+ }
12344
+ return {
12345
+ onIntersect
12346
+ };
12347
+ }
12348
+
12330
12349
  // Types
12331
12350
 
12332
12351
  const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
@@ -12373,6 +12392,9 @@ const VTextField = genericComponent()({
12373
12392
  focus,
12374
12393
  blur
12375
12394
  } = useFocus(props);
12395
+ const {
12396
+ onIntersect
12397
+ } = useAutofocus(props);
12376
12398
  const counterValue = computed(() => {
12377
12399
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
12378
12400
  });
@@ -12382,10 +12404,6 @@ const VTextField = genericComponent()({
12382
12404
  return props.counter;
12383
12405
  });
12384
12406
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
12385
- function onIntersect(isIntersecting, entries) {
12386
- if (!props.autofocus || !isIntersecting) return;
12387
- entries[0].target?.focus?.();
12388
- }
12389
12407
  const vInputRef = ref();
12390
12408
  const vFieldRef = ref();
12391
12409
  const inputRef = ref();
@@ -15477,6 +15495,7 @@ const VCarousel = genericComponent()({
15477
15495
  }) : createVNode(VBtn, mergeProps(item, props), null);
15478
15496
  })]
15479
15497
  })]), props.progress && createVNode(VProgressLinear, {
15498
+ "absolute": true,
15480
15499
  "class": "v-carousel__progress",
15481
15500
  "color": typeof props.progress === 'string' ? props.progress : undefined,
15482
15501
  "modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
@@ -22357,8 +22376,11 @@ function useCalendar(props) {
22357
22376
  }, v => adapter.getMonth(v));
22358
22377
  const weekDays = computed(() => {
22359
22378
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22360
- // Always generate all days, regardless of props.weekdays
22361
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22379
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22380
+ });
22381
+ const weekdayLabels = computed(() => {
22382
+ const labels = adapter.getWeekdays(props.firstDayOfWeek);
22383
+ return weekDays.value.map(day => labels[day]);
22362
22384
  });
22363
22385
  const weeksInMonth = computed(() => {
22364
22386
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -22439,7 +22461,7 @@ function useCalendar(props) {
22439
22461
  if (typeof props.allowedDates === 'function') {
22440
22462
  return !props.allowedDates(date);
22441
22463
  }
22442
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22464
+ return false;
22443
22465
  }
22444
22466
  return {
22445
22467
  displayValue,
@@ -22449,6 +22471,7 @@ function useCalendar(props) {
22449
22471
  model,
22450
22472
  weeksInMonth,
22451
22473
  weekDays,
22474
+ weekdayLabels,
22452
22475
  weekNumbers
22453
22476
  };
22454
22477
  }
@@ -22487,7 +22510,9 @@ const VDatePickerMonth = genericComponent()({
22487
22510
  const {
22488
22511
  daysInMonth,
22489
22512
  model,
22490
- weekNumbers
22513
+ weekNumbers,
22514
+ weekDays,
22515
+ weekdayLabels
22491
22516
  } = useCalendar(props);
22492
22517
  const adapter = useDate();
22493
22518
  const rangeStart = shallowRef();
@@ -22559,7 +22584,10 @@ const VDatePickerMonth = genericComponent()({
22559
22584
  }
22560
22585
  }
22561
22586
  useRender(() => createElementVNode("div", {
22562
- "class": "v-date-picker-month"
22587
+ "class": "v-date-picker-month",
22588
+ "style": {
22589
+ '--v-date-picker-days-in-week': weekDays.value.length
22590
+ }
22563
22591
  }, [props.showWeek && createElementVNode("div", {
22564
22592
  "key": "weeks",
22565
22593
  "class": "v-date-picker-month__weeks"
@@ -22575,7 +22603,7 @@ const VDatePickerMonth = genericComponent()({
22575
22603
  "ref": daysRef,
22576
22604
  "key": daysInMonth.value[0].date?.toString(),
22577
22605
  "class": "v-date-picker-month__days"
22578
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
22606
+ }, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => createElementVNode("div", {
22579
22607
  "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22580
22608
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22581
22609
  const slotProps = {
@@ -22751,9 +22779,7 @@ const VDatePickerYears = genericComponent()({
22751
22779
  const yearRef = templateRef();
22752
22780
  onMounted(async () => {
22753
22781
  await nextTick();
22754
- yearRef.el?.scrollIntoView({
22755
- block: 'center'
22756
- });
22782
+ yearRef.el?.focus();
22757
22783
  });
22758
22784
  function isYearAllowed(year) {
22759
22785
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
@@ -22889,8 +22915,16 @@ const VDatePicker = genericComponent()({
22889
22915
  return value && adapter.isValid(value) ? value : today;
22890
22916
  });
22891
22917
  const headerColor = toRef(() => props.headerColor ?? props.color);
22892
- const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22893
- const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22918
+ const _month = useProxiedModel(props, 'month');
22919
+ const month = computed({
22920
+ get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),
22921
+ set: v => _month.value = v
22922
+ });
22923
+ const _year = useProxiedModel(props, 'year');
22924
+ const year = computed({
22925
+ get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),
22926
+ set: v => _year.value = v
22927
+ });
22894
22928
  const isReversing = shallowRef(false);
22895
22929
  const header = computed(() => {
22896
22930
  if (props.multiple && model.value.length > 1) {
@@ -22974,9 +23008,9 @@ const VDatePicker = genericComponent()({
22974
23008
  } else {
22975
23009
  year.value++;
22976
23010
  month.value = 0;
22977
- onUpdateYear(year.value);
23011
+ onUpdateYear();
22978
23012
  }
22979
- onUpdateMonth(month.value);
23013
+ onUpdateMonth();
22980
23014
  }
22981
23015
  function onClickPrev() {
22982
23016
  if (month.value > 0) {
@@ -22984,9 +23018,9 @@ const VDatePicker = genericComponent()({
22984
23018
  } else {
22985
23019
  year.value--;
22986
23020
  month.value = 11;
22987
- onUpdateYear(year.value);
23021
+ onUpdateYear();
22988
23022
  }
22989
- onUpdateMonth(month.value);
23023
+ onUpdateMonth();
22990
23024
  }
22991
23025
  function onClickDate() {
22992
23026
  viewMode.value = 'month';
@@ -22997,13 +23031,11 @@ const VDatePicker = genericComponent()({
22997
23031
  function onClickYear() {
22998
23032
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
22999
23033
  }
23000
- function onUpdateMonth(value) {
23034
+ function onUpdateMonth() {
23001
23035
  if (viewMode.value === 'months') onClickMonth();
23002
- emit('update:month', value);
23003
23036
  }
23004
- function onUpdateYear(value) {
23037
+ function onUpdateYear() {
23005
23038
  if (viewMode.value === 'year') onClickYear();
23006
- emit('update:year', value);
23007
23039
  }
23008
23040
  watch(model, (val, oldVal) => {
23009
23041
  const arrBefore = wrapInArray(oldVal);
@@ -23015,11 +23047,11 @@ const VDatePicker = genericComponent()({
23015
23047
  const newYear = adapter.getYear(after);
23016
23048
  if (newMonth !== month.value) {
23017
23049
  month.value = newMonth;
23018
- onUpdateMonth(month.value);
23050
+ onUpdateMonth();
23019
23051
  }
23020
23052
  if (newYear !== year.value) {
23021
23053
  year.value = newYear;
23022
- onUpdateYear(year.value);
23054
+ onUpdateYear();
23023
23055
  }
23024
23056
  isReversing.value = adapter.isBefore(before, after);
23025
23057
  });
@@ -25173,6 +25205,8 @@ function useHold(_ref) {
25173
25205
  function holdStart(value) {
25174
25206
  holdStop();
25175
25207
  tick(value);
25208
+ window.addEventListener('pointerup', holdStop);
25209
+ document.addEventListener('blur', holdStop);
25176
25210
  timeout = window.setTimeout(() => {
25177
25211
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
25178
25212
  }, HOLD_DELAY);
@@ -25180,6 +25214,8 @@ function useHold(_ref) {
25180
25214
  function holdStop() {
25181
25215
  window.clearTimeout(timeout);
25182
25216
  window.clearInterval(interval);
25217
+ window.removeEventListener('pointerup', holdStop);
25218
+ document.removeEventListener('blur', holdStop);
25183
25219
  }
25184
25220
  function tick(value) {
25185
25221
  toggleUpDown(value === 'up');
@@ -25291,7 +25327,7 @@ const VNumberInput = genericComponent()({
25291
25327
  onClick: onControlClick,
25292
25328
  onPointerup: onControlMouseup,
25293
25329
  onPointerdown: onUpControlMousedown,
25294
- onPointercancel: onControlPointerCancel
25330
+ onPointercancel: onControlMouseup
25295
25331
  }
25296
25332
  };
25297
25333
  const decrementSlotProps = {
@@ -25299,7 +25335,7 @@ const VNumberInput = genericComponent()({
25299
25335
  onClick: onControlClick,
25300
25336
  onPointerup: onControlMouseup,
25301
25337
  onPointerdown: onDownControlMousedown,
25302
- onPointercancel: onControlPointerCancel
25338
+ onPointercancel: onControlMouseup
25303
25339
  }
25304
25340
  };
25305
25341
  watch(() => props.precision, () => formatInputValue());
@@ -25379,7 +25415,6 @@ const VNumberInput = genericComponent()({
25379
25415
  const el = e.currentTarget;
25380
25416
  el?.releasePointerCapture(e.pointerId);
25381
25417
  e.preventDefault();
25382
- e.stopPropagation();
25383
25418
  holdStop();
25384
25419
  }
25385
25420
  function onUpControlMousedown(e) {
@@ -25396,11 +25431,6 @@ const VNumberInput = genericComponent()({
25396
25431
  e.stopPropagation();
25397
25432
  holdStart('down');
25398
25433
  }
25399
- function onControlPointerCancel(e) {
25400
- const el = e.currentTarget;
25401
- el?.releasePointerCapture(e.pointerId);
25402
- holdStop();
25403
- }
25404
25434
  function clampModel() {
25405
25435
  if (controlsDisabled.value) return;
25406
25436
  if (!vTextFieldRef.value) return;
@@ -25450,7 +25480,7 @@ const VNumberInput = genericComponent()({
25450
25480
  "onClick": onControlClick,
25451
25481
  "onPointerdown": onUpControlMousedown,
25452
25482
  "onPointerup": onControlMouseup,
25453
- "onPointercancel": onControlPointerCancel,
25483
+ "onPointercancel": onControlMouseup,
25454
25484
  "size": controlNodeSize.value,
25455
25485
  "tabindex": "-1"
25456
25486
  }, null) : createVNode(VDefaultsProvider, {
@@ -25480,7 +25510,7 @@ const VNumberInput = genericComponent()({
25480
25510
  "onClick": onControlClick,
25481
25511
  "onPointerdown": onDownControlMousedown,
25482
25512
  "onPointerup": onControlMouseup,
25483
- "onPointercancel": onControlPointerCancel,
25513
+ "onPointercancel": onControlMouseup,
25484
25514
  "size": controlNodeSize.value,
25485
25515
  "tabindex": "-1"
25486
25516
  }, null) : createVNode(VDefaultsProvider, {
@@ -25627,6 +25657,21 @@ const VOtpInput = genericComponent()({
25627
25657
  const contentRef = ref();
25628
25658
  const inputRef = ref([]);
25629
25659
  const current = computed(() => inputRef.value[focusIndex.value]);
25660
+ const intersectScope = effectScope();
25661
+ intersectScope.run(() => {
25662
+ const {
25663
+ intersectionRef,
25664
+ isIntersecting
25665
+ } = useIntersectionObserver();
25666
+ watch(isIntersecting, v => {
25667
+ if (!v) return;
25668
+ intersectionRef.value?.focus();
25669
+ intersectScope.stop();
25670
+ });
25671
+ watchEffect(() => {
25672
+ intersectionRef.value = inputRef.value[0];
25673
+ });
25674
+ });
25630
25675
  function onInput() {
25631
25676
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
25632
25677
  // The following logic simulates the behavior of a number input.
@@ -28373,6 +28418,9 @@ const VTextarea = genericComponent()({
28373
28418
  focus,
28374
28419
  blur
28375
28420
  } = useFocus(props);
28421
+ const {
28422
+ onIntersect
28423
+ } = useAutofocus(props);
28376
28424
  const counterValue = computed(() => {
28377
28425
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
28378
28426
  });
@@ -28381,10 +28429,6 @@ const VTextarea = genericComponent()({
28381
28429
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
28382
28430
  return props.counter;
28383
28431
  });
28384
- function onIntersect(isIntersecting, entries) {
28385
- if (!props.autofocus || !isIntersecting) return;
28386
- entries[0].target?.focus?.();
28387
- }
28388
28432
  const vInputRef = ref();
28389
28433
  const vFieldRef = ref();
28390
28434
  const controlHeight = shallowRef('');
@@ -29464,7 +29508,7 @@ function createVuetify$1() {
29464
29508
  };
29465
29509
  });
29466
29510
  }
29467
- const version$1 = "3.8.9";
29511
+ const version$1 = "3.8.11";
29468
29512
  createVuetify$1.version = version$1;
29469
29513
 
29470
29514
  // Vue's inject() can only be used in setup
@@ -29489,7 +29533,7 @@ const createVuetify = function () {
29489
29533
  ...options
29490
29534
  });
29491
29535
  };
29492
- const version = "3.8.9";
29536
+ const version = "3.8.11";
29493
29537
  createVuetify.version = version;
29494
29538
 
29495
29539
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };