@vuetify/nightly 3.8.3-dev.2025-04-29 → 3.8.3-master.2025-04-30

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 (74) hide show
  1. package/CHANGELOG.md +8 -17
  2. package/dist/json/attributes.json +2876 -2884
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +130 -130
  5. package/dist/json/tags.json +0 -2
  6. package/dist/json/web-types.json +5265 -5285
  7. package/dist/vuetify-labs.cjs +47 -124
  8. package/dist/vuetify-labs.css +3531 -3554
  9. package/dist/vuetify-labs.d.ts +4036 -905
  10. package/dist/vuetify-labs.esm.js +48 -125
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +47 -124
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +47 -124
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +5454 -5477
  17. package/dist/vuetify.d.ts +4036 -905
  18. package/dist/vuetify.esm.js +48 -125
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +47 -124
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +1173 -1179
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +792 -74
  26. package/lib/components/VBadge/VBadge.d.ts +22 -46
  27. package/lib/components/VBottomSheet/VBottomSheet.d.ts +1434 -80
  28. package/lib/components/VBtnGroup/VBtnGroup.css +7 -30
  29. package/lib/components/VBtnGroup/VBtnGroup.d.ts +32 -58
  30. package/lib/components/VBtnGroup/VBtnGroup.js +3 -7
  31. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  32. package/lib/components/VBtnGroup/VBtnGroup.sass +17 -44
  33. package/lib/components/VBtnToggle/VBtnToggle.d.ts +0 -25
  34. package/lib/components/VCombobox/VCombobox.d.ts +792 -74
  35. package/lib/components/VCounter/VCounter.d.ts +22 -46
  36. package/lib/components/VDataIterator/VDataIterator.d.ts +22 -46
  37. package/lib/components/VDialog/VDialog.d.ts +1048 -146
  38. package/lib/components/VDialog/VDialog.js.map +1 -1
  39. package/lib/components/VFab/VFab.d.ts +22 -46
  40. package/lib/components/VImg/VImg.d.ts +22 -49
  41. package/lib/components/VInput/VInput.d.ts +1 -1
  42. package/lib/components/VLazy/VLazy.d.ts +22 -46
  43. package/lib/components/VMenu/VMenu.d.ts +1048 -146
  44. package/lib/components/VMenu/VMenu.js.map +1 -1
  45. package/lib/components/VMessages/VMessages.d.ts +22 -46
  46. package/lib/components/VOverlay/VOverlay.css +1 -1
  47. package/lib/components/VOverlay/VOverlay.d.ts +22 -49
  48. package/lib/components/VOverlay/_variables.scss +1 -1
  49. package/lib/components/VSelect/VSelect.d.ts +1232 -90
  50. package/lib/components/VSnackbar/VSnackbar.d.ts +58 -109
  51. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +22 -46
  52. package/lib/components/VSpeedDial/VSpeedDial.d.ts +1434 -80
  53. package/lib/components/VTooltip/VTooltip.d.ts +58 -109
  54. package/lib/components/VTooltip/VTooltip.js +2 -2
  55. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  56. package/lib/composables/calendar.d.ts +0 -1
  57. package/lib/composables/calendar.js.map +1 -1
  58. package/lib/composables/theme.d.ts +1 -6
  59. package/lib/composables/theme.js +26 -94
  60. package/lib/composables/theme.js.map +1 -1
  61. package/lib/composables/transition.d.ts +10 -20
  62. package/lib/composables/transition.js +15 -12
  63. package/lib/composables/transition.js.map +1 -1
  64. package/lib/composables/virtual.js +1 -6
  65. package/lib/composables/virtual.js.map +1 -1
  66. package/lib/entry-bundler.js +1 -1
  67. package/lib/entry-bundler.js.map +1 -1
  68. package/lib/framework.d.ts +98 -142
  69. package/lib/framework.js +1 -1
  70. package/lib/framework.js.map +1 -1
  71. package/lib/util/globals.d.ts +0 -1
  72. package/lib/util/globals.js +0 -1
  73. package/lib/util/globals.js.map +1 -1
  74. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.3-dev.2025-04-29
2
+ * Vuetify v3.8.3-master.2025-04-30
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"); }
@@ -2786,7 +2785,6 @@
2786
2785
  function genDefaults$1() {
2787
2786
  return {
2788
2787
  defaultTheme: 'light',
2789
- prefix: 'v-',
2790
2788
  variations: {
2791
2789
  colors: [],
2792
2790
  lighten: 0,
@@ -2868,10 +2866,7 @@
2868
2866
  }
2869
2867
  }
2870
2868
  },
2871
- stylesheetId: 'vuetify-theme-stylesheet',
2872
- scoped: false,
2873
- unimportant: false,
2874
- utilities: true
2869
+ stylesheetId: 'vuetify-theme-stylesheet'
2875
2870
  };
2876
2871
  }
2877
2872
  function parseThemeOptions() {
@@ -2894,21 +2889,21 @@
2894
2889
  function createCssClass(lines, selector, content, scope) {
2895
2890
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2896
2891
  }
2897
- function genCssVariables(theme, prefix) {
2892
+ function genCssVariables(theme) {
2898
2893
  const lightOverlay = theme.dark ? 2 : 1;
2899
2894
  const darkOverlay = theme.dark ? 1 : 2;
2900
2895
  const variables = [];
2901
2896
  for (const [key, value] of Object.entries(theme.colors)) {
2902
2897
  const rgb = parseColor(value);
2903
- variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2898
+ variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2904
2899
  if (!key.startsWith('on-')) {
2905
- variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2900
+ variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2906
2901
  }
2907
2902
  }
2908
2903
  for (const [key, value] of Object.entries(theme.variables)) {
2909
2904
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2910
2905
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2911
- variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2906
+ variables.push(`--v-${key}: ${rgb ?? value}`);
2912
2907
  }
2913
2908
  return variables;
2914
2909
  }
@@ -2952,8 +2947,7 @@
2952
2947
  const scopeSelector = `:where(${scope})`;
2953
2948
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
2954
2949
  }
2955
- function upsertStyles(id, cspNonce, styles) {
2956
- const styleEl = getOrCreateStyleElement(id, cspNonce);
2950
+ function upsertStyles(styleEl, styles) {
2957
2951
  if (!styleEl) return;
2958
2952
  styleEl.innerHTML = styles;
2959
2953
  }
@@ -2973,17 +2967,8 @@
2973
2967
  // Composables
2974
2968
  function createTheme(options) {
2975
2969
  const parsedOptions = parseThemeOptions(options);
2976
- const _name = vue.shallowRef(parsedOptions.defaultTheme);
2970
+ const name = vue.shallowRef(parsedOptions.defaultTheme);
2977
2971
  const themes = vue.ref(parsedOptions.themes);
2978
- const systemName = vue.shallowRef('light');
2979
- const name = vue.computed({
2980
- get() {
2981
- return _name.value === 'system' ? systemName.value : _name.value;
2982
- },
2983
- set(val) {
2984
- _name.value = val;
2985
- }
2986
- });
2987
2972
  const computedThemes = vue.computed(() => {
2988
2973
  const acc = {};
2989
2974
  for (const [name, original] of Object.entries(themes.value)) {
@@ -3004,49 +2989,28 @@
3004
2989
  const current = vue.toRef(() => computedThemes.value[name.value]);
3005
2990
  const styles = vue.computed(() => {
3006
2991
  const lines = [];
3007
- const important = parsedOptions.unimportant ? '' : ' !important';
3008
- const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
3009
2992
  if (current.value?.dark) {
3010
2993
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
3011
2994
  }
3012
- createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
2995
+ createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
3013
2996
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
3014
- createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
3015
- }
3016
- if (parsedOptions.utilities) {
3017
- const bgLines = [];
3018
- const fgLines = [];
3019
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3020
- for (const key of colors) {
3021
- if (key.startsWith('on-')) {
3022
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3023
- } else {
3024
- 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);
3025
- createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3026
- createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
3027
- }
2997
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
2998
+ }
2999
+ const bgLines = [];
3000
+ const fgLines = [];
3001
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3002
+ for (const key of colors) {
3003
+ if (key.startsWith('on-')) {
3004
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
3005
+ } else {
3006
+ 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);
3007
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
3008
+ createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
3028
3009
  }
3029
- lines.push(...bgLines, ...fgLines);
3030
3010
  }
3011
+ lines.push(...bgLines, ...fgLines);
3031
3012
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
3032
3013
  });
3033
- const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
3034
- const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
3035
- if (SUPPORTS_MATCH_MEDIA) {
3036
- const media = window.matchMedia('(prefers-color-scheme: dark)');
3037
- function updateSystemName() {
3038
- systemName.value = media.matches ? 'dark' : 'light';
3039
- }
3040
- updateSystemName();
3041
- media.addEventListener('change', updateSystemName, {
3042
- passive: true
3043
- });
3044
- if (vue.getCurrentScope()) {
3045
- vue.onScopeDispose(() => {
3046
- media.removeEventListener('change', updateSystemName);
3047
- });
3048
- }
3049
- }
3050
3014
  function install(app) {
3051
3015
  if (parsedOptions.isDisabled) return;
3052
3016
  const head = app._context.provides.usehead;
@@ -3084,55 +3048,22 @@
3084
3048
  updateStyles();
3085
3049
  }
3086
3050
  function updateStyles() {
3087
- upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
3051
+ upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
3088
3052
  }
3089
3053
  }
3090
3054
  }
3091
- function change(themeName) {
3092
- if (!themeNames.value.includes(themeName)) {
3093
- consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
3094
- return;
3095
- }
3096
- name.value = themeName;
3097
- }
3098
- function cycle() {
3099
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
3100
- const currentIndex = themeArray.indexOf(name.value);
3101
- const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
3102
- change(themeArray[nextIndex]);
3103
- }
3104
- function toggle() {
3105
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
3106
- cycle(themeArray);
3107
- }
3108
- const globalName = new Proxy(name, {
3109
- get(target, prop) {
3110
- return target[prop];
3111
- },
3112
- set(target, prop, val) {
3113
- if (prop === 'value') {
3114
- deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
3115
- }
3116
- // @ts-expect-error
3117
- target[prop] = val;
3118
- return true;
3119
- }
3120
- });
3055
+ const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
3121
3056
  return {
3122
3057
  install,
3123
- change,
3124
- cycle,
3125
- toggle,
3126
3058
  isDisabled: parsedOptions.isDisabled,
3127
3059
  name,
3128
3060
  themes,
3129
3061
  current,
3130
3062
  computedThemes,
3131
- prefix: parsedOptions.prefix,
3132
3063
  themeClasses,
3133
3064
  styles,
3134
3065
  global: {
3135
- name: globalName,
3066
+ name,
3136
3067
  current
3137
3068
  }
3138
3069
  };
@@ -3143,7 +3074,7 @@
3143
3074
  if (!theme) throw new Error('Could not find Vuetify theme injection');
3144
3075
  const name = vue.toRef(() => props.theme ?? theme.name.value);
3145
3076
  const current = vue.toRef(() => theme.themes.value[name.value]);
3146
- const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
3077
+ const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
3147
3078
  const newTheme = {
3148
3079
  ...theme,
3149
3080
  name,
@@ -3810,7 +3741,7 @@
3810
3741
 
3811
3742
  const makeTransitionProps = propsFactory({
3812
3743
  transition: {
3813
- type: [Boolean, String, Object],
3744
+ type: null,
3814
3745
  default: 'fade-transition',
3815
3746
  validator: val => val !== true
3816
3747
  }
@@ -3828,16 +3759,19 @@
3828
3759
  const {
3829
3760
  component = group ? vue.TransitionGroup : vue.Transition,
3830
3761
  ...customProps
3831
- } = typeof transition === 'object' ? transition : {};
3832
- return vue.h(component, vue.mergeProps(typeof transition === 'string' ? {
3833
- name: disabled ? '' : transition
3834
- } : customProps, typeof transition === 'string' ? {} : Object.fromEntries(Object.entries({
3835
- disabled,
3836
- group
3837
- }).filter(_ref2 => {
3838
- let [_, v] = _ref2;
3839
- return v !== undefined;
3840
- })), rest), slots);
3762
+ } = isObject(transition) ? transition : {};
3763
+ let transitionProps;
3764
+ if (isObject(transition)) {
3765
+ transitionProps = vue.mergeProps(customProps, JSON.parse(JSON.stringify({
3766
+ disabled,
3767
+ group
3768
+ })), rest);
3769
+ } else {
3770
+ transitionProps = vue.mergeProps({
3771
+ name: disabled || !transition ? '' : transition
3772
+ }, rest);
3773
+ }
3774
+ return vue.h(component, transitionProps, slots);
3841
3775
  };
3842
3776
 
3843
3777
  // Utilities
@@ -4687,15 +4621,9 @@
4687
4621
  };
4688
4622
  }
4689
4623
 
4690
- // Types
4691
-
4692
4624
  const makeVBtnGroupProps = propsFactory({
4693
4625
  baseColor: String,
4694
4626
  divided: Boolean,
4695
- direction: {
4696
- type: String,
4697
- default: 'horizontal'
4698
- },
4699
4627
  ...makeBorderProps(),
4700
4628
  ...makeComponentProps(),
4701
4629
  ...makeDensityProps(),
@@ -4729,7 +4657,7 @@
4729
4657
  } = useRounded(props);
4730
4658
  provideDefaults({
4731
4659
  VBtn: {
4732
- height: vue.toRef(() => props.direction === 'horizontal' ? 'auto' : null),
4660
+ height: 'auto',
4733
4661
  baseColor: vue.toRef(() => props.baseColor),
4734
4662
  color: vue.toRef(() => props.color),
4735
4663
  density: vue.toRef(() => props.density),
@@ -4739,7 +4667,7 @@
4739
4667
  });
4740
4668
  useRender(() => {
4741
4669
  return vue.createVNode(props.tag, {
4742
- "class": ['v-btn-group', `v-btn-group--${props.direction}`, {
4670
+ "class": ['v-btn-group', {
4743
4671
  'v-btn-group--divided': props.divided
4744
4672
  }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
4745
4673
  "style": props.style
@@ -12704,12 +12632,7 @@
12704
12632
  }
12705
12633
  function calculateOffset(index) {
12706
12634
  index = clamp(index, 0, items.value.length - 1);
12707
- const whole = Math.floor(index);
12708
- const fraction = index % 1;
12709
- const next = whole + 1;
12710
- const wholeOffset = offsets[whole] || 0;
12711
- const nextOffset = offsets[next] || wholeOffset;
12712
- return wholeOffset + (nextOffset - wholeOffset) * fraction;
12635
+ return offsets[index] || 0;
12713
12636
  }
12714
12637
  function calculateIndex(scrollTop) {
12715
12638
  return binaryClosest(offsets, scrollTop);
@@ -28722,7 +28645,7 @@
28722
28645
  origin: 'auto',
28723
28646
  scrim: false,
28724
28647
  scrollStrategy: 'reposition',
28725
- transition: false
28648
+ transition: null
28726
28649
  }), ['absolute', 'persistent'])
28727
28650
  }, 'VTooltip');
28728
28651
  const VTooltip = genericComponent()({
@@ -28749,7 +28672,7 @@
28749
28672
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28750
28673
  });
28751
28674
  const transition = vue.toRef(() => {
28752
- if (props.transition) return props.transition;
28675
+ if (props.transition != null) return props.transition;
28753
28676
  return isActive.value ? 'scale-transition' : 'fade-transition';
28754
28677
  });
28755
28678
  const activatorProps = vue.computed(() => vue.mergeProps({
@@ -29295,7 +29218,7 @@
29295
29218
  };
29296
29219
  });
29297
29220
  }
29298
- const version$1 = "3.8.3-dev.2025-04-29";
29221
+ const version$1 = "3.8.3-master.2025-04-30";
29299
29222
  createVuetify$1.version = version$1;
29300
29223
 
29301
29224
  // Vue's inject() can only be used in setup
@@ -29320,7 +29243,7 @@
29320
29243
  ...options
29321
29244
  });
29322
29245
  };
29323
- const version = "3.8.3-dev.2025-04-29";
29246
+ const version = "3.8.3-master.2025-04-30";
29324
29247
  createVuetify.version = version;
29325
29248
 
29326
29249
  exports.blueprints = index;