@vuetify/nightly 3.8.3-master.2025-05-05 → 3.8.4-dev.2025-05-13
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 +17 -29
- package/dist/json/attributes.json +3080 -3064
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +144 -144
- package/dist/json/tags.json +4 -0
- package/dist/json/web-types.json +5925 -5886
- package/dist/vuetify-labs.cjs +206 -92
- package/dist/vuetify-labs.css +3956 -3924
- package/dist/vuetify-labs.d.ts +1030 -978
- package/dist/vuetify-labs.esm.js +207 -93
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +206 -92
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +179 -48
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3200 -3168
- package/dist/vuetify.d.ts +620 -566
- package/dist/vuetify.esm.js +180 -49
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +179 -48
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1185 -1174
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +6 -1
- package/lib/components/VAlert/VAlert.d.ts +35 -0
- package/lib/components/VAlert/VAlert.js +14 -9
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +7 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +97 -97
- package/lib/components/VAutocomplete/VAutocomplete.js +5 -0
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +6 -6
- package/lib/components/VBtnGroup/VBtnGroup.css +30 -7
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +58 -32
- package/lib/components/VBtnGroup/VBtnGroup.js +7 -3
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +44 -17
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +25 -0
- package/lib/components/VCheckbox/VCheckbox.d.ts +3 -3
- package/lib/components/VCombobox/VCombobox.d.ts +97 -97
- package/lib/components/VDataTable/VDataTable.d.ts +110 -110
- package/lib/components/VDataTable/VDataTableHeaders.js +1 -2
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +55 -55
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +55 -55
- package/lib/components/VDataTable/composables/headers.d.ts +75 -75
- package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +6 -6
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.css +4 -0
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VFileInput/VFileInput.js +21 -3
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +4 -0
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VNumberInput/VNumberInput.d.ts +92 -92
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/locationStrategies.js +1 -1
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +3 -3
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +97 -97
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSwitch/VSwitch.d.ts +3 -3
- package/lib/components/VTabs/VTabs.d.ts +6 -6
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- package/lib/components/transitions/dialog-transition.js +3 -3
- package/lib/components/transitions/dialog-transition.js.map +1 -1
- package/lib/composables/calendar.d.ts +1 -0
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/iconSizes.d.ts +28 -0
- package/lib/composables/iconSizes.js +23 -0
- package/lib/composables/iconSizes.js.map +1 -0
- package/lib/composables/theme.d.ts +6 -1
- package/lib/composables/theme.js +94 -26
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/virtual.js +6 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.d.ts +6 -6
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +57 -52
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +3 -3
- package/lib/labs/VCalendar/VCalendarDay.d.ts +3 -3
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +3 -3
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +96 -96
- package/lib/labs/VFileUpload/VFileUpload.js +19 -31
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
- package/lib/labs/VIconBtn/VIconBtn.js +7 -11
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js +2 -2
- package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
- package/lib/util/globals.d.ts +1 -0
- package/lib/util/globals.js +1 -0
- package/lib/util/globals.js.map +1 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +7 -6
package/dist/vuetify.esm.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.8.
|
|
2
|
+
* Vuetify v3.8.4-dev.2025-05-13
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, createVNode, mergeProps, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
|
|
7
|
+
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, createVNode, mergeProps, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
|
|
8
8
|
|
|
9
9
|
const IN_BROWSER = typeof window !== 'undefined';
|
|
10
10
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
|
11
11
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
|
12
12
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
|
13
|
+
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
|
13
14
|
|
|
14
15
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
|
15
16
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
|
@@ -2781,6 +2782,7 @@ const makeThemeProps = propsFactory({
|
|
|
2781
2782
|
function genDefaults$1() {
|
|
2782
2783
|
return {
|
|
2783
2784
|
defaultTheme: 'light',
|
|
2785
|
+
prefix: 'v-',
|
|
2784
2786
|
variations: {
|
|
2785
2787
|
colors: [],
|
|
2786
2788
|
lighten: 0,
|
|
@@ -2862,7 +2864,10 @@ function genDefaults$1() {
|
|
|
2862
2864
|
}
|
|
2863
2865
|
}
|
|
2864
2866
|
},
|
|
2865
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
|
2867
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
|
2868
|
+
scoped: false,
|
|
2869
|
+
unimportant: false,
|
|
2870
|
+
utilities: true
|
|
2866
2871
|
};
|
|
2867
2872
|
}
|
|
2868
2873
|
function parseThemeOptions() {
|
|
@@ -2885,21 +2890,21 @@ function parseThemeOptions() {
|
|
|
2885
2890
|
function createCssClass(lines, selector, content, scope) {
|
|
2886
2891
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
|
2887
2892
|
}
|
|
2888
|
-
function genCssVariables(theme) {
|
|
2893
|
+
function genCssVariables(theme, prefix) {
|
|
2889
2894
|
const lightOverlay = theme.dark ? 2 : 1;
|
|
2890
2895
|
const darkOverlay = theme.dark ? 1 : 2;
|
|
2891
2896
|
const variables = [];
|
|
2892
2897
|
for (const [key, value] of Object.entries(theme.colors)) {
|
|
2893
2898
|
const rgb = parseColor(value);
|
|
2894
|
-
variables.push(
|
|
2899
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
|
2895
2900
|
if (!key.startsWith('on-')) {
|
|
2896
|
-
variables.push(
|
|
2901
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
|
2897
2902
|
}
|
|
2898
2903
|
}
|
|
2899
2904
|
for (const [key, value] of Object.entries(theme.variables)) {
|
|
2900
2905
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
|
2901
2906
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
2902
|
-
variables.push(
|
|
2907
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
|
2903
2908
|
}
|
|
2904
2909
|
return variables;
|
|
2905
2910
|
}
|
|
@@ -2943,7 +2948,8 @@ function getScopedSelector(selector, scope) {
|
|
|
2943
2948
|
const scopeSelector = `:where(${scope})`;
|
|
2944
2949
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
|
2945
2950
|
}
|
|
2946
|
-
function upsertStyles(
|
|
2951
|
+
function upsertStyles(id, cspNonce, styles) {
|
|
2952
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
|
2947
2953
|
if (!styleEl) return;
|
|
2948
2954
|
styleEl.innerHTML = styles;
|
|
2949
2955
|
}
|
|
@@ -2963,8 +2969,17 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
|
2963
2969
|
// Composables
|
|
2964
2970
|
function createTheme(options) {
|
|
2965
2971
|
const parsedOptions = parseThemeOptions(options);
|
|
2966
|
-
const
|
|
2972
|
+
const _name = shallowRef(parsedOptions.defaultTheme);
|
|
2967
2973
|
const themes = ref(parsedOptions.themes);
|
|
2974
|
+
const systemName = shallowRef('light');
|
|
2975
|
+
const name = computed({
|
|
2976
|
+
get() {
|
|
2977
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
|
2978
|
+
},
|
|
2979
|
+
set(val) {
|
|
2980
|
+
_name.value = val;
|
|
2981
|
+
}
|
|
2982
|
+
});
|
|
2968
2983
|
const computedThemes = computed(() => {
|
|
2969
2984
|
const acc = {};
|
|
2970
2985
|
for (const [name, original] of Object.entries(themes.value)) {
|
|
@@ -2985,28 +3000,49 @@ function createTheme(options) {
|
|
|
2985
3000
|
const current = toRef(() => computedThemes.value[name.value]);
|
|
2986
3001
|
const styles = computed(() => {
|
|
2987
3002
|
const lines = [];
|
|
3003
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
|
3004
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
|
2988
3005
|
if (current.value?.dark) {
|
|
2989
3006
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
|
2990
3007
|
}
|
|
2991
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
|
3008
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
|
2992
3009
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
|
2993
|
-
createCssClass(lines,
|
|
2994
|
-
}
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3010
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
|
3011
|
+
}
|
|
3012
|
+
if (parsedOptions.utilities) {
|
|
3013
|
+
const bgLines = [];
|
|
3014
|
+
const fgLines = [];
|
|
3015
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
|
3016
|
+
for (const key of colors) {
|
|
3017
|
+
if (key.startsWith('on-')) {
|
|
3018
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
|
3019
|
+
} else {
|
|
3020
|
+
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);
|
|
3021
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
|
3022
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
|
3023
|
+
}
|
|
3005
3024
|
}
|
|
3025
|
+
lines.push(...bgLines, ...fgLines);
|
|
3006
3026
|
}
|
|
3007
|
-
lines.push(...bgLines, ...fgLines);
|
|
3008
3027
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
|
3009
3028
|
});
|
|
3029
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
|
3030
|
+
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
|
3031
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
|
3032
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
|
3033
|
+
function updateSystemName() {
|
|
3034
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
|
3035
|
+
}
|
|
3036
|
+
updateSystemName();
|
|
3037
|
+
media.addEventListener('change', updateSystemName, {
|
|
3038
|
+
passive: true
|
|
3039
|
+
});
|
|
3040
|
+
if (getCurrentScope()) {
|
|
3041
|
+
onScopeDispose(() => {
|
|
3042
|
+
media.removeEventListener('change', updateSystemName);
|
|
3043
|
+
});
|
|
3044
|
+
}
|
|
3045
|
+
}
|
|
3010
3046
|
function install(app) {
|
|
3011
3047
|
if (parsedOptions.isDisabled) return;
|
|
3012
3048
|
const head = app._context.provides.usehead;
|
|
@@ -3044,22 +3080,55 @@ function createTheme(options) {
|
|
|
3044
3080
|
updateStyles();
|
|
3045
3081
|
}
|
|
3046
3082
|
function updateStyles() {
|
|
3047
|
-
upsertStyles(
|
|
3083
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
|
3048
3084
|
}
|
|
3049
3085
|
}
|
|
3050
3086
|
}
|
|
3051
|
-
|
|
3087
|
+
function change(themeName) {
|
|
3088
|
+
if (!themeNames.value.includes(themeName)) {
|
|
3089
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
|
3090
|
+
return;
|
|
3091
|
+
}
|
|
3092
|
+
name.value = themeName;
|
|
3093
|
+
}
|
|
3094
|
+
function cycle() {
|
|
3095
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
|
3096
|
+
const currentIndex = themeArray.indexOf(name.value);
|
|
3097
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
|
3098
|
+
change(themeArray[nextIndex]);
|
|
3099
|
+
}
|
|
3100
|
+
function toggle() {
|
|
3101
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
|
3102
|
+
cycle(themeArray);
|
|
3103
|
+
}
|
|
3104
|
+
const globalName = new Proxy(name, {
|
|
3105
|
+
get(target, prop) {
|
|
3106
|
+
return target[prop];
|
|
3107
|
+
},
|
|
3108
|
+
set(target, prop, val) {
|
|
3109
|
+
if (prop === 'value') {
|
|
3110
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
|
3111
|
+
}
|
|
3112
|
+
// @ts-expect-error
|
|
3113
|
+
target[prop] = val;
|
|
3114
|
+
return true;
|
|
3115
|
+
}
|
|
3116
|
+
});
|
|
3052
3117
|
return {
|
|
3053
3118
|
install,
|
|
3119
|
+
change,
|
|
3120
|
+
cycle,
|
|
3121
|
+
toggle,
|
|
3054
3122
|
isDisabled: parsedOptions.isDisabled,
|
|
3055
3123
|
name,
|
|
3056
3124
|
themes,
|
|
3057
3125
|
current,
|
|
3058
3126
|
computedThemes,
|
|
3127
|
+
prefix: parsedOptions.prefix,
|
|
3059
3128
|
themeClasses,
|
|
3060
3129
|
styles,
|
|
3061
3130
|
global: {
|
|
3062
|
-
name,
|
|
3131
|
+
name: globalName,
|
|
3063
3132
|
current
|
|
3064
3133
|
}
|
|
3065
3134
|
};
|
|
@@ -3070,7 +3139,7 @@ function provideTheme(props) {
|
|
|
3070
3139
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
|
3071
3140
|
const name = toRef(() => props.theme ?? theme.name.value);
|
|
3072
3141
|
const current = toRef(() => theme.themes.value[name.value]);
|
|
3073
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
|
3142
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
|
3074
3143
|
const newTheme = {
|
|
3075
3144
|
...theme,
|
|
3076
3145
|
name,
|
|
@@ -3409,10 +3478,10 @@ const VDialogTransition = genericComponent()({
|
|
|
3409
3478
|
async onLeave(el, done) {
|
|
3410
3479
|
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
3411
3480
|
let dimensions;
|
|
3412
|
-
if (!Array.isArray(props.target)
|
|
3413
|
-
dimensions = saved.get(el);
|
|
3414
|
-
} else {
|
|
3481
|
+
if (!saved.has(el) || Array.isArray(props.target) || props.target.offsetParent || props.target.getClientRects().length) {
|
|
3415
3482
|
dimensions = getDimensions(props.target, el);
|
|
3483
|
+
} else {
|
|
3484
|
+
dimensions = saved.get(el);
|
|
3416
3485
|
}
|
|
3417
3486
|
const {
|
|
3418
3487
|
x,
|
|
@@ -4617,9 +4686,15 @@ function useVariant(props) {
|
|
|
4617
4686
|
};
|
|
4618
4687
|
}
|
|
4619
4688
|
|
|
4689
|
+
// Types
|
|
4690
|
+
|
|
4620
4691
|
const makeVBtnGroupProps = propsFactory({
|
|
4621
4692
|
baseColor: String,
|
|
4622
4693
|
divided: Boolean,
|
|
4694
|
+
direction: {
|
|
4695
|
+
type: String,
|
|
4696
|
+
default: 'horizontal'
|
|
4697
|
+
},
|
|
4623
4698
|
...makeBorderProps(),
|
|
4624
4699
|
...makeComponentProps(),
|
|
4625
4700
|
...makeDensityProps(),
|
|
@@ -4653,7 +4728,7 @@ const VBtnGroup = genericComponent()({
|
|
|
4653
4728
|
} = useRounded(props);
|
|
4654
4729
|
provideDefaults({
|
|
4655
4730
|
VBtn: {
|
|
4656
|
-
height: 'auto',
|
|
4731
|
+
height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
|
4657
4732
|
baseColor: toRef(() => props.baseColor),
|
|
4658
4733
|
color: toRef(() => props.color),
|
|
4659
4734
|
density: toRef(() => props.density),
|
|
@@ -4663,7 +4738,7 @@ const VBtnGroup = genericComponent()({
|
|
|
4663
4738
|
});
|
|
4664
4739
|
useRender(() => {
|
|
4665
4740
|
return createVNode(props.tag, {
|
|
4666
|
-
"class": ['v-btn-group', {
|
|
4741
|
+
"class": ['v-btn-group', `v-btn-group--${props.direction}`, {
|
|
4667
4742
|
'v-btn-group--divided': props.divided
|
|
4668
4743
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
|
4669
4744
|
"style": props.style
|
|
@@ -6142,6 +6217,31 @@ const VAppBarTitle = genericComponent()({
|
|
|
6142
6217
|
// Utilities
|
|
6143
6218
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
|
6144
6219
|
|
|
6220
|
+
// Utilities
|
|
6221
|
+
|
|
6222
|
+
// Types
|
|
6223
|
+
|
|
6224
|
+
// Types
|
|
6225
|
+
|
|
6226
|
+
// Composables
|
|
6227
|
+
const makeIconSizeProps = propsFactory({
|
|
6228
|
+
iconSize: [Number, String],
|
|
6229
|
+
iconSizes: {
|
|
6230
|
+
type: Array,
|
|
6231
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
|
6232
|
+
}
|
|
6233
|
+
}, 'iconSize');
|
|
6234
|
+
function useIconSizes(props, fallback) {
|
|
6235
|
+
const iconSize = computed(() => {
|
|
6236
|
+
const iconSizeMap = new Map(props.iconSizes);
|
|
6237
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
|
6238
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
|
6239
|
+
});
|
|
6240
|
+
return {
|
|
6241
|
+
iconSize
|
|
6242
|
+
};
|
|
6243
|
+
}
|
|
6244
|
+
|
|
6145
6245
|
// Types
|
|
6146
6246
|
|
|
6147
6247
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
|
@@ -6181,6 +6281,7 @@ const makeVAlertProps = propsFactory({
|
|
|
6181
6281
|
...makeDensityProps(),
|
|
6182
6282
|
...makeDimensionProps(),
|
|
6183
6283
|
...makeElevationProps(),
|
|
6284
|
+
...makeIconSizeProps(),
|
|
6184
6285
|
...makeLocationProps(),
|
|
6185
6286
|
...makePositionProps(),
|
|
6186
6287
|
...makeRoundedProps(),
|
|
@@ -6208,6 +6309,9 @@ const VAlert = genericComponent()({
|
|
|
6208
6309
|
if (!props.type) return props.icon;
|
|
6209
6310
|
return props.icon ?? `$${props.type}`;
|
|
6210
6311
|
});
|
|
6312
|
+
const {
|
|
6313
|
+
iconSize
|
|
6314
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
|
6211
6315
|
const {
|
|
6212
6316
|
themeClasses
|
|
6213
6317
|
} = provideTheme(props);
|
|
@@ -6255,6 +6359,11 @@ const VAlert = genericComponent()({
|
|
|
6255
6359
|
const hasPrepend = !!(slots.prepend || icon.value);
|
|
6256
6360
|
const hasTitle = !!(slots.title || props.title);
|
|
6257
6361
|
const hasClose = !!(slots.close || props.closable);
|
|
6362
|
+
const iconProps = {
|
|
6363
|
+
density: props.density,
|
|
6364
|
+
icon: icon.value,
|
|
6365
|
+
size: iconSize.value
|
|
6366
|
+
};
|
|
6258
6367
|
return isActive.value && createVNode(props.tag, {
|
|
6259
6368
|
"class": ['v-alert', props.border && {
|
|
6260
6369
|
'v-alert--border': !!props.border,
|
|
@@ -6272,19 +6381,14 @@ const VAlert = genericComponent()({
|
|
|
6272
6381
|
}, null), hasPrepend && createVNode("div", {
|
|
6273
6382
|
"key": "prepend",
|
|
6274
6383
|
"class": "v-alert__prepend"
|
|
6275
|
-
}, [!slots.prepend ? createVNode(VIcon, {
|
|
6276
|
-
"key": "prepend-icon"
|
|
6277
|
-
|
|
6278
|
-
"icon": icon.value,
|
|
6279
|
-
"size": props.prominent ? 44 : 28
|
|
6280
|
-
}, null) : createVNode(VDefaultsProvider, {
|
|
6384
|
+
}, [!slots.prepend ? createVNode(VIcon, mergeProps({
|
|
6385
|
+
"key": "prepend-icon"
|
|
6386
|
+
}, iconProps), null) : createVNode(VDefaultsProvider, {
|
|
6281
6387
|
"key": "prepend-defaults",
|
|
6282
6388
|
"disabled": !icon.value,
|
|
6283
6389
|
"defaults": {
|
|
6284
6390
|
VIcon: {
|
|
6285
|
-
|
|
6286
|
-
icon: icon.value,
|
|
6287
|
-
size: props.prominent ? 44 : 28
|
|
6391
|
+
...iconProps
|
|
6288
6392
|
}
|
|
6289
6393
|
}
|
|
6290
6394
|
}, slots.prepend)]), createVNode("div", {
|
|
@@ -10442,7 +10546,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
10442
10546
|
observe = false;
|
|
10443
10547
|
requestAnimationFrame(() => observe = true);
|
|
10444
10548
|
if (!data.target.value || !data.contentEl.value) return;
|
|
10445
|
-
if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
|
|
10549
|
+
if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {
|
|
10446
10550
|
targetBox = getTargetBox(data.target.value);
|
|
10447
10551
|
} // Otherwise target element is hidden, use last known value
|
|
10448
10552
|
|
|
@@ -12630,7 +12734,12 @@ function useVirtual(props, items) {
|
|
|
12630
12734
|
}
|
|
12631
12735
|
function calculateOffset(index) {
|
|
12632
12736
|
index = clamp(index, 0, items.value.length - 1);
|
|
12633
|
-
|
|
12737
|
+
const whole = Math.floor(index);
|
|
12738
|
+
const fraction = index % 1;
|
|
12739
|
+
const next = whole + 1;
|
|
12740
|
+
const wholeOffset = offsets[whole] || 0;
|
|
12741
|
+
const nextOffset = offsets[next] || wholeOffset;
|
|
12742
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
|
12634
12743
|
}
|
|
12635
12744
|
function calculateIndex(scrollTop) {
|
|
12636
12745
|
return binaryClosest(offsets, scrollTop);
|
|
@@ -13780,6 +13889,11 @@ const VAutocomplete = genericComponent()({
|
|
|
13780
13889
|
menu.value = true;
|
|
13781
13890
|
}
|
|
13782
13891
|
});
|
|
13892
|
+
watch(model, value => {
|
|
13893
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
13894
|
+
search.value = value[0]?.title ?? '';
|
|
13895
|
+
}
|
|
13896
|
+
});
|
|
13783
13897
|
useRender(() => {
|
|
13784
13898
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
13785
13899
|
const isDirty = model.value.length > 0;
|
|
@@ -20607,7 +20721,6 @@ const VDataTableHeaders = genericComponent()({
|
|
|
20607
20721
|
});
|
|
20608
20722
|
};
|
|
20609
20723
|
const VDataTableMobileHeaderCell = () => {
|
|
20610
|
-
const headerProps = mergeProps(props.headerProps ?? {} ?? {});
|
|
20611
20724
|
const displayItems = computed(() => {
|
|
20612
20725
|
return columns.value.filter(column => column?.sortable && !props.disableSort);
|
|
20613
20726
|
});
|
|
@@ -20620,7 +20733,7 @@ const VDataTableHeaders = genericComponent()({
|
|
|
20620
20733
|
"tag": "th",
|
|
20621
20734
|
"class": [...headerCellClasses.value],
|
|
20622
20735
|
"colspan": headers.value.length + 1
|
|
20623
|
-
}, headerProps), {
|
|
20736
|
+
}, props.headerProps), {
|
|
20624
20737
|
default: () => [createVNode("div", {
|
|
20625
20738
|
"class": "v-data-table-header__content"
|
|
20626
20739
|
}, [createVNode(VSelect, {
|
|
@@ -23543,6 +23656,7 @@ const VFileInput = genericComponent()({
|
|
|
23543
23656
|
const inputRef = ref();
|
|
23544
23657
|
const isActive = toRef(() => isFocused.value || props.active);
|
|
23545
23658
|
const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
23659
|
+
const isDragging = shallowRef(false);
|
|
23546
23660
|
function onFocus() {
|
|
23547
23661
|
if (inputRef.value !== document.activeElement) {
|
|
23548
23662
|
inputRef.value?.focus();
|
|
@@ -23569,11 +23683,26 @@ const VFileInput = genericComponent()({
|
|
|
23569
23683
|
}
|
|
23570
23684
|
function onDragover(e) {
|
|
23571
23685
|
e.preventDefault();
|
|
23686
|
+
e.stopImmediatePropagation();
|
|
23687
|
+
isDragging.value = true;
|
|
23688
|
+
}
|
|
23689
|
+
function onDragleave(e) {
|
|
23690
|
+
e.preventDefault();
|
|
23691
|
+
isDragging.value = false;
|
|
23572
23692
|
}
|
|
23573
23693
|
function onDrop(e) {
|
|
23574
23694
|
e.preventDefault();
|
|
23575
|
-
|
|
23576
|
-
|
|
23695
|
+
e.stopImmediatePropagation();
|
|
23696
|
+
isDragging.value = false;
|
|
23697
|
+
if (!e.dataTransfer?.files?.length || !inputRef.value) return;
|
|
23698
|
+
const dataTransfer = new DataTransfer();
|
|
23699
|
+
for (const file of e.dataTransfer.files) {
|
|
23700
|
+
dataTransfer.items.add(file);
|
|
23701
|
+
}
|
|
23702
|
+
inputRef.value.files = dataTransfer.files;
|
|
23703
|
+
inputRef.value.dispatchEvent(new Event('change', {
|
|
23704
|
+
bubbles: true
|
|
23705
|
+
}));
|
|
23577
23706
|
}
|
|
23578
23707
|
watch(model, newValue => {
|
|
23579
23708
|
const hasModelReset = !Array.isArray(newValue) || !newValue.length;
|
|
@@ -23595,6 +23724,7 @@ const VFileInput = genericComponent()({
|
|
|
23595
23724
|
"modelValue": props.multiple ? model.value : model.value[0],
|
|
23596
23725
|
"class": ['v-file-input', {
|
|
23597
23726
|
'v-file-input--chips': !!props.chips,
|
|
23727
|
+
'v-file-input--dragging': isDragging.value,
|
|
23598
23728
|
'v-file-input--hide': props.hideInput,
|
|
23599
23729
|
'v-input--plain-underlined': isPlainOrUnderlined.value
|
|
23600
23730
|
}, props.class],
|
|
@@ -23656,6 +23786,7 @@ const VFileInput = genericComponent()({
|
|
|
23656
23786
|
const target = e.target;
|
|
23657
23787
|
model.value = [...(target.files ?? [])];
|
|
23658
23788
|
},
|
|
23789
|
+
"onDragleave": onDragleave,
|
|
23659
23790
|
"onFocus": onFocus,
|
|
23660
23791
|
"onBlur": blur
|
|
23661
23792
|
}, slotProps, inputAttrs), null), createVNode("div", {
|
|
@@ -29216,7 +29347,7 @@ function createVuetify$1() {
|
|
|
29216
29347
|
};
|
|
29217
29348
|
});
|
|
29218
29349
|
}
|
|
29219
|
-
const version$1 = "3.8.
|
|
29350
|
+
const version$1 = "3.8.4-dev.2025-05-13";
|
|
29220
29351
|
createVuetify$1.version = version$1;
|
|
29221
29352
|
|
|
29222
29353
|
// Vue's inject() can only be used in setup
|
|
@@ -29241,7 +29372,7 @@ const createVuetify = function () {
|
|
|
29241
29372
|
...options
|
|
29242
29373
|
});
|
|
29243
29374
|
};
|
|
29244
|
-
const version = "3.8.
|
|
29375
|
+
const version = "3.8.4-dev.2025-05-13";
|
|
29245
29376
|
createVuetify.version = version;
|
|
29246
29377
|
|
|
29247
29378
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|