@vuetify/nightly 3.8.2-dev.2025-04-17 → 3.8.2-master.2025-04-19

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 (44) hide show
  1. package/CHANGELOG.md +7 -16
  2. package/dist/json/attributes.json +3562 -3562
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +164 -164
  5. package/dist/json/web-types.json +6668 -6669
  6. package/dist/vuetify-labs.cjs +36 -112
  7. package/dist/vuetify-labs.css +3302 -3302
  8. package/dist/vuetify-labs.d.ts +62 -76
  9. package/dist/vuetify-labs.esm.js +37 -113
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +36 -112
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +29 -103
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +5737 -5737
  16. package/dist/vuetify.d.ts +57 -62
  17. package/dist/vuetify.esm.js +30 -104
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +29 -103
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +1165 -1171
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VOverlay/VOverlay.css +1 -1
  25. package/lib/components/VOverlay/_variables.scss +1 -1
  26. package/lib/composables/calendar.d.ts +0 -1
  27. package/lib/composables/calendar.js.map +1 -1
  28. package/lib/composables/theme.d.ts +1 -6
  29. package/lib/composables/theme.js +26 -94
  30. package/lib/composables/theme.js.map +1 -1
  31. package/lib/composables/virtual.js +1 -6
  32. package/lib/composables/virtual.js.map +1 -1
  33. package/lib/entry-bundler.js +1 -1
  34. package/lib/entry-bundler.js.map +1 -1
  35. package/lib/framework.d.ts +57 -62
  36. package/lib/framework.js +1 -1
  37. package/lib/framework.js.map +1 -1
  38. package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
  39. package/lib/labs/VIconBtn/VIconBtn.js +7 -9
  40. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  41. package/lib/util/globals.d.ts +0 -1
  42. package/lib/util/globals.js +0 -1
  43. package/lib/util/globals.js.map +1 -1
  44. package/package.json +1 -1
package/dist/vuetify.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.2-dev.2025-04-17
2
+ * Vuetify v3.8.2-master.2025-04-19
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"); }
@@ -2772,7 +2771,6 @@
2772
2771
  function genDefaults$1() {
2773
2772
  return {
2774
2773
  defaultTheme: 'light',
2775
- prefix: 'v-',
2776
2774
  variations: {
2777
2775
  colors: [],
2778
2776
  lighten: 0,
@@ -2854,10 +2852,7 @@
2854
2852
  }
2855
2853
  }
2856
2854
  },
2857
- stylesheetId: 'vuetify-theme-stylesheet',
2858
- scoped: false,
2859
- unimportant: false,
2860
- utilities: true
2855
+ stylesheetId: 'vuetify-theme-stylesheet'
2861
2856
  };
2862
2857
  }
2863
2858
  function parseThemeOptions() {
@@ -2880,21 +2875,21 @@
2880
2875
  function createCssClass(lines, selector, content, scope) {
2881
2876
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2882
2877
  }
2883
- function genCssVariables(theme, prefix) {
2878
+ function genCssVariables(theme) {
2884
2879
  const lightOverlay = theme.dark ? 2 : 1;
2885
2880
  const darkOverlay = theme.dark ? 1 : 2;
2886
2881
  const variables = [];
2887
2882
  for (const [key, value] of Object.entries(theme.colors)) {
2888
2883
  const rgb = parseColor(value);
2889
- variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2884
+ variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2890
2885
  if (!key.startsWith('on-')) {
2891
- variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2886
+ variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2892
2887
  }
2893
2888
  }
2894
2889
  for (const [key, value] of Object.entries(theme.variables)) {
2895
2890
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2896
2891
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2897
- variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2892
+ variables.push(`--v-${key}: ${rgb ?? value}`);
2898
2893
  }
2899
2894
  return variables;
2900
2895
  }
@@ -2938,8 +2933,7 @@
2938
2933
  const scopeSelector = `:where(${scope})`;
2939
2934
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
2940
2935
  }
2941
- function upsertStyles(id, cspNonce, styles) {
2942
- const styleEl = getOrCreateStyleElement(id, cspNonce);
2936
+ function upsertStyles(styleEl, styles) {
2943
2937
  if (!styleEl) return;
2944
2938
  styleEl.innerHTML = styles;
2945
2939
  }
@@ -2959,17 +2953,8 @@
2959
2953
  // Composables
2960
2954
  function createTheme(options) {
2961
2955
  const parsedOptions = parseThemeOptions(options);
2962
- const _name = vue.shallowRef(parsedOptions.defaultTheme);
2956
+ const name = vue.shallowRef(parsedOptions.defaultTheme);
2963
2957
  const themes = vue.ref(parsedOptions.themes);
2964
- const systemName = vue.shallowRef('light');
2965
- const name = vue.computed({
2966
- get() {
2967
- return _name.value === 'system' ? systemName.value : _name.value;
2968
- },
2969
- set(val) {
2970
- _name.value = val;
2971
- }
2972
- });
2973
2958
  const computedThemes = vue.computed(() => {
2974
2959
  const acc = {};
2975
2960
  for (const [name, original] of Object.entries(themes.value)) {
@@ -2990,49 +2975,28 @@
2990
2975
  const current = vue.computed(() => computedThemes.value[name.value]);
2991
2976
  const styles = vue.computed(() => {
2992
2977
  const lines = [];
2993
- const important = parsedOptions.unimportant ? '' : ' !important';
2994
- const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
2995
2978
  if (current.value?.dark) {
2996
2979
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
2997
2980
  }
2998
- createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
2981
+ createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
2999
2982
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
3000
- createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
3001
- }
3002
- if (parsedOptions.utilities) {
3003
- const bgLines = [];
3004
- const fgLines = [];
3005
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
3006
- for (const key of colors) {
3007
- if (key.startsWith('on-')) {
3008
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3009
- } else {
3010
- 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);
3011
- createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
3012
- createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
3013
- }
2983
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
2984
+ }
2985
+ const bgLines = [];
2986
+ const fgLines = [];
2987
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2988
+ for (const key of colors) {
2989
+ if (key.startsWith('on-')) {
2990
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2991
+ } else {
2992
+ 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);
2993
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2994
+ createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
3014
2995
  }
3015
- lines.push(...bgLines, ...fgLines);
3016
2996
  }
2997
+ lines.push(...bgLines, ...fgLines);
3017
2998
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
3018
2999
  });
3019
- const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
3020
- const themeNames = vue.computed(() => Object.keys(computedThemes.value));
3021
- if (SUPPORTS_MATCH_MEDIA) {
3022
- const media = window.matchMedia('(prefers-color-scheme: dark)');
3023
- function updateSystemName() {
3024
- systemName.value = media.matches ? 'dark' : 'light';
3025
- }
3026
- updateSystemName();
3027
- media.addEventListener('change', updateSystemName, {
3028
- passive: true
3029
- });
3030
- if (vue.getCurrentScope()) {
3031
- vue.onScopeDispose(() => {
3032
- media.removeEventListener('change', updateSystemName);
3033
- });
3034
- }
3035
- }
3036
3000
  function install(app) {
3037
3001
  if (parsedOptions.isDisabled) return;
3038
3002
  const head = app._context.provides.usehead;
@@ -3070,55 +3034,22 @@
3070
3034
  updateStyles();
3071
3035
  }
3072
3036
  function updateStyles() {
3073
- upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
3037
+ upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
3074
3038
  }
3075
3039
  }
3076
3040
  }
3077
- function change(themeName) {
3078
- if (!themeNames.value.includes(themeName)) {
3079
- consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
3080
- return;
3081
- }
3082
- name.value = themeName;
3083
- }
3084
- function cycle() {
3085
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
3086
- const currentIndex = themeArray.indexOf(name.value);
3087
- const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
3088
- change(themeArray[nextIndex]);
3089
- }
3090
- function toggle() {
3091
- let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
3092
- cycle(themeArray);
3093
- }
3094
- const globalName = new Proxy(name, {
3095
- get(target, prop) {
3096
- return target[prop];
3097
- },
3098
- set(target, prop, val) {
3099
- if (prop === 'value') {
3100
- deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
3101
- }
3102
- // @ts-expect-error
3103
- target[prop] = val;
3104
- return true;
3105
- }
3106
- });
3041
+ const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
3107
3042
  return {
3108
3043
  install,
3109
- change,
3110
- cycle,
3111
- toggle,
3112
3044
  isDisabled: parsedOptions.isDisabled,
3113
3045
  name,
3114
3046
  themes,
3115
3047
  current,
3116
3048
  computedThemes,
3117
- prefix: parsedOptions.prefix,
3118
3049
  themeClasses,
3119
3050
  styles,
3120
3051
  global: {
3121
- name: globalName,
3052
+ name,
3122
3053
  current
3123
3054
  }
3124
3055
  };
@@ -3129,7 +3060,7 @@
3129
3060
  if (!theme) throw new Error('Could not find Vuetify theme injection');
3130
3061
  const name = vue.computed(() => props.theme ?? theme.name.value);
3131
3062
  const current = vue.computed(() => theme.themes.value[name.value]);
3132
- const themeClasses = vue.computed(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
3063
+ const themeClasses = vue.computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
3133
3064
  const newTheme = {
3134
3065
  ...theme,
3135
3066
  name,
@@ -12659,12 +12590,7 @@
12659
12590
  }
12660
12591
  function calculateOffset(index) {
12661
12592
  index = clamp(index, 0, items.value.length - 1);
12662
- const whole = Math.floor(index);
12663
- const fraction = index % 1;
12664
- const next = whole + 1;
12665
- const wholeOffset = offsets[whole] || 0;
12666
- const nextOffset = offsets[next] || wholeOffset;
12667
- return wholeOffset + (nextOffset - wholeOffset) * fraction;
12593
+ return offsets[index] || 0;
12668
12594
  }
12669
12595
  function calculateIndex(scrollTop) {
12670
12596
  return binaryClosest(offsets, scrollTop);
@@ -29252,7 +29178,7 @@
29252
29178
  };
29253
29179
  });
29254
29180
  }
29255
- const version$1 = "3.8.2-dev.2025-04-17";
29181
+ const version$1 = "3.8.2-master.2025-04-19";
29256
29182
  createVuetify$1.version = version$1;
29257
29183
 
29258
29184
  // Vue's inject() can only be used in setup
@@ -29277,7 +29203,7 @@
29277
29203
  ...options
29278
29204
  });
29279
29205
  };
29280
- const version = "3.8.2-dev.2025-04-17";
29206
+ const version = "3.8.2-master.2025-04-19";
29281
29207
  createVuetify.version = version;
29282
29208
 
29283
29209
  exports.blueprints = index;