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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -262,6 +262,10 @@
262
262
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
263
263
  return str + char.repeat(Math.max(0, length - str.length));
264
264
  }
265
+ function padStart(str, length) {
266
+ let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
267
+ return char.repeat(Math.max(0, length - str.length)) + str;
268
+ }
265
269
  function chunk(str) {
266
270
  let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
267
271
  const chunked = [];
@@ -6281,7 +6285,7 @@
6281
6285
  const isDisabled = vue.computed(() => !!(props.disabled ?? form?.isDisabled.value));
6282
6286
  const isReadonly = vue.computed(() => !!(props.readonly ?? form?.isReadonly.value));
6283
6287
  const errorMessages = vue.computed(() => {
6284
- return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6288
+ return props.errorMessages?.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6285
6289
  });
6286
6290
  const validateOn = vue.computed(() => {
6287
6291
  let value = (props.validateOn ?? form?.validateOn.value) || 'input';
@@ -6295,7 +6299,7 @@
6295
6299
  };
6296
6300
  });
6297
6301
  const isValid = vue.computed(() => {
6298
- if (props.error || props.errorMessages.length) return false;
6302
+ if (props.error || props.errorMessages?.length) return false;
6299
6303
  if (!props.rules.length) return true;
6300
6304
  if (isPristine.value) {
6301
6305
  return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
@@ -9791,7 +9795,7 @@
9791
9795
  }
9792
9796
 
9793
9797
  // Skip internal properties
9794
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9798
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9795
9799
  for (const ref of refs) {
9796
9800
  if (ref.value && Reflect.has(ref.value, key)) {
9797
9801
  const val = Reflect.get(ref.value, key);
@@ -9805,7 +9809,7 @@
9805
9809
  }
9806
9810
 
9807
9811
  // Skip internal properties
9808
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9812
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9809
9813
  for (const ref of refs) {
9810
9814
  if (ref.value && Reflect.has(ref.value, key)) {
9811
9815
  return true;
@@ -9819,7 +9823,7 @@
9819
9823
  }
9820
9824
 
9821
9825
  // Skip internal properties
9822
- if (typeof key === 'symbol' || key.startsWith('__')) return false;
9826
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
9823
9827
  for (const ref of refs) {
9824
9828
  if (ref.value && Reflect.has(ref.value, key)) {
9825
9829
  return Reflect.set(ref.value, key, value);
@@ -9832,7 +9836,7 @@
9832
9836
  if (descriptor) return descriptor;
9833
9837
 
9834
9838
  // Skip internal properties
9835
- if (typeof key === 'symbol' || key.startsWith('__')) return;
9839
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
9836
9840
 
9837
9841
  // Check each ref's own properties
9838
9842
  for (const ref of refs) {
@@ -10445,7 +10449,7 @@
10445
10449
  }
10446
10450
  }
10447
10451
  useRender(() => {
10448
- const hasCounter = !!(slots.counter || props.counter || props.counterValue);
10452
+ const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);
10449
10453
  const hasDetails = !!(hasCounter || slots.details);
10450
10454
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
10451
10455
  const [{
@@ -13118,6 +13122,7 @@
13118
13122
  x,
13119
13123
  y
13120
13124
  } = val;
13125
+ _dotPosition.value = val;
13121
13126
  emit('update:color', {
13122
13127
  h: props.color?.h ?? 0,
13123
13128
  s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
@@ -13612,13 +13617,8 @@
13612
13617
  isRtl
13613
13618
  } = useRtl();
13614
13619
  const isReversed = vue.toRef(props, 'reverse');
13615
- const horizontalDirection = vue.computed(() => {
13616
- let hd = isRtl.value ? 'rtl' : 'ltr';
13617
- if (props.reverse) {
13618
- hd = hd === 'rtl' ? 'ltr' : 'rtl';
13619
- }
13620
- return hd;
13621
- });
13620
+ const vertical = vue.computed(() => props.direction === 'vertical');
13621
+ const indexFromEnd = vue.computed(() => vertical.value !== isReversed.value);
13622
13622
  const {
13623
13623
  min,
13624
13624
  max,
@@ -13631,7 +13631,6 @@
13631
13631
  const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
13632
13632
  const numTicks = vue.computed(() => (max.value - min.value) / step.value);
13633
13633
  const disabled = vue.toRef(props, 'disabled');
13634
- const vertical = vue.computed(() => props.direction === 'vertical');
13635
13634
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
13636
13635
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
13637
13636
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -13652,7 +13651,7 @@
13652
13651
 
13653
13652
  // It is possible for left to be NaN, force to number
13654
13653
  let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
13655
- if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
13654
+ if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
13656
13655
  return roundValue(min.value + clickPos * (max.value - min.value));
13657
13656
  }
13658
13657
  const handleStop = e => {
@@ -13756,8 +13755,8 @@
13756
13755
  direction: vue.toRef(props, 'direction'),
13757
13756
  elevation: vue.toRef(props, 'elevation'),
13758
13757
  hasLabels,
13759
- horizontalDirection,
13760
13758
  isReversed,
13759
+ indexFromEnd,
13761
13760
  min,
13762
13761
  max,
13763
13762
  mousePressed,
@@ -13830,23 +13829,24 @@
13830
13829
  } = _ref;
13831
13830
  const slider = vue.inject(VSliderSymbol);
13832
13831
  const {
13832
+ isRtl,
13833
13833
  rtlClasses
13834
13834
  } = useRtl();
13835
13835
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
13836
13836
  const {
13837
13837
  thumbColor,
13838
13838
  step,
13839
- vertical,
13840
13839
  disabled,
13841
13840
  thumbSize,
13842
13841
  thumbLabel,
13843
13842
  direction,
13843
+ isReversed,
13844
+ vertical,
13844
13845
  readonly,
13845
13846
  elevation,
13846
- isReversed,
13847
- horizontalDirection,
13848
13847
  mousePressed,
13849
- decimals
13848
+ decimals,
13849
+ indexFromEnd
13850
13850
  } = slider;
13851
13851
  const {
13852
13852
  textColorClasses,
@@ -13872,7 +13872,7 @@
13872
13872
  const _step = step.value || 0.1;
13873
13873
  const steps = (props.max - props.min) / _step;
13874
13874
  if ([left, right, down, up].includes(e.key)) {
13875
- const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up];
13875
+ const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
13876
13876
  const direction = increase.includes(e.key) ? 1 : -1;
13877
13877
  const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
13878
13878
  value = value + direction * _step * multipliers.value[multiplier];
@@ -13891,7 +13891,7 @@
13891
13891
  newValue != null && emit('update:modelValue', newValue);
13892
13892
  }
13893
13893
  useRender(() => {
13894
- const positionPercentage = convertToUnit(vertical.value || isReversed.value ? 100 - props.position : props.position, '%');
13894
+ const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%');
13895
13895
  const {
13896
13896
  elevationClasses
13897
13897
  } = useElevation(vue.computed(() => !disabled.value ? elevation.value : undefined));
@@ -13964,7 +13964,6 @@
13964
13964
  if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');
13965
13965
  const {
13966
13966
  color,
13967
- horizontalDirection,
13968
13967
  parsedTicks,
13969
13968
  rounded,
13970
13969
  showTicks,
@@ -13974,7 +13973,8 @@
13974
13973
  trackSize,
13975
13974
  vertical,
13976
13975
  min,
13977
- max
13976
+ max,
13977
+ indexFromEnd
13978
13978
  } = slider;
13979
13979
  const {
13980
13980
  roundedClasses
@@ -13987,7 +13987,7 @@
13987
13987
  backgroundColorClasses: trackColorClasses,
13988
13988
  backgroundColorStyles: trackColorStyles
13989
13989
  } = useBackgroundColor(trackColor);
13990
- const startDir = vue.computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`);
13990
+ const startDir = vue.computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);
13991
13991
  const endDir = vue.computed(() => vertical.value ? 'height' : 'width');
13992
13992
  const backgroundStyles = vue.computed(() => {
13993
13993
  return {
@@ -14006,7 +14006,6 @@
14006
14006
  if (!showTicks.value) return [];
14007
14007
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
14008
14008
  return ticks.map((tick, index) => {
14009
- const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
14010
14009
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
14011
14010
  return vue.createVNode("div", {
14012
14011
  "key": tick.value,
@@ -14016,7 +14015,7 @@
14016
14015
  'v-slider-track__tick--last': tick.value === max.value
14017
14016
  }],
14018
14017
  "style": {
14019
- [directionProperty]: directionValue
14018
+ [startDir.value]: directionValue
14020
14019
  }
14021
14020
  }, [(tick.label || slots['tick-label']) && vue.createVNode("div", {
14022
14021
  "class": "v-slider-track__tick-label"
@@ -14031,8 +14030,7 @@
14031
14030
  "class": ['v-slider-track', roundedClasses.value, props.class],
14032
14031
  "style": [{
14033
14032
  '--v-slider-track-size': convertToUnit(trackSize.value),
14034
- '--v-slider-tick-size': convertToUnit(tickSize.value),
14035
- direction: !vertical.value ? horizontalDirection.value : undefined
14033
+ '--v-slider-tick-size': convertToUnit(tickSize.value)
14036
14034
  }, props.style]
14037
14035
  }, [vue.createVNode("div", {
14038
14036
  "class": ['v-slider-track__background', trackColorClasses.value, {
@@ -14919,7 +14917,7 @@
14919
14917
  return _search.value;
14920
14918
  },
14921
14919
  set: val => {
14922
- _search.value = val;
14920
+ _search.value = val ?? '';
14923
14921
  if (!props.multiple) {
14924
14922
  model.value = [transformItem$1(props, val)];
14925
14923
  }
@@ -16953,15 +16951,15 @@
16953
16951
  });
16954
16952
  const isTemporary = vue.computed(() => !props.permanent && (mobile.value || props.temporary));
16955
16953
  const isSticky = vue.computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
16956
- if (props.expandOnHover && props.rail != null) {
16954
+ useToggleScope(() => props.expandOnHover && props.rail != null, () => {
16957
16955
  vue.watch(isHovering, val => emit('update:rail', !val));
16958
- }
16959
- if (!props.disableResizeWatcher) {
16956
+ });
16957
+ useToggleScope(() => !props.disableResizeWatcher, () => {
16960
16958
  vue.watch(isTemporary, val => !props.permanent && vue.nextTick(() => isActive.value = !val));
16961
- }
16962
- if (!props.disableRouteWatcher && router) {
16959
+ });
16960
+ useToggleScope(() => !props.disableRouteWatcher && !!router, () => {
16963
16961
  vue.watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
16964
- }
16962
+ });
16965
16963
  vue.watch(() => props.permanent, val => {
16966
16964
  if (val) isActive.value = true;
16967
16965
  });
@@ -20134,6 +20132,17 @@
20134
20132
  }
20135
20133
  return new Intl.DateTimeFormat(locale, options).format(date);
20136
20134
  }
20135
+ function toISO(adapter, value) {
20136
+ const date = adapter.toJsDate(value);
20137
+ const year = date.getFullYear();
20138
+ const month = padStart(String(date.getMonth() + 1), 2, '0');
20139
+ const day = padStart(String(date.getDate()), 2, '0');
20140
+ return `${year}-${month}-${day}`;
20141
+ }
20142
+ function parseISO(value) {
20143
+ const [year, month, day] = value.split('-').map(Number);
20144
+ return new Date(year, month - 1, day);
20145
+ }
20137
20146
  function addDays(date, amount) {
20138
20147
  const d = new Date(date);
20139
20148
  d.setDate(d.getDate() + amount);
@@ -20208,6 +20217,12 @@
20208
20217
  toJsDate(date) {
20209
20218
  return date;
20210
20219
  }
20220
+ toISO(date) {
20221
+ return toISO(this, date);
20222
+ }
20223
+ parseISO(date) {
20224
+ return parseISO(date);
20225
+ }
20211
20226
  addDays(date, amount) {
20212
20227
  return addDays(date, amount);
20213
20228
  }
@@ -20309,7 +20324,7 @@
20309
20324
  lv: 'lv-LV',
20310
20325
  lt: 'lt-LT',
20311
20326
  nl: 'nl-NL',
20312
- no: 'nn-NO',
20327
+ no: 'no-NO',
20313
20328
  pl: 'pl-PL',
20314
20329
  pt: 'pt-PT',
20315
20330
  ro: 'ro-RO',
@@ -20415,7 +20430,7 @@
20415
20430
  date
20416
20431
  };
20417
20432
  }
20418
- const version$1 = "3.3.19";
20433
+ const version$1 = "3.3.21";
20419
20434
  createVuetify$1.version = version$1;
20420
20435
 
20421
20436
  // Vue's inject() can only be used in setup
@@ -20440,7 +20455,7 @@
20440
20455
  ...options
20441
20456
  });
20442
20457
  };
20443
- const version = "3.3.19";
20458
+ const version = "3.3.21";
20444
20459
  createVuetify.version = version;
20445
20460
 
20446
20461
  exports.components = components;