@vuetify/nightly 3.8.4-dev.2025-05-07 → 3.8.4-master.2025-05-07
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.
- package/CHANGELOG.md +3 -20
- package/dist/json/attributes.json +2498 -2506
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +138 -138
- package/dist/json/tags.json +0 -2
- package/dist/json/web-types.json +4444 -4464
- package/dist/vuetify-labs.cjs +31 -111
- package/dist/vuetify-labs.css +5389 -5412
- package/dist/vuetify-labs.d.ts +60 -93
- package/dist/vuetify-labs.esm.js +32 -112
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +31 -111
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +31 -111
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5755 -5778
- package/dist/vuetify.d.ts +60 -93
- package/dist/vuetify.esm.js +32 -112
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +31 -111
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1172 -1178
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.css +7 -30
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +32 -58
- package/lib/components/VBtnGroup/VBtnGroup.js +3 -7
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +17 -44
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +0 -25
- package/lib/components/VInput/VInput.d.ts +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/composables/calendar.d.ts +0 -1
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/theme.d.ts +1 -6
- package/lib/composables/theme.js +26 -94
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/virtual.js +1 -6
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +50 -55
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/util/globals.d.ts +0 -1
- package/lib/util/globals.js +0 -1
- package/lib/util/globals.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify.cjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.4-
|
2
|
+
* Vuetify v3.8.4-master.2025-05-07
|
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
|
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(
|
2898
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2904
2899
|
if (!key.startsWith('on-')) {
|
2905
|
-
variables.push(
|
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(
|
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(
|
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
|
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
|
2995
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3013
2996
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3014
|
-
createCssClass(lines,
|
3015
|
-
}
|
3016
|
-
|
3017
|
-
|
3018
|
-
|
3019
|
-
|
3020
|
-
|
3021
|
-
|
3022
|
-
|
3023
|
-
}
|
3024
|
-
|
3025
|
-
|
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
|
-
|
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
|
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 :
|
3077
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
3147
3078
|
const newTheme = {
|
3148
3079
|
...theme,
|
3149
3080
|
name,
|
@@ -4690,15 +4621,9 @@
|
|
4690
4621
|
};
|
4691
4622
|
}
|
4692
4623
|
|
4693
|
-
// Types
|
4694
|
-
|
4695
4624
|
const makeVBtnGroupProps = propsFactory({
|
4696
4625
|
baseColor: String,
|
4697
4626
|
divided: Boolean,
|
4698
|
-
direction: {
|
4699
|
-
type: String,
|
4700
|
-
default: 'horizontal'
|
4701
|
-
},
|
4702
4627
|
...makeBorderProps(),
|
4703
4628
|
...makeComponentProps(),
|
4704
4629
|
...makeDensityProps(),
|
@@ -4732,7 +4657,7 @@
|
|
4732
4657
|
} = useRounded(props);
|
4733
4658
|
provideDefaults({
|
4734
4659
|
VBtn: {
|
4735
|
-
height:
|
4660
|
+
height: 'auto',
|
4736
4661
|
baseColor: vue.toRef(() => props.baseColor),
|
4737
4662
|
color: vue.toRef(() => props.color),
|
4738
4663
|
density: vue.toRef(() => props.density),
|
@@ -4742,7 +4667,7 @@
|
|
4742
4667
|
});
|
4743
4668
|
useRender(() => {
|
4744
4669
|
return vue.createVNode(props.tag, {
|
4745
|
-
"class": ['v-btn-group',
|
4670
|
+
"class": ['v-btn-group', {
|
4746
4671
|
'v-btn-group--divided': props.divided
|
4747
4672
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
4748
4673
|
"style": props.style
|
@@ -12709,12 +12634,7 @@
|
|
12709
12634
|
}
|
12710
12635
|
function calculateOffset(index) {
|
12711
12636
|
index = clamp(index, 0, items.value.length - 1);
|
12712
|
-
|
12713
|
-
const fraction = index % 1;
|
12714
|
-
const next = whole + 1;
|
12715
|
-
const wholeOffset = offsets[whole] || 0;
|
12716
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12717
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12637
|
+
return offsets[index] || 0;
|
12718
12638
|
}
|
12719
12639
|
function calculateIndex(scrollTop) {
|
12720
12640
|
return binaryClosest(offsets, scrollTop);
|
@@ -29322,7 +29242,7 @@
|
|
29322
29242
|
};
|
29323
29243
|
});
|
29324
29244
|
}
|
29325
|
-
const version$1 = "3.8.4-
|
29245
|
+
const version$1 = "3.8.4-master.2025-05-07";
|
29326
29246
|
createVuetify$1.version = version$1;
|
29327
29247
|
|
29328
29248
|
// Vue's inject() can only be used in setup
|
@@ -29347,7 +29267,7 @@
|
|
29347
29267
|
...options
|
29348
29268
|
});
|
29349
29269
|
};
|
29350
|
-
const version = "3.8.4-
|
29270
|
+
const version = "3.8.4-master.2025-05-07";
|
29351
29271
|
createVuetify.version = version;
|
29352
29272
|
|
29353
29273
|
exports.blueprints = index;
|