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
  */
@@ -267,6 +267,10 @@
267
267
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
268
268
  return str + char.repeat(Math.max(0, length - str.length));
269
269
  }
270
+ function padStart(str, length) {
271
+ let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
272
+ return char.repeat(Math.max(0, length - str.length)) + str;
273
+ }
270
274
  function chunk(str) {
271
275
  let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
272
276
  const chunked = [];
@@ -6293,7 +6297,7 @@
6293
6297
  const isDisabled = vue.computed(() => !!(props.disabled ?? form?.isDisabled.value));
6294
6298
  const isReadonly = vue.computed(() => !!(props.readonly ?? form?.isReadonly.value));
6295
6299
  const errorMessages = vue.computed(() => {
6296
- return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6300
+ return props.errorMessages?.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6297
6301
  });
6298
6302
  const validateOn = vue.computed(() => {
6299
6303
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
@@ -6307,7 +6311,7 @@
6307
6311
  };
6308
6312
  });
6309
6313
  const isValid = vue.computed(() => {
6310
- if (props.error || props.errorMessages.length) return false;
6314
+ if (props.error || props.errorMessages?.length) return false;
6311
6315
  if (!props.rules.length) return true;
6312
6316
  if (isPristine.value) {
6313
6317
  return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
@@ -9803,7 +9807,7 @@
9803
9807
  }
9804
9808
 
9805
9809
  // Skip internal properties
9806
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9810
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9807
9811
  for (const ref of refs) {
9808
9812
  if (ref.value && Reflect.has(ref.value, key)) {
9809
9813
  const val = Reflect.get(ref.value, key);
@@ -9817,7 +9821,7 @@
9817
9821
  }
9818
9822
 
9819
9823
  // Skip internal properties
9820
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9824
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9821
9825
  for (const ref of refs) {
9822
9826
  if (ref.value && Reflect.has(ref.value, key)) {
9823
9827
  return true;
@@ -9831,7 +9835,7 @@
9831
9835
  }
9832
9836
 
9833
9837
  // Skip internal properties
9834
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9838
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9835
9839
  for (const ref of refs) {
9836
9840
  if (ref.value && Reflect.has(ref.value, key)) {
9837
9841
  return Reflect.set(ref.value, key, value);
@@ -9844,7 +9848,7 @@
9844
9848
  if (descriptor) return descriptor;
9845
9849
 
9846
9850
  // Skip internal properties
9847
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9851
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9848
9852
 
9849
9853
  // Check each ref's own properties
9850
9854
  for (const ref of refs) {
@@ -10457,7 +10461,7 @@
10457
10461
  }
10458
10462
  }
10459
10463
  useRender(() => {
10460
- const hasCounter = !!(slots.counter || props.counter || props.counterValue);
10464
+ const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);
10461
10465
  const hasDetails = !!(hasCounter || slots.details);
10462
10466
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
10463
10467
  const [{
@@ -13130,6 +13134,7 @@
13130
13134
  x,
13131
13135
  y
13132
13136
  } = val;
13137
+ _dotPosition.value = val;
13133
13138
  emit('update:color', {
13134
13139
  h: props.color?.h ?? 0,
13135
13140
  s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
@@ -13624,13 +13629,8 @@
13624
13629
  isRtl
13625
13630
  } = useRtl();
13626
13631
  const isReversed = vue.toRef(props, 'reverse');
13627
- const horizontalDirection = vue.computed(() => {
13628
- let hd = isRtl.value ? 'rtl' : 'ltr';
13629
- if (props.reverse) {
13630
- hd = hd === 'rtl' ? 'ltr' : 'rtl';
13631
- }
13632
- return hd;
13633
- });
13632
+ const vertical = vue.computed(() => props.direction === 'vertical');
13633
+ const indexFromEnd = vue.computed(() => vertical.value !== isReversed.value);
13634
13634
  const {
13635
13635
  min,
13636
13636
  max,
@@ -13643,7 +13643,6 @@
13643
13643
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
13644
13644
  const numTicks = vue.computed(() => (max.value - min.value) / step.value);
13645
13645
  const disabled = vue.toRef(props, 'disabled');
13646
- const vertical = vue.computed(() => props.direction === 'vertical');
13647
13646
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
13648
13647
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
13649
13648
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -13664,7 +13663,7 @@
13664
13663
 
13665
13664
  // It is possible for left to be NaN, force to number
13666
13665
  let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
13667
- if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
13666
+ if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
13668
13667
  return roundValue(min.value + clickPos * (max.value - min.value));
13669
13668
  }
13670
13669
  const handleStop = e => {
@@ -13768,8 +13767,8 @@
13768
13767
  direction: vue.toRef(props, 'direction'),
13769
13768
  elevation: vue.toRef(props, 'elevation'),
13770
13769
  hasLabels,
13771
- horizontalDirection,
13772
13770
  isReversed,
13771
+ indexFromEnd,
13773
13772
  min,
13774
13773
  max,
13775
13774
  mousePressed,
@@ -13842,23 +13841,24 @@
13842
13841
  } = _ref;
13843
13842
  const slider = vue.inject(VSliderSymbol);
13844
13843
  const {
13844
+ isRtl,
13845
13845
  rtlClasses
13846
13846
  } = useRtl();
13847
13847
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
13848
13848
  const {
13849
13849
  thumbColor,
13850
13850
  step,
13851
- vertical,
13852
13851
  disabled,
13853
13852
  thumbSize,
13854
13853
  thumbLabel,
13855
13854
  direction,
13855
+ isReversed,
13856
+ vertical,
13856
13857
  readonly,
13857
13858
  elevation,
13858
- isReversed,
13859
- horizontalDirection,
13860
13859
  mousePressed,
13861
- decimals
13860
+ decimals,
13861
+ indexFromEnd
13862
13862
  } = slider;
13863
13863
  const {
13864
13864
  textColorClasses,
@@ -13884,7 +13884,7 @@
13884
13884
  const _step = step.value || 0.1;
13885
13885
  const steps = (props.max - props.min) / _step;
13886
13886
  if ([left, right, down, up].includes(e.key)) {
13887
- const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up];
13887
+ const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
13888
13888
  const direction = increase.includes(e.key) ? 1 : -1;
13889
13889
  const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
13890
13890
  value = value + direction * _step * multipliers.value[multiplier];
@@ -13903,7 +13903,7 @@
13903
13903
  newValue != null && emit('update:modelValue', newValue);
13904
13904
  }
13905
13905
  useRender(() => {
13906
- const positionPercentage = convertToUnit(vertical.value || isReversed.value ? 100 - props.position : props.position, '%');
13906
+ const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');
13907
13907
  const {
13908
13908
  elevationClasses
13909
13909
  } = useElevation(vue.computed(() => !disabled.value ? elevation.value : undefined));
@@ -13976,7 +13976,6 @@
13976
13976
  if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');
13977
13977
  const {
13978
13978
  color,
13979
- horizontalDirection,
13980
13979
  parsedTicks,
13981
13980
  rounded,
13982
13981
  showTicks,
@@ -13986,7 +13985,8 @@
13986
13985
  trackSize,
13987
13986
  vertical,
13988
13987
  min,
13989
- max
13988
+ max,
13989
+ indexFromEnd
13990
13990
  } = slider;
13991
13991
  const {
13992
13992
  roundedClasses
@@ -13999,7 +13999,7 @@
13999
13999
  backgroundColorClasses: trackColorClasses,
14000
14000
  backgroundColorStyles: trackColorStyles
14001
14001
  } = useBackgroundColor(trackColor);
14002
- const startDir = vue.computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`);
14002
+ const startDir = vue.computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);
14003
14003
  const endDir = vue.computed(() => vertical.value ? 'height' : 'width');
14004
14004
  const backgroundStyles = vue.computed(() => {
14005
14005
  return {
@@ -14018,7 +14018,6 @@
14018
14018
  if (!showTicks.value) return [];
14019
14019
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
14020
14020
  return ticks.map((tick, index) => {
14021
- const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
14022
14021
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
14023
14022
  return vue.createVNode("div", {
14024
14023
  "key": tick.value,
@@ -14028,7 +14027,7 @@
14028
14027
  'v-slider-track__tick--last': tick.value === max.value
14029
14028
  }],
14030
14029
  "style": {
14031
- [directionProperty]: directionValue
14030
+ [startDir.value]: directionValue
14032
14031
  }
14033
14032
  }, [(tick.label || slots['tick-label']) && vue.createVNode("div", {
14034
14033
  "class": "v-slider-track__tick-label"
@@ -14043,8 +14042,7 @@
14043
14042
  "class": ['v-slider-track', roundedClasses.value, props.class],
14044
14043
  "style": [{
14045
14044
  '--v-slider-track-size': convertToUnit(trackSize.value),
14046
- '--v-slider-tick-size': convertToUnit(tickSize.value),
14047
- direction: !vertical.value ? horizontalDirection.value : undefined
14045
+ '--v-slider-tick-size': convertToUnit(tickSize.value)
14048
14046
  }, props.style]
14049
14047
  }, [vue.createVNode("div", {
14050
14048
  "class": ['v-slider-track__background', trackColorClasses.value, {
@@ -14931,7 +14929,7 @@
14931
14929
  return _search.value;
14932
14930
  },
14933
14931
  set: val => {
14934
- _search.value = val;
14932
+ _search.value = val ?? '';
14935
14933
  if (!props.multiple) {
14936
14934
  model.value = [transformItem$3(props, val)];
14937
14935
  }
@@ -16965,15 +16963,15 @@
16965
16963
  });
16966
16964
  const isTemporary = vue.computed(() => !props.permanent && (mobile.value || props.temporary));
16967
16965
  const isSticky = vue.computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
16968
- if (props.expandOnHover && props.rail != null) {
16966
+ useToggleScope(() => props.expandOnHover && props.rail != null, () => {
16969
16967
  vue.watch(isHovering, val => emit('update:rail', !val));
16970
- }
16971
- if (!props.disableResizeWatcher) {
16968
+ });
16969
+ useToggleScope(() => !props.disableResizeWatcher, () => {
16972
16970
  vue.watch(isTemporary, val => !props.permanent && vue.nextTick(() => isActive.value = !val));
16973
- }
16974
- if (!props.disableRouteWatcher && router) {
16971
+ });
16972
+ useToggleScope(() => !props.disableRouteWatcher && !!router, () => {
16975
16973
  vue.watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
16976
- }
16974
+ });
16977
16975
  vue.watch(() => props.permanent, val => {
16978
16976
  if (val) isActive.value = true;
16979
16977
  });
@@ -20014,7 +20012,7 @@
20014
20012
  items,
20015
20013
  value
20016
20014
  } = _ref;
20017
- return new Set(value ? [vue.toRaw(items[0]?.value)] : []);
20015
+ return new Set(value ? [items[0]?.value] : []);
20018
20016
  },
20019
20017
  selectAll: _ref2 => {
20020
20018
  let {
@@ -20038,7 +20036,7 @@
20038
20036
  selected
20039
20037
  } = _ref4;
20040
20038
  for (const item of items) {
20041
- if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
20039
+ if (value) selected.add(item.value);else selected.delete(item.value);
20042
20040
  }
20043
20041
  return selected;
20044
20042
  },
@@ -20070,7 +20068,7 @@
20070
20068
  selected
20071
20069
  } = _ref7;
20072
20070
  for (const item of items) {
20073
- if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
20071
+ if (value) selected.add(item.value);else selected.delete(item.value);
20074
20072
  }
20075
20073
  return selected;
20076
20074
  },
@@ -20130,10 +20128,10 @@
20130
20128
  }
20131
20129
  });
20132
20130
  function isSelected(items) {
20133
- return wrapInArray(items).every(item => selected.value.has(vue.toRaw(item.value)));
20131
+ return wrapInArray(items).every(item => selected.value.has(item.value));
20134
20132
  }
20135
20133
  function isSomeSelected(items) {
20136
- return wrapInArray(items).some(item => selected.value.has(vue.toRaw(item.value)));
20134
+ return wrapInArray(items).some(item => selected.value.has(item.value));
20137
20135
  }
20138
20136
  function select(items, value) {
20139
20137
  const newSelected = selectStrategy.value.select({
@@ -20536,10 +20534,18 @@
20536
20534
  itemsPerPage,
20537
20535
  setItemsPerPage
20538
20536
  } = usePagination();
20539
- const itemsPerPageOptions = vue.computed(() => props.itemsPerPageOptions.map(option => ({
20540
- ...option,
20541
- title: t(option.title)
20542
- })));
20537
+ const itemsPerPageOptions = vue.computed(() => props.itemsPerPageOptions.map(option => {
20538
+ if (typeof option === 'number') {
20539
+ return {
20540
+ value: option,
20541
+ title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)
20542
+ };
20543
+ }
20544
+ return {
20545
+ ...option,
20546
+ title: t(option.title)
20547
+ };
20548
+ }));
20543
20549
  return () => vue.createVNode("div", {
20544
20550
  "class": "v-data-table-footer"
20545
20551
  }, [slots.prepend?.(), vue.createVNode("div", {
@@ -21587,7 +21593,7 @@
21587
21593
  }, [vue.createVNode("td", {
21588
21594
  "colspan": columns.value.length,
21589
21595
  "style": {
21590
- height: convertToUnit(paddingTop.value),
21596
+ height: 0,
21591
21597
  border: 0
21592
21598
  }
21593
21599
  }, null)]), vue.createVNode(VDataTableRows, vue.mergeProps(dataTableRowsProps, {
@@ -21595,9 +21601,9 @@
21595
21601
  }), {
21596
21602
  ...slots,
21597
21603
  item: itemSlotProps => vue.createVNode(VVirtualScrollItem, {
21598
- "key": itemSlotProps.item.index,
21604
+ "key": itemSlotProps.internalItem.index,
21599
21605
  "renderless": true,
21600
- "onUpdate:height": height => handleItemResize(itemSlotProps.item.index, height)
21606
+ "onUpdate:height": height => handleItemResize(itemSlotProps.internalItem.index, height)
21601
21607
  }, {
21602
21608
  default: _ref2 => {
21603
21609
  let {
@@ -21608,7 +21614,7 @@
21608
21614
  itemRef
21609
21615
  }) ?? vue.createVNode(VDataTableRow, vue.mergeProps(itemSlotProps.props, {
21610
21616
  "ref": itemRef,
21611
- "key": itemSlotProps.item.index
21617
+ "key": itemSlotProps.internalItem.index
21612
21618
  }), slots);
21613
21619
  }
21614
21620
  })
@@ -21620,7 +21626,7 @@
21620
21626
  }, [vue.createVNode("td", {
21621
21627
  "colspan": columns.value.length,
21622
21628
  "style": {
21623
- height: convertToUnit(paddingBottom.value),
21629
+ height: 0,
21624
21630
  border: 0
21625
21631
  }
21626
21632
  }, null)])])])]),
@@ -22170,6 +22176,17 @@
22170
22176
  }
22171
22177
  return new Intl.DateTimeFormat(locale, options).format(date);
22172
22178
  }
22179
+ function toISO(adapter, value) {
22180
+ const date = adapter.toJsDate(value);
22181
+ const year = date.getFullYear();
22182
+ const month = padStart(String(date.getMonth() + 1), 2, '0');
22183
+ const day = padStart(String(date.getDate()), 2, '0');
22184
+ return `${year}-${month}-${day}`;
22185
+ }
22186
+ function parseISO(value) {
22187
+ const [year, month, day] = value.split('-').map(Number);
22188
+ return new Date(year, month - 1, day);
22189
+ }
22173
22190
  function addDays(date, amount) {
22174
22191
  const d = new Date(date);
22175
22192
  d.setDate(d.getDate() + amount);
@@ -22244,6 +22261,12 @@
22244
22261
  toJsDate(date) {
22245
22262
  return date;
22246
22263
  }
22264
+ toISO(date) {
22265
+ return toISO(this, date);
22266
+ }
22267
+ parseISO(date) {
22268
+ return parseISO(date);
22269
+ }
22247
22270
  addDays(date, amount) {
22248
22271
  return addDays(date, amount);
22249
22272
  }
@@ -22345,7 +22368,7 @@
22345
22368
  lv: 'lv-LV',
22346
22369
  lt: 'lt-LT',
22347
22370
  nl: 'nl-NL',
22348
- no: 'nn-NO',
22371
+ no: 'no-NO',
22349
22372
  pl: 'pl-PL',
22350
22373
  pt: 'pt-PT',
22351
22374
  ro: 'ro-RO',
@@ -22524,6 +22547,7 @@
22524
22547
  }
22525
22548
 
22526
22549
  const makeVDatePickerMonthProps = propsFactory({
22550
+ allowedDates: [Array, Function],
22527
22551
  color: String,
22528
22552
  showAdjacentMonths: Boolean,
22529
22553
  hideWeekdays: Boolean,
@@ -22610,7 +22634,6 @@
22610
22634
  const startDate = validDates[0];
22611
22635
  const endDate = validDates[1];
22612
22636
  return days.map((date, index) => {
22613
- const isDisabled = !!(props.min && adapter.isAfter(props.min, date) || props.max && adapter.isAfter(date, props.max));
22614
22637
  const isStart = startDate && adapter.isSameDay(date, startDate);
22615
22638
  const isEnd = endDate && adapter.isSameDay(date, endDate);
22616
22639
  const isAdjacent = !adapter.isSameMonth(date, month.value);
@@ -22621,7 +22644,7 @@
22621
22644
  formatted: adapter.format(date, 'keyboardDate'),
22622
22645
  year: adapter.getYear(date),
22623
22646
  month: adapter.getMonth(date),
22624
- isDisabled,
22647
+ isDisabled: isDisabled(date),
22625
22648
  isWeekStart: index % 7 === 0,
22626
22649
  isWeekEnd: index % 7 === 6,
22627
22650
  isSelected: isStart || isEnd,
@@ -22648,6 +22671,18 @@
22648
22671
  backgroundColorClasses,
22649
22672
  backgroundColorStyles
22650
22673
  } = useBackgroundColor(props, 'color');
22674
+ function isDisabled(value) {
22675
+ const date = adapter.date(value);
22676
+ if (props.min && adapter.isAfter(props.min, date)) return true;
22677
+ if (props.max && adapter.isAfter(date, props.max)) return true;
22678
+ if (Array.isArray(props.allowedDates)) {
22679
+ return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
22680
+ }
22681
+ if (typeof props.allowedDates === 'function') {
22682
+ return !props.allowedDates(date);
22683
+ }
22684
+ return false;
22685
+ }
22651
22686
  function selectDate(date) {
22652
22687
  let newModel = props.modelValue.slice();
22653
22688
  if (props.multiple) {
@@ -23552,7 +23587,7 @@
23552
23587
  placeholder: String,
23553
23588
  type: {
23554
23589
  type: String,
23555
- default: 'text'
23590
+ default: 'number'
23556
23591
  },
23557
23592
  ...makeDimensionProps(),
23558
23593
  ...makeFocusProps(),
@@ -23598,7 +23633,7 @@
23598
23633
  model.value = array;
23599
23634
  let target = null;
23600
23635
  if (focusIndex.value > model.value.length) {
23601
- target = model.value.length + 1;
23636
+ target = model.value.length;
23602
23637
  } else if (focusIndex.value + 1 !== Number(props.length)) {
23603
23638
  target = 'next';
23604
23639
  } else {
@@ -23623,7 +23658,7 @@
23623
23658
  target = 'prev';
23624
23659
  } else {
23625
23660
  requestAnimationFrame(() => {
23626
- inputRef.value[index].select();
23661
+ inputRef.value[index]?.select();
23627
23662
  });
23628
23663
  }
23629
23664
  }
@@ -23652,6 +23687,9 @@
23652
23687
  }
23653
23688
  provideDefaults({
23654
23689
  VField: {
23690
+ color: vue.computed(() => props.color),
23691
+ bgColor: vue.computed(() => props.color),
23692
+ baseColor: vue.computed(() => props.baseColor),
23655
23693
  disabled: vue.computed(() => props.disabled),
23656
23694
  error: vue.computed(() => props.error),
23657
23695
  variant: vue.computed(() => props.variant)
@@ -23667,7 +23705,7 @@
23667
23705
  vue.watch(focusIndex, val => {
23668
23706
  if (val < 0) return;
23669
23707
  IN_BROWSER && window.requestAnimationFrame(() => {
23670
- inputRef.value[val].select();
23708
+ inputRef.value[val]?.select();
23671
23709
  });
23672
23710
  });
23673
23711
  useRender(() => {
@@ -23762,6 +23800,7 @@
23762
23800
  'list-item-avatar-two-line': 'avatar, sentences',
23763
23801
  'list-item-three-line': 'paragraph',
23764
23802
  'list-item-avatar-three-line': 'avatar, paragraph',
23803
+ ossein: 'ossein',
23765
23804
  paragraph: 'text@3',
23766
23805
  sentences: 'text@2',
23767
23806
  subtitle: 'text',
@@ -23826,7 +23865,7 @@
23826
23865
  },
23827
23866
  type: {
23828
23867
  type: [String, Array],
23829
- default: 'image'
23868
+ default: 'ossein'
23830
23869
  },
23831
23870
  ...makeDimensionProps(),
23832
23871
  ...makeElevationProps(),
@@ -24618,7 +24657,7 @@
24618
24657
  date
24619
24658
  };
24620
24659
  }
24621
- const version$1 = "3.3.19";
24660
+ const version$1 = "3.3.21";
24622
24661
  createVuetify$1.version = version$1;
24623
24662
 
24624
24663
  // Vue's inject() can only be used in setup
@@ -24632,7 +24671,7 @@
24632
24671
 
24633
24672
  /* eslint-disable local-rules/sort-imports */
24634
24673
 
24635
- const version = "3.3.19";
24674
+ const version = "3.3.21";
24636
24675
 
24637
24676
  /* eslint-disable local-rules/sort-imports */
24638
24677