@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-labs.esm.js
CHANGED
@@ -1,10 +1,10 @@
|
|
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, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, 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
|
// Types
|
10
10
|
// eslint-disable-line vue/prefer-import-from-vue
|
@@ -81,6 +81,7 @@ const IN_BROWSER = typeof window !== 'undefined';
|
|
81
81
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
82
82
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
83
83
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
84
|
+
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
84
85
|
|
85
86
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
86
87
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -603,7 +604,6 @@ function extractNumber(text, decimalDigitsLimit) {
|
|
603
604
|
return cleanText;
|
604
605
|
}
|
605
606
|
function camelizeProps(props) {
|
606
|
-
if (!props) return;
|
607
607
|
const out = {};
|
608
608
|
for (const prop in props) {
|
609
609
|
out[camelize(prop)] = props[prop];
|
@@ -2345,6 +2345,7 @@ const makeThemeProps = propsFactory({
|
|
2345
2345
|
function genDefaults$2() {
|
2346
2346
|
return {
|
2347
2347
|
defaultTheme: 'light',
|
2348
|
+
prefix: 'v-',
|
2348
2349
|
variations: {
|
2349
2350
|
colors: [],
|
2350
2351
|
lighten: 0,
|
@@ -2426,7 +2427,10 @@ function genDefaults$2() {
|
|
2426
2427
|
}
|
2427
2428
|
}
|
2428
2429
|
},
|
2429
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2430
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
2431
|
+
scoped: false,
|
2432
|
+
unimportant: false,
|
2433
|
+
utilities: true
|
2430
2434
|
};
|
2431
2435
|
}
|
2432
2436
|
function parseThemeOptions() {
|
@@ -2449,21 +2453,21 @@ function parseThemeOptions() {
|
|
2449
2453
|
function createCssClass(lines, selector, content, scope) {
|
2450
2454
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2451
2455
|
}
|
2452
|
-
function genCssVariables(theme) {
|
2456
|
+
function genCssVariables(theme, prefix) {
|
2453
2457
|
const lightOverlay = theme.dark ? 2 : 1;
|
2454
2458
|
const darkOverlay = theme.dark ? 1 : 2;
|
2455
2459
|
const variables = [];
|
2456
2460
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2457
2461
|
const rgb = parseColor(value);
|
2458
|
-
variables.push(
|
2462
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2459
2463
|
if (!key.startsWith('on-')) {
|
2460
|
-
variables.push(
|
2464
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2461
2465
|
}
|
2462
2466
|
}
|
2463
2467
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2464
2468
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2465
2469
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2466
|
-
variables.push(
|
2470
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
2467
2471
|
}
|
2468
2472
|
return variables;
|
2469
2473
|
}
|
@@ -2507,7 +2511,8 @@ function getScopedSelector(selector, scope) {
|
|
2507
2511
|
const scopeSelector = `:where(${scope})`;
|
2508
2512
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2509
2513
|
}
|
2510
|
-
function upsertStyles(
|
2514
|
+
function upsertStyles(id, cspNonce, styles) {
|
2515
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2511
2516
|
if (!styleEl) return;
|
2512
2517
|
styleEl.innerHTML = styles;
|
2513
2518
|
}
|
@@ -2527,8 +2532,17 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2527
2532
|
// Composables
|
2528
2533
|
function createTheme(options) {
|
2529
2534
|
const parsedOptions = parseThemeOptions(options);
|
2530
|
-
const
|
2535
|
+
const _name = shallowRef(parsedOptions.defaultTheme);
|
2531
2536
|
const themes = ref(parsedOptions.themes);
|
2537
|
+
const systemName = shallowRef('light');
|
2538
|
+
const name = computed({
|
2539
|
+
get() {
|
2540
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
2541
|
+
},
|
2542
|
+
set(val) {
|
2543
|
+
_name.value = val;
|
2544
|
+
}
|
2545
|
+
});
|
2532
2546
|
const computedThemes = computed(() => {
|
2533
2547
|
const acc = {};
|
2534
2548
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2549,28 +2563,49 @@ function createTheme(options) {
|
|
2549
2563
|
const current = toRef(() => computedThemes.value[name.value]);
|
2550
2564
|
const styles = computed(() => {
|
2551
2565
|
const lines = [];
|
2566
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
2567
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2552
2568
|
if (current.value?.dark) {
|
2553
2569
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2554
2570
|
}
|
2555
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2571
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
2556
2572
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2557
|
-
createCssClass(lines,
|
2558
|
-
}
|
2559
|
-
|
2560
|
-
|
2561
|
-
|
2562
|
-
|
2563
|
-
|
2564
|
-
|
2565
|
-
|
2566
|
-
|
2567
|
-
|
2568
|
-
|
2573
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
2574
|
+
}
|
2575
|
+
if (parsedOptions.utilities) {
|
2576
|
+
const bgLines = [];
|
2577
|
+
const fgLines = [];
|
2578
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2579
|
+
for (const key of colors) {
|
2580
|
+
if (key.startsWith('on-')) {
|
2581
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2582
|
+
} else {
|
2583
|
+
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);
|
2584
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2585
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2586
|
+
}
|
2569
2587
|
}
|
2588
|
+
lines.push(...bgLines, ...fgLines);
|
2570
2589
|
}
|
2571
|
-
lines.push(...bgLines, ...fgLines);
|
2572
2590
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2573
2591
|
});
|
2592
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2593
|
+
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
2594
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
2595
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2596
|
+
function updateSystemName() {
|
2597
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
2598
|
+
}
|
2599
|
+
updateSystemName();
|
2600
|
+
media.addEventListener('change', updateSystemName, {
|
2601
|
+
passive: true
|
2602
|
+
});
|
2603
|
+
if (getCurrentScope()) {
|
2604
|
+
onScopeDispose(() => {
|
2605
|
+
media.removeEventListener('change', updateSystemName);
|
2606
|
+
});
|
2607
|
+
}
|
2608
|
+
}
|
2574
2609
|
function install(app) {
|
2575
2610
|
if (parsedOptions.isDisabled) return;
|
2576
2611
|
const head = app._context.provides.usehead;
|
@@ -2608,22 +2643,55 @@ function createTheme(options) {
|
|
2608
2643
|
updateStyles();
|
2609
2644
|
}
|
2610
2645
|
function updateStyles() {
|
2611
|
-
upsertStyles(
|
2646
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2612
2647
|
}
|
2613
2648
|
}
|
2614
2649
|
}
|
2615
|
-
|
2650
|
+
function change(themeName) {
|
2651
|
+
if (!themeNames.value.includes(themeName)) {
|
2652
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2653
|
+
return;
|
2654
|
+
}
|
2655
|
+
name.value = themeName;
|
2656
|
+
}
|
2657
|
+
function cycle() {
|
2658
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2659
|
+
const currentIndex = themeArray.indexOf(name.value);
|
2660
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2661
|
+
change(themeArray[nextIndex]);
|
2662
|
+
}
|
2663
|
+
function toggle() {
|
2664
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2665
|
+
cycle(themeArray);
|
2666
|
+
}
|
2667
|
+
const globalName = new Proxy(name, {
|
2668
|
+
get(target, prop) {
|
2669
|
+
return target[prop];
|
2670
|
+
},
|
2671
|
+
set(target, prop, val) {
|
2672
|
+
if (prop === 'value') {
|
2673
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2674
|
+
}
|
2675
|
+
// @ts-expect-error
|
2676
|
+
target[prop] = val;
|
2677
|
+
return true;
|
2678
|
+
}
|
2679
|
+
});
|
2616
2680
|
return {
|
2617
2681
|
install,
|
2682
|
+
change,
|
2683
|
+
cycle,
|
2684
|
+
toggle,
|
2618
2685
|
isDisabled: parsedOptions.isDisabled,
|
2619
2686
|
name,
|
2620
2687
|
themes,
|
2621
2688
|
current,
|
2622
2689
|
computedThemes,
|
2690
|
+
prefix: parsedOptions.prefix,
|
2623
2691
|
themeClasses,
|
2624
2692
|
styles,
|
2625
2693
|
global: {
|
2626
|
-
name,
|
2694
|
+
name: globalName,
|
2627
2695
|
current
|
2628
2696
|
}
|
2629
2697
|
};
|
@@ -2634,7 +2702,7 @@ function provideTheme(props) {
|
|
2634
2702
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2635
2703
|
const name = toRef(() => props.theme ?? theme.name.value);
|
2636
2704
|
const current = toRef(() => theme.themes.value[name.value]);
|
2637
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
2705
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
2638
2706
|
const newTheme = {
|
2639
2707
|
...theme,
|
2640
2708
|
name,
|
@@ -3738,7 +3806,10 @@ const makeVToolbarProps = propsFactory({
|
|
3738
3806
|
default: 'default',
|
3739
3807
|
validator: v => allowedDensities$1.includes(v)
|
3740
3808
|
},
|
3741
|
-
extended:
|
3809
|
+
extended: {
|
3810
|
+
type: Boolean,
|
3811
|
+
default: null
|
3812
|
+
},
|
3742
3813
|
extensionHeight: {
|
3743
3814
|
type: [Number, String],
|
3744
3815
|
default: 48
|
@@ -3786,7 +3857,7 @@ const VToolbar = genericComponent()({
|
|
3786
3857
|
const {
|
3787
3858
|
rtlClasses
|
3788
3859
|
} = useRtl();
|
3789
|
-
const isExtended = shallowRef(
|
3860
|
+
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
3790
3861
|
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));
|
3791
3862
|
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);
|
3792
3863
|
provideDefaults({
|
@@ -3798,7 +3869,7 @@ const VToolbar = genericComponent()({
|
|
3798
3869
|
const hasTitle = !!(props.title || slots.title);
|
3799
3870
|
const hasImage = !!(slots.image || props.image);
|
3800
3871
|
const extension = slots.extension?.();
|
3801
|
-
isExtended.value =
|
3872
|
+
isExtended.value = props.extended === null ? !!extension : props.extended;
|
3802
3873
|
return createVNode(props.tag, {
|
3803
3874
|
"class": normalizeClass(['v-toolbar', {
|
3804
3875
|
'v-toolbar--absolute': props.absolute,
|
@@ -4181,9 +4252,15 @@ function useVariant(props) {
|
|
4181
4252
|
};
|
4182
4253
|
}
|
4183
4254
|
|
4255
|
+
// Types
|
4256
|
+
|
4184
4257
|
const makeVBtnGroupProps = propsFactory({
|
4185
4258
|
baseColor: String,
|
4186
4259
|
divided: Boolean,
|
4260
|
+
direction: {
|
4261
|
+
type: String,
|
4262
|
+
default: 'horizontal'
|
4263
|
+
},
|
4187
4264
|
...makeBorderProps(),
|
4188
4265
|
...makeComponentProps(),
|
4189
4266
|
...makeDensityProps(),
|
@@ -4217,7 +4294,7 @@ const VBtnGroup = genericComponent()({
|
|
4217
4294
|
} = useRounded(props);
|
4218
4295
|
provideDefaults({
|
4219
4296
|
VBtn: {
|
4220
|
-
height: 'auto',
|
4297
|
+
height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
4221
4298
|
baseColor: toRef(() => props.baseColor),
|
4222
4299
|
color: toRef(() => props.color),
|
4223
4300
|
density: toRef(() => props.density),
|
@@ -4227,7 +4304,7 @@ const VBtnGroup = genericComponent()({
|
|
4227
4304
|
});
|
4228
4305
|
useRender(() => {
|
4229
4306
|
return createVNode(props.tag, {
|
4230
|
-
"class": normalizeClass(['v-btn-group', {
|
4307
|
+
"class": normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
|
4231
4308
|
'v-btn-group--divided': props.divided
|
4232
4309
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4233
4310
|
"style": normalizeStyle(props.style)
|
@@ -5559,8 +5636,8 @@ function rippleCancelShow(e) {
|
|
5559
5636
|
window.clearTimeout(element._ripple.showTimer);
|
5560
5637
|
}
|
5561
5638
|
let keyboardRipple = false;
|
5562
|
-
function keyboardRippleShow(e) {
|
5563
|
-
if (!keyboardRipple && (e.keyCode
|
5639
|
+
function keyboardRippleShow(e, keys) {
|
5640
|
+
if (!keyboardRipple && keys.includes(e.keyCode)) {
|
5564
5641
|
keyboardRipple = true;
|
5565
5642
|
rippleShow(e);
|
5566
5643
|
}
|
@@ -5588,9 +5665,12 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5588
5665
|
el._ripple.enabled = enabled;
|
5589
5666
|
el._ripple.centered = modifiers.center;
|
5590
5667
|
el._ripple.circle = modifiers.circle;
|
5591
|
-
|
5592
|
-
|
5668
|
+
const bindingValue = isObject(value) ? value : {};
|
5669
|
+
if (bindingValue.class) {
|
5670
|
+
el._ripple.class = bindingValue.class;
|
5593
5671
|
}
|
5672
|
+
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5673
|
+
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5594
5674
|
if (enabled && !wasEnabled) {
|
5595
5675
|
if (modifiers.stop) {
|
5596
5676
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5612,7 +5692,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5612
5692
|
el.addEventListener('mousedown', rippleShow);
|
5613
5693
|
el.addEventListener('mouseup', rippleHide);
|
5614
5694
|
el.addEventListener('mouseleave', rippleHide);
|
5615
|
-
el.addEventListener('keydown', keyboardRippleShow);
|
5695
|
+
el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
|
5616
5696
|
el.addEventListener('keyup', keyboardRippleHide);
|
5617
5697
|
el.addEventListener('blur', focusRippleHide);
|
5618
5698
|
|
@@ -5632,7 +5712,9 @@ function removeListeners(el) {
|
|
5632
5712
|
el.removeEventListener('touchcancel', rippleHide);
|
5633
5713
|
el.removeEventListener('mouseup', rippleHide);
|
5634
5714
|
el.removeEventListener('mouseleave', rippleHide);
|
5635
|
-
el.
|
5715
|
+
if (el._ripple?.keyDownHandler) {
|
5716
|
+
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5717
|
+
}
|
5636
5718
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5637
5719
|
el.removeEventListener('dragstart', rippleHide);
|
5638
5720
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5641,8 +5723,8 @@ function mounted$4(el, binding) {
|
|
5641
5723
|
updateRipple(el, binding, false);
|
5642
5724
|
}
|
5643
5725
|
function unmounted$4(el) {
|
5644
|
-
delete el._ripple;
|
5645
5726
|
removeListeners(el);
|
5727
|
+
delete el._ripple;
|
5646
5728
|
}
|
5647
5729
|
function updated$1(el, binding) {
|
5648
5730
|
if (binding.value === binding.oldValue) {
|
@@ -5915,6 +5997,31 @@ const VAppBarTitle = genericComponent()({
|
|
5915
5997
|
// Utilities
|
5916
5998
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5917
5999
|
|
6000
|
+
// Utilities
|
6001
|
+
|
6002
|
+
// Types
|
6003
|
+
|
6004
|
+
// Types
|
6005
|
+
|
6006
|
+
// Composables
|
6007
|
+
const makeIconSizeProps = propsFactory({
|
6008
|
+
iconSize: [Number, String],
|
6009
|
+
iconSizes: {
|
6010
|
+
type: Array,
|
6011
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6012
|
+
}
|
6013
|
+
}, 'iconSize');
|
6014
|
+
function useIconSizes(props, fallback) {
|
6015
|
+
const iconSize = computed(() => {
|
6016
|
+
const iconSizeMap = new Map(props.iconSizes);
|
6017
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6018
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6019
|
+
});
|
6020
|
+
return {
|
6021
|
+
iconSize
|
6022
|
+
};
|
6023
|
+
}
|
6024
|
+
|
5918
6025
|
// Types
|
5919
6026
|
|
5920
6027
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -5954,6 +6061,7 @@ const makeVAlertProps = propsFactory({
|
|
5954
6061
|
...makeDensityProps(),
|
5955
6062
|
...makeDimensionProps(),
|
5956
6063
|
...makeElevationProps(),
|
6064
|
+
...makeIconSizeProps(),
|
5957
6065
|
...makeLocationProps(),
|
5958
6066
|
...makePositionProps(),
|
5959
6067
|
...makeRoundedProps(),
|
@@ -5981,6 +6089,9 @@ const VAlert = genericComponent()({
|
|
5981
6089
|
if (!props.type) return props.icon;
|
5982
6090
|
return props.icon ?? `$${props.type}`;
|
5983
6091
|
});
|
6092
|
+
const {
|
6093
|
+
iconSize
|
6094
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
5984
6095
|
const {
|
5985
6096
|
themeClasses
|
5986
6097
|
} = provideTheme(props);
|
@@ -6028,6 +6139,11 @@ const VAlert = genericComponent()({
|
|
6028
6139
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6029
6140
|
const hasTitle = !!(slots.title || props.title);
|
6030
6141
|
const hasClose = !!(slots.close || props.closable);
|
6142
|
+
const iconProps = {
|
6143
|
+
density: props.density,
|
6144
|
+
icon: icon.value,
|
6145
|
+
size: iconSize.value
|
6146
|
+
};
|
6031
6147
|
return isActive.value && createVNode(props.tag, {
|
6032
6148
|
"class": normalizeClass(['v-alert', props.border && {
|
6033
6149
|
'v-alert--border': !!props.border,
|
@@ -6045,19 +6161,14 @@ const VAlert = genericComponent()({
|
|
6045
6161
|
}, null), hasPrepend && createElementVNode("div", {
|
6046
6162
|
"key": "prepend",
|
6047
6163
|
"class": "v-alert__prepend"
|
6048
|
-
}, [!slots.prepend ? createVNode(VIcon, {
|
6049
|
-
"key": "prepend-icon"
|
6050
|
-
|
6051
|
-
"icon": icon.value,
|
6052
|
-
"size": props.prominent ? 44 : 28
|
6053
|
-
}, null) : createVNode(VDefaultsProvider, {
|
6164
|
+
}, [!slots.prepend ? createVNode(VIcon, mergeProps({
|
6165
|
+
"key": "prepend-icon"
|
6166
|
+
}, iconProps), null) : createVNode(VDefaultsProvider, {
|
6054
6167
|
"key": "prepend-defaults",
|
6055
6168
|
"disabled": !icon.value,
|
6056
6169
|
"defaults": {
|
6057
6170
|
VIcon: {
|
6058
|
-
|
6059
|
-
icon: icon.value,
|
6060
|
-
size: props.prominent ? 44 : 28
|
6171
|
+
...iconProps
|
6061
6172
|
}
|
6062
6173
|
}
|
6063
6174
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7582,6 +7693,7 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7582
7693
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7583
7694
|
const makeVSlideGroupProps = propsFactory({
|
7584
7695
|
centerActive: Boolean,
|
7696
|
+
contentClass: null,
|
7585
7697
|
direction: {
|
7586
7698
|
type: String,
|
7587
7699
|
default: 'horizontal'
|
@@ -7894,7 +8006,7 @@ const VSlideGroup = genericComponent()({
|
|
7894
8006
|
})]), createElementVNode("div", {
|
7895
8007
|
"key": "container",
|
7896
8008
|
"ref": containerRef,
|
7897
|
-
"class":
|
8009
|
+
"class": normalizeClass(['v-slide-group__container', props.contentClass]),
|
7898
8010
|
"onScroll": onScroll
|
7899
8011
|
}, [createElementVNode("div", {
|
7900
8012
|
"ref": contentRef,
|
@@ -8257,16 +8369,85 @@ const VChip = genericComponent()({
|
|
8257
8369
|
}
|
8258
8370
|
});
|
8259
8371
|
|
8372
|
+
const makeVDividerProps = propsFactory({
|
8373
|
+
color: String,
|
8374
|
+
inset: Boolean,
|
8375
|
+
length: [Number, String],
|
8376
|
+
opacity: [Number, String],
|
8377
|
+
thickness: [Number, String],
|
8378
|
+
vertical: Boolean,
|
8379
|
+
...makeComponentProps(),
|
8380
|
+
...makeThemeProps()
|
8381
|
+
}, 'VDivider');
|
8382
|
+
const VDivider = genericComponent()({
|
8383
|
+
name: 'VDivider',
|
8384
|
+
props: makeVDividerProps(),
|
8385
|
+
setup(props, _ref) {
|
8386
|
+
let {
|
8387
|
+
attrs,
|
8388
|
+
slots
|
8389
|
+
} = _ref;
|
8390
|
+
const {
|
8391
|
+
themeClasses
|
8392
|
+
} = provideTheme(props);
|
8393
|
+
const {
|
8394
|
+
textColorClasses,
|
8395
|
+
textColorStyles
|
8396
|
+
} = useTextColor(() => props.color);
|
8397
|
+
const dividerStyles = computed(() => {
|
8398
|
+
const styles = {};
|
8399
|
+
if (props.length) {
|
8400
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8401
|
+
}
|
8402
|
+
if (props.thickness) {
|
8403
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8404
|
+
}
|
8405
|
+
return styles;
|
8406
|
+
});
|
8407
|
+
useRender(() => {
|
8408
|
+
const divider = createElementVNode("hr", {
|
8409
|
+
"class": normalizeClass([{
|
8410
|
+
'v-divider': true,
|
8411
|
+
'v-divider--inset': props.inset,
|
8412
|
+
'v-divider--vertical': props.vertical
|
8413
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
8414
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8415
|
+
'--v-border-opacity': props.opacity
|
8416
|
+
}, props.style]),
|
8417
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8418
|
+
"role": `${attrs.role || 'separator'}`
|
8419
|
+
}, null);
|
8420
|
+
if (!slots.default) return divider;
|
8421
|
+
return createElementVNode("div", {
|
8422
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
8423
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8424
|
+
'v-divider__wrapper--inset': props.inset
|
8425
|
+
}])
|
8426
|
+
}, [divider, createElementVNode("div", {
|
8427
|
+
"class": "v-divider__content"
|
8428
|
+
}, [slots.default()]), divider]);
|
8429
|
+
});
|
8430
|
+
return {};
|
8431
|
+
}
|
8432
|
+
});
|
8433
|
+
|
8260
8434
|
// Utilities
|
8261
8435
|
|
8262
8436
|
// List
|
8263
8437
|
const ListKey = Symbol.for('vuetify:list');
|
8264
8438
|
function createList() {
|
8439
|
+
let {
|
8440
|
+
filterable
|
8441
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8442
|
+
filterable: false
|
8443
|
+
};
|
8265
8444
|
const parent = inject$1(ListKey, {
|
8445
|
+
filterable: false,
|
8266
8446
|
hasPrepend: shallowRef(false),
|
8267
8447
|
updateHasPrepend: () => null
|
8268
8448
|
});
|
8269
8449
|
const data = {
|
8450
|
+
filterable: parent.filterable || filterable,
|
8270
8451
|
hasPrepend: shallowRef(false),
|
8271
8452
|
updateHasPrepend: value => {
|
8272
8453
|
if (value) data.hasPrepend.value = value;
|
@@ -9218,6 +9399,9 @@ const VListItem = genericComponent()({
|
|
9218
9399
|
roundedClasses
|
9219
9400
|
} = useRounded(roundedProps);
|
9220
9401
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9402
|
+
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9403
|
+
keys: [keyCodes.enter]
|
9404
|
+
} : props.ripple);
|
9221
9405
|
const slotProps = computed(() => ({
|
9222
9406
|
isActive: isActive.value,
|
9223
9407
|
select,
|
@@ -9242,8 +9426,9 @@ const VListItem = genericComponent()({
|
|
9242
9426
|
function onKeyDown(e) {
|
9243
9427
|
const target = e.target;
|
9244
9428
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9245
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
9429
|
+
if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
|
9246
9430
|
e.preventDefault();
|
9431
|
+
e.stopPropagation();
|
9247
9432
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9248
9433
|
}
|
9249
9434
|
}
|
@@ -9353,7 +9538,7 @@ const VListItem = genericComponent()({
|
|
9353
9538
|
}), createElementVNode("div", {
|
9354
9539
|
"class": "v-list-item__spacer"
|
9355
9540
|
}, null)])]
|
9356
|
-
}), [[Ripple, isClickable.value &&
|
9541
|
+
}), [[Ripple, isClickable.value && rippleOptions.value]]);
|
9357
9542
|
});
|
9358
9543
|
return {
|
9359
9544
|
activate,
|
@@ -9408,68 +9593,6 @@ const VListSubheader = genericComponent()({
|
|
9408
9593
|
}
|
9409
9594
|
});
|
9410
9595
|
|
9411
|
-
const makeVDividerProps = propsFactory({
|
9412
|
-
color: String,
|
9413
|
-
inset: Boolean,
|
9414
|
-
length: [Number, String],
|
9415
|
-
opacity: [Number, String],
|
9416
|
-
thickness: [Number, String],
|
9417
|
-
vertical: Boolean,
|
9418
|
-
...makeComponentProps(),
|
9419
|
-
...makeThemeProps()
|
9420
|
-
}, 'VDivider');
|
9421
|
-
const VDivider = genericComponent()({
|
9422
|
-
name: 'VDivider',
|
9423
|
-
props: makeVDividerProps(),
|
9424
|
-
setup(props, _ref) {
|
9425
|
-
let {
|
9426
|
-
attrs,
|
9427
|
-
slots
|
9428
|
-
} = _ref;
|
9429
|
-
const {
|
9430
|
-
themeClasses
|
9431
|
-
} = provideTheme(props);
|
9432
|
-
const {
|
9433
|
-
textColorClasses,
|
9434
|
-
textColorStyles
|
9435
|
-
} = useTextColor(() => props.color);
|
9436
|
-
const dividerStyles = computed(() => {
|
9437
|
-
const styles = {};
|
9438
|
-
if (props.length) {
|
9439
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9440
|
-
}
|
9441
|
-
if (props.thickness) {
|
9442
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9443
|
-
}
|
9444
|
-
return styles;
|
9445
|
-
});
|
9446
|
-
useRender(() => {
|
9447
|
-
const divider = createElementVNode("hr", {
|
9448
|
-
"class": normalizeClass([{
|
9449
|
-
'v-divider': true,
|
9450
|
-
'v-divider--inset': props.inset,
|
9451
|
-
'v-divider--vertical': props.vertical
|
9452
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
9453
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9454
|
-
'--v-border-opacity': props.opacity
|
9455
|
-
}, props.style]),
|
9456
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9457
|
-
"role": `${attrs.role || 'separator'}`
|
9458
|
-
}, null);
|
9459
|
-
if (!slots.default) return divider;
|
9460
|
-
return createElementVNode("div", {
|
9461
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
9462
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9463
|
-
'v-divider__wrapper--inset': props.inset
|
9464
|
-
}])
|
9465
|
-
}, [divider, createElementVNode("div", {
|
9466
|
-
"class": "v-divider__content"
|
9467
|
-
}, [slots.default()]), divider]);
|
9468
|
-
});
|
9469
|
-
return {};
|
9470
|
-
}
|
9471
|
-
});
|
9472
|
-
|
9473
9596
|
// Types
|
9474
9597
|
|
9475
9598
|
const makeVListChildrenProps = propsFactory({
|
@@ -9586,7 +9709,7 @@ function transformItem$3(props, item) {
|
|
9586
9709
|
const _props = {
|
9587
9710
|
title,
|
9588
9711
|
value,
|
9589
|
-
...
|
9712
|
+
...itemProps
|
9590
9713
|
};
|
9591
9714
|
return {
|
9592
9715
|
title: String(_props.title ?? ''),
|
@@ -9738,6 +9861,7 @@ const makeVListProps = propsFactory({
|
|
9738
9861
|
activeClass: String,
|
9739
9862
|
bgColor: String,
|
9740
9863
|
disabled: Boolean,
|
9864
|
+
filterable: Boolean,
|
9741
9865
|
expandIcon: IconValue,
|
9742
9866
|
collapseIcon: IconValue,
|
9743
9867
|
lines: {
|
@@ -9821,7 +9945,9 @@ const VList = genericComponent()({
|
|
9821
9945
|
const activeColor = toRef(() => props.activeColor);
|
9822
9946
|
const baseColor = toRef(() => props.baseColor);
|
9823
9947
|
const color = toRef(() => props.color);
|
9824
|
-
createList(
|
9948
|
+
createList({
|
9949
|
+
filterable: props.filterable
|
9950
|
+
});
|
9825
9951
|
provideDefaults({
|
9826
9952
|
VListGroup: {
|
9827
9953
|
activeColor,
|
@@ -12398,7 +12524,12 @@ function useVirtual(props, items) {
|
|
12398
12524
|
}
|
12399
12525
|
function calculateOffset(index) {
|
12400
12526
|
index = clamp(index, 0, items.value.length - 1);
|
12401
|
-
|
12527
|
+
const whole = Math.floor(index);
|
12528
|
+
const fraction = index % 1;
|
12529
|
+
const next = whole + 1;
|
12530
|
+
const wholeOffset = offsets[whole] || 0;
|
12531
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12532
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12402
12533
|
}
|
12403
12534
|
function calculateIndex(scrollTop) {
|
12404
12535
|
return binaryClosest(offsets, scrollTop);
|
@@ -12752,6 +12883,7 @@ const makeSelectProps = propsFactory({
|
|
12752
12883
|
},
|
12753
12884
|
openOnClear: Boolean,
|
12754
12885
|
itemColor: String,
|
12886
|
+
noAutoScroll: Boolean,
|
12755
12887
|
...makeItemsProps({
|
12756
12888
|
itemChildren: false
|
12757
12889
|
})
|
@@ -12966,7 +13098,7 @@ const VSelect = genericComponent()({
|
|
12966
13098
|
watch(menu, () => {
|
12967
13099
|
if (!props.hideSelected && menu.value && model.value.length) {
|
12968
13100
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
12969
|
-
IN_BROWSER && window.requestAnimationFrame(() => {
|
13101
|
+
IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
|
12970
13102
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
12971
13103
|
});
|
12972
13104
|
}
|
@@ -13053,11 +13185,28 @@ const VSelect = genericComponent()({
|
|
13053
13185
|
index,
|
13054
13186
|
itemRef
|
13055
13187
|
} = _ref2;
|
13188
|
+
const camelizedProps = camelizeProps(item.props);
|
13056
13189
|
const itemProps = mergeProps(item.props, {
|
13057
13190
|
ref: itemRef,
|
13058
13191
|
key: item.value,
|
13059
13192
|
onClick: () => select(item, null)
|
13060
13193
|
});
|
13194
|
+
if (item.raw.type === 'divider') {
|
13195
|
+
return slots.divider?.({
|
13196
|
+
props: item.raw,
|
13197
|
+
index
|
13198
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13199
|
+
"key": `divider-${index}`
|
13200
|
+
}), null);
|
13201
|
+
}
|
13202
|
+
if (item.raw.type === 'subheader') {
|
13203
|
+
return slots.subheader?.({
|
13204
|
+
props: item.raw,
|
13205
|
+
index
|
13206
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13207
|
+
"key": `subheader-${index}`
|
13208
|
+
}), null);
|
13209
|
+
}
|
13061
13210
|
return slots.item?.({
|
13062
13211
|
item,
|
13063
13212
|
index,
|
@@ -13074,10 +13223,10 @@ const VSelect = genericComponent()({
|
|
13074
13223
|
"modelValue": isSelected,
|
13075
13224
|
"ripple": false,
|
13076
13225
|
"tabindex": "-1"
|
13077
|
-
}, null) : undefined,
|
13078
|
-
"image":
|
13079
|
-
}, null),
|
13080
|
-
"icon":
|
13226
|
+
}, null) : undefined, camelizedProps.prependAvatar && createVNode(VAvatar, {
|
13227
|
+
"image": camelizedProps.prependAvatar
|
13228
|
+
}, null), camelizedProps.prependIcon && createVNode(VIcon, {
|
13229
|
+
"icon": camelizedProps.prependIcon
|
13081
13230
|
}, null)]);
|
13082
13231
|
}
|
13083
13232
|
});
|
@@ -13218,6 +13367,9 @@ function filterItems(items, query, options) {
|
|
13218
13367
|
let match = -1;
|
13219
13368
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13220
13369
|
if (typeof item === 'object') {
|
13370
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13371
|
+
continue;
|
13372
|
+
}
|
13221
13373
|
const filterKeys = keys || Object.keys(transformed);
|
13222
13374
|
for (const key of filterKeys) {
|
13223
13375
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13420,7 +13572,7 @@ const VAutocomplete = genericComponent()({
|
|
13420
13572
|
menu.value = !menu.value;
|
13421
13573
|
}
|
13422
13574
|
function onListKeydown(e) {
|
13423
|
-
if (e.key
|
13575
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
13424
13576
|
vTextFieldRef.value?.focus();
|
13425
13577
|
}
|
13426
13578
|
}
|
@@ -13625,6 +13777,7 @@ const VAutocomplete = genericComponent()({
|
|
13625
13777
|
}, props.menuProps), {
|
13626
13778
|
default: () => [hasList && createVNode(VList, mergeProps({
|
13627
13779
|
"ref": listRef,
|
13780
|
+
"filterable": true,
|
13628
13781
|
"selected": selectedValues.value,
|
13629
13782
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13630
13783
|
"onMousedown": e => e.preventDefault(),
|
@@ -13656,6 +13809,22 @@ const VAutocomplete = genericComponent()({
|
|
13656
13809
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13657
13810
|
onClick: () => select(item, null)
|
13658
13811
|
});
|
13812
|
+
if (item.raw.type === 'divider') {
|
13813
|
+
return slots.divider?.({
|
13814
|
+
props: item.raw,
|
13815
|
+
index
|
13816
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13817
|
+
"key": `divider-${index}`
|
13818
|
+
}), null);
|
13819
|
+
}
|
13820
|
+
if (item.raw.type === 'subheader') {
|
13821
|
+
return slots.subheader?.({
|
13822
|
+
props: item.raw,
|
13823
|
+
index
|
13824
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13825
|
+
"key": `subheader-${index}`
|
13826
|
+
}), null);
|
13827
|
+
}
|
13659
13828
|
return slots.item?.({
|
13660
13829
|
item,
|
13661
13830
|
index,
|
@@ -13800,7 +13969,8 @@ const makeVBadgeProps = propsFactory({
|
|
13800
13969
|
...makeThemeProps(),
|
13801
13970
|
...makeTransitionProps({
|
13802
13971
|
transition: 'scale-rotate-transition'
|
13803
|
-
})
|
13972
|
+
}),
|
13973
|
+
...makeDimensionProps()
|
13804
13974
|
}, 'VBadge');
|
13805
13975
|
const VBadge = genericComponent()({
|
13806
13976
|
name: 'VBadge',
|
@@ -13830,6 +14000,9 @@ const VBadge = genericComponent()({
|
|
13830
14000
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
13831
14001
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
13832
14002
|
});
|
14003
|
+
const {
|
14004
|
+
dimensionStyles
|
14005
|
+
} = useDimension(props);
|
13833
14006
|
useRender(() => {
|
13834
14007
|
const value = Number(props.content);
|
13835
14008
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -13851,7 +14024,7 @@ const VBadge = genericComponent()({
|
|
13851
14024
|
}, {
|
13852
14025
|
default: () => [withDirectives(createElementVNode("span", mergeProps({
|
13853
14026
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
13854
|
-
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14027
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, dimensionStyles.value, props.inline ? {} : locationStyles.value],
|
13855
14028
|
"aria-atomic": "true",
|
13856
14029
|
"aria-label": t(props.label, value),
|
13857
14030
|
"aria-live": "polite",
|
@@ -17260,13 +17433,13 @@ function date(value) {
|
|
17260
17433
|
return null;
|
17261
17434
|
}
|
17262
17435
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17263
|
-
function getWeekdays(locale, firstDayOfWeek) {
|
17436
|
+
function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
|
17264
17437
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17265
17438
|
return createRange(7).map(i => {
|
17266
17439
|
const weekday = new Date(sundayJanuarySecond2000);
|
17267
17440
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17268
17441
|
return new Intl.DateTimeFormat(locale, {
|
17269
|
-
weekday: 'narrow'
|
17442
|
+
weekday: weekdayFormat ?? 'narrow'
|
17270
17443
|
}).format(weekday);
|
17271
17444
|
});
|
17272
17445
|
}
|
@@ -17525,7 +17698,7 @@ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
|
|
17525
17698
|
const yearStart = new Date(year, 0, 1);
|
17526
17699
|
const size = firstWeekSize(year);
|
17527
17700
|
const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
|
17528
|
-
return 1 + getDiff(date, d1w1, 'weeks');
|
17701
|
+
return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
|
17529
17702
|
}
|
17530
17703
|
function getDate(date) {
|
17531
17704
|
return date.getDate();
|
@@ -17730,9 +17903,9 @@ class VuetifyDateAdapter {
|
|
17730
17903
|
getDiff(date, comparing, unit) {
|
17731
17904
|
return getDiff(date, comparing, unit);
|
17732
17905
|
}
|
17733
|
-
getWeekdays(firstDayOfWeek) {
|
17906
|
+
getWeekdays(firstDayOfWeek, weekdayFormat) {
|
17734
17907
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17735
|
-
return getWeekdays(this.locale, firstDay);
|
17908
|
+
return getWeekdays(this.locale, firstDay, weekdayFormat);
|
17736
17909
|
}
|
17737
17910
|
getYear(date) {
|
17738
17911
|
return getYear(date);
|
@@ -17829,7 +18002,7 @@ function createDate(options, locale) {
|
|
17829
18002
|
};
|
17830
18003
|
}
|
17831
18004
|
function createDateRange(adapter, start, stop) {
|
17832
|
-
const diff = adapter.getDiff(stop ?? start, start, 'days');
|
18005
|
+
const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
|
17833
18006
|
const datesInRange = [start];
|
17834
18007
|
for (let i = 1; i < diff; i++) {
|
17835
18008
|
const nextDate = adapter.addDays(start, i);
|
@@ -18087,6 +18260,7 @@ const VCombobox = genericComponent()({
|
|
18087
18260
|
_search.value = val ?? '';
|
18088
18261
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18089
18262
|
model.value = [transformItem$3(props, val)];
|
18263
|
+
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18090
18264
|
}
|
18091
18265
|
if (val && props.multiple && props.delimiters?.length) {
|
18092
18266
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18167,7 +18341,7 @@ const VCombobox = genericComponent()({
|
|
18167
18341
|
menu.value = !menu.value;
|
18168
18342
|
}
|
18169
18343
|
function onListKeydown(e) {
|
18170
|
-
if (e.key
|
18344
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
18171
18345
|
vTextFieldRef.value?.focus();
|
18172
18346
|
}
|
18173
18347
|
}
|
@@ -18372,6 +18546,7 @@ const VCombobox = genericComponent()({
|
|
18372
18546
|
}, props.menuProps), {
|
18373
18547
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18374
18548
|
"ref": listRef,
|
18549
|
+
"filterable": true,
|
18375
18550
|
"selected": selectedValues.value,
|
18376
18551
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18377
18552
|
"onMousedown": e => e.preventDefault(),
|
@@ -18403,6 +18578,22 @@ const VCombobox = genericComponent()({
|
|
18403
18578
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18404
18579
|
onClick: () => select(item, null)
|
18405
18580
|
});
|
18581
|
+
if (item.raw.type === 'divider') {
|
18582
|
+
return slots.divider?.({
|
18583
|
+
props: item.raw,
|
18584
|
+
index
|
18585
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18586
|
+
"key": `divider-${index}`
|
18587
|
+
}), null);
|
18588
|
+
}
|
18589
|
+
if (item.raw.type === 'subheader') {
|
18590
|
+
return slots.subheader?.({
|
18591
|
+
props: item.raw,
|
18592
|
+
index
|
18593
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18594
|
+
"key": `subheader-${index}`
|
18595
|
+
}), null);
|
18596
|
+
}
|
18406
18597
|
return slots.item?.({
|
18407
18598
|
item,
|
18408
18599
|
index,
|
@@ -20285,6 +20476,7 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20285
20476
|
color: String,
|
20286
20477
|
disableSort: Boolean,
|
20287
20478
|
fixedHeader: Boolean,
|
20479
|
+
lastFixed: Boolean,
|
20288
20480
|
multiSort: Boolean,
|
20289
20481
|
sortAscIcon: {
|
20290
20482
|
type: IconValue,
|
@@ -20331,10 +20523,11 @@ const VDataTableHeaders = genericComponent()({
|
|
20331
20523
|
loaderClasses
|
20332
20524
|
} = useLoader(props);
|
20333
20525
|
function getFixedStyles(column, y) {
|
20334
|
-
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20526
|
+
if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
|
20335
20527
|
return {
|
20336
20528
|
position: 'sticky',
|
20337
|
-
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20529
|
+
left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
|
20530
|
+
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20338
20531
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20339
20532
|
};
|
20340
20533
|
}
|
@@ -20850,11 +21043,18 @@ const VDataTableRows = genericComponent()({
|
|
20850
21043
|
}
|
20851
21044
|
});
|
20852
21045
|
|
21046
|
+
// Types
|
21047
|
+
|
20853
21048
|
const makeVTableProps = propsFactory({
|
20854
21049
|
fixedHeader: Boolean,
|
20855
21050
|
fixedFooter: Boolean,
|
20856
21051
|
height: [Number, String],
|
20857
21052
|
hover: Boolean,
|
21053
|
+
striped: {
|
21054
|
+
type: String,
|
21055
|
+
default: null,
|
21056
|
+
validator: v => ['even', 'odd'].includes(v)
|
21057
|
+
},
|
20858
21058
|
...makeComponentProps(),
|
20859
21059
|
...makeDensityProps(),
|
20860
21060
|
...makeTagProps(),
|
@@ -20881,7 +21081,9 @@ const VTable = genericComponent()({
|
|
20881
21081
|
'v-table--fixed-footer': props.fixedFooter,
|
20882
21082
|
'v-table--has-top': !!slots.top,
|
20883
21083
|
'v-table--has-bottom': !!slots.bottom,
|
20884
|
-
'v-table--hover': props.hover
|
21084
|
+
'v-table--hover': props.hover,
|
21085
|
+
'v-table--striped-even': props.striped === 'even',
|
21086
|
+
'v-table--striped-odd': props.striped === 'odd'
|
20885
21087
|
}, themeClasses.value, densityClasses.value, props.class]),
|
20886
21088
|
"style": normalizeStyle(props.style)
|
20887
21089
|
}, {
|
@@ -22056,7 +22258,8 @@ const makeCalendarProps = propsFactory({
|
|
22056
22258
|
firstDayOfWeek: {
|
22057
22259
|
type: [Number, String],
|
22058
22260
|
default: undefined
|
22059
|
-
}
|
22261
|
+
},
|
22262
|
+
weekdayFormat: String
|
22060
22263
|
}, 'calendar');
|
22061
22264
|
function useCalendar(props) {
|
22062
22265
|
const adapter = useDate();
|
@@ -22297,7 +22500,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22297
22500
|
"ref": daysRef,
|
22298
22501
|
"key": daysInMonth.value[0].date?.toString(),
|
22299
22502
|
"class": "v-date-picker-month__days"
|
22300
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22503
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
|
22301
22504
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22302
22505
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22303
22506
|
const slotProps = {
|
@@ -23912,6 +24115,9 @@ const VInfiniteScroll = genericComponent()({
|
|
23912
24115
|
startStatus.value = status;
|
23913
24116
|
} else if (side === 'end') {
|
23914
24117
|
endStatus.value = status;
|
24118
|
+
} else if (side === 'both') {
|
24119
|
+
startStatus.value = status;
|
24120
|
+
endStatus.value = status;
|
23915
24121
|
}
|
23916
24122
|
}
|
23917
24123
|
function getStatus(side) {
|
@@ -24023,6 +24229,32 @@ const VInfiniteScroll = genericComponent()({
|
|
24023
24229
|
}, [renderSide('end', endStatus.value)])]
|
24024
24230
|
});
|
24025
24231
|
});
|
24232
|
+
function reset(side) {
|
24233
|
+
const effectiveSide = side ?? props.side;
|
24234
|
+
setStatus(effectiveSide, 'ok');
|
24235
|
+
nextTick(() => {
|
24236
|
+
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24237
|
+
if (props.mode !== 'manual') {
|
24238
|
+
nextTick(() => {
|
24239
|
+
window.requestAnimationFrame(() => {
|
24240
|
+
window.requestAnimationFrame(() => {
|
24241
|
+
window.requestAnimationFrame(() => {
|
24242
|
+
if (effectiveSide === 'both') {
|
24243
|
+
intersecting('start');
|
24244
|
+
intersecting('end');
|
24245
|
+
} else {
|
24246
|
+
intersecting(effectiveSide);
|
24247
|
+
}
|
24248
|
+
});
|
24249
|
+
});
|
24250
|
+
});
|
24251
|
+
});
|
24252
|
+
}
|
24253
|
+
});
|
24254
|
+
}
|
24255
|
+
return {
|
24256
|
+
reset
|
24257
|
+
};
|
24026
24258
|
}
|
24027
24259
|
});
|
24028
24260
|
|
@@ -24941,6 +25173,10 @@ const makeVNumberInputProps = propsFactory({
|
|
24941
25173
|
type: Number,
|
24942
25174
|
default: 0
|
24943
25175
|
},
|
25176
|
+
minFractionDigits: {
|
25177
|
+
type: Number,
|
25178
|
+
default: null
|
25179
|
+
},
|
24944
25180
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24945
25181
|
}, 'VNumberInput');
|
24946
25182
|
const VNumberInput = genericComponent()({
|
@@ -24968,9 +25204,19 @@ const VNumberInput = genericComponent()({
|
|
24968
25204
|
const isFocused = shallowRef(props.focused);
|
24969
25205
|
function correctPrecision(val) {
|
24970
25206
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24971
|
-
|
24972
|
-
|
24973
|
-
|
25207
|
+
if (precision == null) {
|
25208
|
+
return String(val);
|
25209
|
+
}
|
25210
|
+
let fixed = val.toFixed(precision);
|
25211
|
+
if (isFocused.value) {
|
25212
|
+
return Number(fixed).toString(); // trim zeros
|
25213
|
+
}
|
25214
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25215
|
+
const trimLimit = precision - props.minFractionDigits;
|
25216
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25217
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25218
|
+
}
|
25219
|
+
return fixed;
|
24974
25220
|
}
|
24975
25221
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24976
25222
|
const _inputText = shallowRef(null);
|
@@ -25025,6 +25271,7 @@ const VNumberInput = genericComponent()({
|
|
25025
25271
|
}
|
25026
25272
|
};
|
25027
25273
|
watch(() => props.precision, () => formatInputValue());
|
25274
|
+
watch(() => props.minFractionDigits, () => formatInputValue());
|
25028
25275
|
onMounted(() => {
|
25029
25276
|
clampModel();
|
25030
25277
|
});
|
@@ -25139,7 +25386,7 @@ const VNumberInput = genericComponent()({
|
|
25139
25386
|
inputText.value = null;
|
25140
25387
|
return;
|
25141
25388
|
}
|
25142
|
-
inputText.value =
|
25389
|
+
inputText.value = correctPrecision(model.value);
|
25143
25390
|
}
|
25144
25391
|
function trimDecimalZeros() {
|
25145
25392
|
if (controlsDisabled.value) return;
|
@@ -25399,9 +25646,10 @@ const VOtpInput = genericComponent()({
|
|
25399
25646
|
e.preventDefault();
|
25400
25647
|
e.stopPropagation();
|
25401
25648
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25649
|
+
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25402
25650
|
if (isValidNumber(clipboardText)) return;
|
25403
25651
|
model.value = clipboardText.split('');
|
25404
|
-
inputRef.value?.[
|
25652
|
+
inputRef.value?.[finalIndex].focus();
|
25405
25653
|
}
|
25406
25654
|
function reset() {
|
25407
25655
|
model.value = [];
|
@@ -30101,11 +30349,6 @@ const makeVIconBtnProps = propsFactory({
|
|
30101
30349
|
hideOverlay: Boolean,
|
30102
30350
|
icon: [String, Function, Object],
|
30103
30351
|
iconColor: String,
|
30104
|
-
iconSize: [Number, String],
|
30105
|
-
iconSizes: {
|
30106
|
-
type: Array,
|
30107
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30108
|
-
},
|
30109
30352
|
loading: Boolean,
|
30110
30353
|
opacity: [Number, String],
|
30111
30354
|
readonly: Boolean,
|
@@ -30125,6 +30368,7 @@ const makeVIconBtnProps = propsFactory({
|
|
30125
30368
|
...makeBorderProps(),
|
30126
30369
|
...makeComponentProps(),
|
30127
30370
|
...makeElevationProps(),
|
30371
|
+
...makeIconSizeProps(),
|
30128
30372
|
...makeRoundedProps(),
|
30129
30373
|
...makeTagProps({
|
30130
30374
|
tag: 'button'
|
@@ -30179,7 +30423,6 @@ const VIconBtn = genericComponent()({
|
|
30179
30423
|
})()
|
30180
30424
|
}));
|
30181
30425
|
const btnSizeMap = new Map(props.sizes);
|
30182
|
-
const iconSizeMap = new Map(props.iconSizes);
|
30183
30426
|
function onClick() {
|
30184
30427
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30185
30428
|
isActive.value = !isActive.value;
|
@@ -30191,12 +30434,12 @@ const VIconBtn = genericComponent()({
|
|
30191
30434
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30192
30435
|
const btnHeight = props.height ?? btnSize;
|
30193
30436
|
const btnWidth = props.width ?? btnSize;
|
30194
|
-
const
|
30195
|
-
|
30196
|
-
|
30437
|
+
const {
|
30438
|
+
iconSize
|
30439
|
+
} = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
|
30197
30440
|
const iconProps = {
|
30198
30441
|
icon,
|
30199
|
-
size: iconSize,
|
30442
|
+
size: iconSize.value,
|
30200
30443
|
iconColor: props.iconColor,
|
30201
30444
|
opacity: props.opacity
|
30202
30445
|
};
|
@@ -30239,7 +30482,7 @@ const VIconBtn = genericComponent()({
|
|
30239
30482
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30240
30483
|
"indeterminate": "disable-shrink",
|
30241
30484
|
"width": "2",
|
30242
|
-
"size": iconSize
|
30485
|
+
"size": iconSize.value
|
30243
30486
|
}, null)])]
|
30244
30487
|
});
|
30245
30488
|
});
|
@@ -32149,7 +32392,7 @@ function createVuetify$1() {
|
|
32149
32392
|
};
|
32150
32393
|
});
|
32151
32394
|
}
|
32152
|
-
const version$1 = "3.8.
|
32395
|
+
const version$1 = "3.8.9-dev.2025-06-11";
|
32153
32396
|
createVuetify$1.version = version$1;
|
32154
32397
|
|
32155
32398
|
// Vue's inject() can only be used in setup
|
@@ -32447,7 +32690,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
32447
32690
|
|
32448
32691
|
/* eslint-disable local-rules/sort-imports */
|
32449
32692
|
|
32450
|
-
const version = "3.8.
|
32693
|
+
const version = "3.8.9-dev.2025-06-11";
|
32451
32694
|
|
32452
32695
|
/* eslint-disable local-rules/sort-imports */
|
32453
32696
|
|