vuetify 3.1.0 → 3.1.2

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 (108) hide show
  1. package/dist/json/attributes.json +46 -34
  2. package/dist/json/importMap.json +46 -46
  3. package/dist/json/tags.json +3 -0
  4. package/dist/json/web-types.json +144 -37
  5. package/dist/vuetify-labs.css +25749 -0
  6. package/dist/vuetify-labs.d.ts +25980 -38
  7. package/dist/vuetify-labs.esm.js +20181 -0
  8. package/dist/vuetify-labs.esm.js.map +1 -0
  9. package/dist/vuetify-labs.js +17271 -6823
  10. package/dist/vuetify-labs.min.css +12 -0
  11. package/dist/vuetify.css +8 -2
  12. package/dist/vuetify.d.ts +65 -17
  13. package/dist/vuetify.esm.js +203 -119
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +203 -119
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +410 -408
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAppBar/VAppBarTitle.mjs +4 -4
  21. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +17 -7
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/index.d.ts +1 -0
  25. package/lib/components/VBtn/VBtn.mjs +9 -3
  26. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  27. package/lib/components/VCard/VCard.mjs +5 -2
  28. package/lib/components/VCard/VCard.mjs.map +1 -1
  29. package/lib/components/VCard/index.d.ts +8 -2
  30. package/lib/components/VCheckbox/VCheckbox.mjs +2 -0
  31. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  32. package/lib/components/VChip/VChip.mjs +18 -4
  33. package/lib/components/VChip/VChip.mjs.map +1 -1
  34. package/lib/components/VChip/index.d.ts +15 -2
  35. package/lib/components/VChipGroup/VChipGroup.mjs +1 -0
  36. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  37. package/lib/components/VCombobox/VCombobox.mjs +18 -8
  38. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  39. package/lib/components/VCombobox/index.d.ts +1 -0
  40. package/lib/components/VField/VField.mjs +3 -1
  41. package/lib/components/VField/VField.mjs.map +1 -1
  42. package/lib/components/VField/index.d.ts +1 -0
  43. package/lib/components/VFileInput/VFileInput.css +1 -0
  44. package/lib/components/VFileInput/VFileInput.mjs +2 -0
  45. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  46. package/lib/components/VFileInput/VFileInput.sass +1 -0
  47. package/lib/components/VFileInput/index.d.ts +1 -0
  48. package/lib/components/VGrid/VGrid.css +5 -0
  49. package/lib/components/VGrid/VGrid.sass +5 -0
  50. package/lib/components/VInput/VInput.mjs +3 -0
  51. package/lib/components/VInput/VInput.mjs.map +1 -1
  52. package/lib/components/VInput/index.d.ts +1 -0
  53. package/lib/components/VList/VListItem.css +1 -1
  54. package/lib/components/VList/VListItem.mjs +5 -1
  55. package/lib/components/VList/VListItem.mjs.map +1 -1
  56. package/lib/components/VList/VListItem.sass +1 -1
  57. package/lib/components/VList/index.d.ts +20 -1
  58. package/lib/components/VMessages/VMessages.mjs +3 -1
  59. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  60. package/lib/components/VProgressLinear/VProgressLinear.mjs +13 -1
  61. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  62. package/lib/components/VProgressLinear/index.d.ts +18 -0
  63. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -0
  64. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  65. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -1
  66. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  67. package/lib/components/VSelect/VSelect.mjs +19 -9
  68. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  69. package/lib/components/VSelect/index.d.ts +1 -0
  70. package/lib/components/VSlider/VSlider.mjs +4 -1
  71. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  72. package/lib/components/VSlider/VSliderThumb.mjs +5 -1
  73. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  74. package/lib/components/VSwitch/VSwitch.mjs +2 -0
  75. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  76. package/lib/components/VTextField/index.d.ts +1 -0
  77. package/lib/components/VTextarea/index.d.ts +1 -0
  78. package/lib/components/index.d.ts +53 -5
  79. package/lib/components/transitions/dialog-transition.mjs +3 -9
  80. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  81. package/lib/composables/filter.mjs +3 -3
  82. package/lib/composables/filter.mjs.map +1 -1
  83. package/lib/composables/teleport.mjs +6 -7
  84. package/lib/composables/teleport.mjs.map +1 -1
  85. package/lib/entry-bundler.mjs +1 -1
  86. package/lib/framework.mjs +1 -1
  87. package/lib/index.d.ts +12 -12
  88. package/lib/labs/VDataTable/VDataTable.mjs +8 -5
  89. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  90. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +3 -3
  91. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  92. package/lib/labs/VDataTable/VDataTableRows.mjs +36 -8
  93. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  94. package/lib/labs/VDataTable/VDataTableServer.mjs +4 -4
  95. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  96. package/lib/labs/VDataTable/VDataTableVirtual.mjs +4 -1
  97. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  98. package/lib/labs/VDataTable/composables/group.mjs +9 -4
  99. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  100. package/lib/labs/VDataTable/composables/sort.mjs +3 -5
  101. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  102. package/lib/labs/allComponents.mjs +3 -0
  103. package/lib/labs/allComponents.mjs.map +1 -0
  104. package/lib/labs/entry-bundler.mjs +14 -0
  105. package/lib/labs/entry-bundler.mjs.map +1 -0
  106. package/lib/util/defineComponent.mjs +1 -1
  107. package/lib/util/defineComponent.mjs.map +1 -1
  108. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.0
2
+ * Vuetify v3.1.2
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -990,7 +990,7 @@ function propsFactory(props, source) {
990
990
  // Utils
991
991
  function propIsDefined(vnode, prop) {
992
992
  var _vnode$props, _vnode$props2;
993
- return ((_vnode$props = vnode.props) == null ? void 0 : _vnode$props.hasOwnProperty(prop)) || ((_vnode$props2 = vnode.props) == null ? void 0 : _vnode$props2.hasOwnProperty(toKebabCase(prop)));
993
+ return typeof ((_vnode$props = vnode.props) == null ? void 0 : _vnode$props[prop]) !== 'undefined' || typeof ((_vnode$props2 = vnode.props) == null ? void 0 : _vnode$props2[toKebabCase(prop)]) !== 'undefined';
994
994
  }
995
995
  const defineComponent = function defineComponent(options) {
996
996
  options._setup = options._setup ?? options.setup;
@@ -2366,9 +2366,7 @@ const VDialogTransition = defineComponent({
2366
2366
  const animation = animate(el, [{
2367
2367
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2368
2368
  opacity: 0
2369
- }, {
2370
- transform: ''
2371
- }], {
2369
+ }, {}], {
2372
2370
  duration: 225 * speed,
2373
2371
  easing: deceleratedEasing
2374
2372
  });
@@ -2378,9 +2376,7 @@ const VDialogTransition = defineComponent({
2378
2376
  }, {
2379
2377
  opacity: 0,
2380
2378
  offset: 0.33
2381
- }, {
2382
- opacity: 1
2383
- }], {
2379
+ }, {}], {
2384
2380
  duration: 225 * 2 * speed,
2385
2381
  easing: standardEasing
2386
2382
  });
@@ -2403,9 +2399,7 @@ const VDialogTransition = defineComponent({
2403
2399
  sy,
2404
2400
  speed
2405
2401
  } = getDimensions(props.target, el);
2406
- const animation = animate(el, [{
2407
- transform: ''
2408
- }, {
2402
+ const animation = animate(el, [{}, {
2409
2403
  transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
2410
2404
  opacity: 0
2411
2405
  }], {
@@ -4386,9 +4380,69 @@ const Ripple = {
4386
4380
  updated: updated$1
4387
4381
  };
4388
4382
 
4383
+ // Composables
4384
+
4385
+ // Types
4386
+
4387
+ const oppositeMap = {
4388
+ center: 'center',
4389
+ top: 'bottom',
4390
+ bottom: 'top',
4391
+ left: 'right',
4392
+ right: 'left'
4393
+ };
4394
+ const makeLocationProps = propsFactory({
4395
+ location: String
4396
+ }, 'location');
4397
+ function useLocation(props) {
4398
+ let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4399
+ let offset = arguments.length > 2 ? arguments[2] : undefined;
4400
+ const {
4401
+ isRtl
4402
+ } = useRtl();
4403
+ const locationStyles = computed(() => {
4404
+ if (!props.location) return {};
4405
+ const {
4406
+ side,
4407
+ align
4408
+ } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
4409
+ function getOffset(side) {
4410
+ return offset ? offset(side) : 0;
4411
+ }
4412
+ const styles = {};
4413
+ if (side !== 'center') {
4414
+ if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
4415
+ }
4416
+ if (align !== 'center') {
4417
+ if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
4418
+ } else {
4419
+ if (side === 'center') styles.top = styles.left = '50%';else {
4420
+ styles[{
4421
+ top: 'left',
4422
+ bottom: 'left',
4423
+ left: 'top',
4424
+ right: 'top'
4425
+ }[side]] = '50%';
4426
+ }
4427
+ styles.transform = {
4428
+ top: 'translateX(-50%)',
4429
+ bottom: 'translateX(-50%)',
4430
+ left: 'translateY(-50%)',
4431
+ right: 'translateY(-50%)',
4432
+ center: 'translate(-50%, -50%)'
4433
+ }[side];
4434
+ }
4435
+ return styles;
4436
+ });
4437
+ return {
4438
+ locationStyles
4439
+ };
4440
+ }
4441
+
4389
4442
  const VProgressLinear = defineComponent({
4390
4443
  name: 'VProgressLinear',
4391
4444
  props: {
4445
+ absolute: Boolean,
4392
4446
  active: {
4393
4447
  type: Boolean,
4394
4448
  default: true
@@ -4418,6 +4472,9 @@ const VProgressLinear = defineComponent({
4418
4472
  stream: Boolean,
4419
4473
  striped: Boolean,
4420
4474
  roundedBar: Boolean,
4475
+ ...makeLocationProps({
4476
+ location: 'top'
4477
+ }),
4421
4478
  ...makeRoundedProps(),
4422
4479
  ...makeTagProps(),
4423
4480
  ...makeThemeProps()
@@ -4436,6 +4493,9 @@ const VProgressLinear = defineComponent({
4436
4493
  const {
4437
4494
  themeClasses
4438
4495
  } = provideTheme(props);
4496
+ const {
4497
+ locationStyles
4498
+ } = useLocation(props);
4439
4499
  const {
4440
4500
  textColorClasses,
4441
4501
  textColorStyles
@@ -4477,6 +4537,7 @@ const VProgressLinear = defineComponent({
4477
4537
  useRender(() => createVNode(props.tag, {
4478
4538
  "ref": intersectionRef,
4479
4539
  "class": ['v-progress-linear', {
4540
+ 'v-progress-linear--absolute': props.absolute,
4480
4541
  'v-progress-linear--active': props.active && isIntersecting.value,
4481
4542
  'v-progress-linear--reverse': isReversed.value,
4482
4543
  'v-progress-linear--rounded': props.rounded,
@@ -4484,8 +4545,11 @@ const VProgressLinear = defineComponent({
4484
4545
  'v-progress-linear--striped': props.striped
4485
4546
  }, roundedClasses.value, themeClasses.value],
4486
4547
  "style": {
4548
+ bottom: props.location === 'bottom' ? 0 : undefined,
4549
+ top: props.location === 'top' ? 0 : undefined,
4487
4550
  height: props.active ? convertToUnit(height.value) : 0,
4488
- '--v-progress-linear-height': convertToUnit(height.value)
4551
+ '--v-progress-linear-height': convertToUnit(height.value),
4552
+ ...locationStyles.value
4489
4553
  },
4490
4554
  "role": "progressbar",
4491
4555
  "aria-hidden": props.active ? 'false' : 'true',
@@ -4571,65 +4635,6 @@ function LoaderSlot(props, _ref) {
4571
4635
  }, null)]);
4572
4636
  }
4573
4637
 
4574
- // Composables
4575
-
4576
- // Types
4577
-
4578
- const oppositeMap = {
4579
- center: 'center',
4580
- top: 'bottom',
4581
- bottom: 'top',
4582
- left: 'right',
4583
- right: 'left'
4584
- };
4585
- const makeLocationProps = propsFactory({
4586
- location: String
4587
- }, 'location');
4588
- function useLocation(props) {
4589
- let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4590
- let offset = arguments.length > 2 ? arguments[2] : undefined;
4591
- const {
4592
- isRtl
4593
- } = useRtl();
4594
- const locationStyles = computed(() => {
4595
- if (!props.location) return {};
4596
- const {
4597
- side,
4598
- align
4599
- } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
4600
- function getOffset(side) {
4601
- return offset ? offset(side) : 0;
4602
- }
4603
- const styles = {};
4604
- if (side !== 'center') {
4605
- if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
4606
- }
4607
- if (align !== 'center') {
4608
- if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
4609
- } else {
4610
- if (side === 'center') styles.top = styles.left = '50%';else {
4611
- styles[{
4612
- top: 'left',
4613
- bottom: 'left',
4614
- left: 'top',
4615
- right: 'top'
4616
- }[side]] = '50%';
4617
- }
4618
- styles.transform = {
4619
- top: 'translateX(-50%)',
4620
- bottom: 'translateX(-50%)',
4621
- left: 'translateY(-50%)',
4622
- right: 'translateY(-50%)',
4623
- center: 'translate(-50%, -50%)'
4624
- }[side];
4625
- }
4626
- return styles;
4627
- });
4628
- return {
4629
- locationStyles
4630
- };
4631
- }
4632
-
4633
4638
  // Utilities
4634
4639
 
4635
4640
  // Types
@@ -4835,8 +4840,14 @@ const VBtn = defineComponent({
4835
4840
  const group = useGroupItem(props, props.symbol, false);
4836
4841
  const link = useLink(props, attrs);
4837
4842
  const isActive = computed(() => {
4838
- var _link$isActive;
4839
- return props.active !== false && (props.active || ((_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value) || (group == null ? void 0 : group.isSelected.value));
4843
+ if (props.active !== undefined) {
4844
+ return props.active;
4845
+ }
4846
+ if (link.isLink.value) {
4847
+ var _link$isActive;
4848
+ return (_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value;
4849
+ }
4850
+ return group == null ? void 0 : group.isSelected.value;
4840
4851
  });
4841
4852
  const isDisabled = computed(() => (group == null ? void 0 : group.disabled.value) || props.disabled);
4842
4853
  const isElevated = computed(() => {
@@ -4846,7 +4857,7 @@ const VBtn = defineComponent({
4846
4857
  useRender(() => {
4847
4858
  var _slots$prepend, _slots$default, _slots$append, _slots$loader;
4848
4859
  const Tag = link.isLink.value ? 'a' : props.tag;
4849
- const hasColor = !group || group.isSelected.value;
4860
+ const hasColor = !group || isActive.value;
4850
4861
  const hasPrepend = !!(props.prependIcon || slots.prepend);
4851
4862
  const hasAppend = !!(props.appendIcon || slots.append);
4852
4863
  const hasIcon = !!(props.icon && props.icon !== true);
@@ -4974,13 +4985,13 @@ const VAppBarTitle = defineComponent({
4974
4985
  props: {
4975
4986
  ...VToolbarTitle.props
4976
4987
  },
4977
- setup(_, _ref) {
4988
+ setup(props, _ref) {
4978
4989
  let {
4979
4990
  slots
4980
4991
  } = _ref;
4981
- useRender(() => createVNode(VToolbarTitle, {
4992
+ useRender(() => createVNode(VToolbarTitle, mergeProps(props, {
4982
4993
  "class": "v-app-bar-title"
4983
- }, slots));
4994
+ }), slots));
4984
4995
  return {};
4985
4996
  }
4986
4997
  });
@@ -5326,6 +5337,7 @@ const VField = genericComponent()({
5326
5337
  const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));
5327
5338
  const uid = getUid();
5328
5339
  const id = computed(() => props.id || `input-${uid}`);
5340
+ const messagesId = computed(() => `${id.value}-messages`);
5329
5341
  const labelRef = ref();
5330
5342
  const floatingLabelRef = ref();
5331
5343
  const controlRef = ref();
@@ -5450,7 +5462,8 @@ const VField = genericComponent()({
5450
5462
  ...slotProps.value,
5451
5463
  props: {
5452
5464
  id: id.value,
5453
- class: 'v-field__input'
5465
+ class: 'v-field__input',
5466
+ 'aria-describedby': messagesId.value
5454
5467
  },
5455
5468
  focus,
5456
5469
  blur
@@ -5533,7 +5546,9 @@ const VMessages = defineComponent({
5533
5546
  "transition": props.transition,
5534
5547
  "tag": "div",
5535
5548
  "class": ['v-messages', textColorClasses.value],
5536
- "style": textColorStyles.value
5549
+ "style": textColorStyles.value,
5550
+ "role": "alert",
5551
+ "aria-live": "polite"
5537
5552
  }, {
5538
5553
  default: () => [props.active && messages.value.map((message, i) => createVNode("div", {
5539
5554
  "class": "v-messages__message",
@@ -5851,6 +5866,7 @@ const VInput = genericComponent()({
5851
5866
  } = useInputIcon(props);
5852
5867
  const uid = getUid();
5853
5868
  const id = computed(() => props.id || `input-${uid}`);
5869
+ const messagesId = computed(() => `${id.value}-messages`);
5854
5870
  const {
5855
5871
  errorMessages,
5856
5872
  isDirty,
@@ -5866,6 +5882,7 @@ const VInput = genericComponent()({
5866
5882
  } = useValidation(props, 'v-input', id);
5867
5883
  const slotProps = computed(() => ({
5868
5884
  id,
5885
+ messagesId,
5869
5886
  isDirty,
5870
5887
  isDisabled,
5871
5888
  isReadonly,
@@ -5901,6 +5918,7 @@ const VInput = genericComponent()({
5901
5918
  }, null), (_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value)]), hasDetails && createVNode("div", {
5902
5919
  "class": "v-input__details"
5903
5920
  }, [createVNode(VMessages, {
5921
+ "id": messagesId.value,
5904
5922
  "active": hasMessages,
5905
5923
  "messages": errorMessages.value.length > 0 ? errorMessages.value : props.messages
5906
5924
  }, {
@@ -6572,11 +6590,13 @@ const VCheckbox = defineComponent({
6572
6590
  default: _ref2 => {
6573
6591
  let {
6574
6592
  id,
6593
+ messagesId,
6575
6594
  isDisabled,
6576
6595
  isReadonly
6577
6596
  } = _ref2;
6578
6597
  return createVNode(VCheckboxBtn, mergeProps(checkboxProps, {
6579
6598
  "id": id.value,
6599
+ "aria-describedby": messagesId.value,
6580
6600
  "disabled": isDisabled.value,
6581
6601
  "readonly": isReadonly.value
6582
6602
  }, controlAttrs, {
@@ -6694,6 +6714,7 @@ const VChipGroup = defineComponent({
6694
6714
  provideDefaults({
6695
6715
  VChip: {
6696
6716
  color: toRef(props, 'color'),
6717
+ disabled: toRef(props, 'disabled'),
6697
6718
  filter: toRef(props, 'filter'),
6698
6719
  variant: toRef(props, 'variant')
6699
6720
  }
@@ -6743,7 +6764,10 @@ const VChip = defineComponent({
6743
6764
  default: '$complete'
6744
6765
  },
6745
6766
  label: Boolean,
6746
- link: Boolean,
6767
+ link: {
6768
+ type: Boolean,
6769
+ default: undefined
6770
+ },
6747
6771
  pill: Boolean,
6748
6772
  prependAvatar: String,
6749
6773
  prependIcon: IconValue,
@@ -6756,6 +6780,8 @@ const VChip = defineComponent({
6756
6780
  type: Boolean,
6757
6781
  default: true
6758
6782
  },
6783
+ onClick: EventProp,
6784
+ onClickOnce: EventProp,
6759
6785
  ...makeBorderProps(),
6760
6786
  ...makeDensityProps(),
6761
6787
  ...makeElevationProps(),
@@ -6809,7 +6835,8 @@ const VChip = defineComponent({
6809
6835
  const isActive = useProxiedModel(props, 'modelValue');
6810
6836
  const group = useGroupItem(props, VChipGroupSymbol, false);
6811
6837
  const link = useLink(props, attrs);
6812
- const isClickable = computed(() => !props.disabled && (!!group || link.isClickable.value || props.link));
6838
+ const isLink = computed(() => props.link !== false && link.isLink.value);
6839
+ const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
6813
6840
  function onCloseClick(e) {
6814
6841
  isActive.value = false;
6815
6842
  emit('click:close', e);
@@ -6821,6 +6848,12 @@ const VChip = defineComponent({
6821
6848
  (_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
6822
6849
  group == null ? void 0 : group.toggle();
6823
6850
  }
6851
+ function onKeyDown(e) {
6852
+ if (e.key === 'Enter' || e.key === ' ') {
6853
+ e.preventDefault();
6854
+ onClick(e);
6855
+ }
6856
+ }
6824
6857
  return () => {
6825
6858
  var _slots$default;
6826
6859
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -6841,7 +6874,9 @@ const VChip = defineComponent({
6841
6874
  "disabled": props.disabled || undefined,
6842
6875
  "draggable": props.draggable,
6843
6876
  "href": link.href.value,
6844
- "onClick": onClick
6877
+ "tabindex": isClickable.value ? 0 : undefined,
6878
+ "onClick": onClick,
6879
+ "onKeydown": isClickable.value && !isLink.value && onKeyDown
6845
6880
  }, {
6846
6881
  default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VDefaultsProvider, {
6847
6882
  "key": "filter",
@@ -7557,6 +7592,10 @@ const VListItem = genericComponent()({
7557
7592
  nav: Boolean,
7558
7593
  prependAvatar: String,
7559
7594
  prependIcon: IconValue,
7595
+ ripple: {
7596
+ type: Boolean,
7597
+ default: true
7598
+ },
7560
7599
  subtitle: [String, Number, Boolean],
7561
7600
  title: [String, Number, Boolean],
7562
7601
  value: null,
@@ -7748,7 +7787,7 @@ const VListItem = genericComponent()({
7748
7787
  "key": "append-avatar"
7749
7788
  }, null)])]
7750
7789
  })]
7751
- }), [[resolveDirective("ripple"), isClickable.value]]);
7790
+ }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
7752
7791
  });
7753
7792
  return {};
7754
7793
  }
@@ -9289,19 +9328,18 @@ function useTeleport(target) {
9289
9328
  warn(`Unable to locate target ${_target}`);
9290
9329
  return undefined;
9291
9330
  }
9292
- if (!useTeleport.cache.has(targetElement)) {
9293
- const el = document.createElement('div');
9294
- el.className = 'v-overlay-container';
9295
- targetElement.appendChild(el);
9296
- useTeleport.cache.set(targetElement, el);
9331
+ let container = targetElement.querySelector('.v-overlay-container');
9332
+ if (!container) {
9333
+ container = document.createElement('div');
9334
+ container.className = 'v-overlay-container';
9335
+ targetElement.appendChild(container);
9297
9336
  }
9298
- return useTeleport.cache.get(targetElement);
9337
+ return container;
9299
9338
  });
9300
9339
  return {
9301
9340
  teleportTarget
9302
9341
  };
9303
9342
  }
9304
- useTeleport.cache = new WeakMap();
9305
9343
 
9306
9344
  function defaultConditional() {
9307
9345
  return true;
@@ -9805,12 +9843,19 @@ const VSelect = genericComponent()({
9805
9843
  const transformed = transformOut(v);
9806
9844
  return props.multiple ? transformed : transformed[0] ?? null;
9807
9845
  });
9846
+ const form = useForm();
9808
9847
  const selections = computed(() => {
9809
9848
  return model.value.map(v => {
9810
9849
  return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
9811
9850
  });
9812
9851
  });
9813
9852
  const selected = computed(() => selections.value.map(selection => selection.props.value));
9853
+ const displayItems = computed(() => {
9854
+ if (props.hideSelected) {
9855
+ return items.value.filter(item => !selections.value.some(s => s === item));
9856
+ }
9857
+ return items.value;
9858
+ });
9814
9859
  const listRef = ref();
9815
9860
  function onClear(e) {
9816
9861
  model.value = [];
@@ -9819,11 +9864,11 @@ const VSelect = genericComponent()({
9819
9864
  }
9820
9865
  }
9821
9866
  function onClickControl() {
9822
- if (props.hideNoData && !items.value.length || props.readonly) return;
9867
+ if (props.hideNoData && !items.value.length || props.readonly || form != null && form.isReadonly.value) return;
9823
9868
  menu.value = !menu.value;
9824
9869
  }
9825
9870
  function onKeydown(e) {
9826
- if (props.readonly) return;
9871
+ if (props.readonly || form != null && form.isReadonly.value) return;
9827
9872
  if (['Enter', 'ArrowDown', ' '].includes(e.key)) {
9828
9873
  e.preventDefault();
9829
9874
  menu.value = true;
@@ -9850,7 +9895,7 @@ const VSelect = genericComponent()({
9850
9895
  }
9851
9896
  function select(item) {
9852
9897
  if (props.multiple) {
9853
- const index = selected.value.findIndex(selection => selection === item.value);
9898
+ const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
9854
9899
  if (index === -1) {
9855
9900
  model.value = [...model.value, item];
9856
9901
  } else {
@@ -9877,6 +9922,7 @@ const VSelect = genericComponent()({
9877
9922
  }
9878
9923
  useRender(() => {
9879
9924
  const hasChips = !!(props.chips || slots.chip);
9925
+ const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
9880
9926
  const [textFieldProps] = filterVTextFieldProps(props);
9881
9927
  return createVNode(VTextField, mergeProps({
9882
9928
  "ref": vTextFieldRef
@@ -9909,20 +9955,21 @@ const VSelect = genericComponent()({
9909
9955
  "activator": "parent",
9910
9956
  "contentClass": "v-select__content",
9911
9957
  "eager": props.eager,
9958
+ "maxHeight": 310,
9912
9959
  "openOnClick": false,
9913
9960
  "closeOnContentClick": false,
9914
9961
  "transition": props.transition
9915
9962
  }, props.menuProps), {
9916
- default: () => [createVNode(VList, {
9963
+ default: () => [hasList && createVNode(VList, {
9917
9964
  "ref": listRef,
9918
9965
  "selected": selected.value,
9919
9966
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
9920
9967
  "onMousedown": e => e.preventDefault(),
9921
9968
  "onFocusout": onFocusout
9922
9969
  }, {
9923
- default: () => [!items.value.length && !props.hideNoData && (((_slots$noData = slots['no-data']) == null ? void 0 : _slots$noData.call(slots)) ?? createVNode(VListItem, {
9970
+ default: () => [!displayItems.value.length && !props.hideNoData && (((_slots$noData = slots['no-data']) == null ? void 0 : _slots$noData.call(slots)) ?? createVNode(VListItem, {
9924
9971
  "title": t(props.noDataText)
9925
- }, null)), (_slots$prependItem = slots['prepend-item']) == null ? void 0 : _slots$prependItem.call(slots), items.value.map((item, index) => {
9972
+ }, null)), (_slots$prependItem = slots['prepend-item']) == null ? void 0 : _slots$prependItem.call(slots), displayItems.value.map((item, index) => {
9926
9973
  if (slots.item) {
9927
9974
  var _slots$item;
9928
9975
  return (_slots$item = slots.item) == null ? void 0 : _slots$item.call(slots, {
@@ -10024,7 +10071,7 @@ function filterItems(items, query, options) {
10024
10071
  const customFiltersLength = Object.keys((options == null ? void 0 : options.customKeyFilter) ?? {}).length;
10025
10072
  if (!(items != null && items.length)) return array;
10026
10073
  loop: for (let i = 0; i < items.length; i++) {
10027
- const item = items[i].raw;
10074
+ const item = items[i];
10028
10075
  const customMatches = {};
10029
10076
  const defaultMatches = {};
10030
10077
  let match = -1;
@@ -10064,7 +10111,7 @@ function filterItems(items, query, options) {
10064
10111
  }
10065
10112
  return array;
10066
10113
  }
10067
- function useFilter(props, items, query) {
10114
+ function useFilter(props, items, query, options) {
10068
10115
  const strQuery = computed(() => typeof (query == null ? void 0 : query.value) !== 'string' && typeof (query == null ? void 0 : query.value) !== 'number' ? '' : String(query.value));
10069
10116
  const filteredItems = ref([]);
10070
10117
  const filteredMatches = ref(new Map());
@@ -10075,7 +10122,7 @@ function useFilter(props, items, query) {
10075
10122
  const results = filterItems(transformedItems, strQuery.value, {
10076
10123
  customKeyFilter: props.customKeyFilter,
10077
10124
  default: props.customFilter,
10078
- filterKeys: props.filterKeys,
10125
+ filterKeys: unref(options == null ? void 0 : options.filterKeys) ?? props.filterKeys,
10079
10126
  filterMode: props.filterMode,
10080
10127
  noFilter: props.noFilter
10081
10128
  });
@@ -10155,6 +10202,7 @@ const VAutocomplete = genericComponent()({
10155
10202
  const transformed = transformOut(v);
10156
10203
  return props.multiple ? transformed : transformed[0] ?? null;
10157
10204
  });
10205
+ const form = useForm();
10158
10206
  const {
10159
10207
  filteredItems,
10160
10208
  getMatches
@@ -10164,6 +10212,12 @@ const VAutocomplete = genericComponent()({
10164
10212
  return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
10165
10213
  });
10166
10214
  });
10215
+ const displayItems = computed(() => {
10216
+ if (props.hideSelected) {
10217
+ return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value));
10218
+ }
10219
+ return filteredItems.value;
10220
+ });
10167
10221
  const selected = computed(() => selections.value.map(selection => selection.props.value));
10168
10222
  const listRef = ref();
10169
10223
  function onClear(e) {
@@ -10174,11 +10228,11 @@ const VAutocomplete = genericComponent()({
10174
10228
  search.value = '';
10175
10229
  }
10176
10230
  function onClickControl() {
10177
- if (props.hideNoData && !items.value.length || props.readonly) return;
10231
+ if (props.hideNoData && !items.value.length || props.readonly || form != null && form.isReadonly.value) return;
10178
10232
  menu.value = true;
10179
10233
  }
10180
10234
  function onKeydown(e) {
10181
- if (props.readonly) return;
10235
+ if (props.readonly || form != null && form.isReadonly.value) return;
10182
10236
  if (['Enter', 'ArrowDown'].includes(e.key)) {
10183
10237
  menu.value = true;
10184
10238
  }
@@ -10216,7 +10270,7 @@ const VAutocomplete = genericComponent()({
10216
10270
  const isSelecting = ref(false);
10217
10271
  function select(item) {
10218
10272
  if (props.multiple) {
10219
- const index = selected.value.findIndex(selection => selection === item.value);
10273
+ const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
10220
10274
  if (index === -1) {
10221
10275
  model.value = [...model.value, item];
10222
10276
  search.value = '';
@@ -10255,6 +10309,7 @@ const VAutocomplete = genericComponent()({
10255
10309
  });
10256
10310
  useRender(() => {
10257
10311
  const hasChips = !!(props.chips || slots.chip);
10312
+ const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10258
10313
  const [textFieldProps] = filterVTextFieldProps(props);
10259
10314
  return createVNode(VTextField, mergeProps({
10260
10315
  "ref": vTextFieldRef
@@ -10290,12 +10345,13 @@ const VAutocomplete = genericComponent()({
10290
10345
  "activator": "parent",
10291
10346
  "contentClass": "v-autocomplete__content",
10292
10347
  "eager": props.eager,
10348
+ "maxHeight": 310,
10293
10349
  "openOnClick": false,
10294
10350
  "closeOnContentClick": false,
10295
10351
  "transition": props.transition,
10296
10352
  "onAfterLeave": onAfterLeave
10297
10353
  }, props.menuProps), {
10298
- default: () => [createVNode(VList, {
10354
+ default: () => [hasList && createVNode(VList, {
10299
10355
  "ref": listRef,
10300
10356
  "selected": selected.value,
10301
10357
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
@@ -10303,9 +10359,9 @@ const VAutocomplete = genericComponent()({
10303
10359
  "onFocusin": onFocusin,
10304
10360
  "onFocusout": onFocusout
10305
10361
  }, {
10306
- default: () => [!filteredItems.value.length && !props.hideNoData && (((_slots$noData = slots['no-data']) == null ? void 0 : _slots$noData.call(slots)) ?? createVNode(VListItem, {
10362
+ default: () => [!displayItems.value.length && !props.hideNoData && (((_slots$noData = slots['no-data']) == null ? void 0 : _slots$noData.call(slots)) ?? createVNode(VListItem, {
10307
10363
  "title": t(props.noDataText)
10308
- }, null)), (_slots$prependItem = slots['prepend-item']) == null ? void 0 : _slots$prependItem.call(slots), filteredItems.value.map((item, index) => {
10364
+ }, null)), (_slots$prependItem = slots['prepend-item']) == null ? void 0 : _slots$prependItem.call(slots), displayItems.value.map((item, index) => {
10309
10365
  var _slots$item;
10310
10366
  return ((_slots$item = slots.item) == null ? void 0 : _slots$item.call(slots, {
10311
10367
  item,
@@ -10998,7 +11054,10 @@ const VCard = defineComponent({
10998
11054
  },
10999
11055
  prependAvatar: String,
11000
11056
  prependIcon: IconValue,
11001
- ripple: Boolean,
11057
+ ripple: {
11058
+ type: Boolean,
11059
+ default: true
11060
+ },
11002
11061
  subtitle: String,
11003
11062
  text: String,
11004
11063
  title: String,
@@ -11119,7 +11178,7 @@ const VCard = defineComponent({
11119
11178
  }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.actions && createVNode(VCardActions, null, {
11120
11179
  default: slots.actions
11121
11180
  }), genOverlays(isClickable.value, 'v-card')]
11122
- }), [[resolveDirective("ripple"), isClickable.value]]);
11181
+ }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
11123
11182
  });
11124
11183
  return {};
11125
11184
  }
@@ -12412,6 +12471,10 @@ const VSliderThumb = defineComponent({
12412
12471
  position: {
12413
12472
  type: Number,
12414
12473
  required: true
12474
+ },
12475
+ ripple: {
12476
+ type: Boolean,
12477
+ default: true
12415
12478
  }
12416
12479
  },
12417
12480
  emits: {
@@ -12512,7 +12575,7 @@ const VSliderThumb = defineComponent({
12512
12575
  }, null), withDirectives(createVNode("div", {
12513
12576
  "class": ['v-slider-thumb__ripple', textColorClasses.value],
12514
12577
  "style": textColorStyles.value
12515
- }, null), [[resolveDirective("ripple"), true, null, {
12578
+ }, null), [[resolveDirective("ripple"), props.ripple, null, {
12516
12579
  circle: true,
12517
12580
  center: true
12518
12581
  }]]), createVNode(VScaleTransition, {
@@ -12715,13 +12778,15 @@ const VSlider = defineComponent({
12715
12778
  prepend: hasPrepend ? slotProps => {
12716
12779
  var _slots$label, _slots$prepend;
12717
12780
  return createVNode(Fragment, null, [((_slots$label = slots.label) == null ? void 0 : _slots$label.call(slots, slotProps)) ?? props.label ? createVNode(VLabel, {
12781
+ "id": slotProps.id,
12718
12782
  "class": "v-slider__label",
12719
12783
  "text": props.label
12720
12784
  }, null) : undefined, (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps)]);
12721
12785
  } : undefined,
12722
12786
  default: _ref2 => {
12723
12787
  let {
12724
- id
12788
+ id,
12789
+ messagesId
12725
12790
  } = _ref2;
12726
12791
  return createVNode("div", {
12727
12792
  "class": "v-slider__container",
@@ -12742,6 +12807,7 @@ const VSlider = defineComponent({
12742
12807
  'tick-label': slots['tick-label']
12743
12808
  }), createVNode(VSliderThumb, {
12744
12809
  "ref": thumbContainerRef,
12810
+ "aria-describedby": messagesId.value,
12745
12811
  "focused": isFocused.value,
12746
12812
  "min": min.value,
12747
12813
  "max": max.value,
@@ -13443,6 +13509,7 @@ const VCombobox = genericComponent()({
13443
13509
  const transformed = transformOut(v);
13444
13510
  return props.multiple ? transformed : transformed[0] ?? null;
13445
13511
  });
13512
+ const form = useForm();
13446
13513
  const _search = ref(!props.multiple ? ((_model$value$ = model.value[0]) == null ? void 0 : _model$value$.title) ?? '' : '');
13447
13514
  const search = computed({
13448
13515
  get: () => {
@@ -13487,6 +13554,12 @@ const VCombobox = genericComponent()({
13487
13554
  return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
13488
13555
  });
13489
13556
  });
13557
+ const displayItems = computed(() => {
13558
+ if (props.hideSelected) {
13559
+ return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value));
13560
+ }
13561
+ return filteredItems.value;
13562
+ });
13490
13563
  const selected = computed(() => selections.value.map(selection => selection.props.value));
13491
13564
  const selection = computed(() => selections.value[selectionIndex.value]);
13492
13565
  const listRef = ref();
@@ -13497,11 +13570,11 @@ const VCombobox = genericComponent()({
13497
13570
  }
13498
13571
  }
13499
13572
  function onClickControl() {
13500
- if (props.hideNoData && !items.value.length || props.readonly) return;
13573
+ if (props.hideNoData && !items.value.length || props.readonly || form != null && form.isReadonly.value) return;
13501
13574
  menu.value = true;
13502
13575
  }
13503
13576
  function onKeydown(e) {
13504
- if (props.readonly) return;
13577
+ if (props.readonly || form != null && form.isReadonly.value) return;
13505
13578
  const selectionStart = vTextFieldRef.value.selectionStart;
13506
13579
  const length = selected.value.length;
13507
13580
  if (selectionIndex.value > -1) e.preventDefault();
@@ -13554,7 +13627,7 @@ const VCombobox = genericComponent()({
13554
13627
  vTextFieldRef.value.setSelectionRange(0, 0);
13555
13628
  }
13556
13629
  }
13557
- if (e.key === 'Enter') {
13630
+ if (e.key === 'Enter' && search.value) {
13558
13631
  select(transformItem$1(props, search.value));
13559
13632
  search.value = '';
13560
13633
  }
@@ -13564,7 +13637,7 @@ const VCombobox = genericComponent()({
13564
13637
  }
13565
13638
  function select(item) {
13566
13639
  if (props.multiple) {
13567
- const index = selected.value.findIndex(selection => selection === item.value);
13640
+ const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
13568
13641
  if (index === -1) {
13569
13642
  model.value = [...model.value, item];
13570
13643
  } else {
@@ -13608,6 +13681,7 @@ const VCombobox = genericComponent()({
13608
13681
  });
13609
13682
  useRender(() => {
13610
13683
  const hasChips = !!(props.chips || slots.chip);
13684
+ const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13611
13685
  const [textFieldProps] = filterVTextFieldProps(props);
13612
13686
  return createVNode(VTextField, mergeProps({
13613
13687
  "ref": vTextFieldRef
@@ -13642,12 +13716,13 @@ const VCombobox = genericComponent()({
13642
13716
  "activator": "parent",
13643
13717
  "contentClass": "v-combobox__content",
13644
13718
  "eager": props.eager,
13719
+ "maxHeight": 310,
13645
13720
  "openOnClick": false,
13646
13721
  "closeOnContentClick": false,
13647
13722
  "transition": props.transition,
13648
13723
  "onAfterLeave": onAfterLeave
13649
13724
  }, props.menuProps), {
13650
- default: () => [createVNode(VList, {
13725
+ default: () => [hasList && createVNode(VList, {
13651
13726
  "ref": listRef,
13652
13727
  "selected": selected.value,
13653
13728
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
@@ -13655,9 +13730,9 @@ const VCombobox = genericComponent()({
13655
13730
  "onFocusin": onFocusin,
13656
13731
  "onFocusout": onFocusout
13657
13732
  }, {
13658
- default: () => [!filteredItems.value.length && !props.hideNoData && (((_slots$noData = slots['no-data']) == null ? void 0 : _slots$noData.call(slots)) ?? createVNode(VListItem, {
13733
+ default: () => [!displayItems.value.length && !props.hideNoData && (((_slots$noData = slots['no-data']) == null ? void 0 : _slots$noData.call(slots)) ?? createVNode(VListItem, {
13659
13734
  "title": t(props.noDataText)
13660
- }, null)), (_slots$prependItem = slots['prepend-item']) == null ? void 0 : _slots$prependItem.call(slots), filteredItems.value.map((item, index) => {
13735
+ }, null)), (_slots$prependItem = slots['prepend-item']) == null ? void 0 : _slots$prependItem.call(slots), displayItems.value.map((item, index) => {
13661
13736
  var _slots$item;
13662
13737
  return ((_slots$item = slots.item) == null ? void 0 : _slots$item.call(slots, {
13663
13738
  item,
@@ -14207,6 +14282,7 @@ const VFileInput = defineComponent({
14207
14282
  ...slots,
14208
14283
  default: _ref3 => {
14209
14284
  let {
14285
+ id,
14210
14286
  isDisabled,
14211
14287
  isDirty,
14212
14288
  isReadonly,
@@ -14220,6 +14296,7 @@ const VFileInput = defineComponent({
14220
14296
  "onClick:prependInner": props['onClick:prependInner'],
14221
14297
  "onClick:appendInner": props['onClick:appendInner']
14222
14298
  }, fieldProps, {
14299
+ "id": id.value,
14223
14300
  "active": isDirty.value || isFocused.value,
14224
14301
  "dirty": isDirty.value,
14225
14302
  "focused": isFocused.value,
@@ -16000,6 +16077,7 @@ const VRadioGroup = defineComponent({
16000
16077
  default: _ref2 => {
16001
16078
  let {
16002
16079
  id,
16080
+ messagesId,
16003
16081
  isDisabled,
16004
16082
  isReadonly
16005
16083
  } = _ref2;
@@ -16009,6 +16087,7 @@ const VRadioGroup = defineComponent({
16009
16087
  default: () => [label]
16010
16088
  }), createVNode(VSelectionControlGroup, mergeProps(controlProps, {
16011
16089
  "id": id.value,
16090
+ "aria-describedby": messagesId.value,
16012
16091
  "defaultsTarget": "VRadio",
16013
16092
  "trueIcon": props.trueIcon,
16014
16093
  "falseIcon": props.falseIcon,
@@ -16132,7 +16211,8 @@ const VRangeSlider = defineComponent({
16132
16211
  default: _ref2 => {
16133
16212
  var _startThumbRef$value4, _stopThumbRef$value4;
16134
16213
  let {
16135
- id
16214
+ id,
16215
+ messagesId
16136
16216
  } = _ref2;
16137
16217
  return createVNode("div", {
16138
16218
  "class": "v-slider__container",
@@ -16160,6 +16240,7 @@ const VRangeSlider = defineComponent({
16160
16240
  'tick-label': slots['tick-label']
16161
16241
  }), createVNode(VSliderThumb, {
16162
16242
  "ref": startThumbRef,
16243
+ "aria-describedby": messagesId.value,
16163
16244
  "focused": isFocused && activeThumbRef.value === ((_startThumbRef$value4 = startThumbRef.value) == null ? void 0 : _startThumbRef$value4.$el),
16164
16245
  "modelValue": model.value[0],
16165
16246
  "onUpdate:modelValue": v => model.value = [v, model.value[1]],
@@ -16189,6 +16270,7 @@ const VRangeSlider = defineComponent({
16189
16270
  'thumb-label': slots['thumb-label']
16190
16271
  }), createVNode(VSliderThumb, {
16191
16272
  "ref": stopThumbRef,
16273
+ "aria-describedby": messagesId.value,
16192
16274
  "focused": isFocused && activeThumbRef.value === ((_stopThumbRef$value4 = stopThumbRef.value) == null ? void 0 : _stopThumbRef$value4.$el),
16193
16275
  "modelValue": model.value[1],
16194
16276
  "onUpdate:modelValue": v => model.value = [model.value[0], v],
@@ -17026,6 +17108,7 @@ const VSwitch = defineComponent({
17026
17108
  default: _ref2 => {
17027
17109
  let {
17028
17110
  id,
17111
+ messagesId,
17029
17112
  isDisabled,
17030
17113
  isReadonly,
17031
17114
  isValid
@@ -17036,6 +17119,7 @@ const VSwitch = defineComponent({
17036
17119
  "modelValue": model.value,
17037
17120
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
17038
17121
  "id": id.value,
17122
+ "aria-describedby": messagesId.value,
17039
17123
  "type": "checkbox",
17040
17124
  "aria-checked": indeterminate.value ? 'mixed' : undefined,
17041
17125
  "disabled": isDisabled.value,
@@ -18306,7 +18390,7 @@ function createVuetify$1() {
18306
18390
  locale
18307
18391
  };
18308
18392
  }
18309
- const version$1 = "3.1.0";
18393
+ const version$1 = "3.1.2";
18310
18394
  createVuetify$1.version = version$1;
18311
18395
 
18312
18396
  // Vue's inject() can only be used in setup
@@ -18327,7 +18411,7 @@ const createVuetify = function () {
18327
18411
  ...options
18328
18412
  });
18329
18413
  };
18330
- const version = "3.1.0";
18414
+ const version = "3.1.2";
18331
18415
  createVuetify.version = version;
18332
18416
 
18333
18417
  export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };