@vuetify/nightly 3.7.4-next.2024-11-06 → 3.7.5-dev.2024-12-03

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 (219) hide show
  1. package/dist/json/attributes.json +3034 -3026
  2. package/dist/json/importMap-labs.json +14 -14
  3. package/dist/json/importMap.json +138 -138
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +5538 -5520
  6. package/dist/vuetify-labs.css +25130 -23413
  7. package/dist/vuetify-labs.d.ts +162 -156
  8. package/dist/vuetify-labs.esm.js +89 -71
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +89 -71
  11. package/dist/vuetify-labs.min.css +4 -3
  12. package/dist/vuetify.css +24211 -22491
  13. package/dist/vuetify.d.ts +146 -140
  14. package/dist/vuetify.esm.js +78 -61
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +78 -61
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +4 -3
  19. package/dist/vuetify.min.js +40 -40
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/VAlert.css +215 -207
  22. package/lib/components/VApp/VApp.css +15 -16
  23. package/lib/components/VAppBar/VAppBar.css +12 -14
  24. package/lib/components/VAutocomplete/VAutocomplete.css +85 -86
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/index.d.mts +16 -16
  28. package/lib/components/VAvatar/VAvatar.css +106 -108
  29. package/lib/components/VBadge/VBadge.css +77 -73
  30. package/lib/components/VBadge/VBadge.sass +4 -0
  31. package/lib/components/VBanner/VBanner.css +166 -161
  32. package/lib/components/VBottomNavigation/VBottomNavigation.css +63 -64
  33. package/lib/components/VBottomSheet/VBottomSheet.css +31 -34
  34. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +57 -54
  35. package/lib/components/VBtn/VBtn.css +408 -385
  36. package/lib/components/VBtn/VBtn.sass +4 -4
  37. package/lib/components/VBtnGroup/VBtnGroup.css +64 -63
  38. package/lib/components/VBtnToggle/VBtnToggle.css +14 -16
  39. package/lib/components/VCard/VCard.css +302 -294
  40. package/lib/components/VCarousel/VCarousel.css +65 -63
  41. package/lib/components/VCarousel/VCarousel.sass +1 -1
  42. package/lib/components/VCheckbox/VCheckbox.css +5 -7
  43. package/lib/components/VChip/VChip.css +411 -378
  44. package/lib/components/VChip/VChip.mjs +18 -10
  45. package/lib/components/VChip/VChip.mjs.map +1 -1
  46. package/lib/components/VChip/index.d.mts +13 -8
  47. package/lib/components/VChipGroup/VChipGroup.css +18 -19
  48. package/lib/components/VChipGroup/VChipGroup.mjs +2 -0
  49. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  50. package/lib/components/VChipGroup/index.d.mts +5 -0
  51. package/lib/components/VCode/VCode.css +8 -10
  52. package/lib/components/VColorPicker/VColorPicker.css +22 -22
  53. package/lib/components/VColorPicker/VColorPickerCanvas.css +22 -24
  54. package/lib/components/VColorPicker/VColorPickerEdit.css +28 -29
  55. package/lib/components/VColorPicker/VColorPickerPreview.css +67 -69
  56. package/lib/components/VColorPicker/VColorPickerPreview.sass +2 -4
  57. package/lib/components/VColorPicker/VColorPickerSwatches.css +34 -34
  58. package/lib/components/VCombobox/VCombobox.css +85 -86
  59. package/lib/components/VCombobox/VCombobox.mjs +4 -4
  60. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  61. package/lib/components/VCombobox/index.d.mts +16 -16
  62. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +9 -7
  63. package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -1
  64. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +1 -1
  65. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -1
  66. package/lib/components/VConfirmEdit/index.d.mts +3 -7
  67. package/lib/components/VCounter/VCounter.css +5 -7
  68. package/lib/components/VDataTable/VDataTable.css +186 -189
  69. package/lib/components/VDataTable/VDataTable.sass +10 -20
  70. package/lib/components/VDataTable/VDataTableFooter.css +31 -33
  71. package/lib/components/VDatePicker/VDatePicker.css +6 -8
  72. package/lib/components/VDatePicker/VDatePickerControls.css +56 -54
  73. package/lib/components/VDatePicker/VDatePickerHeader.css +60 -56
  74. package/lib/components/VDatePicker/VDatePickerHeader.mjs +2 -1
  75. package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
  76. package/lib/components/VDatePicker/VDatePickerMonth.css +55 -51
  77. package/lib/components/VDatePicker/VDatePickerMonths.css +19 -20
  78. package/lib/components/VDatePicker/VDatePickerYears.css +15 -16
  79. package/lib/components/VDatePicker/index.d.mts +5 -5
  80. package/lib/components/VDialog/VDialog.css +95 -95
  81. package/lib/components/VDivider/VDivider.css +52 -52
  82. package/lib/components/VEmptyState/VEmptyState.css +67 -62
  83. package/lib/components/VExpansionPanel/VExpansionPanel.css +209 -203
  84. package/lib/components/VExpansionPanel/VExpansionPanel.sass +25 -27
  85. package/lib/components/VFab/VFab.css +69 -74
  86. package/lib/components/VFab/VFab.sass +4 -5
  87. package/lib/components/VField/VField.css +579 -539
  88. package/lib/components/VField/VField.mjs +2 -1
  89. package/lib/components/VField/VField.mjs.map +1 -1
  90. package/lib/components/VFileInput/VFileInput.css +29 -31
  91. package/lib/components/VFooter/VFooter.css +36 -38
  92. package/lib/components/VGrid/VGrid.css +592 -565
  93. package/lib/components/VIcon/VIcon.css +52 -51
  94. package/lib/components/VImg/VImg.css +51 -50
  95. package/lib/components/VInfiniteScroll/VInfiniteScroll.css +37 -36
  96. package/lib/components/VInput/VInput.css +142 -131
  97. package/lib/components/VItemGroup/VItemGroup.css +5 -7
  98. package/lib/components/VKbd/VKbd.css +11 -13
  99. package/lib/components/VLabel/VLabel.css +15 -16
  100. package/lib/components/VLayout/VLayout.css +8 -10
  101. package/lib/components/VLayout/VLayoutItem.css +7 -8
  102. package/lib/components/VList/VList.css +108 -104
  103. package/lib/components/VList/VList.mjs +3 -2
  104. package/lib/components/VList/VList.mjs.map +1 -1
  105. package/lib/components/VList/VList.sass +1 -1
  106. package/lib/components/VList/VListItem.css +452 -440
  107. package/lib/components/VList/VListItem.mjs +3 -2
  108. package/lib/components/VList/VListItem.mjs.map +1 -1
  109. package/lib/components/VList/VListItem.sass +1 -2
  110. package/lib/components/VList/index.d.mts +10 -10
  111. package/lib/components/VLocaleProvider/VLocaleProvider.css +2 -4
  112. package/lib/components/VMain/VMain.css +30 -32
  113. package/lib/components/VMenu/VMenu.css +19 -21
  114. package/lib/components/VMessages/VMessages.css +15 -17
  115. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +108 -106
  116. package/lib/components/VOtpInput/VOtpInput.css +58 -56
  117. package/lib/components/VOverlay/VOverlay.css +63 -60
  118. package/lib/components/VOverlay/VOverlay.sass +13 -14
  119. package/lib/components/VPagination/VPagination.css +8 -10
  120. package/lib/components/VParallax/VParallax.css +6 -8
  121. package/lib/components/VProgressCircular/VProgressCircular.css +101 -95
  122. package/lib/components/VProgressLinear/VProgressLinear.css +222 -209
  123. package/lib/components/VRadioGroup/VRadioGroup.css +12 -14
  124. package/lib/components/VRating/VRating.css +53 -52
  125. package/lib/components/VResponsive/VResponsive.css +26 -25
  126. package/lib/components/VSelect/VSelect.css +52 -54
  127. package/lib/components/VSelect/VSelect.mjs +3 -3
  128. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  129. package/lib/components/VSelect/index.d.mts +16 -16
  130. package/lib/components/VSelectionControl/VSelectionControl.css +102 -100
  131. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +8 -10
  132. package/lib/components/VSheet/VSheet.css +36 -38
  133. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +224 -225
  134. package/lib/components/VSlideGroup/VSlideGroup.css +55 -53
  135. package/lib/components/VSlider/VSlider.css +57 -53
  136. package/lib/components/VSlider/VSliderThumb.css +153 -142
  137. package/lib/components/VSlider/VSliderTrack.css +174 -155
  138. package/lib/components/VSnackbar/VSnackbar.css +140 -140
  139. package/lib/components/VSpeedDial/VSpeedDial.css +41 -43
  140. package/lib/components/VStepper/VStepper.css +56 -55
  141. package/lib/components/VStepper/VStepper.mjs +5 -4
  142. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  143. package/lib/components/VStepper/VStepperItem.css +115 -112
  144. package/lib/components/VStepper/VStepperItem.mjs +5 -4
  145. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  146. package/lib/components/VStepper/index.d.mts +51 -45
  147. package/lib/components/VSwitch/VSwitch.css +139 -129
  148. package/lib/components/VSystemBar/VSystemBar.css +43 -45
  149. package/lib/components/VTable/VTable.css +141 -140
  150. package/lib/components/VTable/VTable.sass +2 -4
  151. package/lib/components/VTabs/VTab.css +29 -30
  152. package/lib/components/VTabs/VTabs.css +65 -59
  153. package/lib/components/VTextField/VTextField.css +68 -65
  154. package/lib/components/VTextarea/VTextarea.css +39 -47
  155. package/lib/components/VTextarea/VTextarea.sass +2 -4
  156. package/lib/components/VThemeProvider/VThemeProvider.css +3 -5
  157. package/lib/components/VTimeline/VTimeline.css +418 -379
  158. package/lib/components/VToolbar/VToolbar.css +143 -136
  159. package/lib/components/VTooltip/VTooltip.css +21 -25
  160. package/lib/components/VTooltip/VTooltip.sass +6 -8
  161. package/lib/components/VVirtualScroll/VVirtualScroll.css +9 -11
  162. package/lib/components/VWindow/VWindow.css +70 -73
  163. package/lib/components/index.d.mts +98 -92
  164. package/lib/composables/form.mjs +7 -2
  165. package/lib/composables/form.mjs.map +1 -1
  166. package/lib/composables/theme.mjs +4 -4
  167. package/lib/composables/theme.mjs.map +1 -1
  168. package/lib/composables/validation.mjs +10 -12
  169. package/lib/composables/validation.mjs.map +1 -1
  170. package/lib/directives/ripple/VRipple.css +36 -38
  171. package/lib/entry-bundler.mjs +1 -1
  172. package/lib/entry-bundler.mjs.map +1 -1
  173. package/lib/framework.mjs +1 -1
  174. package/lib/framework.mjs.map +1 -1
  175. package/lib/index.d.mts +48 -48
  176. package/lib/labs/VCalendar/VCalendar.css +225 -219
  177. package/lib/labs/VCalendar/VCalendarDay.css +32 -33
  178. package/lib/labs/VCalendar/VCalendarHeader.css +13 -13
  179. package/lib/labs/VCalendar/VCalendarInterval.css +42 -43
  180. package/lib/labs/VCalendar/VCalendarIntervalEvent.css +5 -7
  181. package/lib/labs/VCalendar/VCalendarMonthDay.css +58 -61
  182. package/lib/labs/VCalendar/VCalendarMonthDay.sass +2 -3
  183. package/lib/labs/VDateInput/VDateInput.mjs +1 -1
  184. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  185. package/lib/labs/VNumberInput/VNumberInput.css +38 -40
  186. package/lib/labs/VNumberInput/VNumberInput.mjs +7 -5
  187. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  188. package/lib/labs/VPicker/VPicker.css +57 -53
  189. package/lib/labs/VStepperVertical/index.d.mts +44 -44
  190. package/lib/labs/VTimePicker/VTimePicker.css +7 -9
  191. package/lib/labs/VTimePicker/VTimePickerClock.css +129 -126
  192. package/lib/labs/VTimePicker/VTimePickerControls.css +103 -102
  193. package/lib/labs/VTreeview/VTreeviewItem.css +15 -17
  194. package/lib/labs/VTreeview/VTreeviewItem.mjs +3 -4
  195. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  196. package/lib/labs/VTreeview/VTreeviewItem.sass +1 -2
  197. package/lib/labs/VTreeview/index.d.mts +20 -20
  198. package/lib/labs/components.d.mts +64 -64
  199. package/lib/locale/fr.mjs +1 -1
  200. package/lib/locale/fr.mjs.map +1 -1
  201. package/lib/styles/elements/_global.sass +1 -1
  202. package/lib/styles/generic/_colors.scss +3 -3
  203. package/lib/styles/generic/_layers.scss +1 -13
  204. package/lib/styles/generic/_transitions.scss +32 -32
  205. package/lib/styles/main.css +16139 -14666
  206. package/lib/styles/settings/_utilities.scss +5 -0
  207. package/lib/styles/settings/_variables.scss +2 -1
  208. package/lib/styles/tools/_bootable.sass +3 -0
  209. package/lib/styles/tools/_border.sass +4 -4
  210. package/lib/styles/tools/_display.sass +10 -0
  211. package/lib/styles/tools/_elevation.sass +2 -2
  212. package/lib/styles/tools/_index.sass +2 -0
  213. package/lib/styles/tools/_layer.scss +2 -4
  214. package/lib/styles/tools/_position.sass +2 -2
  215. package/lib/styles/tools/_radius.sass +10 -0
  216. package/lib/styles/tools/_rounded.sass +2 -2
  217. package/lib/styles/tools/_utilities.sass +5 -1
  218. package/lib/styles/utilities/_elevation.scss +1 -1
  219. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.4-next.2024-11-06
2
+ * Vuetify v3.7.5-dev.2024-12-03
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2431,15 +2431,15 @@
2431
2431
  const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2432
2432
  for (const key of colors) {
2433
2433
  if (/^on-[a-z]/.test(key)) {
2434
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key}))`]);
2434
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
2435
2435
  } else {
2436
- createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key}))`, `color: rgb(var(--v-theme-on-${key}))`]);
2437
- createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key}))`]);
2436
+ createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);
2437
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
2438
2438
  createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`]);
2439
2439
  }
2440
2440
  }
2441
2441
  lines.push(...bgLines, ...fgLines);
2442
- return '@layer vuetify.theme {\n' + lines.map(v => ` ${v}`).join('') + '\n}';
2442
+ return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
2443
2443
  });
2444
2444
  function getHead() {
2445
2445
  return {
@@ -6674,8 +6674,13 @@
6674
6674
  resetValidation
6675
6675
  };
6676
6676
  }
6677
- function useForm() {
6678
- return vue.inject(FormKey, null);
6677
+ function useForm(props) {
6678
+ const form = vue.inject(FormKey, null);
6679
+ return {
6680
+ ...form,
6681
+ isReadonly: vue.computed(() => !!(props?.readonly ?? form?.isReadonly.value)),
6682
+ isDisabled: vue.computed(() => !!(props?.disabled ?? form?.isDisabled.value))
6683
+ };
6679
6684
  }
6680
6685
 
6681
6686
  // Composables
@@ -6716,17 +6721,15 @@
6716
6721
  let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
6717
6722
  const model = useProxiedModel(props, 'modelValue');
6718
6723
  const validationModel = vue.computed(() => props.validationValue === undefined ? model.value : props.validationValue);
6719
- const form = useForm();
6724
+ const form = useForm(props);
6720
6725
  const internalErrorMessages = vue.ref([]);
6721
6726
  const isPristine = vue.shallowRef(true);
6722
6727
  const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
6723
- const isDisabled = vue.computed(() => !!(props.disabled ?? form?.isDisabled.value));
6724
- const isReadonly = vue.computed(() => !!(props.readonly ?? form?.isReadonly.value));
6725
6728
  const errorMessages = vue.computed(() => {
6726
6729
  return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
6727
6730
  });
6728
6731
  const validateOn = vue.computed(() => {
6729
- let value = (props.validateOn ?? form?.validateOn.value) || 'input';
6732
+ let value = (props.validateOn ?? form.validateOn?.value) || 'input';
6730
6733
  if (value === 'lazy') value = 'input lazy';
6731
6734
  if (value === 'eager') value = 'input eager';
6732
6735
  const set = new Set(value?.split(' ') ?? []);
@@ -6752,14 +6755,14 @@
6752
6755
  return {
6753
6756
  [`${name}--error`]: isValid.value === false,
6754
6757
  [`${name}--dirty`]: isDirty.value,
6755
- [`${name}--disabled`]: isDisabled.value,
6756
- [`${name}--readonly`]: isReadonly.value
6758
+ [`${name}--disabled`]: form.isDisabled.value,
6759
+ [`${name}--readonly`]: form.isReadonly.value
6757
6760
  };
6758
6761
  });
6759
6762
  const vm = getCurrentInstance('validation');
6760
6763
  const uid = vue.computed(() => props.name ?? vue.unref(id));
6761
6764
  vue.onBeforeMount(() => {
6762
- form?.register({
6765
+ form.register?.({
6763
6766
  id: uid.value,
6764
6767
  vm,
6765
6768
  validate,
@@ -6768,13 +6771,13 @@
6768
6771
  });
6769
6772
  });
6770
6773
  vue.onBeforeUnmount(() => {
6771
- form?.unregister(uid.value);
6774
+ form.unregister?.(uid.value);
6772
6775
  });
6773
6776
  vue.onMounted(async () => {
6774
6777
  if (!validateOn.value.lazy) {
6775
6778
  await validate(!validateOn.value.eager);
6776
6779
  }
6777
- form?.update(uid.value, isValid.value, errorMessages.value);
6780
+ form.update?.(uid.value, isValid.value, errorMessages.value);
6778
6781
  });
6779
6782
  useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
6780
6783
  vue.watch(validationModel, () => {
@@ -6794,7 +6797,7 @@
6794
6797
  });
6795
6798
  });
6796
6799
  vue.watch([isValid, errorMessages], () => {
6797
- form?.update(uid.value, isValid.value, errorMessages.value);
6800
+ form.update?.(uid.value, isValid.value, errorMessages.value);
6798
6801
  });
6799
6802
  async function reset() {
6800
6803
  model.value = null;
@@ -6835,8 +6838,8 @@
6835
6838
  return {
6836
6839
  errorMessages,
6837
6840
  isDirty,
6838
- isDisabled,
6839
- isReadonly,
6841
+ isDisabled: form.isDisabled,
6842
+ isReadonly: form.isReadonly,
6840
6843
  isPristine,
6841
6844
  isValid,
6842
6845
  isValidating,
@@ -7755,6 +7758,7 @@
7755
7758
 
7756
7759
  const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group');
7757
7760
  const makeVChipGroupProps = propsFactory({
7761
+ baseColor: String,
7758
7762
  column: Boolean,
7759
7763
  filter: Boolean,
7760
7764
  valueComparator: {
@@ -7794,6 +7798,7 @@
7794
7798
  } = useGroup(props, VChipGroupSymbol);
7795
7799
  provideDefaults({
7796
7800
  VChip: {
7801
+ baseColor: vue.toRef(props, 'baseColor'),
7797
7802
  color: vue.toRef(props, 'color'),
7798
7803
  disabled: vue.toRef(props, 'disabled'),
7799
7804
  filter: vue.toRef(props, 'filter'),
@@ -7827,6 +7832,7 @@
7827
7832
  activeClass: String,
7828
7833
  appendAvatar: String,
7829
7834
  appendIcon: IconValue,
7835
+ baseColor: String,
7830
7836
  closable: Boolean,
7831
7837
  closeIcon: {
7832
7838
  type: IconValue,
@@ -7839,7 +7845,7 @@
7839
7845
  draggable: Boolean,
7840
7846
  filter: Boolean,
7841
7847
  filterIcon: {
7842
- type: String,
7848
+ type: IconValue,
7843
7849
  default: '$complete'
7844
7850
  },
7845
7851
  label: Boolean,
@@ -7901,11 +7907,6 @@
7901
7907
  const {
7902
7908
  borderClasses
7903
7909
  } = useBorder(props);
7904
- const {
7905
- colorClasses,
7906
- colorStyles,
7907
- variantClasses
7908
- } = useVariant(props);
7909
7910
  const {
7910
7911
  densityClasses
7911
7912
  } = useDensity(props);
@@ -7935,6 +7936,18 @@
7935
7936
  emit('click:close', e);
7936
7937
  }
7937
7938
  }));
7939
+ const variantProps = vue.computed(() => {
7940
+ const showColor = !group || group.isSelected.value;
7941
+ return {
7942
+ color: showColor ? props.color ?? props.baseColor : props.baseColor,
7943
+ variant: props.variant
7944
+ };
7945
+ });
7946
+ const {
7947
+ colorClasses,
7948
+ colorStyles,
7949
+ variantClasses
7950
+ } = useVariant(variantProps);
7938
7951
  function onClick(e) {
7939
7952
  emit('click', e);
7940
7953
  if (!isClickable.value) return;
@@ -7955,16 +7968,16 @@
7955
7968
  const hasFilter = !!(slots.filter || props.filter) && group;
7956
7969
  const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
7957
7970
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
7958
- const hasColor = !group || group.isSelected.value;
7959
7971
  return isActive.value && vue.withDirectives(vue.createVNode(Tag, vue.mergeProps({
7960
7972
  "class": ['v-chip', {
7961
7973
  'v-chip--disabled': props.disabled,
7962
7974
  'v-chip--label': props.label,
7963
7975
  'v-chip--link': isClickable.value,
7964
7976
  'v-chip--filter': hasFilter,
7965
- 'v-chip--pill': props.pill
7966
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7967
- "style": [hasColor ? colorStyles.value : undefined, props.style],
7977
+ 'v-chip--pill': props.pill,
7978
+ [`${props.activeClass}`]: props.activeClass && link.isActive?.value
7979
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7980
+ "style": [colorStyles.value, props.style],
7968
7981
  "disabled": props.disabled || undefined,
7969
7982
  "draggable": props.draggable,
7970
7983
  "tabindex": isClickable.value ? 0 : undefined,
@@ -8936,7 +8949,8 @@
8936
8949
  const list = useList();
8937
8950
  const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
8938
8951
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
8939
- const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
8952
+ const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
8953
+ const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
8940
8954
  const roundedProps = vue.computed(() => props.rounded || props.nav);
8941
8955
  const color = vue.computed(() => props.color ?? props.activeColor);
8942
8956
  const variantProps = vue.computed(() => ({
@@ -9027,7 +9041,7 @@
9027
9041
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
9028
9042
  "style": [colorStyles.value, dimensionStyles.value, props.style],
9029
9043
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
9030
- "aria-selected": root.activatable.value ? isActivated.value : isSelected.value,
9044
+ "aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
9031
9045
  "onClick": onClick,
9032
9046
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
9033
9047
  }, link.linkProps), {
@@ -9444,8 +9458,8 @@
9444
9458
  activeClass: String,
9445
9459
  bgColor: String,
9446
9460
  disabled: Boolean,
9447
- expandIcon: String,
9448
- collapseIcon: String,
9461
+ expandIcon: IconValue,
9462
+ collapseIcon: IconValue,
9449
9463
  lines: {
9450
9464
  type: [Boolean, String],
9451
9465
  default: 'one'
@@ -11619,7 +11633,8 @@
11619
11633
  "style": textColorStyles.value
11620
11634
  }, {
11621
11635
  default: () => [label()]
11622
- }), vue.createVNode(VFieldLabel, {
11636
+ }), hasLabel.value && vue.createVNode(VFieldLabel, {
11637
+ "key": "label",
11623
11638
  "ref": labelRef,
11624
11639
  "for": id.value
11625
11640
  }, {
@@ -12445,7 +12460,7 @@
12445
12460
  const counterValue = vue.computed(() => {
12446
12461
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
12447
12462
  });
12448
- const form = useForm();
12463
+ const form = useForm(props);
12449
12464
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
12450
12465
  const isFocused = vue.shallowRef(false);
12451
12466
  const label = vue.computed(() => menu.value ? props.closeText : props.openText);
@@ -12457,7 +12472,7 @@
12457
12472
  }
12458
12473
  return items.value;
12459
12474
  });
12460
- const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12475
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12461
12476
  const computedMenuProps = vue.computed(() => {
12462
12477
  return {
12463
12478
  ...props.menuProps,
@@ -12484,7 +12499,7 @@
12484
12499
  }
12485
12500
  }
12486
12501
  function onKeydown(e) {
12487
- if (!e.key || props.readonly || form?.isReadonly.value) return;
12502
+ if (!e.key || form.isReadonly.value) return;
12488
12503
  if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
12489
12504
  e.preventDefault();
12490
12505
  }
@@ -12962,7 +12977,7 @@
12962
12977
  const counterValue = vue.computed(() => {
12963
12978
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
12964
12979
  });
12965
- const form = useForm();
12980
+ const form = useForm(props);
12966
12981
  const {
12967
12982
  filteredItems,
12968
12983
  getMatches
@@ -12980,7 +12995,7 @@
12980
12995
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
12981
12996
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
12982
12997
  });
12983
- const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
12998
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
12984
12999
  const listRef = vue.ref();
12985
13000
  const listEvents = useScrolling(listRef, vTextFieldRef);
12986
13001
  function onClear(e) {
@@ -13007,7 +13022,7 @@
13007
13022
  }
13008
13023
  }
13009
13024
  function onKeydown(e) {
13010
- if (props.readonly || form?.isReadonly.value) return;
13025
+ if (form.isReadonly.value) return;
13011
13026
  const selectionStart = vTextFieldRef.value.selectionStart;
13012
13027
  const length = model.value.length;
13013
13028
  if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
@@ -13184,7 +13199,7 @@
13184
13199
  'v-autocomplete--selecting-index': selectionIndex.value > -1
13185
13200
  }, props.class],
13186
13201
  "style": props.style,
13187
- "readonly": props.readonly,
13202
+ "readonly": form.isReadonly.value,
13188
13203
  "placeholder": isDirty ? undefined : props.placeholder,
13189
13204
  "onClick:clear": onClear,
13190
13205
  "onMousedown:control": onMousedownControl,
@@ -16803,7 +16818,7 @@
16803
16818
  const transformed = transformOut(v);
16804
16819
  return props.multiple ? transformed : transformed[0] ?? null;
16805
16820
  });
16806
- const form = useForm();
16821
+ const form = useForm(props);
16807
16822
  const hasChips = vue.computed(() => !!(props.chips || slots.chip));
16808
16823
  const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
16809
16824
  const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
@@ -16863,7 +16878,7 @@
16863
16878
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
16864
16879
  return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
16865
16880
  });
16866
- const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
16881
+ const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
16867
16882
  const listRef = vue.ref();
16868
16883
  const listEvents = useScrolling(listRef, vTextFieldRef);
16869
16884
  function onClear(e) {
@@ -16891,7 +16906,7 @@
16891
16906
  }
16892
16907
  // eslint-disable-next-line complexity
16893
16908
  function onKeydown(e) {
16894
- if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
16909
+ if (isComposingIgnoreKey(e) || form.isReadonly.value) return;
16895
16910
  const selectionStart = vTextFieldRef.value.selectionStart;
16896
16911
  const length = model.value.length;
16897
16912
  if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
@@ -17063,7 +17078,7 @@
17063
17078
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
17064
17079
  }, props.class],
17065
17080
  "style": props.style,
17066
- "readonly": props.readonly,
17081
+ "readonly": form.isReadonly.value,
17067
17082
  "placeholder": isDirty ? undefined : props.placeholder,
17068
17083
  "onClick:clear": onClear,
17069
17084
  "onMousedown:control": onMousedownControl,
@@ -18107,21 +18122,23 @@
18107
18122
  internalModel.value = structuredClone(vue.toRaw(model.value));
18108
18123
  emit('cancel');
18109
18124
  }
18110
- let actionsUsed = false;
18111
- useRender(() => {
18112
- const actions = vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, {
18125
+ function actions(actionsProps) {
18126
+ return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, vue.mergeProps({
18113
18127
  "disabled": isPristine.value,
18114
18128
  "variant": "text",
18115
18129
  "color": props.color,
18116
18130
  "onClick": cancel,
18117
18131
  "text": t(props.cancelText)
18118
- }, null), vue.createVNode(VBtn, {
18132
+ }, actionsProps), null), vue.createVNode(VBtn, vue.mergeProps({
18119
18133
  "disabled": isPristine.value,
18120
18134
  "variant": "text",
18121
18135
  "color": props.color,
18122
18136
  "onClick": save,
18123
18137
  "text": t(props.okText)
18124
- }, null)]);
18138
+ }, actionsProps), null)]);
18139
+ }
18140
+ let actionsUsed = false;
18141
+ useRender(() => {
18125
18142
  return vue.createVNode(vue.Fragment, null, [slots.default?.({
18126
18143
  model: internalModel,
18127
18144
  save,
@@ -18131,7 +18148,7 @@
18131
18148
  actionsUsed = true;
18132
18149
  return actions;
18133
18150
  }
18134
- }), !actionsUsed && actions]);
18151
+ }), !actionsUsed && actions()]);
18135
18152
  });
18136
18153
  return {
18137
18154
  save,
@@ -21421,7 +21438,7 @@
21421
21438
  // Types
21422
21439
 
21423
21440
  const makeVDatePickerHeaderProps = propsFactory({
21424
- appendIcon: String,
21441
+ appendIcon: IconValue,
21425
21442
  color: String,
21426
21443
  header: String,
21427
21444
  transition: String,
@@ -26077,20 +26094,20 @@
26077
26094
  subtitle: String,
26078
26095
  complete: Boolean,
26079
26096
  completeIcon: {
26080
- type: String,
26097
+ type: IconValue,
26081
26098
  default: '$complete'
26082
26099
  },
26083
26100
  editable: Boolean,
26084
26101
  editIcon: {
26085
- type: String,
26102
+ type: IconValue,
26086
26103
  default: '$edit'
26087
26104
  },
26088
26105
  error: Boolean,
26089
26106
  errorIcon: {
26090
- type: String,
26107
+ type: IconValue,
26091
26108
  default: '$error'
26092
26109
  },
26093
- icon: String,
26110
+ icon: IconValue,
26094
26111
  ripple: {
26095
26112
  type: [Boolean, Object],
26096
26113
  default: true
@@ -26251,10 +26268,10 @@
26251
26268
  const makeStepperProps = propsFactory({
26252
26269
  altLabels: Boolean,
26253
26270
  bgColor: String,
26254
- completeIcon: String,
26255
- editIcon: String,
26271
+ completeIcon: IconValue,
26272
+ editIcon: IconValue,
26256
26273
  editable: Boolean,
26257
- errorIcon: String,
26274
+ errorIcon: IconValue,
26258
26275
  hideActions: Boolean,
26259
26276
  items: {
26260
26277
  type: Array,
@@ -28152,7 +28169,7 @@
28152
28169
  },
28153
28170
  "onMousedown": e => e.preventDefault()
28154
28171
  }), {
28155
- actions: !props.hideActions ? () => actions : undefined
28172
+ actions: !props.hideActions ? actions : undefined
28156
28173
  });
28157
28174
  }
28158
28175
  })]
@@ -28217,8 +28234,8 @@
28217
28234
  const vTextFieldRef = vue.ref();
28218
28235
  const stepDecimals = vue.computed(() => getDecimals(props.step));
28219
28236
  const modelDecimals = vue.computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28220
- const form = useForm();
28221
- const controlsDisabled = vue.computed(() => props.disabled || props.readonly || form?.isReadonly.value);
28237
+ const form = useForm(props);
28238
+ const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
28222
28239
  const canIncrease = vue.computed(() => {
28223
28240
  if (controlsDisabled.value) return false;
28224
28241
  return (model.value ?? 0) + props.step <= props.max;
@@ -28241,7 +28258,7 @@
28241
28258
  click: onClickDown
28242
28259
  }));
28243
28260
  vue.onMounted(() => {
28244
- if (!props.readonly && !props.disabled) {
28261
+ if (!controlsDisabled.value) {
28245
28262
  clampModel();
28246
28263
  }
28247
28264
  });
@@ -28317,7 +28334,8 @@
28317
28334
  "flat": true,
28318
28335
  "key": "increment-btn",
28319
28336
  "height": controlNodeDefaultHeight.value,
28320
- "name": "increment-btn",
28337
+ "data-testid": "increment",
28338
+ "aria-hidden": "true",
28321
28339
  "icon": incrementIcon.value,
28322
28340
  "onClick": onClickUp,
28323
28341
  "onMousedown": onControlMousedown,
@@ -28344,7 +28362,8 @@
28344
28362
  "flat": true,
28345
28363
  "key": "decrement-btn",
28346
28364
  "height": controlNodeDefaultHeight.value,
28347
- "name": "decrement-btn",
28365
+ "data-testid": "decrement",
28366
+ "aria-hidden": "true",
28348
28367
  "icon": decrementIcon.value,
28349
28368
  "size": controlNodeSize.value,
28350
28369
  "tabindex": "-1",
@@ -29596,9 +29615,8 @@
29596
29615
  const vListItemRef = vue.ref();
29597
29616
  const isActivatableGroupActivator = vue.computed(() => vListItemRef.value?.root.activatable.value && vListItemRef.value?.isGroupActivator);
29598
29617
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
29599
- function activateItem(e) {
29600
- if (!isClickable.value || !isActivatableGroupActivator.value && vListItemRef.value?.isGroupActivator) return;
29601
- if (vListItemRef.value?.root.activatable.value) {
29618
+ function activateGroupActivator(e) {
29619
+ if (isClickable.value && isActivatableGroupActivator.value) {
29602
29620
  vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
29603
29621
  }
29604
29622
  }
@@ -29617,7 +29635,7 @@
29617
29635
  'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(vListItemRef.value?.id)
29618
29636
  }, props.class],
29619
29637
  "ripple": false,
29620
- "onClick": props.onClick ?? activateItem
29638
+ "onClick": props.onClick ?? activateGroupActivator
29621
29639
  }), {
29622
29640
  ...slots,
29623
29641
  prepend: hasPrepend ? slotProps => {
@@ -30407,7 +30425,7 @@
30407
30425
  goTo
30408
30426
  };
30409
30427
  }
30410
- const version$1 = "3.7.4-next.2024-11-06";
30428
+ const version$1 = "3.7.5-dev.2024-12-03";
30411
30429
  createVuetify$1.version = version$1;
30412
30430
 
30413
30431
  // Vue's inject() can only be used in setup
@@ -30660,7 +30678,7 @@
30660
30678
 
30661
30679
  /* eslint-disable local-rules/sort-imports */
30662
30680
 
30663
- const version = "3.7.4-next.2024-11-06";
30681
+ const version = "3.7.5-dev.2024-12-03";
30664
30682
 
30665
30683
  /* eslint-disable local-rules/sort-imports */
30666
30684