@vuetify/nightly 3.8.7-dev.2025-05-27 → 3.8.7-master.2025-05-29
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 +5 -24
- package/dist/json/attributes.json +3311 -3363
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +206 -206
- package/dist/json/tags.json +6 -19
- package/dist/json/web-types.json +6080 -6298
- package/dist/vuetify-labs.cjs +204 -321
- package/dist/vuetify-labs.css +5998 -6026
- package/dist/vuetify-labs.d.ts +1384 -1583
- package/dist/vuetify-labs.esm.js +205 -322
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +204 -321
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +193 -315
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4658 -4686
- package/dist/vuetify.d.ts +541 -742
- package/dist/vuetify.esm.js +194 -316
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +193 -315
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1198 -1197
- 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 +10 -15
- 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 -133
- package/lib/components/VAutocomplete/VAutocomplete.js +2 -19
- 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/VChipGroup/VChipGroup.d.ts +0 -10
- package/lib/components/VCombobox/VCombobox.d.ts +96 -133
- package/lib/components/VCombobox/VCombobox.js +2 -20
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +0 -18
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableHeaders.js +2 -4
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +0 -13
- package/lib/components/VDatePicker/VDatePicker.d.ts +20 -10
- package/lib/components/VDatePicker/VDatePicker.js +39 -2
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- 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/VDatePicker/VDatePickerMonths.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonths.js +12 -2
- package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerYears.js +14 -2
- package/lib/components/VDatePicker/VDatePickerYears.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/VNumberInput/VNumberInput.d.ts +89 -103
- package/lib/components/VNumberInput/VNumberInput.js +15 -29
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +1 -2
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +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 -138
- package/lib/components/VSelect/VSelect.js +3 -21
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +0 -10
- package/lib/components/VSlideGroup/VSlideGroup.js +1 -2
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- 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 +0 -10
- 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/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 +71 -76
- 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 +107 -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/globals.d.ts +0 -1
- package/lib/util/globals.js +0 -1
- package/lib/util/globals.js.map +1 -1
- package/package.json +1 -3
- 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.7-
|
2
|
+
* Vuetify v3.8.7-master.2025-05-29
|
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, createElementVNode, normalizeClass, 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, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, normalizeStyle, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, 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"); }
|
@@ -2825,7 +2824,6 @@ const makeThemeProps = propsFactory({
|
|
2825
2824
|
function genDefaults$1() {
|
2826
2825
|
return {
|
2827
2826
|
defaultTheme: 'light',
|
2828
|
-
prefix: 'v-',
|
2829
2827
|
variations: {
|
2830
2828
|
colors: [],
|
2831
2829
|
lighten: 0,
|
@@ -2907,10 +2905,7 @@ function genDefaults$1() {
|
|
2907
2905
|
}
|
2908
2906
|
}
|
2909
2907
|
},
|
2910
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2911
|
-
scoped: false,
|
2912
|
-
unimportant: false,
|
2913
|
-
utilities: true
|
2908
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2914
2909
|
};
|
2915
2910
|
}
|
2916
2911
|
function parseThemeOptions() {
|
@@ -2933,21 +2928,21 @@ function parseThemeOptions() {
|
|
2933
2928
|
function createCssClass(lines, selector, content, scope) {
|
2934
2929
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2935
2930
|
}
|
2936
|
-
function genCssVariables(theme
|
2931
|
+
function genCssVariables(theme) {
|
2937
2932
|
const lightOverlay = theme.dark ? 2 : 1;
|
2938
2933
|
const darkOverlay = theme.dark ? 1 : 2;
|
2939
2934
|
const variables = [];
|
2940
2935
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2941
2936
|
const rgb = parseColor(value);
|
2942
|
-
variables.push(
|
2937
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2943
2938
|
if (!key.startsWith('on-')) {
|
2944
|
-
variables.push(
|
2939
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2945
2940
|
}
|
2946
2941
|
}
|
2947
2942
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2948
2943
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2949
2944
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2950
|
-
variables.push(
|
2945
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2951
2946
|
}
|
2952
2947
|
return variables;
|
2953
2948
|
}
|
@@ -2991,8 +2986,7 @@ function getScopedSelector(selector, scope) {
|
|
2991
2986
|
const scopeSelector = `:where(${scope})`;
|
2992
2987
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2993
2988
|
}
|
2994
|
-
function upsertStyles(
|
2995
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2989
|
+
function upsertStyles(styleEl, styles) {
|
2996
2990
|
if (!styleEl) return;
|
2997
2991
|
styleEl.innerHTML = styles;
|
2998
2992
|
}
|
@@ -3012,17 +3006,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
3012
3006
|
// Composables
|
3013
3007
|
function createTheme(options) {
|
3014
3008
|
const parsedOptions = parseThemeOptions(options);
|
3015
|
-
const
|
3009
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
3016
3010
|
const themes = ref(parsedOptions.themes);
|
3017
|
-
const systemName = shallowRef('light');
|
3018
|
-
const name = computed({
|
3019
|
-
get() {
|
3020
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
3021
|
-
},
|
3022
|
-
set(val) {
|
3023
|
-
_name.value = val;
|
3024
|
-
}
|
3025
|
-
});
|
3026
3011
|
const computedThemes = computed(() => {
|
3027
3012
|
const acc = {};
|
3028
3013
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3043,49 +3028,28 @@ function createTheme(options) {
|
|
3043
3028
|
const current = toRef(() => computedThemes.value[name.value]);
|
3044
3029
|
const styles = computed(() => {
|
3045
3030
|
const lines = [];
|
3046
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
3047
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3048
3031
|
if (current.value?.dark) {
|
3049
3032
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3050
3033
|
}
|
3051
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
3034
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3052
3035
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3053
|
-
createCssClass(lines,
|
3054
|
-
}
|
3055
|
-
|
3056
|
-
|
3057
|
-
|
3058
|
-
|
3059
|
-
|
3060
|
-
|
3061
|
-
|
3062
|
-
}
|
3063
|
-
|
3064
|
-
|
3065
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3066
|
-
}
|
3036
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
3037
|
+
}
|
3038
|
+
const bgLines = [];
|
3039
|
+
const fgLines = [];
|
3040
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3041
|
+
for (const key of colors) {
|
3042
|
+
if (key.startsWith('on-')) {
|
3043
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3044
|
+
} else {
|
3045
|
+
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);
|
3046
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3047
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
3067
3048
|
}
|
3068
|
-
lines.push(...bgLines, ...fgLines);
|
3069
3049
|
}
|
3050
|
+
lines.push(...bgLines, ...fgLines);
|
3070
3051
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3071
3052
|
});
|
3072
|
-
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3073
|
-
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
3074
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
3075
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3076
|
-
function updateSystemName() {
|
3077
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
3078
|
-
}
|
3079
|
-
updateSystemName();
|
3080
|
-
media.addEventListener('change', updateSystemName, {
|
3081
|
-
passive: true
|
3082
|
-
});
|
3083
|
-
if (getCurrentScope()) {
|
3084
|
-
onScopeDispose(() => {
|
3085
|
-
media.removeEventListener('change', updateSystemName);
|
3086
|
-
});
|
3087
|
-
}
|
3088
|
-
}
|
3089
3053
|
function install(app) {
|
3090
3054
|
if (parsedOptions.isDisabled) return;
|
3091
3055
|
const head = app._context.provides.usehead;
|
@@ -3123,55 +3087,22 @@ function createTheme(options) {
|
|
3123
3087
|
updateStyles();
|
3124
3088
|
}
|
3125
3089
|
function updateStyles() {
|
3126
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3090
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
3127
3091
|
}
|
3128
3092
|
}
|
3129
3093
|
}
|
3130
|
-
|
3131
|
-
if (!themeNames.value.includes(themeName)) {
|
3132
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3133
|
-
return;
|
3134
|
-
}
|
3135
|
-
name.value = themeName;
|
3136
|
-
}
|
3137
|
-
function cycle() {
|
3138
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3139
|
-
const currentIndex = themeArray.indexOf(name.value);
|
3140
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3141
|
-
change(themeArray[nextIndex]);
|
3142
|
-
}
|
3143
|
-
function toggle() {
|
3144
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3145
|
-
cycle(themeArray);
|
3146
|
-
}
|
3147
|
-
const globalName = new Proxy(name, {
|
3148
|
-
get(target, prop) {
|
3149
|
-
return target[prop];
|
3150
|
-
},
|
3151
|
-
set(target, prop, val) {
|
3152
|
-
if (prop === 'value') {
|
3153
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3154
|
-
}
|
3155
|
-
// @ts-expect-error
|
3156
|
-
target[prop] = val;
|
3157
|
-
return true;
|
3158
|
-
}
|
3159
|
-
});
|
3094
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
3160
3095
|
return {
|
3161
3096
|
install,
|
3162
|
-
change,
|
3163
|
-
cycle,
|
3164
|
-
toggle,
|
3165
3097
|
isDisabled: parsedOptions.isDisabled,
|
3166
3098
|
name,
|
3167
3099
|
themes,
|
3168
3100
|
current,
|
3169
3101
|
computedThemes,
|
3170
|
-
prefix: parsedOptions.prefix,
|
3171
3102
|
themeClasses,
|
3172
3103
|
styles,
|
3173
3104
|
global: {
|
3174
|
-
name
|
3105
|
+
name,
|
3175
3106
|
current
|
3176
3107
|
}
|
3177
3108
|
};
|
@@ -3182,7 +3113,7 @@ function provideTheme(props) {
|
|
3182
3113
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3183
3114
|
const name = toRef(() => props.theme ?? theme.name.value);
|
3184
3115
|
const current = toRef(() => theme.themes.value[name.value]);
|
3185
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
3116
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
3186
3117
|
const newTheme = {
|
3187
3118
|
...theme,
|
3188
3119
|
name,
|
@@ -4729,15 +4660,9 @@ function useVariant(props) {
|
|
4729
4660
|
};
|
4730
4661
|
}
|
4731
4662
|
|
4732
|
-
// Types
|
4733
|
-
|
4734
4663
|
const makeVBtnGroupProps = propsFactory({
|
4735
4664
|
baseColor: String,
|
4736
4665
|
divided: Boolean,
|
4737
|
-
direction: {
|
4738
|
-
type: String,
|
4739
|
-
default: 'horizontal'
|
4740
|
-
},
|
4741
4666
|
...makeBorderProps(),
|
4742
4667
|
...makeComponentProps(),
|
4743
4668
|
...makeDensityProps(),
|
@@ -4771,7 +4696,7 @@ const VBtnGroup = genericComponent()({
|
|
4771
4696
|
} = useRounded(props);
|
4772
4697
|
provideDefaults({
|
4773
4698
|
VBtn: {
|
4774
|
-
height:
|
4699
|
+
height: 'auto',
|
4775
4700
|
baseColor: toRef(() => props.baseColor),
|
4776
4701
|
color: toRef(() => props.color),
|
4777
4702
|
density: toRef(() => props.density),
|
@@ -4781,7 +4706,7 @@ const VBtnGroup = genericComponent()({
|
|
4781
4706
|
});
|
4782
4707
|
useRender(() => {
|
4783
4708
|
return createVNode(props.tag, {
|
4784
|
-
"class": normalizeClass(['v-btn-group',
|
4709
|
+
"class": normalizeClass(['v-btn-group', {
|
4785
4710
|
'v-btn-group--divided': props.divided
|
4786
4711
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4787
4712
|
"style": normalizeStyle(props.style)
|
@@ -6260,31 +6185,6 @@ const VAppBarTitle = genericComponent()({
|
|
6260
6185
|
// Utilities
|
6261
6186
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6262
6187
|
|
6263
|
-
// Utilities
|
6264
|
-
|
6265
|
-
// Types
|
6266
|
-
|
6267
|
-
// Types
|
6268
|
-
|
6269
|
-
// Composables
|
6270
|
-
const makeIconSizeProps = propsFactory({
|
6271
|
-
iconSize: [Number, String],
|
6272
|
-
iconSizes: {
|
6273
|
-
type: Array,
|
6274
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6275
|
-
}
|
6276
|
-
}, 'iconSize');
|
6277
|
-
function useIconSizes(props, fallback) {
|
6278
|
-
const iconSize = computed(() => {
|
6279
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6280
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6281
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6282
|
-
});
|
6283
|
-
return {
|
6284
|
-
iconSize
|
6285
|
-
};
|
6286
|
-
}
|
6287
|
-
|
6288
6188
|
// Types
|
6289
6189
|
|
6290
6190
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6324,7 +6224,6 @@ const makeVAlertProps = propsFactory({
|
|
6324
6224
|
...makeDensityProps(),
|
6325
6225
|
...makeDimensionProps(),
|
6326
6226
|
...makeElevationProps(),
|
6327
|
-
...makeIconSizeProps(),
|
6328
6227
|
...makeLocationProps(),
|
6329
6228
|
...makePositionProps(),
|
6330
6229
|
...makeRoundedProps(),
|
@@ -6352,9 +6251,6 @@ const VAlert = genericComponent()({
|
|
6352
6251
|
if (!props.type) return props.icon;
|
6353
6252
|
return props.icon ?? `$${props.type}`;
|
6354
6253
|
});
|
6355
|
-
const {
|
6356
|
-
iconSize
|
6357
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6358
6254
|
const {
|
6359
6255
|
themeClasses
|
6360
6256
|
} = provideTheme(props);
|
@@ -6402,11 +6298,6 @@ const VAlert = genericComponent()({
|
|
6402
6298
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6403
6299
|
const hasTitle = !!(slots.title || props.title);
|
6404
6300
|
const hasClose = !!(slots.close || props.closable);
|
6405
|
-
const iconProps = {
|
6406
|
-
density: props.density,
|
6407
|
-
icon: icon.value,
|
6408
|
-
size: iconSize.value
|
6409
|
-
};
|
6410
6301
|
return isActive.value && createVNode(props.tag, {
|
6411
6302
|
"class": normalizeClass(['v-alert', props.border && {
|
6412
6303
|
'v-alert--border': !!props.border,
|
@@ -6424,14 +6315,19 @@ const VAlert = genericComponent()({
|
|
6424
6315
|
}, null), hasPrepend && createElementVNode("div", {
|
6425
6316
|
"key": "prepend",
|
6426
6317
|
"class": "v-alert__prepend"
|
6427
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6428
|
-
"key": "prepend-icon"
|
6429
|
-
|
6318
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6319
|
+
"key": "prepend-icon",
|
6320
|
+
"density": props.density,
|
6321
|
+
"icon": icon.value,
|
6322
|
+
"size": props.prominent ? 44 : 28
|
6323
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6430
6324
|
"key": "prepend-defaults",
|
6431
6325
|
"disabled": !icon.value,
|
6432
6326
|
"defaults": {
|
6433
6327
|
VIcon: {
|
6434
|
-
|
6328
|
+
density: props.density,
|
6329
|
+
icon: icon.value,
|
6330
|
+
size: props.prominent ? 44 : 28
|
6435
6331
|
}
|
6436
6332
|
}
|
6437
6333
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7956,7 +7852,6 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7956
7852
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7957
7853
|
const makeVSlideGroupProps = propsFactory({
|
7958
7854
|
centerActive: Boolean,
|
7959
|
-
contentClass: null,
|
7960
7855
|
direction: {
|
7961
7856
|
type: String,
|
7962
7857
|
default: 'horizontal'
|
@@ -8269,7 +8164,7 @@ const VSlideGroup = genericComponent()({
|
|
8269
8164
|
})]), createElementVNode("div", {
|
8270
8165
|
"key": "container",
|
8271
8166
|
"ref": containerRef,
|
8272
|
-
"class":
|
8167
|
+
"class": "v-slide-group__container",
|
8273
8168
|
"onScroll": onScroll
|
8274
8169
|
}, [createElementVNode("div", {
|
8275
8170
|
"ref": contentRef,
|
@@ -8631,68 +8526,6 @@ const VChip = genericComponent()({
|
|
8631
8526
|
}
|
8632
8527
|
});
|
8633
8528
|
|
8634
|
-
const makeVDividerProps = propsFactory({
|
8635
|
-
color: String,
|
8636
|
-
inset: Boolean,
|
8637
|
-
length: [Number, String],
|
8638
|
-
opacity: [Number, String],
|
8639
|
-
thickness: [Number, String],
|
8640
|
-
vertical: Boolean,
|
8641
|
-
...makeComponentProps(),
|
8642
|
-
...makeThemeProps()
|
8643
|
-
}, 'VDivider');
|
8644
|
-
const VDivider = genericComponent()({
|
8645
|
-
name: 'VDivider',
|
8646
|
-
props: makeVDividerProps(),
|
8647
|
-
setup(props, _ref) {
|
8648
|
-
let {
|
8649
|
-
attrs,
|
8650
|
-
slots
|
8651
|
-
} = _ref;
|
8652
|
-
const {
|
8653
|
-
themeClasses
|
8654
|
-
} = provideTheme(props);
|
8655
|
-
const {
|
8656
|
-
textColorClasses,
|
8657
|
-
textColorStyles
|
8658
|
-
} = useTextColor(() => props.color);
|
8659
|
-
const dividerStyles = computed(() => {
|
8660
|
-
const styles = {};
|
8661
|
-
if (props.length) {
|
8662
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8663
|
-
}
|
8664
|
-
if (props.thickness) {
|
8665
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8666
|
-
}
|
8667
|
-
return styles;
|
8668
|
-
});
|
8669
|
-
useRender(() => {
|
8670
|
-
const divider = createElementVNode("hr", {
|
8671
|
-
"class": normalizeClass([{
|
8672
|
-
'v-divider': true,
|
8673
|
-
'v-divider--inset': props.inset,
|
8674
|
-
'v-divider--vertical': props.vertical
|
8675
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8676
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8677
|
-
'--v-border-opacity': props.opacity
|
8678
|
-
}, props.style]),
|
8679
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8680
|
-
"role": `${attrs.role || 'separator'}`
|
8681
|
-
}, null);
|
8682
|
-
if (!slots.default) return divider;
|
8683
|
-
return createElementVNode("div", {
|
8684
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
8685
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8686
|
-
'v-divider__wrapper--inset': props.inset
|
8687
|
-
}])
|
8688
|
-
}, [divider, createElementVNode("div", {
|
8689
|
-
"class": "v-divider__content"
|
8690
|
-
}, [slots.default()]), divider]);
|
8691
|
-
});
|
8692
|
-
return {};
|
8693
|
-
}
|
8694
|
-
});
|
8695
|
-
|
8696
8529
|
// Utilities
|
8697
8530
|
|
8698
8531
|
// List
|
@@ -9844,6 +9677,68 @@ const VListSubheader = genericComponent()({
|
|
9844
9677
|
}
|
9845
9678
|
});
|
9846
9679
|
|
9680
|
+
const makeVDividerProps = propsFactory({
|
9681
|
+
color: String,
|
9682
|
+
inset: Boolean,
|
9683
|
+
length: [Number, String],
|
9684
|
+
opacity: [Number, String],
|
9685
|
+
thickness: [Number, String],
|
9686
|
+
vertical: Boolean,
|
9687
|
+
...makeComponentProps(),
|
9688
|
+
...makeThemeProps()
|
9689
|
+
}, 'VDivider');
|
9690
|
+
const VDivider = genericComponent()({
|
9691
|
+
name: 'VDivider',
|
9692
|
+
props: makeVDividerProps(),
|
9693
|
+
setup(props, _ref) {
|
9694
|
+
let {
|
9695
|
+
attrs,
|
9696
|
+
slots
|
9697
|
+
} = _ref;
|
9698
|
+
const {
|
9699
|
+
themeClasses
|
9700
|
+
} = provideTheme(props);
|
9701
|
+
const {
|
9702
|
+
textColorClasses,
|
9703
|
+
textColorStyles
|
9704
|
+
} = useTextColor(() => props.color);
|
9705
|
+
const dividerStyles = computed(() => {
|
9706
|
+
const styles = {};
|
9707
|
+
if (props.length) {
|
9708
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9709
|
+
}
|
9710
|
+
if (props.thickness) {
|
9711
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9712
|
+
}
|
9713
|
+
return styles;
|
9714
|
+
});
|
9715
|
+
useRender(() => {
|
9716
|
+
const divider = createElementVNode("hr", {
|
9717
|
+
"class": normalizeClass([{
|
9718
|
+
'v-divider': true,
|
9719
|
+
'v-divider--inset': props.inset,
|
9720
|
+
'v-divider--vertical': props.vertical
|
9721
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9722
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9723
|
+
'--v-border-opacity': props.opacity
|
9724
|
+
}, props.style]),
|
9725
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9726
|
+
"role": `${attrs.role || 'separator'}`
|
9727
|
+
}, null);
|
9728
|
+
if (!slots.default) return divider;
|
9729
|
+
return createElementVNode("div", {
|
9730
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
9731
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9732
|
+
'v-divider__wrapper--inset': props.inset
|
9733
|
+
}])
|
9734
|
+
}, [divider, createElementVNode("div", {
|
9735
|
+
"class": "v-divider__content"
|
9736
|
+
}, [slots.default()]), divider]);
|
9737
|
+
});
|
9738
|
+
return {};
|
9739
|
+
}
|
9740
|
+
});
|
9741
|
+
|
9847
9742
|
// Types
|
9848
9743
|
|
9849
9744
|
const makeVListChildrenProps = propsFactory({
|
@@ -12771,12 +12666,7 @@ function useVirtual(props, items) {
|
|
12771
12666
|
}
|
12772
12667
|
function calculateOffset(index) {
|
12773
12668
|
index = clamp(index, 0, items.value.length - 1);
|
12774
|
-
|
12775
|
-
const fraction = index % 1;
|
12776
|
-
const next = whole + 1;
|
12777
|
-
const wholeOffset = offsets[whole] || 0;
|
12778
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12779
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12669
|
+
return offsets[index] || 0;
|
12780
12670
|
}
|
12781
12671
|
function calculateIndex(scrollTop) {
|
12782
12672
|
return binaryClosest(offsets, scrollTop);
|
@@ -13130,7 +13020,6 @@ const makeSelectProps = propsFactory({
|
|
13130
13020
|
},
|
13131
13021
|
openOnClear: Boolean,
|
13132
13022
|
itemColor: String,
|
13133
|
-
noAutoScroll: Boolean,
|
13134
13023
|
...makeItemsProps({
|
13135
13024
|
itemChildren: false
|
13136
13025
|
})
|
@@ -13345,7 +13234,7 @@ const VSelect = genericComponent()({
|
|
13345
13234
|
watch(menu, () => {
|
13346
13235
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13347
13236
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13348
|
-
IN_BROWSER &&
|
13237
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13349
13238
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13350
13239
|
});
|
13351
13240
|
}
|
@@ -13437,22 +13326,6 @@ const VSelect = genericComponent()({
|
|
13437
13326
|
key: item.value,
|
13438
13327
|
onClick: () => select(item, null)
|
13439
13328
|
});
|
13440
|
-
if (item.raw.type === 'divider') {
|
13441
|
-
return slots.divider?.({
|
13442
|
-
props: item.raw,
|
13443
|
-
index
|
13444
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13445
|
-
"key": `divider-${index}`
|
13446
|
-
}), null);
|
13447
|
-
}
|
13448
|
-
if (item.raw.type === 'subheader') {
|
13449
|
-
return slots.subheader?.({
|
13450
|
-
props: item.raw,
|
13451
|
-
index
|
13452
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13453
|
-
"key": `subheader-${index}`
|
13454
|
-
}), null);
|
13455
|
-
}
|
13456
13329
|
return slots.item?.({
|
13457
13330
|
item,
|
13458
13331
|
index,
|
@@ -13613,9 +13486,6 @@ function filterItems(items, query, options) {
|
|
13613
13486
|
let match = -1;
|
13614
13487
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13615
13488
|
if (typeof item === 'object') {
|
13616
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13617
|
-
continue;
|
13618
|
-
}
|
13619
13489
|
const filterKeys = keys || Object.keys(transformed);
|
13620
13490
|
for (const key of filterKeys) {
|
13621
13491
|
const value = getPropertyFromItem(transformed, key);
|
@@ -14054,22 +13924,6 @@ const VAutocomplete = genericComponent()({
|
|
14054
13924
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
14055
13925
|
onClick: () => select(item, null)
|
14056
13926
|
});
|
14057
|
-
if (item.raw.type === 'divider') {
|
14058
|
-
return slots.divider?.({
|
14059
|
-
props: item.raw,
|
14060
|
-
index
|
14061
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
14062
|
-
"key": `divider-${index}`
|
14063
|
-
}), null);
|
14064
|
-
}
|
14065
|
-
if (item.raw.type === 'subheader') {
|
14066
|
-
return slots.subheader?.({
|
14067
|
-
props: item.raw,
|
14068
|
-
index
|
14069
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
14070
|
-
"key": `subheader-${index}`
|
14071
|
-
}), null);
|
14072
|
-
}
|
14073
13927
|
return slots.item?.({
|
14074
13928
|
item,
|
14075
13929
|
index,
|
@@ -17665,13 +17519,13 @@ function date(value) {
|
|
17665
17519
|
return null;
|
17666
17520
|
}
|
17667
17521
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17668
|
-
function getWeekdays(locale, firstDayOfWeek
|
17522
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17669
17523
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17670
17524
|
return createRange(7).map(i => {
|
17671
17525
|
const weekday = new Date(sundayJanuarySecond2000);
|
17672
17526
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17673
17527
|
return new Intl.DateTimeFormat(locale, {
|
17674
|
-
weekday:
|
17528
|
+
weekday: 'narrow'
|
17675
17529
|
}).format(weekday);
|
17676
17530
|
});
|
17677
17531
|
}
|
@@ -18135,9 +17989,9 @@ class VuetifyDateAdapter {
|
|
18135
17989
|
getDiff(date, comparing, unit) {
|
18136
17990
|
return getDiff(date, comparing, unit);
|
18137
17991
|
}
|
18138
|
-
getWeekdays(firstDayOfWeek
|
17992
|
+
getWeekdays(firstDayOfWeek) {
|
18139
17993
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
18140
|
-
return getWeekdays(this.locale, firstDay
|
17994
|
+
return getWeekdays(this.locale, firstDay);
|
18141
17995
|
}
|
18142
17996
|
getYear(date) {
|
18143
17997
|
return getYear(date);
|
@@ -18480,7 +18334,6 @@ const VCombobox = genericComponent()({
|
|
18480
18334
|
_search.value = val ?? '';
|
18481
18335
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18482
18336
|
model.value = [transformItem$3(props, val)];
|
18483
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18484
18337
|
}
|
18485
18338
|
if (val && props.multiple && props.delimiters?.length) {
|
18486
18339
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18797,22 +18650,6 @@ const VCombobox = genericComponent()({
|
|
18797
18650
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18798
18651
|
onClick: () => select(item, null)
|
18799
18652
|
});
|
18800
|
-
if (item.raw.type === 'divider') {
|
18801
|
-
return slots.divider?.({
|
18802
|
-
props: item.raw,
|
18803
|
-
index
|
18804
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18805
|
-
"key": `divider-${index}`
|
18806
|
-
}), null);
|
18807
|
-
}
|
18808
|
-
if (item.raw.type === 'subheader') {
|
18809
|
-
return slots.subheader?.({
|
18810
|
-
props: item.raw,
|
18811
|
-
index
|
18812
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18813
|
-
"key": `subheader-${index}`
|
18814
|
-
}), null);
|
18815
|
-
}
|
18816
18653
|
return slots.item?.({
|
18817
18654
|
item,
|
18818
18655
|
index,
|
@@ -20692,7 +20529,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20692
20529
|
color: String,
|
20693
20530
|
disableSort: Boolean,
|
20694
20531
|
fixedHeader: Boolean,
|
20695
|
-
lastFixed: Boolean,
|
20696
20532
|
multiSort: Boolean,
|
20697
20533
|
sortAscIcon: {
|
20698
20534
|
type: IconValue,
|
@@ -20739,11 +20575,10 @@ const VDataTableHeaders = genericComponent()({
|
|
20739
20575
|
loaderClasses
|
20740
20576
|
} = useLoader(props);
|
20741
20577
|
function getFixedStyles(column, y) {
|
20742
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20578
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20743
20579
|
return {
|
20744
20580
|
position: 'sticky',
|
20745
|
-
left: column.fixed
|
20746
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20581
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20747
20582
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20748
20583
|
};
|
20749
20584
|
}
|
@@ -22458,8 +22293,7 @@ const makeCalendarProps = propsFactory({
|
|
22458
22293
|
firstDayOfWeek: {
|
22459
22294
|
type: [Number, String],
|
22460
22295
|
default: undefined
|
22461
|
-
}
|
22462
|
-
weekdayFormat: String
|
22296
|
+
}
|
22463
22297
|
}, 'calendar');
|
22464
22298
|
function useCalendar(props) {
|
22465
22299
|
const adapter = useDate();
|
@@ -22707,7 +22541,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22707
22541
|
"ref": daysRef,
|
22708
22542
|
"key": daysInMonth.value[0].date?.toString(),
|
22709
22543
|
"class": "v-date-picker-month__days"
|
22710
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22544
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22711
22545
|
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
22712
22546
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22713
22547
|
const slotProps = {
|
@@ -22750,7 +22584,8 @@ const makeVDatePickerMonthsProps = propsFactory({
|
|
22750
22584
|
min: null,
|
22751
22585
|
max: null,
|
22752
22586
|
modelValue: Number,
|
22753
|
-
year: Number
|
22587
|
+
year: Number,
|
22588
|
+
allowedMonths: [Array, Function]
|
22754
22589
|
}, 'VDatePickerMonths');
|
22755
22590
|
const VDatePickerMonths = genericComponent()({
|
22756
22591
|
name: 'VDatePickerMonths',
|
@@ -22772,7 +22607,7 @@ const VDatePickerMonths = genericComponent()({
|
|
22772
22607
|
}
|
22773
22608
|
return createRange(12).map(i => {
|
22774
22609
|
const text = adapter.format(date, 'monthShort');
|
22775
|
-
const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
22610
|
+
const isDisabled = !!(!isMonthAllowed(i) || props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
22776
22611
|
date = adapter.getNextMonth(date);
|
22777
22612
|
return {
|
22778
22613
|
isDisabled,
|
@@ -22784,6 +22619,15 @@ const VDatePickerMonths = genericComponent()({
|
|
22784
22619
|
watchEffect(() => {
|
22785
22620
|
model.value = model.value ?? adapter.getMonth(adapter.date());
|
22786
22621
|
});
|
22622
|
+
function isMonthAllowed(month) {
|
22623
|
+
if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
|
22624
|
+
return props.allowedMonths.includes(month);
|
22625
|
+
}
|
22626
|
+
if (typeof props.allowedMonths === 'function') {
|
22627
|
+
return props.allowedMonths(month);
|
22628
|
+
}
|
22629
|
+
return true;
|
22630
|
+
}
|
22787
22631
|
useRender(() => createElementVNode("div", {
|
22788
22632
|
"class": "v-date-picker-months",
|
22789
22633
|
"style": normalizeStyle({
|
@@ -22829,7 +22673,8 @@ const makeVDatePickerYearsProps = propsFactory({
|
|
22829
22673
|
height: [String, Number],
|
22830
22674
|
min: null,
|
22831
22675
|
max: null,
|
22832
|
-
modelValue: Number
|
22676
|
+
modelValue: Number,
|
22677
|
+
allowedYears: [Array, Function]
|
22833
22678
|
}, 'VDatePickerYears');
|
22834
22679
|
const VDatePickerYears = genericComponent()({
|
22835
22680
|
name: 'VDatePickerYears',
|
@@ -22861,7 +22706,8 @@ const VDatePickerYears = genericComponent()({
|
|
22861
22706
|
date = adapter.setYear(date, adapter.getYear(date) + 1);
|
22862
22707
|
return {
|
22863
22708
|
text,
|
22864
|
-
value: i
|
22709
|
+
value: i,
|
22710
|
+
isDisabled: !isYearAllowed(i)
|
22865
22711
|
};
|
22866
22712
|
});
|
22867
22713
|
});
|
@@ -22875,6 +22721,15 @@ const VDatePickerYears = genericComponent()({
|
|
22875
22721
|
block: 'center'
|
22876
22722
|
});
|
22877
22723
|
});
|
22724
|
+
function isYearAllowed(year) {
|
22725
|
+
if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
|
22726
|
+
return props.allowedYears.includes(year);
|
22727
|
+
}
|
22728
|
+
if (typeof props.allowedYears === 'function') {
|
22729
|
+
return props.allowedYears(year);
|
22730
|
+
}
|
22731
|
+
return true;
|
22732
|
+
}
|
22878
22733
|
useRender(() => createElementVNode("div", {
|
22879
22734
|
"class": "v-date-picker-years",
|
22880
22735
|
"style": normalizeStyle({
|
@@ -22889,6 +22744,7 @@ const VDatePickerYears = genericComponent()({
|
|
22889
22744
|
color: model.value === year.value ? props.color : undefined,
|
22890
22745
|
rounded: true,
|
22891
22746
|
text: year.text,
|
22747
|
+
disabled: year.isDisabled,
|
22892
22748
|
variant: model.value === year.value ? 'flat' : 'text',
|
22893
22749
|
onClick: () => {
|
22894
22750
|
if (model.value === year.value) {
|
@@ -23038,6 +22894,41 @@ const VDatePicker = genericComponent()({
|
|
23038
22894
|
}
|
23039
22895
|
return targets;
|
23040
22896
|
});
|
22897
|
+
function isAllowedInRange(start, end) {
|
22898
|
+
const allowedDates = props.allowedDates;
|
22899
|
+
if (typeof allowedDates !== 'function') return true;
|
22900
|
+
const days = adapter.getDiff(end, start, 'days');
|
22901
|
+
for (let i = 0; i < days; i++) {
|
22902
|
+
if (allowedDates(adapter.addDays(start, i))) return true;
|
22903
|
+
}
|
22904
|
+
return false;
|
22905
|
+
}
|
22906
|
+
function allowedYears(year) {
|
22907
|
+
if (typeof props.allowedDates === 'function') {
|
22908
|
+
const startOfYear = adapter.parseISO(`${year}-01-01`);
|
22909
|
+
return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
|
22910
|
+
}
|
22911
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
22912
|
+
for (const date of props.allowedDates) {
|
22913
|
+
if (adapter.getYear(adapter.date(date)) === year) return true;
|
22914
|
+
}
|
22915
|
+
return false;
|
22916
|
+
}
|
22917
|
+
return true;
|
22918
|
+
}
|
22919
|
+
function allowedMonths(month) {
|
22920
|
+
if (typeof props.allowedDates === 'function') {
|
22921
|
+
const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
|
22922
|
+
return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
|
22923
|
+
}
|
22924
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
22925
|
+
for (const date of props.allowedDates) {
|
22926
|
+
if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
|
22927
|
+
}
|
22928
|
+
return false;
|
22929
|
+
}
|
22930
|
+
return true;
|
22931
|
+
}
|
23041
22932
|
|
23042
22933
|
// function onClickAppend () {
|
23043
22934
|
// inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
|
@@ -23153,14 +23044,16 @@ const VDatePicker = genericComponent()({
|
|
23153
23044
|
"onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
|
23154
23045
|
"min": minDate.value,
|
23155
23046
|
"max": maxDate.value,
|
23156
|
-
"year": year.value
|
23047
|
+
"year": year.value,
|
23048
|
+
"allowedMonths": allowedMonths
|
23157
23049
|
}), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
23158
23050
|
"key": "date-picker-years"
|
23159
23051
|
}, datePickerYearsProps, {
|
23160
23052
|
"modelValue": year.value,
|
23161
23053
|
"onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
|
23162
23054
|
"min": minDate.value,
|
23163
|
-
"max": maxDate.value
|
23055
|
+
"max": maxDate.value,
|
23056
|
+
"allowedYears": allowedYears
|
23164
23057
|
}), null) : createVNode(VDatePickerMonth, mergeProps({
|
23165
23058
|
"key": "date-picker-month"
|
23166
23059
|
}, datePickerMonthProps, {
|
@@ -25238,10 +25131,6 @@ const makeVNumberInputProps = propsFactory({
|
|
25238
25131
|
type: Number,
|
25239
25132
|
default: 0
|
25240
25133
|
},
|
25241
|
-
minFractionDigits: {
|
25242
|
-
type: Number,
|
25243
|
-
default: null
|
25244
|
-
},
|
25245
25134
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25246
25135
|
}, 'VNumberInput');
|
25247
25136
|
const VNumberInput = genericComponent()({
|
@@ -25272,19 +25161,9 @@ const VNumberInput = genericComponent()({
|
|
25272
25161
|
} = useFocus(props);
|
25273
25162
|
function correctPrecision(val) {
|
25274
25163
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25275
|
-
|
25276
|
-
|
25277
|
-
|
25278
|
-
let fixed = val.toFixed(precision);
|
25279
|
-
if (isFocused.value) {
|
25280
|
-
return Number(fixed).toString(); // trim zeros
|
25281
|
-
}
|
25282
|
-
if ((props.minFractionDigits ?? precision) < precision) {
|
25283
|
-
const trimLimit = precision - props.minFractionDigits;
|
25284
|
-
const [baseDigits, fractionDigits] = fixed.split('.');
|
25285
|
-
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25286
|
-
}
|
25287
|
-
return fixed;
|
25164
|
+
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25165
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25166
|
+
: fixed;
|
25288
25167
|
}
|
25289
25168
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25290
25169
|
const _inputText = shallowRef(null);
|
@@ -25324,26 +25203,21 @@ const VNumberInput = genericComponent()({
|
|
25324
25203
|
const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
25325
25204
|
const incrementSlotProps = {
|
25326
25205
|
props: {
|
25327
|
-
style: {
|
25328
|
-
touchAction: 'none'
|
25329
|
-
},
|
25330
25206
|
onClick: onControlClick,
|
25331
25207
|
onPointerup: onControlMouseup,
|
25332
|
-
onPointerdown: onUpControlMousedown
|
25208
|
+
onPointerdown: onUpControlMousedown,
|
25209
|
+
onPointercancel: onControlPointerCancel
|
25333
25210
|
}
|
25334
25211
|
};
|
25335
25212
|
const decrementSlotProps = {
|
25336
25213
|
props: {
|
25337
|
-
style: {
|
25338
|
-
touchAction: 'none'
|
25339
|
-
},
|
25340
25214
|
onClick: onControlClick,
|
25341
25215
|
onPointerup: onControlMouseup,
|
25342
|
-
onPointerdown: onDownControlMousedown
|
25216
|
+
onPointerdown: onDownControlMousedown,
|
25217
|
+
onPointercancel: onControlPointerCancel
|
25343
25218
|
}
|
25344
25219
|
};
|
25345
25220
|
watch(() => props.precision, () => formatInputValue());
|
25346
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
25347
25221
|
onMounted(() => {
|
25348
25222
|
clampModel();
|
25349
25223
|
});
|
@@ -25437,6 +25311,11 @@ const VNumberInput = genericComponent()({
|
|
25437
25311
|
e.stopPropagation();
|
25438
25312
|
holdStart('down');
|
25439
25313
|
}
|
25314
|
+
function onControlPointerCancel(e) {
|
25315
|
+
const el = e.currentTarget;
|
25316
|
+
el?.releasePointerCapture(e.pointerId);
|
25317
|
+
holdStop();
|
25318
|
+
}
|
25440
25319
|
function clampModel() {
|
25441
25320
|
if (controlsDisabled.value) return;
|
25442
25321
|
if (!vTextFieldRef.value) return;
|
@@ -25453,7 +25332,7 @@ const VNumberInput = genericComponent()({
|
|
25453
25332
|
inputText.value = null;
|
25454
25333
|
return;
|
25455
25334
|
}
|
25456
|
-
inputText.value =
|
25335
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25457
25336
|
}
|
25458
25337
|
function trimDecimalZeros() {
|
25459
25338
|
if (controlsDisabled.value) return;
|
@@ -25488,8 +25367,8 @@ const VNumberInput = genericComponent()({
|
|
25488
25367
|
"onClick": onControlClick,
|
25489
25368
|
"onPointerdown": onUpControlMousedown,
|
25490
25369
|
"onPointerup": onControlMouseup,
|
25370
|
+
"onPointercancel": onControlPointerCancel,
|
25491
25371
|
"size": controlNodeSize.value,
|
25492
|
-
"style": "touch-action: none",
|
25493
25372
|
"tabindex": "-1"
|
25494
25373
|
}, null) : createVNode(VDefaultsProvider, {
|
25495
25374
|
"key": "increment-defaults",
|
@@ -25518,8 +25397,8 @@ const VNumberInput = genericComponent()({
|
|
25518
25397
|
"onClick": onControlClick,
|
25519
25398
|
"onPointerdown": onDownControlMousedown,
|
25520
25399
|
"onPointerup": onControlMouseup,
|
25400
|
+
"onPointercancel": onControlPointerCancel,
|
25521
25401
|
"size": controlNodeSize.value,
|
25522
|
-
"style": "touch-action: none",
|
25523
25402
|
"tabindex": "-1"
|
25524
25403
|
}, null) : createVNode(VDefaultsProvider, {
|
25525
25404
|
"key": "decrement-defaults",
|
@@ -25713,10 +25592,9 @@ const VOtpInput = genericComponent()({
|
|
25713
25592
|
e.preventDefault();
|
25714
25593
|
e.stopPropagation();
|
25715
25594
|
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25716
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25717
25595
|
if (isValidNumber(clipboardText)) return;
|
25718
25596
|
model.value = clipboardText.split('');
|
25719
|
-
inputRef.value?.[
|
25597
|
+
inputRef.value?.[index].blur();
|
25720
25598
|
}
|
25721
25599
|
function reset() {
|
25722
25600
|
model.value = [];
|
@@ -29498,7 +29376,7 @@ function createVuetify$1() {
|
|
29498
29376
|
};
|
29499
29377
|
});
|
29500
29378
|
}
|
29501
|
-
const version$1 = "3.8.7-
|
29379
|
+
const version$1 = "3.8.7-master.2025-05-29";
|
29502
29380
|
createVuetify$1.version = version$1;
|
29503
29381
|
|
29504
29382
|
// Vue's inject() can only be used in setup
|
@@ -29523,7 +29401,7 @@ const createVuetify = function () {
|
|
29523
29401
|
...options
|
29524
29402
|
});
|
29525
29403
|
};
|
29526
|
-
const version = "3.8.7-
|
29404
|
+
const version = "3.8.7-master.2025-05-29";
|
29527
29405
|
createVuetify.version = version;
|
29528
29406
|
|
29529
29407
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|