@vuetify/nightly 3.8.6-dev.2025-05-21 → 3.8.6-master.2025-05-22
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 +10 -21
- package/dist/json/attributes.json +3598 -3634
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +184 -184
- package/dist/json/tags.json +0 -9
- package/dist/json/web-types.json +6522 -6697
- package/dist/vuetify-labs.cjs +223 -323
- package/dist/vuetify-labs.css +4050 -4078
- package/dist/vuetify-labs.d.ts +1350 -1508
- package/dist/vuetify-labs.esm.js +224 -324
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +223 -323
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +212 -317
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3022 -3050
- package/dist/vuetify.d.ts +517 -667
- package/dist/vuetify.esm.js +213 -318
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +212 -317
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1195 -1200
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +1 -6
- package/lib/components/VAlert/VAlert.d.ts +0 -35
- package/lib/components/VAlert/VAlert.js +9 -14
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +1 -7
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +96 -120
- package/lib/components/VAutocomplete/VAutocomplete.js +1 -18
- package/lib/components/VAutocomplete/VAutocomplete.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/VCheckbox/VCheckbox.d.ts +3 -3
- package/lib/components/VCombobox/VCombobox.d.ts +96 -120
- package/lib/components/VCombobox/VCombobox.js +1 -19
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +0 -10
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +0 -10
- package/lib/components/VDatePicker/VDatePickerMonth.js +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VNavigationDrawer/touch.js +2 -4
- package/lib/components/VNavigationDrawer/touch.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +89 -103
- package/lib/components/VNumberInput/VNumberInput.js +22 -29
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/locationStrategies.js +16 -8
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.js +2 -2
- package/lib/components/VProgressCircular/VProgressCircular.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 +96 -120
- package/lib/components/VSelect/VSelect.js +37 -25
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSlider/slider.js +1 -1
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.d.ts +3 -3
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- package/lib/composables/calendar.d.ts +0 -6
- package/lib/composables/calendar.js +1 -2
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/DateAdapter.d.ts +1 -1
- package/lib/composables/date/DateAdapter.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.d.ts +1 -1
- package/lib/composables/date/adapters/vuetify.js +4 -4
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +1 -1
- package/lib/composables/date/index.d.ts +0 -1
- package/lib/composables/date/index.js +0 -1
- package/lib/composables/date/index.js.map +1 -1
- package/lib/composables/filter.js +0 -3
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/goto.js +1 -1
- package/lib/composables/goto.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.d.ts +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +67 -72
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +0 -10
- package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +87 -97
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
- package/lib/labs/VIconBtn/VIconBtn.js +11 -7
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/entry-bundler.d.ts +1 -1
- package/lib/util/box.d.ts +1 -0
- package/lib/util/box.js +27 -0
- package/lib/util/box.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 +5 -7
- package/lib/composables/iconSizes.d.ts +0 -28
- package/lib/composables/iconSizes.js +0 -23
- package/lib/composables/iconSizes.js.map +0 -1
package/dist/vuetify.esm.js
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.6-
|
2
|
+
* Vuetify v3.8.6-master.2025-05-22
|
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,
|
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';
|
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';
|
14
13
|
|
15
14
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
16
15
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -615,6 +614,33 @@ function getTargetBox(target) {
|
|
615
614
|
return target.getBoundingClientRect();
|
616
615
|
}
|
617
616
|
}
|
617
|
+
function getElementBox(el) {
|
618
|
+
if (el === document.documentElement) {
|
619
|
+
if (!visualViewport) {
|
620
|
+
return new Box({
|
621
|
+
x: 0,
|
622
|
+
y: 0,
|
623
|
+
width: document.documentElement.clientWidth,
|
624
|
+
height: document.documentElement.clientHeight
|
625
|
+
});
|
626
|
+
} else {
|
627
|
+
return new Box({
|
628
|
+
x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
|
629
|
+
y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
|
630
|
+
width: visualViewport.width * visualViewport.scale,
|
631
|
+
height: visualViewport.height * visualViewport.scale
|
632
|
+
});
|
633
|
+
}
|
634
|
+
} else {
|
635
|
+
const rect = el.getBoundingClientRect();
|
636
|
+
return new Box({
|
637
|
+
x: rect.x,
|
638
|
+
y: rect.y,
|
639
|
+
width: el.clientWidth,
|
640
|
+
height: el.clientHeight
|
641
|
+
});
|
642
|
+
}
|
643
|
+
}
|
618
644
|
|
619
645
|
// Utilities
|
620
646
|
|
@@ -2783,7 +2809,6 @@ const makeThemeProps = propsFactory({
|
|
2783
2809
|
function genDefaults$1() {
|
2784
2810
|
return {
|
2785
2811
|
defaultTheme: 'light',
|
2786
|
-
prefix: 'v-',
|
2787
2812
|
variations: {
|
2788
2813
|
colors: [],
|
2789
2814
|
lighten: 0,
|
@@ -2865,10 +2890,7 @@ function genDefaults$1() {
|
|
2865
2890
|
}
|
2866
2891
|
}
|
2867
2892
|
},
|
2868
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2869
|
-
scoped: false,
|
2870
|
-
unimportant: false,
|
2871
|
-
utilities: true
|
2893
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2872
2894
|
};
|
2873
2895
|
}
|
2874
2896
|
function parseThemeOptions() {
|
@@ -2891,21 +2913,21 @@ function parseThemeOptions() {
|
|
2891
2913
|
function createCssClass(lines, selector, content, scope) {
|
2892
2914
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2893
2915
|
}
|
2894
|
-
function genCssVariables(theme
|
2916
|
+
function genCssVariables(theme) {
|
2895
2917
|
const lightOverlay = theme.dark ? 2 : 1;
|
2896
2918
|
const darkOverlay = theme.dark ? 1 : 2;
|
2897
2919
|
const variables = [];
|
2898
2920
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2899
2921
|
const rgb = parseColor(value);
|
2900
|
-
variables.push(
|
2922
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2901
2923
|
if (!key.startsWith('on-')) {
|
2902
|
-
variables.push(
|
2924
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2903
2925
|
}
|
2904
2926
|
}
|
2905
2927
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2906
2928
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2907
2929
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2908
|
-
variables.push(
|
2930
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2909
2931
|
}
|
2910
2932
|
return variables;
|
2911
2933
|
}
|
@@ -2949,8 +2971,7 @@ function getScopedSelector(selector, scope) {
|
|
2949
2971
|
const scopeSelector = `:where(${scope})`;
|
2950
2972
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2951
2973
|
}
|
2952
|
-
function upsertStyles(
|
2953
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2974
|
+
function upsertStyles(styleEl, styles) {
|
2954
2975
|
if (!styleEl) return;
|
2955
2976
|
styleEl.innerHTML = styles;
|
2956
2977
|
}
|
@@ -2970,17 +2991,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2970
2991
|
// Composables
|
2971
2992
|
function createTheme(options) {
|
2972
2993
|
const parsedOptions = parseThemeOptions(options);
|
2973
|
-
const
|
2994
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
2974
2995
|
const themes = ref(parsedOptions.themes);
|
2975
|
-
const systemName = shallowRef('light');
|
2976
|
-
const name = computed({
|
2977
|
-
get() {
|
2978
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
2979
|
-
},
|
2980
|
-
set(val) {
|
2981
|
-
_name.value = val;
|
2982
|
-
}
|
2983
|
-
});
|
2984
2996
|
const computedThemes = computed(() => {
|
2985
2997
|
const acc = {};
|
2986
2998
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3001,49 +3013,28 @@ function createTheme(options) {
|
|
3001
3013
|
const current = toRef(() => computedThemes.value[name.value]);
|
3002
3014
|
const styles = computed(() => {
|
3003
3015
|
const lines = [];
|
3004
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
3005
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3006
3016
|
if (current.value?.dark) {
|
3007
3017
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3008
3018
|
}
|
3009
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
3019
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3010
3020
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3011
|
-
createCssClass(lines,
|
3012
|
-
}
|
3013
|
-
|
3014
|
-
|
3015
|
-
|
3016
|
-
|
3017
|
-
|
3018
|
-
|
3019
|
-
|
3020
|
-
}
|
3021
|
-
|
3022
|
-
|
3023
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3024
|
-
}
|
3021
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
3022
|
+
}
|
3023
|
+
const bgLines = [];
|
3024
|
+
const fgLines = [];
|
3025
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3026
|
+
for (const key of colors) {
|
3027
|
+
if (key.startsWith('on-')) {
|
3028
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3029
|
+
} else {
|
3030
|
+
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);
|
3031
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3032
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
3025
3033
|
}
|
3026
|
-
lines.push(...bgLines, ...fgLines);
|
3027
3034
|
}
|
3035
|
+
lines.push(...bgLines, ...fgLines);
|
3028
3036
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3029
3037
|
});
|
3030
|
-
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3031
|
-
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
3032
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
3033
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3034
|
-
function updateSystemName() {
|
3035
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
3036
|
-
}
|
3037
|
-
updateSystemName();
|
3038
|
-
media.addEventListener('change', updateSystemName, {
|
3039
|
-
passive: true
|
3040
|
-
});
|
3041
|
-
if (getCurrentScope()) {
|
3042
|
-
onScopeDispose(() => {
|
3043
|
-
media.removeEventListener('change', updateSystemName);
|
3044
|
-
});
|
3045
|
-
}
|
3046
|
-
}
|
3047
3038
|
function install(app) {
|
3048
3039
|
if (parsedOptions.isDisabled) return;
|
3049
3040
|
const head = app._context.provides.usehead;
|
@@ -3081,55 +3072,22 @@ function createTheme(options) {
|
|
3081
3072
|
updateStyles();
|
3082
3073
|
}
|
3083
3074
|
function updateStyles() {
|
3084
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3075
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
3085
3076
|
}
|
3086
3077
|
}
|
3087
3078
|
}
|
3088
|
-
|
3089
|
-
if (!themeNames.value.includes(themeName)) {
|
3090
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3091
|
-
return;
|
3092
|
-
}
|
3093
|
-
name.value = themeName;
|
3094
|
-
}
|
3095
|
-
function cycle() {
|
3096
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3097
|
-
const currentIndex = themeArray.indexOf(name.value);
|
3098
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3099
|
-
change(themeArray[nextIndex]);
|
3100
|
-
}
|
3101
|
-
function toggle() {
|
3102
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3103
|
-
cycle(themeArray);
|
3104
|
-
}
|
3105
|
-
const globalName = new Proxy(name, {
|
3106
|
-
get(target, prop) {
|
3107
|
-
return target[prop];
|
3108
|
-
},
|
3109
|
-
set(target, prop, val) {
|
3110
|
-
if (prop === 'value') {
|
3111
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3112
|
-
}
|
3113
|
-
// @ts-expect-error
|
3114
|
-
target[prop] = val;
|
3115
|
-
return true;
|
3116
|
-
}
|
3117
|
-
});
|
3079
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
3118
3080
|
return {
|
3119
3081
|
install,
|
3120
|
-
change,
|
3121
|
-
cycle,
|
3122
|
-
toggle,
|
3123
3082
|
isDisabled: parsedOptions.isDisabled,
|
3124
3083
|
name,
|
3125
3084
|
themes,
|
3126
3085
|
current,
|
3127
3086
|
computedThemes,
|
3128
|
-
prefix: parsedOptions.prefix,
|
3129
3087
|
themeClasses,
|
3130
3088
|
styles,
|
3131
3089
|
global: {
|
3132
|
-
name
|
3090
|
+
name,
|
3133
3091
|
current
|
3134
3092
|
}
|
3135
3093
|
};
|
@@ -3140,7 +3098,7 @@ function provideTheme(props) {
|
|
3140
3098
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3141
3099
|
const name = toRef(() => props.theme ?? theme.name.value);
|
3142
3100
|
const current = toRef(() => theme.themes.value[name.value]);
|
3143
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
3101
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
3144
3102
|
const newTheme = {
|
3145
3103
|
...theme,
|
3146
3104
|
name,
|
@@ -4687,15 +4645,9 @@ function useVariant(props) {
|
|
4687
4645
|
};
|
4688
4646
|
}
|
4689
4647
|
|
4690
|
-
// Types
|
4691
|
-
|
4692
4648
|
const makeVBtnGroupProps = propsFactory({
|
4693
4649
|
baseColor: String,
|
4694
4650
|
divided: Boolean,
|
4695
|
-
direction: {
|
4696
|
-
type: String,
|
4697
|
-
default: 'horizontal'
|
4698
|
-
},
|
4699
4651
|
...makeBorderProps(),
|
4700
4652
|
...makeComponentProps(),
|
4701
4653
|
...makeDensityProps(),
|
@@ -4729,7 +4681,7 @@ const VBtnGroup = genericComponent()({
|
|
4729
4681
|
} = useRounded(props);
|
4730
4682
|
provideDefaults({
|
4731
4683
|
VBtn: {
|
4732
|
-
height:
|
4684
|
+
height: 'auto',
|
4733
4685
|
baseColor: toRef(() => props.baseColor),
|
4734
4686
|
color: toRef(() => props.color),
|
4735
4687
|
density: toRef(() => props.density),
|
@@ -4739,7 +4691,7 @@ const VBtnGroup = genericComponent()({
|
|
4739
4691
|
});
|
4740
4692
|
useRender(() => {
|
4741
4693
|
return createVNode(props.tag, {
|
4742
|
-
"class": ['v-btn-group',
|
4694
|
+
"class": ['v-btn-group', {
|
4743
4695
|
'v-btn-group--divided': props.divided
|
4744
4696
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
4745
4697
|
"style": props.style
|
@@ -5208,7 +5160,7 @@ const VProgressCircular = genericComponent()({
|
|
5208
5160
|
resizeRef,
|
5209
5161
|
contentRect
|
5210
5162
|
} = useResizeObserver();
|
5211
|
-
const normalizedValue = toRef(() =>
|
5163
|
+
const normalizedValue = toRef(() => clamp(parseFloat(props.modelValue), 0, 100));
|
5212
5164
|
const width = toRef(() => Number(props.width));
|
5213
5165
|
const size = toRef(() => {
|
5214
5166
|
// Get size from element if size prop value is small, large etc
|
@@ -6218,31 +6170,6 @@ const VAppBarTitle = genericComponent()({
|
|
6218
6170
|
// Utilities
|
6219
6171
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6220
6172
|
|
6221
|
-
// Utilities
|
6222
|
-
|
6223
|
-
// Types
|
6224
|
-
|
6225
|
-
// Types
|
6226
|
-
|
6227
|
-
// Composables
|
6228
|
-
const makeIconSizeProps = propsFactory({
|
6229
|
-
iconSize: [Number, String],
|
6230
|
-
iconSizes: {
|
6231
|
-
type: Array,
|
6232
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6233
|
-
}
|
6234
|
-
}, 'iconSize');
|
6235
|
-
function useIconSizes(props, fallback) {
|
6236
|
-
const iconSize = computed(() => {
|
6237
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6238
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6239
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6240
|
-
});
|
6241
|
-
return {
|
6242
|
-
iconSize
|
6243
|
-
};
|
6244
|
-
}
|
6245
|
-
|
6246
6173
|
// Types
|
6247
6174
|
|
6248
6175
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6282,7 +6209,6 @@ const makeVAlertProps = propsFactory({
|
|
6282
6209
|
...makeDensityProps(),
|
6283
6210
|
...makeDimensionProps(),
|
6284
6211
|
...makeElevationProps(),
|
6285
|
-
...makeIconSizeProps(),
|
6286
6212
|
...makeLocationProps(),
|
6287
6213
|
...makePositionProps(),
|
6288
6214
|
...makeRoundedProps(),
|
@@ -6310,9 +6236,6 @@ const VAlert = genericComponent()({
|
|
6310
6236
|
if (!props.type) return props.icon;
|
6311
6237
|
return props.icon ?? `$${props.type}`;
|
6312
6238
|
});
|
6313
|
-
const {
|
6314
|
-
iconSize
|
6315
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6316
6239
|
const {
|
6317
6240
|
themeClasses
|
6318
6241
|
} = provideTheme(props);
|
@@ -6360,11 +6283,6 @@ const VAlert = genericComponent()({
|
|
6360
6283
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6361
6284
|
const hasTitle = !!(slots.title || props.title);
|
6362
6285
|
const hasClose = !!(slots.close || props.closable);
|
6363
|
-
const iconProps = {
|
6364
|
-
density: props.density,
|
6365
|
-
icon: icon.value,
|
6366
|
-
size: iconSize.value
|
6367
|
-
};
|
6368
6286
|
return isActive.value && createVNode(props.tag, {
|
6369
6287
|
"class": ['v-alert', props.border && {
|
6370
6288
|
'v-alert--border': !!props.border,
|
@@ -6382,14 +6300,19 @@ const VAlert = genericComponent()({
|
|
6382
6300
|
}, null), hasPrepend && createVNode("div", {
|
6383
6301
|
"key": "prepend",
|
6384
6302
|
"class": "v-alert__prepend"
|
6385
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6386
|
-
"key": "prepend-icon"
|
6387
|
-
|
6303
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6304
|
+
"key": "prepend-icon",
|
6305
|
+
"density": props.density,
|
6306
|
+
"icon": icon.value,
|
6307
|
+
"size": props.prominent ? 44 : 28
|
6308
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6388
6309
|
"key": "prepend-defaults",
|
6389
6310
|
"disabled": !icon.value,
|
6390
6311
|
"defaults": {
|
6391
6312
|
VIcon: {
|
6392
|
-
|
6313
|
+
density: props.density,
|
6314
|
+
icon: icon.value,
|
6315
|
+
size: props.prominent ? 44 : 28
|
6393
6316
|
}
|
6394
6317
|
}
|
6395
6318
|
}, slots.prepend)]), createVNode("div", {
|
@@ -7844,7 +7767,7 @@ function clampTarget(container, value, rtl, horizontal) {
|
|
7844
7767
|
min = 0;
|
7845
7768
|
max = scrollHeight + -containerHeight;
|
7846
7769
|
}
|
7847
|
-
return
|
7770
|
+
return clamp(value, min, max);
|
7848
7771
|
}
|
7849
7772
|
|
7850
7773
|
function calculateUpdatedTarget(_ref) {
|
@@ -8587,68 +8510,6 @@ const VChip = genericComponent()({
|
|
8587
8510
|
}
|
8588
8511
|
});
|
8589
8512
|
|
8590
|
-
const makeVDividerProps = propsFactory({
|
8591
|
-
color: String,
|
8592
|
-
inset: Boolean,
|
8593
|
-
length: [Number, String],
|
8594
|
-
opacity: [Number, String],
|
8595
|
-
thickness: [Number, String],
|
8596
|
-
vertical: Boolean,
|
8597
|
-
...makeComponentProps(),
|
8598
|
-
...makeThemeProps()
|
8599
|
-
}, 'VDivider');
|
8600
|
-
const VDivider = genericComponent()({
|
8601
|
-
name: 'VDivider',
|
8602
|
-
props: makeVDividerProps(),
|
8603
|
-
setup(props, _ref) {
|
8604
|
-
let {
|
8605
|
-
attrs,
|
8606
|
-
slots
|
8607
|
-
} = _ref;
|
8608
|
-
const {
|
8609
|
-
themeClasses
|
8610
|
-
} = provideTheme(props);
|
8611
|
-
const {
|
8612
|
-
textColorClasses,
|
8613
|
-
textColorStyles
|
8614
|
-
} = useTextColor(() => props.color);
|
8615
|
-
const dividerStyles = computed(() => {
|
8616
|
-
const styles = {};
|
8617
|
-
if (props.length) {
|
8618
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8619
|
-
}
|
8620
|
-
if (props.thickness) {
|
8621
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8622
|
-
}
|
8623
|
-
return styles;
|
8624
|
-
});
|
8625
|
-
useRender(() => {
|
8626
|
-
const divider = createVNode("hr", {
|
8627
|
-
"class": [{
|
8628
|
-
'v-divider': true,
|
8629
|
-
'v-divider--inset': props.inset,
|
8630
|
-
'v-divider--vertical': props.vertical
|
8631
|
-
}, themeClasses.value, textColorClasses.value, props.class],
|
8632
|
-
"style": [dividerStyles.value, textColorStyles.value, {
|
8633
|
-
'--v-border-opacity': props.opacity
|
8634
|
-
}, props.style],
|
8635
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8636
|
-
"role": `${attrs.role || 'separator'}`
|
8637
|
-
}, null);
|
8638
|
-
if (!slots.default) return divider;
|
8639
|
-
return createVNode("div", {
|
8640
|
-
"class": ['v-divider__wrapper', {
|
8641
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8642
|
-
'v-divider__wrapper--inset': props.inset
|
8643
|
-
}]
|
8644
|
-
}, [divider, createVNode("div", {
|
8645
|
-
"class": "v-divider__content"
|
8646
|
-
}, [slots.default()]), divider]);
|
8647
|
-
});
|
8648
|
-
return {};
|
8649
|
-
}
|
8650
|
-
});
|
8651
|
-
|
8652
8513
|
// Utilities
|
8653
8514
|
|
8654
8515
|
// List
|
@@ -9800,6 +9661,68 @@ const VListSubheader = genericComponent()({
|
|
9800
9661
|
}
|
9801
9662
|
});
|
9802
9663
|
|
9664
|
+
const makeVDividerProps = propsFactory({
|
9665
|
+
color: String,
|
9666
|
+
inset: Boolean,
|
9667
|
+
length: [Number, String],
|
9668
|
+
opacity: [Number, String],
|
9669
|
+
thickness: [Number, String],
|
9670
|
+
vertical: Boolean,
|
9671
|
+
...makeComponentProps(),
|
9672
|
+
...makeThemeProps()
|
9673
|
+
}, 'VDivider');
|
9674
|
+
const VDivider = genericComponent()({
|
9675
|
+
name: 'VDivider',
|
9676
|
+
props: makeVDividerProps(),
|
9677
|
+
setup(props, _ref) {
|
9678
|
+
let {
|
9679
|
+
attrs,
|
9680
|
+
slots
|
9681
|
+
} = _ref;
|
9682
|
+
const {
|
9683
|
+
themeClasses
|
9684
|
+
} = provideTheme(props);
|
9685
|
+
const {
|
9686
|
+
textColorClasses,
|
9687
|
+
textColorStyles
|
9688
|
+
} = useTextColor(() => props.color);
|
9689
|
+
const dividerStyles = computed(() => {
|
9690
|
+
const styles = {};
|
9691
|
+
if (props.length) {
|
9692
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9693
|
+
}
|
9694
|
+
if (props.thickness) {
|
9695
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9696
|
+
}
|
9697
|
+
return styles;
|
9698
|
+
});
|
9699
|
+
useRender(() => {
|
9700
|
+
const divider = createVNode("hr", {
|
9701
|
+
"class": [{
|
9702
|
+
'v-divider': true,
|
9703
|
+
'v-divider--inset': props.inset,
|
9704
|
+
'v-divider--vertical': props.vertical
|
9705
|
+
}, themeClasses.value, textColorClasses.value, props.class],
|
9706
|
+
"style": [dividerStyles.value, textColorStyles.value, {
|
9707
|
+
'--v-border-opacity': props.opacity
|
9708
|
+
}, props.style],
|
9709
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9710
|
+
"role": `${attrs.role || 'separator'}`
|
9711
|
+
}, null);
|
9712
|
+
if (!slots.default) return divider;
|
9713
|
+
return createVNode("div", {
|
9714
|
+
"class": ['v-divider__wrapper', {
|
9715
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9716
|
+
'v-divider__wrapper--inset': props.inset
|
9717
|
+
}]
|
9718
|
+
}, [divider, createVNode("div", {
|
9719
|
+
"class": "v-divider__content"
|
9720
|
+
}, [slots.default()]), divider]);
|
9721
|
+
});
|
9722
|
+
return {};
|
9723
|
+
}
|
9724
|
+
});
|
9725
|
+
|
9803
9726
|
// Types
|
9804
9727
|
|
9805
9728
|
const makeVListChildrenProps = propsFactory({
|
@@ -10378,11 +10301,19 @@ function useLocationStrategies(props, data) {
|
|
10378
10301
|
watch(() => props.locationStrategy, reset);
|
10379
10302
|
onScopeDispose(() => {
|
10380
10303
|
window.removeEventListener('resize', onResize);
|
10304
|
+
visualViewport?.removeEventListener('resize', onVisualResize);
|
10305
|
+
visualViewport?.removeEventListener('scroll', onVisualScroll);
|
10381
10306
|
updateLocation.value = undefined;
|
10382
10307
|
});
|
10383
10308
|
window.addEventListener('resize', onResize, {
|
10384
10309
|
passive: true
|
10385
10310
|
});
|
10311
|
+
visualViewport?.addEventListener('resize', onVisualResize, {
|
10312
|
+
passive: true
|
10313
|
+
});
|
10314
|
+
visualViewport?.addEventListener('scroll', onVisualScroll, {
|
10315
|
+
passive: true
|
10316
|
+
});
|
10386
10317
|
if (typeof props.locationStrategy === 'function') {
|
10387
10318
|
updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;
|
10388
10319
|
} else {
|
@@ -10393,6 +10324,12 @@ function useLocationStrategies(props, data) {
|
|
10393
10324
|
function onResize(e) {
|
10394
10325
|
updateLocation.value?.(e);
|
10395
10326
|
}
|
10327
|
+
function onVisualResize(e) {
|
10328
|
+
updateLocation.value?.(e);
|
10329
|
+
}
|
10330
|
+
function onVisualScroll(e) {
|
10331
|
+
updateLocation.value?.(e);
|
10332
|
+
}
|
10396
10333
|
return {
|
10397
10334
|
contentStyles,
|
10398
10335
|
updateLocation
|
@@ -10544,13 +10481,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
10544
10481
|
}
|
10545
10482
|
}
|
10546
10483
|
const viewport = scrollParents.reduce((box, el) => {
|
10547
|
-
const
|
10548
|
-
const scrollBox = new Box({
|
10549
|
-
x: el === document.documentElement ? 0 : rect.x,
|
10550
|
-
y: el === document.documentElement ? 0 : rect.y,
|
10551
|
-
width: el.clientWidth,
|
10552
|
-
height: el.clientHeight
|
10553
|
-
});
|
10484
|
+
const scrollBox = getElementBox(el);
|
10554
10485
|
if (box) {
|
10555
10486
|
return new Box({
|
10556
10487
|
x: Math.max(box.left, scrollBox.left),
|
@@ -12717,12 +12648,7 @@ function useVirtual(props, items) {
|
|
12717
12648
|
}
|
12718
12649
|
function calculateOffset(index) {
|
12719
12650
|
index = clamp(index, 0, items.value.length - 1);
|
12720
|
-
|
12721
|
-
const fraction = index % 1;
|
12722
|
-
const next = whole + 1;
|
12723
|
-
const wholeOffset = offsets[whole] || 0;
|
12724
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12725
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12651
|
+
return offsets[index] || 0;
|
12726
12652
|
}
|
12727
12653
|
function calculateIndex(scrollTop) {
|
12728
12654
|
return binaryClosest(offsets, scrollTop);
|
@@ -13126,6 +13052,7 @@ const VSelect = genericComponent()({
|
|
13126
13052
|
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
13127
13053
|
const isFocused = shallowRef(false);
|
13128
13054
|
let keyboardLookupPrefix = '';
|
13055
|
+
let keyboardLookupIndex = -1;
|
13129
13056
|
let keyboardLookupLastTime;
|
13130
13057
|
const displayItems = computed(() => {
|
13131
13058
|
if (props.hideSelected) {
|
@@ -13193,18 +13120,46 @@ const VSelect = genericComponent()({
|
|
13193
13120
|
const now = performance.now();
|
13194
13121
|
if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
|
13195
13122
|
keyboardLookupPrefix = '';
|
13123
|
+
keyboardLookupIndex = -1;
|
13196
13124
|
}
|
13197
13125
|
keyboardLookupPrefix += e.key.toLowerCase();
|
13198
13126
|
keyboardLookupLastTime = now;
|
13199
|
-
const
|
13200
|
-
|
13201
|
-
|
13202
|
-
|
13127
|
+
const items = displayItems.value;
|
13128
|
+
function findItem() {
|
13129
|
+
let result = findItemBase();
|
13130
|
+
if (result) return result;
|
13131
|
+
if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
|
13132
|
+
// No matches but we have a repeated letter, try the next item with that prefix
|
13133
|
+
keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
|
13134
|
+
result = findItemBase();
|
13135
|
+
if (result) return result;
|
13203
13136
|
}
|
13204
|
-
|
13205
|
-
|
13206
|
-
|
13137
|
+
|
13138
|
+
// Still nothing, wrap around to the top
|
13139
|
+
keyboardLookupIndex = -1;
|
13140
|
+
result = findItemBase();
|
13141
|
+
if (result) return result;
|
13142
|
+
|
13143
|
+
// Still nothing, try just the new letter
|
13144
|
+
keyboardLookupPrefix = e.key.toLowerCase();
|
13145
|
+
return findItemBase();
|
13146
|
+
}
|
13147
|
+
function findItemBase() {
|
13148
|
+
for (let i = keyboardLookupIndex + 1; i < items.length; i++) {
|
13149
|
+
const _item = items[i];
|
13150
|
+
if (_item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
|
13151
|
+
return [_item, i];
|
13152
|
+
}
|
13207
13153
|
}
|
13154
|
+
return undefined;
|
13155
|
+
}
|
13156
|
+
const result = findItem();
|
13157
|
+
if (!result) return;
|
13158
|
+
const [item, index] = result;
|
13159
|
+
keyboardLookupIndex = index;
|
13160
|
+
listRef.value?.focus(index);
|
13161
|
+
if (!props.multiple) {
|
13162
|
+
model.value = [item];
|
13208
13163
|
}
|
13209
13164
|
}
|
13210
13165
|
|
@@ -13353,22 +13308,6 @@ const VSelect = genericComponent()({
|
|
13353
13308
|
key: item.value,
|
13354
13309
|
onClick: () => select(item, null)
|
13355
13310
|
});
|
13356
|
-
if (item.raw.type === 'divider') {
|
13357
|
-
return slots.divider?.({
|
13358
|
-
props: item.raw,
|
13359
|
-
index
|
13360
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13361
|
-
"key": `divider-${index}`
|
13362
|
-
}), null);
|
13363
|
-
}
|
13364
|
-
if (item.raw.type === 'subheader') {
|
13365
|
-
return slots.subheader?.({
|
13366
|
-
props: item.raw,
|
13367
|
-
index
|
13368
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13369
|
-
"key": `subheader-${index}`
|
13370
|
-
}), null);
|
13371
|
-
}
|
13372
13311
|
return slots.item?.({
|
13373
13312
|
item,
|
13374
13313
|
index,
|
@@ -13529,9 +13468,6 @@ function filterItems(items, query, options) {
|
|
13529
13468
|
let match = -1;
|
13530
13469
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13531
13470
|
if (typeof item === 'object') {
|
13532
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13533
|
-
continue;
|
13534
|
-
}
|
13535
13471
|
const filterKeys = keys || Object.keys(transformed);
|
13536
13472
|
for (const key of filterKeys) {
|
13537
13473
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13970,22 +13906,6 @@ const VAutocomplete = genericComponent()({
|
|
13970
13906
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13971
13907
|
onClick: () => select(item, null)
|
13972
13908
|
});
|
13973
|
-
if (item.raw.type === 'divider') {
|
13974
|
-
return slots.divider?.({
|
13975
|
-
props: item.raw,
|
13976
|
-
index
|
13977
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13978
|
-
"key": `divider-${index}`
|
13979
|
-
}), null);
|
13980
|
-
}
|
13981
|
-
if (item.raw.type === 'subheader') {
|
13982
|
-
return slots.subheader?.({
|
13983
|
-
props: item.raw,
|
13984
|
-
index
|
13985
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13986
|
-
"key": `subheader-${index}`
|
13987
|
-
}), null);
|
13988
|
-
}
|
13989
13909
|
return slots.item?.({
|
13990
13910
|
item,
|
13991
13911
|
index,
|
@@ -16283,7 +16203,7 @@ const useSlider = _ref => {
|
|
16283
16203
|
const clickOffset = getPosition(e, position);
|
16284
16204
|
|
16285
16205
|
// It is possible for left to be NaN, force to number
|
16286
|
-
let clickPos =
|
16206
|
+
let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0;
|
16287
16207
|
if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
|
16288
16208
|
return roundValue(min.value + clickPos * (max.value - min.value));
|
16289
16209
|
}
|
@@ -17581,13 +17501,13 @@ function date(value) {
|
|
17581
17501
|
return null;
|
17582
17502
|
}
|
17583
17503
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17584
|
-
function getWeekdays(locale, firstDayOfWeek
|
17504
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17585
17505
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17586
17506
|
return createRange(7).map(i => {
|
17587
17507
|
const weekday = new Date(sundayJanuarySecond2000);
|
17588
17508
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17589
17509
|
return new Intl.DateTimeFormat(locale, {
|
17590
|
-
weekday:
|
17510
|
+
weekday: 'narrow'
|
17591
17511
|
}).format(weekday);
|
17592
17512
|
});
|
17593
17513
|
}
|
@@ -18051,9 +17971,9 @@ class VuetifyDateAdapter {
|
|
18051
17971
|
getDiff(date, comparing, unit) {
|
18052
17972
|
return getDiff(date, comparing, unit);
|
18053
17973
|
}
|
18054
|
-
getWeekdays(firstDayOfWeek
|
17974
|
+
getWeekdays(firstDayOfWeek) {
|
18055
17975
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
18056
|
-
return getWeekdays(this.locale, firstDay
|
17976
|
+
return getWeekdays(this.locale, firstDay);
|
18057
17977
|
}
|
18058
17978
|
getYear(date) {
|
18059
17979
|
return getYear(date);
|
@@ -18396,7 +18316,6 @@ const VCombobox = genericComponent()({
|
|
18396
18316
|
_search.value = val ?? '';
|
18397
18317
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18398
18318
|
model.value = [transformItem$3(props, val)];
|
18399
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18400
18319
|
}
|
18401
18320
|
if (val && props.multiple && props.delimiters?.length) {
|
18402
18321
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18713,22 +18632,6 @@ const VCombobox = genericComponent()({
|
|
18713
18632
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18714
18633
|
onClick: () => select(item, null)
|
18715
18634
|
});
|
18716
|
-
if (item.raw.type === 'divider') {
|
18717
|
-
return slots.divider?.({
|
18718
|
-
props: item.raw,
|
18719
|
-
index
|
18720
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18721
|
-
"key": `divider-${index}`
|
18722
|
-
}), null);
|
18723
|
-
}
|
18724
|
-
if (item.raw.type === 'subheader') {
|
18725
|
-
return slots.subheader?.({
|
18726
|
-
props: item.raw,
|
18727
|
-
index
|
18728
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18729
|
-
"key": `subheader-${index}`
|
18730
|
-
}), null);
|
18731
|
-
}
|
18732
18635
|
return slots.item?.({
|
18733
18636
|
item,
|
18734
18637
|
index,
|
@@ -22372,8 +22275,7 @@ const makeCalendarProps = propsFactory({
|
|
22372
22275
|
firstDayOfWeek: {
|
22373
22276
|
type: [Number, String],
|
22374
22277
|
default: undefined
|
22375
|
-
}
|
22376
|
-
weekdayFormat: String
|
22278
|
+
}
|
22377
22279
|
}, 'calendar');
|
22378
22280
|
function useCalendar(props) {
|
22379
22281
|
const adapter = useDate();
|
@@ -22621,7 +22523,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22621
22523
|
"ref": daysRef,
|
22622
22524
|
"key": daysInMonth.value[0].date?.toString(),
|
22623
22525
|
"class": "v-date-picker-month__days"
|
22624
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22526
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createVNode("div", {
|
22625
22527
|
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
22626
22528
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22627
22529
|
const slotProps = {
|
@@ -24739,7 +24641,7 @@ function useTouch(_ref) {
|
|
24739
24641
|
function getProgress(pos) {
|
24740
24642
|
let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
24741
24643
|
const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();
|
24742
|
-
return limit ?
|
24644
|
+
return limit ? clamp(progress) : progress;
|
24743
24645
|
}
|
24744
24646
|
function onTouchstart(e) {
|
24745
24647
|
if (touchless.value) return;
|
@@ -25152,10 +25054,6 @@ const makeVNumberInputProps = propsFactory({
|
|
25152
25054
|
type: Number,
|
25153
25055
|
default: 0
|
25154
25056
|
},
|
25155
|
-
minFractionDigits: {
|
25156
|
-
type: Number,
|
25157
|
-
default: null
|
25158
|
-
},
|
25159
25057
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25160
25058
|
}, 'VNumberInput');
|
25161
25059
|
const VNumberInput = genericComponent()({
|
@@ -25186,19 +25084,9 @@ const VNumberInput = genericComponent()({
|
|
25186
25084
|
} = useFocus(props);
|
25187
25085
|
function correctPrecision(val) {
|
25188
25086
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25189
|
-
|
25190
|
-
|
25191
|
-
|
25192
|
-
let fixed = val.toFixed(precision);
|
25193
|
-
if (isFocused.value) {
|
25194
|
-
return Number(fixed).toString(); // trim zeros
|
25195
|
-
}
|
25196
|
-
if ((props.minFractionDigits ?? precision) < precision) {
|
25197
|
-
const trimLimit = precision - props.minFractionDigits;
|
25198
|
-
const [baseDigits, fractionDigits] = fixed.split('.');
|
25199
|
-
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25200
|
-
}
|
25201
|
-
return fixed;
|
25087
|
+
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25088
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25089
|
+
: fixed;
|
25202
25090
|
}
|
25203
25091
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25204
25092
|
const _inputText = shallowRef(null);
|
@@ -25238,6 +25126,9 @@ const VNumberInput = genericComponent()({
|
|
25238
25126
|
const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
25239
25127
|
const incrementSlotProps = {
|
25240
25128
|
props: {
|
25129
|
+
style: {
|
25130
|
+
touchAction: 'none'
|
25131
|
+
},
|
25241
25132
|
onClick: onControlClick,
|
25242
25133
|
onPointerup: onControlMouseup,
|
25243
25134
|
onPointerdown: onUpControlMousedown
|
@@ -25245,13 +25136,15 @@ const VNumberInput = genericComponent()({
|
|
25245
25136
|
};
|
25246
25137
|
const decrementSlotProps = {
|
25247
25138
|
props: {
|
25139
|
+
style: {
|
25140
|
+
touchAction: 'none'
|
25141
|
+
},
|
25248
25142
|
onClick: onControlClick,
|
25249
25143
|
onPointerup: onControlMouseup,
|
25250
25144
|
onPointerdown: onDownControlMousedown
|
25251
25145
|
}
|
25252
25146
|
};
|
25253
25147
|
watch(() => props.precision, () => formatInputValue());
|
25254
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
25255
25148
|
onMounted(() => {
|
25256
25149
|
clampModel();
|
25257
25150
|
});
|
@@ -25353,7 +25246,7 @@ const VNumberInput = genericComponent()({
|
|
25353
25246
|
inputText.value = null;
|
25354
25247
|
return;
|
25355
25248
|
}
|
25356
|
-
inputText.value =
|
25249
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25357
25250
|
}
|
25358
25251
|
function trimDecimalZeros() {
|
25359
25252
|
if (controlsDisabled.value) return;
|
@@ -25378,17 +25271,18 @@ const VNumberInput = genericComponent()({
|
|
25378
25271
|
} = VTextField.filterProps(props);
|
25379
25272
|
function incrementControlNode() {
|
25380
25273
|
return !slots.increment ? createVNode(VBtn, {
|
25274
|
+
"aria-hidden": "true",
|
25275
|
+
"data-testid": "increment",
|
25381
25276
|
"disabled": !canIncrease.value,
|
25382
25277
|
"flat": true,
|
25383
|
-
"key": "increment-btn",
|
25384
25278
|
"height": controlNodeDefaultHeight.value,
|
25385
|
-
"data-testid": "increment",
|
25386
|
-
"aria-hidden": "true",
|
25387
25279
|
"icon": incrementIcon.value,
|
25280
|
+
"key": "increment-btn",
|
25388
25281
|
"onClick": onControlClick,
|
25389
|
-
"onPointerup": onControlMouseup,
|
25390
25282
|
"onPointerdown": onUpControlMousedown,
|
25283
|
+
"onPointerup": onControlMouseup,
|
25391
25284
|
"size": controlNodeSize.value,
|
25285
|
+
"style": "touch-action: none",
|
25392
25286
|
"tabindex": "-1"
|
25393
25287
|
}, null) : createVNode(VDefaultsProvider, {
|
25394
25288
|
"key": "increment-defaults",
|
@@ -25407,18 +25301,19 @@ const VNumberInput = genericComponent()({
|
|
25407
25301
|
}
|
25408
25302
|
function decrementControlNode() {
|
25409
25303
|
return !slots.decrement ? createVNode(VBtn, {
|
25304
|
+
"aria-hidden": "true",
|
25305
|
+
"data-testid": "decrement",
|
25410
25306
|
"disabled": !canDecrease.value,
|
25411
25307
|
"flat": true,
|
25412
|
-
"key": "decrement-btn",
|
25413
25308
|
"height": controlNodeDefaultHeight.value,
|
25414
|
-
"data-testid": "decrement",
|
25415
|
-
"aria-hidden": "true",
|
25416
25309
|
"icon": decrementIcon.value,
|
25417
|
-
"
|
25418
|
-
"tabindex": "-1",
|
25310
|
+
"key": "decrement-btn",
|
25419
25311
|
"onClick": onControlClick,
|
25312
|
+
"onPointerdown": onDownControlMousedown,
|
25420
25313
|
"onPointerup": onControlMouseup,
|
25421
|
-
"
|
25314
|
+
"size": controlNodeSize.value,
|
25315
|
+
"style": "touch-action: none",
|
25316
|
+
"tabindex": "-1"
|
25422
25317
|
}, null) : createVNode(VDefaultsProvider, {
|
25423
25318
|
"key": "decrement-defaults",
|
25424
25319
|
"defaults": {
|
@@ -29395,7 +29290,7 @@ function createVuetify$1() {
|
|
29395
29290
|
};
|
29396
29291
|
});
|
29397
29292
|
}
|
29398
|
-
const version$1 = "3.8.6-
|
29293
|
+
const version$1 = "3.8.6-master.2025-05-22";
|
29399
29294
|
createVuetify$1.version = version$1;
|
29400
29295
|
|
29401
29296
|
// Vue's inject() can only be used in setup
|
@@ -29420,7 +29315,7 @@ const createVuetify = function () {
|
|
29420
29315
|
...options
|
29421
29316
|
});
|
29422
29317
|
};
|
29423
|
-
const version = "3.8.6-
|
29318
|
+
const version = "3.8.6-master.2025-05-22";
|
29424
29319
|
createVuetify.version = version;
|
29425
29320
|
|
29426
29321
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|