@vuetify/nightly 3.8.8-master.2025-06-08 → 3.8.9-dev.2025-06-11
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 +39 -16
- package/dist/json/attributes.json +3215 -3091
- package/dist/json/importMap-labs.json +44 -44
- package/dist/json/importMap.json +166 -166
- package/dist/json/tags.json +32 -1
- package/dist/json/web-types.json +6040 -5654
- package/dist/vuetify-labs.cjs +397 -154
- package/dist/vuetify-labs.css +4053 -4019
- package/dist/vuetify-labs.d.ts +2604 -2064
- package/dist/vuetify-labs.esm.js +398 -155
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +397 -154
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +391 -143
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3715 -3681
- package/dist/vuetify.d.ts +1600 -1100
- package/dist/vuetify.esm.js +392 -144
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +391 -143
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1198 -1183
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +6 -1
- package/lib/components/VAlert/VAlert.d.ts +35 -0
- package/lib/components/VAlert/VAlert.js +15 -10
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +7 -1
- package/lib/components/VAppBar/VAppBar.d.ts +15 -3
- package/lib/components/VAppBar/VAppBarNavIcon.d.ts +20 -10
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +154 -103
- package/lib/components/VAutocomplete/VAutocomplete.js +21 -3
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBadge/VBadge.d.ts +60 -0
- package/lib/components/VBadge/VBadge.js +7 -2
- package/lib/components/VBadge/VBadge.js.map +1 -1
- package/lib/components/VBtn/VBtn.d.ts +20 -10
- package/lib/components/VBtnGroup/VBtnGroup.css +30 -7
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +58 -32
- package/lib/components/VBtnGroup/VBtnGroup.js +7 -3
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +44 -17
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +25 -0
- package/lib/components/VCard/VCard.d.ts +20 -10
- package/lib/components/VCheckbox/VCheckbox.d.ts +23 -13
- package/lib/components/VCheckbox/VCheckboxBtn.d.ts +20 -10
- package/lib/components/VChip/VChip.d.ts +20 -10
- package/lib/components/VChipGroup/VChipGroup.d.ts +10 -0
- package/lib/components/VCombobox/VCombobox.d.ts +154 -103
- package/lib/components/VCombobox/VCombobox.js +22 -3
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +60 -0
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +13 -0
- package/lib/components/VDataTable/VDataTableHeaders.js +4 -2
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +42 -0
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +42 -0
- package/lib/components/VDatePicker/VDatePicker.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonth.js +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +20 -10
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +20 -10
- package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +20 -10
- package/lib/components/VFab/VFab.d.ts +20 -10
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VInfiniteScroll/VInfiniteScroll.d.ts +9 -3
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js +29 -0
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VList/VList.d.ts +13 -0
- package/lib/components/VList/VList.js +4 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +23 -10
- package/lib/components/VList/VListItem.js +7 -3
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/list.d.ts +9 -2
- package/lib/components/VList/list.js +7 -0
- package/lib/components/VList/list.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +103 -89
- package/lib/components/VNumberInput/VNumberInput.js +19 -4
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +2 -1
- 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/VRadio/VRadio.d.ts +20 -10
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +23 -13
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +171 -107
- package/lib/components/VSelect/VSelect.js +27 -8
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.d.ts +20 -10
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +28 -14
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +10 -0
- package/lib/components/VSlideGroup/VSlideGroup.js +2 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSlider/VSliderThumb.d.ts +20 -10
- package/lib/components/VStepper/VStepperItem.d.ts +28 -14
- package/lib/components/VSwitch/VSwitch.d.ts +23 -13
- package/lib/components/VTable/VTable.css +6 -0
- package/lib/components/VTable/VTable.d.ts +55 -24
- package/lib/components/VTable/VTable.js +9 -2
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTable/VTable.sass +14 -0
- package/lib/components/VTable/_variables.scss +1 -0
- package/lib/components/VTabs/VTab.d.ts +56 -28
- package/lib/components/VTabs/VTabs.d.ts +10 -0
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- package/lib/components/VToolbar/VToolbar.d.ts +15 -3
- package/lib/components/VToolbar/VToolbar.js +6 -3
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/composables/calendar.d.ts +6 -0
- package/lib/composables/calendar.js +2 -1
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/DateAdapter.d.ts +3 -3
- package/lib/composables/date/DateAdapter.js.map +1 -1
- package/lib/composables/date/adapters/string.d.ts +54 -0
- package/lib/composables/date/adapters/string.js +153 -0
- package/lib/composables/date/adapters/string.js.map +1 -0
- package/lib/composables/date/adapters/vuetify.d.ts +1 -1
- package/lib/composables/date/adapters/vuetify.js +5 -5
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +3 -3
- package/lib/composables/date/date.js +1 -1
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/date/index.d.ts +1 -0
- package/lib/composables/date/index.js +1 -0
- package/lib/composables/date/index.js.map +1 -1
- package/lib/composables/filter.js +3 -0
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/iconSizes.d.ts +28 -0
- package/lib/composables/iconSizes.js +23 -0
- package/lib/composables/iconSizes.js.map +1 -0
- package/lib/composables/list-items.js +2 -2
- package/lib/composables/list-items.js.map +1 -1
- package/lib/composables/theme.d.ts +6 -1
- package/lib/composables/theme.js +94 -26
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/virtual.js +6 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/directives/ripple/index.d.ts +2 -1
- package/lib/directives/ripple/index.js +12 -7
- package/lib/directives/ripple/index.js.map +1 -1
- package/lib/entry-bundler.d.ts +3 -3
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +86 -71
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +10 -0
- package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +97 -87
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VFileUpload/VFileUploadItem.d.ts +20 -10
- package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
- package/lib/labs/VIconBtn/VIconBtn.js +7 -11
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/VStepperVertical/VStepperVertical.d.ts +20 -10
- package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +20 -10
- package/lib/labs/VTreeview/VTreeview.d.ts +13 -0
- package/lib/labs/VTreeview/VTreeviewItem.d.ts +20 -10
- package/lib/labs/entry-bundler.d.ts +3 -3
- package/lib/util/globals.d.ts +1 -0
- package/lib/util/globals.js +1 -0
- package/lib/util/globals.js.map +1 -1
- package/lib/util/helpers.d.ts +1 -1
- package/lib/util/helpers.js +0 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +3 -1
package/dist/vuetify.esm.js
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.
|
2
|
+
* Vuetify v3.8.9-dev.2025-06-11
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
6
6
|
|
7
|
-
import { shallowRef, reactive, watchEffect, toRef, capitalize,
|
7
|
+
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, 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';
|
13
14
|
|
14
15
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
15
16
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -526,7 +527,6 @@ function extractNumber(text, decimalDigitsLimit) {
|
|
526
527
|
return cleanText;
|
527
528
|
}
|
528
529
|
function camelizeProps(props) {
|
529
|
-
if (!props) return;
|
530
530
|
const out = {};
|
531
531
|
for (const prop in props) {
|
532
532
|
out[camelize(prop)] = props[prop];
|
@@ -2832,6 +2832,7 @@ const makeThemeProps = propsFactory({
|
|
2832
2832
|
function genDefaults$1() {
|
2833
2833
|
return {
|
2834
2834
|
defaultTheme: 'light',
|
2835
|
+
prefix: 'v-',
|
2835
2836
|
variations: {
|
2836
2837
|
colors: [],
|
2837
2838
|
lighten: 0,
|
@@ -2913,7 +2914,10 @@ function genDefaults$1() {
|
|
2913
2914
|
}
|
2914
2915
|
}
|
2915
2916
|
},
|
2916
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2917
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
2918
|
+
scoped: false,
|
2919
|
+
unimportant: false,
|
2920
|
+
utilities: true
|
2917
2921
|
};
|
2918
2922
|
}
|
2919
2923
|
function parseThemeOptions() {
|
@@ -2936,21 +2940,21 @@ function parseThemeOptions() {
|
|
2936
2940
|
function createCssClass(lines, selector, content, scope) {
|
2937
2941
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2938
2942
|
}
|
2939
|
-
function genCssVariables(theme) {
|
2943
|
+
function genCssVariables(theme, prefix) {
|
2940
2944
|
const lightOverlay = theme.dark ? 2 : 1;
|
2941
2945
|
const darkOverlay = theme.dark ? 1 : 2;
|
2942
2946
|
const variables = [];
|
2943
2947
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2944
2948
|
const rgb = parseColor(value);
|
2945
|
-
variables.push(
|
2949
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2946
2950
|
if (!key.startsWith('on-')) {
|
2947
|
-
variables.push(
|
2951
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2948
2952
|
}
|
2949
2953
|
}
|
2950
2954
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2951
2955
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2952
2956
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2953
|
-
variables.push(
|
2957
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
2954
2958
|
}
|
2955
2959
|
return variables;
|
2956
2960
|
}
|
@@ -2994,7 +2998,8 @@ function getScopedSelector(selector, scope) {
|
|
2994
2998
|
const scopeSelector = `:where(${scope})`;
|
2995
2999
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2996
3000
|
}
|
2997
|
-
function upsertStyles(
|
3001
|
+
function upsertStyles(id, cspNonce, styles) {
|
3002
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2998
3003
|
if (!styleEl) return;
|
2999
3004
|
styleEl.innerHTML = styles;
|
3000
3005
|
}
|
@@ -3014,8 +3019,17 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
3014
3019
|
// Composables
|
3015
3020
|
function createTheme(options) {
|
3016
3021
|
const parsedOptions = parseThemeOptions(options);
|
3017
|
-
const
|
3022
|
+
const _name = shallowRef(parsedOptions.defaultTheme);
|
3018
3023
|
const themes = ref(parsedOptions.themes);
|
3024
|
+
const systemName = shallowRef('light');
|
3025
|
+
const name = computed({
|
3026
|
+
get() {
|
3027
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
3028
|
+
},
|
3029
|
+
set(val) {
|
3030
|
+
_name.value = val;
|
3031
|
+
}
|
3032
|
+
});
|
3019
3033
|
const computedThemes = computed(() => {
|
3020
3034
|
const acc = {};
|
3021
3035
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3036,28 +3050,49 @@ function createTheme(options) {
|
|
3036
3050
|
const current = toRef(() => computedThemes.value[name.value]);
|
3037
3051
|
const styles = computed(() => {
|
3038
3052
|
const lines = [];
|
3053
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
3054
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3039
3055
|
if (current.value?.dark) {
|
3040
3056
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3041
3057
|
}
|
3042
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3058
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
3043
3059
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3044
|
-
createCssClass(lines,
|
3045
|
-
}
|
3046
|
-
|
3047
|
-
|
3048
|
-
|
3049
|
-
|
3050
|
-
|
3051
|
-
|
3052
|
-
|
3053
|
-
|
3054
|
-
|
3055
|
-
|
3060
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
3061
|
+
}
|
3062
|
+
if (parsedOptions.utilities) {
|
3063
|
+
const bgLines = [];
|
3064
|
+
const fgLines = [];
|
3065
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3066
|
+
for (const key of colors) {
|
3067
|
+
if (key.startsWith('on-')) {
|
3068
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
3069
|
+
} else {
|
3070
|
+
createCssClass(bgLines, `.${scoped}bg-${key}`, [`--${parsedOptions.prefix}theme-overlay-multiplier: var(--${parsedOptions.prefix}theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`, `color: rgb(var(--${parsedOptions.prefix}theme-on-${key}))${important}`], parsedOptions.scope);
|
3071
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
3072
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3073
|
+
}
|
3056
3074
|
}
|
3075
|
+
lines.push(...bgLines, ...fgLines);
|
3057
3076
|
}
|
3058
|
-
lines.push(...bgLines, ...fgLines);
|
3059
3077
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3060
3078
|
});
|
3079
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3080
|
+
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
3081
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
3082
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3083
|
+
function updateSystemName() {
|
3084
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
3085
|
+
}
|
3086
|
+
updateSystemName();
|
3087
|
+
media.addEventListener('change', updateSystemName, {
|
3088
|
+
passive: true
|
3089
|
+
});
|
3090
|
+
if (getCurrentScope()) {
|
3091
|
+
onScopeDispose(() => {
|
3092
|
+
media.removeEventListener('change', updateSystemName);
|
3093
|
+
});
|
3094
|
+
}
|
3095
|
+
}
|
3061
3096
|
function install(app) {
|
3062
3097
|
if (parsedOptions.isDisabled) return;
|
3063
3098
|
const head = app._context.provides.usehead;
|
@@ -3095,22 +3130,55 @@ function createTheme(options) {
|
|
3095
3130
|
updateStyles();
|
3096
3131
|
}
|
3097
3132
|
function updateStyles() {
|
3098
|
-
upsertStyles(
|
3133
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3099
3134
|
}
|
3100
3135
|
}
|
3101
3136
|
}
|
3102
|
-
|
3137
|
+
function change(themeName) {
|
3138
|
+
if (!themeNames.value.includes(themeName)) {
|
3139
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3140
|
+
return;
|
3141
|
+
}
|
3142
|
+
name.value = themeName;
|
3143
|
+
}
|
3144
|
+
function cycle() {
|
3145
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3146
|
+
const currentIndex = themeArray.indexOf(name.value);
|
3147
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3148
|
+
change(themeArray[nextIndex]);
|
3149
|
+
}
|
3150
|
+
function toggle() {
|
3151
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3152
|
+
cycle(themeArray);
|
3153
|
+
}
|
3154
|
+
const globalName = new Proxy(name, {
|
3155
|
+
get(target, prop) {
|
3156
|
+
return target[prop];
|
3157
|
+
},
|
3158
|
+
set(target, prop, val) {
|
3159
|
+
if (prop === 'value') {
|
3160
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3161
|
+
}
|
3162
|
+
// @ts-expect-error
|
3163
|
+
target[prop] = val;
|
3164
|
+
return true;
|
3165
|
+
}
|
3166
|
+
});
|
3103
3167
|
return {
|
3104
3168
|
install,
|
3169
|
+
change,
|
3170
|
+
cycle,
|
3171
|
+
toggle,
|
3105
3172
|
isDisabled: parsedOptions.isDisabled,
|
3106
3173
|
name,
|
3107
3174
|
themes,
|
3108
3175
|
current,
|
3109
3176
|
computedThemes,
|
3177
|
+
prefix: parsedOptions.prefix,
|
3110
3178
|
themeClasses,
|
3111
3179
|
styles,
|
3112
3180
|
global: {
|
3113
|
-
name,
|
3181
|
+
name: globalName,
|
3114
3182
|
current
|
3115
3183
|
}
|
3116
3184
|
};
|
@@ -3121,7 +3189,7 @@ function provideTheme(props) {
|
|
3121
3189
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3122
3190
|
const name = toRef(() => props.theme ?? theme.name.value);
|
3123
3191
|
const current = toRef(() => theme.themes.value[name.value]);
|
3124
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
3192
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
3125
3193
|
const newTheme = {
|
3126
3194
|
...theme,
|
3127
3195
|
name,
|
@@ -4225,7 +4293,10 @@ const makeVToolbarProps = propsFactory({
|
|
4225
4293
|
default: 'default',
|
4226
4294
|
validator: v => allowedDensities$1.includes(v)
|
4227
4295
|
},
|
4228
|
-
extended:
|
4296
|
+
extended: {
|
4297
|
+
type: Boolean,
|
4298
|
+
default: null
|
4299
|
+
},
|
4229
4300
|
extensionHeight: {
|
4230
4301
|
type: [Number, String],
|
4231
4302
|
default: 48
|
@@ -4273,7 +4344,7 @@ const VToolbar = genericComponent()({
|
|
4273
4344
|
const {
|
4274
4345
|
rtlClasses
|
4275
4346
|
} = useRtl();
|
4276
|
-
const isExtended = shallowRef(
|
4347
|
+
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
4277
4348
|
const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
|
4278
4349
|
const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
|
4279
4350
|
provideDefaults({
|
@@ -4285,7 +4356,7 @@ const VToolbar = genericComponent()({
|
|
4285
4356
|
const hasTitle = !!(props.title || slots.title);
|
4286
4357
|
const hasImage = !!(slots.image || props.image);
|
4287
4358
|
const extension = slots.extension?.();
|
4288
|
-
isExtended.value =
|
4359
|
+
isExtended.value = props.extended === null ? !!extension : props.extended;
|
4289
4360
|
return createVNode(props.tag, {
|
4290
4361
|
"class": normalizeClass(['v-toolbar', {
|
4291
4362
|
'v-toolbar--absolute': props.absolute,
|
@@ -4668,9 +4739,15 @@ function useVariant(props) {
|
|
4668
4739
|
};
|
4669
4740
|
}
|
4670
4741
|
|
4742
|
+
// Types
|
4743
|
+
|
4671
4744
|
const makeVBtnGroupProps = propsFactory({
|
4672
4745
|
baseColor: String,
|
4673
4746
|
divided: Boolean,
|
4747
|
+
direction: {
|
4748
|
+
type: String,
|
4749
|
+
default: 'horizontal'
|
4750
|
+
},
|
4674
4751
|
...makeBorderProps(),
|
4675
4752
|
...makeComponentProps(),
|
4676
4753
|
...makeDensityProps(),
|
@@ -4704,7 +4781,7 @@ const VBtnGroup = genericComponent()({
|
|
4704
4781
|
} = useRounded(props);
|
4705
4782
|
provideDefaults({
|
4706
4783
|
VBtn: {
|
4707
|
-
height: 'auto',
|
4784
|
+
height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
4708
4785
|
baseColor: toRef(() => props.baseColor),
|
4709
4786
|
color: toRef(() => props.color),
|
4710
4787
|
density: toRef(() => props.density),
|
@@ -4714,7 +4791,7 @@ const VBtnGroup = genericComponent()({
|
|
4714
4791
|
});
|
4715
4792
|
useRender(() => {
|
4716
4793
|
return createVNode(props.tag, {
|
4717
|
-
"class": normalizeClass(['v-btn-group', {
|
4794
|
+
"class": normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
|
4718
4795
|
'v-btn-group--divided': props.divided
|
4719
4796
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4720
4797
|
"style": normalizeStyle(props.style)
|
@@ -5837,8 +5914,8 @@ function rippleCancelShow(e) {
|
|
5837
5914
|
window.clearTimeout(element._ripple.showTimer);
|
5838
5915
|
}
|
5839
5916
|
let keyboardRipple = false;
|
5840
|
-
function keyboardRippleShow(e) {
|
5841
|
-
if (!keyboardRipple && (e.keyCode
|
5917
|
+
function keyboardRippleShow(e, keys) {
|
5918
|
+
if (!keyboardRipple && keys.includes(e.keyCode)) {
|
5842
5919
|
keyboardRipple = true;
|
5843
5920
|
rippleShow(e);
|
5844
5921
|
}
|
@@ -5866,9 +5943,12 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5866
5943
|
el._ripple.enabled = enabled;
|
5867
5944
|
el._ripple.centered = modifiers.center;
|
5868
5945
|
el._ripple.circle = modifiers.circle;
|
5869
|
-
|
5870
|
-
|
5946
|
+
const bindingValue = isObject(value) ? value : {};
|
5947
|
+
if (bindingValue.class) {
|
5948
|
+
el._ripple.class = bindingValue.class;
|
5871
5949
|
}
|
5950
|
+
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5951
|
+
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5872
5952
|
if (enabled && !wasEnabled) {
|
5873
5953
|
if (modifiers.stop) {
|
5874
5954
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5890,7 +5970,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5890
5970
|
el.addEventListener('mousedown', rippleShow);
|
5891
5971
|
el.addEventListener('mouseup', rippleHide);
|
5892
5972
|
el.addEventListener('mouseleave', rippleHide);
|
5893
|
-
el.addEventListener('keydown', keyboardRippleShow);
|
5973
|
+
el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
|
5894
5974
|
el.addEventListener('keyup', keyboardRippleHide);
|
5895
5975
|
el.addEventListener('blur', focusRippleHide);
|
5896
5976
|
|
@@ -5910,7 +5990,9 @@ function removeListeners(el) {
|
|
5910
5990
|
el.removeEventListener('touchcancel', rippleHide);
|
5911
5991
|
el.removeEventListener('mouseup', rippleHide);
|
5912
5992
|
el.removeEventListener('mouseleave', rippleHide);
|
5913
|
-
el.
|
5993
|
+
if (el._ripple?.keyDownHandler) {
|
5994
|
+
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5995
|
+
}
|
5914
5996
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5915
5997
|
el.removeEventListener('dragstart', rippleHide);
|
5916
5998
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5919,8 +6001,8 @@ function mounted$4(el, binding) {
|
|
5919
6001
|
updateRipple(el, binding, false);
|
5920
6002
|
}
|
5921
6003
|
function unmounted$4(el) {
|
5922
|
-
delete el._ripple;
|
5923
6004
|
removeListeners(el);
|
6005
|
+
delete el._ripple;
|
5924
6006
|
}
|
5925
6007
|
function updated$1(el, binding) {
|
5926
6008
|
if (binding.value === binding.oldValue) {
|
@@ -6193,6 +6275,31 @@ const VAppBarTitle = genericComponent()({
|
|
6193
6275
|
// Utilities
|
6194
6276
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6195
6277
|
|
6278
|
+
// Utilities
|
6279
|
+
|
6280
|
+
// Types
|
6281
|
+
|
6282
|
+
// Types
|
6283
|
+
|
6284
|
+
// Composables
|
6285
|
+
const makeIconSizeProps = propsFactory({
|
6286
|
+
iconSize: [Number, String],
|
6287
|
+
iconSizes: {
|
6288
|
+
type: Array,
|
6289
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6290
|
+
}
|
6291
|
+
}, 'iconSize');
|
6292
|
+
function useIconSizes(props, fallback) {
|
6293
|
+
const iconSize = computed(() => {
|
6294
|
+
const iconSizeMap = new Map(props.iconSizes);
|
6295
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6296
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6297
|
+
});
|
6298
|
+
return {
|
6299
|
+
iconSize
|
6300
|
+
};
|
6301
|
+
}
|
6302
|
+
|
6196
6303
|
// Types
|
6197
6304
|
|
6198
6305
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6232,6 +6339,7 @@ const makeVAlertProps = propsFactory({
|
|
6232
6339
|
...makeDensityProps(),
|
6233
6340
|
...makeDimensionProps(),
|
6234
6341
|
...makeElevationProps(),
|
6342
|
+
...makeIconSizeProps(),
|
6235
6343
|
...makeLocationProps(),
|
6236
6344
|
...makePositionProps(),
|
6237
6345
|
...makeRoundedProps(),
|
@@ -6259,6 +6367,9 @@ const VAlert = genericComponent()({
|
|
6259
6367
|
if (!props.type) return props.icon;
|
6260
6368
|
return props.icon ?? `$${props.type}`;
|
6261
6369
|
});
|
6370
|
+
const {
|
6371
|
+
iconSize
|
6372
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6262
6373
|
const {
|
6263
6374
|
themeClasses
|
6264
6375
|
} = provideTheme(props);
|
@@ -6306,6 +6417,11 @@ const VAlert = genericComponent()({
|
|
6306
6417
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6307
6418
|
const hasTitle = !!(slots.title || props.title);
|
6308
6419
|
const hasClose = !!(slots.close || props.closable);
|
6420
|
+
const iconProps = {
|
6421
|
+
density: props.density,
|
6422
|
+
icon: icon.value,
|
6423
|
+
size: iconSize.value
|
6424
|
+
};
|
6309
6425
|
return isActive.value && createVNode(props.tag, {
|
6310
6426
|
"class": normalizeClass(['v-alert', props.border && {
|
6311
6427
|
'v-alert--border': !!props.border,
|
@@ -6323,19 +6439,14 @@ const VAlert = genericComponent()({
|
|
6323
6439
|
}, null), hasPrepend && createElementVNode("div", {
|
6324
6440
|
"key": "prepend",
|
6325
6441
|
"class": "v-alert__prepend"
|
6326
|
-
}, [!slots.prepend ? createVNode(VIcon, {
|
6327
|
-
"key": "prepend-icon"
|
6328
|
-
|
6329
|
-
"icon": icon.value,
|
6330
|
-
"size": props.prominent ? 44 : 28
|
6331
|
-
}, null) : createVNode(VDefaultsProvider, {
|
6442
|
+
}, [!slots.prepend ? createVNode(VIcon, mergeProps({
|
6443
|
+
"key": "prepend-icon"
|
6444
|
+
}, iconProps), null) : createVNode(VDefaultsProvider, {
|
6332
6445
|
"key": "prepend-defaults",
|
6333
6446
|
"disabled": !icon.value,
|
6334
6447
|
"defaults": {
|
6335
6448
|
VIcon: {
|
6336
|
-
|
6337
|
-
icon: icon.value,
|
6338
|
-
size: props.prominent ? 44 : 28
|
6449
|
+
...iconProps
|
6339
6450
|
}
|
6340
6451
|
}
|
6341
6452
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7860,6 +7971,7 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7860
7971
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7861
7972
|
const makeVSlideGroupProps = propsFactory({
|
7862
7973
|
centerActive: Boolean,
|
7974
|
+
contentClass: null,
|
7863
7975
|
direction: {
|
7864
7976
|
type: String,
|
7865
7977
|
default: 'horizontal'
|
@@ -8172,7 +8284,7 @@ const VSlideGroup = genericComponent()({
|
|
8172
8284
|
})]), createElementVNode("div", {
|
8173
8285
|
"key": "container",
|
8174
8286
|
"ref": containerRef,
|
8175
|
-
"class":
|
8287
|
+
"class": normalizeClass(['v-slide-group__container', props.contentClass]),
|
8176
8288
|
"onScroll": onScroll
|
8177
8289
|
}, [createElementVNode("div", {
|
8178
8290
|
"ref": contentRef,
|
@@ -8535,16 +8647,85 @@ const VChip = genericComponent()({
|
|
8535
8647
|
}
|
8536
8648
|
});
|
8537
8649
|
|
8650
|
+
const makeVDividerProps = propsFactory({
|
8651
|
+
color: String,
|
8652
|
+
inset: Boolean,
|
8653
|
+
length: [Number, String],
|
8654
|
+
opacity: [Number, String],
|
8655
|
+
thickness: [Number, String],
|
8656
|
+
vertical: Boolean,
|
8657
|
+
...makeComponentProps(),
|
8658
|
+
...makeThemeProps()
|
8659
|
+
}, 'VDivider');
|
8660
|
+
const VDivider = genericComponent()({
|
8661
|
+
name: 'VDivider',
|
8662
|
+
props: makeVDividerProps(),
|
8663
|
+
setup(props, _ref) {
|
8664
|
+
let {
|
8665
|
+
attrs,
|
8666
|
+
slots
|
8667
|
+
} = _ref;
|
8668
|
+
const {
|
8669
|
+
themeClasses
|
8670
|
+
} = provideTheme(props);
|
8671
|
+
const {
|
8672
|
+
textColorClasses,
|
8673
|
+
textColorStyles
|
8674
|
+
} = useTextColor(() => props.color);
|
8675
|
+
const dividerStyles = computed(() => {
|
8676
|
+
const styles = {};
|
8677
|
+
if (props.length) {
|
8678
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8679
|
+
}
|
8680
|
+
if (props.thickness) {
|
8681
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8682
|
+
}
|
8683
|
+
return styles;
|
8684
|
+
});
|
8685
|
+
useRender(() => {
|
8686
|
+
const divider = createElementVNode("hr", {
|
8687
|
+
"class": normalizeClass([{
|
8688
|
+
'v-divider': true,
|
8689
|
+
'v-divider--inset': props.inset,
|
8690
|
+
'v-divider--vertical': props.vertical
|
8691
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
8692
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8693
|
+
'--v-border-opacity': props.opacity
|
8694
|
+
}, props.style]),
|
8695
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8696
|
+
"role": `${attrs.role || 'separator'}`
|
8697
|
+
}, null);
|
8698
|
+
if (!slots.default) return divider;
|
8699
|
+
return createElementVNode("div", {
|
8700
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
8701
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8702
|
+
'v-divider__wrapper--inset': props.inset
|
8703
|
+
}])
|
8704
|
+
}, [divider, createElementVNode("div", {
|
8705
|
+
"class": "v-divider__content"
|
8706
|
+
}, [slots.default()]), divider]);
|
8707
|
+
});
|
8708
|
+
return {};
|
8709
|
+
}
|
8710
|
+
});
|
8711
|
+
|
8538
8712
|
// Utilities
|
8539
8713
|
|
8540
8714
|
// List
|
8541
8715
|
const ListKey = Symbol.for('vuetify:list');
|
8542
8716
|
function createList() {
|
8717
|
+
let {
|
8718
|
+
filterable
|
8719
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8720
|
+
filterable: false
|
8721
|
+
};
|
8543
8722
|
const parent = inject$1(ListKey, {
|
8723
|
+
filterable: false,
|
8544
8724
|
hasPrepend: shallowRef(false),
|
8545
8725
|
updateHasPrepend: () => null
|
8546
8726
|
});
|
8547
8727
|
const data = {
|
8728
|
+
filterable: parent.filterable || filterable,
|
8548
8729
|
hasPrepend: shallowRef(false),
|
8549
8730
|
updateHasPrepend: value => {
|
8550
8731
|
if (value) data.hasPrepend.value = value;
|
@@ -9496,6 +9677,9 @@ const VListItem = genericComponent()({
|
|
9496
9677
|
roundedClasses
|
9497
9678
|
} = useRounded(roundedProps);
|
9498
9679
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9680
|
+
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9681
|
+
keys: [keyCodes.enter]
|
9682
|
+
} : props.ripple);
|
9499
9683
|
const slotProps = computed(() => ({
|
9500
9684
|
isActive: isActive.value,
|
9501
9685
|
select,
|
@@ -9520,8 +9704,9 @@ const VListItem = genericComponent()({
|
|
9520
9704
|
function onKeyDown(e) {
|
9521
9705
|
const target = e.target;
|
9522
9706
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9523
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
9707
|
+
if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
|
9524
9708
|
e.preventDefault();
|
9709
|
+
e.stopPropagation();
|
9525
9710
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9526
9711
|
}
|
9527
9712
|
}
|
@@ -9631,7 +9816,7 @@ const VListItem = genericComponent()({
|
|
9631
9816
|
}), createElementVNode("div", {
|
9632
9817
|
"class": "v-list-item__spacer"
|
9633
9818
|
}, null)])]
|
9634
|
-
}), [[Ripple, isClickable.value &&
|
9819
|
+
}), [[Ripple, isClickable.value && rippleOptions.value]]);
|
9635
9820
|
});
|
9636
9821
|
return {
|
9637
9822
|
activate,
|
@@ -9686,68 +9871,6 @@ const VListSubheader = genericComponent()({
|
|
9686
9871
|
}
|
9687
9872
|
});
|
9688
9873
|
|
9689
|
-
const makeVDividerProps = propsFactory({
|
9690
|
-
color: String,
|
9691
|
-
inset: Boolean,
|
9692
|
-
length: [Number, String],
|
9693
|
-
opacity: [Number, String],
|
9694
|
-
thickness: [Number, String],
|
9695
|
-
vertical: Boolean,
|
9696
|
-
...makeComponentProps(),
|
9697
|
-
...makeThemeProps()
|
9698
|
-
}, 'VDivider');
|
9699
|
-
const VDivider = genericComponent()({
|
9700
|
-
name: 'VDivider',
|
9701
|
-
props: makeVDividerProps(),
|
9702
|
-
setup(props, _ref) {
|
9703
|
-
let {
|
9704
|
-
attrs,
|
9705
|
-
slots
|
9706
|
-
} = _ref;
|
9707
|
-
const {
|
9708
|
-
themeClasses
|
9709
|
-
} = provideTheme(props);
|
9710
|
-
const {
|
9711
|
-
textColorClasses,
|
9712
|
-
textColorStyles
|
9713
|
-
} = useTextColor(() => props.color);
|
9714
|
-
const dividerStyles = computed(() => {
|
9715
|
-
const styles = {};
|
9716
|
-
if (props.length) {
|
9717
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9718
|
-
}
|
9719
|
-
if (props.thickness) {
|
9720
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9721
|
-
}
|
9722
|
-
return styles;
|
9723
|
-
});
|
9724
|
-
useRender(() => {
|
9725
|
-
const divider = createElementVNode("hr", {
|
9726
|
-
"class": normalizeClass([{
|
9727
|
-
'v-divider': true,
|
9728
|
-
'v-divider--inset': props.inset,
|
9729
|
-
'v-divider--vertical': props.vertical
|
9730
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
9731
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9732
|
-
'--v-border-opacity': props.opacity
|
9733
|
-
}, props.style]),
|
9734
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9735
|
-
"role": `${attrs.role || 'separator'}`
|
9736
|
-
}, null);
|
9737
|
-
if (!slots.default) return divider;
|
9738
|
-
return createElementVNode("div", {
|
9739
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
9740
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9741
|
-
'v-divider__wrapper--inset': props.inset
|
9742
|
-
}])
|
9743
|
-
}, [divider, createElementVNode("div", {
|
9744
|
-
"class": "v-divider__content"
|
9745
|
-
}, [slots.default()]), divider]);
|
9746
|
-
});
|
9747
|
-
return {};
|
9748
|
-
}
|
9749
|
-
});
|
9750
|
-
|
9751
9874
|
// Types
|
9752
9875
|
|
9753
9876
|
const makeVListChildrenProps = propsFactory({
|
@@ -9864,7 +9987,7 @@ function transformItem$3(props, item) {
|
|
9864
9987
|
const _props = {
|
9865
9988
|
title,
|
9866
9989
|
value,
|
9867
|
-
...
|
9990
|
+
...itemProps
|
9868
9991
|
};
|
9869
9992
|
return {
|
9870
9993
|
title: String(_props.title ?? ''),
|
@@ -10016,6 +10139,7 @@ const makeVListProps = propsFactory({
|
|
10016
10139
|
activeClass: String,
|
10017
10140
|
bgColor: String,
|
10018
10141
|
disabled: Boolean,
|
10142
|
+
filterable: Boolean,
|
10019
10143
|
expandIcon: IconValue,
|
10020
10144
|
collapseIcon: IconValue,
|
10021
10145
|
lines: {
|
@@ -10099,7 +10223,9 @@ const VList = genericComponent()({
|
|
10099
10223
|
const activeColor = toRef(() => props.activeColor);
|
10100
10224
|
const baseColor = toRef(() => props.baseColor);
|
10101
10225
|
const color = toRef(() => props.color);
|
10102
|
-
createList(
|
10226
|
+
createList({
|
10227
|
+
filterable: props.filterable
|
10228
|
+
});
|
10103
10229
|
provideDefaults({
|
10104
10230
|
VListGroup: {
|
10105
10231
|
activeColor,
|
@@ -12676,7 +12802,12 @@ function useVirtual(props, items) {
|
|
12676
12802
|
}
|
12677
12803
|
function calculateOffset(index) {
|
12678
12804
|
index = clamp(index, 0, items.value.length - 1);
|
12679
|
-
|
12805
|
+
const whole = Math.floor(index);
|
12806
|
+
const fraction = index % 1;
|
12807
|
+
const next = whole + 1;
|
12808
|
+
const wholeOffset = offsets[whole] || 0;
|
12809
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12810
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12680
12811
|
}
|
12681
12812
|
function calculateIndex(scrollTop) {
|
12682
12813
|
return binaryClosest(offsets, scrollTop);
|
@@ -13030,6 +13161,7 @@ const makeSelectProps = propsFactory({
|
|
13030
13161
|
},
|
13031
13162
|
openOnClear: Boolean,
|
13032
13163
|
itemColor: String,
|
13164
|
+
noAutoScroll: Boolean,
|
13033
13165
|
...makeItemsProps({
|
13034
13166
|
itemChildren: false
|
13035
13167
|
})
|
@@ -13244,7 +13376,7 @@ const VSelect = genericComponent()({
|
|
13244
13376
|
watch(menu, () => {
|
13245
13377
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13246
13378
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13247
|
-
IN_BROWSER && window.requestAnimationFrame(() => {
|
13379
|
+
IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
|
13248
13380
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13249
13381
|
});
|
13250
13382
|
}
|
@@ -13331,11 +13463,28 @@ const VSelect = genericComponent()({
|
|
13331
13463
|
index,
|
13332
13464
|
itemRef
|
13333
13465
|
} = _ref2;
|
13466
|
+
const camelizedProps = camelizeProps(item.props);
|
13334
13467
|
const itemProps = mergeProps(item.props, {
|
13335
13468
|
ref: itemRef,
|
13336
13469
|
key: item.value,
|
13337
13470
|
onClick: () => select(item, null)
|
13338
13471
|
});
|
13472
|
+
if (item.raw.type === 'divider') {
|
13473
|
+
return slots.divider?.({
|
13474
|
+
props: item.raw,
|
13475
|
+
index
|
13476
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13477
|
+
"key": `divider-${index}`
|
13478
|
+
}), null);
|
13479
|
+
}
|
13480
|
+
if (item.raw.type === 'subheader') {
|
13481
|
+
return slots.subheader?.({
|
13482
|
+
props: item.raw,
|
13483
|
+
index
|
13484
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13485
|
+
"key": `subheader-${index}`
|
13486
|
+
}), null);
|
13487
|
+
}
|
13339
13488
|
return slots.item?.({
|
13340
13489
|
item,
|
13341
13490
|
index,
|
@@ -13352,10 +13501,10 @@ const VSelect = genericComponent()({
|
|
13352
13501
|
"modelValue": isSelected,
|
13353
13502
|
"ripple": false,
|
13354
13503
|
"tabindex": "-1"
|
13355
|
-
}, null) : undefined,
|
13356
|
-
"image":
|
13357
|
-
}, null),
|
13358
|
-
"icon":
|
13504
|
+
}, null) : undefined, camelizedProps.prependAvatar && createVNode(VAvatar, {
|
13505
|
+
"image": camelizedProps.prependAvatar
|
13506
|
+
}, null), camelizedProps.prependIcon && createVNode(VIcon, {
|
13507
|
+
"icon": camelizedProps.prependIcon
|
13359
13508
|
}, null)]);
|
13360
13509
|
}
|
13361
13510
|
});
|
@@ -13496,6 +13645,9 @@ function filterItems(items, query, options) {
|
|
13496
13645
|
let match = -1;
|
13497
13646
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13498
13647
|
if (typeof item === 'object') {
|
13648
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13649
|
+
continue;
|
13650
|
+
}
|
13499
13651
|
const filterKeys = keys || Object.keys(transformed);
|
13500
13652
|
for (const key of filterKeys) {
|
13501
13653
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13698,7 +13850,7 @@ const VAutocomplete = genericComponent()({
|
|
13698
13850
|
menu.value = !menu.value;
|
13699
13851
|
}
|
13700
13852
|
function onListKeydown(e) {
|
13701
|
-
if (e.key
|
13853
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
13702
13854
|
vTextFieldRef.value?.focus();
|
13703
13855
|
}
|
13704
13856
|
}
|
@@ -13903,6 +14055,7 @@ const VAutocomplete = genericComponent()({
|
|
13903
14055
|
}, props.menuProps), {
|
13904
14056
|
default: () => [hasList && createVNode(VList, mergeProps({
|
13905
14057
|
"ref": listRef,
|
14058
|
+
"filterable": true,
|
13906
14059
|
"selected": selectedValues.value,
|
13907
14060
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13908
14061
|
"onMousedown": e => e.preventDefault(),
|
@@ -13934,6 +14087,22 @@ const VAutocomplete = genericComponent()({
|
|
13934
14087
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13935
14088
|
onClick: () => select(item, null)
|
13936
14089
|
});
|
14090
|
+
if (item.raw.type === 'divider') {
|
14091
|
+
return slots.divider?.({
|
14092
|
+
props: item.raw,
|
14093
|
+
index
|
14094
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
14095
|
+
"key": `divider-${index}`
|
14096
|
+
}), null);
|
14097
|
+
}
|
14098
|
+
if (item.raw.type === 'subheader') {
|
14099
|
+
return slots.subheader?.({
|
14100
|
+
props: item.raw,
|
14101
|
+
index
|
14102
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
14103
|
+
"key": `subheader-${index}`
|
14104
|
+
}), null);
|
14105
|
+
}
|
13937
14106
|
return slots.item?.({
|
13938
14107
|
item,
|
13939
14108
|
index,
|
@@ -14078,7 +14247,8 @@ const makeVBadgeProps = propsFactory({
|
|
14078
14247
|
...makeThemeProps(),
|
14079
14248
|
...makeTransitionProps({
|
14080
14249
|
transition: 'scale-rotate-transition'
|
14081
|
-
})
|
14250
|
+
}),
|
14251
|
+
...makeDimensionProps()
|
14082
14252
|
}, 'VBadge');
|
14083
14253
|
const VBadge = genericComponent()({
|
14084
14254
|
name: 'VBadge',
|
@@ -14108,6 +14278,9 @@ const VBadge = genericComponent()({
|
|
14108
14278
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
14109
14279
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
14110
14280
|
});
|
14281
|
+
const {
|
14282
|
+
dimensionStyles
|
14283
|
+
} = useDimension(props);
|
14111
14284
|
useRender(() => {
|
14112
14285
|
const value = Number(props.content);
|
14113
14286
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -14129,7 +14302,7 @@ const VBadge = genericComponent()({
|
|
14129
14302
|
}, {
|
14130
14303
|
default: () => [withDirectives(createElementVNode("span", mergeProps({
|
14131
14304
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
14132
|
-
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14305
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, dimensionStyles.value, props.inline ? {} : locationStyles.value],
|
14133
14306
|
"aria-atomic": "true",
|
14134
14307
|
"aria-label": t(props.label, value),
|
14135
14308
|
"aria-live": "polite",
|
@@ -17538,13 +17711,13 @@ function date(value) {
|
|
17538
17711
|
return null;
|
17539
17712
|
}
|
17540
17713
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17541
|
-
function getWeekdays(locale, firstDayOfWeek) {
|
17714
|
+
function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
|
17542
17715
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17543
17716
|
return createRange(7).map(i => {
|
17544
17717
|
const weekday = new Date(sundayJanuarySecond2000);
|
17545
17718
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17546
17719
|
return new Intl.DateTimeFormat(locale, {
|
17547
|
-
weekday: 'narrow'
|
17720
|
+
weekday: weekdayFormat ?? 'narrow'
|
17548
17721
|
}).format(weekday);
|
17549
17722
|
});
|
17550
17723
|
}
|
@@ -17803,7 +17976,7 @@ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
|
|
17803
17976
|
const yearStart = new Date(year, 0, 1);
|
17804
17977
|
const size = firstWeekSize(year);
|
17805
17978
|
const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
|
17806
|
-
return 1 + getDiff(date, d1w1, 'weeks');
|
17979
|
+
return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
|
17807
17980
|
}
|
17808
17981
|
function getDate(date) {
|
17809
17982
|
return date.getDate();
|
@@ -18008,9 +18181,9 @@ class VuetifyDateAdapter {
|
|
18008
18181
|
getDiff(date, comparing, unit) {
|
18009
18182
|
return getDiff(date, comparing, unit);
|
18010
18183
|
}
|
18011
|
-
getWeekdays(firstDayOfWeek) {
|
18184
|
+
getWeekdays(firstDayOfWeek, weekdayFormat) {
|
18012
18185
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
18013
|
-
return getWeekdays(this.locale, firstDay);
|
18186
|
+
return getWeekdays(this.locale, firstDay, weekdayFormat);
|
18014
18187
|
}
|
18015
18188
|
getYear(date) {
|
18016
18189
|
return getYear(date);
|
@@ -18107,7 +18280,7 @@ function createDate(options, locale) {
|
|
18107
18280
|
};
|
18108
18281
|
}
|
18109
18282
|
function createDateRange(adapter, start, stop) {
|
18110
|
-
const diff = adapter.getDiff(stop ?? start, start, 'days');
|
18283
|
+
const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
|
18111
18284
|
const datesInRange = [start];
|
18112
18285
|
for (let i = 1; i < diff; i++) {
|
18113
18286
|
const nextDate = adapter.addDays(start, i);
|
@@ -18365,6 +18538,7 @@ const VCombobox = genericComponent()({
|
|
18365
18538
|
_search.value = val ?? '';
|
18366
18539
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18367
18540
|
model.value = [transformItem$3(props, val)];
|
18541
|
+
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18368
18542
|
}
|
18369
18543
|
if (val && props.multiple && props.delimiters?.length) {
|
18370
18544
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18445,7 +18619,7 @@ const VCombobox = genericComponent()({
|
|
18445
18619
|
menu.value = !menu.value;
|
18446
18620
|
}
|
18447
18621
|
function onListKeydown(e) {
|
18448
|
-
if (e.key
|
18622
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
18449
18623
|
vTextFieldRef.value?.focus();
|
18450
18624
|
}
|
18451
18625
|
}
|
@@ -18650,6 +18824,7 @@ const VCombobox = genericComponent()({
|
|
18650
18824
|
}, props.menuProps), {
|
18651
18825
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18652
18826
|
"ref": listRef,
|
18827
|
+
"filterable": true,
|
18653
18828
|
"selected": selectedValues.value,
|
18654
18829
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18655
18830
|
"onMousedown": e => e.preventDefault(),
|
@@ -18681,6 +18856,22 @@ const VCombobox = genericComponent()({
|
|
18681
18856
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18682
18857
|
onClick: () => select(item, null)
|
18683
18858
|
});
|
18859
|
+
if (item.raw.type === 'divider') {
|
18860
|
+
return slots.divider?.({
|
18861
|
+
props: item.raw,
|
18862
|
+
index
|
18863
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18864
|
+
"key": `divider-${index}`
|
18865
|
+
}), null);
|
18866
|
+
}
|
18867
|
+
if (item.raw.type === 'subheader') {
|
18868
|
+
return slots.subheader?.({
|
18869
|
+
props: item.raw,
|
18870
|
+
index
|
18871
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18872
|
+
"key": `subheader-${index}`
|
18873
|
+
}), null);
|
18874
|
+
}
|
18684
18875
|
return slots.item?.({
|
18685
18876
|
item,
|
18686
18877
|
index,
|
@@ -20563,6 +20754,7 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20563
20754
|
color: String,
|
20564
20755
|
disableSort: Boolean,
|
20565
20756
|
fixedHeader: Boolean,
|
20757
|
+
lastFixed: Boolean,
|
20566
20758
|
multiSort: Boolean,
|
20567
20759
|
sortAscIcon: {
|
20568
20760
|
type: IconValue,
|
@@ -20609,10 +20801,11 @@ const VDataTableHeaders = genericComponent()({
|
|
20609
20801
|
loaderClasses
|
20610
20802
|
} = useLoader(props);
|
20611
20803
|
function getFixedStyles(column, y) {
|
20612
|
-
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20804
|
+
if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
|
20613
20805
|
return {
|
20614
20806
|
position: 'sticky',
|
20615
|
-
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20807
|
+
left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
|
20808
|
+
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20616
20809
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20617
20810
|
};
|
20618
20811
|
}
|
@@ -21128,11 +21321,18 @@ const VDataTableRows = genericComponent()({
|
|
21128
21321
|
}
|
21129
21322
|
});
|
21130
21323
|
|
21324
|
+
// Types
|
21325
|
+
|
21131
21326
|
const makeVTableProps = propsFactory({
|
21132
21327
|
fixedHeader: Boolean,
|
21133
21328
|
fixedFooter: Boolean,
|
21134
21329
|
height: [Number, String],
|
21135
21330
|
hover: Boolean,
|
21331
|
+
striped: {
|
21332
|
+
type: String,
|
21333
|
+
default: null,
|
21334
|
+
validator: v => ['even', 'odd'].includes(v)
|
21335
|
+
},
|
21136
21336
|
...makeComponentProps(),
|
21137
21337
|
...makeDensityProps(),
|
21138
21338
|
...makeTagProps(),
|
@@ -21159,7 +21359,9 @@ const VTable = genericComponent()({
|
|
21159
21359
|
'v-table--fixed-footer': props.fixedFooter,
|
21160
21360
|
'v-table--has-top': !!slots.top,
|
21161
21361
|
'v-table--has-bottom': !!slots.bottom,
|
21162
|
-
'v-table--hover': props.hover
|
21362
|
+
'v-table--hover': props.hover,
|
21363
|
+
'v-table--striped-even': props.striped === 'even',
|
21364
|
+
'v-table--striped-odd': props.striped === 'odd'
|
21163
21365
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21164
21366
|
"style": normalizeStyle(props.style)
|
21165
21367
|
}, {
|
@@ -22334,7 +22536,8 @@ const makeCalendarProps = propsFactory({
|
|
22334
22536
|
firstDayOfWeek: {
|
22335
22537
|
type: [Number, String],
|
22336
22538
|
default: undefined
|
22337
|
-
}
|
22539
|
+
},
|
22540
|
+
weekdayFormat: String
|
22338
22541
|
}, 'calendar');
|
22339
22542
|
function useCalendar(props) {
|
22340
22543
|
const adapter = useDate();
|
@@ -22575,7 +22778,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22575
22778
|
"ref": daysRef,
|
22576
22779
|
"key": daysInMonth.value[0].date?.toString(),
|
22577
22780
|
"class": "v-date-picker-month__days"
|
22578
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22781
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
|
22579
22782
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22580
22783
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22581
22784
|
const slotProps = {
|
@@ -24190,6 +24393,9 @@ const VInfiniteScroll = genericComponent()({
|
|
24190
24393
|
startStatus.value = status;
|
24191
24394
|
} else if (side === 'end') {
|
24192
24395
|
endStatus.value = status;
|
24396
|
+
} else if (side === 'both') {
|
24397
|
+
startStatus.value = status;
|
24398
|
+
endStatus.value = status;
|
24193
24399
|
}
|
24194
24400
|
}
|
24195
24401
|
function getStatus(side) {
|
@@ -24301,6 +24507,32 @@ const VInfiniteScroll = genericComponent()({
|
|
24301
24507
|
}, [renderSide('end', endStatus.value)])]
|
24302
24508
|
});
|
24303
24509
|
});
|
24510
|
+
function reset(side) {
|
24511
|
+
const effectiveSide = side ?? props.side;
|
24512
|
+
setStatus(effectiveSide, 'ok');
|
24513
|
+
nextTick(() => {
|
24514
|
+
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24515
|
+
if (props.mode !== 'manual') {
|
24516
|
+
nextTick(() => {
|
24517
|
+
window.requestAnimationFrame(() => {
|
24518
|
+
window.requestAnimationFrame(() => {
|
24519
|
+
window.requestAnimationFrame(() => {
|
24520
|
+
if (effectiveSide === 'both') {
|
24521
|
+
intersecting('start');
|
24522
|
+
intersecting('end');
|
24523
|
+
} else {
|
24524
|
+
intersecting(effectiveSide);
|
24525
|
+
}
|
24526
|
+
});
|
24527
|
+
});
|
24528
|
+
});
|
24529
|
+
});
|
24530
|
+
}
|
24531
|
+
});
|
24532
|
+
}
|
24533
|
+
return {
|
24534
|
+
reset
|
24535
|
+
};
|
24304
24536
|
}
|
24305
24537
|
});
|
24306
24538
|
|
@@ -25219,6 +25451,10 @@ const makeVNumberInputProps = propsFactory({
|
|
25219
25451
|
type: Number,
|
25220
25452
|
default: 0
|
25221
25453
|
},
|
25454
|
+
minFractionDigits: {
|
25455
|
+
type: Number,
|
25456
|
+
default: null
|
25457
|
+
},
|
25222
25458
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25223
25459
|
}, 'VNumberInput');
|
25224
25460
|
const VNumberInput = genericComponent()({
|
@@ -25246,9 +25482,19 @@ const VNumberInput = genericComponent()({
|
|
25246
25482
|
const isFocused = shallowRef(props.focused);
|
25247
25483
|
function correctPrecision(val) {
|
25248
25484
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25249
|
-
|
25250
|
-
|
25251
|
-
|
25485
|
+
if (precision == null) {
|
25486
|
+
return String(val);
|
25487
|
+
}
|
25488
|
+
let fixed = val.toFixed(precision);
|
25489
|
+
if (isFocused.value) {
|
25490
|
+
return Number(fixed).toString(); // trim zeros
|
25491
|
+
}
|
25492
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25493
|
+
const trimLimit = precision - props.minFractionDigits;
|
25494
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25495
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25496
|
+
}
|
25497
|
+
return fixed;
|
25252
25498
|
}
|
25253
25499
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25254
25500
|
const _inputText = shallowRef(null);
|
@@ -25303,6 +25549,7 @@ const VNumberInput = genericComponent()({
|
|
25303
25549
|
}
|
25304
25550
|
};
|
25305
25551
|
watch(() => props.precision, () => formatInputValue());
|
25552
|
+
watch(() => props.minFractionDigits, () => formatInputValue());
|
25306
25553
|
onMounted(() => {
|
25307
25554
|
clampModel();
|
25308
25555
|
});
|
@@ -25417,7 +25664,7 @@ const VNumberInput = genericComponent()({
|
|
25417
25664
|
inputText.value = null;
|
25418
25665
|
return;
|
25419
25666
|
}
|
25420
|
-
inputText.value =
|
25667
|
+
inputText.value = correctPrecision(model.value);
|
25421
25668
|
}
|
25422
25669
|
function trimDecimalZeros() {
|
25423
25670
|
if (controlsDisabled.value) return;
|
@@ -25677,9 +25924,10 @@ const VOtpInput = genericComponent()({
|
|
25677
25924
|
e.preventDefault();
|
25678
25925
|
e.stopPropagation();
|
25679
25926
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25927
|
+
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25680
25928
|
if (isValidNumber(clipboardText)) return;
|
25681
25929
|
model.value = clipboardText.split('');
|
25682
|
-
inputRef.value?.[
|
25930
|
+
inputRef.value?.[finalIndex].focus();
|
25683
25931
|
}
|
25684
25932
|
function reset() {
|
25685
25933
|
model.value = [];
|
@@ -29464,7 +29712,7 @@ function createVuetify$1() {
|
|
29464
29712
|
};
|
29465
29713
|
});
|
29466
29714
|
}
|
29467
|
-
const version$1 = "3.8.
|
29715
|
+
const version$1 = "3.8.9-dev.2025-06-11";
|
29468
29716
|
createVuetify$1.version = version$1;
|
29469
29717
|
|
29470
29718
|
// Vue's inject() can only be used in setup
|
@@ -29489,7 +29737,7 @@ const createVuetify = function () {
|
|
29489
29737
|
...options
|
29490
29738
|
});
|
29491
29739
|
};
|
29492
|
-
const version = "3.8.
|
29740
|
+
const version = "3.8.9-dev.2025-06-11";
|
29493
29741
|
createVuetify.version = version;
|
29494
29742
|
|
29495
29743
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|