@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,10 +1,10 @@
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, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, 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, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, 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
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -81,7 +81,6 @@ const IN_BROWSER = typeof window !== 'undefined';
81
81
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
82
82
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
83
83
  const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
84
- const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
85
84
 
86
85
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
87
86
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -2346,7 +2345,6 @@ const makeThemeProps = propsFactory({
2346
2345
  function genDefaults$2() {
2347
2346
  return {
2348
2347
  defaultTheme: 'light',
2349
- prefix: 'v-',
2350
2348
  variations: {
2351
2349
  colors: [],
2352
2350
  lighten: 0,
@@ -2428,10 +2426,7 @@ function genDefaults$2() {
2428
2426
  }
2429
2427
  }
2430
2428
  },
2431
- stylesheetId: 'vuetify-theme-stylesheet',
2432
- scoped: false,
2433
- unimportant: false,
2434
- utilities: true
2429
+ stylesheetId: 'vuetify-theme-stylesheet'
2435
2430
  };
2436
2431
  }
2437
2432
  function parseThemeOptions() {
@@ -2454,21 +2449,21 @@ function parseThemeOptions() {
2454
2449
  function createCssClass(lines, selector, content, scope) {
2455
2450
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2456
2451
  }
2457
- function genCssVariables(theme, prefix) {
2452
+ function genCssVariables(theme) {
2458
2453
  const lightOverlay = theme.dark ? 2 : 1;
2459
2454
  const darkOverlay = theme.dark ? 1 : 2;
2460
2455
  const variables = [];
2461
2456
  for (const [key, value] of Object.entries(theme.colors)) {
2462
2457
  const rgb = parseColor(value);
2463
- variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2458
+ variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2464
2459
  if (!key.startsWith('on-')) {
2465
- variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2460
+ variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2466
2461
  }
2467
2462
  }
2468
2463
  for (const [key, value] of Object.entries(theme.variables)) {
2469
2464
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2470
2465
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2471
- variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2466
+ variables.push(`--v-${key}: ${rgb ?? value}`);
2472
2467
  }
2473
2468
  return variables;
2474
2469
  }
@@ -2512,8 +2507,7 @@ function getScopedSelector(selector, scope) {
2512
2507
  const scopeSelector = `:where(${scope})`;
2513
2508
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
2514
2509
  }
2515
- function upsertStyles(id, cspNonce, styles) {
2516
- const styleEl = getOrCreateStyleElement(id, cspNonce);
2510
+ function upsertStyles(styleEl, styles) {
2517
2511
  if (!styleEl) return;
2518
2512
  styleEl.innerHTML = styles;
2519
2513
  }
@@ -2533,17 +2527,8 @@ function getOrCreateStyleElement(id, cspNonce) {
2533
2527
  // Composables
2534
2528
  function createTheme(options) {
2535
2529
  const parsedOptions = parseThemeOptions(options);
2536
- const _name = shallowRef(parsedOptions.defaultTheme);
2530
+ const name = shallowRef(parsedOptions.defaultTheme);
2537
2531
  const themes = ref(parsedOptions.themes);
2538
- const systemName = shallowRef('light');
2539
- const name = computed({
2540
- get() {
2541
- return _name.value === 'system' ? systemName.value : _name.value;
2542
- },
2543
- set(val) {
2544
- _name.value = val;
2545
- }
2546
- });
2547
2532
  const computedThemes = computed(() => {
2548
2533
  const acc = {};
2549
2534
  for (const [name, original] of Object.entries(themes.value)) {
@@ -2564,49 +2549,28 @@ function createTheme(options) {
2564
2549
  const current = toRef(() => computedThemes.value[name.value]);
2565
2550
  const styles = computed(() => {
2566
2551
  const lines = [];
2567
- const important = parsedOptions.unimportant ? '' : ' !important';
2568
- const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
2569
2552
  if (current.value?.dark) {
2570
2553
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
2571
2554
  }
2572
- createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
2555
+ createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
2573
2556
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
2574
- createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
2575
- }
2576
- if (parsedOptions.utilities) {
2577
- const bgLines = [];
2578
- const fgLines = [];
2579
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2580
- for (const key of colors) {
2581
- if (key.startsWith('on-')) {
2582
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
2583
- } else {
2584
- 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);
2585
- createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
2586
- createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
2587
- }
2557
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
2558
+ }
2559
+ const bgLines = [];
2560
+ const fgLines = [];
2561
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2562
+ for (const key of colors) {
2563
+ if (key.startsWith('on-')) {
2564
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2565
+ } else {
2566
+ 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);
2567
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2568
+ createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
2588
2569
  }
2589
- lines.push(...bgLines, ...fgLines);
2590
2570
  }
2571
+ lines.push(...bgLines, ...fgLines);
2591
2572
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
2592
2573
  });
2593
- const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
2594
- const themeNames = toRef(() => Object.keys(computedThemes.value));
2595
- if (SUPPORTS_MATCH_MEDIA) {
2596
- const media = window.matchMedia('(prefers-color-scheme: dark)');
2597
- function updateSystemName() {
2598
- systemName.value = media.matches ? 'dark' : 'light';
2599
- }
2600
- updateSystemName();
2601
- media.addEventListener('change', updateSystemName, {
2602
- passive: true
2603
- });
2604
- if (getCurrentScope()) {
2605
- onScopeDispose(() => {
2606
- media.removeEventListener('change', updateSystemName);
2607
- });
2608
- }
2609
- }
2610
2574
  function install(app) {
2611
2575
  if (parsedOptions.isDisabled) return;
2612
2576
  const head = app._context.provides.usehead;
@@ -2644,55 +2608,22 @@ function createTheme(options) {
2644
2608
  updateStyles();
2645
2609
  }
2646
2610
  function updateStyles() {
2647
- upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
2611
+ upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
2648
2612
  }
2649
2613
  }
2650
2614
  }
2651
- function change(themeName) {
2652
- if (!themeNames.value.includes(themeName)) {
2653
- consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
2654
- return;
2655
- }
2656
- name.value = themeName;
2657
- }
2658
- function cycle() {
2659
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
2660
- const currentIndex = themeArray.indexOf(name.value);
2661
- const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
2662
- change(themeArray[nextIndex]);
2663
- }
2664
- function toggle() {
2665
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
2666
- cycle(themeArray);
2667
- }
2668
- const globalName = new Proxy(name, {
2669
- get(target, prop) {
2670
- return target[prop];
2671
- },
2672
- set(target, prop, val) {
2673
- if (prop === 'value') {
2674
- deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
2675
- }
2676
- // @ts-expect-error
2677
- target[prop] = val;
2678
- return true;
2679
- }
2680
- });
2615
+ const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
2681
2616
  return {
2682
2617
  install,
2683
- change,
2684
- cycle,
2685
- toggle,
2686
2618
  isDisabled: parsedOptions.isDisabled,
2687
2619
  name,
2688
2620
  themes,
2689
2621
  current,
2690
2622
  computedThemes,
2691
- prefix: parsedOptions.prefix,
2692
2623
  themeClasses,
2693
2624
  styles,
2694
2625
  global: {
2695
- name: globalName,
2626
+ name,
2696
2627
  current
2697
2628
  }
2698
2629
  };
@@ -2703,7 +2634,7 @@ function provideTheme(props) {
2703
2634
  if (!theme) throw new Error('Could not find Vuetify theme injection');
2704
2635
  const name = toRef(() => props.theme ?? theme.name.value);
2705
2636
  const current = toRef(() => theme.themes.value[name.value]);
2706
- const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
2637
+ const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2707
2638
  const newTheme = {
2708
2639
  ...theme,
2709
2640
  name,
@@ -3807,10 +3738,7 @@ const makeVToolbarProps = propsFactory({
3807
3738
  default: 'default',
3808
3739
  validator: v => allowedDensities$1.includes(v)
3809
3740
  },
3810
- extended: {
3811
- type: Boolean,
3812
- default: null
3813
- },
3741
+ extended: Boolean,
3814
3742
  extensionHeight: {
3815
3743
  type: [Number, String],
3816
3744
  default: 48
@@ -3858,7 +3786,7 @@ const VToolbar = genericComponent()({
3858
3786
  const {
3859
3787
  rtlClasses
3860
3788
  } = useRtl();
3861
- const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
3789
+ const isExtended = shallowRef(!!(props.extended || slots.extension?.()));
3862
3790
  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));
3863
3791
  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);
3864
3792
  provideDefaults({
@@ -3870,7 +3798,7 @@ const VToolbar = genericComponent()({
3870
3798
  const hasTitle = !!(props.title || slots.title);
3871
3799
  const hasImage = !!(slots.image || props.image);
3872
3800
  const extension = slots.extension?.();
3873
- isExtended.value = props.extended === null ? !!extension : props.extended;
3801
+ isExtended.value = !!(props.extended || extension);
3874
3802
  return createVNode(props.tag, {
3875
3803
  "class": normalizeClass(['v-toolbar', {
3876
3804
  'v-toolbar--absolute': props.absolute,
@@ -4253,15 +4181,9 @@ function useVariant(props) {
4253
4181
  };
4254
4182
  }
4255
4183
 
4256
- // Types
4257
-
4258
4184
  const makeVBtnGroupProps = propsFactory({
4259
4185
  baseColor: String,
4260
4186
  divided: Boolean,
4261
- direction: {
4262
- type: String,
4263
- default: 'horizontal'
4264
- },
4265
4187
  ...makeBorderProps(),
4266
4188
  ...makeComponentProps(),
4267
4189
  ...makeDensityProps(),
@@ -4295,7 +4217,7 @@ const VBtnGroup = genericComponent()({
4295
4217
  } = useRounded(props);
4296
4218
  provideDefaults({
4297
4219
  VBtn: {
4298
- height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
4220
+ height: 'auto',
4299
4221
  baseColor: toRef(() => props.baseColor),
4300
4222
  color: toRef(() => props.color),
4301
4223
  density: toRef(() => props.density),
@@ -4305,7 +4227,7 @@ const VBtnGroup = genericComponent()({
4305
4227
  });
4306
4228
  useRender(() => {
4307
4229
  return createVNode(props.tag, {
4308
- "class": normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
4230
+ "class": normalizeClass(['v-btn-group', {
4309
4231
  'v-btn-group--divided': props.divided
4310
4232
  }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
4311
4233
  "style": normalizeStyle(props.style)
@@ -5637,8 +5559,8 @@ function rippleCancelShow(e) {
5637
5559
  window.clearTimeout(element._ripple.showTimer);
5638
5560
  }
5639
5561
  let keyboardRipple = false;
5640
- function keyboardRippleShow(e, keys) {
5641
- if (!keyboardRipple && keys.includes(e.keyCode)) {
5562
+ function keyboardRippleShow(e) {
5563
+ if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5642
5564
  keyboardRipple = true;
5643
5565
  rippleShow(e);
5644
5566
  }
@@ -5666,12 +5588,9 @@ function updateRipple(el, binding, wasEnabled) {
5666
5588
  el._ripple.enabled = enabled;
5667
5589
  el._ripple.centered = modifiers.center;
5668
5590
  el._ripple.circle = modifiers.circle;
5669
- const bindingValue = isObject(value) ? value : {};
5670
- if (bindingValue.class) {
5671
- el._ripple.class = bindingValue.class;
5591
+ if (isObject(value) && value.class) {
5592
+ el._ripple.class = value.class;
5672
5593
  }
5673
- const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5674
- el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5675
5594
  if (enabled && !wasEnabled) {
5676
5595
  if (modifiers.stop) {
5677
5596
  el.addEventListener('touchstart', rippleStop, {
@@ -5693,7 +5612,7 @@ function updateRipple(el, binding, wasEnabled) {
5693
5612
  el.addEventListener('mousedown', rippleShow);
5694
5613
  el.addEventListener('mouseup', rippleHide);
5695
5614
  el.addEventListener('mouseleave', rippleHide);
5696
- el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5615
+ el.addEventListener('keydown', keyboardRippleShow);
5697
5616
  el.addEventListener('keyup', keyboardRippleHide);
5698
5617
  el.addEventListener('blur', focusRippleHide);
5699
5618
 
@@ -5713,9 +5632,7 @@ function removeListeners(el) {
5713
5632
  el.removeEventListener('touchcancel', rippleHide);
5714
5633
  el.removeEventListener('mouseup', rippleHide);
5715
5634
  el.removeEventListener('mouseleave', rippleHide);
5716
- if (el._ripple?.keyDownHandler) {
5717
- el.removeEventListener('keydown', el._ripple.keyDownHandler);
5718
- }
5635
+ el.removeEventListener('keydown', keyboardRippleShow);
5719
5636
  el.removeEventListener('keyup', keyboardRippleHide);
5720
5637
  el.removeEventListener('dragstart', rippleHide);
5721
5638
  el.removeEventListener('blur', focusRippleHide);
@@ -5724,8 +5641,8 @@ function mounted$4(el, binding) {
5724
5641
  updateRipple(el, binding, false);
5725
5642
  }
5726
5643
  function unmounted$4(el) {
5727
- removeListeners(el);
5728
5644
  delete el._ripple;
5645
+ removeListeners(el);
5729
5646
  }
5730
5647
  function updated$1(el, binding) {
5731
5648
  if (binding.value === binding.oldValue) {
@@ -5998,31 +5915,6 @@ const VAppBarTitle = genericComponent()({
5998
5915
  // Utilities
5999
5916
  const VAlertTitle = createSimpleFunctional('v-alert-title');
6000
5917
 
6001
- // Utilities
6002
-
6003
- // Types
6004
-
6005
- // Types
6006
-
6007
- // Composables
6008
- const makeIconSizeProps = propsFactory({
6009
- iconSize: [Number, String],
6010
- iconSizes: {
6011
- type: Array,
6012
- default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
6013
- }
6014
- }, 'iconSize');
6015
- function useIconSizes(props, fallback) {
6016
- const iconSize = computed(() => {
6017
- const iconSizeMap = new Map(props.iconSizes);
6018
- const _iconSize = props.iconSize ?? fallback() ?? 'default';
6019
- return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
6020
- });
6021
- return {
6022
- iconSize
6023
- };
6024
- }
6025
-
6026
5918
  // Types
6027
5919
 
6028
5920
  const allowedTypes = ['success', 'info', 'warning', 'error'];
@@ -6062,7 +5954,6 @@ const makeVAlertProps = propsFactory({
6062
5954
  ...makeDensityProps(),
6063
5955
  ...makeDimensionProps(),
6064
5956
  ...makeElevationProps(),
6065
- ...makeIconSizeProps(),
6066
5957
  ...makeLocationProps(),
6067
5958
  ...makePositionProps(),
6068
5959
  ...makeRoundedProps(),
@@ -6090,9 +5981,6 @@ const VAlert = genericComponent()({
6090
5981
  if (!props.type) return props.icon;
6091
5982
  return props.icon ?? `$${props.type}`;
6092
5983
  });
6093
- const {
6094
- iconSize
6095
- } = useIconSizes(props, () => props.prominent ? 44 : 28);
6096
5984
  const {
6097
5985
  themeClasses
6098
5986
  } = provideTheme(props);
@@ -6140,11 +6028,6 @@ const VAlert = genericComponent()({
6140
6028
  const hasPrepend = !!(slots.prepend || icon.value);
6141
6029
  const hasTitle = !!(slots.title || props.title);
6142
6030
  const hasClose = !!(slots.close || props.closable);
6143
- const iconProps = {
6144
- density: props.density,
6145
- icon: icon.value,
6146
- size: iconSize.value
6147
- };
6148
6031
  return isActive.value && createVNode(props.tag, {
6149
6032
  "class": normalizeClass(['v-alert', props.border && {
6150
6033
  'v-alert--border': !!props.border,
@@ -6162,14 +6045,19 @@ const VAlert = genericComponent()({
6162
6045
  }, null), hasPrepend && createElementVNode("div", {
6163
6046
  "key": "prepend",
6164
6047
  "class": "v-alert__prepend"
6165
- }, [!slots.prepend ? createVNode(VIcon, mergeProps({
6166
- "key": "prepend-icon"
6167
- }, iconProps), null) : createVNode(VDefaultsProvider, {
6048
+ }, [!slots.prepend ? createVNode(VIcon, {
6049
+ "key": "prepend-icon",
6050
+ "density": props.density,
6051
+ "icon": icon.value,
6052
+ "size": props.prominent ? 44 : 28
6053
+ }, null) : createVNode(VDefaultsProvider, {
6168
6054
  "key": "prepend-defaults",
6169
6055
  "disabled": !icon.value,
6170
6056
  "defaults": {
6171
6057
  VIcon: {
6172
- ...iconProps
6058
+ density: props.density,
6059
+ icon: icon.value,
6060
+ size: props.prominent ? 44 : 28
6173
6061
  }
6174
6062
  }
6175
6063
  }, slots.prepend)]), createElementVNode("div", {
@@ -7694,7 +7582,6 @@ function getOffsetPosition(isHorizontal, element) {
7694
7582
  const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
7695
7583
  const makeVSlideGroupProps = propsFactory({
7696
7584
  centerActive: Boolean,
7697
- contentClass: null,
7698
7585
  direction: {
7699
7586
  type: String,
7700
7587
  default: 'horizontal'
@@ -8007,7 +7894,7 @@ const VSlideGroup = genericComponent()({
8007
7894
  })]), createElementVNode("div", {
8008
7895
  "key": "container",
8009
7896
  "ref": containerRef,
8010
- "class": normalizeClass(['v-slide-group__container', props.contentClass]),
7897
+ "class": "v-slide-group__container",
8011
7898
  "onScroll": onScroll
8012
7899
  }, [createElementVNode("div", {
8013
7900
  "ref": contentRef,
@@ -8370,85 +8257,16 @@ const VChip = genericComponent()({
8370
8257
  }
8371
8258
  });
8372
8259
 
8373
- const makeVDividerProps = propsFactory({
8374
- color: String,
8375
- inset: Boolean,
8376
- length: [Number, String],
8377
- opacity: [Number, String],
8378
- thickness: [Number, String],
8379
- vertical: Boolean,
8380
- ...makeComponentProps(),
8381
- ...makeThemeProps()
8382
- }, 'VDivider');
8383
- const VDivider = genericComponent()({
8384
- name: 'VDivider',
8385
- props: makeVDividerProps(),
8386
- setup(props, _ref) {
8387
- let {
8388
- attrs,
8389
- slots
8390
- } = _ref;
8391
- const {
8392
- themeClasses
8393
- } = provideTheme(props);
8394
- const {
8395
- textColorClasses,
8396
- textColorStyles
8397
- } = useTextColor(() => props.color);
8398
- const dividerStyles = computed(() => {
8399
- const styles = {};
8400
- if (props.length) {
8401
- styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
8402
- }
8403
- if (props.thickness) {
8404
- styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
8405
- }
8406
- return styles;
8407
- });
8408
- useRender(() => {
8409
- const divider = createElementVNode("hr", {
8410
- "class": normalizeClass([{
8411
- 'v-divider': true,
8412
- 'v-divider--inset': props.inset,
8413
- 'v-divider--vertical': props.vertical
8414
- }, themeClasses.value, textColorClasses.value, props.class]),
8415
- "style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
8416
- '--v-border-opacity': props.opacity
8417
- }, props.style]),
8418
- "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
8419
- "role": `${attrs.role || 'separator'}`
8420
- }, null);
8421
- if (!slots.default) return divider;
8422
- return createElementVNode("div", {
8423
- "class": normalizeClass(['v-divider__wrapper', {
8424
- 'v-divider__wrapper--vertical': props.vertical,
8425
- 'v-divider__wrapper--inset': props.inset
8426
- }])
8427
- }, [divider, createElementVNode("div", {
8428
- "class": "v-divider__content"
8429
- }, [slots.default()]), divider]);
8430
- });
8431
- return {};
8432
- }
8433
- });
8434
-
8435
8260
  // Utilities
8436
8261
 
8437
8262
  // List
8438
8263
  const ListKey = Symbol.for('vuetify:list');
8439
8264
  function createList() {
8440
- let {
8441
- filterable
8442
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8443
- filterable: false
8444
- };
8445
8265
  const parent = inject$1(ListKey, {
8446
- filterable: false,
8447
8266
  hasPrepend: shallowRef(false),
8448
8267
  updateHasPrepend: () => null
8449
8268
  });
8450
8269
  const data = {
8451
- filterable: parent.filterable || filterable,
8452
8270
  hasPrepend: shallowRef(false),
8453
8271
  updateHasPrepend: value => {
8454
8272
  if (value) data.hasPrepend.value = value;
@@ -9400,9 +9218,6 @@ const VListItem = genericComponent()({
9400
9218
  roundedClasses
9401
9219
  } = useRounded(roundedProps);
9402
9220
  const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9403
- const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9404
- keys: [keyCodes.enter]
9405
- } : props.ripple);
9406
9221
  const slotProps = computed(() => ({
9407
9222
  isActive: isActive.value,
9408
9223
  select,
@@ -9427,9 +9242,8 @@ const VListItem = genericComponent()({
9427
9242
  function onKeyDown(e) {
9428
9243
  const target = e.target;
9429
9244
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9430
- if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9245
+ if (e.key === 'Enter' || e.key === ' ') {
9431
9246
  e.preventDefault();
9432
- e.stopPropagation();
9433
9247
  e.target.dispatchEvent(new MouseEvent('click', e));
9434
9248
  }
9435
9249
  }
@@ -9539,7 +9353,7 @@ const VListItem = genericComponent()({
9539
9353
  }), createElementVNode("div", {
9540
9354
  "class": "v-list-item__spacer"
9541
9355
  }, null)])]
9542
- }), [[Ripple, isClickable.value && rippleOptions.value]]);
9356
+ }), [[Ripple, isClickable.value && props.ripple]]);
9543
9357
  });
9544
9358
  return {
9545
9359
  activate,
@@ -9594,6 +9408,68 @@ const VListSubheader = genericComponent()({
9594
9408
  }
9595
9409
  });
9596
9410
 
9411
+ const makeVDividerProps = propsFactory({
9412
+ color: String,
9413
+ inset: Boolean,
9414
+ length: [Number, String],
9415
+ opacity: [Number, String],
9416
+ thickness: [Number, String],
9417
+ vertical: Boolean,
9418
+ ...makeComponentProps(),
9419
+ ...makeThemeProps()
9420
+ }, 'VDivider');
9421
+ const VDivider = genericComponent()({
9422
+ name: 'VDivider',
9423
+ props: makeVDividerProps(),
9424
+ setup(props, _ref) {
9425
+ let {
9426
+ attrs,
9427
+ slots
9428
+ } = _ref;
9429
+ const {
9430
+ themeClasses
9431
+ } = provideTheme(props);
9432
+ const {
9433
+ textColorClasses,
9434
+ textColorStyles
9435
+ } = useTextColor(() => props.color);
9436
+ const dividerStyles = computed(() => {
9437
+ const styles = {};
9438
+ if (props.length) {
9439
+ styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
9440
+ }
9441
+ if (props.thickness) {
9442
+ styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
9443
+ }
9444
+ return styles;
9445
+ });
9446
+ useRender(() => {
9447
+ const divider = createElementVNode("hr", {
9448
+ "class": normalizeClass([{
9449
+ 'v-divider': true,
9450
+ 'v-divider--inset': props.inset,
9451
+ 'v-divider--vertical': props.vertical
9452
+ }, themeClasses.value, textColorClasses.value, props.class]),
9453
+ "style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
9454
+ '--v-border-opacity': props.opacity
9455
+ }, props.style]),
9456
+ "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
9457
+ "role": `${attrs.role || 'separator'}`
9458
+ }, null);
9459
+ if (!slots.default) return divider;
9460
+ return createElementVNode("div", {
9461
+ "class": normalizeClass(['v-divider__wrapper', {
9462
+ 'v-divider__wrapper--vertical': props.vertical,
9463
+ 'v-divider__wrapper--inset': props.inset
9464
+ }])
9465
+ }, [divider, createElementVNode("div", {
9466
+ "class": "v-divider__content"
9467
+ }, [slots.default()]), divider]);
9468
+ });
9469
+ return {};
9470
+ }
9471
+ });
9472
+
9597
9473
  // Types
9598
9474
 
9599
9475
  const makeVListChildrenProps = propsFactory({
@@ -9862,7 +9738,6 @@ const makeVListProps = propsFactory({
9862
9738
  activeClass: String,
9863
9739
  bgColor: String,
9864
9740
  disabled: Boolean,
9865
- filterable: Boolean,
9866
9741
  expandIcon: IconValue,
9867
9742
  collapseIcon: IconValue,
9868
9743
  lines: {
@@ -9946,9 +9821,7 @@ const VList = genericComponent()({
9946
9821
  const activeColor = toRef(() => props.activeColor);
9947
9822
  const baseColor = toRef(() => props.baseColor);
9948
9823
  const color = toRef(() => props.color);
9949
- createList({
9950
- filterable: props.filterable
9951
- });
9824
+ createList();
9952
9825
  provideDefaults({
9953
9826
  VListGroup: {
9954
9827
  activeColor,
@@ -12524,12 +12397,7 @@ function useVirtual(props, items) {
12524
12397
  }
12525
12398
  function calculateOffset(index) {
12526
12399
  index = clamp(index, 0, items.value.length - 1);
12527
- const whole = Math.floor(index);
12528
- const fraction = index % 1;
12529
- const next = whole + 1;
12530
- const wholeOffset = offsets[whole] || 0;
12531
- const nextOffset = offsets[next] || wholeOffset;
12532
- return wholeOffset + (nextOffset - wholeOffset) * fraction;
12400
+ return offsets[index] || 0;
12533
12401
  }
12534
12402
  function calculateIndex(scrollTop) {
12535
12403
  return binaryClosest(offsets, scrollTop);
@@ -12883,7 +12751,6 @@ const makeSelectProps = propsFactory({
12883
12751
  },
12884
12752
  openOnClear: Boolean,
12885
12753
  itemColor: String,
12886
- noAutoScroll: Boolean,
12887
12754
  ...makeItemsProps({
12888
12755
  itemChildren: false
12889
12756
  })
@@ -13098,7 +12965,7 @@ const VSelect = genericComponent()({
13098
12965
  watch(menu, () => {
13099
12966
  if (!props.hideSelected && menu.value && model.value.length) {
13100
12967
  const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
13101
- IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
12968
+ IN_BROWSER && window.requestAnimationFrame(() => {
13102
12969
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
13103
12970
  });
13104
12971
  }
@@ -13190,22 +13057,6 @@ const VSelect = genericComponent()({
13190
13057
  key: item.value,
13191
13058
  onClick: () => select(item, null)
13192
13059
  });
13193
- if (item.raw.type === 'divider') {
13194
- return slots.divider?.({
13195
- props: item.raw,
13196
- index
13197
- }) ?? createVNode(VDivider, mergeProps(item.props, {
13198
- "key": `divider-${index}`
13199
- }), null);
13200
- }
13201
- if (item.raw.type === 'subheader') {
13202
- return slots.subheader?.({
13203
- props: item.raw,
13204
- index
13205
- }) ?? createVNode(VListSubheader, mergeProps(item.props, {
13206
- "key": `subheader-${index}`
13207
- }), null);
13208
- }
13209
13060
  return slots.item?.({
13210
13061
  item,
13211
13062
  index,
@@ -13366,9 +13217,6 @@ function filterItems(items, query, options) {
13366
13217
  let match = -1;
13367
13218
  if ((query || customFiltersLength > 0) && !options?.noFilter) {
13368
13219
  if (typeof item === 'object') {
13369
- if (['divider', 'subheader'].includes(item.raw?.type)) {
13370
- continue;
13371
- }
13372
13220
  const filterKeys = keys || Object.keys(transformed);
13373
13221
  for (const key of filterKeys) {
13374
13222
  const value = getPropertyFromItem(transformed, key);
@@ -13571,7 +13419,7 @@ const VAutocomplete = genericComponent()({
13571
13419
  menu.value = !menu.value;
13572
13420
  }
13573
13421
  function onListKeydown(e) {
13574
- if (checkPrintable(e) || e.key === 'Backspace') {
13422
+ if (e.key !== ' ' && checkPrintable(e)) {
13575
13423
  vTextFieldRef.value?.focus();
13576
13424
  }
13577
13425
  }
@@ -13776,7 +13624,6 @@ const VAutocomplete = genericComponent()({
13776
13624
  }, props.menuProps), {
13777
13625
  default: () => [hasList && createVNode(VList, mergeProps({
13778
13626
  "ref": listRef,
13779
- "filterable": true,
13780
13627
  "selected": selectedValues.value,
13781
13628
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
13782
13629
  "onMousedown": e => e.preventDefault(),
@@ -13808,22 +13655,6 @@ const VAutocomplete = genericComponent()({
13808
13655
  active: highlightFirst.value && index === 0 ? true : undefined,
13809
13656
  onClick: () => select(item, null)
13810
13657
  });
13811
- if (item.raw.type === 'divider') {
13812
- return slots.divider?.({
13813
- props: item.raw,
13814
- index
13815
- }) ?? createVNode(VDivider, mergeProps(item.props, {
13816
- "key": `divider-${index}`
13817
- }), null);
13818
- }
13819
- if (item.raw.type === 'subheader') {
13820
- return slots.subheader?.({
13821
- props: item.raw,
13822
- index
13823
- }) ?? createVNode(VListSubheader, mergeProps(item.props, {
13824
- "key": `subheader-${index}`
13825
- }), null);
13826
- }
13827
13658
  return slots.item?.({
13828
13659
  item,
13829
13660
  index,
@@ -17428,13 +17259,13 @@ function date(value) {
17428
17259
  return null;
17429
17260
  }
17430
17261
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17431
- function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
17262
+ function getWeekdays(locale, firstDayOfWeek) {
17432
17263
  const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17433
17264
  return createRange(7).map(i => {
17434
17265
  const weekday = new Date(sundayJanuarySecond2000);
17435
17266
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
17436
17267
  return new Intl.DateTimeFormat(locale, {
17437
- weekday: weekdayFormat ?? 'narrow'
17268
+ weekday: 'narrow'
17438
17269
  }).format(weekday);
17439
17270
  });
17440
17271
  }
@@ -17898,9 +17729,9 @@ class VuetifyDateAdapter {
17898
17729
  getDiff(date, comparing, unit) {
17899
17730
  return getDiff(date, comparing, unit);
17900
17731
  }
17901
- getWeekdays(firstDayOfWeek, weekdayFormat) {
17732
+ getWeekdays(firstDayOfWeek) {
17902
17733
  const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17903
- return getWeekdays(this.locale, firstDay, weekdayFormat);
17734
+ return getWeekdays(this.locale, firstDay);
17904
17735
  }
17905
17736
  getYear(date) {
17906
17737
  return getYear(date);
@@ -18256,7 +18087,6 @@ const VCombobox = genericComponent()({
18256
18087
  _search.value = val ?? '';
18257
18088
  if (!props.multiple && !hasSelectionSlot.value) {
18258
18089
  model.value = [transformItem$3(props, val)];
18259
- nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
18260
18090
  }
18261
18091
  if (val && props.multiple && props.delimiters?.length) {
18262
18092
  const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
@@ -18337,7 +18167,7 @@ const VCombobox = genericComponent()({
18337
18167
  menu.value = !menu.value;
18338
18168
  }
18339
18169
  function onListKeydown(e) {
18340
- if (checkPrintable(e) || e.key === 'Backspace') {
18170
+ if (e.key !== ' ' && checkPrintable(e)) {
18341
18171
  vTextFieldRef.value?.focus();
18342
18172
  }
18343
18173
  }
@@ -18542,7 +18372,6 @@ const VCombobox = genericComponent()({
18542
18372
  }, props.menuProps), {
18543
18373
  default: () => [hasList && createVNode(VList, mergeProps({
18544
18374
  "ref": listRef,
18545
- "filterable": true,
18546
18375
  "selected": selectedValues.value,
18547
18376
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18548
18377
  "onMousedown": e => e.preventDefault(),
@@ -18574,22 +18403,6 @@ const VCombobox = genericComponent()({
18574
18403
  active: highlightFirst.value && index === 0 ? true : undefined,
18575
18404
  onClick: () => select(item, null)
18576
18405
  });
18577
- if (item.raw.type === 'divider') {
18578
- return slots.divider?.({
18579
- props: item.raw,
18580
- index
18581
- }) ?? createVNode(VDivider, mergeProps(item.props, {
18582
- "key": `divider-${index}`
18583
- }), null);
18584
- }
18585
- if (item.raw.type === 'subheader') {
18586
- return slots.subheader?.({
18587
- props: item.raw,
18588
- index
18589
- }) ?? createVNode(VListSubheader, mergeProps(item.props, {
18590
- "key": `subheader-${index}`
18591
- }), null);
18592
- }
18593
18406
  return slots.item?.({
18594
18407
  item,
18595
18408
  index,
@@ -20469,7 +20282,6 @@ const makeVDataTableHeadersProps = propsFactory({
20469
20282
  color: String,
20470
20283
  disableSort: Boolean,
20471
20284
  fixedHeader: Boolean,
20472
- lastFixed: Boolean,
20473
20285
  multiSort: Boolean,
20474
20286
  sortAscIcon: {
20475
20287
  type: IconValue,
@@ -20516,11 +20328,10 @@ const VDataTableHeaders = genericComponent()({
20516
20328
  loaderClasses
20517
20329
  } = useLoader(props);
20518
20330
  function getFixedStyles(column, y) {
20519
- if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
20331
+ if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
20520
20332
  return {
20521
20333
  position: 'sticky',
20522
- left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
20523
- right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
20334
+ left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
20524
20335
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20525
20336
  };
20526
20337
  }
@@ -21029,18 +20840,11 @@ const VDataTableRows = genericComponent()({
21029
20840
  }
21030
20841
  });
21031
20842
 
21032
- // Types
21033
-
21034
20843
  const makeVTableProps = propsFactory({
21035
20844
  fixedHeader: Boolean,
21036
20845
  fixedFooter: Boolean,
21037
20846
  height: [Number, String],
21038
20847
  hover: Boolean,
21039
- striped: {
21040
- type: String,
21041
- default: null,
21042
- validator: v => ['even', 'odd'].includes(v)
21043
- },
21044
20848
  ...makeComponentProps(),
21045
20849
  ...makeDensityProps(),
21046
20850
  ...makeTagProps(),
@@ -21067,9 +20871,7 @@ const VTable = genericComponent()({
21067
20871
  'v-table--fixed-footer': props.fixedFooter,
21068
20872
  'v-table--has-top': !!slots.top,
21069
20873
  'v-table--has-bottom': !!slots.bottom,
21070
- 'v-table--hover': props.hover,
21071
- 'v-table--striped-even': props.striped === 'even',
21072
- 'v-table--striped-odd': props.striped === 'odd'
20874
+ 'v-table--hover': props.hover
21073
20875
  }, themeClasses.value, densityClasses.value, props.class]),
21074
20876
  "style": normalizeStyle(props.style)
21075
20877
  }, {
@@ -22244,8 +22046,7 @@ const makeCalendarProps = propsFactory({
22244
22046
  firstDayOfWeek: {
22245
22047
  type: [Number, String],
22246
22048
  default: undefined
22247
- },
22248
- weekdayFormat: String
22049
+ }
22249
22050
  }, 'calendar');
22250
22051
  function useCalendar(props) {
22251
22052
  const adapter = useDate();
@@ -22486,7 +22287,7 @@ const VDatePickerMonth = genericComponent()({
22486
22287
  "ref": daysRef,
22487
22288
  "key": daysInMonth.value[0].date?.toString(),
22488
22289
  "class": "v-date-picker-month__days"
22489
- }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
22290
+ }, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
22490
22291
  "class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
22491
22292
  }, [weekDay])), daysInMonth.value.map((item, i) => {
22492
22293
  const slotProps = {
@@ -25076,10 +24877,6 @@ const makeVNumberInputProps = propsFactory({
25076
24877
  type: Number,
25077
24878
  default: 0
25078
24879
  },
25079
- minFractionDigits: {
25080
- type: Number,
25081
- default: null
25082
- },
25083
24880
  ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
25084
24881
  }, 'VNumberInput');
25085
24882
  const VNumberInput = genericComponent()({
@@ -25110,19 +24907,9 @@ const VNumberInput = genericComponent()({
25110
24907
  } = useFocus(props);
25111
24908
  function correctPrecision(val) {
25112
24909
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
25113
- if (precision == null) {
25114
- return String(val);
25115
- }
25116
- let fixed = val.toFixed(precision);
25117
- if (isFocused.value) {
25118
- return Number(fixed).toString(); // trim zeros
25119
- }
25120
- if ((props.minFractionDigits ?? precision) < precision) {
25121
- const trimLimit = precision - props.minFractionDigits;
25122
- const [baseDigits, fractionDigits] = fixed.split('.');
25123
- fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
25124
- }
25125
- return fixed;
24910
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
24911
+ return isFocused.value ? Number(fixed).toString() // trim zeros
24912
+ : fixed;
25126
24913
  }
25127
24914
  const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
25128
24915
  const _inputText = shallowRef(null);
@@ -25177,7 +24964,6 @@ const VNumberInput = genericComponent()({
25177
24964
  }
25178
24965
  };
25179
24966
  watch(() => props.precision, () => formatInputValue());
25180
- watch(() => props.minFractionDigits, () => formatInputValue());
25181
24967
  onMounted(() => {
25182
24968
  clampModel();
25183
24969
  });
@@ -25292,7 +25078,7 @@ const VNumberInput = genericComponent()({
25292
25078
  inputText.value = null;
25293
25079
  return;
25294
25080
  }
25295
- inputText.value = correctPrecision(model.value);
25081
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
25296
25082
  }
25297
25083
  function trimDecimalZeros() {
25298
25084
  if (controlsDisabled.value) return;
@@ -25552,10 +25338,9 @@ const VOtpInput = genericComponent()({
25552
25338
  e.preventDefault();
25553
25339
  e.stopPropagation();
25554
25340
  const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
25555
- const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
25556
25341
  if (isValidNumber(clipboardText)) return;
25557
25342
  model.value = clipboardText.split('');
25558
- inputRef.value?.[finalIndex].focus();
25343
+ inputRef.value?.[index].blur();
25559
25344
  }
25560
25345
  function reset() {
25561
25346
  model.value = [];
@@ -30258,6 +30043,11 @@ const makeVIconBtnProps = propsFactory({
30258
30043
  hideOverlay: Boolean,
30259
30044
  icon: [String, Function, Object],
30260
30045
  iconColor: String,
30046
+ iconSize: [Number, String],
30047
+ iconSizes: {
30048
+ type: Array,
30049
+ default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
30050
+ },
30261
30051
  loading: Boolean,
30262
30052
  opacity: [Number, String],
30263
30053
  readonly: Boolean,
@@ -30277,7 +30067,6 @@ const makeVIconBtnProps = propsFactory({
30277
30067
  ...makeBorderProps(),
30278
30068
  ...makeComponentProps(),
30279
30069
  ...makeElevationProps(),
30280
- ...makeIconSizeProps(),
30281
30070
  ...makeRoundedProps(),
30282
30071
  ...makeTagProps({
30283
30072
  tag: 'button'
@@ -30332,6 +30121,7 @@ const VIconBtn = genericComponent()({
30332
30121
  })()
30333
30122
  }));
30334
30123
  const btnSizeMap = new Map(props.sizes);
30124
+ const iconSizeMap = new Map(props.iconSizes);
30335
30125
  function onClick() {
30336
30126
  if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
30337
30127
  isActive.value = !isActive.value;
@@ -30343,12 +30133,12 @@ const VIconBtn = genericComponent()({
30343
30133
  const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
30344
30134
  const btnHeight = props.height ?? btnSize;
30345
30135
  const btnWidth = props.width ?? btnSize;
30346
- const {
30347
- iconSize
30348
- } = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
30136
+ const _iconSize = props.iconSize;
30137
+ const hasNamedIconSize = iconSizeMap.has(_iconSize);
30138
+ const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
30349
30139
  const iconProps = {
30350
30140
  icon,
30351
- size: iconSize.value,
30141
+ size: iconSize,
30352
30142
  iconColor: props.iconColor,
30353
30143
  opacity: props.opacity
30354
30144
  };
@@ -30391,7 +30181,7 @@ const VIconBtn = genericComponent()({
30391
30181
  "color": typeof props.loading === 'boolean' ? undefined : props.loading,
30392
30182
  "indeterminate": "disable-shrink",
30393
30183
  "width": "2",
30394
- "size": iconSize.value
30184
+ "size": iconSize
30395
30185
  }, null)])]
30396
30186
  });
30397
30187
  });
@@ -32301,7 +32091,7 @@ function createVuetify$1() {
32301
32091
  };
32302
32092
  });
32303
32093
  }
32304
- const version$1 = "3.8.8-dev.2025-06-04";
32094
+ const version$1 = "3.8.8-master.2025-06-06";
32305
32095
  createVuetify$1.version = version$1;
32306
32096
 
32307
32097
  // Vue's inject() can only be used in setup
@@ -32599,7 +32389,7 @@ var index = /*#__PURE__*/Object.freeze({
32599
32389
 
32600
32390
  /* eslint-disable local-rules/sort-imports */
32601
32391
 
32602
- const version = "3.8.8-dev.2025-06-04";
32392
+ const version = "3.8.8-master.2025-06-06";
32603
32393
 
32604
32394
  /* eslint-disable local-rules/sort-imports */
32605
32395