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
  */
@@ -4012,7 +4012,7 @@
4012
4012
 
4013
4013
  const allowedDensities = [null, 'default', 'comfortable', 'compact'];
4014
4014
 
4015
- // typeof allowedDensities[number] evalutes to any
4015
+ // typeof allowedDensities[number] evaluates to any
4016
4016
  // when generating api types for whatever reason.
4017
4017
 
4018
4018
  // Composables
@@ -9060,6 +9060,8 @@
9060
9060
  }
9061
9061
  }
9062
9062
  function onKeyDown(e) {
9063
+ const target = e.target;
9064
+ if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9063
9065
  if (e.key === 'Enter' || e.key === ' ') {
9064
9066
  e.preventDefault();
9065
9067
  e.target.dispatchEvent(new MouseEvent('click', e));
@@ -15685,6 +15687,7 @@
15685
15687
  });
15686
15688
  }
15687
15689
  function onSliderMousedown(e) {
15690
+ if (e.button !== 0) return;
15688
15691
  e.preventDefault();
15689
15692
  handleStart(e);
15690
15693
  window.addEventListener('mousemove', onMouseMove, moveListenerOptions);
@@ -17717,16 +17720,13 @@
17717
17720
  case 'fullTime':
17718
17721
  options = {
17719
17722
  hour: 'numeric',
17720
- minute: 'numeric',
17721
- second: 'numeric',
17722
- hour12: true
17723
+ minute: 'numeric'
17723
17724
  };
17724
17725
  break;
17725
17726
  case 'fullTime12h':
17726
17727
  options = {
17727
17728
  hour: 'numeric',
17728
17729
  minute: 'numeric',
17729
- second: 'numeric',
17730
17730
  hour12: true
17731
17731
  };
17732
17732
  break;
@@ -17734,40 +17734,35 @@
17734
17734
  options = {
17735
17735
  hour: 'numeric',
17736
17736
  minute: 'numeric',
17737
- second: 'numeric',
17738
17737
  hour12: false
17739
17738
  };
17740
17739
  break;
17741
17740
  case 'fullDateTime':
17742
17741
  options = {
17743
17742
  year: 'numeric',
17744
- month: 'long',
17743
+ month: 'short',
17745
17744
  day: 'numeric',
17746
17745
  hour: 'numeric',
17747
- minute: 'numeric',
17748
- second: 'numeric',
17749
- hour12: true
17746
+ minute: 'numeric'
17750
17747
  };
17751
17748
  break;
17752
17749
  case 'fullDateTime12h':
17753
17750
  options = {
17754
17751
  year: 'numeric',
17755
- month: 'long',
17752
+ month: 'short',
17756
17753
  day: 'numeric',
17757
17754
  hour: 'numeric',
17758
17755
  minute: 'numeric',
17759
- second: 'numeric',
17760
17756
  hour12: true
17761
17757
  };
17762
17758
  break;
17763
17759
  case 'fullDateTime24h':
17764
17760
  options = {
17765
17761
  year: 'numeric',
17766
- month: 'long',
17762
+ month: 'short',
17767
17763
  day: 'numeric',
17768
17764
  hour: 'numeric',
17769
17765
  minute: 'numeric',
17770
- second: 'numeric',
17771
17766
  hour12: false
17772
17767
  };
17773
17768
  break;
@@ -17784,11 +17779,9 @@
17784
17779
  month: '2-digit',
17785
17780
  day: '2-digit',
17786
17781
  hour: 'numeric',
17787
- minute: 'numeric',
17788
- second: 'numeric',
17789
- hour12: false
17782
+ minute: 'numeric'
17790
17783
  };
17791
- break;
17784
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17792
17785
  case 'keyboardDateTime12h':
17793
17786
  options = {
17794
17787
  year: 'numeric',
@@ -17796,10 +17789,9 @@
17796
17789
  day: '2-digit',
17797
17790
  hour: 'numeric',
17798
17791
  minute: 'numeric',
17799
- second: 'numeric',
17800
17792
  hour12: true
17801
17793
  };
17802
- break;
17794
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17803
17795
  case 'keyboardDateTime24h':
17804
17796
  options = {
17805
17797
  year: 'numeric',
@@ -17807,10 +17799,9 @@
17807
17799
  day: '2-digit',
17808
17800
  hour: 'numeric',
17809
17801
  minute: 'numeric',
17810
- second: 'numeric',
17811
17802
  hour12: false
17812
17803
  };
17813
- break;
17804
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17814
17805
  default:
17815
17806
  options = customFormat ?? {
17816
17807
  timeZone: 'UTC',
@@ -22249,9 +22240,26 @@
22249
22240
  const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);
22250
22241
  const viewMode = useProxiedModel(props, 'viewMode');
22251
22242
  // const inputMode = useProxiedModel(props, 'inputMode')
22243
+
22244
+ const minDate = vue.computed(() => {
22245
+ const date = adapter.date(props.min);
22246
+ return props.min && adapter.isValid(date) ? date : null;
22247
+ });
22248
+ const maxDate = vue.computed(() => {
22249
+ const date = adapter.date(props.max);
22250
+ return props.max && adapter.isValid(date) ? date : null;
22251
+ });
22252
22252
  const internal = vue.computed(() => {
22253
- const value = adapter.date(model.value?.[0]);
22254
- return value && adapter.isValid(value) ? value : adapter.date();
22253
+ const today = adapter.date();
22254
+ let value = today;
22255
+ if (model.value?.[0]) {
22256
+ value = adapter.date(model.value[0]);
22257
+ } else if (minDate.value && adapter.isBefore(today, minDate.value)) {
22258
+ value = minDate.value;
22259
+ } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {
22260
+ value = maxDate.value;
22261
+ }
22262
+ return value && adapter.isValid(value) ? value : today;
22255
22263
  });
22256
22264
  const month = vue.ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22257
22265
  const year = vue.ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
@@ -22271,14 +22279,6 @@
22271
22279
  });
22272
22280
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22273
22281
  const headerTransition = vue.computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22274
- const minDate = vue.computed(() => {
22275
- const date = adapter.date(props.min);
22276
- return props.min && adapter.isValid(date) ? date : null;
22277
- });
22278
- const maxDate = vue.computed(() => {
22279
- const date = adapter.date(props.max);
22280
- return props.max && adapter.isValid(date) ? date : null;
22281
- });
22282
22282
  const disabled = vue.computed(() => {
22283
22283
  if (props.disabled) return true;
22284
22284
  const targets = [];
@@ -23057,6 +23057,14 @@
23057
23057
  callEvent(props['onClick:clear'], e);
23058
23058
  });
23059
23059
  }
23060
+ function onDragover(e) {
23061
+ e.preventDefault();
23062
+ }
23063
+ function onDrop(e) {
23064
+ e.preventDefault();
23065
+ if (!e.dataTransfer) return;
23066
+ model.value = [...(e.dataTransfer.files ?? [])];
23067
+ }
23060
23068
  vue.watch(model, newValue => {
23061
23069
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
23062
23070
  if (hasModelReset && inputRef.value) {
@@ -23109,7 +23117,9 @@
23109
23117
  "dirty": isDirty.value || props.dirty,
23110
23118
  "disabled": isDisabled.value,
23111
23119
  "focused": isFocused.value,
23112
- "error": isValid.value === false
23120
+ "error": isValid.value === false,
23121
+ "onDragover": onDragover,
23122
+ "onDrop": onDrop
23113
23123
  }), {
23114
23124
  ...slots,
23115
23125
  default: _ref4 => {
@@ -24592,7 +24602,7 @@
24592
24602
  "disabled": props.disabled,
24593
24603
  "inputmode": props.type === 'number' ? 'numeric' : 'text',
24594
24604
  "min": props.type === 'number' ? 0 : undefined,
24595
- "maxlength": "1",
24605
+ "maxlength": i === 0 ? length.value : '1',
24596
24606
  "placeholder": props.placeholder,
24597
24607
  "type": props.type === 'number' ? 'text' : props.type,
24598
24608
  "value": model.value[i],
@@ -28243,9 +28253,9 @@
28243
28253
  if (props.multiple === 'range') {
28244
28254
  const start = value[0];
28245
28255
  const end = value[value.length - 1];
28246
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}` : '';
28256
+ return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
28247
28257
  }
28248
- return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : '';
28258
+ return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
28249
28259
  });
28250
28260
  const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
28251
28261
  function onKeydown(e) {
@@ -28651,6 +28661,36 @@
28651
28661
  }
28652
28662
  });
28653
28663
 
28664
+ // Utilities
28665
+ const HOLD_REPEAT = 50;
28666
+ const HOLD_DELAY = 500;
28667
+ function useHold(_ref) {
28668
+ let {
28669
+ toggleUpDown
28670
+ } = _ref;
28671
+ let timeout = -1;
28672
+ let interval = -1;
28673
+ vue.onScopeDispose(holdStop);
28674
+ function holdStart(value) {
28675
+ holdStop();
28676
+ tick(value);
28677
+ timeout = window.setTimeout(() => {
28678
+ interval = window.setInterval(() => tick(value), HOLD_REPEAT);
28679
+ }, HOLD_DELAY);
28680
+ }
28681
+ function holdStop() {
28682
+ window.clearTimeout(timeout);
28683
+ window.clearInterval(interval);
28684
+ }
28685
+ function tick(value) {
28686
+ toggleUpDown(value === 'up');
28687
+ }
28688
+ return {
28689
+ holdStart,
28690
+ holdStop
28691
+ };
28692
+ }
28693
+
28654
28694
  // Types
28655
28695
 
28656
28696
  const makeVNumberInputProps = propsFactory({
@@ -28680,7 +28720,7 @@
28680
28720
  type: Number,
28681
28721
  default: 0
28682
28722
  },
28683
- ...omit(makeVTextFieldProps({}), ['modelValue'])
28723
+ ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
28684
28724
  }, 'VNumberInput');
28685
28725
  const VNumberInput = genericComponent()({
28686
28726
  name: 'VNumberInput',
@@ -28695,9 +28735,19 @@
28695
28735
  slots
28696
28736
  } = _ref;
28697
28737
  const vTextFieldRef = vue.ref();
28738
+ const {
28739
+ holdStart,
28740
+ holdStop
28741
+ } = useHold({
28742
+ toggleUpDown
28743
+ });
28698
28744
  const form = useForm(props);
28699
28745
  const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
28700
- const isFocused = vue.ref(false);
28746
+ const {
28747
+ isFocused,
28748
+ focus,
28749
+ blur
28750
+ } = useFocus(props);
28701
28751
  function correctPrecision(val) {
28702
28752
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28703
28753
  const fixed = precision == null ? String(val) : val.toFixed(precision);
@@ -28707,8 +28757,8 @@
28707
28757
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28708
28758
  const _inputText = vue.shallowRef(null);
28709
28759
  vue.watchEffect(() => {
28710
- if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null || controlsDisabled.value) {
28711
- _inputText.value = model.value && !isNaN(model.value) ? String(model.value) : null;
28760
+ if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
28761
+ _inputText.value = null;
28712
28762
  } else if (!isNaN(model.value)) {
28713
28763
  _inputText.value = correctPrecision(model.value);
28714
28764
  }
@@ -28741,10 +28791,18 @@
28741
28791
  const controlNodeSize = vue.computed(() => controlVariant.value === 'split' ? 'default' : 'small');
28742
28792
  const controlNodeDefaultHeight = vue.computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
28743
28793
  const incrementSlotProps = vue.computed(() => ({
28744
- click: onClickUp
28794
+ props: {
28795
+ onClick: onControlClick,
28796
+ onPointerup: onControlMouseup,
28797
+ onPointerdown: onUpControlMousedown
28798
+ }
28745
28799
  }));
28746
28800
  const decrementSlotProps = vue.computed(() => ({
28747
- click: onClickDown
28801
+ props: {
28802
+ onClick: onControlClick,
28803
+ onPointerup: onControlMouseup,
28804
+ onPointerdown: onDownControlMousedown
28805
+ }
28748
28806
  }));
28749
28807
  vue.watch(() => props.precision, () => formatInputValue());
28750
28808
  vue.onMounted(() => {
@@ -28771,14 +28829,6 @@
28771
28829
  if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28772
28830
  }
28773
28831
  }
28774
- function onClickUp(e) {
28775
- e.stopPropagation();
28776
- toggleUpDown();
28777
- }
28778
- function onClickDown(e) {
28779
- e.stopPropagation();
28780
- toggleUpDown(false);
28781
- }
28782
28832
  function onBeforeinput(e) {
28783
28833
  if (!e.data) return;
28784
28834
  const existingTxt = e.target?.value;
@@ -28816,8 +28866,29 @@
28816
28866
  }
28817
28867
  }
28818
28868
  }
28819
- function onControlMousedown(e) {
28869
+ function onControlClick(e) {
28870
+ e.stopPropagation();
28871
+ }
28872
+ function onControlMouseup(e) {
28873
+ const el = e.currentTarget;
28874
+ el?.releasePointerCapture(e.pointerId);
28875
+ e.preventDefault();
28820
28876
  e.stopPropagation();
28877
+ holdStop();
28878
+ }
28879
+ function onUpControlMousedown(e) {
28880
+ const el = e.currentTarget;
28881
+ el?.setPointerCapture(e.pointerId);
28882
+ e.preventDefault();
28883
+ e.stopPropagation();
28884
+ holdStart('up');
28885
+ }
28886
+ function onDownControlMousedown(e) {
28887
+ const el = e.currentTarget;
28888
+ el?.setPointerCapture(e.pointerId);
28889
+ e.preventDefault();
28890
+ e.stopPropagation();
28891
+ holdStart('down');
28821
28892
  }
28822
28893
  function clampModel() {
28823
28894
  if (controlsDisabled.value) return;
@@ -28846,11 +28917,11 @@
28846
28917
  inputText.value = model.value.toString();
28847
28918
  }
28848
28919
  function onFocus() {
28849
- isFocused.value = true;
28920
+ focus();
28850
28921
  trimDecimalZeros();
28851
28922
  }
28852
28923
  function onBlur() {
28853
- isFocused.value = false;
28924
+ blur();
28854
28925
  clampModel();
28855
28926
  }
28856
28927
  useRender(() => {
@@ -28867,8 +28938,9 @@
28867
28938
  "data-testid": "increment",
28868
28939
  "aria-hidden": "true",
28869
28940
  "icon": incrementIcon.value,
28870
- "onClick": onClickUp,
28871
- "onMousedown": onControlMousedown,
28941
+ "onClick": onControlClick,
28942
+ "onPointerup": onControlMouseup,
28943
+ "onPointerdown": onUpControlMousedown,
28872
28944
  "size": controlNodeSize.value,
28873
28945
  "tabindex": "-1"
28874
28946
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -28897,8 +28969,9 @@
28897
28969
  "icon": decrementIcon.value,
28898
28970
  "size": controlNodeSize.value,
28899
28971
  "tabindex": "-1",
28900
- "onClick": onClickDown,
28901
- "onMousedown": onControlMousedown
28972
+ "onClick": onControlClick,
28973
+ "onPointerup": onControlMouseup,
28974
+ "onPointerdown": onDownControlMousedown
28902
28975
  }, null) : vue.createVNode(VDefaultsProvider, {
28903
28976
  "key": "decrement-defaults",
28904
28977
  "defaults": {
@@ -28942,6 +29015,7 @@
28942
29015
  "ref": vTextFieldRef,
28943
29016
  "modelValue": inputText.value,
28944
29017
  "onUpdate:modelValue": $event => inputText.value = $event,
29018
+ "validationValue": model.value,
28945
29019
  "onBeforeinput": onBeforeinput,
28946
29020
  "onFocus": onFocus,
28947
29021
  "onBlur": onBlur,
@@ -30126,7 +30200,6 @@
30126
30200
 
30127
30201
  const makeVTreeviewItemProps = propsFactory({
30128
30202
  loading: Boolean,
30129
- onToggleExpand: EventProp(),
30130
30203
  toggleIcon: IconValue,
30131
30204
  ...makeVListItemProps({
30132
30205
  slim: true
@@ -30135,9 +30208,13 @@
30135
30208
  const VTreeviewItem = genericComponent()({
30136
30209
  name: 'VTreeviewItem',
30137
30210
  props: makeVTreeviewItemProps(),
30211
+ emits: {
30212
+ toggleExpand: value => true
30213
+ },
30138
30214
  setup(props, _ref) {
30139
30215
  let {
30140
- slots
30216
+ slots,
30217
+ emit
30141
30218
  } = _ref;
30142
30219
  const visibleIds = vue.inject(VTreeviewSymbol, {
30143
30220
  visibleIds: vue.ref()
@@ -30152,6 +30229,10 @@
30152
30229
  vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
30153
30230
  }
30154
30231
  }
30232
+ function onClickAction(e) {
30233
+ e.preventDefault();
30234
+ emit('toggleExpand', e);
30235
+ }
30155
30236
  useRender(() => {
30156
30237
  const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
30157
30238
  const hasPrepend = slots.prepend || props.toggleIcon;
@@ -30171,12 +30252,12 @@
30171
30252
  return vue.createVNode(vue.Fragment, null, [vue.createVNode(VListItemAction, {
30172
30253
  "start": false
30173
30254
  }, {
30174
- default: () => [props.toggleIcon && vue.createVNode(VBtn, {
30255
+ default: () => [props.toggleIcon ? vue.createVNode(VBtn, {
30175
30256
  "density": "compact",
30176
30257
  "icon": props.toggleIcon,
30177
30258
  "loading": props.loading,
30178
30259
  "variant": "text",
30179
- "onClick": props.onToggleExpand
30260
+ "onClick": onClickAction
30180
30261
  }, {
30181
30262
  loader() {
30182
30263
  return vue.createVNode(VProgressCircular, {
@@ -30185,7 +30266,9 @@
30185
30266
  "width": "2"
30186
30267
  }, null);
30187
30268
  }
30188
- })]
30269
+ }) : vue.createVNode("div", {
30270
+ "class": "v-treeview-item__level"
30271
+ }, null)]
30189
30272
  }), slots.prepend?.(slotProps)]);
30190
30273
  } : undefined
30191
30274
  });
@@ -30217,7 +30300,8 @@
30217
30300
  returnObject: Boolean,
30218
30301
  selectable: Boolean,
30219
30302
  selectedColor: String,
30220
- selectStrategy: [String, Function, Object]
30303
+ selectStrategy: [String, Function, Object],
30304
+ ...makeDensityProps()
30221
30305
  }, 'VTreeviewChildren');
30222
30306
  const VTreeviewChildren = genericComponent()({
30223
30307
  name: 'VTreeviewChildren',
@@ -30257,6 +30341,7 @@
30257
30341
  "disabled": props.disabled,
30258
30342
  "loading": loading,
30259
30343
  "color": props.selectedColor,
30344
+ "density": props.density,
30260
30345
  "indeterminate": slotProps.isIndeterminate,
30261
30346
  "indeterminateIcon": props.indeterminateIcon,
30262
30347
  "falseIcon": props.falseIcon,
@@ -30333,6 +30418,7 @@
30333
30418
  return flat;
30334
30419
  }
30335
30420
  const makeVTreeviewProps = propsFactory({
30421
+ fluid: Boolean,
30336
30422
  openAll: Boolean,
30337
30423
  search: String,
30338
30424
  ...makeFilterProps({
@@ -30446,7 +30532,9 @@
30446
30532
  return vue.createVNode(VList, vue.mergeProps({
30447
30533
  "ref": vListRef
30448
30534
  }, listProps, {
30449
- "class": ['v-treeview', props.class],
30535
+ "class": ['v-treeview', {
30536
+ 'v-treeview--fluid': props.fluid
30537
+ }, props.class],
30450
30538
  "open-strategy": "multiple",
30451
30539
  "style": props.style,
30452
30540
  "opened": opened.value,
@@ -30456,6 +30544,7 @@
30456
30544
  "onUpdate:selected": $event => selected.value = $event
30457
30545
  }), {
30458
30546
  default: () => [vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
30547
+ "density": props.density,
30459
30548
  "returnObject": props.returnObject,
30460
30549
  "items": items.value
30461
30550
  }), slots)]
@@ -30963,7 +31052,7 @@
30963
31052
  goTo
30964
31053
  };
30965
31054
  }
30966
- const version$1 = "3.7.13";
31055
+ const version$1 = "3.7.15";
30967
31056
  createVuetify$1.version = version$1;
30968
31057
 
30969
31058
  // Vue's inject() can only be used in setup
@@ -31216,7 +31305,7 @@
31216
31305
 
31217
31306
  /* eslint-disable local-rules/sort-imports */
31218
31307
 
31219
- const version = "3.7.13";
31308
+ const version = "3.7.15";
31220
31309
 
31221
31310
  /* eslint-disable local-rules/sort-imports */
31222
31311