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
package/dist/vuetify.cjs CHANGED
@@ -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
  */
@@ -3969,14 +3969,14 @@
3969
3969
  const rounded = vue.isRef(props) ? props.value : props.rounded;
3970
3970
  const tile = vue.isRef(props) ? props.value : props.tile;
3971
3971
  const classes = [];
3972
- if (rounded === true || rounded === '') {
3972
+ if (tile || rounded === false) {
3973
+ classes.push('rounded-0');
3974
+ } else if (rounded === true || rounded === '') {
3973
3975
  classes.push(`${name}--rounded`);
3974
3976
  } else if (typeof rounded === 'string' || rounded === 0) {
3975
3977
  for (const value of String(rounded).split(' ')) {
3976
3978
  classes.push(`rounded-${value}`);
3977
3979
  }
3978
- } else if (tile || rounded === false) {
3979
- classes.push('rounded-0');
3980
3980
  }
3981
3981
  return classes;
3982
3982
  });
@@ -5608,7 +5608,6 @@
5608
5608
  const normalizedValue = vue.computed(() => clamp(parseFloat(progress.value) / max.value * 100, 0, 100));
5609
5609
  const isReversed = vue.computed(() => isRtl.value !== props.reverse);
5610
5610
  const transition = vue.computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
5611
- const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
5612
5611
  function handleClick(e) {
5613
5612
  if (!intersectionRef.value) return;
5614
5613
  const {
@@ -5657,13 +5656,13 @@
5657
5656
  '--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1))
5658
5657
  }
5659
5658
  }, null), vue.createElementVNode("div", {
5660
- "class": vue.normalizeClass(['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
5659
+ "class": vue.normalizeClass(['v-progress-linear__background', backgroundColorClasses.value]),
5661
5660
  "style": vue.normalizeStyle([backgroundColorStyles.value, {
5662
5661
  opacity: parseFloat(props.bgOpacity),
5663
5662
  width: props.stream ? 0 : undefined
5664
5663
  }])
5665
5664
  }, null), vue.createElementVNode("div", {
5666
- "class": vue.normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5665
+ "class": vue.normalizeClass(['v-progress-linear__buffer', bufferColorClasses.value]),
5667
5666
  "style": vue.normalizeStyle([bufferColorStyles.value, {
5668
5667
  opacity: parseFloat(props.bufferOpacity),
5669
5668
  width: convertToUnit(normalizedBuffer.value, '%')
@@ -5672,7 +5671,7 @@
5672
5671
  "name": transition.value
5673
5672
  }, {
5674
5673
  default: () => [!props.indeterminate ? vue.createElementVNode("div", {
5675
- "class": vue.normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5674
+ "class": vue.normalizeClass(['v-progress-linear__determinate', barColorClasses.value]),
5676
5675
  "style": vue.normalizeStyle([barColorStyles.value, {
5677
5676
  width: convertToUnit(normalizedValue.value, '%')
5678
5677
  }])
@@ -5680,7 +5679,7 @@
5680
5679
  "class": "v-progress-linear__indeterminate"
5681
5680
  }, [['long', 'short'].map(bar => vue.createElementVNode("div", {
5682
5681
  "key": bar,
5683
- "class": vue.normalizeClass(['v-progress-linear__indeterminate', bar, !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5682
+ "class": vue.normalizeClass(['v-progress-linear__indeterminate', bar, barColorClasses.value]),
5684
5683
  "style": vue.normalizeStyle(barColorStyles.value)
5685
5684
  }, null))])]
5686
5685
  }), slots.default && vue.createElementVNode("div", {
@@ -8452,6 +8451,7 @@
8452
8451
  select: group.select,
8453
8452
  isSelected: group.isSelected
8454
8453
  }));
8454
+ const hasOverflowOrScroll = vue.computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0);
8455
8455
  const hasAffixes = vue.computed(() => {
8456
8456
  switch (props.showArrows) {
8457
8457
  // Always show arrows on desktop & mobile
@@ -8465,17 +8465,17 @@
8465
8465
  // Show arrows on mobile when overflowing.
8466
8466
  // This matches the default 2.2 behavior
8467
8467
  case true:
8468
- return isOverflowing.value || Math.abs(scrollOffset.value) > 0;
8468
+ return hasOverflowOrScroll.value;
8469
8469
 
8470
8470
  // Always show on mobile
8471
8471
  case 'mobile':
8472
- return mobile.value || isOverflowing.value || Math.abs(scrollOffset.value) > 0;
8472
+ return mobile.value || hasOverflowOrScroll.value;
8473
8473
 
8474
8474
  // https://material.io/components/tabs#scrollable-tabs
8475
8475
  // Always show arrows when
8476
8476
  // overflowed on desktop
8477
8477
  default:
8478
- return !mobile.value && (isOverflowing.value || Math.abs(scrollOffset.value) > 0);
8478
+ return !mobile.value && hasOverflowOrScroll.value;
8479
8479
  }
8480
8480
  });
8481
8481
  const hasPrev = vue.computed(() => {
@@ -8483,7 +8483,7 @@
8483
8483
  return Math.abs(scrollOffset.value) > 1;
8484
8484
  });
8485
8485
  const hasNext = vue.computed(() => {
8486
- if (!containerRef.value) return false;
8486
+ if (!containerRef.value || !hasOverflowOrScroll.value) return false;
8487
8487
  const scrollSize = getScrollSize(isHorizontal.value, containerRef.el);
8488
8488
  const clientSize = getClientSize(isHorizontal.value, containerRef.el);
8489
8489
  const scrollSizeMax = scrollSize - clientSize;
@@ -9480,7 +9480,7 @@
9480
9480
  function getPath(id) {
9481
9481
  const path = [];
9482
9482
  let parent = vue.toRaw(id);
9483
- while (parent != null) {
9483
+ while (parent !== undefined) {
9484
9484
  path.unshift(parent);
9485
9485
  parent = parents.value.get(parent);
9486
9486
  }
@@ -9626,7 +9626,10 @@
9626
9626
  const useNestedItem = (id, isDisabled, isGroup) => {
9627
9627
  const parent = vue.inject(VNestedSymbol, emptyNested);
9628
9628
  const uidSymbol = Symbol('nested item');
9629
- const computedId = vue.computed(() => vue.toRaw(vue.toValue(id)) ?? uidSymbol);
9629
+ const computedId = vue.computed(() => {
9630
+ const idValue = vue.toRaw(vue.toValue(id));
9631
+ return idValue !== undefined ? idValue : uidSymbol;
9632
+ });
9630
9633
  const item = {
9631
9634
  ...parent,
9632
9635
  id: computedId,
@@ -12786,7 +12789,7 @@
12786
12789
  "onClick:prependInner": props['onClick:prependInner'],
12787
12790
  "onClick:appendInner": props['onClick:appendInner'],
12788
12791
  "role": props.role
12789
- }, fieldProps, {
12792
+ }, omit(fieldProps, ['onClick:clear']), {
12790
12793
  "id": id.value,
12791
12794
  "active": isActive.value || isDirty.value,
12792
12795
  "dirty": isDirty.value || props.dirty,
@@ -13837,11 +13840,13 @@
13837
13840
  const defaultMatches = {};
13838
13841
  let match = -1;
13839
13842
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13843
+ let hasOnlyCustomFilters = false;
13840
13844
  if (typeof item === 'object') {
13841
13845
  if (item.type === 'divider' || item.type === 'subheader') {
13842
13846
  continue;
13843
13847
  }
13844
13848
  const filterKeys = keys || Object.keys(transformed);
13849
+ hasOnlyCustomFilters = filterKeys.length === customFiltersLength;
13845
13850
  for (const key of filterKeys) {
13846
13851
  const value = getPropertyFromItem(transformed, key);
13847
13852
  const keyFilter = options?.customKeyFilter?.[key];
@@ -13862,7 +13867,7 @@
13862
13867
  const customMatchesLength = Object.keys(customMatches).length;
13863
13868
  if (!defaultMatchesLength && !customMatchesLength) continue;
13864
13869
  if (options?.filterMode === 'union' && customMatchesLength !== customFiltersLength && !defaultMatchesLength) continue;
13865
- if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength)) continue;
13870
+ if (options?.filterMode === 'intersection' && (customMatchesLength !== customFiltersLength || !defaultMatchesLength && customFiltersLength > 0 && !hasOnlyCustomFilters)) continue;
13866
13871
  }
13867
13872
  array.push({
13868
13873
  index: i,
@@ -15536,7 +15541,7 @@
15536
15541
  };
15537
15542
  const uid = binding.instance?.$.uid; // TODO: use custom uid generator
15538
15543
 
15539
- if (!target || !uid) return;
15544
+ if (!target || uid === undefined) return;
15540
15545
  const handlers = createHandlers(binding.value);
15541
15546
  target._touchHandlers = target._touchHandlers ?? Object.create(null);
15542
15547
  target._touchHandlers[uid] = handlers;
@@ -15547,7 +15552,7 @@
15547
15552
  function unmounted$3(el, binding) {
15548
15553
  const target = binding.value?.parent ? el.parentElement : el;
15549
15554
  const uid = binding.instance?.$.uid;
15550
- if (!target?._touchHandlers || !uid) return;
15555
+ if (!target?._touchHandlers || uid === undefined) return;
15551
15556
  const handlers = target._touchHandlers[uid];
15552
15557
  keys(handlers).forEach(eventName => {
15553
15558
  target.removeEventListener(eventName, handlers[eventName]);
@@ -23560,6 +23565,9 @@
23560
23565
  const VDatePickerYears = genericComponent()({
23561
23566
  name: 'VDatePickerYears',
23562
23567
  props: makeVDatePickerYearsProps(),
23568
+ directives: {
23569
+ vIntersect: Intersect
23570
+ },
23563
23571
  emits: {
23564
23572
  'update:modelValue': year => true
23565
23573
  },
@@ -23596,10 +23604,12 @@
23596
23604
  model.value = model.value ?? adapter.getYear(adapter.date());
23597
23605
  });
23598
23606
  const yearRef = templateRef();
23599
- vue.onMounted(async () => {
23600
- await vue.nextTick();
23607
+ function focusSelectedYear() {
23601
23608
  yearRef.el?.focus();
23602
- });
23609
+ yearRef.el?.scrollIntoView({
23610
+ block: 'center'
23611
+ });
23612
+ }
23603
23613
  function isYearAllowed(year) {
23604
23614
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
23605
23615
  return props.allowedYears.includes(year);
@@ -23609,7 +23619,7 @@
23609
23619
  }
23610
23620
  return true;
23611
23621
  }
23612
- useRender(() => vue.createElementVNode("div", {
23622
+ useRender(() => vue.withDirectives(vue.createElementVNode("div", {
23613
23623
  "class": "v-date-picker-years",
23614
23624
  "style": {
23615
23625
  height: convertToUnit(props.height)
@@ -23640,7 +23650,11 @@
23640
23650
  }) ?? vue.createVNode(VBtn, vue.mergeProps({
23641
23651
  "key": "month"
23642
23652
  }, btnProps), null);
23643
- })])]));
23653
+ })])]), [[Intersect, {
23654
+ handler: focusSelectedYear
23655
+ }, null, {
23656
+ once: true
23657
+ }]]));
23644
23658
  return {};
23645
23659
  }
23646
23660
  });
@@ -23781,6 +23795,12 @@
23781
23795
  }
23782
23796
  return targets;
23783
23797
  });
23798
+ const allowedYears = vue.computed(() => {
23799
+ return props.allowedYears || isYearAllowed;
23800
+ });
23801
+ const allowedMonths = vue.computed(() => {
23802
+ return props.allowedMonths || isMonthAllowed;
23803
+ });
23784
23804
  function isAllowedInRange(start, end) {
23785
23805
  const allowedDates = props.allowedDates;
23786
23806
  if (typeof allowedDates !== 'function') return true;
@@ -23790,7 +23810,7 @@
23790
23810
  }
23791
23811
  return false;
23792
23812
  }
23793
- function allowedYears(year) {
23813
+ function isYearAllowed(year) {
23794
23814
  if (typeof props.allowedDates === 'function') {
23795
23815
  const startOfYear = adapter.parseISO(`${year}-01-01`);
23796
23816
  return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
@@ -23803,7 +23823,7 @@
23803
23823
  }
23804
23824
  return true;
23805
23825
  }
23806
- function allowedMonths(month) {
23826
+ function isMonthAllowed(month) {
23807
23827
  if (typeof props.allowedDates === 'function') {
23808
23828
  const monthTwoDigits = String(month + 1).padStart(2, '0');
23809
23829
  const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`);
@@ -23931,7 +23951,7 @@
23931
23951
  "min": minDate.value,
23932
23952
  "max": maxDate.value,
23933
23953
  "year": year.value,
23934
- "allowedMonths": allowedMonths
23954
+ "allowedMonths": allowedMonths.value
23935
23955
  }), {
23936
23956
  month: slots.month
23937
23957
  }) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
@@ -23941,7 +23961,7 @@
23941
23961
  "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
23942
23962
  "min": minDate.value,
23943
23963
  "max": maxDate.value,
23944
- "allowedYears": allowedYears
23964
+ "allowedYears": allowedYears.value
23945
23965
  }), {
23946
23966
  year: slots.year
23947
23967
  }) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
@@ -24676,7 +24696,10 @@
24676
24696
  modelValue: _,
24677
24697
  ...inputProps
24678
24698
  } = VInput.filterProps(props);
24679
- const fieldProps = VField.filterProps(props);
24699
+ const fieldProps = {
24700
+ ...VField.filterProps(props),
24701
+ 'onClick:clear': onClear
24702
+ };
24680
24703
  return vue.createVNode(VInput, vue.mergeProps({
24681
24704
  "ref": vInputRef,
24682
24705
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -24707,7 +24730,6 @@
24707
24730
  "prependIcon": props.prependIcon,
24708
24731
  "onMousedown": onControlMousedown,
24709
24732
  "onClick": onControlClick,
24710
- "onClick:clear": onClear,
24711
24733
  "onClick:prependInner": props['onClick:prependInner'],
24712
24734
  "onClick:appendInner": props['onClick:appendInner']
24713
24735
  }, fieldProps, {
@@ -26398,7 +26420,6 @@
26398
26420
  "aria-hidden": "true",
26399
26421
  "data-testid": "increment",
26400
26422
  "disabled": !canIncrease.value,
26401
- "flat": true,
26402
26423
  "height": controlNodeDefaultHeight.value,
26403
26424
  "icon": incrementIcon.value,
26404
26425
  "key": "increment-btn",
@@ -26407,16 +26428,17 @@
26407
26428
  "onPointerup": onControlMouseup,
26408
26429
  "onPointercancel": onControlMouseup,
26409
26430
  "size": controlNodeSize.value,
26431
+ "variant": "text",
26410
26432
  "tabindex": "-1"
26411
26433
  }, null) : vue.createVNode(VDefaultsProvider, {
26412
26434
  "key": "increment-defaults",
26413
26435
  "defaults": {
26414
26436
  VBtn: {
26415
26437
  disabled: !canIncrease.value,
26416
- flat: true,
26417
26438
  height: controlNodeDefaultHeight.value,
26418
26439
  size: controlNodeSize.value,
26419
- icon: incrementIcon.value
26440
+ icon: incrementIcon.value,
26441
+ variant: 'text'
26420
26442
  }
26421
26443
  }
26422
26444
  }, {
@@ -26428,7 +26450,6 @@
26428
26450
  "aria-hidden": "true",
26429
26451
  "data-testid": "decrement",
26430
26452
  "disabled": !canDecrease.value,
26431
- "flat": true,
26432
26453
  "height": controlNodeDefaultHeight.value,
26433
26454
  "icon": decrementIcon.value,
26434
26455
  "key": "decrement-btn",
@@ -26437,16 +26458,17 @@
26437
26458
  "onPointerup": onControlMouseup,
26438
26459
  "onPointercancel": onControlMouseup,
26439
26460
  "size": controlNodeSize.value,
26461
+ "variant": "text",
26440
26462
  "tabindex": "-1"
26441
26463
  }, null) : vue.createVNode(VDefaultsProvider, {
26442
26464
  "key": "decrement-defaults",
26443
26465
  "defaults": {
26444
26466
  VBtn: {
26445
26467
  disabled: !canDecrease.value,
26446
- flat: true,
26447
26468
  height: controlNodeDefaultHeight.value,
26448
26469
  size: controlNodeSize.value,
26449
- icon: decrementIcon.value
26470
+ icon: decrementIcon.value,
26471
+ variant: 'text'
26450
26472
  }
26451
26473
  }
26452
26474
  }, {
@@ -26582,6 +26604,7 @@
26582
26604
  const contentRef = vue.ref();
26583
26605
  const inputRef = vue.ref([]);
26584
26606
  const current = vue.computed(() => inputRef.value[focusIndex.value]);
26607
+ let _isComposing = false;
26585
26608
  useToggleScope(() => props.autofocus, () => {
26586
26609
  const intersectScope = vue.effectScope();
26587
26610
  intersectScope.run(() => {
@@ -26606,6 +26629,7 @@
26606
26629
  current.value.value = '';
26607
26630
  return;
26608
26631
  }
26632
+ if (_isComposing) return;
26609
26633
  const array = model.value.slice();
26610
26634
  const value = current.value.value;
26611
26635
  array[focusIndex.value] = value;
@@ -26618,6 +26642,10 @@
26618
26642
  model.value = array;
26619
26643
  if (target) focusChild(contentRef.value, target);
26620
26644
  }
26645
+ function onCompositionend() {
26646
+ _isComposing = false;
26647
+ onInput();
26648
+ }
26621
26649
  function onKeydown(e) {
26622
26650
  const array = model.value.slice();
26623
26651
  const index = focusIndex.value;
@@ -26652,7 +26680,7 @@
26652
26680
  const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
26653
26681
  if (isValidNumber(clipboardText)) return;
26654
26682
  model.value = clipboardText.split('');
26655
- inputRef.value?.[finalIndex].focus();
26683
+ focusIndex.value = finalIndex;
26656
26684
  }
26657
26685
  function reset() {
26658
26686
  model.value = [];
@@ -26682,7 +26710,6 @@
26682
26710
  });
26683
26711
  vue.watch(model, val => {
26684
26712
  if (val.length === length.value) {
26685
- focusIndex.value = length.value - 1;
26686
26713
  emit('finish', val.join(''));
26687
26714
  }
26688
26715
  }, {
@@ -26731,6 +26758,8 @@
26731
26758
  "onFocus": e => onFocus(e, i),
26732
26759
  "onBlur": onBlur,
26733
26760
  "onKeydown": onKeydown,
26761
+ "onCompositionstart": () => _isComposing = true,
26762
+ "onCompositionend": onCompositionend,
26734
26763
  "onPaste": event => onPaste(i, event)
26735
26764
  }, null);
26736
26765
  }
@@ -27955,7 +27984,7 @@
27955
27984
  let minValue = props.min != null ? Number(props.min) : Math.min(...values);
27956
27985
  if (minValue > 0 && props.min == null) minValue = 0;
27957
27986
  if (maxValue < 0 && props.max == null) maxValue = 0;
27958
- const gridX = maxX / totalValues;
27987
+ const gridX = maxX / (totalValues === 1 ? 2 : totalValues);
27959
27988
  const gridY = (maxY - minY) / (maxValue - minValue || 1);
27960
27989
  const horizonY = maxY - Math.abs(minValue * gridY);
27961
27990
  return values.map((value, index) => {
@@ -27986,7 +28015,7 @@
27986
28015
  return labels;
27987
28016
  });
27988
28017
  const bars = vue.computed(() => genBars(items.value, boundary.value));
27989
- const offsetX = vue.computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
28018
+ const offsetX = vue.computed(() => bars.value.length === 1 ? (boundary.value.maxX - lineWidth.value) / 2 : (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
27990
28019
  const smooth = vue.computed(() => typeof props.smooth === 'boolean' ? props.smooth ? 2 : 0 : Number(props.smooth));
27991
28020
  useRender(() => {
27992
28021
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
@@ -28137,6 +28166,9 @@
28137
28166
  minY,
28138
28167
  maxY
28139
28168
  } = boundary;
28169
+ if (values.length === 1) {
28170
+ values = [values[0], values[0]];
28171
+ }
28140
28172
  const totalValues = values.length;
28141
28173
  const maxValue = props.max != null ? Number(props.max) : Math.max(...values);
28142
28174
  const minValue = props.min != null ? Number(props.min) : Math.min(...values);
@@ -29451,7 +29483,10 @@
29451
29483
  modelValue: _,
29452
29484
  ...inputProps
29453
29485
  } = VInput.filterProps(props);
29454
- const fieldProps = VField.filterProps(props);
29486
+ const fieldProps = {
29487
+ ...VField.filterProps(props),
29488
+ 'onClick:clear': onClear
29489
+ };
29455
29490
  return vue.createVNode(VInput, vue.mergeProps({
29456
29491
  "ref": vInputRef,
29457
29492
  "modelValue": model.value,
@@ -29487,7 +29522,6 @@
29487
29522
  },
29488
29523
  "onClick": onControlClick,
29489
29524
  "onMousedown": onControlMousedown,
29490
- "onClick:clear": onClear,
29491
29525
  "onClick:prependInner": props['onClick:prependInner'],
29492
29526
  "onClick:appendInner": props['onClick:appendInner']
29493
29527
  }, fieldProps, {
@@ -31544,7 +31578,7 @@
31544
31578
  };
31545
31579
  });
31546
31580
  }
31547
- const version$1 = "3.9.5";
31581
+ const version$1 = "3.9.7";
31548
31582
  createVuetify$1.version = version$1;
31549
31583
 
31550
31584
  // Vue's inject() can only be used in setup
@@ -31569,7 +31603,7 @@
31569
31603
  ...options
31570
31604
  });
31571
31605
  };
31572
- const version = "3.9.5";
31606
+ const version = "3.9.7";
31573
31607
  createVuetify.version = version;
31574
31608
 
31575
31609
  exports.blueprints = index;