@vuetify/nightly 3.8.8-dev.2025-06-04 → 3.8.8-master.2025-06-06

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 (172) hide show
  1. package/CHANGELOG.md +5 -37
  2. package/dist/json/attributes.json +3519 -3619
  3. package/dist/json/importMap-labs.json +20 -20
  4. package/dist/json/importMap.json +148 -148
  5. package/dist/json/tags.json +0 -25
  6. package/dist/json/web-types.json +6117 -6449
  7. package/dist/vuetify-labs.cjs +144 -354
  8. package/dist/vuetify-labs.css +5834 -5868
  9. package/dist/vuetify-labs.d.ts +1899 -2397
  10. package/dist/vuetify-labs.esm.js +145 -355
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +144 -354
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +133 -348
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4252 -4286
  17. package/dist/vuetify.d.ts +1094 -1552
  18. package/dist/vuetify.esm.js +134 -349
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +133 -348
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +1207 -1222
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAlert/VAlert.css +1 -6
  26. package/lib/components/VAlert/VAlert.d.ts +0 -35
  27. package/lib/components/VAlert/VAlert.js +10 -15
  28. package/lib/components/VAlert/VAlert.js.map +1 -1
  29. package/lib/components/VAlert/VAlert.sass +1 -7
  30. package/lib/components/VAppBar/VAppBar.d.ts +3 -15
  31. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +10 -20
  32. package/lib/components/VAutocomplete/VAutocomplete.d.ts +103 -154
  33. package/lib/components/VAutocomplete/VAutocomplete.js +3 -21
  34. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  35. package/lib/components/VBtn/VBtn.d.ts +10 -20
  36. package/lib/components/VBtnGroup/VBtnGroup.css +7 -30
  37. package/lib/components/VBtnGroup/VBtnGroup.d.ts +32 -58
  38. package/lib/components/VBtnGroup/VBtnGroup.js +3 -7
  39. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  40. package/lib/components/VBtnGroup/VBtnGroup.sass +17 -44
  41. package/lib/components/VBtnToggle/VBtnToggle.d.ts +0 -25
  42. package/lib/components/VCard/VCard.d.ts +10 -20
  43. package/lib/components/VCheckbox/VCheckbox.d.ts +13 -23
  44. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +10 -20
  45. package/lib/components/VChip/VChip.d.ts +10 -20
  46. package/lib/components/VChipGroup/VChipGroup.d.ts +0 -10
  47. package/lib/components/VCombobox/VCombobox.d.ts +103 -154
  48. package/lib/components/VCombobox/VCombobox.js +3 -22
  49. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  50. package/lib/components/VDataTable/VDataTable.d.ts +0 -60
  51. package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
  52. package/lib/components/VDataTable/VDataTableHeaders.js +2 -4
  53. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  54. package/lib/components/VDataTable/VDataTableServer.d.ts +0 -42
  55. package/lib/components/VDataTable/VDataTableVirtual.d.ts +0 -42
  56. package/lib/components/VDatePicker/VDatePicker.d.ts +0 -10
  57. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +0 -10
  58. package/lib/components/VDatePicker/VDatePickerMonth.js +1 -1
  59. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  60. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +10 -20
  61. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +10 -20
  62. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +10 -20
  63. package/lib/components/VFab/VFab.d.ts +10 -20
  64. package/lib/components/VField/VField.d.ts +3 -3
  65. package/lib/components/VFileInput/VFileInput.d.ts +15 -15
  66. package/lib/components/VInput/VInput.d.ts +4 -4
  67. package/lib/components/VList/VList.d.ts +0 -13
  68. package/lib/components/VList/VList.js +1 -4
  69. package/lib/components/VList/VList.js.map +1 -1
  70. package/lib/components/VList/VListChildren.js.map +1 -1
  71. package/lib/components/VList/VListItem.d.ts +10 -23
  72. package/lib/components/VList/VListItem.js +3 -7
  73. package/lib/components/VList/VListItem.js.map +1 -1
  74. package/lib/components/VList/list.d.ts +2 -9
  75. package/lib/components/VList/list.js +0 -7
  76. package/lib/components/VList/list.js.map +1 -1
  77. package/lib/components/VNumberInput/VNumberInput.d.ts +89 -103
  78. package/lib/components/VNumberInput/VNumberInput.js +4 -19
  79. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  80. package/lib/components/VOtpInput/VOtpInput.js +1 -2
  81. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  82. package/lib/components/VOverlay/VOverlay.css +1 -1
  83. package/lib/components/VOverlay/_variables.scss +1 -1
  84. package/lib/components/VRadio/VRadio.d.ts +10 -20
  85. package/lib/components/VRadioGroup/VRadioGroup.d.ts +13 -23
  86. package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
  87. package/lib/components/VSelect/VSelect.d.ts +107 -171
  88. package/lib/components/VSelect/VSelect.js +3 -21
  89. package/lib/components/VSelect/VSelect.js.map +1 -1
  90. package/lib/components/VSelectionControl/VSelectionControl.d.ts +10 -20
  91. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +14 -28
  92. package/lib/components/VSlideGroup/VSlideGroup.d.ts +0 -10
  93. package/lib/components/VSlideGroup/VSlideGroup.js +1 -2
  94. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  95. package/lib/components/VSlider/VSlider.d.ts +3 -3
  96. package/lib/components/VSlider/VSliderThumb.d.ts +10 -20
  97. package/lib/components/VStepper/VStepperItem.d.ts +14 -28
  98. package/lib/components/VSwitch/VSwitch.d.ts +13 -23
  99. package/lib/components/VTable/VTable.css +0 -6
  100. package/lib/components/VTable/VTable.d.ts +24 -55
  101. package/lib/components/VTable/VTable.js +2 -9
  102. package/lib/components/VTable/VTable.js.map +1 -1
  103. package/lib/components/VTable/VTable.sass +0 -14
  104. package/lib/components/VTable/_variables.scss +0 -1
  105. package/lib/components/VTabs/VTab.d.ts +28 -56
  106. package/lib/components/VTabs/VTabs.d.ts +0 -10
  107. package/lib/components/VTextField/VTextField.d.ts +27 -27
  108. package/lib/components/VTextarea/VTextarea.d.ts +15 -15
  109. package/lib/components/VToolbar/VToolbar.d.ts +3 -15
  110. package/lib/components/VToolbar/VToolbar.js +3 -6
  111. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  112. package/lib/composables/calendar.d.ts +0 -6
  113. package/lib/composables/calendar.js +1 -2
  114. package/lib/composables/calendar.js.map +1 -1
  115. package/lib/composables/date/DateAdapter.d.ts +3 -3
  116. package/lib/composables/date/DateAdapter.js.map +1 -1
  117. package/lib/composables/date/adapters/vuetify.d.ts +1 -1
  118. package/lib/composables/date/adapters/vuetify.js +4 -4
  119. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  120. package/lib/composables/date/date.d.ts +3 -3
  121. package/lib/composables/date/index.d.ts +0 -1
  122. package/lib/composables/date/index.js +0 -1
  123. package/lib/composables/date/index.js.map +1 -1
  124. package/lib/composables/filter.js +0 -3
  125. package/lib/composables/filter.js.map +1 -1
  126. package/lib/composables/icons.d.ts +6 -0
  127. package/lib/composables/icons.js.map +1 -1
  128. package/lib/composables/theme.d.ts +1 -6
  129. package/lib/composables/theme.js +26 -94
  130. package/lib/composables/theme.js.map +1 -1
  131. package/lib/composables/virtual.js +1 -6
  132. package/lib/composables/virtual.js.map +1 -1
  133. package/lib/directives/ripple/index.d.ts +1 -2
  134. package/lib/directives/ripple/index.js +7 -12
  135. package/lib/directives/ripple/index.js.map +1 -1
  136. package/lib/entry-bundler.d.ts +3 -3
  137. package/lib/entry-bundler.js +1 -1
  138. package/lib/entry-bundler.js.map +1 -1
  139. package/lib/framework.d.ts +68 -77
  140. package/lib/framework.js +1 -1
  141. package/lib/framework.js.map +1 -1
  142. package/lib/iconsets/fa.js +3 -1
  143. package/lib/iconsets/fa.js.map +1 -1
  144. package/lib/iconsets/fa4.js +3 -1
  145. package/lib/iconsets/fa4.js.map +1 -1
  146. package/lib/iconsets/md.js +3 -1
  147. package/lib/iconsets/md.js.map +1 -1
  148. package/lib/iconsets/mdi-svg.js +3 -1
  149. package/lib/iconsets/mdi-svg.js.map +1 -1
  150. package/lib/labs/VCalendar/VCalendar.d.ts +0 -10
  151. package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
  152. package/lib/labs/VDateInput/VDateInput.d.ts +87 -97
  153. package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
  154. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +10 -20
  155. package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
  156. package/lib/labs/VIconBtn/VIconBtn.js +11 -7
  157. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  158. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +10 -20
  159. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +10 -20
  160. package/lib/labs/VTreeview/VTreeview.d.ts +0 -13
  161. package/lib/labs/VTreeview/VTreeviewItem.d.ts +10 -20
  162. package/lib/labs/entry-bundler.d.ts +3 -3
  163. package/lib/util/globals.d.ts +0 -1
  164. package/lib/util/globals.js +0 -1
  165. package/lib/util/globals.js.map +1 -1
  166. package/package.json +1 -3
  167. package/lib/composables/date/adapters/string.d.ts +0 -54
  168. package/lib/composables/date/adapters/string.js +0 -153
  169. package/lib/composables/date/adapters/string.js.map +0 -1
  170. package/lib/composables/iconSizes.d.ts +0 -28
  171. package/lib/composables/iconSizes.js +0 -23
  172. package/lib/composables/iconSizes.js.map +0 -1
@@ -1,16 +1,15 @@
1
1
  /*!
2
- * Vuetify v3.8.8-dev.2025-06-04
2
+ * Vuetify v3.8.8-master.2025-06-06
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, watchEffect, toRef, capitalize, camelize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, normalizeStyle, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, watchEffect, toRef, capitalize, camelize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, normalizeStyle, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
11
11
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
12
12
  const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
13
- const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
14
13
 
15
14
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
16
15
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -2833,7 +2832,6 @@ const makeThemeProps = propsFactory({
2833
2832
  function genDefaults$1() {
2834
2833
  return {
2835
2834
  defaultTheme: 'light',
2836
- prefix: 'v-',
2837
2835
  variations: {
2838
2836
  colors: [],
2839
2837
  lighten: 0,
@@ -2915,10 +2913,7 @@ function genDefaults$1() {
2915
2913
  }
2916
2914
  }
2917
2915
  },
2918
- stylesheetId: 'vuetify-theme-stylesheet',
2919
- scoped: false,
2920
- unimportant: false,
2921
- utilities: true
2916
+ stylesheetId: 'vuetify-theme-stylesheet'
2922
2917
  };
2923
2918
  }
2924
2919
  function parseThemeOptions() {
@@ -2941,21 +2936,21 @@ function parseThemeOptions() {
2941
2936
  function createCssClass(lines, selector, content, scope) {
2942
2937
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2943
2938
  }
2944
- function genCssVariables(theme, prefix) {
2939
+ function genCssVariables(theme) {
2945
2940
  const lightOverlay = theme.dark ? 2 : 1;
2946
2941
  const darkOverlay = theme.dark ? 1 : 2;
2947
2942
  const variables = [];
2948
2943
  for (const [key, value] of Object.entries(theme.colors)) {
2949
2944
  const rgb = parseColor(value);
2950
- variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2945
+ variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2951
2946
  if (!key.startsWith('on-')) {
2952
- variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2947
+ variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2953
2948
  }
2954
2949
  }
2955
2950
  for (const [key, value] of Object.entries(theme.variables)) {
2956
2951
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2957
2952
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2958
- variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2953
+ variables.push(`--v-${key}: ${rgb ?? value}`);
2959
2954
  }
2960
2955
  return variables;
2961
2956
  }
@@ -2999,8 +2994,7 @@ function getScopedSelector(selector, scope) {
2999
2994
  const scopeSelector = `:where(${scope})`;
3000
2995
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
3001
2996
  }
3002
- function upsertStyles(id, cspNonce, styles) {
3003
- const styleEl = getOrCreateStyleElement(id, cspNonce);
2997
+ function upsertStyles(styleEl, styles) {
3004
2998
  if (!styleEl) return;
3005
2999
  styleEl.innerHTML = styles;
3006
3000
  }
@@ -3020,17 +3014,8 @@ function getOrCreateStyleElement(id, cspNonce) {
3020
3014
  // Composables
3021
3015
  function createTheme(options) {
3022
3016
  const parsedOptions = parseThemeOptions(options);
3023
- const _name = shallowRef(parsedOptions.defaultTheme);
3017
+ const name = shallowRef(parsedOptions.defaultTheme);
3024
3018
  const themes = ref(parsedOptions.themes);
3025
- const systemName = shallowRef('light');
3026
- const name = computed({
3027
- get() {
3028
- return _name.value === 'system' ? systemName.value : _name.value;
3029
- },
3030
- set(val) {
3031
- _name.value = val;
3032
- }
3033
- });
3034
3019
  const computedThemes = computed(() => {
3035
3020
  const acc = {};
3036
3021
  for (const [name, original] of Object.entries(themes.value)) {
@@ -3051,49 +3036,28 @@ function createTheme(options) {
3051
3036
  const current = toRef(() => computedThemes.value[name.value]);
3052
3037
  const styles = computed(() => {
3053
3038
  const lines = [];
3054
- const important = parsedOptions.unimportant ? '' : ' !important';
3055
- const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
3056
3039
  if (current.value?.dark) {
3057
3040
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
3058
3041
  }
3059
- createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
3042
+ createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
3060
3043
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
3061
- createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
3062
- }
3063
- if (parsedOptions.utilities) {
3064
- const bgLines = [];
3065
- const fgLines = [];
3066
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3067
- for (const key of colors) {
3068
- if (key.startsWith('on-')) {
3069
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3070
- } else {
3071
- createCssClass(bgLines, `.${scoped}bg-${key}`, [`--${parsedOptions.prefix}theme-overlay-multiplier: var(--${parsedOptions.prefix}theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`, `color: rgb(var(--${parsedOptions.prefix}theme-on-${key}))${important}`], parsedOptions.scope);
3072
- createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3073
- createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
3074
- }
3044
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
3045
+ }
3046
+ const bgLines = [];
3047
+ const fgLines = [];
3048
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3049
+ for (const key of colors) {
3050
+ if (key.startsWith('on-')) {
3051
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
3052
+ } else {
3053
+ 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`], parsedOptions.scope);
3054
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
3055
+ createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
3075
3056
  }
3076
- lines.push(...bgLines, ...fgLines);
3077
3057
  }
3058
+ lines.push(...bgLines, ...fgLines);
3078
3059
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
3079
3060
  });
3080
- const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
3081
- const themeNames = toRef(() => Object.keys(computedThemes.value));
3082
- if (SUPPORTS_MATCH_MEDIA) {
3083
- const media = window.matchMedia('(prefers-color-scheme: dark)');
3084
- function updateSystemName() {
3085
- systemName.value = media.matches ? 'dark' : 'light';
3086
- }
3087
- updateSystemName();
3088
- media.addEventListener('change', updateSystemName, {
3089
- passive: true
3090
- });
3091
- if (getCurrentScope()) {
3092
- onScopeDispose(() => {
3093
- media.removeEventListener('change', updateSystemName);
3094
- });
3095
- }
3096
- }
3097
3061
  function install(app) {
3098
3062
  if (parsedOptions.isDisabled) return;
3099
3063
  const head = app._context.provides.usehead;
@@ -3131,55 +3095,22 @@ function createTheme(options) {
3131
3095
  updateStyles();
3132
3096
  }
3133
3097
  function updateStyles() {
3134
- upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
3098
+ upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
3135
3099
  }
3136
3100
  }
3137
3101
  }
3138
- function change(themeName) {
3139
- if (!themeNames.value.includes(themeName)) {
3140
- consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
3141
- return;
3142
- }
3143
- name.value = themeName;
3144
- }
3145
- function cycle() {
3146
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
3147
- const currentIndex = themeArray.indexOf(name.value);
3148
- const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
3149
- change(themeArray[nextIndex]);
3150
- }
3151
- function toggle() {
3152
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
3153
- cycle(themeArray);
3154
- }
3155
- const globalName = new Proxy(name, {
3156
- get(target, prop) {
3157
- return target[prop];
3158
- },
3159
- set(target, prop, val) {
3160
- if (prop === 'value') {
3161
- deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
3162
- }
3163
- // @ts-expect-error
3164
- target[prop] = val;
3165
- return true;
3166
- }
3167
- });
3102
+ const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
3168
3103
  return {
3169
3104
  install,
3170
- change,
3171
- cycle,
3172
- toggle,
3173
3105
  isDisabled: parsedOptions.isDisabled,
3174
3106
  name,
3175
3107
  themes,
3176
3108
  current,
3177
3109
  computedThemes,
3178
- prefix: parsedOptions.prefix,
3179
3110
  themeClasses,
3180
3111
  styles,
3181
3112
  global: {
3182
- name: globalName,
3113
+ name,
3183
3114
  current
3184
3115
  }
3185
3116
  };
@@ -3190,7 +3121,7 @@ function provideTheme(props) {
3190
3121
  if (!theme) throw new Error('Could not find Vuetify theme injection');
3191
3122
  const name = toRef(() => props.theme ?? theme.name.value);
3192
3123
  const current = toRef(() => theme.themes.value[name.value]);
3193
- const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
3124
+ const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
3194
3125
  const newTheme = {
3195
3126
  ...theme,
3196
3127
  name,
@@ -4294,10 +4225,7 @@ const makeVToolbarProps = propsFactory({
4294
4225
  default: 'default',
4295
4226
  validator: v => allowedDensities$1.includes(v)
4296
4227
  },
4297
- extended: {
4298
- type: Boolean,
4299
- default: null
4300
- },
4228
+ extended: Boolean,
4301
4229
  extensionHeight: {
4302
4230
  type: [Number, String],
4303
4231
  default: 48
@@ -4345,7 +4273,7 @@ const VToolbar = genericComponent()({
4345
4273
  const {
4346
4274
  rtlClasses
4347
4275
  } = useRtl();
4348
- const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
4276
+ const isExtended = shallowRef(!!(props.extended || slots.extension?.()));
4349
4277
  const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
4350
4278
  const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
4351
4279
  provideDefaults({
@@ -4357,7 +4285,7 @@ const VToolbar = genericComponent()({
4357
4285
  const hasTitle = !!(props.title || slots.title);
4358
4286
  const hasImage = !!(slots.image || props.image);
4359
4287
  const extension = slots.extension?.();
4360
- isExtended.value = props.extended === null ? !!extension : props.extended;
4288
+ isExtended.value = !!(props.extended || extension);
4361
4289
  return createVNode(props.tag, {
4362
4290
  "class": normalizeClass(['v-toolbar', {
4363
4291
  'v-toolbar--absolute': props.absolute,
@@ -4740,15 +4668,9 @@ function useVariant(props) {
4740
4668
  };
4741
4669
  }
4742
4670
 
4743
- // Types
4744
-
4745
4671
  const makeVBtnGroupProps = propsFactory({
4746
4672
  baseColor: String,
4747
4673
  divided: Boolean,
4748
- direction: {
4749
- type: String,
4750
- default: 'horizontal'
4751
- },
4752
4674
  ...makeBorderProps(),
4753
4675
  ...makeComponentProps(),
4754
4676
  ...makeDensityProps(),
@@ -4782,7 +4704,7 @@ const VBtnGroup = genericComponent()({
4782
4704
  } = useRounded(props);
4783
4705
  provideDefaults({
4784
4706
  VBtn: {
4785
- height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
4707
+ height: 'auto',
4786
4708
  baseColor: toRef(() => props.baseColor),
4787
4709
  color: toRef(() => props.color),
4788
4710
  density: toRef(() => props.density),
@@ -4792,7 +4714,7 @@ const VBtnGroup = genericComponent()({
4792
4714
  });
4793
4715
  useRender(() => {
4794
4716
  return createVNode(props.tag, {
4795
- "class": normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
4717
+ "class": normalizeClass(['v-btn-group', {
4796
4718
  'v-btn-group--divided': props.divided
4797
4719
  }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
4798
4720
  "style": normalizeStyle(props.style)
@@ -5915,8 +5837,8 @@ function rippleCancelShow(e) {
5915
5837
  window.clearTimeout(element._ripple.showTimer);
5916
5838
  }
5917
5839
  let keyboardRipple = false;
5918
- function keyboardRippleShow(e, keys) {
5919
- if (!keyboardRipple && keys.includes(e.keyCode)) {
5840
+ function keyboardRippleShow(e) {
5841
+ if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5920
5842
  keyboardRipple = true;
5921
5843
  rippleShow(e);
5922
5844
  }
@@ -5944,12 +5866,9 @@ function updateRipple(el, binding, wasEnabled) {
5944
5866
  el._ripple.enabled = enabled;
5945
5867
  el._ripple.centered = modifiers.center;
5946
5868
  el._ripple.circle = modifiers.circle;
5947
- const bindingValue = isObject(value) ? value : {};
5948
- if (bindingValue.class) {
5949
- el._ripple.class = bindingValue.class;
5869
+ if (isObject(value) && value.class) {
5870
+ el._ripple.class = value.class;
5950
5871
  }
5951
- const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5952
- el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5953
5872
  if (enabled && !wasEnabled) {
5954
5873
  if (modifiers.stop) {
5955
5874
  el.addEventListener('touchstart', rippleStop, {
@@ -5971,7 +5890,7 @@ function updateRipple(el, binding, wasEnabled) {
5971
5890
  el.addEventListener('mousedown', rippleShow);
5972
5891
  el.addEventListener('mouseup', rippleHide);
5973
5892
  el.addEventListener('mouseleave', rippleHide);
5974
- el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5893
+ el.addEventListener('keydown', keyboardRippleShow);
5975
5894
  el.addEventListener('keyup', keyboardRippleHide);
5976
5895
  el.addEventListener('blur', focusRippleHide);
5977
5896
 
@@ -5991,9 +5910,7 @@ function removeListeners(el) {
5991
5910
  el.removeEventListener('touchcancel', rippleHide);
5992
5911
  el.removeEventListener('mouseup', rippleHide);
5993
5912
  el.removeEventListener('mouseleave', rippleHide);
5994
- if (el._ripple?.keyDownHandler) {
5995
- el.removeEventListener('keydown', el._ripple.keyDownHandler);
5996
- }
5913
+ el.removeEventListener('keydown', keyboardRippleShow);
5997
5914
  el.removeEventListener('keyup', keyboardRippleHide);
5998
5915
  el.removeEventListener('dragstart', rippleHide);
5999
5916
  el.removeEventListener('blur', focusRippleHide);
@@ -6002,8 +5919,8 @@ function mounted$4(el, binding) {
6002
5919
  updateRipple(el, binding, false);
6003
5920
  }
6004
5921
  function unmounted$4(el) {
6005
- removeListeners(el);
6006
5922
  delete el._ripple;
5923
+ removeListeners(el);
6007
5924
  }
6008
5925
  function updated$1(el, binding) {
6009
5926
  if (binding.value === binding.oldValue) {
@@ -6276,31 +6193,6 @@ const VAppBarTitle = genericComponent()({
6276
6193
  // Utilities
6277
6194
  const VAlertTitle = createSimpleFunctional('v-alert-title');
6278
6195
 
6279
- // Utilities
6280
-
6281
- // Types
6282
-
6283
- // Types
6284
-
6285
- // Composables
6286
- const makeIconSizeProps = propsFactory({
6287
- iconSize: [Number, String],
6288
- iconSizes: {
6289
- type: Array,
6290
- default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
6291
- }
6292
- }, 'iconSize');
6293
- function useIconSizes(props, fallback) {
6294
- const iconSize = computed(() => {
6295
- const iconSizeMap = new Map(props.iconSizes);
6296
- const _iconSize = props.iconSize ?? fallback() ?? 'default';
6297
- return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
6298
- });
6299
- return {
6300
- iconSize
6301
- };
6302
- }
6303
-
6304
6196
  // Types
6305
6197
 
6306
6198
  const allowedTypes = ['success', 'info', 'warning', 'error'];
@@ -6340,7 +6232,6 @@ const makeVAlertProps = propsFactory({
6340
6232
  ...makeDensityProps(),
6341
6233
  ...makeDimensionProps(),
6342
6234
  ...makeElevationProps(),
6343
- ...makeIconSizeProps(),
6344
6235
  ...makeLocationProps(),
6345
6236
  ...makePositionProps(),
6346
6237
  ...makeRoundedProps(),
@@ -6368,9 +6259,6 @@ const VAlert = genericComponent()({
6368
6259
  if (!props.type) return props.icon;
6369
6260
  return props.icon ?? `$${props.type}`;
6370
6261
  });
6371
- const {
6372
- iconSize
6373
- } = useIconSizes(props, () => props.prominent ? 44 : 28);
6374
6262
  const {
6375
6263
  themeClasses
6376
6264
  } = provideTheme(props);
@@ -6418,11 +6306,6 @@ const VAlert = genericComponent()({
6418
6306
  const hasPrepend = !!(slots.prepend || icon.value);
6419
6307
  const hasTitle = !!(slots.title || props.title);
6420
6308
  const hasClose = !!(slots.close || props.closable);
6421
- const iconProps = {
6422
- density: props.density,
6423
- icon: icon.value,
6424
- size: iconSize.value
6425
- };
6426
6309
  return isActive.value && createVNode(props.tag, {
6427
6310
  "class": normalizeClass(['v-alert', props.border && {
6428
6311
  'v-alert--border': !!props.border,
@@ -6440,14 +6323,19 @@ const VAlert = genericComponent()({
6440
6323
  }, null), hasPrepend && createElementVNode("div", {
6441
6324
  "key": "prepend",
6442
6325
  "class": "v-alert__prepend"
6443
- }, [!slots.prepend ? createVNode(VIcon, mergeProps({
6444
- "key": "prepend-icon"
6445
- }, iconProps), null) : createVNode(VDefaultsProvider, {
6326
+ }, [!slots.prepend ? createVNode(VIcon, {
6327
+ "key": "prepend-icon",
6328
+ "density": props.density,
6329
+ "icon": icon.value,
6330
+ "size": props.prominent ? 44 : 28
6331
+ }, null) : createVNode(VDefaultsProvider, {
6446
6332
  "key": "prepend-defaults",
6447
6333
  "disabled": !icon.value,
6448
6334
  "defaults": {
6449
6335
  VIcon: {
6450
- ...iconProps
6336
+ density: props.density,
6337
+ icon: icon.value,
6338
+ size: props.prominent ? 44 : 28
6451
6339
  }
6452
6340
  }
6453
6341
  }, slots.prepend)]), createElementVNode("div", {
@@ -7972,7 +7860,6 @@ function getOffsetPosition(isHorizontal, element) {
7972
7860
  const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
7973
7861
  const makeVSlideGroupProps = propsFactory({
7974
7862
  centerActive: Boolean,
7975
- contentClass: null,
7976
7863
  direction: {
7977
7864
  type: String,
7978
7865
  default: 'horizontal'
@@ -8285,7 +8172,7 @@ const VSlideGroup = genericComponent()({
8285
8172
  })]), createElementVNode("div", {
8286
8173
  "key": "container",
8287
8174
  "ref": containerRef,
8288
- "class": normalizeClass(['v-slide-group__container', props.contentClass]),
8175
+ "class": "v-slide-group__container",
8289
8176
  "onScroll": onScroll
8290
8177
  }, [createElementVNode("div", {
8291
8178
  "ref": contentRef,
@@ -8648,85 +8535,16 @@ const VChip = genericComponent()({
8648
8535
  }
8649
8536
  });
8650
8537
 
8651
- const makeVDividerProps = propsFactory({
8652
- color: String,
8653
- inset: Boolean,
8654
- length: [Number, String],
8655
- opacity: [Number, String],
8656
- thickness: [Number, String],
8657
- vertical: Boolean,
8658
- ...makeComponentProps(),
8659
- ...makeThemeProps()
8660
- }, 'VDivider');
8661
- const VDivider = genericComponent()({
8662
- name: 'VDivider',
8663
- props: makeVDividerProps(),
8664
- setup(props, _ref) {
8665
- let {
8666
- attrs,
8667
- slots
8668
- } = _ref;
8669
- const {
8670
- themeClasses
8671
- } = provideTheme(props);
8672
- const {
8673
- textColorClasses,
8674
- textColorStyles
8675
- } = useTextColor(() => props.color);
8676
- const dividerStyles = computed(() => {
8677
- const styles = {};
8678
- if (props.length) {
8679
- styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
8680
- }
8681
- if (props.thickness) {
8682
- styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
8683
- }
8684
- return styles;
8685
- });
8686
- useRender(() => {
8687
- const divider = createElementVNode("hr", {
8688
- "class": normalizeClass([{
8689
- 'v-divider': true,
8690
- 'v-divider--inset': props.inset,
8691
- 'v-divider--vertical': props.vertical
8692
- }, themeClasses.value, textColorClasses.value, props.class]),
8693
- "style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
8694
- '--v-border-opacity': props.opacity
8695
- }, props.style]),
8696
- "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
8697
- "role": `${attrs.role || 'separator'}`
8698
- }, null);
8699
- if (!slots.default) return divider;
8700
- return createElementVNode("div", {
8701
- "class": normalizeClass(['v-divider__wrapper', {
8702
- 'v-divider__wrapper--vertical': props.vertical,
8703
- 'v-divider__wrapper--inset': props.inset
8704
- }])
8705
- }, [divider, createElementVNode("div", {
8706
- "class": "v-divider__content"
8707
- }, [slots.default()]), divider]);
8708
- });
8709
- return {};
8710
- }
8711
- });
8712
-
8713
8538
  // Utilities
8714
8539
 
8715
8540
  // List
8716
8541
  const ListKey = Symbol.for('vuetify:list');
8717
8542
  function createList() {
8718
- let {
8719
- filterable
8720
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8721
- filterable: false
8722
- };
8723
8543
  const parent = inject$1(ListKey, {
8724
- filterable: false,
8725
8544
  hasPrepend: shallowRef(false),
8726
8545
  updateHasPrepend: () => null
8727
8546
  });
8728
8547
  const data = {
8729
- filterable: parent.filterable || filterable,
8730
8548
  hasPrepend: shallowRef(false),
8731
8549
  updateHasPrepend: value => {
8732
8550
  if (value) data.hasPrepend.value = value;
@@ -9678,9 +9496,6 @@ const VListItem = genericComponent()({
9678
9496
  roundedClasses
9679
9497
  } = useRounded(roundedProps);
9680
9498
  const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9681
- const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9682
- keys: [keyCodes.enter]
9683
- } : props.ripple);
9684
9499
  const slotProps = computed(() => ({
9685
9500
  isActive: isActive.value,
9686
9501
  select,
@@ -9705,9 +9520,8 @@ const VListItem = genericComponent()({
9705
9520
  function onKeyDown(e) {
9706
9521
  const target = e.target;
9707
9522
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9708
- if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9523
+ if (e.key === 'Enter' || e.key === ' ') {
9709
9524
  e.preventDefault();
9710
- e.stopPropagation();
9711
9525
  e.target.dispatchEvent(new MouseEvent('click', e));
9712
9526
  }
9713
9527
  }
@@ -9817,7 +9631,7 @@ const VListItem = genericComponent()({
9817
9631
  }), createElementVNode("div", {
9818
9632
  "class": "v-list-item__spacer"
9819
9633
  }, null)])]
9820
- }), [[Ripple, isClickable.value && rippleOptions.value]]);
9634
+ }), [[Ripple, isClickable.value && props.ripple]]);
9821
9635
  });
9822
9636
  return {
9823
9637
  activate,
@@ -9872,6 +9686,68 @@ const VListSubheader = genericComponent()({
9872
9686
  }
9873
9687
  });
9874
9688
 
9689
+ const makeVDividerProps = propsFactory({
9690
+ color: String,
9691
+ inset: Boolean,
9692
+ length: [Number, String],
9693
+ opacity: [Number, String],
9694
+ thickness: [Number, String],
9695
+ vertical: Boolean,
9696
+ ...makeComponentProps(),
9697
+ ...makeThemeProps()
9698
+ }, 'VDivider');
9699
+ const VDivider = genericComponent()({
9700
+ name: 'VDivider',
9701
+ props: makeVDividerProps(),
9702
+ setup(props, _ref) {
9703
+ let {
9704
+ attrs,
9705
+ slots
9706
+ } = _ref;
9707
+ const {
9708
+ themeClasses
9709
+ } = provideTheme(props);
9710
+ const {
9711
+ textColorClasses,
9712
+ textColorStyles
9713
+ } = useTextColor(() => props.color);
9714
+ const dividerStyles = computed(() => {
9715
+ const styles = {};
9716
+ if (props.length) {
9717
+ styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
9718
+ }
9719
+ if (props.thickness) {
9720
+ styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
9721
+ }
9722
+ return styles;
9723
+ });
9724
+ useRender(() => {
9725
+ const divider = createElementVNode("hr", {
9726
+ "class": normalizeClass([{
9727
+ 'v-divider': true,
9728
+ 'v-divider--inset': props.inset,
9729
+ 'v-divider--vertical': props.vertical
9730
+ }, themeClasses.value, textColorClasses.value, props.class]),
9731
+ "style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
9732
+ '--v-border-opacity': props.opacity
9733
+ }, props.style]),
9734
+ "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
9735
+ "role": `${attrs.role || 'separator'}`
9736
+ }, null);
9737
+ if (!slots.default) return divider;
9738
+ return createElementVNode("div", {
9739
+ "class": normalizeClass(['v-divider__wrapper', {
9740
+ 'v-divider__wrapper--vertical': props.vertical,
9741
+ 'v-divider__wrapper--inset': props.inset
9742
+ }])
9743
+ }, [divider, createElementVNode("div", {
9744
+ "class": "v-divider__content"
9745
+ }, [slots.default()]), divider]);
9746
+ });
9747
+ return {};
9748
+ }
9749
+ });
9750
+
9875
9751
  // Types
9876
9752
 
9877
9753
  const makeVListChildrenProps = propsFactory({
@@ -10140,7 +10016,6 @@ const makeVListProps = propsFactory({
10140
10016
  activeClass: String,
10141
10017
  bgColor: String,
10142
10018
  disabled: Boolean,
10143
- filterable: Boolean,
10144
10019
  expandIcon: IconValue,
10145
10020
  collapseIcon: IconValue,
10146
10021
  lines: {
@@ -10224,9 +10099,7 @@ const VList = genericComponent()({
10224
10099
  const activeColor = toRef(() => props.activeColor);
10225
10100
  const baseColor = toRef(() => props.baseColor);
10226
10101
  const color = toRef(() => props.color);
10227
- createList({
10228
- filterable: props.filterable
10229
- });
10102
+ createList();
10230
10103
  provideDefaults({
10231
10104
  VListGroup: {
10232
10105
  activeColor,
@@ -12802,12 +12675,7 @@ function useVirtual(props, items) {
12802
12675
  }
12803
12676
  function calculateOffset(index) {
12804
12677
  index = clamp(index, 0, items.value.length - 1);
12805
- const whole = Math.floor(index);
12806
- const fraction = index % 1;
12807
- const next = whole + 1;
12808
- const wholeOffset = offsets[whole] || 0;
12809
- const nextOffset = offsets[next] || wholeOffset;
12810
- return wholeOffset + (nextOffset - wholeOffset) * fraction;
12678
+ return offsets[index] || 0;
12811
12679
  }
12812
12680
  function calculateIndex(scrollTop) {
12813
12681
  return binaryClosest(offsets, scrollTop);
@@ -13161,7 +13029,6 @@ const makeSelectProps = propsFactory({
13161
13029
  },
13162
13030
  openOnClear: Boolean,
13163
13031
  itemColor: String,
13164
- noAutoScroll: Boolean,
13165
13032
  ...makeItemsProps({
13166
13033
  itemChildren: false
13167
13034
  })
@@ -13376,7 +13243,7 @@ const VSelect = genericComponent()({
13376
13243
  watch(menu, () => {
13377
13244
  if (!props.hideSelected && menu.value && model.value.length) {
13378
13245
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
13379
- IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
13246
+ IN_BROWSER && window.requestAnimationFrame(() => {
13380
13247
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
13381
13248
  });
13382
13249
  }
@@ -13468,22 +13335,6 @@ const VSelect = genericComponent()({
13468
13335
  key: item.value,
13469
13336
  onClick: () => select(item, null)
13470
13337
  });
13471
- if (item.raw.type === 'divider') {
13472
- return slots.divider?.({
13473
- props: item.raw,
13474
- index
13475
- }) ?? createVNode(VDivider, mergeProps(item.props, {
13476
- "key": `divider-${index}`
13477
- }), null);
13478
- }
13479
- if (item.raw.type === 'subheader') {
13480
- return slots.subheader?.({
13481
- props: item.raw,
13482
- index
13483
- }) ?? createVNode(VListSubheader, mergeProps(item.props, {
13484
- "key": `subheader-${index}`
13485
- }), null);
13486
- }
13487
13338
  return slots.item?.({
13488
13339
  item,
13489
13340
  index,
@@ -13644,9 +13495,6 @@ function filterItems(items, query, options) {
13644
13495
  let match = -1;
13645
13496
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13646
13497
  if (typeof item === 'object') {
13647
- if (['divider', 'subheader'].includes(item.raw?.type)) {
13648
- continue;
13649
- }
13650
13498
  const filterKeys = keys || Object.keys(transformed);
13651
13499
  for (const key of filterKeys) {
13652
13500
  const value = getPropertyFromItem(transformed, key);
@@ -13849,7 +13697,7 @@ const VAutocomplete = genericComponent()({
13849
13697
  menu.value = !menu.value;
13850
13698
  }
13851
13699
  function onListKeydown(e) {
13852
- if (checkPrintable(e) || e.key === 'Backspace') {
13700
+ if (e.key !== ' ' && checkPrintable(e)) {
13853
13701
  vTextFieldRef.value?.focus();
13854
13702
  }
13855
13703
  }
@@ -14054,7 +13902,6 @@ const VAutocomplete = genericComponent()({
14054
13902
  }, props.menuProps), {
14055
13903
  default: () => [hasList && createVNode(VList, mergeProps({
14056
13904
  "ref": listRef,
14057
- "filterable": true,
14058
13905
  "selected": selectedValues.value,
14059
13906
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
14060
13907
  "onMousedown": e => e.preventDefault(),
@@ -14086,22 +13933,6 @@ const VAutocomplete = genericComponent()({
14086
13933
  active: highlightFirst.value && index === 0 ? true : undefined,
14087
13934
  onClick: () => select(item, null)
14088
13935
  });
14089
- if (item.raw.type === 'divider') {
14090
- return slots.divider?.({
14091
- props: item.raw,
14092
- index
14093
- }) ?? createVNode(VDivider, mergeProps(item.props, {
14094
- "key": `divider-${index}`
14095
- }), null);
14096
- }
14097
- if (item.raw.type === 'subheader') {
14098
- return slots.subheader?.({
14099
- props: item.raw,
14100
- index
14101
- }) ?? createVNode(VListSubheader, mergeProps(item.props, {
14102
- "key": `subheader-${index}`
14103
- }), null);
14104
- }
14105
13936
  return slots.item?.({
14106
13937
  item,
14107
13938
  index,
@@ -17706,13 +17537,13 @@ function date(value) {
17706
17537
  return null;
17707
17538
  }
17708
17539
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17709
- function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
17540
+ function getWeekdays(locale, firstDayOfWeek) {
17710
17541
  const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17711
17542
  return createRange(7).map(i => {
17712
17543
  const weekday = new Date(sundayJanuarySecond2000);
17713
17544
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
17714
17545
  return new Intl.DateTimeFormat(locale, {
17715
- weekday: weekdayFormat ?? 'narrow'
17546
+ weekday: 'narrow'
17716
17547
  }).format(weekday);
17717
17548
  });
17718
17549
  }
@@ -18176,9 +18007,9 @@ class VuetifyDateAdapter {
18176
18007
  getDiff(date, comparing, unit) {
18177
18008
  return getDiff(date, comparing, unit);
18178
18009
  }
18179
- getWeekdays(firstDayOfWeek, weekdayFormat) {
18010
+ getWeekdays(firstDayOfWeek) {
18180
18011
  const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
18181
- return getWeekdays(this.locale, firstDay, weekdayFormat);
18012
+ return getWeekdays(this.locale, firstDay);
18182
18013
  }
18183
18014
  getYear(date) {
18184
18015
  return getYear(date);
@@ -18534,7 +18365,6 @@ const VCombobox = genericComponent()({
18534
18365
  _search.value = val ?? '';
18535
18366
  if (!props.multiple && !hasSelectionSlot.value) {
18536
18367
  model.value = [transformItem$3(props, val)];
18537
- nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
18538
18368
  }
18539
18369
  if (val && props.multiple && props.delimiters?.length) {
18540
18370
  const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
@@ -18615,7 +18445,7 @@ const VCombobox = genericComponent()({
18615
18445
  menu.value = !menu.value;
18616
18446
  }
18617
18447
  function onListKeydown(e) {
18618
- if (checkPrintable(e) || e.key === 'Backspace') {
18448
+ if (e.key !== ' ' && checkPrintable(e)) {
18619
18449
  vTextFieldRef.value?.focus();
18620
18450
  }
18621
18451
  }
@@ -18820,7 +18650,6 @@ const VCombobox = genericComponent()({
18820
18650
  }, props.menuProps), {
18821
18651
  default: () => [hasList && createVNode(VList, mergeProps({
18822
18652
  "ref": listRef,
18823
- "filterable": true,
18824
18653
  "selected": selectedValues.value,
18825
18654
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18826
18655
  "onMousedown": e => e.preventDefault(),
@@ -18852,22 +18681,6 @@ const VCombobox = genericComponent()({
18852
18681
  active: highlightFirst.value && index === 0 ? true : undefined,
18853
18682
  onClick: () => select(item, null)
18854
18683
  });
18855
- if (item.raw.type === 'divider') {
18856
- return slots.divider?.({
18857
- props: item.raw,
18858
- index
18859
- }) ?? createVNode(VDivider, mergeProps(item.props, {
18860
- "key": `divider-${index}`
18861
- }), null);
18862
- }
18863
- if (item.raw.type === 'subheader') {
18864
- return slots.subheader?.({
18865
- props: item.raw,
18866
- index
18867
- }) ?? createVNode(VListSubheader, mergeProps(item.props, {
18868
- "key": `subheader-${index}`
18869
- }), null);
18870
- }
18871
18684
  return slots.item?.({
18872
18685
  item,
18873
18686
  index,
@@ -20747,7 +20560,6 @@ const makeVDataTableHeadersProps = propsFactory({
20747
20560
  color: String,
20748
20561
  disableSort: Boolean,
20749
20562
  fixedHeader: Boolean,
20750
- lastFixed: Boolean,
20751
20563
  multiSort: Boolean,
20752
20564
  sortAscIcon: {
20753
20565
  type: IconValue,
@@ -20794,11 +20606,10 @@ const VDataTableHeaders = genericComponent()({
20794
20606
  loaderClasses
20795
20607
  } = useLoader(props);
20796
20608
  function getFixedStyles(column, y) {
20797
- if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
20609
+ if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
20798
20610
  return {
20799
20611
  position: 'sticky',
20800
- left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
20801
- right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
20612
+ left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
20802
20613
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20803
20614
  };
20804
20615
  }
@@ -21307,18 +21118,11 @@ const VDataTableRows = genericComponent()({
21307
21118
  }
21308
21119
  });
21309
21120
 
21310
- // Types
21311
-
21312
21121
  const makeVTableProps = propsFactory({
21313
21122
  fixedHeader: Boolean,
21314
21123
  fixedFooter: Boolean,
21315
21124
  height: [Number, String],
21316
21125
  hover: Boolean,
21317
- striped: {
21318
- type: String,
21319
- default: null,
21320
- validator: v => ['even', 'odd'].includes(v)
21321
- },
21322
21126
  ...makeComponentProps(),
21323
21127
  ...makeDensityProps(),
21324
21128
  ...makeTagProps(),
@@ -21345,9 +21149,7 @@ const VTable = genericComponent()({
21345
21149
  'v-table--fixed-footer': props.fixedFooter,
21346
21150
  'v-table--has-top': !!slots.top,
21347
21151
  'v-table--has-bottom': !!slots.bottom,
21348
- 'v-table--hover': props.hover,
21349
- 'v-table--striped-even': props.striped === 'even',
21350
- 'v-table--striped-odd': props.striped === 'odd'
21152
+ 'v-table--hover': props.hover
21351
21153
  }, themeClasses.value, densityClasses.value, props.class]),
21352
21154
  "style": normalizeStyle(props.style)
21353
21155
  }, {
@@ -22522,8 +22324,7 @@ const makeCalendarProps = propsFactory({
22522
22324
  firstDayOfWeek: {
22523
22325
  type: [Number, String],
22524
22326
  default: undefined
22525
- },
22526
- weekdayFormat: String
22327
+ }
22527
22328
  }, 'calendar');
22528
22329
  function useCalendar(props) {
22529
22330
  const adapter = useDate();
@@ -22764,7 +22565,7 @@ const VDatePickerMonth = genericComponent()({
22764
22565
  "ref": daysRef,
22765
22566
  "key": daysInMonth.value[0].date?.toString(),
22766
22567
  "class": "v-date-picker-month__days"
22767
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
22568
+ }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
22768
22569
  "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22769
22570
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22770
22571
  const slotProps = {
@@ -25354,10 +25155,6 @@ const makeVNumberInputProps = propsFactory({
25354
25155
  type: Number,
25355
25156
  default: 0
25356
25157
  },
25357
- minFractionDigits: {
25358
- type: Number,
25359
- default: null
25360
- },
25361
25158
  ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
25362
25159
  }, 'VNumberInput');
25363
25160
  const VNumberInput = genericComponent()({
@@ -25388,19 +25185,9 @@ const VNumberInput = genericComponent()({
25388
25185
  } = useFocus(props);
25389
25186
  function correctPrecision(val) {
25390
25187
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
25391
- if (precision == null) {
25392
- return String(val);
25393
- }
25394
- let fixed = val.toFixed(precision);
25395
- if (isFocused.value) {
25396
- return Number(fixed).toString(); // trim zeros
25397
- }
25398
- if ((props.minFractionDigits ?? precision) < precision) {
25399
- const trimLimit = precision - props.minFractionDigits;
25400
- const [baseDigits, fractionDigits] = fixed.split('.');
25401
- fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
25402
- }
25403
- return fixed;
25188
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
25189
+ return isFocused.value ? Number(fixed).toString() // trim zeros
25190
+ : fixed;
25404
25191
  }
25405
25192
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
25406
25193
  const _inputText = shallowRef(null);
@@ -25455,7 +25242,6 @@ const VNumberInput = genericComponent()({
25455
25242
  }
25456
25243
  };
25457
25244
  watch(() => props.precision, () => formatInputValue());
25458
- watch(() => props.minFractionDigits, () => formatInputValue());
25459
25245
  onMounted(() => {
25460
25246
  clampModel();
25461
25247
  });
@@ -25570,7 +25356,7 @@ const VNumberInput = genericComponent()({
25570
25356
  inputText.value = null;
25571
25357
  return;
25572
25358
  }
25573
- inputText.value = correctPrecision(model.value);
25359
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
25574
25360
  }
25575
25361
  function trimDecimalZeros() {
25576
25362
  if (controlsDisabled.value) return;
@@ -25830,10 +25616,9 @@ const VOtpInput = genericComponent()({
25830
25616
  e.preventDefault();
25831
25617
  e.stopPropagation();
25832
25618
  const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
25833
- const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
25834
25619
  if (isValidNumber(clipboardText)) return;
25835
25620
  model.value = clipboardText.split('');
25836
- inputRef.value?.[finalIndex].focus();
25621
+ inputRef.value?.[index].blur();
25837
25622
  }
25838
25623
  function reset() {
25839
25624
  model.value = [];
@@ -29615,7 +29400,7 @@ function createVuetify$1() {
29615
29400
  };
29616
29401
  });
29617
29402
  }
29618
- const version$1 = "3.8.8-dev.2025-06-04";
29403
+ const version$1 = "3.8.8-master.2025-06-06";
29619
29404
  createVuetify$1.version = version$1;
29620
29405
 
29621
29406
  // Vue's inject() can only be used in setup
@@ -29640,7 +29425,7 @@ const createVuetify = function () {
29640
29425
  ...options
29641
29426
  });
29642
29427
  };
29643
- const version = "3.8.8-dev.2025-06-04";
29428
+ const version = "3.8.8-master.2025-06-06";
29644
29429
  createVuetify.version = version;
29645
29430
 
29646
29431
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };