vuetify 3.3.19 → 3.3.21

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 (105) hide show
  1. package/dist/json/attributes.json +43 -31
  2. package/dist/json/importMap-labs.json +4 -4
  3. package/dist/json/importMap.json +4 -4
  4. package/dist/json/tags.json +3 -0
  5. package/dist/json/web-types.json +97 -70
  6. package/dist/vuetify-labs.css +5073 -5056
  7. package/dist/vuetify-labs.d.ts +240 -220
  8. package/dist/vuetify-labs.esm.js +101 -62
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +101 -62
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +5452 -5440
  13. package/dist/vuetify.d.ts +168 -166
  14. package/dist/vuetify.esm.js +56 -41
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +56 -41
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +775 -773
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.mts +2 -0
  22. package/lib/blueprints/md1.d.mts +2 -0
  23. package/lib/blueprints/md2.d.mts +2 -0
  24. package/lib/blueprints/md3.d.mts +2 -0
  25. package/lib/components/VAutocomplete/index.d.mts +14 -14
  26. package/lib/components/VCheckbox/index.d.mts +8 -8
  27. package/lib/components/VChip/VChip.css +67 -67
  28. package/lib/components/VChip/_variables.scss +1 -1
  29. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -0
  30. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  31. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  32. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  33. package/lib/components/VCombobox/index.d.mts +14 -14
  34. package/lib/components/VField/VField.css +3 -0
  35. package/lib/components/VField/VField.sass +3 -0
  36. package/lib/components/VField/_variables.scss +1 -0
  37. package/lib/components/VFileInput/index.d.mts +20 -20
  38. package/lib/components/VInput/index.d.mts +8 -8
  39. package/lib/components/VList/VList.css +0 -3
  40. package/lib/components/VList/VList.sass +0 -4
  41. package/lib/components/VList/VListItem.css +9 -1
  42. package/lib/components/VList/VListItem.sass +12 -1
  43. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +8 -7
  44. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  45. package/lib/components/VRadioGroup/index.d.mts +8 -8
  46. package/lib/components/VRangeSlider/index.d.mts +8 -8
  47. package/lib/components/VSelect/index.d.mts +14 -14
  48. package/lib/components/VSlider/VSliderThumb.css +2 -0
  49. package/lib/components/VSlider/VSliderThumb.mjs +7 -6
  50. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  51. package/lib/components/VSlider/VSliderThumb.sass +2 -0
  52. package/lib/components/VSlider/VSliderTrack.mjs +5 -7
  53. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  54. package/lib/components/VSlider/index.d.mts +8 -8
  55. package/lib/components/VSlider/slider.mjs +4 -10
  56. package/lib/components/VSlider/slider.mjs.map +1 -1
  57. package/lib/components/VSwitch/index.d.mts +8 -8
  58. package/lib/components/VTable/VTable.css +3 -0
  59. package/lib/components/VTable/VTable.sass +3 -0
  60. package/lib/components/VTextField/VTextField.mjs +1 -1
  61. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  62. package/lib/components/VTextField/index.d.mts +26 -26
  63. package/lib/components/VTextarea/index.d.mts +20 -20
  64. package/lib/components/VTimeline/VTimeline.css +0 -1
  65. package/lib/components/VTimeline/VTimeline.sass +0 -1
  66. package/lib/components/VValidation/index.d.mts +8 -8
  67. package/lib/components/index.d.mts +164 -164
  68. package/lib/composables/forwardRefs.mjs +4 -4
  69. package/lib/composables/forwardRefs.mjs.map +1 -1
  70. package/lib/composables/validation.mjs +2 -2
  71. package/lib/composables/validation.mjs.map +1 -1
  72. package/lib/entry-bundler.mjs +1 -1
  73. package/lib/framework.mjs +1 -1
  74. package/lib/index.d.mts +4 -2
  75. package/lib/labs/VDataTable/VDataTableFooter.mjs +12 -4
  76. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  77. package/lib/labs/VDataTable/VDataTableVirtual.mjs +5 -5
  78. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  79. package/lib/labs/VDataTable/composables/select.mjs +6 -6
  80. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  81. package/lib/labs/VDataTable/index.d.mts +48 -48
  82. package/lib/labs/VDateInput/index.d.mts +14 -14
  83. package/lib/labs/VDatePicker/VDatePickerMonth.mjs +14 -2
  84. package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  85. package/lib/labs/VDatePicker/index.d.mts +18 -0
  86. package/lib/labs/VDateRangePicker/index.d.mts +12 -0
  87. package/lib/labs/VOtpInput/VOtpInput.css +3 -2
  88. package/lib/labs/VOtpInput/VOtpInput.mjs +7 -4
  89. package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
  90. package/lib/labs/VOtpInput/VOtpInput.sass +9 -8
  91. package/lib/labs/VOtpInput/_variables.scss +9 -0
  92. package/lib/labs/VSkeletonLoader/VSkeletonLoader.css +4 -0
  93. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +2 -1
  94. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  95. package/lib/labs/VSkeletonLoader/VSkeletonLoader.sass +4 -0
  96. package/lib/labs/VSkeletonLoader/index.d.mts +8 -8
  97. package/lib/labs/components.d.mts +74 -56
  98. package/lib/labs/date/DateAdapter.mjs.map +1 -1
  99. package/lib/labs/date/adapters/vuetify.d.mts +4 -0
  100. package/lib/labs/date/adapters/vuetify.mjs +18 -1
  101. package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
  102. package/lib/labs/date/date.mjs +1 -1
  103. package/lib/labs/date/date.mjs.map +1 -1
  104. package/lib/labs/date/index.d.mts +4 -0
  105. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.3.19
2
+ * Vuetify v3.3.21
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -263,6 +263,10 @@ function padEnd(str, length) {
263
263
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
264
264
  return str + char.repeat(Math.max(0, length - str.length));
265
265
  }
266
+ function padStart(str, length) {
267
+ let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
268
+ return char.repeat(Math.max(0, length - str.length)) + str;
269
+ }
266
270
  function chunk(str) {
267
271
  let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
268
272
  const chunked = [];
@@ -6289,7 +6293,7 @@ function useValidation(props) {
6289
6293
  const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));
6290
6294
  const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));
6291
6295
  const errorMessages = computed(() => {
6292
- return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6296
+ return props.errorMessages?.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6293
6297
  });
6294
6298
  const validateOn = computed(() => {
6295
6299
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
@@ -6303,7 +6307,7 @@ function useValidation(props) {
6303
6307
  };
6304
6308
  });
6305
6309
  const isValid = computed(() => {
6306
- if (props.error || props.errorMessages.length) return false;
6310
+ if (props.error || props.errorMessages?.length) return false;
6307
6311
  if (!props.rules.length) return true;
6308
6312
  if (isPristine.value) {
6309
6313
  return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
@@ -9799,7 +9803,7 @@ function forwardRefs(target) {
9799
9803
  }
9800
9804
 
9801
9805
  // Skip internal properties
9802
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9806
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9803
9807
  for (const ref of refs) {
9804
9808
  if (ref.value && Reflect.has(ref.value, key)) {
9805
9809
  const val = Reflect.get(ref.value, key);
@@ -9813,7 +9817,7 @@ function forwardRefs(target) {
9813
9817
  }
9814
9818
 
9815
9819
  // Skip internal properties
9816
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9820
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9817
9821
  for (const ref of refs) {
9818
9822
  if (ref.value && Reflect.has(ref.value, key)) {
9819
9823
  return true;
@@ -9827,7 +9831,7 @@ function forwardRefs(target) {
9827
9831
  }
9828
9832
 
9829
9833
  // Skip internal properties
9830
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9834
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9831
9835
  for (const ref of refs) {
9832
9836
  if (ref.value && Reflect.has(ref.value, key)) {
9833
9837
  return Reflect.set(ref.value, key, value);
@@ -9840,7 +9844,7 @@ function forwardRefs(target) {
9840
9844
  if (descriptor) return descriptor;
9841
9845
 
9842
9846
  // Skip internal properties
9843
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9847
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9844
9848
 
9845
9849
  // Check each ref's own properties
9846
9850
  for (const ref of refs) {
@@ -10453,7 +10457,7 @@ const VTextField = genericComponent()({
10453
10457
  }
10454
10458
  }
10455
10459
  useRender(() => {
10456
- const hasCounter = !!(slots.counter || props.counter || props.counterValue);
10460
+ const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);
10457
10461
  const hasDetails = !!(hasCounter || slots.details);
10458
10462
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
10459
10463
  const [{
@@ -13126,6 +13130,7 @@ const VColorPickerCanvas = defineComponent({
13126
13130
  x,
13127
13131
  y
13128
13132
  } = val;
13133
+ _dotPosition.value = val;
13129
13134
  emit('update:color', {
13130
13135
  h: props.color?.h ?? 0,
13131
13136
  s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
@@ -13620,13 +13625,8 @@ const useSlider = _ref => {
13620
13625
  isRtl
13621
13626
  } = useRtl();
13622
13627
  const isReversed = toRef(props, 'reverse');
13623
- const horizontalDirection = computed(() => {
13624
- let hd = isRtl.value ? 'rtl' : 'ltr';
13625
- if (props.reverse) {
13626
- hd = hd === 'rtl' ? 'ltr' : 'rtl';
13627
- }
13628
- return hd;
13629
- });
13628
+ const vertical = computed(() => props.direction === 'vertical');
13629
+ const indexFromEnd = computed(() => vertical.value !== isReversed.value);
13630
13630
  const {
13631
13631
  min,
13632
13632
  max,
@@ -13639,7 +13639,6 @@ const useSlider = _ref => {
13639
13639
  const trackSize = computed(() => parseInt(props.trackSize, 10));
13640
13640
  const numTicks = computed(() => (max.value - min.value) / step.value);
13641
13641
  const disabled = toRef(props, 'disabled');
13642
- const vertical = computed(() => props.direction === 'vertical');
13643
13642
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
13644
13643
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
13645
13644
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -13660,7 +13659,7 @@ const useSlider = _ref => {
13660
13659
 
13661
13660
  // It is possible for left to be NaN, force to number
13662
13661
  let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
13663
- if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
13662
+ if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
13664
13663
  return roundValue(min.value + clickPos * (max.value - min.value));
13665
13664
  }
13666
13665
  const handleStop = e => {
@@ -13764,8 +13763,8 @@ const useSlider = _ref => {
13764
13763
  direction: toRef(props, 'direction'),
13765
13764
  elevation: toRef(props, 'elevation'),
13766
13765
  hasLabels,
13767
- horizontalDirection,
13768
13766
  isReversed,
13767
+ indexFromEnd,
13769
13768
  min,
13770
13769
  max,
13771
13770
  mousePressed,
@@ -13838,23 +13837,24 @@ const VSliderThumb = genericComponent()({
13838
13837
  } = _ref;
13839
13838
  const slider = inject$1(VSliderSymbol);
13840
13839
  const {
13840
+ isRtl,
13841
13841
  rtlClasses
13842
13842
  } = useRtl();
13843
13843
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
13844
13844
  const {
13845
13845
  thumbColor,
13846
13846
  step,
13847
- vertical,
13848
13847
  disabled,
13849
13848
  thumbSize,
13850
13849
  thumbLabel,
13851
13850
  direction,
13851
+ isReversed,
13852
+ vertical,
13852
13853
  readonly,
13853
13854
  elevation,
13854
- isReversed,
13855
- horizontalDirection,
13856
13855
  mousePressed,
13857
- decimals
13856
+ decimals,
13857
+ indexFromEnd
13858
13858
  } = slider;
13859
13859
  const {
13860
13860
  textColorClasses,
@@ -13880,7 +13880,7 @@ const VSliderThumb = genericComponent()({
13880
13880
  const _step = step.value || 0.1;
13881
13881
  const steps = (props.max - props.min) / _step;
13882
13882
  if ([left, right, down, up].includes(e.key)) {
13883
- const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up];
13883
+ const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
13884
13884
  const direction = increase.includes(e.key) ? 1 : -1;
13885
13885
  const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
13886
13886
  value = value + direction * _step * multipliers.value[multiplier];
@@ -13899,7 +13899,7 @@ const VSliderThumb = genericComponent()({
13899
13899
  newValue != null && emit('update:modelValue', newValue);
13900
13900
  }
13901
13901
  useRender(() => {
13902
- const positionPercentage = convertToUnit(vertical.value || isReversed.value ? 100 - props.position : props.position, '%');
13902
+ const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');
13903
13903
  const {
13904
13904
  elevationClasses
13905
13905
  } = useElevation(computed(() => !disabled.value ? elevation.value : undefined));
@@ -13972,7 +13972,6 @@ const VSliderTrack = genericComponent()({
13972
13972
  if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');
13973
13973
  const {
13974
13974
  color,
13975
- horizontalDirection,
13976
13975
  parsedTicks,
13977
13976
  rounded,
13978
13977
  showTicks,
@@ -13982,7 +13981,8 @@ const VSliderTrack = genericComponent()({
13982
13981
  trackSize,
13983
13982
  vertical,
13984
13983
  min,
13985
- max
13984
+ max,
13985
+ indexFromEnd
13986
13986
  } = slider;
13987
13987
  const {
13988
13988
  roundedClasses
@@ -13995,7 +13995,7 @@ const VSliderTrack = genericComponent()({
13995
13995
  backgroundColorClasses: trackColorClasses,
13996
13996
  backgroundColorStyles: trackColorStyles
13997
13997
  } = useBackgroundColor(trackColor);
13998
- const startDir = computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`);
13998
+ const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);
13999
13999
  const endDir = computed(() => vertical.value ? 'height' : 'width');
14000
14000
  const backgroundStyles = computed(() => {
14001
14001
  return {
@@ -14014,7 +14014,6 @@ const VSliderTrack = genericComponent()({
14014
14014
  if (!showTicks.value) return [];
14015
14015
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
14016
14016
  return ticks.map((tick, index) => {
14017
- const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
14018
14017
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
14019
14018
  return createVNode("div", {
14020
14019
  "key": tick.value,
@@ -14024,7 +14023,7 @@ const VSliderTrack = genericComponent()({
14024
14023
  'v-slider-track__tick--last': tick.value === max.value
14025
14024
  }],
14026
14025
  "style": {
14027
- [directionProperty]: directionValue
14026
+ [startDir.value]: directionValue
14028
14027
  }
14029
14028
  }, [(tick.label || slots['tick-label']) && createVNode("div", {
14030
14029
  "class": "v-slider-track__tick-label"
@@ -14039,8 +14038,7 @@ const VSliderTrack = genericComponent()({
14039
14038
  "class": ['v-slider-track', roundedClasses.value, props.class],
14040
14039
  "style": [{
14041
14040
  '--v-slider-track-size': convertToUnit(trackSize.value),
14042
- '--v-slider-tick-size': convertToUnit(tickSize.value),
14043
- direction: !vertical.value ? horizontalDirection.value : undefined
14041
+ '--v-slider-tick-size': convertToUnit(tickSize.value)
14044
14042
  }, props.style]
14045
14043
  }, [createVNode("div", {
14046
14044
  "class": ['v-slider-track__background', trackColorClasses.value, {
@@ -14927,7 +14925,7 @@ const VCombobox = genericComponent()({
14927
14925
  return _search.value;
14928
14926
  },
14929
14927
  set: val => {
14930
- _search.value = val;
14928
+ _search.value = val ?? '';
14931
14929
  if (!props.multiple) {
14932
14930
  model.value = [transformItem$3(props, val)];
14933
14931
  }
@@ -16961,15 +16959,15 @@ const VNavigationDrawer = genericComponent()({
16961
16959
  });
16962
16960
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
16963
16961
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
16964
- if (props.expandOnHover && props.rail != null) {
16962
+ useToggleScope(() => props.expandOnHover && props.rail != null, () => {
16965
16963
  watch(isHovering, val => emit('update:rail', !val));
16966
- }
16967
- if (!props.disableResizeWatcher) {
16964
+ });
16965
+ useToggleScope(() => !props.disableResizeWatcher, () => {
16968
16966
  watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));
16969
- }
16970
- if (!props.disableRouteWatcher && router) {
16967
+ });
16968
+ useToggleScope(() => !props.disableRouteWatcher && !!router, () => {
16971
16969
  watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
16972
- }
16970
+ });
16973
16971
  watch(() => props.permanent, val => {
16974
16972
  if (val) isActive.value = true;
16975
16973
  });
@@ -20010,7 +20008,7 @@ const singleSelectStrategy = {
20010
20008
  items,
20011
20009
  value
20012
20010
  } = _ref;
20013
- return new Set(value ? [toRaw(items[0]?.value)] : []);
20011
+ return new Set(value ? [items[0]?.value] : []);
20014
20012
  },
20015
20013
  selectAll: _ref2 => {
20016
20014
  let {
@@ -20034,7 +20032,7 @@ const pageSelectStrategy = {
20034
20032
  selected
20035
20033
  } = _ref4;
20036
20034
  for (const item of items) {
20037
- if (value) selected.add(toRaw(item.value));else selected.delete(toRaw(item.value));
20035
+ if (value) selected.add(item.value);else selected.delete(item.value);
20038
20036
  }
20039
20037
  return selected;
20040
20038
  },
@@ -20066,7 +20064,7 @@ const allSelectStrategy = {
20066
20064
  selected
20067
20065
  } = _ref7;
20068
20066
  for (const item of items) {
20069
- if (value) selected.add(toRaw(item.value));else selected.delete(toRaw(item.value));
20067
+ if (value) selected.add(item.value);else selected.delete(item.value);
20070
20068
  }
20071
20069
  return selected;
20072
20070
  },
@@ -20126,10 +20124,10 @@ function provideSelection(props, _ref9) {
20126
20124
  }
20127
20125
  });
20128
20126
  function isSelected(items) {
20129
- return wrapInArray(items).every(item => selected.value.has(toRaw(item.value)));
20127
+ return wrapInArray(items).every(item => selected.value.has(item.value));
20130
20128
  }
20131
20129
  function isSomeSelected(items) {
20132
- return wrapInArray(items).some(item => selected.value.has(toRaw(item.value)));
20130
+ return wrapInArray(items).some(item => selected.value.has(item.value));
20133
20131
  }
20134
20132
  function select(items, value) {
20135
20133
  const newSelected = selectStrategy.value.select({
@@ -20532,10 +20530,18 @@ const VDataTableFooter = genericComponent()({
20532
20530
  itemsPerPage,
20533
20531
  setItemsPerPage
20534
20532
  } = usePagination();
20535
- const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => ({
20536
- ...option,
20537
- title: t(option.title)
20538
- })));
20533
+ const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => {
20534
+ if (typeof option === 'number') {
20535
+ return {
20536
+ value: option,
20537
+ title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)
20538
+ };
20539
+ }
20540
+ return {
20541
+ ...option,
20542
+ title: t(option.title)
20543
+ };
20544
+ }));
20539
20545
  return () => createVNode("div", {
20540
20546
  "class": "v-data-table-footer"
20541
20547
  }, [slots.prepend?.(), createVNode("div", {
@@ -21583,7 +21589,7 @@ const VDataTableVirtual = genericComponent()({
21583
21589
  }, [createVNode("td", {
21584
21590
  "colspan": columns.value.length,
21585
21591
  "style": {
21586
- height: convertToUnit(paddingTop.value),
21592
+ height: 0,
21587
21593
  border: 0
21588
21594
  }
21589
21595
  }, null)]), createVNode(VDataTableRows, mergeProps(dataTableRowsProps, {
@@ -21591,9 +21597,9 @@ const VDataTableVirtual = genericComponent()({
21591
21597
  }), {
21592
21598
  ...slots,
21593
21599
  item: itemSlotProps => createVNode(VVirtualScrollItem, {
21594
- "key": itemSlotProps.item.index,
21600
+ "key": itemSlotProps.internalItem.index,
21595
21601
  "renderless": true,
21596
- "onUpdate:height": height => handleItemResize(itemSlotProps.item.index, height)
21602
+ "onUpdate:height": height => handleItemResize(itemSlotProps.internalItem.index, height)
21597
21603
  }, {
21598
21604
  default: _ref2 => {
21599
21605
  let {
@@ -21604,7 +21610,7 @@ const VDataTableVirtual = genericComponent()({
21604
21610
  itemRef
21605
21611
  }) ?? createVNode(VDataTableRow, mergeProps(itemSlotProps.props, {
21606
21612
  "ref": itemRef,
21607
- "key": itemSlotProps.item.index
21613
+ "key": itemSlotProps.internalItem.index
21608
21614
  }), slots);
21609
21615
  }
21610
21616
  })
@@ -21616,7 +21622,7 @@ const VDataTableVirtual = genericComponent()({
21616
21622
  }, [createVNode("td", {
21617
21623
  "colspan": columns.value.length,
21618
21624
  "style": {
21619
- height: convertToUnit(paddingBottom.value),
21625
+ height: 0,
21620
21626
  border: 0
21621
21627
  }
21622
21628
  }, null)])])])]),
@@ -22166,6 +22172,17 @@ function format(value, formatString, locale) {
22166
22172
  }
22167
22173
  return new Intl.DateTimeFormat(locale, options).format(date);
22168
22174
  }
22175
+ function toISO(adapter, value) {
22176
+ const date = adapter.toJsDate(value);
22177
+ const year = date.getFullYear();
22178
+ const month = padStart(String(date.getMonth() + 1), 2, '0');
22179
+ const day = padStart(String(date.getDate()), 2, '0');
22180
+ return `${year}-${month}-${day}`;
22181
+ }
22182
+ function parseISO(value) {
22183
+ const [year, month, day] = value.split('-').map(Number);
22184
+ return new Date(year, month - 1, day);
22185
+ }
22169
22186
  function addDays(date, amount) {
22170
22187
  const d = new Date(date);
22171
22188
  d.setDate(d.getDate() + amount);
@@ -22240,6 +22257,12 @@ class VuetifyDateAdapter {
22240
22257
  toJsDate(date) {
22241
22258
  return date;
22242
22259
  }
22260
+ toISO(date) {
22261
+ return toISO(this, date);
22262
+ }
22263
+ parseISO(date) {
22264
+ return parseISO(date);
22265
+ }
22243
22266
  addDays(date, amount) {
22244
22267
  return addDays(date, amount);
22245
22268
  }
@@ -22341,7 +22364,7 @@ function createDate(options) {
22341
22364
  lv: 'lv-LV',
22342
22365
  lt: 'lt-LT',
22343
22366
  nl: 'nl-NL',
22344
- no: 'nn-NO',
22367
+ no: 'no-NO',
22345
22368
  pl: 'pl-PL',
22346
22369
  pt: 'pt-PT',
22347
22370
  ro: 'ro-RO',
@@ -22520,6 +22543,7 @@ function useDatePicker() {
22520
22543
  }
22521
22544
 
22522
22545
  const makeVDatePickerMonthProps = propsFactory({
22546
+ allowedDates: [Array, Function],
22523
22547
  color: String,
22524
22548
  showAdjacentMonths: Boolean,
22525
22549
  hideWeekdays: Boolean,
@@ -22606,7 +22630,6 @@ const VDatePickerMonth = genericComponent()({
22606
22630
  const startDate = validDates[0];
22607
22631
  const endDate = validDates[1];
22608
22632
  return days.map((date, index) => {
22609
- const isDisabled = !!(props.min && adapter.isAfter(props.min, date) || props.max && adapter.isAfter(date, props.max));
22610
22633
  const isStart = startDate && adapter.isSameDay(date, startDate);
22611
22634
  const isEnd = endDate && adapter.isSameDay(date, endDate);
22612
22635
  const isAdjacent = !adapter.isSameMonth(date, month.value);
@@ -22617,7 +22640,7 @@ const VDatePickerMonth = genericComponent()({
22617
22640
  formatted: adapter.format(date, 'keyboardDate'),
22618
22641
  year: adapter.getYear(date),
22619
22642
  month: adapter.getMonth(date),
22620
- isDisabled,
22643
+ isDisabled: isDisabled(date),
22621
22644
  isWeekStart: index % 7 === 0,
22622
22645
  isWeekEnd: index % 7 === 6,
22623
22646
  isSelected: isStart || isEnd,
@@ -22644,6 +22667,18 @@ const VDatePickerMonth = genericComponent()({
22644
22667
  backgroundColorClasses,
22645
22668
  backgroundColorStyles
22646
22669
  } = useBackgroundColor(props, 'color');
22670
+ function isDisabled(value) {
22671
+ const date = adapter.date(value);
22672
+ if (props.min && adapter.isAfter(props.min, date)) return true;
22673
+ if (props.max && adapter.isAfter(date, props.max)) return true;
22674
+ if (Array.isArray(props.allowedDates)) {
22675
+ return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
22676
+ }
22677
+ if (typeof props.allowedDates === 'function') {
22678
+ return !props.allowedDates(date);
22679
+ }
22680
+ return false;
22681
+ }
22647
22682
  function selectDate(date) {
22648
22683
  let newModel = props.modelValue.slice();
22649
22684
  if (props.multiple) {
@@ -23548,7 +23583,7 @@ const makeVOtpInputProps = propsFactory({
23548
23583
  placeholder: String,
23549
23584
  type: {
23550
23585
  type: String,
23551
- default: 'text'
23586
+ default: 'number'
23552
23587
  },
23553
23588
  ...makeDimensionProps(),
23554
23589
  ...makeFocusProps(),
@@ -23594,7 +23629,7 @@ const VOtpInput = genericComponent()({
23594
23629
  model.value = array;
23595
23630
  let target = null;
23596
23631
  if (focusIndex.value > model.value.length) {
23597
- target = model.value.length + 1;
23632
+ target = model.value.length;
23598
23633
  } else if (focusIndex.value + 1 !== Number(props.length)) {
23599
23634
  target = 'next';
23600
23635
  } else {
@@ -23619,7 +23654,7 @@ const VOtpInput = genericComponent()({
23619
23654
  target = 'prev';
23620
23655
  } else {
23621
23656
  requestAnimationFrame(() => {
23622
- inputRef.value[index].select();
23657
+ inputRef.value[index]?.select();
23623
23658
  });
23624
23659
  }
23625
23660
  }
@@ -23648,6 +23683,9 @@ const VOtpInput = genericComponent()({
23648
23683
  }
23649
23684
  provideDefaults({
23650
23685
  VField: {
23686
+ color: computed(() => props.color),
23687
+ bgColor: computed(() => props.color),
23688
+ baseColor: computed(() => props.baseColor),
23651
23689
  disabled: computed(() => props.disabled),
23652
23690
  error: computed(() => props.error),
23653
23691
  variant: computed(() => props.variant)
@@ -23663,7 +23701,7 @@ const VOtpInput = genericComponent()({
23663
23701
  watch(focusIndex, val => {
23664
23702
  if (val < 0) return;
23665
23703
  IN_BROWSER && window.requestAnimationFrame(() => {
23666
- inputRef.value[val].select();
23704
+ inputRef.value[val]?.select();
23667
23705
  });
23668
23706
  });
23669
23707
  useRender(() => {
@@ -23758,6 +23796,7 @@ const rootTypes = {
23758
23796
  'list-item-avatar-two-line': 'avatar, sentences',
23759
23797
  'list-item-three-line': 'paragraph',
23760
23798
  'list-item-avatar-three-line': 'avatar, paragraph',
23799
+ ossein: 'ossein',
23761
23800
  paragraph: 'text@3',
23762
23801
  sentences: 'text@2',
23763
23802
  subtitle: 'text',
@@ -23822,7 +23861,7 @@ const makeVSkeletonLoaderProps = propsFactory({
23822
23861
  },
23823
23862
  type: {
23824
23863
  type: [String, Array],
23825
- default: 'image'
23864
+ default: 'ossein'
23826
23865
  },
23827
23866
  ...makeDimensionProps(),
23828
23867
  ...makeElevationProps(),
@@ -24614,7 +24653,7 @@ function createVuetify$1() {
24614
24653
  date
24615
24654
  };
24616
24655
  }
24617
- const version$1 = "3.3.19";
24656
+ const version$1 = "3.3.21";
24618
24657
  createVuetify$1.version = version$1;
24619
24658
 
24620
24659
  // Vue's inject() can only be used in setup
@@ -24628,7 +24667,7 @@ function inject(key) {
24628
24667
 
24629
24668
  /* eslint-disable local-rules/sort-imports */
24630
24669
 
24631
- const version = "3.3.19";
24670
+ const version = "3.3.21";
24632
24671
 
24633
24672
  /* eslint-disable local-rules/sort-imports */
24634
24673