vuetify 3.9.5 → 3.9.7

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 (107) hide show
  1. package/dist/json/attributes.json +3244 -3236
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +162 -162
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +6419 -6311
  6. package/dist/vuetify-labs.cjs +183 -127
  7. package/dist/vuetify-labs.css +3841 -3706
  8. package/dist/vuetify-labs.d.ts +173 -75
  9. package/dist/vuetify-labs.esm.js +183 -127
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +183 -127
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +78 -44
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2171 -2039
  16. package/dist/vuetify.d.ts +70 -70
  17. package/dist/vuetify.esm.js +78 -44
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +78 -44
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +67 -60
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.css +12 -0
  25. package/lib/components/VAlert/VAlert.sass +13 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.css +2 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.sass +3 -2
  28. package/lib/components/VBtn/VBtn.css +10 -0
  29. package/lib/components/VBtn/VBtn.sass +9 -0
  30. package/lib/components/VCard/VCard.css +11 -0
  31. package/lib/components/VCard/VCard.sass +9 -0
  32. package/lib/components/VChip/VChip.css +6 -0
  33. package/lib/components/VChip/VChip.sass +5 -0
  34. package/lib/components/VChipGroup/VChipGroup.css +25 -0
  35. package/lib/components/VChipGroup/VChipGroup.sass +23 -0
  36. package/lib/components/VCombobox/VCombobox.css +2 -1
  37. package/lib/components/VCombobox/VCombobox.sass +3 -2
  38. package/lib/components/VDatePicker/VDatePicker.js +10 -4
  39. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  40. package/lib/components/VDatePicker/VDatePickerYears.js +18 -8
  41. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  42. package/lib/components/VFileInput/VFileInput.js +4 -2
  43. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  44. package/lib/components/VList/VListItem.css +30 -0
  45. package/lib/components/VList/VListItem.d.ts +3 -3
  46. package/lib/components/VList/VListItem.sass +29 -0
  47. package/lib/components/VNumberInput/VNumberInput.js +6 -6
  48. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  49. package/lib/components/VOtpInput/VOtpInput.js +9 -2
  50. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  51. package/lib/components/VProgressLinear/VProgressLinear.css +3 -3
  52. package/lib/components/VProgressLinear/VProgressLinear.js +5 -6
  53. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  54. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -3
  55. package/lib/components/VSelect/VSelect.css +5 -1
  56. package/lib/components/VSelect/VSelect.sass +6 -2
  57. package/lib/components/VSlideGroup/VSlideGroup.js +5 -4
  58. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  59. package/lib/components/VSnackbar/VSnackbar.css +5 -0
  60. package/lib/components/VSnackbar/VSnackbar.sass +3 -0
  61. package/lib/components/VSparkline/VBarline.js +2 -2
  62. package/lib/components/VSparkline/VBarline.js.map +1 -1
  63. package/lib/components/VSparkline/VTrendline.js +3 -0
  64. package/lib/components/VSparkline/VTrendline.js.map +1 -1
  65. package/lib/components/VTextField/VTextField.js +2 -2
  66. package/lib/components/VTextField/VTextField.js.map +1 -1
  67. package/lib/components/VTextarea/VTextarea.js +4 -2
  68. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  69. package/lib/components/VTimeline/VTimeline.css +22 -0
  70. package/lib/components/VTimeline/VTimeline.sass +12 -0
  71. package/lib/components/VTreeview/VTreeviewItem.css +13 -8
  72. package/lib/components/VTreeview/VTreeviewItem.d.ts +9 -9
  73. package/lib/components/VTreeview/VTreeviewItem.sass +12 -8
  74. package/lib/composables/filter.js +3 -1
  75. package/lib/composables/filter.js.map +1 -1
  76. package/lib/composables/nested/nested.d.ts +1 -1
  77. package/lib/composables/nested/nested.js +5 -2
  78. package/lib/composables/nested/nested.js.map +1 -1
  79. package/lib/composables/rounded.js +3 -3
  80. package/lib/composables/rounded.js.map +1 -1
  81. package/lib/directives/touch/index.js +2 -2
  82. package/lib/directives/touch/index.js.map +1 -1
  83. package/lib/entry-bundler.js +1 -1
  84. package/lib/framework.d.ts +58 -58
  85. package/lib/framework.js +1 -1
  86. package/lib/labs/VDateInput/VDateInput.d.ts +78 -3
  87. package/lib/labs/VDateInput/VDateInput.js +3 -1
  88. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  89. package/lib/labs/VIconBtn/VIconBtn.js +1 -1
  90. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  91. package/lib/labs/VPie/VPie.css +3 -0
  92. package/lib/labs/VPie/VPie.js +71 -29
  93. package/lib/labs/VPie/VPie.js.map +1 -1
  94. package/lib/labs/VPie/VPie.sass +3 -0
  95. package/lib/labs/VPie/VPieSegment.d.ts +25 -2
  96. package/lib/labs/VPie/VPieSegment.js +11 -6
  97. package/lib/labs/VPie/VPieSegment.js.map +1 -1
  98. package/lib/labs/VPie/VPieTooltip.d.ts +10 -0
  99. package/lib/labs/VPie/VPieTooltip.js +4 -22
  100. package/lib/labs/VPie/VPieTooltip.js.map +1 -1
  101. package/lib/labs/VPie/types.d.ts +1 -0
  102. package/lib/labs/VPie/types.js.map +1 -1
  103. package/lib/labs/VVideo/VVideo.css +4 -4
  104. package/lib/labs/VVideo/VVideo.js +24 -33
  105. package/lib/labs/VVideo/VVideo.js.map +1 -1
  106. package/lib/labs/VVideo/VVideo.sass +4 -4
  107. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.5
2
+ * Vuetify v3.9.7
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3965,14 +3965,14 @@ function useRounded(props) {
3965
3965
  const rounded = isRef(props) ? props.value : props.rounded;
3966
3966
  const tile = isRef(props) ? props.value : props.tile;
3967
3967
  const classes = [];
3968
- if (rounded === true || rounded === '') {
3968
+ if (tile || rounded === false) {
3969
+ classes.push('rounded-0');
3970
+ } else if (rounded === true || rounded === '') {
3969
3971
  classes.push(`${name}--rounded`);
3970
3972
  } else if (typeof rounded === 'string' || rounded === 0) {
3971
3973
  for (const value of String(rounded).split(' ')) {
3972
3974
  classes.push(`rounded-${value}`);
3973
3975
  }
3974
- } else if (tile || rounded === false) {
3975
- classes.push('rounded-0');
3976
3976
  }
3977
3977
  return classes;
3978
3978
  });
@@ -5604,7 +5604,6 @@ const VProgressLinear = genericComponent()({
5604
5604
  const normalizedValue = computed(() => clamp(parseFloat(progress.value) / max.value * 100, 0, 100));
5605
5605
  const isReversed = computed(() => isRtl.value !== props.reverse);
5606
5606
  const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
5607
- const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
5608
5607
  function handleClick(e) {
5609
5608
  if (!intersectionRef.value) return;
5610
5609
  const {
@@ -5653,13 +5652,13 @@ const VProgressLinear = genericComponent()({
5653
5652
  '--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1))
5654
5653
  }
5655
5654
  }, null), createElementVNode("div", {
5656
- "class": normalizeClass(['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
5655
+ "class": normalizeClass(['v-progress-linear__background', backgroundColorClasses.value]),
5657
5656
  "style": normalizeStyle([backgroundColorStyles.value, {
5658
5657
  opacity: parseFloat(props.bgOpacity),
5659
5658
  width: props.stream ? 0 : undefined
5660
5659
  }])
5661
5660
  }, null), createElementVNode("div", {
5662
- "class": normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5661
+ "class": normalizeClass(['v-progress-linear__buffer', bufferColorClasses.value]),
5663
5662
  "style": normalizeStyle([bufferColorStyles.value, {
5664
5663
  opacity: parseFloat(props.bufferOpacity),
5665
5664
  width: convertToUnit(normalizedBuffer.value, '%')
@@ -5668,7 +5667,7 @@ const VProgressLinear = genericComponent()({
5668
5667
  "name": transition.value
5669
5668
  }, {
5670
5669
  default: () => [!props.indeterminate ? createElementVNode("div", {
5671
- "class": normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5670
+ "class": normalizeClass(['v-progress-linear__determinate', barColorClasses.value]),
5672
5671
  "style": normalizeStyle([barColorStyles.value, {
5673
5672
  width: convertToUnit(normalizedValue.value, '%')
5674
5673
  }])
@@ -5676,7 +5675,7 @@ const VProgressLinear = genericComponent()({
5676
5675
  "class": "v-progress-linear__indeterminate"
5677
5676
  }, [['long', 'short'].map(bar => createElementVNode("div", {
5678
5677
  "key": bar,
5679
- "class": normalizeClass(['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5678
+ "class": normalizeClass(['v-progress-linear__indeterminate', bar, barColorClasses.value]),
5680
5679
  "style": normalizeStyle(barColorStyles.value)
5681
5680
  }, null))])]
5682
5681
  }), slots.default && createElementVNode("div", {
@@ -8448,6 +8447,7 @@ const VSlideGroup = genericComponent()({
8448
8447
  select: group.select,
8449
8448
  isSelected: group.isSelected
8450
8449
  }));
8450
+ const hasOverflowOrScroll = computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0);
8451
8451
  const hasAffixes = computed(() => {
8452
8452
  switch (props.showArrows) {
8453
8453
  // Always show arrows on desktop & mobile
@@ -8461,17 +8461,17 @@ const VSlideGroup = genericComponent()({
8461
8461
  // Show arrows on mobile when overflowing.
8462
8462
  // This matches the default 2.2 behavior
8463
8463
  case true:
8464
- return isOverflowing.value || Math.abs(scrollOffset.value) > 0;
8464
+ return hasOverflowOrScroll.value;
8465
8465
 
8466
8466
  // Always show on mobile
8467
8467
  case 'mobile':
8468
- return mobile.value || isOverflowing.value || Math.abs(scrollOffset.value) > 0;
8468
+ return mobile.value || hasOverflowOrScroll.value;
8469
8469
 
8470
8470
  // https://material.io/components/tabs#scrollable-tabs
8471
8471
  // Always show arrows when
8472
8472
  // overflowed on desktop
8473
8473
  default:
8474
- return !mobile.value && (isOverflowing.value || Math.abs(scrollOffset.value) > 0);
8474
+ return !mobile.value && hasOverflowOrScroll.value;
8475
8475
  }
8476
8476
  });
8477
8477
  const hasPrev = computed(() => {
@@ -8479,7 +8479,7 @@ const VSlideGroup = genericComponent()({
8479
8479
  return Math.abs(scrollOffset.value) > 1;
8480
8480
  });
8481
8481
  const hasNext = computed(() => {
8482
- if (!containerRef.value) return false;
8482
+ if (!containerRef.value || !hasOverflowOrScroll.value) return false;
8483
8483
  const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
8484
8484
  const clientSize = getClientSize(isHorizontal.value, containerRef.el);
8485
8485
  const scrollSizeMax = scrollSize - clientSize;
@@ -9476,7 +9476,7 @@ const useNested = props => {
9476
9476
  function getPath(id) {
9477
9477
  const path = [];
9478
9478
  let parent = toRaw(id);
9479
- while (parent != null) {
9479
+ while (parent !== undefined) {
9480
9480
  path.unshift(parent);
9481
9481
  parent = parents.value.get(parent);
9482
9482
  }
@@ -9622,7 +9622,10 @@ const useNested = props => {
9622
9622
  const useNestedItem = (id, isDisabled, isGroup) => {
9623
9623
  const parent = inject$1(VNestedSymbol, emptyNested);
9624
9624
  const uidSymbol = Symbol('nested item');
9625
- const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol);
9625
+ const computedId = computed(() => {
9626
+ const idValue = toRaw(toValue(id));
9627
+ return idValue !== undefined ? idValue : uidSymbol;
9628
+ });
9626
9629
  const item = {
9627
9630
  ...parent,
9628
9631
  id: computedId,
@@ -12782,7 +12785,7 @@ const VTextField = genericComponent()({
12782
12785
  "onClick:prependInner": props['onClick:prependInner'],
12783
12786
  "onClick:appendInner": props['onClick:appendInner'],
12784
12787
  "role": props.role
12785
- }, fieldProps, {
12788
+ }, omit(fieldProps, ['onClick:clear']), {
12786
12789
  "id": id.value,
12787
12790
  "active": isActive.value || isDirty.value,
12788
12791
  "dirty": isDirty.value || props.dirty,
@@ -13833,11 +13836,13 @@ function filterItems(items, query, options) {
13833
13836
  const defaultMatches = {};
13834
13837
  let match = -1;
13835
13838
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13839
+ let hasOnlyCustomFilters = false;
13836
13840
  if (typeof item === 'object') {
13837
13841
  if (item.type === 'divider' || item.type === 'subheader') {
13838
13842
  continue;
13839
13843
  }
13840
13844
  const filterKeys = keys || Object.keys(transformed);
13845
+ hasOnlyCustomFilters = filterKeys.length === customFiltersLength;
13841
13846
  for (const key of filterKeys) {
13842
13847
  const value = getPropertyFromItem(transformed, key);
13843
13848
  const keyFilter = options?.customKeyFilter?.[key];
@@ -13858,7 +13863,7 @@ function filterItems(items, query, options) {
13858
13863
  const customMatchesLength = Object.keys(customMatches).length;
13859
13864
  if (!defaultMatchesLength && !customMatchesLength) continue;
13860
13865
  if (options?.filterMode === 'union' && customMatchesLength !== customFiltersLength && !defaultMatchesLength) continue;
13861
- if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength)) continue;
13866
+ if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength && customFiltersLength > 0 && !hasOnlyCustomFilters)) continue;
13862
13867
  }
13863
13868
  array.push({
13864
13869
  index: i,
@@ -15532,7 +15537,7 @@ function mounted$3(el, binding) {
15532
15537
  };
15533
15538
  const uid = binding.instance?.$.uid; // TODO: use custom uid generator
15534
15539
 
15535
- if (!target || !uid) return;
15540
+ if (!target || uid === undefined) return;
15536
15541
  const handlers = createHandlers(binding.value);
15537
15542
  target._touchHandlers = target._touchHandlers ?? Object.create(null);
15538
15543
  target._touchHandlers[uid] = handlers;
@@ -15543,7 +15548,7 @@ function mounted$3(el, binding) {
15543
15548
  function unmounted$3(el, binding) {
15544
15549
  const target = binding.value?.parent ? el.parentElement : el;
15545
15550
  const uid = binding.instance?.$.uid;
15546
- if (!target?._touchHandlers || !uid) return;
15551
+ if (!target?._touchHandlers || uid === undefined) return;
15547
15552
  const handlers = target._touchHandlers[uid];
15548
15553
  keys(handlers).forEach(eventName => {
15549
15554
  target.removeEventListener(eventName, handlers[eventName]);
@@ -23556,6 +23561,9 @@ const makeVDatePickerYearsProps = propsFactory({
23556
23561
  const VDatePickerYears = genericComponent()({
23557
23562
  name: 'VDatePickerYears',
23558
23563
  props: makeVDatePickerYearsProps(),
23564
+ directives: {
23565
+ vIntersect: Intersect
23566
+ },
23559
23567
  emits: {
23560
23568
  'update:modelValue': year => true
23561
23569
  },
@@ -23592,10 +23600,12 @@ const VDatePickerYears = genericComponent()({
23592
23600
  model.value = model.value ?? adapter.getYear(adapter.date());
23593
23601
  });
23594
23602
  const yearRef = templateRef();
23595
- onMounted(async () => {
23596
- await nextTick();
23603
+ function focusSelectedYear() {
23597
23604
  yearRef.el?.focus();
23598
- });
23605
+ yearRef.el?.scrollIntoView({
23606
+ block: 'center'
23607
+ });
23608
+ }
23599
23609
  function isYearAllowed(year) {
23600
23610
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
23601
23611
  return props.allowedYears.includes(year);
@@ -23605,7 +23615,7 @@ const VDatePickerYears = genericComponent()({
23605
23615
  }
23606
23616
  return true;
23607
23617
  }
23608
- useRender(() => createElementVNode("div", {
23618
+ useRender(() => withDirectives(createElementVNode("div", {
23609
23619
  "class": "v-date-picker-years",
23610
23620
  "style": {
23611
23621
  height: convertToUnit(props.height)
@@ -23636,7 +23646,11 @@ const VDatePickerYears = genericComponent()({
23636
23646
  }) ?? createVNode(VBtn, mergeProps({
23637
23647
  "key": "month"
23638
23648
  }, btnProps), null);
23639
- })])]));
23649
+ })])]), [[Intersect, {
23650
+ handler: focusSelectedYear
23651
+ }, null, {
23652
+ once: true
23653
+ }]]));
23640
23654
  return {};
23641
23655
  }
23642
23656
  });
@@ -23777,6 +23791,12 @@ const VDatePicker = genericComponent()({
23777
23791
  }
23778
23792
  return targets;
23779
23793
  });
23794
+ const allowedYears = computed(() => {
23795
+ return props.allowedYears || isYearAllowed;
23796
+ });
23797
+ const allowedMonths = computed(() => {
23798
+ return props.allowedMonths || isMonthAllowed;
23799
+ });
23780
23800
  function isAllowedInRange(start, end) {
23781
23801
  const allowedDates = props.allowedDates;
23782
23802
  if (typeof allowedDates !== 'function') return true;
@@ -23786,7 +23806,7 @@ const VDatePicker = genericComponent()({
23786
23806
  }
23787
23807
  return false;
23788
23808
  }
23789
- function allowedYears(year) {
23809
+ function isYearAllowed(year) {
23790
23810
  if (typeof props.allowedDates === 'function') {
23791
23811
  const startOfYear = adapter.parseISO(`${year}-01-01`);
23792
23812
  return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
@@ -23799,7 +23819,7 @@ const VDatePicker = genericComponent()({
23799
23819
  }
23800
23820
  return true;
23801
23821
  }
23802
- function allowedMonths(month) {
23822
+ function isMonthAllowed(month) {
23803
23823
  if (typeof props.allowedDates === 'function') {
23804
23824
  const monthTwoDigits = String(month + 1).padStart(2, '0');
23805
23825
  const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`);
@@ -23927,7 +23947,7 @@ const VDatePicker = genericComponent()({
23927
23947
  "min": minDate.value,
23928
23948
  "max": maxDate.value,
23929
23949
  "year": year.value,
23930
- "allowedMonths": allowedMonths
23950
+ "allowedMonths": allowedMonths.value
23931
23951
  }), {
23932
23952
  month: slots.month
23933
23953
  }) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
@@ -23937,7 +23957,7 @@ const VDatePicker = genericComponent()({
23937
23957
  "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
23938
23958
  "min": minDate.value,
23939
23959
  "max": maxDate.value,
23940
- "allowedYears": allowedYears
23960
+ "allowedYears": allowedYears.value
23941
23961
  }), {
23942
23962
  year: slots.year
23943
23963
  }) : createVNode(VDatePickerMonth, mergeProps({
@@ -24672,7 +24692,10 @@ const VFileInput = genericComponent()({
24672
24692
  modelValue: _,
24673
24693
  ...inputProps
24674
24694
  } = VInput.filterProps(props);
24675
- const fieldProps = VField.filterProps(props);
24695
+ const fieldProps = {
24696
+ ...VField.filterProps(props),
24697
+ 'onClick:clear': onClear
24698
+ };
24676
24699
  return createVNode(VInput, mergeProps({
24677
24700
  "ref": vInputRef,
24678
24701
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -24703,7 +24726,6 @@ const VFileInput = genericComponent()({
24703
24726
  "prependIcon": props.prependIcon,
24704
24727
  "onMousedown": onControlMousedown,
24705
24728
  "onClick": onControlClick,
24706
- "onClick:clear": onClear,
24707
24729
  "onClick:prependInner": props['onClick:prependInner'],
24708
24730
  "onClick:appendInner": props['onClick:appendInner']
24709
24731
  }, fieldProps, {
@@ -26394,7 +26416,6 @@ const VNumberInput = genericComponent()({
26394
26416
  "aria-hidden": "true",
26395
26417
  "data-testid": "increment",
26396
26418
  "disabled": !canIncrease.value,
26397
- "flat": true,
26398
26419
  "height": controlNodeDefaultHeight.value,
26399
26420
  "icon": incrementIcon.value,
26400
26421
  "key": "increment-btn",
@@ -26403,16 +26424,17 @@ const VNumberInput = genericComponent()({
26403
26424
  "onPointerup": onControlMouseup,
26404
26425
  "onPointercancel": onControlMouseup,
26405
26426
  "size": controlNodeSize.value,
26427
+ "variant": "text",
26406
26428
  "tabindex": "-1"
26407
26429
  }, null) : createVNode(VDefaultsProvider, {
26408
26430
  "key": "increment-defaults",
26409
26431
  "defaults": {
26410
26432
  VBtn: {
26411
26433
  disabled: !canIncrease.value,
26412
- flat: true,
26413
26434
  height: controlNodeDefaultHeight.value,
26414
26435
  size: controlNodeSize.value,
26415
- icon: incrementIcon.value
26436
+ icon: incrementIcon.value,
26437
+ variant: 'text'
26416
26438
  }
26417
26439
  }
26418
26440
  }, {
@@ -26424,7 +26446,6 @@ const VNumberInput = genericComponent()({
26424
26446
  "aria-hidden": "true",
26425
26447
  "data-testid": "decrement",
26426
26448
  "disabled": !canDecrease.value,
26427
- "flat": true,
26428
26449
  "height": controlNodeDefaultHeight.value,
26429
26450
  "icon": decrementIcon.value,
26430
26451
  "key": "decrement-btn",
@@ -26433,16 +26454,17 @@ const VNumberInput = genericComponent()({
26433
26454
  "onPointerup": onControlMouseup,
26434
26455
  "onPointercancel": onControlMouseup,
26435
26456
  "size": controlNodeSize.value,
26457
+ "variant": "text",
26436
26458
  "tabindex": "-1"
26437
26459
  }, null) : createVNode(VDefaultsProvider, {
26438
26460
  "key": "decrement-defaults",
26439
26461
  "defaults": {
26440
26462
  VBtn: {
26441
26463
  disabled: !canDecrease.value,
26442
- flat: true,
26443
26464
  height: controlNodeDefaultHeight.value,
26444
26465
  size: controlNodeSize.value,
26445
- icon: decrementIcon.value
26466
+ icon: decrementIcon.value,
26467
+ variant: 'text'
26446
26468
  }
26447
26469
  }
26448
26470
  }, {
@@ -26578,6 +26600,7 @@ const VOtpInput = genericComponent()({
26578
26600
  const contentRef = ref();
26579
26601
  const inputRef = ref([]);
26580
26602
  const current = computed(() => inputRef.value[focusIndex.value]);
26603
+ let _isComposing = false;
26581
26604
  useToggleScope(() => props.autofocus, () => {
26582
26605
  const intersectScope = effectScope();
26583
26606
  intersectScope.run(() => {
@@ -26602,6 +26625,7 @@ const VOtpInput = genericComponent()({
26602
26625
  current.value.value = '';
26603
26626
  return;
26604
26627
  }
26628
+ if (_isComposing) return;
26605
26629
  const array = model.value.slice();
26606
26630
  const value = current.value.value;
26607
26631
  array[focusIndex.value] = value;
@@ -26614,6 +26638,10 @@ const VOtpInput = genericComponent()({
26614
26638
  model.value = array;
26615
26639
  if (target) focusChild(contentRef.value, target);
26616
26640
  }
26641
+ function onCompositionend() {
26642
+ _isComposing = false;
26643
+ onInput();
26644
+ }
26617
26645
  function onKeydown(e) {
26618
26646
  const array = model.value.slice();
26619
26647
  const index = focusIndex.value;
@@ -26648,7 +26676,7 @@ const VOtpInput = genericComponent()({
26648
26676
  const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
26649
26677
  if (isValidNumber(clipboardText)) return;
26650
26678
  model.value = clipboardText.split('');
26651
- inputRef.value?.[finalIndex].focus();
26679
+ focusIndex.value = finalIndex;
26652
26680
  }
26653
26681
  function reset() {
26654
26682
  model.value = [];
@@ -26678,7 +26706,6 @@ const VOtpInput = genericComponent()({
26678
26706
  });
26679
26707
  watch(model, val => {
26680
26708
  if (val.length === length.value) {
26681
- focusIndex.value = length.value - 1;
26682
26709
  emit('finish', val.join(''));
26683
26710
  }
26684
26711
  }, {
@@ -26727,6 +26754,8 @@ const VOtpInput = genericComponent()({
26727
26754
  "onFocus": e => onFocus(e, i),
26728
26755
  "onBlur": onBlur,
26729
26756
  "onKeydown": onKeydown,
26757
+ "onCompositionstart": () => _isComposing = true,
26758
+ "onCompositionend": onCompositionend,
26730
26759
  "onPaste": event => onPaste(i, event)
26731
26760
  }, null);
26732
26761
  }
@@ -27951,7 +27980,7 @@ const VBarline = genericComponent()({
27951
27980
  let minValue = props.min != null ? Number(props.min) : Math.min(...values);
27952
27981
  if (minValue > 0 && props.min == null) minValue = 0;
27953
27982
  if (maxValue < 0 && props.max == null) maxValue = 0;
27954
- const gridX = maxX / totalValues;
27983
+ const gridX = maxX / (totalValues === 1 ? 2 : totalValues);
27955
27984
  const gridY = (maxY - minY) / (maxValue - minValue || 1);
27956
27985
  const horizonY = maxY - Math.abs(minValue * gridY);
27957
27986
  return values.map((value, index) => {
@@ -27982,7 +28011,7 @@ const VBarline = genericComponent()({
27982
28011
  return labels;
27983
28012
  });
27984
28013
  const bars = computed(() => genBars(items.value, boundary.value));
27985
- const offsetX = computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
28014
+ const offsetX = computed(() => bars.value.length === 1 ? (boundary.value.maxX - lineWidth.value) / 2 : (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
27986
28015
  const smooth = computed(() => typeof props.smooth === 'boolean' ? props.smooth ? 2 : 0 : Number(props.smooth));
27987
28016
  useRender(() => {
27988
28017
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
@@ -28133,6 +28162,9 @@ const VTrendline = genericComponent()({
28133
28162
  minY,
28134
28163
  maxY
28135
28164
  } = boundary;
28165
+ if (values.length === 1) {
28166
+ values = [values[0], values[0]];
28167
+ }
28136
28168
  const totalValues = values.length;
28137
28169
  const maxValue = props.max != null ? Number(props.max) : Math.max(...values);
28138
28170
  const minValue = props.min != null ? Number(props.min) : Math.min(...values);
@@ -29447,7 +29479,10 @@ const VTextarea = genericComponent()({
29447
29479
  modelValue: _,
29448
29480
  ...inputProps
29449
29481
  } = VInput.filterProps(props);
29450
- const fieldProps = VField.filterProps(props);
29482
+ const fieldProps = {
29483
+ ...VField.filterProps(props),
29484
+ 'onClick:clear': onClear
29485
+ };
29451
29486
  return createVNode(VInput, mergeProps({
29452
29487
  "ref": vInputRef,
29453
29488
  "modelValue": model.value,
@@ -29483,7 +29518,6 @@ const VTextarea = genericComponent()({
29483
29518
  },
29484
29519
  "onClick": onControlClick,
29485
29520
  "onMousedown": onControlMousedown,
29486
- "onClick:clear": onClear,
29487
29521
  "onClick:prependInner": props['onClick:prependInner'],
29488
29522
  "onClick:appendInner": props['onClick:appendInner']
29489
29523
  }, fieldProps, {
@@ -31540,7 +31574,7 @@ function createVuetify$1() {
31540
31574
  };
31541
31575
  });
31542
31576
  }
31543
- const version$1 = "3.9.5";
31577
+ const version$1 = "3.9.7";
31544
31578
  createVuetify$1.version = version$1;
31545
31579
 
31546
31580
  // Vue's inject() can only be used in setup
@@ -31565,7 +31599,7 @@ const createVuetify = function () {
31565
31599
  ...options
31566
31600
  });
31567
31601
  };
31568
- const version = "3.9.5";
31602
+ const version = "3.9.7";
31569
31603
  createVuetify.version = version;
31570
31604
 
31571
31605
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };