@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.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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
|
*/
|
|
@@ -14,6 +14,7 @@
|
|
|
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';
|
|
17
18
|
|
|
18
19
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
|
19
20
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
|
@@ -2785,6 +2786,7 @@
|
|
|
2785
2786
|
function genDefaults$1() {
|
|
2786
2787
|
return {
|
|
2787
2788
|
defaultTheme: 'light',
|
|
2789
|
+
prefix: 'v-',
|
|
2788
2790
|
variations: {
|
|
2789
2791
|
colors: [],
|
|
2790
2792
|
lighten: 0,
|
|
@@ -2866,7 +2868,10 @@
|
|
|
2866
2868
|
}
|
|
2867
2869
|
}
|
|
2868
2870
|
},
|
|
2869
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
|
2871
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
|
2872
|
+
scoped: false,
|
|
2873
|
+
unimportant: false,
|
|
2874
|
+
utilities: true
|
|
2870
2875
|
};
|
|
2871
2876
|
}
|
|
2872
2877
|
function parseThemeOptions() {
|
|
@@ -2889,21 +2894,21 @@
|
|
|
2889
2894
|
function createCssClass(lines, selector, content, scope) {
|
|
2890
2895
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
|
2891
2896
|
}
|
|
2892
|
-
function genCssVariables(theme) {
|
|
2897
|
+
function genCssVariables(theme, prefix) {
|
|
2893
2898
|
const lightOverlay = theme.dark ? 2 : 1;
|
|
2894
2899
|
const darkOverlay = theme.dark ? 1 : 2;
|
|
2895
2900
|
const variables = [];
|
|
2896
2901
|
for (const [key, value] of Object.entries(theme.colors)) {
|
|
2897
2902
|
const rgb = parseColor(value);
|
|
2898
|
-
variables.push(
|
|
2903
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
|
2899
2904
|
if (!key.startsWith('on-')) {
|
|
2900
|
-
variables.push(
|
|
2905
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
|
2901
2906
|
}
|
|
2902
2907
|
}
|
|
2903
2908
|
for (const [key, value] of Object.entries(theme.variables)) {
|
|
2904
2909
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
|
2905
2910
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
2906
|
-
variables.push(
|
|
2911
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
|
2907
2912
|
}
|
|
2908
2913
|
return variables;
|
|
2909
2914
|
}
|
|
@@ -2947,7 +2952,8 @@
|
|
|
2947
2952
|
const scopeSelector = `:where(${scope})`;
|
|
2948
2953
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
|
2949
2954
|
}
|
|
2950
|
-
function upsertStyles(
|
|
2955
|
+
function upsertStyles(id, cspNonce, styles) {
|
|
2956
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
|
2951
2957
|
if (!styleEl) return;
|
|
2952
2958
|
styleEl.innerHTML = styles;
|
|
2953
2959
|
}
|
|
@@ -2967,8 +2973,17 @@
|
|
|
2967
2973
|
// Composables
|
|
2968
2974
|
function createTheme(options) {
|
|
2969
2975
|
const parsedOptions = parseThemeOptions(options);
|
|
2970
|
-
const
|
|
2976
|
+
const _name = vue.shallowRef(parsedOptions.defaultTheme);
|
|
2971
2977
|
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
|
+
});
|
|
2972
2987
|
const computedThemes = vue.computed(() => {
|
|
2973
2988
|
const acc = {};
|
|
2974
2989
|
for (const [name, original] of Object.entries(themes.value)) {
|
|
@@ -2989,28 +3004,49 @@
|
|
|
2989
3004
|
const current = vue.toRef(() => computedThemes.value[name.value]);
|
|
2990
3005
|
const styles = vue.computed(() => {
|
|
2991
3006
|
const lines = [];
|
|
3007
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
|
3008
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
|
2992
3009
|
if (current.value?.dark) {
|
|
2993
3010
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
|
2994
3011
|
}
|
|
2995
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
|
3012
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
|
2996
3013
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
|
2997
|
-
createCssClass(lines,
|
|
2998
|
-
}
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
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
|
+
}
|
|
3009
3028
|
}
|
|
3029
|
+
lines.push(...bgLines, ...fgLines);
|
|
3010
3030
|
}
|
|
3011
|
-
lines.push(...bgLines, ...fgLines);
|
|
3012
3031
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
|
3013
3032
|
});
|
|
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
|
+
}
|
|
3014
3050
|
function install(app) {
|
|
3015
3051
|
if (parsedOptions.isDisabled) return;
|
|
3016
3052
|
const head = app._context.provides.usehead;
|
|
@@ -3048,22 +3084,55 @@
|
|
|
3048
3084
|
updateStyles();
|
|
3049
3085
|
}
|
|
3050
3086
|
function updateStyles() {
|
|
3051
|
-
upsertStyles(
|
|
3087
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
|
3052
3088
|
}
|
|
3053
3089
|
}
|
|
3054
3090
|
}
|
|
3055
|
-
|
|
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
|
+
});
|
|
3056
3121
|
return {
|
|
3057
3122
|
install,
|
|
3123
|
+
change,
|
|
3124
|
+
cycle,
|
|
3125
|
+
toggle,
|
|
3058
3126
|
isDisabled: parsedOptions.isDisabled,
|
|
3059
3127
|
name,
|
|
3060
3128
|
themes,
|
|
3061
3129
|
current,
|
|
3062
3130
|
computedThemes,
|
|
3131
|
+
prefix: parsedOptions.prefix,
|
|
3063
3132
|
themeClasses,
|
|
3064
3133
|
styles,
|
|
3065
3134
|
global: {
|
|
3066
|
-
name,
|
|
3135
|
+
name: globalName,
|
|
3067
3136
|
current
|
|
3068
3137
|
}
|
|
3069
3138
|
};
|
|
@@ -3074,7 +3143,7 @@
|
|
|
3074
3143
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
|
3075
3144
|
const name = vue.toRef(() => props.theme ?? theme.name.value);
|
|
3076
3145
|
const current = vue.toRef(() => theme.themes.value[name.value]);
|
|
3077
|
-
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined :
|
|
3146
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
|
3078
3147
|
const newTheme = {
|
|
3079
3148
|
...theme,
|
|
3080
3149
|
name,
|
|
@@ -3413,10 +3482,10 @@
|
|
|
3413
3482
|
async onLeave(el, done) {
|
|
3414
3483
|
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
3415
3484
|
let dimensions;
|
|
3416
|
-
if (!Array.isArray(props.target)
|
|
3417
|
-
dimensions = saved.get(el);
|
|
3418
|
-
} else {
|
|
3485
|
+
if (!saved.has(el) || Array.isArray(props.target) || props.target.offsetParent || props.target.getClientRects().length) {
|
|
3419
3486
|
dimensions = getDimensions(props.target, el);
|
|
3487
|
+
} else {
|
|
3488
|
+
dimensions = saved.get(el);
|
|
3420
3489
|
}
|
|
3421
3490
|
const {
|
|
3422
3491
|
x,
|
|
@@ -4621,9 +4690,15 @@
|
|
|
4621
4690
|
};
|
|
4622
4691
|
}
|
|
4623
4692
|
|
|
4693
|
+
// Types
|
|
4694
|
+
|
|
4624
4695
|
const makeVBtnGroupProps = propsFactory({
|
|
4625
4696
|
baseColor: String,
|
|
4626
4697
|
divided: Boolean,
|
|
4698
|
+
direction: {
|
|
4699
|
+
type: String,
|
|
4700
|
+
default: 'horizontal'
|
|
4701
|
+
},
|
|
4627
4702
|
...makeBorderProps(),
|
|
4628
4703
|
...makeComponentProps(),
|
|
4629
4704
|
...makeDensityProps(),
|
|
@@ -4657,7 +4732,7 @@
|
|
|
4657
4732
|
} = useRounded(props);
|
|
4658
4733
|
provideDefaults({
|
|
4659
4734
|
VBtn: {
|
|
4660
|
-
height: 'auto',
|
|
4735
|
+
height: vue.toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
|
4661
4736
|
baseColor: vue.toRef(() => props.baseColor),
|
|
4662
4737
|
color: vue.toRef(() => props.color),
|
|
4663
4738
|
density: vue.toRef(() => props.density),
|
|
@@ -4667,7 +4742,7 @@
|
|
|
4667
4742
|
});
|
|
4668
4743
|
useRender(() => {
|
|
4669
4744
|
return vue.createVNode(props.tag, {
|
|
4670
|
-
"class": ['v-btn-group', {
|
|
4745
|
+
"class": ['v-btn-group', `v-btn-group--${props.direction}`, {
|
|
4671
4746
|
'v-btn-group--divided': props.divided
|
|
4672
4747
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
|
4673
4748
|
"style": props.style
|
|
@@ -6146,6 +6221,31 @@
|
|
|
6146
6221
|
// Utilities
|
|
6147
6222
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
|
6148
6223
|
|
|
6224
|
+
// Utilities
|
|
6225
|
+
|
|
6226
|
+
// Types
|
|
6227
|
+
|
|
6228
|
+
// Types
|
|
6229
|
+
|
|
6230
|
+
// Composables
|
|
6231
|
+
const makeIconSizeProps = propsFactory({
|
|
6232
|
+
iconSize: [Number, String],
|
|
6233
|
+
iconSizes: {
|
|
6234
|
+
type: Array,
|
|
6235
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
|
6236
|
+
}
|
|
6237
|
+
}, 'iconSize');
|
|
6238
|
+
function useIconSizes(props, fallback) {
|
|
6239
|
+
const iconSize = vue.computed(() => {
|
|
6240
|
+
const iconSizeMap = new Map(props.iconSizes);
|
|
6241
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
|
6242
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
|
6243
|
+
});
|
|
6244
|
+
return {
|
|
6245
|
+
iconSize
|
|
6246
|
+
};
|
|
6247
|
+
}
|
|
6248
|
+
|
|
6149
6249
|
// Types
|
|
6150
6250
|
|
|
6151
6251
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
|
@@ -6185,6 +6285,7 @@
|
|
|
6185
6285
|
...makeDensityProps(),
|
|
6186
6286
|
...makeDimensionProps(),
|
|
6187
6287
|
...makeElevationProps(),
|
|
6288
|
+
...makeIconSizeProps(),
|
|
6188
6289
|
...makeLocationProps(),
|
|
6189
6290
|
...makePositionProps(),
|
|
6190
6291
|
...makeRoundedProps(),
|
|
@@ -6212,6 +6313,9 @@
|
|
|
6212
6313
|
if (!props.type) return props.icon;
|
|
6213
6314
|
return props.icon ?? `$${props.type}`;
|
|
6214
6315
|
});
|
|
6316
|
+
const {
|
|
6317
|
+
iconSize
|
|
6318
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
|
6215
6319
|
const {
|
|
6216
6320
|
themeClasses
|
|
6217
6321
|
} = provideTheme(props);
|
|
@@ -6259,6 +6363,11 @@
|
|
|
6259
6363
|
const hasPrepend = !!(slots.prepend || icon.value);
|
|
6260
6364
|
const hasTitle = !!(slots.title || props.title);
|
|
6261
6365
|
const hasClose = !!(slots.close || props.closable);
|
|
6366
|
+
const iconProps = {
|
|
6367
|
+
density: props.density,
|
|
6368
|
+
icon: icon.value,
|
|
6369
|
+
size: iconSize.value
|
|
6370
|
+
};
|
|
6262
6371
|
return isActive.value && vue.createVNode(props.tag, {
|
|
6263
6372
|
"class": ['v-alert', props.border && {
|
|
6264
6373
|
'v-alert--border': !!props.border,
|
|
@@ -6276,19 +6385,14 @@
|
|
|
6276
6385
|
}, null), hasPrepend && vue.createVNode("div", {
|
|
6277
6386
|
"key": "prepend",
|
|
6278
6387
|
"class": "v-alert__prepend"
|
|
6279
|
-
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
|
6280
|
-
"key": "prepend-icon"
|
|
6281
|
-
|
|
6282
|
-
"icon": icon.value,
|
|
6283
|
-
"size": props.prominent ? 44 : 28
|
|
6284
|
-
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
6388
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, vue.mergeProps({
|
|
6389
|
+
"key": "prepend-icon"
|
|
6390
|
+
}, iconProps), null) : vue.createVNode(VDefaultsProvider, {
|
|
6285
6391
|
"key": "prepend-defaults",
|
|
6286
6392
|
"disabled": !icon.value,
|
|
6287
6393
|
"defaults": {
|
|
6288
6394
|
VIcon: {
|
|
6289
|
-
|
|
6290
|
-
icon: icon.value,
|
|
6291
|
-
size: props.prominent ? 44 : 28
|
|
6395
|
+
...iconProps
|
|
6292
6396
|
}
|
|
6293
6397
|
}
|
|
6294
6398
|
}, slots.prepend)]), vue.createVNode("div", {
|
|
@@ -10446,7 +10550,7 @@
|
|
|
10446
10550
|
observe = false;
|
|
10447
10551
|
requestAnimationFrame(() => observe = true);
|
|
10448
10552
|
if (!data.target.value || !data.contentEl.value) return;
|
|
10449
|
-
if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
|
|
10553
|
+
if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {
|
|
10450
10554
|
targetBox = getTargetBox(data.target.value);
|
|
10451
10555
|
} // Otherwise target element is hidden, use last known value
|
|
10452
10556
|
|
|
@@ -12634,7 +12738,12 @@
|
|
|
12634
12738
|
}
|
|
12635
12739
|
function calculateOffset(index) {
|
|
12636
12740
|
index = clamp(index, 0, items.value.length - 1);
|
|
12637
|
-
|
|
12741
|
+
const whole = Math.floor(index);
|
|
12742
|
+
const fraction = index % 1;
|
|
12743
|
+
const next = whole + 1;
|
|
12744
|
+
const wholeOffset = offsets[whole] || 0;
|
|
12745
|
+
const nextOffset = offsets[next] || wholeOffset;
|
|
12746
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
|
12638
12747
|
}
|
|
12639
12748
|
function calculateIndex(scrollTop) {
|
|
12640
12749
|
return binaryClosest(offsets, scrollTop);
|
|
@@ -13784,6 +13893,11 @@
|
|
|
13784
13893
|
menu.value = true;
|
|
13785
13894
|
}
|
|
13786
13895
|
});
|
|
13896
|
+
vue.watch(model, value => {
|
|
13897
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
13898
|
+
search.value = value[0]?.title ?? '';
|
|
13899
|
+
}
|
|
13900
|
+
});
|
|
13787
13901
|
useRender(() => {
|
|
13788
13902
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
13789
13903
|
const isDirty = model.value.length > 0;
|
|
@@ -20611,7 +20725,6 @@
|
|
|
20611
20725
|
});
|
|
20612
20726
|
};
|
|
20613
20727
|
const VDataTableMobileHeaderCell = () => {
|
|
20614
|
-
const headerProps = vue.mergeProps(props.headerProps ?? {} ?? {});
|
|
20615
20728
|
const displayItems = vue.computed(() => {
|
|
20616
20729
|
return columns.value.filter(column => column?.sortable && !props.disableSort);
|
|
20617
20730
|
});
|
|
@@ -20624,7 +20737,7 @@
|
|
|
20624
20737
|
"tag": "th",
|
|
20625
20738
|
"class": [...headerCellClasses.value],
|
|
20626
20739
|
"colspan": headers.value.length + 1
|
|
20627
|
-
}, headerProps), {
|
|
20740
|
+
}, props.headerProps), {
|
|
20628
20741
|
default: () => [vue.createVNode("div", {
|
|
20629
20742
|
"class": "v-data-table-header__content"
|
|
20630
20743
|
}, [vue.createVNode(VSelect, {
|
|
@@ -23547,6 +23660,7 @@
|
|
|
23547
23660
|
const inputRef = vue.ref();
|
|
23548
23661
|
const isActive = vue.toRef(() => isFocused.value || props.active);
|
|
23549
23662
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
23663
|
+
const isDragging = vue.shallowRef(false);
|
|
23550
23664
|
function onFocus() {
|
|
23551
23665
|
if (inputRef.value !== document.activeElement) {
|
|
23552
23666
|
inputRef.value?.focus();
|
|
@@ -23573,11 +23687,26 @@
|
|
|
23573
23687
|
}
|
|
23574
23688
|
function onDragover(e) {
|
|
23575
23689
|
e.preventDefault();
|
|
23690
|
+
e.stopImmediatePropagation();
|
|
23691
|
+
isDragging.value = true;
|
|
23692
|
+
}
|
|
23693
|
+
function onDragleave(e) {
|
|
23694
|
+
e.preventDefault();
|
|
23695
|
+
isDragging.value = false;
|
|
23576
23696
|
}
|
|
23577
23697
|
function onDrop(e) {
|
|
23578
23698
|
e.preventDefault();
|
|
23579
|
-
|
|
23580
|
-
|
|
23699
|
+
e.stopImmediatePropagation();
|
|
23700
|
+
isDragging.value = false;
|
|
23701
|
+
if (!e.dataTransfer?.files?.length || !inputRef.value) return;
|
|
23702
|
+
const dataTransfer = new DataTransfer();
|
|
23703
|
+
for (const file of e.dataTransfer.files) {
|
|
23704
|
+
dataTransfer.items.add(file);
|
|
23705
|
+
}
|
|
23706
|
+
inputRef.value.files = dataTransfer.files;
|
|
23707
|
+
inputRef.value.dispatchEvent(new Event('change', {
|
|
23708
|
+
bubbles: true
|
|
23709
|
+
}));
|
|
23581
23710
|
}
|
|
23582
23711
|
vue.watch(model, newValue => {
|
|
23583
23712
|
const hasModelReset = !Array.isArray(newValue) || !newValue.length;
|
|
@@ -23599,6 +23728,7 @@
|
|
|
23599
23728
|
"modelValue": props.multiple ? model.value : model.value[0],
|
|
23600
23729
|
"class": ['v-file-input', {
|
|
23601
23730
|
'v-file-input--chips': !!props.chips,
|
|
23731
|
+
'v-file-input--dragging': isDragging.value,
|
|
23602
23732
|
'v-file-input--hide': props.hideInput,
|
|
23603
23733
|
'v-input--plain-underlined': isPlainOrUnderlined.value
|
|
23604
23734
|
}, props.class],
|
|
@@ -23660,6 +23790,7 @@
|
|
|
23660
23790
|
const target = e.target;
|
|
23661
23791
|
model.value = [...(target.files ?? [])];
|
|
23662
23792
|
},
|
|
23793
|
+
"onDragleave": onDragleave,
|
|
23663
23794
|
"onFocus": onFocus,
|
|
23664
23795
|
"onBlur": blur
|
|
23665
23796
|
}, slotProps, inputAttrs), null), vue.createVNode("div", {
|
|
@@ -29220,7 +29351,7 @@
|
|
|
29220
29351
|
};
|
|
29221
29352
|
});
|
|
29222
29353
|
}
|
|
29223
|
-
const version$1 = "3.8.
|
|
29354
|
+
const version$1 = "3.8.4-dev.2025-05-13";
|
|
29224
29355
|
createVuetify$1.version = version$1;
|
|
29225
29356
|
|
|
29226
29357
|
// Vue's inject() can only be used in setup
|
|
@@ -29245,7 +29376,7 @@
|
|
|
29245
29376
|
...options
|
|
29246
29377
|
});
|
|
29247
29378
|
};
|
|
29248
|
-
const version = "3.8.
|
|
29379
|
+
const version = "3.8.4-dev.2025-05-13";
|
|
29249
29380
|
createVuetify.version = version;
|
|
29250
29381
|
|
|
29251
29382
|
exports.blueprints = index;
|