vuetify 3.7.4 → 3.7.5

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 (73) hide show
  1. package/dist/json/attributes.json +3167 -3167
  2. package/dist/json/importMap-labs.json +24 -24
  3. package/dist/json/importMap.json +170 -170
  4. package/dist/json/web-types.json +5888 -5888
  5. package/dist/vuetify-labs.css +2928 -2924
  6. package/dist/vuetify-labs.d.ts +202 -206
  7. package/dist/vuetify-labs.esm.js +68 -59
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +68 -59
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1562 -1558
  12. package/dist/vuetify.d.ts +191 -195
  13. package/dist/vuetify.esm.js +57 -49
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +57 -49
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +34 -34
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  22. package/lib/components/VAutocomplete/index.d.mts +28 -28
  23. package/lib/components/VBadge/VBadge.css +4 -0
  24. package/lib/components/VBadge/VBadge.sass +4 -0
  25. package/lib/components/VChip/VChip.mjs +3 -2
  26. package/lib/components/VChip/VChip.mjs.map +1 -1
  27. package/lib/components/VChip/index.d.mts +9 -9
  28. package/lib/components/VCombobox/VCombobox.mjs +4 -4
  29. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  30. package/lib/components/VCombobox/index.d.mts +28 -28
  31. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +9 -7
  32. package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -1
  33. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +1 -1
  34. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -1
  35. package/lib/components/VConfirmEdit/index.d.mts +3 -7
  36. package/lib/components/VDatePicker/VDatePickerHeader.mjs +2 -1
  37. package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
  38. package/lib/components/VDatePicker/index.d.mts +6 -6
  39. package/lib/components/VField/VField.mjs +2 -1
  40. package/lib/components/VField/VField.mjs.map +1 -1
  41. package/lib/components/VList/VList.mjs +3 -2
  42. package/lib/components/VList/VList.mjs.map +1 -1
  43. package/lib/components/VList/VListItem.mjs +3 -2
  44. package/lib/components/VList/VListItem.mjs.map +1 -1
  45. package/lib/components/VList/index.d.mts +12 -12
  46. package/lib/components/VSelect/VSelect.mjs +3 -3
  47. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  48. package/lib/components/VSelect/index.d.mts +28 -28
  49. package/lib/components/VStepper/VStepper.mjs +5 -4
  50. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  51. package/lib/components/VStepper/VStepperItem.mjs +5 -4
  52. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  53. package/lib/components/VStepper/index.d.mts +58 -52
  54. package/lib/components/index.d.mts +129 -133
  55. package/lib/composables/form.mjs +7 -2
  56. package/lib/composables/form.mjs.map +1 -1
  57. package/lib/composables/validation.mjs +10 -12
  58. package/lib/composables/validation.mjs.map +1 -1
  59. package/lib/entry-bundler.mjs +1 -1
  60. package/lib/framework.mjs +1 -1
  61. package/lib/index.d.mts +62 -62
  62. package/lib/labs/VDateInput/VDateInput.mjs +1 -1
  63. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  64. package/lib/labs/VNumberInput/VNumberInput.mjs +7 -5
  65. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  66. package/lib/labs/VStepperVertical/index.d.mts +51 -51
  67. package/lib/labs/VTreeview/VTreeviewItem.mjs +3 -4
  68. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  69. package/lib/labs/VTreeview/index.d.mts +22 -22
  70. package/lib/labs/components.d.mts +73 -73
  71. package/lib/locale/fr.mjs +1 -1
  72. package/lib/locale/fr.mjs.map +1 -1
  73. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.4
2
+ * Vuetify v3.7.5
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -6901,8 +6901,13 @@ function createForm(props) {
6901
6901
  resetValidation
6902
6902
  };
6903
6903
  }
6904
- function useForm() {
6905
- return inject$1(FormKey, null);
6904
+ function useForm(props) {
6905
+ const form = inject$1(FormKey, null);
6906
+ return {
6907
+ ...form,
6908
+ isReadonly: computed(() => !!(props?.readonly ?? form?.isReadonly.value)),
6909
+ isDisabled: computed(() => !!(props?.disabled ?? form?.isDisabled.value))
6910
+ };
6906
6911
  }
6907
6912
 
6908
6913
  // Composables
@@ -6943,17 +6948,15 @@ function useValidation(props) {
6943
6948
  let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
6944
6949
  const model = useProxiedModel(props, 'modelValue');
6945
6950
  const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
6946
- const form = useForm();
6951
+ const form = useForm(props);
6947
6952
  const internalErrorMessages = ref([]);
6948
6953
  const isPristine = shallowRef(true);
6949
6954
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
6950
- const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value));
6951
- const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value));
6952
6955
  const errorMessages = computed(() => {
6953
6956
  return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6954
6957
  });
6955
6958
  const validateOn = computed(() => {
6956
- let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6959
+ let value = (props.validateOn ?? form.validateOn?.value) || 'input';
6957
6960
  if (value === 'lazy') value = 'input lazy';
6958
6961
  if (value === 'eager') value = 'input eager';
6959
6962
  const set = new Set(value?.split(' ') ?? []);
@@ -6979,14 +6982,14 @@ function useValidation(props) {
6979
6982
  return {
6980
6983
  [`${name}--error`]: isValid.value === false,
6981
6984
  [`${name}--dirty`]: isDirty.value,
6982
- [`${name}--disabled`]: isDisabled.value,
6983
- [`${name}--readonly`]: isReadonly.value
6985
+ [`${name}--disabled`]: form.isDisabled.value,
6986
+ [`${name}--readonly`]: form.isReadonly.value
6984
6987
  };
6985
6988
  });
6986
6989
  const vm = getCurrentInstance('validation');
6987
6990
  const uid = computed(() => props.name ?? unref(id));
6988
6991
  onBeforeMount(() => {
6989
- form?.register({
6992
+ form.register?.({
6990
6993
  id: uid.value,
6991
6994
  vm,
6992
6995
  validate,
@@ -6995,13 +6998,13 @@ function useValidation(props) {
6995
6998
  });
6996
6999
  });
6997
7000
  onBeforeUnmount(() => {
6998
- form?.unregister(uid.value);
7001
+ form.unregister?.(uid.value);
6999
7002
  });
7000
7003
  onMounted(async () => {
7001
7004
  if (!validateOn.value.lazy) {
7002
7005
  await validate(!validateOn.value.eager);
7003
7006
  }
7004
- form?.update(uid.value, isValid.value, errorMessages.value);
7007
+ form.update?.(uid.value, isValid.value, errorMessages.value);
7005
7008
  });
7006
7009
  useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
7007
7010
  watch(validationModel, () => {
@@ -7021,7 +7024,7 @@ function useValidation(props) {
7021
7024
  });
7022
7025
  });
7023
7026
  watch([isValid, errorMessages], () => {
7024
- form?.update(uid.value, isValid.value, errorMessages.value);
7027
+ form.update?.(uid.value, isValid.value, errorMessages.value);
7025
7028
  });
7026
7029
  async function reset() {
7027
7030
  model.value = null;
@@ -7062,8 +7065,8 @@ function useValidation(props) {
7062
7065
  return {
7063
7066
  errorMessages,
7064
7067
  isDirty,
7065
- isDisabled,
7066
- isReadonly,
7068
+ isDisabled: form.isDisabled,
7069
+ isReadonly: form.isReadonly,
7067
7070
  isPristine,
7068
7071
  isValid,
7069
7072
  isValidating,
@@ -8066,7 +8069,7 @@ const makeVChipProps = propsFactory({
8066
8069
  draggable: Boolean,
8067
8070
  filter: Boolean,
8068
8071
  filterIcon: {
8069
- type: String,
8072
+ type: IconValue,
8070
8073
  default: '$complete'
8071
8074
  },
8072
8075
  label: Boolean,
@@ -8189,7 +8192,8 @@ const VChip = genericComponent()({
8189
8192
  'v-chip--label': props.label,
8190
8193
  'v-chip--link': isClickable.value,
8191
8194
  'v-chip--filter': hasFilter,
8192
- 'v-chip--pill': props.pill
8195
+ 'v-chip--pill': props.pill,
8196
+ [`${props.activeClass}`]: props.activeClass && link.isActive?.value
8193
8197
  }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
8194
8198
  "style": [hasColor ? colorStyles.value : undefined, props.style],
8195
8199
  "disabled": props.disabled || undefined,
@@ -9163,7 +9167,8 @@ const VListItem = genericComponent()({
9163
9167
  const list = useList();
9164
9168
  const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
9165
9169
  const isLink = computed(() => props.link !== false && link.isLink.value);
9166
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
9170
+ const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9171
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9167
9172
  const roundedProps = computed(() => props.rounded || props.nav);
9168
9173
  const color = computed(() => props.color ?? props.activeColor);
9169
9174
  const variantProps = computed(() => ({
@@ -9254,7 +9259,7 @@ const VListItem = genericComponent()({
9254
9259
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
9255
9260
  "style": [colorStyles.value, dimensionStyles.value, props.style],
9256
9261
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
9257
- "aria-selected": root.activatable.value ? isActivated.value : isSelected.value,
9262
+ "aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
9258
9263
  "onClick": onClick,
9259
9264
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9260
9265
  }, link.linkProps), {
@@ -9671,8 +9676,8 @@ const makeVListProps = propsFactory({
9671
9676
  activeClass: String,
9672
9677
  bgColor: String,
9673
9678
  disabled: Boolean,
9674
- expandIcon: String,
9675
- collapseIcon: String,
9679
+ expandIcon: IconValue,
9680
+ collapseIcon: IconValue,
9676
9681
  lines: {
9677
9682
  type: [Boolean, String],
9678
9683
  default: 'one'
@@ -11846,7 +11851,8 @@ const VField = genericComponent()({
11846
11851
  "style": textColorStyles.value
11847
11852
  }, {
11848
11853
  default: () => [label()]
11849
- }), createVNode(VFieldLabel, {
11854
+ }), hasLabel.value && createVNode(VFieldLabel, {
11855
+ "key": "label",
11850
11856
  "ref": labelRef,
11851
11857
  "for": id.value
11852
11858
  }, {
@@ -12672,7 +12678,7 @@ const VSelect = genericComponent()({
12672
12678
  const counterValue = computed(() => {
12673
12679
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
12674
12680
  });
12675
- const form = useForm();
12681
+ const form = useForm(props);
12676
12682
  const selectedValues = computed(() => model.value.map(selection => selection.value));
12677
12683
  const isFocused = shallowRef(false);
12678
12684
  const label = computed(() => menu.value ? props.closeText : props.openText);
@@ -12684,7 +12690,7 @@ const VSelect = genericComponent()({
12684
12690
  }
12685
12691
  return items.value;
12686
12692
  });
12687
- const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12693
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12688
12694
  const computedMenuProps = computed(() => {
12689
12695
  return {
12690
12696
  ...props.menuProps,
@@ -12711,7 +12717,7 @@ const VSelect = genericComponent()({
12711
12717
  }
12712
12718
  }
12713
12719
  function onKeydown(e) {
12714
- if (!e.key || props.readonly || form?.isReadonly.value) return;
12720
+ if (!e.key || form.isReadonly.value) return;
12715
12721
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
12716
12722
  e.preventDefault();
12717
12723
  }
@@ -13189,7 +13195,7 @@ const VAutocomplete = genericComponent()({
13189
13195
  const counterValue = computed(() => {
13190
13196
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
13191
13197
  });
13192
- const form = useForm();
13198
+ const form = useForm(props);
13193
13199
  const {
13194
13200
  filteredItems,
13195
13201
  getMatches
@@ -13207,7 +13213,7 @@ const VAutocomplete = genericComponent()({
13207
13213
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
13208
13214
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
13209
13215
  });
13210
- const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
13216
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
13211
13217
  const listRef = ref();
13212
13218
  const listEvents = useScrolling(listRef, vTextFieldRef);
13213
13219
  function onClear(e) {
@@ -13234,7 +13240,7 @@ const VAutocomplete = genericComponent()({
13234
13240
  }
13235
13241
  }
13236
13242
  function onKeydown(e) {
13237
- if (props.readonly || form?.isReadonly.value) return;
13243
+ if (form.isReadonly.value) return;
13238
13244
  const selectionStart = vTextFieldRef.value.selectionStart;
13239
13245
  const length = model.value.length;
13240
13246
  if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
@@ -13411,7 +13417,7 @@ const VAutocomplete = genericComponent()({
13411
13417
  'v-autocomplete--selecting-index': selectionIndex.value > -1
13412
13418
  }, props.class],
13413
13419
  "style": props.style,
13414
- "readonly": props.readonly,
13420
+ "readonly": form.isReadonly.value,
13415
13421
  "placeholder": isDirty ? undefined : props.placeholder,
13416
13422
  "onClick:clear": onClear,
13417
13423
  "onMousedown:control": onMousedownControl,
@@ -17030,7 +17036,7 @@ const VCombobox = genericComponent()({
17030
17036
  const transformed = transformOut(v);
17031
17037
  return props.multiple ? transformed : transformed[0] ?? null;
17032
17038
  });
17033
- const form = useForm();
17039
+ const form = useForm(props);
17034
17040
  const hasChips = computed(() => !!(props.chips || slots.chip));
17035
17041
  const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
17036
17042
  const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
@@ -17090,7 +17096,7 @@ const VCombobox = genericComponent()({
17090
17096
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
17091
17097
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
17092
17098
  });
17093
- const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
17099
+ const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
17094
17100
  const listRef = ref();
17095
17101
  const listEvents = useScrolling(listRef, vTextFieldRef);
17096
17102
  function onClear(e) {
@@ -17118,7 +17124,7 @@ const VCombobox = genericComponent()({
17118
17124
  }
17119
17125
  // eslint-disable-next-line complexity
17120
17126
  function onKeydown(e) {
17121
- if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
17127
+ if (isComposingIgnoreKey(e) || form.isReadonly.value) return;
17122
17128
  const selectionStart = vTextFieldRef.value.selectionStart;
17123
17129
  const length = model.value.length;
17124
17130
  if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
@@ -17290,7 +17296,7 @@ const VCombobox = genericComponent()({
17290
17296
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
17291
17297
  }, props.class],
17292
17298
  "style": props.style,
17293
- "readonly": props.readonly,
17299
+ "readonly": form.isReadonly.value,
17294
17300
  "placeholder": isDirty ? undefined : props.placeholder,
17295
17301
  "onClick:clear": onClear,
17296
17302
  "onMousedown:control": onMousedownControl,
@@ -18334,21 +18340,23 @@ const VConfirmEdit = genericComponent()({
18334
18340
  internalModel.value = structuredClone(toRaw(model.value));
18335
18341
  emit('cancel');
18336
18342
  }
18337
- let actionsUsed = false;
18338
- useRender(() => {
18339
- const actions = createVNode(Fragment, null, [createVNode(VBtn, {
18343
+ function actions(actionsProps) {
18344
+ return createVNode(Fragment, null, [createVNode(VBtn, mergeProps({
18340
18345
  "disabled": isPristine.value,
18341
18346
  "variant": "text",
18342
18347
  "color": props.color,
18343
18348
  "onClick": cancel,
18344
18349
  "text": t(props.cancelText)
18345
- }, null), createVNode(VBtn, {
18350
+ }, actionsProps), null), createVNode(VBtn, mergeProps({
18346
18351
  "disabled": isPristine.value,
18347
18352
  "variant": "text",
18348
18353
  "color": props.color,
18349
18354
  "onClick": save,
18350
18355
  "text": t(props.okText)
18351
- }, null)]);
18356
+ }, actionsProps), null)]);
18357
+ }
18358
+ let actionsUsed = false;
18359
+ useRender(() => {
18352
18360
  return createVNode(Fragment, null, [slots.default?.({
18353
18361
  model: internalModel,
18354
18362
  save,
@@ -18358,7 +18366,7 @@ const VConfirmEdit = genericComponent()({
18358
18366
  actionsUsed = true;
18359
18367
  return actions;
18360
18368
  }
18361
- }), !actionsUsed && actions]);
18369
+ }), !actionsUsed && actions()]);
18362
18370
  });
18363
18371
  return {
18364
18372
  save,
@@ -21648,7 +21656,7 @@ const VDatePickerControls = genericComponent()({
21648
21656
  // Types
21649
21657
 
21650
21658
  const makeVDatePickerHeaderProps = propsFactory({
21651
- appendIcon: String,
21659
+ appendIcon: IconValue,
21652
21660
  color: String,
21653
21661
  header: String,
21654
21662
  transition: String,
@@ -26300,20 +26308,20 @@ const makeStepperItemProps = propsFactory({
26300
26308
  subtitle: String,
26301
26309
  complete: Boolean,
26302
26310
  completeIcon: {
26303
- type: String,
26311
+ type: IconValue,
26304
26312
  default: '$complete'
26305
26313
  },
26306
26314
  editable: Boolean,
26307
26315
  editIcon: {
26308
- type: String,
26316
+ type: IconValue,
26309
26317
  default: '$edit'
26310
26318
  },
26311
26319
  error: Boolean,
26312
26320
  errorIcon: {
26313
- type: String,
26321
+ type: IconValue,
26314
26322
  default: '$error'
26315
26323
  },
26316
- icon: String,
26324
+ icon: IconValue,
26317
26325
  ripple: {
26318
26326
  type: [Boolean, Object],
26319
26327
  default: true
@@ -26474,10 +26482,10 @@ const VStepperWindowItem = genericComponent()({
26474
26482
  const makeStepperProps = propsFactory({
26475
26483
  altLabels: Boolean,
26476
26484
  bgColor: String,
26477
- completeIcon: String,
26478
- editIcon: String,
26485
+ completeIcon: IconValue,
26486
+ editIcon: IconValue,
26479
26487
  editable: Boolean,
26480
- errorIcon: String,
26488
+ errorIcon: IconValue,
26481
26489
  hideActions: Boolean,
26482
26490
  items: {
26483
26491
  type: Array,
@@ -28254,7 +28262,7 @@ function createVuetify$1() {
28254
28262
  goTo
28255
28263
  };
28256
28264
  }
28257
- const version$1 = "3.7.4";
28265
+ const version$1 = "3.7.5";
28258
28266
  createVuetify$1.version = version$1;
28259
28267
 
28260
28268
  // Vue's inject() can only be used in setup
@@ -28279,7 +28287,7 @@ const createVuetify = function () {
28279
28287
  ...options
28280
28288
  });
28281
28289
  };
28282
- const version = "3.7.4";
28290
+ const version = "3.7.5";
28283
28291
  createVuetify.version = version;
28284
28292
 
28285
28293
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };