@vuetify/nightly 3.8.7-master.2025-06-02 → 3.8.8-dev.2025-06-04
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 +33 -11
- package/dist/json/attributes.json +2042 -1942
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +146 -146
- package/dist/json/tags.json +25 -0
- package/dist/json/web-types.json +3842 -3510
- package/dist/vuetify-labs.cjs +380 -152
- package/dist/vuetify-labs.css +5726 -5686
- package/dist/vuetify-labs.d.ts +2393 -1889
- package/dist/vuetify-labs.esm.js +381 -153
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +380 -152
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +374 -141
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2674 -2634
- package/dist/vuetify.d.ts +1548 -1084
- package/dist/vuetify.esm.js +375 -142
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +374 -141
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1226 -1208
- 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.css +6 -6
- 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/VAutocomplete/VAutocomplete.sass +3 -9
- 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/VChip/VChip.js +1 -0
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.d.ts +10 -0
- package/lib/components/VCombobox/VCombobox.css +6 -6
- 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/VCombobox/VCombobox.sass +3 -9
- 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/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.css +6 -0
- package/lib/components/VSelect/VSelect.d.ts +171 -107
- package/lib/components/VSelect/VSelect.js +21 -3
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelect.sass +3 -0
- package/lib/components/VSelect/_mixins.scss +14 -0
- 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/VSlider/VSliderThumb.js +12 -6
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/slider.js +4 -1
- package/lib/components/VSlider/slider.js.map +1 -1
- 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 +4 -4
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +3 -3
- 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 +73 -58
- 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 -0
- package/lib/util/helpers.js +9 -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.8-dev.2025-06-04
|
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,
|
7
|
+
import { shallowRef, reactive, watchEffect, toRef, capitalize, camelize, unref, Fragment, 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"); }
|
@@ -525,6 +526,14 @@ function extractNumber(text, decimalDigitsLimit) {
|
|
525
526
|
}
|
526
527
|
return cleanText;
|
527
528
|
}
|
529
|
+
function camelizeProps(props) {
|
530
|
+
if (!props) return;
|
531
|
+
const out = {};
|
532
|
+
for (const prop in props) {
|
533
|
+
out[camelize(prop)] = props[prop];
|
534
|
+
}
|
535
|
+
return out;
|
536
|
+
}
|
528
537
|
|
529
538
|
// Utilities
|
530
539
|
const block = ['top', 'bottom'];
|
@@ -2824,6 +2833,7 @@ const makeThemeProps = propsFactory({
|
|
2824
2833
|
function genDefaults$1() {
|
2825
2834
|
return {
|
2826
2835
|
defaultTheme: 'light',
|
2836
|
+
prefix: 'v-',
|
2827
2837
|
variations: {
|
2828
2838
|
colors: [],
|
2829
2839
|
lighten: 0,
|
@@ -2905,7 +2915,10 @@ function genDefaults$1() {
|
|
2905
2915
|
}
|
2906
2916
|
}
|
2907
2917
|
},
|
2908
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2918
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
2919
|
+
scoped: false,
|
2920
|
+
unimportant: false,
|
2921
|
+
utilities: true
|
2909
2922
|
};
|
2910
2923
|
}
|
2911
2924
|
function parseThemeOptions() {
|
@@ -2928,21 +2941,21 @@ function parseThemeOptions() {
|
|
2928
2941
|
function createCssClass(lines, selector, content, scope) {
|
2929
2942
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2930
2943
|
}
|
2931
|
-
function genCssVariables(theme) {
|
2944
|
+
function genCssVariables(theme, prefix) {
|
2932
2945
|
const lightOverlay = theme.dark ? 2 : 1;
|
2933
2946
|
const darkOverlay = theme.dark ? 1 : 2;
|
2934
2947
|
const variables = [];
|
2935
2948
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2936
2949
|
const rgb = parseColor(value);
|
2937
|
-
variables.push(
|
2950
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2938
2951
|
if (!key.startsWith('on-')) {
|
2939
|
-
variables.push(
|
2952
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2940
2953
|
}
|
2941
2954
|
}
|
2942
2955
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2943
2956
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2944
2957
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2945
|
-
variables.push(
|
2958
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
2946
2959
|
}
|
2947
2960
|
return variables;
|
2948
2961
|
}
|
@@ -2986,7 +2999,8 @@ function getScopedSelector(selector, scope) {
|
|
2986
2999
|
const scopeSelector = `:where(${scope})`;
|
2987
3000
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2988
3001
|
}
|
2989
|
-
function upsertStyles(
|
3002
|
+
function upsertStyles(id, cspNonce, styles) {
|
3003
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2990
3004
|
if (!styleEl) return;
|
2991
3005
|
styleEl.innerHTML = styles;
|
2992
3006
|
}
|
@@ -3006,8 +3020,17 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
3006
3020
|
// Composables
|
3007
3021
|
function createTheme(options) {
|
3008
3022
|
const parsedOptions = parseThemeOptions(options);
|
3009
|
-
const
|
3023
|
+
const _name = shallowRef(parsedOptions.defaultTheme);
|
3010
3024
|
const themes = ref(parsedOptions.themes);
|
3025
|
+
const systemName = shallowRef('light');
|
3026
|
+
const name = computed({
|
3027
|
+
get() {
|
3028
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
3029
|
+
},
|
3030
|
+
set(val) {
|
3031
|
+
_name.value = val;
|
3032
|
+
}
|
3033
|
+
});
|
3011
3034
|
const computedThemes = computed(() => {
|
3012
3035
|
const acc = {};
|
3013
3036
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3028,28 +3051,49 @@ function createTheme(options) {
|
|
3028
3051
|
const current = toRef(() => computedThemes.value[name.value]);
|
3029
3052
|
const styles = computed(() => {
|
3030
3053
|
const lines = [];
|
3054
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
3055
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3031
3056
|
if (current.value?.dark) {
|
3032
3057
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3033
3058
|
}
|
3034
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3059
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
3035
3060
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3036
|
-
createCssClass(lines,
|
3037
|
-
}
|
3038
|
-
|
3039
|
-
|
3040
|
-
|
3041
|
-
|
3042
|
-
|
3043
|
-
|
3044
|
-
|
3045
|
-
|
3046
|
-
|
3047
|
-
|
3061
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
3062
|
+
}
|
3063
|
+
if (parsedOptions.utilities) {
|
3064
|
+
const bgLines = [];
|
3065
|
+
const fgLines = [];
|
3066
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3067
|
+
for (const key of colors) {
|
3068
|
+
if (key.startsWith('on-')) {
|
3069
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
3070
|
+
} else {
|
3071
|
+
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);
|
3072
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
3073
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3074
|
+
}
|
3048
3075
|
}
|
3076
|
+
lines.push(...bgLines, ...fgLines);
|
3049
3077
|
}
|
3050
|
-
lines.push(...bgLines, ...fgLines);
|
3051
3078
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3052
3079
|
});
|
3080
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3081
|
+
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
3082
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
3083
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3084
|
+
function updateSystemName() {
|
3085
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
3086
|
+
}
|
3087
|
+
updateSystemName();
|
3088
|
+
media.addEventListener('change', updateSystemName, {
|
3089
|
+
passive: true
|
3090
|
+
});
|
3091
|
+
if (getCurrentScope()) {
|
3092
|
+
onScopeDispose(() => {
|
3093
|
+
media.removeEventListener('change', updateSystemName);
|
3094
|
+
});
|
3095
|
+
}
|
3096
|
+
}
|
3053
3097
|
function install(app) {
|
3054
3098
|
if (parsedOptions.isDisabled) return;
|
3055
3099
|
const head = app._context.provides.usehead;
|
@@ -3087,22 +3131,55 @@ function createTheme(options) {
|
|
3087
3131
|
updateStyles();
|
3088
3132
|
}
|
3089
3133
|
function updateStyles() {
|
3090
|
-
upsertStyles(
|
3134
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3091
3135
|
}
|
3092
3136
|
}
|
3093
3137
|
}
|
3094
|
-
|
3138
|
+
function change(themeName) {
|
3139
|
+
if (!themeNames.value.includes(themeName)) {
|
3140
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3141
|
+
return;
|
3142
|
+
}
|
3143
|
+
name.value = themeName;
|
3144
|
+
}
|
3145
|
+
function cycle() {
|
3146
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3147
|
+
const currentIndex = themeArray.indexOf(name.value);
|
3148
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3149
|
+
change(themeArray[nextIndex]);
|
3150
|
+
}
|
3151
|
+
function toggle() {
|
3152
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3153
|
+
cycle(themeArray);
|
3154
|
+
}
|
3155
|
+
const globalName = new Proxy(name, {
|
3156
|
+
get(target, prop) {
|
3157
|
+
return target[prop];
|
3158
|
+
},
|
3159
|
+
set(target, prop, val) {
|
3160
|
+
if (prop === 'value') {
|
3161
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3162
|
+
}
|
3163
|
+
// @ts-expect-error
|
3164
|
+
target[prop] = val;
|
3165
|
+
return true;
|
3166
|
+
}
|
3167
|
+
});
|
3095
3168
|
return {
|
3096
3169
|
install,
|
3170
|
+
change,
|
3171
|
+
cycle,
|
3172
|
+
toggle,
|
3097
3173
|
isDisabled: parsedOptions.isDisabled,
|
3098
3174
|
name,
|
3099
3175
|
themes,
|
3100
3176
|
current,
|
3101
3177
|
computedThemes,
|
3178
|
+
prefix: parsedOptions.prefix,
|
3102
3179
|
themeClasses,
|
3103
3180
|
styles,
|
3104
3181
|
global: {
|
3105
|
-
name,
|
3182
|
+
name: globalName,
|
3106
3183
|
current
|
3107
3184
|
}
|
3108
3185
|
};
|
@@ -3113,7 +3190,7 @@ function provideTheme(props) {
|
|
3113
3190
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3114
3191
|
const name = toRef(() => props.theme ?? theme.name.value);
|
3115
3192
|
const current = toRef(() => theme.themes.value[name.value]);
|
3116
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
3193
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
3117
3194
|
const newTheme = {
|
3118
3195
|
...theme,
|
3119
3196
|
name,
|
@@ -4217,7 +4294,10 @@ const makeVToolbarProps = propsFactory({
|
|
4217
4294
|
default: 'default',
|
4218
4295
|
validator: v => allowedDensities$1.includes(v)
|
4219
4296
|
},
|
4220
|
-
extended:
|
4297
|
+
extended: {
|
4298
|
+
type: Boolean,
|
4299
|
+
default: null
|
4300
|
+
},
|
4221
4301
|
extensionHeight: {
|
4222
4302
|
type: [Number, String],
|
4223
4303
|
default: 48
|
@@ -4265,7 +4345,7 @@ const VToolbar = genericComponent()({
|
|
4265
4345
|
const {
|
4266
4346
|
rtlClasses
|
4267
4347
|
} = useRtl();
|
4268
|
-
const isExtended = shallowRef(
|
4348
|
+
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
4269
4349
|
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));
|
4270
4350
|
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);
|
4271
4351
|
provideDefaults({
|
@@ -4277,7 +4357,7 @@ const VToolbar = genericComponent()({
|
|
4277
4357
|
const hasTitle = !!(props.title || slots.title);
|
4278
4358
|
const hasImage = !!(slots.image || props.image);
|
4279
4359
|
const extension = slots.extension?.();
|
4280
|
-
isExtended.value =
|
4360
|
+
isExtended.value = props.extended === null ? !!extension : props.extended;
|
4281
4361
|
return createVNode(props.tag, {
|
4282
4362
|
"class": normalizeClass(['v-toolbar', {
|
4283
4363
|
'v-toolbar--absolute': props.absolute,
|
@@ -4660,9 +4740,15 @@ function useVariant(props) {
|
|
4660
4740
|
};
|
4661
4741
|
}
|
4662
4742
|
|
4743
|
+
// Types
|
4744
|
+
|
4663
4745
|
const makeVBtnGroupProps = propsFactory({
|
4664
4746
|
baseColor: String,
|
4665
4747
|
divided: Boolean,
|
4748
|
+
direction: {
|
4749
|
+
type: String,
|
4750
|
+
default: 'horizontal'
|
4751
|
+
},
|
4666
4752
|
...makeBorderProps(),
|
4667
4753
|
...makeComponentProps(),
|
4668
4754
|
...makeDensityProps(),
|
@@ -4696,7 +4782,7 @@ const VBtnGroup = genericComponent()({
|
|
4696
4782
|
} = useRounded(props);
|
4697
4783
|
provideDefaults({
|
4698
4784
|
VBtn: {
|
4699
|
-
height: 'auto',
|
4785
|
+
height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
4700
4786
|
baseColor: toRef(() => props.baseColor),
|
4701
4787
|
color: toRef(() => props.color),
|
4702
4788
|
density: toRef(() => props.density),
|
@@ -4706,7 +4792,7 @@ const VBtnGroup = genericComponent()({
|
|
4706
4792
|
});
|
4707
4793
|
useRender(() => {
|
4708
4794
|
return createVNode(props.tag, {
|
4709
|
-
"class": normalizeClass(['v-btn-group', {
|
4795
|
+
"class": normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
|
4710
4796
|
'v-btn-group--divided': props.divided
|
4711
4797
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4712
4798
|
"style": normalizeStyle(props.style)
|
@@ -5829,8 +5915,8 @@ function rippleCancelShow(e) {
|
|
5829
5915
|
window.clearTimeout(element._ripple.showTimer);
|
5830
5916
|
}
|
5831
5917
|
let keyboardRipple = false;
|
5832
|
-
function keyboardRippleShow(e) {
|
5833
|
-
if (!keyboardRipple && (e.keyCode
|
5918
|
+
function keyboardRippleShow(e, keys) {
|
5919
|
+
if (!keyboardRipple && keys.includes(e.keyCode)) {
|
5834
5920
|
keyboardRipple = true;
|
5835
5921
|
rippleShow(e);
|
5836
5922
|
}
|
@@ -5858,9 +5944,12 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5858
5944
|
el._ripple.enabled = enabled;
|
5859
5945
|
el._ripple.centered = modifiers.center;
|
5860
5946
|
el._ripple.circle = modifiers.circle;
|
5861
|
-
|
5862
|
-
|
5947
|
+
const bindingValue = isObject(value) ? value : {};
|
5948
|
+
if (bindingValue.class) {
|
5949
|
+
el._ripple.class = bindingValue.class;
|
5863
5950
|
}
|
5951
|
+
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5952
|
+
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5864
5953
|
if (enabled && !wasEnabled) {
|
5865
5954
|
if (modifiers.stop) {
|
5866
5955
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5882,7 +5971,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5882
5971
|
el.addEventListener('mousedown', rippleShow);
|
5883
5972
|
el.addEventListener('mouseup', rippleHide);
|
5884
5973
|
el.addEventListener('mouseleave', rippleHide);
|
5885
|
-
el.addEventListener('keydown', keyboardRippleShow);
|
5974
|
+
el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
|
5886
5975
|
el.addEventListener('keyup', keyboardRippleHide);
|
5887
5976
|
el.addEventListener('blur', focusRippleHide);
|
5888
5977
|
|
@@ -5902,7 +5991,9 @@ function removeListeners(el) {
|
|
5902
5991
|
el.removeEventListener('touchcancel', rippleHide);
|
5903
5992
|
el.removeEventListener('mouseup', rippleHide);
|
5904
5993
|
el.removeEventListener('mouseleave', rippleHide);
|
5905
|
-
el.
|
5994
|
+
if (el._ripple?.keyDownHandler) {
|
5995
|
+
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5996
|
+
}
|
5906
5997
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5907
5998
|
el.removeEventListener('dragstart', rippleHide);
|
5908
5999
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5911,8 +6002,8 @@ function mounted$4(el, binding) {
|
|
5911
6002
|
updateRipple(el, binding, false);
|
5912
6003
|
}
|
5913
6004
|
function unmounted$4(el) {
|
5914
|
-
delete el._ripple;
|
5915
6005
|
removeListeners(el);
|
6006
|
+
delete el._ripple;
|
5916
6007
|
}
|
5917
6008
|
function updated$1(el, binding) {
|
5918
6009
|
if (binding.value === binding.oldValue) {
|
@@ -6185,6 +6276,31 @@ const VAppBarTitle = genericComponent()({
|
|
6185
6276
|
// Utilities
|
6186
6277
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6187
6278
|
|
6279
|
+
// Utilities
|
6280
|
+
|
6281
|
+
// Types
|
6282
|
+
|
6283
|
+
// Types
|
6284
|
+
|
6285
|
+
// Composables
|
6286
|
+
const makeIconSizeProps = propsFactory({
|
6287
|
+
iconSize: [Number, String],
|
6288
|
+
iconSizes: {
|
6289
|
+
type: Array,
|
6290
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6291
|
+
}
|
6292
|
+
}, 'iconSize');
|
6293
|
+
function useIconSizes(props, fallback) {
|
6294
|
+
const iconSize = computed(() => {
|
6295
|
+
const iconSizeMap = new Map(props.iconSizes);
|
6296
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6297
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6298
|
+
});
|
6299
|
+
return {
|
6300
|
+
iconSize
|
6301
|
+
};
|
6302
|
+
}
|
6303
|
+
|
6188
6304
|
// Types
|
6189
6305
|
|
6190
6306
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6224,6 +6340,7 @@ const makeVAlertProps = propsFactory({
|
|
6224
6340
|
...makeDensityProps(),
|
6225
6341
|
...makeDimensionProps(),
|
6226
6342
|
...makeElevationProps(),
|
6343
|
+
...makeIconSizeProps(),
|
6227
6344
|
...makeLocationProps(),
|
6228
6345
|
...makePositionProps(),
|
6229
6346
|
...makeRoundedProps(),
|
@@ -6251,6 +6368,9 @@ const VAlert = genericComponent()({
|
|
6251
6368
|
if (!props.type) return props.icon;
|
6252
6369
|
return props.icon ?? `$${props.type}`;
|
6253
6370
|
});
|
6371
|
+
const {
|
6372
|
+
iconSize
|
6373
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6254
6374
|
const {
|
6255
6375
|
themeClasses
|
6256
6376
|
} = provideTheme(props);
|
@@ -6298,6 +6418,11 @@ const VAlert = genericComponent()({
|
|
6298
6418
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6299
6419
|
const hasTitle = !!(slots.title || props.title);
|
6300
6420
|
const hasClose = !!(slots.close || props.closable);
|
6421
|
+
const iconProps = {
|
6422
|
+
density: props.density,
|
6423
|
+
icon: icon.value,
|
6424
|
+
size: iconSize.value
|
6425
|
+
};
|
6301
6426
|
return isActive.value && createVNode(props.tag, {
|
6302
6427
|
"class": normalizeClass(['v-alert', props.border && {
|
6303
6428
|
'v-alert--border': !!props.border,
|
@@ -6315,19 +6440,14 @@ const VAlert = genericComponent()({
|
|
6315
6440
|
}, null), hasPrepend && createElementVNode("div", {
|
6316
6441
|
"key": "prepend",
|
6317
6442
|
"class": "v-alert__prepend"
|
6318
|
-
}, [!slots.prepend ? createVNode(VIcon, {
|
6319
|
-
"key": "prepend-icon"
|
6320
|
-
|
6321
|
-
"icon": icon.value,
|
6322
|
-
"size": props.prominent ? 44 : 28
|
6323
|
-
}, null) : createVNode(VDefaultsProvider, {
|
6443
|
+
}, [!slots.prepend ? createVNode(VIcon, mergeProps({
|
6444
|
+
"key": "prepend-icon"
|
6445
|
+
}, iconProps), null) : createVNode(VDefaultsProvider, {
|
6324
6446
|
"key": "prepend-defaults",
|
6325
6447
|
"disabled": !icon.value,
|
6326
6448
|
"defaults": {
|
6327
6449
|
VIcon: {
|
6328
|
-
|
6329
|
-
icon: icon.value,
|
6330
|
-
size: props.prominent ? 44 : 28
|
6450
|
+
...iconProps
|
6331
6451
|
}
|
6332
6452
|
}
|
6333
6453
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7852,6 +7972,7 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7852
7972
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7853
7973
|
const makeVSlideGroupProps = propsFactory({
|
7854
7974
|
centerActive: Boolean,
|
7975
|
+
contentClass: null,
|
7855
7976
|
direction: {
|
7856
7977
|
type: String,
|
7857
7978
|
default: 'horizontal'
|
@@ -8164,7 +8285,7 @@ const VSlideGroup = genericComponent()({
|
|
8164
8285
|
})]), createElementVNode("div", {
|
8165
8286
|
"key": "container",
|
8166
8287
|
"ref": containerRef,
|
8167
|
-
"class":
|
8288
|
+
"class": normalizeClass(['v-slide-group__container', props.contentClass]),
|
8168
8289
|
"onScroll": onScroll
|
8169
8290
|
}, [createElementVNode("div", {
|
8170
8291
|
"ref": contentRef,
|
@@ -8374,6 +8495,7 @@ const VChip = genericComponent()({
|
|
8374
8495
|
const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
|
8375
8496
|
const closeProps = toRef(() => ({
|
8376
8497
|
'aria-label': t(props.closeLabel),
|
8498
|
+
disabled: props.disabled,
|
8377
8499
|
onClick(e) {
|
8378
8500
|
e.preventDefault();
|
8379
8501
|
e.stopPropagation();
|
@@ -8526,16 +8648,85 @@ const VChip = genericComponent()({
|
|
8526
8648
|
}
|
8527
8649
|
});
|
8528
8650
|
|
8651
|
+
const makeVDividerProps = propsFactory({
|
8652
|
+
color: String,
|
8653
|
+
inset: Boolean,
|
8654
|
+
length: [Number, String],
|
8655
|
+
opacity: [Number, String],
|
8656
|
+
thickness: [Number, String],
|
8657
|
+
vertical: Boolean,
|
8658
|
+
...makeComponentProps(),
|
8659
|
+
...makeThemeProps()
|
8660
|
+
}, 'VDivider');
|
8661
|
+
const VDivider = genericComponent()({
|
8662
|
+
name: 'VDivider',
|
8663
|
+
props: makeVDividerProps(),
|
8664
|
+
setup(props, _ref) {
|
8665
|
+
let {
|
8666
|
+
attrs,
|
8667
|
+
slots
|
8668
|
+
} = _ref;
|
8669
|
+
const {
|
8670
|
+
themeClasses
|
8671
|
+
} = provideTheme(props);
|
8672
|
+
const {
|
8673
|
+
textColorClasses,
|
8674
|
+
textColorStyles
|
8675
|
+
} = useTextColor(() => props.color);
|
8676
|
+
const dividerStyles = computed(() => {
|
8677
|
+
const styles = {};
|
8678
|
+
if (props.length) {
|
8679
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8680
|
+
}
|
8681
|
+
if (props.thickness) {
|
8682
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8683
|
+
}
|
8684
|
+
return styles;
|
8685
|
+
});
|
8686
|
+
useRender(() => {
|
8687
|
+
const divider = createElementVNode("hr", {
|
8688
|
+
"class": normalizeClass([{
|
8689
|
+
'v-divider': true,
|
8690
|
+
'v-divider--inset': props.inset,
|
8691
|
+
'v-divider--vertical': props.vertical
|
8692
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
8693
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8694
|
+
'--v-border-opacity': props.opacity
|
8695
|
+
}, props.style]),
|
8696
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8697
|
+
"role": `${attrs.role || 'separator'}`
|
8698
|
+
}, null);
|
8699
|
+
if (!slots.default) return divider;
|
8700
|
+
return createElementVNode("div", {
|
8701
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
8702
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8703
|
+
'v-divider__wrapper--inset': props.inset
|
8704
|
+
}])
|
8705
|
+
}, [divider, createElementVNode("div", {
|
8706
|
+
"class": "v-divider__content"
|
8707
|
+
}, [slots.default()]), divider]);
|
8708
|
+
});
|
8709
|
+
return {};
|
8710
|
+
}
|
8711
|
+
});
|
8712
|
+
|
8529
8713
|
// Utilities
|
8530
8714
|
|
8531
8715
|
// List
|
8532
8716
|
const ListKey = Symbol.for('vuetify:list');
|
8533
8717
|
function createList() {
|
8718
|
+
let {
|
8719
|
+
filterable
|
8720
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8721
|
+
filterable: false
|
8722
|
+
};
|
8534
8723
|
const parent = inject$1(ListKey, {
|
8724
|
+
filterable: false,
|
8535
8725
|
hasPrepend: shallowRef(false),
|
8536
8726
|
updateHasPrepend: () => null
|
8537
8727
|
});
|
8538
8728
|
const data = {
|
8729
|
+
filterable: parent.filterable || filterable,
|
8539
8730
|
hasPrepend: shallowRef(false),
|
8540
8731
|
updateHasPrepend: value => {
|
8541
8732
|
if (value) data.hasPrepend.value = value;
|
@@ -9487,6 +9678,9 @@ const VListItem = genericComponent()({
|
|
9487
9678
|
roundedClasses
|
9488
9679
|
} = useRounded(roundedProps);
|
9489
9680
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9681
|
+
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9682
|
+
keys: [keyCodes.enter]
|
9683
|
+
} : props.ripple);
|
9490
9684
|
const slotProps = computed(() => ({
|
9491
9685
|
isActive: isActive.value,
|
9492
9686
|
select,
|
@@ -9511,8 +9705,9 @@ const VListItem = genericComponent()({
|
|
9511
9705
|
function onKeyDown(e) {
|
9512
9706
|
const target = e.target;
|
9513
9707
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9514
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
9708
|
+
if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
|
9515
9709
|
e.preventDefault();
|
9710
|
+
e.stopPropagation();
|
9516
9711
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9517
9712
|
}
|
9518
9713
|
}
|
@@ -9622,7 +9817,7 @@ const VListItem = genericComponent()({
|
|
9622
9817
|
}), createElementVNode("div", {
|
9623
9818
|
"class": "v-list-item__spacer"
|
9624
9819
|
}, null)])]
|
9625
|
-
}), [[Ripple, isClickable.value &&
|
9820
|
+
}), [[Ripple, isClickable.value && rippleOptions.value]]);
|
9626
9821
|
});
|
9627
9822
|
return {
|
9628
9823
|
activate,
|
@@ -9677,68 +9872,6 @@ const VListSubheader = genericComponent()({
|
|
9677
9872
|
}
|
9678
9873
|
});
|
9679
9874
|
|
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
|
-
|
9742
9875
|
// Types
|
9743
9876
|
|
9744
9877
|
const makeVListChildrenProps = propsFactory({
|
@@ -9855,7 +9988,7 @@ function transformItem$3(props, item) {
|
|
9855
9988
|
const _props = {
|
9856
9989
|
title,
|
9857
9990
|
value,
|
9858
|
-
...itemProps
|
9991
|
+
...camelizeProps(itemProps)
|
9859
9992
|
};
|
9860
9993
|
return {
|
9861
9994
|
title: String(_props.title ?? ''),
|
@@ -10007,6 +10140,7 @@ const makeVListProps = propsFactory({
|
|
10007
10140
|
activeClass: String,
|
10008
10141
|
bgColor: String,
|
10009
10142
|
disabled: Boolean,
|
10143
|
+
filterable: Boolean,
|
10010
10144
|
expandIcon: IconValue,
|
10011
10145
|
collapseIcon: IconValue,
|
10012
10146
|
lines: {
|
@@ -10090,7 +10224,9 @@ const VList = genericComponent()({
|
|
10090
10224
|
const activeColor = toRef(() => props.activeColor);
|
10091
10225
|
const baseColor = toRef(() => props.baseColor);
|
10092
10226
|
const color = toRef(() => props.color);
|
10093
|
-
createList(
|
10227
|
+
createList({
|
10228
|
+
filterable: props.filterable
|
10229
|
+
});
|
10094
10230
|
provideDefaults({
|
10095
10231
|
VListGroup: {
|
10096
10232
|
activeColor,
|
@@ -12666,7 +12802,12 @@ function useVirtual(props, items) {
|
|
12666
12802
|
}
|
12667
12803
|
function calculateOffset(index) {
|
12668
12804
|
index = clamp(index, 0, items.value.length - 1);
|
12669
|
-
|
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;
|
12670
12811
|
}
|
12671
12812
|
function calculateIndex(scrollTop) {
|
12672
12813
|
return binaryClosest(offsets, scrollTop);
|
@@ -13020,6 +13161,7 @@ const makeSelectProps = propsFactory({
|
|
13020
13161
|
},
|
13021
13162
|
openOnClear: Boolean,
|
13022
13163
|
itemColor: String,
|
13164
|
+
noAutoScroll: Boolean,
|
13023
13165
|
...makeItemsProps({
|
13024
13166
|
itemChildren: false
|
13025
13167
|
})
|
@@ -13234,7 +13376,7 @@ const VSelect = genericComponent()({
|
|
13234
13376
|
watch(menu, () => {
|
13235
13377
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13236
13378
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13237
|
-
IN_BROWSER && window.requestAnimationFrame(() => {
|
13379
|
+
IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
|
13238
13380
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13239
13381
|
});
|
13240
13382
|
}
|
@@ -13326,6 +13468,22 @@ const VSelect = genericComponent()({
|
|
13326
13468
|
key: item.value,
|
13327
13469
|
onClick: () => select(item, null)
|
13328
13470
|
});
|
13471
|
+
if (item.raw.type === 'divider') {
|
13472
|
+
return slots.divider?.({
|
13473
|
+
props: item.raw,
|
13474
|
+
index
|
13475
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13476
|
+
"key": `divider-${index}`
|
13477
|
+
}), null);
|
13478
|
+
}
|
13479
|
+
if (item.raw.type === 'subheader') {
|
13480
|
+
return slots.subheader?.({
|
13481
|
+
props: item.raw,
|
13482
|
+
index
|
13483
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13484
|
+
"key": `subheader-${index}`
|
13485
|
+
}), null);
|
13486
|
+
}
|
13329
13487
|
return slots.item?.({
|
13330
13488
|
item,
|
13331
13489
|
index,
|
@@ -13486,6 +13644,9 @@ function filterItems(items, query, options) {
|
|
13486
13644
|
let match = -1;
|
13487
13645
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13488
13646
|
if (typeof item === 'object') {
|
13647
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13648
|
+
continue;
|
13649
|
+
}
|
13489
13650
|
const filterKeys = keys || Object.keys(transformed);
|
13490
13651
|
for (const key of filterKeys) {
|
13491
13652
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13688,7 +13849,7 @@ const VAutocomplete = genericComponent()({
|
|
13688
13849
|
menu.value = !menu.value;
|
13689
13850
|
}
|
13690
13851
|
function onListKeydown(e) {
|
13691
|
-
if (e.key
|
13852
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
13692
13853
|
vTextFieldRef.value?.focus();
|
13693
13854
|
}
|
13694
13855
|
}
|
@@ -13893,6 +14054,7 @@ const VAutocomplete = genericComponent()({
|
|
13893
14054
|
}, props.menuProps), {
|
13894
14055
|
default: () => [hasList && createVNode(VList, mergeProps({
|
13895
14056
|
"ref": listRef,
|
14057
|
+
"filterable": true,
|
13896
14058
|
"selected": selectedValues.value,
|
13897
14059
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13898
14060
|
"onMousedown": e => e.preventDefault(),
|
@@ -13924,6 +14086,22 @@ const VAutocomplete = genericComponent()({
|
|
13924
14086
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13925
14087
|
onClick: () => select(item, null)
|
13926
14088
|
});
|
14089
|
+
if (item.raw.type === 'divider') {
|
14090
|
+
return slots.divider?.({
|
14091
|
+
props: item.raw,
|
14092
|
+
index
|
14093
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
14094
|
+
"key": `divider-${index}`
|
14095
|
+
}), null);
|
14096
|
+
}
|
14097
|
+
if (item.raw.type === 'subheader') {
|
14098
|
+
return slots.subheader?.({
|
14099
|
+
props: item.raw,
|
14100
|
+
index
|
14101
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
14102
|
+
"key": `subheader-${index}`
|
14103
|
+
}), null);
|
14104
|
+
}
|
13927
14105
|
return slots.item?.({
|
13928
14106
|
item,
|
13929
14107
|
index,
|
@@ -16162,7 +16340,10 @@ const useSteps = props => {
|
|
16162
16340
|
if (step.value <= 0) return value;
|
16163
16341
|
const clamped = clamp(value, min.value, max.value);
|
16164
16342
|
const offset = min.value % step.value;
|
16165
|
-
|
16343
|
+
let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
16344
|
+
if (clamped > newValue && newValue + step.value > max.value) {
|
16345
|
+
newValue = max.value;
|
16346
|
+
}
|
16166
16347
|
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
16167
16348
|
}
|
16168
16349
|
return {
|
@@ -16418,6 +16599,8 @@ const VSliderThumb = genericComponent()({
|
|
16418
16599
|
} = useRtl();
|
16419
16600
|
if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
|
16420
16601
|
const {
|
16602
|
+
min,
|
16603
|
+
max,
|
16421
16604
|
thumbColor,
|
16422
16605
|
step,
|
16423
16606
|
disabled,
|
@@ -16458,16 +16641,20 @@ const VSliderThumb = genericComponent()({
|
|
16458
16641
|
if (!relevantKeys.includes(e.key)) return;
|
16459
16642
|
e.preventDefault();
|
16460
16643
|
const _step = step.value || 0.1;
|
16461
|
-
const steps = (
|
16644
|
+
const steps = (max.value - min.value) / _step;
|
16462
16645
|
if ([left, right, down, up].includes(e.key)) {
|
16463
16646
|
const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
|
16464
16647
|
const direction = increase.includes(e.key) ? 1 : -1;
|
16465
16648
|
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
16466
|
-
|
16649
|
+
if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
|
16650
|
+
value = value - steps % 1 * _step;
|
16651
|
+
} else {
|
16652
|
+
value = value + direction * _step * multipliers.value[multiplier];
|
16653
|
+
}
|
16467
16654
|
} else if (e.key === home) {
|
16468
|
-
value =
|
16655
|
+
value = min.value;
|
16469
16656
|
} else if (e.key === end) {
|
16470
|
-
value =
|
16657
|
+
value = max.value;
|
16471
16658
|
} else {
|
16472
16659
|
const direction = e.key === pagedown ? 1 : -1;
|
16473
16660
|
value = value - direction * _step * (steps > 100 ? steps / 10 : 10);
|
@@ -16492,8 +16679,8 @@ const VSliderThumb = genericComponent()({
|
|
16492
16679
|
"role": "slider",
|
16493
16680
|
"tabindex": disabled.value ? -1 : 0,
|
16494
16681
|
"aria-label": props.name,
|
16495
|
-
"aria-valuemin":
|
16496
|
-
"aria-valuemax":
|
16682
|
+
"aria-valuemin": min.value,
|
16683
|
+
"aria-valuemax": max.value,
|
16497
16684
|
"aria-valuenow": props.modelValue,
|
16498
16685
|
"aria-readonly": !!readonly.value,
|
16499
16686
|
"aria-orientation": direction.value,
|
@@ -17519,13 +17706,13 @@ function date(value) {
|
|
17519
17706
|
return null;
|
17520
17707
|
}
|
17521
17708
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17522
|
-
function getWeekdays(locale, firstDayOfWeek) {
|
17709
|
+
function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
|
17523
17710
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17524
17711
|
return createRange(7).map(i => {
|
17525
17712
|
const weekday = new Date(sundayJanuarySecond2000);
|
17526
17713
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17527
17714
|
return new Intl.DateTimeFormat(locale, {
|
17528
|
-
weekday: 'narrow'
|
17715
|
+
weekday: weekdayFormat ?? 'narrow'
|
17529
17716
|
}).format(weekday);
|
17530
17717
|
});
|
17531
17718
|
}
|
@@ -17989,9 +18176,9 @@ class VuetifyDateAdapter {
|
|
17989
18176
|
getDiff(date, comparing, unit) {
|
17990
18177
|
return getDiff(date, comparing, unit);
|
17991
18178
|
}
|
17992
|
-
getWeekdays(firstDayOfWeek) {
|
18179
|
+
getWeekdays(firstDayOfWeek, weekdayFormat) {
|
17993
18180
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17994
|
-
return getWeekdays(this.locale, firstDay);
|
18181
|
+
return getWeekdays(this.locale, firstDay, weekdayFormat);
|
17995
18182
|
}
|
17996
18183
|
getYear(date) {
|
17997
18184
|
return getYear(date);
|
@@ -18347,6 +18534,7 @@ const VCombobox = genericComponent()({
|
|
18347
18534
|
_search.value = val ?? '';
|
18348
18535
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18349
18536
|
model.value = [transformItem$3(props, val)];
|
18537
|
+
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18350
18538
|
}
|
18351
18539
|
if (val && props.multiple && props.delimiters?.length) {
|
18352
18540
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18427,7 +18615,7 @@ const VCombobox = genericComponent()({
|
|
18427
18615
|
menu.value = !menu.value;
|
18428
18616
|
}
|
18429
18617
|
function onListKeydown(e) {
|
18430
|
-
if (e.key
|
18618
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
18431
18619
|
vTextFieldRef.value?.focus();
|
18432
18620
|
}
|
18433
18621
|
}
|
@@ -18632,6 +18820,7 @@ const VCombobox = genericComponent()({
|
|
18632
18820
|
}, props.menuProps), {
|
18633
18821
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18634
18822
|
"ref": listRef,
|
18823
|
+
"filterable": true,
|
18635
18824
|
"selected": selectedValues.value,
|
18636
18825
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18637
18826
|
"onMousedown": e => e.preventDefault(),
|
@@ -18663,6 +18852,22 @@ const VCombobox = genericComponent()({
|
|
18663
18852
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18664
18853
|
onClick: () => select(item, null)
|
18665
18854
|
});
|
18855
|
+
if (item.raw.type === 'divider') {
|
18856
|
+
return slots.divider?.({
|
18857
|
+
props: item.raw,
|
18858
|
+
index
|
18859
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18860
|
+
"key": `divider-${index}`
|
18861
|
+
}), null);
|
18862
|
+
}
|
18863
|
+
if (item.raw.type === 'subheader') {
|
18864
|
+
return slots.subheader?.({
|
18865
|
+
props: item.raw,
|
18866
|
+
index
|
18867
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18868
|
+
"key": `subheader-${index}`
|
18869
|
+
}), null);
|
18870
|
+
}
|
18666
18871
|
return slots.item?.({
|
18667
18872
|
item,
|
18668
18873
|
index,
|
@@ -20542,6 +20747,7 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20542
20747
|
color: String,
|
20543
20748
|
disableSort: Boolean,
|
20544
20749
|
fixedHeader: Boolean,
|
20750
|
+
lastFixed: Boolean,
|
20545
20751
|
multiSort: Boolean,
|
20546
20752
|
sortAscIcon: {
|
20547
20753
|
type: IconValue,
|
@@ -20588,10 +20794,11 @@ const VDataTableHeaders = genericComponent()({
|
|
20588
20794
|
loaderClasses
|
20589
20795
|
} = useLoader(props);
|
20590
20796
|
function getFixedStyles(column, y) {
|
20591
|
-
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20797
|
+
if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
|
20592
20798
|
return {
|
20593
20799
|
position: 'sticky',
|
20594
|
-
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20800
|
+
left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
|
20801
|
+
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20595
20802
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20596
20803
|
};
|
20597
20804
|
}
|
@@ -21100,11 +21307,18 @@ const VDataTableRows = genericComponent()({
|
|
21100
21307
|
}
|
21101
21308
|
});
|
21102
21309
|
|
21310
|
+
// Types
|
21311
|
+
|
21103
21312
|
const makeVTableProps = propsFactory({
|
21104
21313
|
fixedHeader: Boolean,
|
21105
21314
|
fixedFooter: Boolean,
|
21106
21315
|
height: [Number, String],
|
21107
21316
|
hover: Boolean,
|
21317
|
+
striped: {
|
21318
|
+
type: String,
|
21319
|
+
default: null,
|
21320
|
+
validator: v => ['even', 'odd'].includes(v)
|
21321
|
+
},
|
21108
21322
|
...makeComponentProps(),
|
21109
21323
|
...makeDensityProps(),
|
21110
21324
|
...makeTagProps(),
|
@@ -21131,7 +21345,9 @@ const VTable = genericComponent()({
|
|
21131
21345
|
'v-table--fixed-footer': props.fixedFooter,
|
21132
21346
|
'v-table--has-top': !!slots.top,
|
21133
21347
|
'v-table--has-bottom': !!slots.bottom,
|
21134
|
-
'v-table--hover': props.hover
|
21348
|
+
'v-table--hover': props.hover,
|
21349
|
+
'v-table--striped-even': props.striped === 'even',
|
21350
|
+
'v-table--striped-odd': props.striped === 'odd'
|
21135
21351
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21136
21352
|
"style": normalizeStyle(props.style)
|
21137
21353
|
}, {
|
@@ -22306,7 +22522,8 @@ const makeCalendarProps = propsFactory({
|
|
22306
22522
|
firstDayOfWeek: {
|
22307
22523
|
type: [Number, String],
|
22308
22524
|
default: undefined
|
22309
|
-
}
|
22525
|
+
},
|
22526
|
+
weekdayFormat: String
|
22310
22527
|
}, 'calendar');
|
22311
22528
|
function useCalendar(props) {
|
22312
22529
|
const adapter = useDate();
|
@@ -22547,7 +22764,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22547
22764
|
"ref": daysRef,
|
22548
22765
|
"key": daysInMonth.value[0].date?.toString(),
|
22549
22766
|
"class": "v-date-picker-month__days"
|
22550
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22767
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
|
22551
22768
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22552
22769
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22553
22770
|
const slotProps = {
|
@@ -25137,6 +25354,10 @@ const makeVNumberInputProps = propsFactory({
|
|
25137
25354
|
type: Number,
|
25138
25355
|
default: 0
|
25139
25356
|
},
|
25357
|
+
minFractionDigits: {
|
25358
|
+
type: Number,
|
25359
|
+
default: null
|
25360
|
+
},
|
25140
25361
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25141
25362
|
}, 'VNumberInput');
|
25142
25363
|
const VNumberInput = genericComponent()({
|
@@ -25167,9 +25388,19 @@ const VNumberInput = genericComponent()({
|
|
25167
25388
|
} = useFocus(props);
|
25168
25389
|
function correctPrecision(val) {
|
25169
25390
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25170
|
-
|
25171
|
-
|
25172
|
-
|
25391
|
+
if (precision == null) {
|
25392
|
+
return String(val);
|
25393
|
+
}
|
25394
|
+
let fixed = val.toFixed(precision);
|
25395
|
+
if (isFocused.value) {
|
25396
|
+
return Number(fixed).toString(); // trim zeros
|
25397
|
+
}
|
25398
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25399
|
+
const trimLimit = precision - props.minFractionDigits;
|
25400
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25401
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25402
|
+
}
|
25403
|
+
return fixed;
|
25173
25404
|
}
|
25174
25405
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25175
25406
|
const _inputText = shallowRef(null);
|
@@ -25224,6 +25455,7 @@ const VNumberInput = genericComponent()({
|
|
25224
25455
|
}
|
25225
25456
|
};
|
25226
25457
|
watch(() => props.precision, () => formatInputValue());
|
25458
|
+
watch(() => props.minFractionDigits, () => formatInputValue());
|
25227
25459
|
onMounted(() => {
|
25228
25460
|
clampModel();
|
25229
25461
|
});
|
@@ -25338,7 +25570,7 @@ const VNumberInput = genericComponent()({
|
|
25338
25570
|
inputText.value = null;
|
25339
25571
|
return;
|
25340
25572
|
}
|
25341
|
-
inputText.value =
|
25573
|
+
inputText.value = correctPrecision(model.value);
|
25342
25574
|
}
|
25343
25575
|
function trimDecimalZeros() {
|
25344
25576
|
if (controlsDisabled.value) return;
|
@@ -25598,9 +25830,10 @@ const VOtpInput = genericComponent()({
|
|
25598
25830
|
e.preventDefault();
|
25599
25831
|
e.stopPropagation();
|
25600
25832
|
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25833
|
+
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25601
25834
|
if (isValidNumber(clipboardText)) return;
|
25602
25835
|
model.value = clipboardText.split('');
|
25603
|
-
inputRef.value?.[
|
25836
|
+
inputRef.value?.[finalIndex].focus();
|
25604
25837
|
}
|
25605
25838
|
function reset() {
|
25606
25839
|
model.value = [];
|
@@ -29382,7 +29615,7 @@ function createVuetify$1() {
|
|
29382
29615
|
};
|
29383
29616
|
});
|
29384
29617
|
}
|
29385
|
-
const version$1 = "3.8.
|
29618
|
+
const version$1 = "3.8.8-dev.2025-06-04";
|
29386
29619
|
createVuetify$1.version = version$1;
|
29387
29620
|
|
29388
29621
|
// Vue's inject() can only be used in setup
|
@@ -29407,7 +29640,7 @@ const createVuetify = function () {
|
|
29407
29640
|
...options
|
29408
29641
|
});
|
29409
29642
|
};
|
29410
|
-
const version = "3.8.
|
29643
|
+
const version = "3.8.8-dev.2025-06-04";
|
29411
29644
|
createVuetify.version = version;
|
29412
29645
|
|
29413
29646
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|