vuetify 3.7.13 → 3.7.15

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 (145) hide show
  1. package/dist/json/attributes.json +2446 -2446
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +176 -176
  4. package/dist/json/tags.json +1 -1
  5. package/dist/json/web-types.json +4783 -4520
  6. package/dist/vuetify-labs.css +2906 -2897
  7. package/dist/vuetify-labs.d.ts +234 -15
  8. package/dist/vuetify-labs.esm.js +156 -67
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +156 -67
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1783 -1784
  13. package/dist/vuetify.d.ts +66 -66
  14. package/dist/vuetify.esm.js +47 -37
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +47 -37
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +31 -27
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VDatePicker/VDatePicker.mjs +19 -10
  22. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  23. package/lib/components/VFileInput/VFileInput.css +0 -1
  24. package/lib/components/VFileInput/VFileInput.mjs +11 -1
  25. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  26. package/lib/components/VFileInput/VFileInput.sass +0 -1
  27. package/lib/components/VList/VListItem.mjs +2 -0
  28. package/lib/components/VList/VListItem.mjs.map +1 -1
  29. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  30. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  31. package/lib/components/VSlider/slider.mjs +1 -0
  32. package/lib/components/VSlider/slider.mjs.map +1 -1
  33. package/lib/composables/date/adapters/vuetify.mjs +9 -21
  34. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  35. package/lib/composables/density.mjs +1 -1
  36. package/lib/composables/density.mjs.map +1 -1
  37. package/lib/entry-bundler.mjs +1 -1
  38. package/lib/framework.mjs +1 -1
  39. package/lib/index.d.mts +66 -66
  40. package/lib/labs/VDateInput/VDateInput.mjs +2 -2
  41. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  42. package/lib/labs/VDateInput/index.d.mts +248 -1
  43. package/lib/labs/VFileUpload/VFileUpload.css +5 -1
  44. package/lib/labs/VFileUpload/VFileUpload.sass +4 -0
  45. package/lib/labs/VFileUpload/_variables.scss +1 -1
  46. package/lib/labs/VNumberInput/VNumberInput.mjs +57 -21
  47. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  48. package/lib/labs/VNumberInput/hold.mjs +31 -0
  49. package/lib/labs/VNumberInput/hold.mjs.map +1 -0
  50. package/lib/labs/VNumberInput/index.d.mts +1 -7
  51. package/lib/labs/VTimePicker/VTimePickerControls.sass +16 -16
  52. package/lib/labs/VTimePicker/_variables.scss +12 -12
  53. package/lib/labs/VTreeview/VTreeview.mjs +5 -1
  54. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  55. package/lib/labs/VTreeview/VTreeviewChildren.mjs +4 -1
  56. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  57. package/lib/labs/VTreeview/VTreeviewItem.css +15 -9
  58. package/lib/labs/VTreeview/VTreeviewItem.mjs +15 -6
  59. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  60. package/lib/labs/VTreeview/VTreeviewItem.sass +16 -10
  61. package/lib/labs/VTreeview/_variables.scss +2 -5
  62. package/lib/labs/VTreeview/index.d.mts +23 -8
  63. package/lib/labs/components.d.mts +295 -76
  64. package/lib/locale/af.mjs +42 -42
  65. package/lib/locale/af.mjs.map +1 -1
  66. package/lib/locale/az.mjs +7 -7
  67. package/lib/locale/az.mjs.map +1 -1
  68. package/lib/locale/bg.mjs +7 -7
  69. package/lib/locale/bg.mjs.map +1 -1
  70. package/lib/locale/ca.mjs +25 -25
  71. package/lib/locale/ca.mjs.map +1 -1
  72. package/lib/locale/ckb.mjs +29 -29
  73. package/lib/locale/ckb.mjs.map +1 -1
  74. package/lib/locale/cs.mjs +13 -13
  75. package/lib/locale/cs.mjs.map +1 -1
  76. package/lib/locale/da.mjs +22 -22
  77. package/lib/locale/da.mjs.map +1 -1
  78. package/lib/locale/el.mjs +41 -41
  79. package/lib/locale/el.mjs.map +1 -1
  80. package/lib/locale/es.mjs +26 -26
  81. package/lib/locale/es.mjs.map +1 -1
  82. package/lib/locale/et.mjs +29 -29
  83. package/lib/locale/et.mjs.map +1 -1
  84. package/lib/locale/fa.mjs +5 -5
  85. package/lib/locale/fa.mjs.map +1 -1
  86. package/lib/locale/fi.mjs +22 -22
  87. package/lib/locale/fi.mjs.map +1 -1
  88. package/lib/locale/fr.mjs +6 -6
  89. package/lib/locale/fr.mjs.map +1 -1
  90. package/lib/locale/he.mjs +29 -29
  91. package/lib/locale/he.mjs.map +1 -1
  92. package/lib/locale/hr.mjs +28 -28
  93. package/lib/locale/hr.mjs.map +1 -1
  94. package/lib/locale/hu.mjs +10 -10
  95. package/lib/locale/hu.mjs.map +1 -1
  96. package/lib/locale/id.mjs +30 -30
  97. package/lib/locale/id.mjs.map +1 -1
  98. package/lib/locale/it.mjs +7 -7
  99. package/lib/locale/it.mjs.map +1 -1
  100. package/lib/locale/ja.mjs +28 -28
  101. package/lib/locale/ja.mjs.map +1 -1
  102. package/lib/locale/km.mjs +6 -6
  103. package/lib/locale/km.mjs.map +1 -1
  104. package/lib/locale/ko.mjs +27 -27
  105. package/lib/locale/ko.mjs.map +1 -1
  106. package/lib/locale/lt.mjs +5 -5
  107. package/lib/locale/lt.mjs.map +1 -1
  108. package/lib/locale/lv.mjs +33 -33
  109. package/lib/locale/lv.mjs.map +1 -1
  110. package/lib/locale/nl.mjs +10 -10
  111. package/lib/locale/nl.mjs.map +1 -1
  112. package/lib/locale/no.mjs +11 -11
  113. package/lib/locale/no.mjs.map +1 -1
  114. package/lib/locale/pl.mjs +7 -7
  115. package/lib/locale/pl.mjs.map +1 -1
  116. package/lib/locale/pt.mjs +11 -11
  117. package/lib/locale/pt.mjs.map +1 -1
  118. package/lib/locale/ro.mjs +9 -9
  119. package/lib/locale/ro.mjs.map +1 -1
  120. package/lib/locale/ru.mjs +6 -6
  121. package/lib/locale/ru.mjs.map +1 -1
  122. package/lib/locale/sk.mjs +5 -5
  123. package/lib/locale/sk.mjs.map +1 -1
  124. package/lib/locale/sl.mjs +4 -4
  125. package/lib/locale/sl.mjs.map +1 -1
  126. package/lib/locale/sr-Cyrl.mjs +30 -30
  127. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  128. package/lib/locale/sr-Latn.mjs +28 -28
  129. package/lib/locale/sr-Latn.mjs.map +1 -1
  130. package/lib/locale/sv.mjs +17 -17
  131. package/lib/locale/sv.mjs.map +1 -1
  132. package/lib/locale/th.mjs +30 -30
  133. package/lib/locale/th.mjs.map +1 -1
  134. package/lib/locale/tr.mjs +31 -31
  135. package/lib/locale/tr.mjs.map +1 -1
  136. package/lib/locale/uk.mjs +29 -29
  137. package/lib/locale/uk.mjs.map +1 -1
  138. package/lib/locale/vi.mjs +28 -28
  139. package/lib/locale/vi.mjs.map +1 -1
  140. package/lib/locale/zh-Hans.mjs +31 -31
  141. package/lib/locale/zh-Hans.mjs.map +1 -1
  142. package/lib/locale/zh-Hant.mjs +31 -31
  143. package/lib/locale/zh-Hant.mjs.map +1 -1
  144. package/lib/styles/tools/_functions.sass +1 -1
  145. package/package.json +7 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.13
2
+ * Vuetify v3.7.15
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -4008,7 +4008,7 @@ const VAppBar = genericComponent()({
4008
4008
 
4009
4009
  const allowedDensities = [null, 'default', 'comfortable', 'compact'];
4010
4010
 
4011
- // typeof allowedDensities[number] evalutes to any
4011
+ // typeof allowedDensities[number] evaluates to any
4012
4012
  // when generating api types for whatever reason.
4013
4013
 
4014
4014
  // Composables
@@ -9056,6 +9056,8 @@ const VListItem = genericComponent()({
9056
9056
  }
9057
9057
  }
9058
9058
  function onKeyDown(e) {
9059
+ const target = e.target;
9060
+ if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9059
9061
  if (e.key === 'Enter' || e.key === ' ') {
9060
9062
  e.preventDefault();
9061
9063
  e.target.dispatchEvent(new MouseEvent('click', e));
@@ -15681,6 +15683,7 @@ const useSlider = _ref => {
15681
15683
  });
15682
15684
  }
15683
15685
  function onSliderMousedown(e) {
15686
+ if (e.button !== 0) return;
15684
15687
  e.preventDefault();
15685
15688
  handleStart(e);
15686
15689
  window.addEventListener('mousemove', onMouseMove, moveListenerOptions);
@@ -17713,16 +17716,13 @@ function format(value, formatString, locale, formats) {
17713
17716
  case 'fullTime':
17714
17717
  options = {
17715
17718
  hour: 'numeric',
17716
- minute: 'numeric',
17717
- second: 'numeric',
17718
- hour12: true
17719
+ minute: 'numeric'
17719
17720
  };
17720
17721
  break;
17721
17722
  case 'fullTime12h':
17722
17723
  options = {
17723
17724
  hour: 'numeric',
17724
17725
  minute: 'numeric',
17725
- second: 'numeric',
17726
17726
  hour12: true
17727
17727
  };
17728
17728
  break;
@@ -17730,40 +17730,35 @@ function format(value, formatString, locale, formats) {
17730
17730
  options = {
17731
17731
  hour: 'numeric',
17732
17732
  minute: 'numeric',
17733
- second: 'numeric',
17734
17733
  hour12: false
17735
17734
  };
17736
17735
  break;
17737
17736
  case 'fullDateTime':
17738
17737
  options = {
17739
17738
  year: 'numeric',
17740
- month: 'long',
17739
+ month: 'short',
17741
17740
  day: 'numeric',
17742
17741
  hour: 'numeric',
17743
- minute: 'numeric',
17744
- second: 'numeric',
17745
- hour12: true
17742
+ minute: 'numeric'
17746
17743
  };
17747
17744
  break;
17748
17745
  case 'fullDateTime12h':
17749
17746
  options = {
17750
17747
  year: 'numeric',
17751
- month: 'long',
17748
+ month: 'short',
17752
17749
  day: 'numeric',
17753
17750
  hour: 'numeric',
17754
17751
  minute: 'numeric',
17755
- second: 'numeric',
17756
17752
  hour12: true
17757
17753
  };
17758
17754
  break;
17759
17755
  case 'fullDateTime24h':
17760
17756
  options = {
17761
17757
  year: 'numeric',
17762
- month: 'long',
17758
+ month: 'short',
17763
17759
  day: 'numeric',
17764
17760
  hour: 'numeric',
17765
17761
  minute: 'numeric',
17766
- second: 'numeric',
17767
17762
  hour12: false
17768
17763
  };
17769
17764
  break;
@@ -17780,11 +17775,9 @@ function format(value, formatString, locale, formats) {
17780
17775
  month: '2-digit',
17781
17776
  day: '2-digit',
17782
17777
  hour: 'numeric',
17783
- minute: 'numeric',
17784
- second: 'numeric',
17785
- hour12: false
17778
+ minute: 'numeric'
17786
17779
  };
17787
- break;
17780
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17788
17781
  case 'keyboardDateTime12h':
17789
17782
  options = {
17790
17783
  year: 'numeric',
@@ -17792,10 +17785,9 @@ function format(value, formatString, locale, formats) {
17792
17785
  day: '2-digit',
17793
17786
  hour: 'numeric',
17794
17787
  minute: 'numeric',
17795
- second: 'numeric',
17796
17788
  hour12: true
17797
17789
  };
17798
- break;
17790
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17799
17791
  case 'keyboardDateTime24h':
17800
17792
  options = {
17801
17793
  year: 'numeric',
@@ -17803,10 +17795,9 @@ function format(value, formatString, locale, formats) {
17803
17795
  day: '2-digit',
17804
17796
  hour: 'numeric',
17805
17797
  minute: 'numeric',
17806
- second: 'numeric',
17807
17798
  hour12: false
17808
17799
  };
17809
- break;
17800
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17810
17801
  default:
17811
17802
  options = customFormat ?? {
17812
17803
  timeZone: 'UTC',
@@ -22245,9 +22236,26 @@ const VDatePicker = genericComponent()({
22245
22236
  const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);
22246
22237
  const viewMode = useProxiedModel(props, 'viewMode');
22247
22238
  // const inputMode = useProxiedModel(props, 'inputMode')
22239
+
22240
+ const minDate = computed(() => {
22241
+ const date = adapter.date(props.min);
22242
+ return props.min && adapter.isValid(date) ? date : null;
22243
+ });
22244
+ const maxDate = computed(() => {
22245
+ const date = adapter.date(props.max);
22246
+ return props.max && adapter.isValid(date) ? date : null;
22247
+ });
22248
22248
  const internal = computed(() => {
22249
- const value = adapter.date(model.value?.[0]);
22250
- return value && adapter.isValid(value) ? value : adapter.date();
22249
+ const today = adapter.date();
22250
+ let value = today;
22251
+ if (model.value?.[0]) {
22252
+ value = adapter.date(model.value[0]);
22253
+ } else if (minDate.value && adapter.isBefore(today, minDate.value)) {
22254
+ value = minDate.value;
22255
+ } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {
22256
+ value = maxDate.value;
22257
+ }
22258
+ return value && adapter.isValid(value) ? value : today;
22251
22259
  });
22252
22260
  const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22253
22261
  const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
@@ -22267,14 +22275,6 @@ const VDatePicker = genericComponent()({
22267
22275
  });
22268
22276
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22269
22277
  const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22270
- const minDate = computed(() => {
22271
- const date = adapter.date(props.min);
22272
- return props.min && adapter.isValid(date) ? date : null;
22273
- });
22274
- const maxDate = computed(() => {
22275
- const date = adapter.date(props.max);
22276
- return props.max && adapter.isValid(date) ? date : null;
22277
- });
22278
22278
  const disabled = computed(() => {
22279
22279
  if (props.disabled) return true;
22280
22280
  const targets = [];
@@ -23053,6 +23053,14 @@ const VFileInput = genericComponent()({
23053
23053
  callEvent(props['onClick:clear'], e);
23054
23054
  });
23055
23055
  }
23056
+ function onDragover(e) {
23057
+ e.preventDefault();
23058
+ }
23059
+ function onDrop(e) {
23060
+ e.preventDefault();
23061
+ if (!e.dataTransfer) return;
23062
+ model.value = [...(e.dataTransfer.files ?? [])];
23063
+ }
23056
23064
  watch(model, newValue => {
23057
23065
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
23058
23066
  if (hasModelReset && inputRef.value) {
@@ -23105,7 +23113,9 @@ const VFileInput = genericComponent()({
23105
23113
  "dirty": isDirty.value || props.dirty,
23106
23114
  "disabled": isDisabled.value,
23107
23115
  "focused": isFocused.value,
23108
- "error": isValid.value === false
23116
+ "error": isValid.value === false,
23117
+ "onDragover": onDragover,
23118
+ "onDrop": onDrop
23109
23119
  }), {
23110
23120
  ...slots,
23111
23121
  default: _ref4 => {
@@ -24588,7 +24598,7 @@ const VOtpInput = genericComponent()({
24588
24598
  "disabled": props.disabled,
24589
24599
  "inputmode": props.type === 'number' ? 'numeric' : 'text',
24590
24600
  "min": props.type === 'number' ? 0 : undefined,
24591
- "maxlength": "1",
24601
+ "maxlength": i === 0 ? length.value : '1',
24592
24602
  "placeholder": props.placeholder,
24593
24603
  "type": props.type === 'number' ? 'text' : props.type,
24594
24604
  "value": model.value[i],
@@ -28239,9 +28249,9 @@ const VDateInput = genericComponent()({
28239
28249
  if (props.multiple === 'range') {
28240
28250
  const start = value[0];
28241
28251
  const end = value[value.length - 1];
28242
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}` : '';
28252
+ return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
28243
28253
  }
28244
- return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : '';
28254
+ return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
28245
28255
  });
28246
28256
  const isInteractive = computed(() => !props.disabled && !props.readonly);
28247
28257
  function onKeydown(e) {
@@ -28647,6 +28657,36 @@ const VFileUpload = genericComponent()({
28647
28657
  }
28648
28658
  });
28649
28659
 
28660
+ // Utilities
28661
+ const HOLD_REPEAT = 50;
28662
+ const HOLD_DELAY = 500;
28663
+ function useHold(_ref) {
28664
+ let {
28665
+ toggleUpDown
28666
+ } = _ref;
28667
+ let timeout = -1;
28668
+ let interval = -1;
28669
+ onScopeDispose(holdStop);
28670
+ function holdStart(value) {
28671
+ holdStop();
28672
+ tick(value);
28673
+ timeout = window.setTimeout(() => {
28674
+ interval = window.setInterval(() => tick(value), HOLD_REPEAT);
28675
+ }, HOLD_DELAY);
28676
+ }
28677
+ function holdStop() {
28678
+ window.clearTimeout(timeout);
28679
+ window.clearInterval(interval);
28680
+ }
28681
+ function tick(value) {
28682
+ toggleUpDown(value === 'up');
28683
+ }
28684
+ return {
28685
+ holdStart,
28686
+ holdStop
28687
+ };
28688
+ }
28689
+
28650
28690
  // Types
28651
28691
 
28652
28692
  const makeVNumberInputProps = propsFactory({
@@ -28676,7 +28716,7 @@ const makeVNumberInputProps = propsFactory({
28676
28716
  type: Number,
28677
28717
  default: 0
28678
28718
  },
28679
- ...omit(makeVTextFieldProps({}), ['modelValue'])
28719
+ ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
28680
28720
  }, 'VNumberInput');
28681
28721
  const VNumberInput = genericComponent()({
28682
28722
  name: 'VNumberInput',
@@ -28691,9 +28731,19 @@ const VNumberInput = genericComponent()({
28691
28731
  slots
28692
28732
  } = _ref;
28693
28733
  const vTextFieldRef = ref();
28734
+ const {
28735
+ holdStart,
28736
+ holdStop
28737
+ } = useHold({
28738
+ toggleUpDown
28739
+ });
28694
28740
  const form = useForm(props);
28695
28741
  const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28696
- const isFocused = ref(false);
28742
+ const {
28743
+ isFocused,
28744
+ focus,
28745
+ blur
28746
+ } = useFocus(props);
28697
28747
  function correctPrecision(val) {
28698
28748
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28699
28749
  const fixed = precision == null ? String(val) : val.toFixed(precision);
@@ -28703,8 +28753,8 @@ const VNumberInput = genericComponent()({
28703
28753
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28704
28754
  const _inputText = shallowRef(null);
28705
28755
  watchEffect(() => {
28706
- if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null || controlsDisabled.value) {
28707
- _inputText.value = model.value && !isNaN(model.value) ? String(model.value) : null;
28756
+ if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
28757
+ _inputText.value = null;
28708
28758
  } else if (!isNaN(model.value)) {
28709
28759
  _inputText.value = correctPrecision(model.value);
28710
28760
  }
@@ -28737,10 +28787,18 @@ const VNumberInput = genericComponent()({
28737
28787
  const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
28738
28788
  const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
28739
28789
  const incrementSlotProps = computed(() => ({
28740
- click: onClickUp
28790
+ props: {
28791
+ onClick: onControlClick,
28792
+ onPointerup: onControlMouseup,
28793
+ onPointerdown: onUpControlMousedown
28794
+ }
28741
28795
  }));
28742
28796
  const decrementSlotProps = computed(() => ({
28743
- click: onClickDown
28797
+ props: {
28798
+ onClick: onControlClick,
28799
+ onPointerup: onControlMouseup,
28800
+ onPointerdown: onDownControlMousedown
28801
+ }
28744
28802
  }));
28745
28803
  watch(() => props.precision, () => formatInputValue());
28746
28804
  onMounted(() => {
@@ -28767,14 +28825,6 @@ const VNumberInput = genericComponent()({
28767
28825
  if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28768
28826
  }
28769
28827
  }
28770
- function onClickUp(e) {
28771
- e.stopPropagation();
28772
- toggleUpDown();
28773
- }
28774
- function onClickDown(e) {
28775
- e.stopPropagation();
28776
- toggleUpDown(false);
28777
- }
28778
28828
  function onBeforeinput(e) {
28779
28829
  if (!e.data) return;
28780
28830
  const existingTxt = e.target?.value;
@@ -28812,8 +28862,29 @@ const VNumberInput = genericComponent()({
28812
28862
  }
28813
28863
  }
28814
28864
  }
28815
- function onControlMousedown(e) {
28865
+ function onControlClick(e) {
28866
+ e.stopPropagation();
28867
+ }
28868
+ function onControlMouseup(e) {
28869
+ const el = e.currentTarget;
28870
+ el?.releasePointerCapture(e.pointerId);
28871
+ e.preventDefault();
28816
28872
  e.stopPropagation();
28873
+ holdStop();
28874
+ }
28875
+ function onUpControlMousedown(e) {
28876
+ const el = e.currentTarget;
28877
+ el?.setPointerCapture(e.pointerId);
28878
+ e.preventDefault();
28879
+ e.stopPropagation();
28880
+ holdStart('up');
28881
+ }
28882
+ function onDownControlMousedown(e) {
28883
+ const el = e.currentTarget;
28884
+ el?.setPointerCapture(e.pointerId);
28885
+ e.preventDefault();
28886
+ e.stopPropagation();
28887
+ holdStart('down');
28817
28888
  }
28818
28889
  function clampModel() {
28819
28890
  if (controlsDisabled.value) return;
@@ -28842,11 +28913,11 @@ const VNumberInput = genericComponent()({
28842
28913
  inputText.value = model.value.toString();
28843
28914
  }
28844
28915
  function onFocus() {
28845
- isFocused.value = true;
28916
+ focus();
28846
28917
  trimDecimalZeros();
28847
28918
  }
28848
28919
  function onBlur() {
28849
- isFocused.value = false;
28920
+ blur();
28850
28921
  clampModel();
28851
28922
  }
28852
28923
  useRender(() => {
@@ -28863,8 +28934,9 @@ const VNumberInput = genericComponent()({
28863
28934
  "data-testid": "increment",
28864
28935
  "aria-hidden": "true",
28865
28936
  "icon": incrementIcon.value,
28866
- "onClick": onClickUp,
28867
- "onMousedown": onControlMousedown,
28937
+ "onClick": onControlClick,
28938
+ "onPointerup": onControlMouseup,
28939
+ "onPointerdown": onUpControlMousedown,
28868
28940
  "size": controlNodeSize.value,
28869
28941
  "tabindex": "-1"
28870
28942
  }, null) : createVNode(VDefaultsProvider, {
@@ -28893,8 +28965,9 @@ const VNumberInput = genericComponent()({
28893
28965
  "icon": decrementIcon.value,
28894
28966
  "size": controlNodeSize.value,
28895
28967
  "tabindex": "-1",
28896
- "onClick": onClickDown,
28897
- "onMousedown": onControlMousedown
28968
+ "onClick": onControlClick,
28969
+ "onPointerup": onControlMouseup,
28970
+ "onPointerdown": onDownControlMousedown
28898
28971
  }, null) : createVNode(VDefaultsProvider, {
28899
28972
  "key": "decrement-defaults",
28900
28973
  "defaults": {
@@ -28938,6 +29011,7 @@ const VNumberInput = genericComponent()({
28938
29011
  "ref": vTextFieldRef,
28939
29012
  "modelValue": inputText.value,
28940
29013
  "onUpdate:modelValue": $event => inputText.value = $event,
29014
+ "validationValue": model.value,
28941
29015
  "onBeforeinput": onBeforeinput,
28942
29016
  "onFocus": onFocus,
28943
29017
  "onBlur": onBlur,
@@ -30122,7 +30196,6 @@ const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
30122
30196
 
30123
30197
  const makeVTreeviewItemProps = propsFactory({
30124
30198
  loading: Boolean,
30125
- onToggleExpand: EventProp(),
30126
30199
  toggleIcon: IconValue,
30127
30200
  ...makeVListItemProps({
30128
30201
  slim: true
@@ -30131,9 +30204,13 @@ const makeVTreeviewItemProps = propsFactory({
30131
30204
  const VTreeviewItem = genericComponent()({
30132
30205
  name: 'VTreeviewItem',
30133
30206
  props: makeVTreeviewItemProps(),
30207
+ emits: {
30208
+ toggleExpand: value => true
30209
+ },
30134
30210
  setup(props, _ref) {
30135
30211
  let {
30136
- slots
30212
+ slots,
30213
+ emit
30137
30214
  } = _ref;
30138
30215
  const visibleIds = inject$1(VTreeviewSymbol, {
30139
30216
  visibleIds: ref()
@@ -30148,6 +30225,10 @@ const VTreeviewItem = genericComponent()({
30148
30225
  vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
30149
30226
  }
30150
30227
  }
30228
+ function onClickAction(e) {
30229
+ e.preventDefault();
30230
+ emit('toggleExpand', e);
30231
+ }
30151
30232
  useRender(() => {
30152
30233
  const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
30153
30234
  const hasPrepend = slots.prepend || props.toggleIcon;
@@ -30167,12 +30248,12 @@ const VTreeviewItem = genericComponent()({
30167
30248
  return createVNode(Fragment, null, [createVNode(VListItemAction, {
30168
30249
  "start": false
30169
30250
  }, {
30170
- default: () => [props.toggleIcon && createVNode(VBtn, {
30251
+ default: () => [props.toggleIcon ? createVNode(VBtn, {
30171
30252
  "density": "compact",
30172
30253
  "icon": props.toggleIcon,
30173
30254
  "loading": props.loading,
30174
30255
  "variant": "text",
30175
- "onClick": props.onToggleExpand
30256
+ "onClick": onClickAction
30176
30257
  }, {
30177
30258
  loader() {
30178
30259
  return createVNode(VProgressCircular, {
@@ -30181,7 +30262,9 @@ const VTreeviewItem = genericComponent()({
30181
30262
  "width": "2"
30182
30263
  }, null);
30183
30264
  }
30184
- })]
30265
+ }) : createVNode("div", {
30266
+ "class": "v-treeview-item__level"
30267
+ }, null)]
30185
30268
  }), slots.prepend?.(slotProps)]);
30186
30269
  } : undefined
30187
30270
  });
@@ -30213,7 +30296,8 @@ const makeVTreeviewChildrenProps = propsFactory({
30213
30296
  returnObject: Boolean,
30214
30297
  selectable: Boolean,
30215
30298
  selectedColor: String,
30216
- selectStrategy: [String, Function, Object]
30299
+ selectStrategy: [String, Function, Object],
30300
+ ...makeDensityProps()
30217
30301
  }, 'VTreeviewChildren');
30218
30302
  const VTreeviewChildren = genericComponent()({
30219
30303
  name: 'VTreeviewChildren',
@@ -30253,6 +30337,7 @@ const VTreeviewChildren = genericComponent()({
30253
30337
  "disabled": props.disabled,
30254
30338
  "loading": loading,
30255
30339
  "color": props.selectedColor,
30340
+ "density": props.density,
30256
30341
  "indeterminate": slotProps.isIndeterminate,
30257
30342
  "indeterminateIcon": props.indeterminateIcon,
30258
30343
  "falseIcon": props.falseIcon,
@@ -30329,6 +30414,7 @@ function flatten(items) {
30329
30414
  return flat;
30330
30415
  }
30331
30416
  const makeVTreeviewProps = propsFactory({
30417
+ fluid: Boolean,
30332
30418
  openAll: Boolean,
30333
30419
  search: String,
30334
30420
  ...makeFilterProps({
@@ -30442,7 +30528,9 @@ const VTreeview = genericComponent()({
30442
30528
  return createVNode(VList, mergeProps({
30443
30529
  "ref": vListRef
30444
30530
  }, listProps, {
30445
- "class": ['v-treeview', props.class],
30531
+ "class": ['v-treeview', {
30532
+ 'v-treeview--fluid': props.fluid
30533
+ }, props.class],
30446
30534
  "open-strategy": "multiple",
30447
30535
  "style": props.style,
30448
30536
  "opened": opened.value,
@@ -30452,6 +30540,7 @@ const VTreeview = genericComponent()({
30452
30540
  "onUpdate:selected": $event => selected.value = $event
30453
30541
  }), {
30454
30542
  default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
30543
+ "density": props.density,
30455
30544
  "returnObject": props.returnObject,
30456
30545
  "items": items.value
30457
30546
  }), slots)]
@@ -30959,7 +31048,7 @@ function createVuetify$1() {
30959
31048
  goTo
30960
31049
  };
30961
31050
  }
30962
- const version$1 = "3.7.13";
31051
+ const version$1 = "3.7.15";
30963
31052
  createVuetify$1.version = version$1;
30964
31053
 
30965
31054
  // Vue's inject() can only be used in setup
@@ -31212,7 +31301,7 @@ var index = /*#__PURE__*/Object.freeze({
31212
31301
 
31213
31302
  /* eslint-disable local-rules/sort-imports */
31214
31303
 
31215
- const version = "3.7.13";
31304
+ const version = "3.7.15";
31216
31305
 
31217
31306
  /* eslint-disable local-rules/sort-imports */
31218
31307