@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
package/dist/vuetify.cjs CHANGED
@@ -1,5 +1,5 @@
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
  */
@@ -14,7 +14,6 @@
14
14
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
15
15
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
16
16
  const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
17
- const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
18
17
 
19
18
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
20
19
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -2837,7 +2836,6 @@
2837
2836
  function genDefaults$1() {
2838
2837
  return {
2839
2838
  defaultTheme: 'light',
2840
- prefix: 'v-',
2841
2839
  variations: {
2842
2840
  colors: [],
2843
2841
  lighten: 0,
@@ -2919,10 +2917,7 @@
2919
2917
  }
2920
2918
  }
2921
2919
  },
2922
- stylesheetId: 'vuetify-theme-stylesheet',
2923
- scoped: false,
2924
- unimportant: false,
2925
- utilities: true
2920
+ stylesheetId: 'vuetify-theme-stylesheet'
2926
2921
  };
2927
2922
  }
2928
2923
  function parseThemeOptions() {
@@ -2945,21 +2940,21 @@
2945
2940
  function createCssClass(lines, selector, content, scope) {
2946
2941
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2947
2942
  }
2948
- function genCssVariables(theme, prefix) {
2943
+ function genCssVariables(theme) {
2949
2944
  const lightOverlay = theme.dark ? 2 : 1;
2950
2945
  const darkOverlay = theme.dark ? 1 : 2;
2951
2946
  const variables = [];
2952
2947
  for (const [key, value] of Object.entries(theme.colors)) {
2953
2948
  const rgb = parseColor(value);
2954
- variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2949
+ variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2955
2950
  if (!key.startsWith('on-')) {
2956
- variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2951
+ variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2957
2952
  }
2958
2953
  }
2959
2954
  for (const [key, value] of Object.entries(theme.variables)) {
2960
2955
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2961
2956
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2962
- variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2957
+ variables.push(`--v-${key}: ${rgb ?? value}`);
2963
2958
  }
2964
2959
  return variables;
2965
2960
  }
@@ -3003,8 +2998,7 @@
3003
2998
  const scopeSelector = `:where(${scope})`;
3004
2999
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
3005
3000
  }
3006
- function upsertStyles(id, cspNonce, styles) {
3007
- const styleEl = getOrCreateStyleElement(id, cspNonce);
3001
+ function upsertStyles(styleEl, styles) {
3008
3002
  if (!styleEl) return;
3009
3003
  styleEl.innerHTML = styles;
3010
3004
  }
@@ -3024,17 +3018,8 @@
3024
3018
  // Composables
3025
3019
  function createTheme(options) {
3026
3020
  const parsedOptions = parseThemeOptions(options);
3027
- const _name = vue.shallowRef(parsedOptions.defaultTheme);
3021
+ const name = vue.shallowRef(parsedOptions.defaultTheme);
3028
3022
  const themes = vue.ref(parsedOptions.themes);
3029
- const systemName = vue.shallowRef('light');
3030
- const name = vue.computed({
3031
- get() {
3032
- return _name.value === 'system' ? systemName.value : _name.value;
3033
- },
3034
- set(val) {
3035
- _name.value = val;
3036
- }
3037
- });
3038
3023
  const computedThemes = vue.computed(() => {
3039
3024
  const acc = {};
3040
3025
  for (const [name, original] of Object.entries(themes.value)) {
@@ -3055,49 +3040,28 @@
3055
3040
  const current = vue.toRef(() => computedThemes.value[name.value]);
3056
3041
  const styles = vue.computed(() => {
3057
3042
  const lines = [];
3058
- const important = parsedOptions.unimportant ? '' : ' !important';
3059
- const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
3060
3043
  if (current.value?.dark) {
3061
3044
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
3062
3045
  }
3063
- createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
3046
+ createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
3064
3047
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
3065
- createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
3066
- }
3067
- if (parsedOptions.utilities) {
3068
- const bgLines = [];
3069
- const fgLines = [];
3070
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3071
- for (const key of colors) {
3072
- if (key.startsWith('on-')) {
3073
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3074
- } else {
3075
- 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);
3076
- createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3077
- createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
3078
- }
3048
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
3049
+ }
3050
+ const bgLines = [];
3051
+ const fgLines = [];
3052
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3053
+ for (const key of colors) {
3054
+ if (key.startsWith('on-')) {
3055
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
3056
+ } else {
3057
+ 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);
3058
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
3059
+ createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
3079
3060
  }
3080
- lines.push(...bgLines, ...fgLines);
3081
3061
  }
3062
+ lines.push(...bgLines, ...fgLines);
3082
3063
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
3083
3064
  });
3084
- const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
3085
- const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
3086
- if (SUPPORTS_MATCH_MEDIA) {
3087
- const media = window.matchMedia('(prefers-color-scheme: dark)');
3088
- function updateSystemName() {
3089
- systemName.value = media.matches ? 'dark' : 'light';
3090
- }
3091
- updateSystemName();
3092
- media.addEventListener('change', updateSystemName, {
3093
- passive: true
3094
- });
3095
- if (vue.getCurrentScope()) {
3096
- vue.onScopeDispose(() => {
3097
- media.removeEventListener('change', updateSystemName);
3098
- });
3099
- }
3100
- }
3101
3065
  function install(app) {
3102
3066
  if (parsedOptions.isDisabled) return;
3103
3067
  const head = app._context.provides.usehead;
@@ -3135,55 +3099,22 @@
3135
3099
  updateStyles();
3136
3100
  }
3137
3101
  function updateStyles() {
3138
- upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
3102
+ upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
3139
3103
  }
3140
3104
  }
3141
3105
  }
3142
- function change(themeName) {
3143
- if (!themeNames.value.includes(themeName)) {
3144
- consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
3145
- return;
3146
- }
3147
- name.value = themeName;
3148
- }
3149
- function cycle() {
3150
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
3151
- const currentIndex = themeArray.indexOf(name.value);
3152
- const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
3153
- change(themeArray[nextIndex]);
3154
- }
3155
- function toggle() {
3156
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
3157
- cycle(themeArray);
3158
- }
3159
- const globalName = new Proxy(name, {
3160
- get(target, prop) {
3161
- return target[prop];
3162
- },
3163
- set(target, prop, val) {
3164
- if (prop === 'value') {
3165
- deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
3166
- }
3167
- // @ts-expect-error
3168
- target[prop] = val;
3169
- return true;
3170
- }
3171
- });
3106
+ const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
3172
3107
  return {
3173
3108
  install,
3174
- change,
3175
- cycle,
3176
- toggle,
3177
3109
  isDisabled: parsedOptions.isDisabled,
3178
3110
  name,
3179
3111
  themes,
3180
3112
  current,
3181
3113
  computedThemes,
3182
- prefix: parsedOptions.prefix,
3183
3114
  themeClasses,
3184
3115
  styles,
3185
3116
  global: {
3186
- name: globalName,
3117
+ name,
3187
3118
  current
3188
3119
  }
3189
3120
  };
@@ -3194,7 +3125,7 @@
3194
3125
  if (!theme) throw new Error('Could not find Vuetify theme injection');
3195
3126
  const name = vue.toRef(() => props.theme ?? theme.name.value);
3196
3127
  const current = vue.toRef(() => theme.themes.value[name.value]);
3197
- const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
3128
+ const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
3198
3129
  const newTheme = {
3199
3130
  ...theme,
3200
3131
  name,
@@ -4298,10 +4229,7 @@
4298
4229
  default: 'default',
4299
4230
  validator: v => allowedDensities$1.includes(v)
4300
4231
  },
4301
- extended: {
4302
- type: Boolean,
4303
- default: null
4304
- },
4232
+ extended: Boolean,
4305
4233
  extensionHeight: {
4306
4234
  type: [Number, String],
4307
4235
  default: 48
@@ -4349,7 +4277,7 @@
4349
4277
  const {
4350
4278
  rtlClasses
4351
4279
  } = useRtl();
4352
- const isExtended = vue.shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
4280
+ const isExtended = vue.shallowRef(!!(props.extended || slots.extension?.()));
4353
4281
  const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
4354
4282
  const extensionHeight = vue.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);
4355
4283
  provideDefaults({
@@ -4361,7 +4289,7 @@
4361
4289
  const hasTitle = !!(props.title || slots.title);
4362
4290
  const hasImage = !!(slots.image || props.image);
4363
4291
  const extension = slots.extension?.();
4364
- isExtended.value = props.extended === null ? !!extension : props.extended;
4292
+ isExtended.value = !!(props.extended || extension);
4365
4293
  return vue.createVNode(props.tag, {
4366
4294
  "class": vue.normalizeClass(['v-toolbar', {
4367
4295
  'v-toolbar--absolute': props.absolute,
@@ -4744,15 +4672,9 @@
4744
4672
  };
4745
4673
  }
4746
4674
 
4747
- // Types
4748
-
4749
4675
  const makeVBtnGroupProps = propsFactory({
4750
4676
  baseColor: String,
4751
4677
  divided: Boolean,
4752
- direction: {
4753
- type: String,
4754
- default: 'horizontal'
4755
- },
4756
4678
  ...makeBorderProps(),
4757
4679
  ...makeComponentProps(),
4758
4680
  ...makeDensityProps(),
@@ -4786,7 +4708,7 @@
4786
4708
  } = useRounded(props);
4787
4709
  provideDefaults({
4788
4710
  VBtn: {
4789
- height: vue.toRef(() => props.direction === 'horizontal' ? 'auto' : null),
4711
+ height: 'auto',
4790
4712
  baseColor: vue.toRef(() => props.baseColor),
4791
4713
  color: vue.toRef(() => props.color),
4792
4714
  density: vue.toRef(() => props.density),
@@ -4796,7 +4718,7 @@
4796
4718
  });
4797
4719
  useRender(() => {
4798
4720
  return vue.createVNode(props.tag, {
4799
- "class": vue.normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
4721
+ "class": vue.normalizeClass(['v-btn-group', {
4800
4722
  'v-btn-group--divided': props.divided
4801
4723
  }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
4802
4724
  "style": vue.normalizeStyle(props.style)
@@ -5919,8 +5841,8 @@
5919
5841
  window.clearTimeout(element._ripple.showTimer);
5920
5842
  }
5921
5843
  let keyboardRipple = false;
5922
- function keyboardRippleShow(e, keys) {
5923
- if (!keyboardRipple && keys.includes(e.keyCode)) {
5844
+ function keyboardRippleShow(e) {
5845
+ if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5924
5846
  keyboardRipple = true;
5925
5847
  rippleShow(e);
5926
5848
  }
@@ -5948,12 +5870,9 @@
5948
5870
  el._ripple.enabled = enabled;
5949
5871
  el._ripple.centered = modifiers.center;
5950
5872
  el._ripple.circle = modifiers.circle;
5951
- const bindingValue = isObject(value) ? value : {};
5952
- if (bindingValue.class) {
5953
- el._ripple.class = bindingValue.class;
5873
+ if (isObject(value) && value.class) {
5874
+ el._ripple.class = value.class;
5954
5875
  }
5955
- const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5956
- el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5957
5876
  if (enabled && !wasEnabled) {
5958
5877
  if (modifiers.stop) {
5959
5878
  el.addEventListener('touchstart', rippleStop, {
@@ -5975,7 +5894,7 @@
5975
5894
  el.addEventListener('mousedown', rippleShow);
5976
5895
  el.addEventListener('mouseup', rippleHide);
5977
5896
  el.addEventListener('mouseleave', rippleHide);
5978
- el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5897
+ el.addEventListener('keydown', keyboardRippleShow);
5979
5898
  el.addEventListener('keyup', keyboardRippleHide);
5980
5899
  el.addEventListener('blur', focusRippleHide);
5981
5900
 
@@ -5995,9 +5914,7 @@
5995
5914
  el.removeEventListener('touchcancel', rippleHide);
5996
5915
  el.removeEventListener('mouseup', rippleHide);
5997
5916
  el.removeEventListener('mouseleave', rippleHide);
5998
- if (el._ripple?.keyDownHandler) {
5999
- el.removeEventListener('keydown', el._ripple.keyDownHandler);
6000
- }
5917
+ el.removeEventListener('keydown', keyboardRippleShow);
6001
5918
  el.removeEventListener('keyup', keyboardRippleHide);
6002
5919
  el.removeEventListener('dragstart', rippleHide);
6003
5920
  el.removeEventListener('blur', focusRippleHide);
@@ -6006,8 +5923,8 @@
6006
5923
  updateRipple(el, binding, false);
6007
5924
  }
6008
5925
  function unmounted$4(el) {
6009
- removeListeners(el);
6010
5926
  delete el._ripple;
5927
+ removeListeners(el);
6011
5928
  }
6012
5929
  function updated$1(el, binding) {
6013
5930
  if (binding.value === binding.oldValue) {
@@ -6280,31 +6197,6 @@
6280
6197
  // Utilities
6281
6198
  const VAlertTitle = createSimpleFunctional('v-alert-title');
6282
6199
 
6283
- // Utilities
6284
-
6285
- // Types
6286
-
6287
- // Types
6288
-
6289
- // Composables
6290
- const makeIconSizeProps = propsFactory({
6291
- iconSize: [Number, String],
6292
- iconSizes: {
6293
- type: Array,
6294
- default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
6295
- }
6296
- }, 'iconSize');
6297
- function useIconSizes(props, fallback) {
6298
- const iconSize = vue.computed(() => {
6299
- const iconSizeMap = new Map(props.iconSizes);
6300
- const _iconSize = props.iconSize ?? fallback() ?? 'default';
6301
- return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
6302
- });
6303
- return {
6304
- iconSize
6305
- };
6306
- }
6307
-
6308
6200
  // Types
6309
6201
 
6310
6202
  const allowedTypes = ['success', 'info', 'warning', 'error'];
@@ -6344,7 +6236,6 @@
6344
6236
  ...makeDensityProps(),
6345
6237
  ...makeDimensionProps(),
6346
6238
  ...makeElevationProps(),
6347
- ...makeIconSizeProps(),
6348
6239
  ...makeLocationProps(),
6349
6240
  ...makePositionProps(),
6350
6241
  ...makeRoundedProps(),
@@ -6372,9 +6263,6 @@
6372
6263
  if (!props.type) return props.icon;
6373
6264
  return props.icon ?? `$${props.type}`;
6374
6265
  });
6375
- const {
6376
- iconSize
6377
- } = useIconSizes(props, () => props.prominent ? 44 : 28);
6378
6266
  const {
6379
6267
  themeClasses
6380
6268
  } = provideTheme(props);
@@ -6422,11 +6310,6 @@
6422
6310
  const hasPrepend = !!(slots.prepend || icon.value);
6423
6311
  const hasTitle = !!(slots.title || props.title);
6424
6312
  const hasClose = !!(slots.close || props.closable);
6425
- const iconProps = {
6426
- density: props.density,
6427
- icon: icon.value,
6428
- size: iconSize.value
6429
- };
6430
6313
  return isActive.value && vue.createVNode(props.tag, {
6431
6314
  "class": vue.normalizeClass(['v-alert', props.border && {
6432
6315
  'v-alert--border': !!props.border,
@@ -6444,14 +6327,19 @@
6444
6327
  }, null), hasPrepend && vue.createElementVNode("div", {
6445
6328
  "key": "prepend",
6446
6329
  "class": "v-alert__prepend"
6447
- }, [!slots.prepend ? vue.createVNode(VIcon, vue.mergeProps({
6448
- "key": "prepend-icon"
6449
- }, iconProps), null) : vue.createVNode(VDefaultsProvider, {
6330
+ }, [!slots.prepend ? vue.createVNode(VIcon, {
6331
+ "key": "prepend-icon",
6332
+ "density": props.density,
6333
+ "icon": icon.value,
6334
+ "size": props.prominent ? 44 : 28
6335
+ }, null) : vue.createVNode(VDefaultsProvider, {
6450
6336
  "key": "prepend-defaults",
6451
6337
  "disabled": !icon.value,
6452
6338
  "defaults": {
6453
6339
  VIcon: {
6454
- ...iconProps
6340
+ density: props.density,
6341
+ icon: icon.value,
6342
+ size: props.prominent ? 44 : 28
6455
6343
  }
6456
6344
  }
6457
6345
  }, slots.prepend)]), vue.createElementVNode("div", {
@@ -7976,7 +7864,6 @@
7976
7864
  const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
7977
7865
  const makeVSlideGroupProps = propsFactory({
7978
7866
  centerActive: Boolean,
7979
- contentClass: null,
7980
7867
  direction: {
7981
7868
  type: String,
7982
7869
  default: 'horizontal'
@@ -8289,7 +8176,7 @@
8289
8176
  })]), vue.createElementVNode("div", {
8290
8177
  "key": "container",
8291
8178
  "ref": containerRef,
8292
- "class": vue.normalizeClass(['v-slide-group__container', props.contentClass]),
8179
+ "class": "v-slide-group__container",
8293
8180
  "onScroll": onScroll
8294
8181
  }, [vue.createElementVNode("div", {
8295
8182
  "ref": contentRef,
@@ -8652,85 +8539,16 @@
8652
8539
  }
8653
8540
  });
8654
8541
 
8655
- const makeVDividerProps = propsFactory({
8656
- color: String,
8657
- inset: Boolean,
8658
- length: [Number, String],
8659
- opacity: [Number, String],
8660
- thickness: [Number, String],
8661
- vertical: Boolean,
8662
- ...makeComponentProps(),
8663
- ...makeThemeProps()
8664
- }, 'VDivider');
8665
- const VDivider = genericComponent()({
8666
- name: 'VDivider',
8667
- props: makeVDividerProps(),
8668
- setup(props, _ref) {
8669
- let {
8670
- attrs,
8671
- slots
8672
- } = _ref;
8673
- const {
8674
- themeClasses
8675
- } = provideTheme(props);
8676
- const {
8677
- textColorClasses,
8678
- textColorStyles
8679
- } = useTextColor(() => props.color);
8680
- const dividerStyles = vue.computed(() => {
8681
- const styles = {};
8682
- if (props.length) {
8683
- styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
8684
- }
8685
- if (props.thickness) {
8686
- styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
8687
- }
8688
- return styles;
8689
- });
8690
- useRender(() => {
8691
- const divider = vue.createElementVNode("hr", {
8692
- "class": vue.normalizeClass([{
8693
- 'v-divider': true,
8694
- 'v-divider--inset': props.inset,
8695
- 'v-divider--vertical': props.vertical
8696
- }, themeClasses.value, textColorClasses.value, props.class]),
8697
- "style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
8698
- '--v-border-opacity': props.opacity
8699
- }, props.style]),
8700
- "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
8701
- "role": `${attrs.role || 'separator'}`
8702
- }, null);
8703
- if (!slots.default) return divider;
8704
- return vue.createElementVNode("div", {
8705
- "class": vue.normalizeClass(['v-divider__wrapper', {
8706
- 'v-divider__wrapper--vertical': props.vertical,
8707
- 'v-divider__wrapper--inset': props.inset
8708
- }])
8709
- }, [divider, vue.createElementVNode("div", {
8710
- "class": "v-divider__content"
8711
- }, [slots.default()]), divider]);
8712
- });
8713
- return {};
8714
- }
8715
- });
8716
-
8717
8542
  // Utilities
8718
8543
 
8719
8544
  // List
8720
8545
  const ListKey = Symbol.for('vuetify:list');
8721
8546
  function createList() {
8722
- let {
8723
- filterable
8724
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8725
- filterable: false
8726
- };
8727
8547
  const parent = vue.inject(ListKey, {
8728
- filterable: false,
8729
8548
  hasPrepend: vue.shallowRef(false),
8730
8549
  updateHasPrepend: () => null
8731
8550
  });
8732
8551
  const data = {
8733
- filterable: parent.filterable || filterable,
8734
8552
  hasPrepend: vue.shallowRef(false),
8735
8553
  updateHasPrepend: value => {
8736
8554
  if (value) data.hasPrepend.value = value;
@@ -9682,9 +9500,6 @@
9682
9500
  roundedClasses
9683
9501
  } = useRounded(roundedProps);
9684
9502
  const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9685
- const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9686
- keys: [keyCodes.enter]
9687
- } : props.ripple);
9688
9503
  const slotProps = vue.computed(() => ({
9689
9504
  isActive: isActive.value,
9690
9505
  select,
@@ -9709,9 +9524,8 @@
9709
9524
  function onKeyDown(e) {
9710
9525
  const target = e.target;
9711
9526
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9712
- if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9527
+ if (e.key === 'Enter' || e.key === ' ') {
9713
9528
  e.preventDefault();
9714
- e.stopPropagation();
9715
9529
  e.target.dispatchEvent(new MouseEvent('click', e));
9716
9530
  }
9717
9531
  }
@@ -9821,7 +9635,7 @@
9821
9635
  }), vue.createElementVNode("div", {
9822
9636
  "class": "v-list-item__spacer"
9823
9637
  }, null)])]
9824
- }), [[Ripple, isClickable.value && rippleOptions.value]]);
9638
+ }), [[Ripple, isClickable.value && props.ripple]]);
9825
9639
  });
9826
9640
  return {
9827
9641
  activate,
@@ -9876,6 +9690,68 @@
9876
9690
  }
9877
9691
  });
9878
9692
 
9693
+ const makeVDividerProps = propsFactory({
9694
+ color: String,
9695
+ inset: Boolean,
9696
+ length: [Number, String],
9697
+ opacity: [Number, String],
9698
+ thickness: [Number, String],
9699
+ vertical: Boolean,
9700
+ ...makeComponentProps(),
9701
+ ...makeThemeProps()
9702
+ }, 'VDivider');
9703
+ const VDivider = genericComponent()({
9704
+ name: 'VDivider',
9705
+ props: makeVDividerProps(),
9706
+ setup(props, _ref) {
9707
+ let {
9708
+ attrs,
9709
+ slots
9710
+ } = _ref;
9711
+ const {
9712
+ themeClasses
9713
+ } = provideTheme(props);
9714
+ const {
9715
+ textColorClasses,
9716
+ textColorStyles
9717
+ } = useTextColor(() => props.color);
9718
+ const dividerStyles = vue.computed(() => {
9719
+ const styles = {};
9720
+ if (props.length) {
9721
+ styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
9722
+ }
9723
+ if (props.thickness) {
9724
+ styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
9725
+ }
9726
+ return styles;
9727
+ });
9728
+ useRender(() => {
9729
+ const divider = vue.createElementVNode("hr", {
9730
+ "class": vue.normalizeClass([{
9731
+ 'v-divider': true,
9732
+ 'v-divider--inset': props.inset,
9733
+ 'v-divider--vertical': props.vertical
9734
+ }, themeClasses.value, textColorClasses.value, props.class]),
9735
+ "style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
9736
+ '--v-border-opacity': props.opacity
9737
+ }, props.style]),
9738
+ "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
9739
+ "role": `${attrs.role || 'separator'}`
9740
+ }, null);
9741
+ if (!slots.default) return divider;
9742
+ return vue.createElementVNode("div", {
9743
+ "class": vue.normalizeClass(['v-divider__wrapper', {
9744
+ 'v-divider__wrapper--vertical': props.vertical,
9745
+ 'v-divider__wrapper--inset': props.inset
9746
+ }])
9747
+ }, [divider, vue.createElementVNode("div", {
9748
+ "class": "v-divider__content"
9749
+ }, [slots.default()]), divider]);
9750
+ });
9751
+ return {};
9752
+ }
9753
+ });
9754
+
9879
9755
  // Types
9880
9756
 
9881
9757
  const makeVListChildrenProps = propsFactory({
@@ -10144,7 +10020,6 @@
10144
10020
  activeClass: String,
10145
10021
  bgColor: String,
10146
10022
  disabled: Boolean,
10147
- filterable: Boolean,
10148
10023
  expandIcon: IconValue,
10149
10024
  collapseIcon: IconValue,
10150
10025
  lines: {
@@ -10228,9 +10103,7 @@
10228
10103
  const activeColor = vue.toRef(() => props.activeColor);
10229
10104
  const baseColor = vue.toRef(() => props.baseColor);
10230
10105
  const color = vue.toRef(() => props.color);
10231
- createList({
10232
- filterable: props.filterable
10233
- });
10106
+ createList();
10234
10107
  provideDefaults({
10235
10108
  VListGroup: {
10236
10109
  activeColor,
@@ -12806,12 +12679,7 @@
12806
12679
  }
12807
12680
  function calculateOffset(index) {
12808
12681
  index = clamp(index, 0, items.value.length - 1);
12809
- const whole = Math.floor(index);
12810
- const fraction = index % 1;
12811
- const next = whole + 1;
12812
- const wholeOffset = offsets[whole] || 0;
12813
- const nextOffset = offsets[next] || wholeOffset;
12814
- return wholeOffset + (nextOffset - wholeOffset) * fraction;
12682
+ return offsets[index] || 0;
12815
12683
  }
12816
12684
  function calculateIndex(scrollTop) {
12817
12685
  return binaryClosest(offsets, scrollTop);
@@ -13165,7 +13033,6 @@
13165
13033
  },
13166
13034
  openOnClear: Boolean,
13167
13035
  itemColor: String,
13168
- noAutoScroll: Boolean,
13169
13036
  ...makeItemsProps({
13170
13037
  itemChildren: false
13171
13038
  })
@@ -13380,7 +13247,7 @@
13380
13247
  vue.watch(menu, () => {
13381
13248
  if (!props.hideSelected && menu.value && model.value.length) {
13382
13249
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
13383
- IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
13250
+ IN_BROWSER && window.requestAnimationFrame(() => {
13384
13251
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
13385
13252
  });
13386
13253
  }
@@ -13472,22 +13339,6 @@
13472
13339
  key: item.value,
13473
13340
  onClick: () => select(item, null)
13474
13341
  });
13475
- if (item.raw.type === 'divider') {
13476
- return slots.divider?.({
13477
- props: item.raw,
13478
- index
13479
- }) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
13480
- "key": `divider-${index}`
13481
- }), null);
13482
- }
13483
- if (item.raw.type === 'subheader') {
13484
- return slots.subheader?.({
13485
- props: item.raw,
13486
- index
13487
- }) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
13488
- "key": `subheader-${index}`
13489
- }), null);
13490
- }
13491
13342
  return slots.item?.({
13492
13343
  item,
13493
13344
  index,
@@ -13648,9 +13499,6 @@
13648
13499
  let match = -1;
13649
13500
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13650
13501
  if (typeof item === 'object') {
13651
- if (['divider', 'subheader'].includes(item.raw?.type)) {
13652
- continue;
13653
- }
13654
13502
  const filterKeys = keys || Object.keys(transformed);
13655
13503
  for (const key of filterKeys) {
13656
13504
  const value = getPropertyFromItem(transformed, key);
@@ -13853,7 +13701,7 @@
13853
13701
  menu.value = !menu.value;
13854
13702
  }
13855
13703
  function onListKeydown(e) {
13856
- if (checkPrintable(e) || e.key === 'Backspace') {
13704
+ if (e.key !== ' ' && checkPrintable(e)) {
13857
13705
  vTextFieldRef.value?.focus();
13858
13706
  }
13859
13707
  }
@@ -14058,7 +13906,6 @@
14058
13906
  }, props.menuProps), {
14059
13907
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
14060
13908
  "ref": listRef,
14061
- "filterable": true,
14062
13909
  "selected": selectedValues.value,
14063
13910
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
14064
13911
  "onMousedown": e => e.preventDefault(),
@@ -14090,22 +13937,6 @@
14090
13937
  active: highlightFirst.value && index === 0 ? true : undefined,
14091
13938
  onClick: () => select(item, null)
14092
13939
  });
14093
- if (item.raw.type === 'divider') {
14094
- return slots.divider?.({
14095
- props: item.raw,
14096
- index
14097
- }) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
14098
- "key": `divider-${index}`
14099
- }), null);
14100
- }
14101
- if (item.raw.type === 'subheader') {
14102
- return slots.subheader?.({
14103
- props: item.raw,
14104
- index
14105
- }) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
14106
- "key": `subheader-${index}`
14107
- }), null);
14108
- }
14109
13940
  return slots.item?.({
14110
13941
  item,
14111
13942
  index,
@@ -17710,13 +17541,13 @@
17710
17541
  return null;
17711
17542
  }
17712
17543
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17713
- function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
17544
+ function getWeekdays(locale, firstDayOfWeek) {
17714
17545
  const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17715
17546
  return createRange(7).map(i => {
17716
17547
  const weekday = new Date(sundayJanuarySecond2000);
17717
17548
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
17718
17549
  return new Intl.DateTimeFormat(locale, {
17719
- weekday: weekdayFormat ?? 'narrow'
17550
+ weekday: 'narrow'
17720
17551
  }).format(weekday);
17721
17552
  });
17722
17553
  }
@@ -18180,9 +18011,9 @@
18180
18011
  getDiff(date, comparing, unit) {
18181
18012
  return getDiff(date, comparing, unit);
18182
18013
  }
18183
- getWeekdays(firstDayOfWeek, weekdayFormat) {
18014
+ getWeekdays(firstDayOfWeek) {
18184
18015
  const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
18185
- return getWeekdays(this.locale, firstDay, weekdayFormat);
18016
+ return getWeekdays(this.locale, firstDay);
18186
18017
  }
18187
18018
  getYear(date) {
18188
18019
  return getYear(date);
@@ -18538,7 +18369,6 @@
18538
18369
  _search.value = val ?? '';
18539
18370
  if (!props.multiple && !hasSelectionSlot.value) {
18540
18371
  model.value = [transformItem$3(props, val)];
18541
- vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
18542
18372
  }
18543
18373
  if (val && props.multiple && props.delimiters?.length) {
18544
18374
  const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
@@ -18619,7 +18449,7 @@
18619
18449
  menu.value = !menu.value;
18620
18450
  }
18621
18451
  function onListKeydown(e) {
18622
- if (checkPrintable(e) || e.key === 'Backspace') {
18452
+ if (e.key !== ' ' && checkPrintable(e)) {
18623
18453
  vTextFieldRef.value?.focus();
18624
18454
  }
18625
18455
  }
@@ -18824,7 +18654,6 @@
18824
18654
  }, props.menuProps), {
18825
18655
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
18826
18656
  "ref": listRef,
18827
- "filterable": true,
18828
18657
  "selected": selectedValues.value,
18829
18658
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18830
18659
  "onMousedown": e => e.preventDefault(),
@@ -18856,22 +18685,6 @@
18856
18685
  active: highlightFirst.value && index === 0 ? true : undefined,
18857
18686
  onClick: () => select(item, null)
18858
18687
  });
18859
- if (item.raw.type === 'divider') {
18860
- return slots.divider?.({
18861
- props: item.raw,
18862
- index
18863
- }) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
18864
- "key": `divider-${index}`
18865
- }), null);
18866
- }
18867
- if (item.raw.type === 'subheader') {
18868
- return slots.subheader?.({
18869
- props: item.raw,
18870
- index
18871
- }) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
18872
- "key": `subheader-${index}`
18873
- }), null);
18874
- }
18875
18688
  return slots.item?.({
18876
18689
  item,
18877
18690
  index,
@@ -20751,7 +20564,6 @@
20751
20564
  color: String,
20752
20565
  disableSort: Boolean,
20753
20566
  fixedHeader: Boolean,
20754
- lastFixed: Boolean,
20755
20567
  multiSort: Boolean,
20756
20568
  sortAscIcon: {
20757
20569
  type: IconValue,
@@ -20798,11 +20610,10 @@
20798
20610
  loaderClasses
20799
20611
  } = useLoader(props);
20800
20612
  function getFixedStyles(column, y) {
20801
- if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
20613
+ if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
20802
20614
  return {
20803
20615
  position: 'sticky',
20804
- left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
20805
- right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
20616
+ left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
20806
20617
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20807
20618
  };
20808
20619
  }
@@ -21311,18 +21122,11 @@
21311
21122
  }
21312
21123
  });
21313
21124
 
21314
- // Types
21315
-
21316
21125
  const makeVTableProps = propsFactory({
21317
21126
  fixedHeader: Boolean,
21318
21127
  fixedFooter: Boolean,
21319
21128
  height: [Number, String],
21320
21129
  hover: Boolean,
21321
- striped: {
21322
- type: String,
21323
- default: null,
21324
- validator: v => ['even', 'odd'].includes(v)
21325
- },
21326
21130
  ...makeComponentProps(),
21327
21131
  ...makeDensityProps(),
21328
21132
  ...makeTagProps(),
@@ -21349,9 +21153,7 @@
21349
21153
  'v-table--fixed-footer': props.fixedFooter,
21350
21154
  'v-table--has-top': !!slots.top,
21351
21155
  'v-table--has-bottom': !!slots.bottom,
21352
- 'v-table--hover': props.hover,
21353
- 'v-table--striped-even': props.striped === 'even',
21354
- 'v-table--striped-odd': props.striped === 'odd'
21156
+ 'v-table--hover': props.hover
21355
21157
  }, themeClasses.value, densityClasses.value, props.class]),
21356
21158
  "style": vue.normalizeStyle(props.style)
21357
21159
  }, {
@@ -22526,8 +22328,7 @@
22526
22328
  firstDayOfWeek: {
22527
22329
  type: [Number, String],
22528
22330
  default: undefined
22529
- },
22530
- weekdayFormat: String
22331
+ }
22531
22332
  }, 'calendar');
22532
22333
  function useCalendar(props) {
22533
22334
  const adapter = useDate();
@@ -22768,7 +22569,7 @@
22768
22569
  "ref": daysRef,
22769
22570
  "key": daysInMonth.value[0].date?.toString(),
22770
22571
  "class": "v-date-picker-month__days"
22771
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => vue.createElementVNode("div", {
22572
+ }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
22772
22573
  "class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22773
22574
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22774
22575
  const slotProps = {
@@ -25358,10 +25159,6 @@
25358
25159
  type: Number,
25359
25160
  default: 0
25360
25161
  },
25361
- minFractionDigits: {
25362
- type: Number,
25363
- default: null
25364
- },
25365
25162
  ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
25366
25163
  }, 'VNumberInput');
25367
25164
  const VNumberInput = genericComponent()({
@@ -25392,19 +25189,9 @@
25392
25189
  } = useFocus(props);
25393
25190
  function correctPrecision(val) {
25394
25191
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
25395
- if (precision == null) {
25396
- return String(val);
25397
- }
25398
- let fixed = val.toFixed(precision);
25399
- if (isFocused.value) {
25400
- return Number(fixed).toString(); // trim zeros
25401
- }
25402
- if ((props.minFractionDigits ?? precision) < precision) {
25403
- const trimLimit = precision - props.minFractionDigits;
25404
- const [baseDigits, fractionDigits] = fixed.split('.');
25405
- fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
25406
- }
25407
- return fixed;
25192
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
25193
+ return isFocused.value ? Number(fixed).toString() // trim zeros
25194
+ : fixed;
25408
25195
  }
25409
25196
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
25410
25197
  const _inputText = vue.shallowRef(null);
@@ -25459,7 +25246,6 @@
25459
25246
  }
25460
25247
  };
25461
25248
  vue.watch(() => props.precision, () => formatInputValue());
25462
- vue.watch(() => props.minFractionDigits, () => formatInputValue());
25463
25249
  vue.onMounted(() => {
25464
25250
  clampModel();
25465
25251
  });
@@ -25574,7 +25360,7 @@
25574
25360
  inputText.value = null;
25575
25361
  return;
25576
25362
  }
25577
- inputText.value = correctPrecision(model.value);
25363
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
25578
25364
  }
25579
25365
  function trimDecimalZeros() {
25580
25366
  if (controlsDisabled.value) return;
@@ -25834,10 +25620,9 @@
25834
25620
  e.preventDefault();
25835
25621
  e.stopPropagation();
25836
25622
  const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
25837
- const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
25838
25623
  if (isValidNumber(clipboardText)) return;
25839
25624
  model.value = clipboardText.split('');
25840
- inputRef.value?.[finalIndex].focus();
25625
+ inputRef.value?.[index].blur();
25841
25626
  }
25842
25627
  function reset() {
25843
25628
  model.value = [];
@@ -29619,7 +29404,7 @@
29619
29404
  };
29620
29405
  });
29621
29406
  }
29622
- const version$1 = "3.8.8-dev.2025-06-04";
29407
+ const version$1 = "3.8.8-master.2025-06-06";
29623
29408
  createVuetify$1.version = version$1;
29624
29409
 
29625
29410
  // Vue's inject() can only be used in setup
@@ -29644,7 +29429,7 @@
29644
29429
  ...options
29645
29430
  });
29646
29431
  };
29647
- const version = "3.8.8-dev.2025-06-04";
29432
+ const version = "3.8.8-master.2025-06-06";
29648
29433
  createVuetify.version = version;
29649
29434
 
29650
29435
  exports.blueprints = index;