@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.
- package/CHANGELOG.md +8 -17
- package/dist/json/attributes.json +2876 -2884
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +130 -130
- package/dist/json/tags.json +0 -2
- package/dist/json/web-types.json +5265 -5285
- package/dist/vuetify-labs.cjs +47 -124
- package/dist/vuetify-labs.css +3531 -3554
- package/dist/vuetify-labs.d.ts +4036 -905
- package/dist/vuetify-labs.esm.js +48 -125
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +47 -124
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +47 -124
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5454 -5477
- package/dist/vuetify.d.ts +4036 -905
- package/dist/vuetify.esm.js +48 -125
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +47 -124
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1173 -1179
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +792 -74
- package/lib/components/VBadge/VBadge.d.ts +22 -46
- package/lib/components/VBottomSheet/VBottomSheet.d.ts +1434 -80
- 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/VCombobox/VCombobox.d.ts +792 -74
- package/lib/components/VCounter/VCounter.d.ts +22 -46
- package/lib/components/VDataIterator/VDataIterator.d.ts +22 -46
- package/lib/components/VDialog/VDialog.d.ts +1048 -146
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VFab/VFab.d.ts +22 -46
- package/lib/components/VImg/VImg.d.ts +22 -49
- package/lib/components/VInput/VInput.d.ts +1 -1
- package/lib/components/VLazy/VLazy.d.ts +22 -46
- package/lib/components/VMenu/VMenu.d.ts +1048 -146
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VMessages/VMessages.d.ts +22 -46
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/VOverlay.d.ts +22 -49
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VSelect/VSelect.d.ts +1232 -90
- package/lib/components/VSnackbar/VSnackbar.d.ts +58 -109
- package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +22 -46
- package/lib/components/VSpeedDial/VSpeedDial.d.ts +1434 -80
- package/lib/components/VTooltip/VTooltip.d.ts +58 -109
- package/lib/components/VTooltip/VTooltip.js +2 -2
- package/lib/components/VTooltip/VTooltip.js.map +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/transition.d.ts +10 -20
- package/lib/composables/transition.js +15 -12
- package/lib/composables/transition.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 +98 -142
- 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.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.3-
|
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
|
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,
|
@@ -3810,7 +3741,7 @@
|
|
3810
3741
|
|
3811
3742
|
const makeTransitionProps = propsFactory({
|
3812
3743
|
transition: {
|
3813
|
-
type:
|
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
|
-
} =
|
3832
|
-
|
3833
|
-
|
3834
|
-
|
3835
|
-
|
3836
|
-
|
3837
|
-
|
3838
|
-
|
3839
|
-
|
3840
|
-
|
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:
|
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',
|
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
|
-
|
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:
|
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-
|
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-
|
29246
|
+
const version = "3.8.3-master.2025-04-30";
|
29324
29247
|
createVuetify.version = version;
|
29325
29248
|
|
29326
29249
|
exports.blueprints = index;
|