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
  */
@@ -258,6 +258,10 @@ function padEnd(str, length) {
258
258
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
259
259
  return str + char.repeat(Math.max(0, length - str.length));
260
260
  }
261
+ function padStart(str, length) {
262
+ let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
263
+ return char.repeat(Math.max(0, length - str.length)) + str;
264
+ }
261
265
  function chunk(str) {
262
266
  let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
263
267
  const chunked = [];
@@ -6277,7 +6281,7 @@ function useValidation(props) {
6277
6281
  const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));
6278
6282
  const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));
6279
6283
  const errorMessages = computed(() => {
6280
- return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6284
+ return props.errorMessages?.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6281
6285
  });
6282
6286
  const validateOn = computed(() => {
6283
6287
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
@@ -6291,7 +6295,7 @@ function useValidation(props) {
6291
6295
  };
6292
6296
  });
6293
6297
  const isValid = computed(() => {
6294
- if (props.error || props.errorMessages.length) return false;
6298
+ if (props.error || props.errorMessages?.length) return false;
6295
6299
  if (!props.rules.length) return true;
6296
6300
  if (isPristine.value) {
6297
6301
  return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
@@ -9787,7 +9791,7 @@ function forwardRefs(target) {
9787
9791
  }
9788
9792
 
9789
9793
  // Skip internal properties
9790
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9794
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9791
9795
  for (const ref of refs) {
9792
9796
  if (ref.value && Reflect.has(ref.value, key)) {
9793
9797
  const val = Reflect.get(ref.value, key);
@@ -9801,7 +9805,7 @@ function forwardRefs(target) {
9801
9805
  }
9802
9806
 
9803
9807
  // Skip internal properties
9804
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9808
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9805
9809
  for (const ref of refs) {
9806
9810
  if (ref.value && Reflect.has(ref.value, key)) {
9807
9811
  return true;
@@ -9815,7 +9819,7 @@ function forwardRefs(target) {
9815
9819
  }
9816
9820
 
9817
9821
  // Skip internal properties
9818
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9822
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9819
9823
  for (const ref of refs) {
9820
9824
  if (ref.value && Reflect.has(ref.value, key)) {
9821
9825
  return Reflect.set(ref.value, key, value);
@@ -9828,7 +9832,7 @@ function forwardRefs(target) {
9828
9832
  if (descriptor) return descriptor;
9829
9833
 
9830
9834
  // Skip internal properties
9831
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9835
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9832
9836
 
9833
9837
  // Check each ref's own properties
9834
9838
  for (const ref of refs) {
@@ -10441,7 +10445,7 @@ const VTextField = genericComponent()({
10441
10445
  }
10442
10446
  }
10443
10447
  useRender(() => {
10444
- const hasCounter = !!(slots.counter || props.counter || props.counterValue);
10448
+ const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);
10445
10449
  const hasDetails = !!(hasCounter || slots.details);
10446
10450
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
10447
10451
  const [{
@@ -13114,6 +13118,7 @@ const VColorPickerCanvas = defineComponent({
13114
13118
  x,
13115
13119
  y
13116
13120
  } = val;
13121
+ _dotPosition.value = val;
13117
13122
  emit('update:color', {
13118
13123
  h: props.color?.h ?? 0,
13119
13124
  s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
@@ -13608,13 +13613,8 @@ const useSlider = _ref => {
13608
13613
  isRtl
13609
13614
  } = useRtl();
13610
13615
  const isReversed = toRef(props, 'reverse');
13611
- const horizontalDirection = computed(() => {
13612
- let hd = isRtl.value ? 'rtl' : 'ltr';
13613
- if (props.reverse) {
13614
- hd = hd === 'rtl' ? 'ltr' : 'rtl';
13615
- }
13616
- return hd;
13617
- });
13616
+ const vertical = computed(() => props.direction === 'vertical');
13617
+ const indexFromEnd = computed(() => vertical.value !== isReversed.value);
13618
13618
  const {
13619
13619
  min,
13620
13620
  max,
@@ -13627,7 +13627,6 @@ const useSlider = _ref => {
13627
13627
  const trackSize = computed(() => parseInt(props.trackSize, 10));
13628
13628
  const numTicks = computed(() => (max.value - min.value) / step.value);
13629
13629
  const disabled = toRef(props, 'disabled');
13630
- const vertical = computed(() => props.direction === 'vertical');
13631
13630
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
13632
13631
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
13633
13632
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -13648,7 +13647,7 @@ const useSlider = _ref => {
13648
13647
 
13649
13648
  // It is possible for left to be NaN, force to number
13650
13649
  let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
13651
- if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
13650
+ if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
13652
13651
  return roundValue(min.value + clickPos * (max.value - min.value));
13653
13652
  }
13654
13653
  const handleStop = e => {
@@ -13752,8 +13751,8 @@ const useSlider = _ref => {
13752
13751
  direction: toRef(props, 'direction'),
13753
13752
  elevation: toRef(props, 'elevation'),
13754
13753
  hasLabels,
13755
- horizontalDirection,
13756
13754
  isReversed,
13755
+ indexFromEnd,
13757
13756
  min,
13758
13757
  max,
13759
13758
  mousePressed,
@@ -13826,23 +13825,24 @@ const VSliderThumb = genericComponent()({
13826
13825
  } = _ref;
13827
13826
  const slider = inject$1(VSliderSymbol);
13828
13827
  const {
13828
+ isRtl,
13829
13829
  rtlClasses
13830
13830
  } = useRtl();
13831
13831
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
13832
13832
  const {
13833
13833
  thumbColor,
13834
13834
  step,
13835
- vertical,
13836
13835
  disabled,
13837
13836
  thumbSize,
13838
13837
  thumbLabel,
13839
13838
  direction,
13839
+ isReversed,
13840
+ vertical,
13840
13841
  readonly,
13841
13842
  elevation,
13842
- isReversed,
13843
- horizontalDirection,
13844
13843
  mousePressed,
13845
- decimals
13844
+ decimals,
13845
+ indexFromEnd
13846
13846
  } = slider;
13847
13847
  const {
13848
13848
  textColorClasses,
@@ -13868,7 +13868,7 @@ const VSliderThumb = genericComponent()({
13868
13868
  const _step = step.value || 0.1;
13869
13869
  const steps = (props.max - props.min) / _step;
13870
13870
  if ([left, right, down, up].includes(e.key)) {
13871
- const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up];
13871
+ const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
13872
13872
  const direction = increase.includes(e.key) ? 1 : -1;
13873
13873
  const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
13874
13874
  value = value + direction * _step * multipliers.value[multiplier];
@@ -13887,7 +13887,7 @@ const VSliderThumb = genericComponent()({
13887
13887
  newValue != null && emit('update:modelValue', newValue);
13888
13888
  }
13889
13889
  useRender(() => {
13890
- const positionPercentage = convertToUnit(vertical.value || isReversed.value ? 100 - props.position : props.position, '%');
13890
+ const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');
13891
13891
  const {
13892
13892
  elevationClasses
13893
13893
  } = useElevation(computed(() => !disabled.value ? elevation.value : undefined));
@@ -13960,7 +13960,6 @@ const VSliderTrack = genericComponent()({
13960
13960
  if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');
13961
13961
  const {
13962
13962
  color,
13963
- horizontalDirection,
13964
13963
  parsedTicks,
13965
13964
  rounded,
13966
13965
  showTicks,
@@ -13970,7 +13969,8 @@ const VSliderTrack = genericComponent()({
13970
13969
  trackSize,
13971
13970
  vertical,
13972
13971
  min,
13973
- max
13972
+ max,
13973
+ indexFromEnd
13974
13974
  } = slider;
13975
13975
  const {
13976
13976
  roundedClasses
@@ -13983,7 +13983,7 @@ const VSliderTrack = genericComponent()({
13983
13983
  backgroundColorClasses: trackColorClasses,
13984
13984
  backgroundColorStyles: trackColorStyles
13985
13985
  } = useBackgroundColor(trackColor);
13986
- const startDir = computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`);
13986
+ const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);
13987
13987
  const endDir = computed(() => vertical.value ? 'height' : 'width');
13988
13988
  const backgroundStyles = computed(() => {
13989
13989
  return {
@@ -14002,7 +14002,6 @@ const VSliderTrack = genericComponent()({
14002
14002
  if (!showTicks.value) return [];
14003
14003
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
14004
14004
  return ticks.map((tick, index) => {
14005
- const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
14006
14005
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
14007
14006
  return createVNode("div", {
14008
14007
  "key": tick.value,
@@ -14012,7 +14011,7 @@ const VSliderTrack = genericComponent()({
14012
14011
  'v-slider-track__tick--last': tick.value === max.value
14013
14012
  }],
14014
14013
  "style": {
14015
- [directionProperty]: directionValue
14014
+ [startDir.value]: directionValue
14016
14015
  }
14017
14016
  }, [(tick.label || slots['tick-label']) && createVNode("div", {
14018
14017
  "class": "v-slider-track__tick-label"
@@ -14027,8 +14026,7 @@ const VSliderTrack = genericComponent()({
14027
14026
  "class": ['v-slider-track', roundedClasses.value, props.class],
14028
14027
  "style": [{
14029
14028
  '--v-slider-track-size': convertToUnit(trackSize.value),
14030
- '--v-slider-tick-size': convertToUnit(tickSize.value),
14031
- direction: !vertical.value ? horizontalDirection.value : undefined
14029
+ '--v-slider-tick-size': convertToUnit(tickSize.value)
14032
14030
  }, props.style]
14033
14031
  }, [createVNode("div", {
14034
14032
  "class": ['v-slider-track__background', trackColorClasses.value, {
@@ -14915,7 +14913,7 @@ const VCombobox = genericComponent()({
14915
14913
  return _search.value;
14916
14914
  },
14917
14915
  set: val => {
14918
- _search.value = val;
14916
+ _search.value = val ?? '';
14919
14917
  if (!props.multiple) {
14920
14918
  model.value = [transformItem$1(props, val)];
14921
14919
  }
@@ -16949,15 +16947,15 @@ const VNavigationDrawer = genericComponent()({
16949
16947
  });
16950
16948
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
16951
16949
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
16952
- if (props.expandOnHover && props.rail != null) {
16950
+ useToggleScope(() => props.expandOnHover && props.rail != null, () => {
16953
16951
  watch(isHovering, val => emit('update:rail', !val));
16954
- }
16955
- if (!props.disableResizeWatcher) {
16952
+ });
16953
+ useToggleScope(() => !props.disableResizeWatcher, () => {
16956
16954
  watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));
16957
- }
16958
- if (!props.disableRouteWatcher && router) {
16955
+ });
16956
+ useToggleScope(() => !props.disableRouteWatcher && !!router, () => {
16959
16957
  watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
16960
- }
16958
+ });
16961
16959
  watch(() => props.permanent, val => {
16962
16960
  if (val) isActive.value = true;
16963
16961
  });
@@ -20130,6 +20128,17 @@ function format(value, formatString, locale) {
20130
20128
  }
20131
20129
  return new Intl.DateTimeFormat(locale, options).format(date);
20132
20130
  }
20131
+ function toISO(adapter, value) {
20132
+ const date = adapter.toJsDate(value);
20133
+ const year = date.getFullYear();
20134
+ const month = padStart(String(date.getMonth() + 1), 2, '0');
20135
+ const day = padStart(String(date.getDate()), 2, '0');
20136
+ return `${year}-${month}-${day}`;
20137
+ }
20138
+ function parseISO(value) {
20139
+ const [year, month, day] = value.split('-').map(Number);
20140
+ return new Date(year, month - 1, day);
20141
+ }
20133
20142
  function addDays(date, amount) {
20134
20143
  const d = new Date(date);
20135
20144
  d.setDate(d.getDate() + amount);
@@ -20204,6 +20213,12 @@ class VuetifyDateAdapter {
20204
20213
  toJsDate(date) {
20205
20214
  return date;
20206
20215
  }
20216
+ toISO(date) {
20217
+ return toISO(this, date);
20218
+ }
20219
+ parseISO(date) {
20220
+ return parseISO(date);
20221
+ }
20207
20222
  addDays(date, amount) {
20208
20223
  return addDays(date, amount);
20209
20224
  }
@@ -20305,7 +20320,7 @@ function createDate(options) {
20305
20320
  lv: 'lv-LV',
20306
20321
  lt: 'lt-LT',
20307
20322
  nl: 'nl-NL',
20308
- no: 'nn-NO',
20323
+ no: 'no-NO',
20309
20324
  pl: 'pl-PL',
20310
20325
  pt: 'pt-PT',
20311
20326
  ro: 'ro-RO',
@@ -20411,7 +20426,7 @@ function createVuetify$1() {
20411
20426
  date
20412
20427
  };
20413
20428
  }
20414
- const version$1 = "3.3.19";
20429
+ const version$1 = "3.3.21";
20415
20430
  createVuetify$1.version = version$1;
20416
20431
 
20417
20432
  // Vue's inject() can only be used in setup
@@ -20436,7 +20451,7 @@ const createVuetify = function () {
20436
20451
  ...options
20437
20452
  });
20438
20453
  };
20439
- const version = "3.3.19";
20454
+ const version = "3.3.21";
20440
20455
  createVuetify.version = version;
20441
20456
 
20442
20457
  export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };