@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.js
CHANGED
@@ -1,5 +1,5 @@
|
|
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
|
*/
|
@@ -85,6 +85,7 @@
|
|
85
85
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
86
86
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
87
87
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
88
|
+
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
88
89
|
|
89
90
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
90
91
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -607,7 +608,6 @@
|
|
607
608
|
return cleanText;
|
608
609
|
}
|
609
610
|
function camelizeProps(props) {
|
610
|
-
if (!props) return;
|
611
611
|
const out = {};
|
612
612
|
for (const prop in props) {
|
613
613
|
out[vue.camelize(prop)] = props[prop];
|
@@ -2349,6 +2349,7 @@
|
|
2349
2349
|
function genDefaults$2() {
|
2350
2350
|
return {
|
2351
2351
|
defaultTheme: 'light',
|
2352
|
+
prefix: 'v-',
|
2352
2353
|
variations: {
|
2353
2354
|
colors: [],
|
2354
2355
|
lighten: 0,
|
@@ -2430,7 +2431,10 @@
|
|
2430
2431
|
}
|
2431
2432
|
}
|
2432
2433
|
},
|
2433
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2434
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
2435
|
+
scoped: false,
|
2436
|
+
unimportant: false,
|
2437
|
+
utilities: true
|
2434
2438
|
};
|
2435
2439
|
}
|
2436
2440
|
function parseThemeOptions() {
|
@@ -2453,21 +2457,21 @@
|
|
2453
2457
|
function createCssClass(lines, selector, content, scope) {
|
2454
2458
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2455
2459
|
}
|
2456
|
-
function genCssVariables(theme) {
|
2460
|
+
function genCssVariables(theme, prefix) {
|
2457
2461
|
const lightOverlay = theme.dark ? 2 : 1;
|
2458
2462
|
const darkOverlay = theme.dark ? 1 : 2;
|
2459
2463
|
const variables = [];
|
2460
2464
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2461
2465
|
const rgb = parseColor(value);
|
2462
|
-
variables.push(
|
2466
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2463
2467
|
if (!key.startsWith('on-')) {
|
2464
|
-
variables.push(
|
2468
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2465
2469
|
}
|
2466
2470
|
}
|
2467
2471
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2468
2472
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2469
2473
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2470
|
-
variables.push(
|
2474
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
2471
2475
|
}
|
2472
2476
|
return variables;
|
2473
2477
|
}
|
@@ -2511,7 +2515,8 @@
|
|
2511
2515
|
const scopeSelector = `:where(${scope})`;
|
2512
2516
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2513
2517
|
}
|
2514
|
-
function upsertStyles(
|
2518
|
+
function upsertStyles(id, cspNonce, styles) {
|
2519
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2515
2520
|
if (!styleEl) return;
|
2516
2521
|
styleEl.innerHTML = styles;
|
2517
2522
|
}
|
@@ -2531,8 +2536,17 @@
|
|
2531
2536
|
// Composables
|
2532
2537
|
function createTheme(options) {
|
2533
2538
|
const parsedOptions = parseThemeOptions(options);
|
2534
|
-
const
|
2539
|
+
const _name = vue.shallowRef(parsedOptions.defaultTheme);
|
2535
2540
|
const themes = vue.ref(parsedOptions.themes);
|
2541
|
+
const systemName = vue.shallowRef('light');
|
2542
|
+
const name = vue.computed({
|
2543
|
+
get() {
|
2544
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
2545
|
+
},
|
2546
|
+
set(val) {
|
2547
|
+
_name.value = val;
|
2548
|
+
}
|
2549
|
+
});
|
2536
2550
|
const computedThemes = vue.computed(() => {
|
2537
2551
|
const acc = {};
|
2538
2552
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2553,28 +2567,49 @@
|
|
2553
2567
|
const current = vue.toRef(() => computedThemes.value[name.value]);
|
2554
2568
|
const styles = vue.computed(() => {
|
2555
2569
|
const lines = [];
|
2570
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
2571
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2556
2572
|
if (current.value?.dark) {
|
2557
2573
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2558
2574
|
}
|
2559
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2575
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
2560
2576
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2561
|
-
createCssClass(lines,
|
2562
|
-
}
|
2563
|
-
|
2564
|
-
|
2565
|
-
|
2566
|
-
|
2567
|
-
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2577
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
2578
|
+
}
|
2579
|
+
if (parsedOptions.utilities) {
|
2580
|
+
const bgLines = [];
|
2581
|
+
const fgLines = [];
|
2582
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2583
|
+
for (const key of colors) {
|
2584
|
+
if (key.startsWith('on-')) {
|
2585
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2586
|
+
} else {
|
2587
|
+
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);
|
2588
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2589
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2590
|
+
}
|
2573
2591
|
}
|
2592
|
+
lines.push(...bgLines, ...fgLines);
|
2574
2593
|
}
|
2575
|
-
lines.push(...bgLines, ...fgLines);
|
2576
2594
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2577
2595
|
});
|
2596
|
+
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2597
|
+
const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
|
2598
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
2599
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2600
|
+
function updateSystemName() {
|
2601
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
2602
|
+
}
|
2603
|
+
updateSystemName();
|
2604
|
+
media.addEventListener('change', updateSystemName, {
|
2605
|
+
passive: true
|
2606
|
+
});
|
2607
|
+
if (vue.getCurrentScope()) {
|
2608
|
+
vue.onScopeDispose(() => {
|
2609
|
+
media.removeEventListener('change', updateSystemName);
|
2610
|
+
});
|
2611
|
+
}
|
2612
|
+
}
|
2578
2613
|
function install(app) {
|
2579
2614
|
if (parsedOptions.isDisabled) return;
|
2580
2615
|
const head = app._context.provides.usehead;
|
@@ -2612,22 +2647,55 @@
|
|
2612
2647
|
updateStyles();
|
2613
2648
|
}
|
2614
2649
|
function updateStyles() {
|
2615
|
-
upsertStyles(
|
2650
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2616
2651
|
}
|
2617
2652
|
}
|
2618
2653
|
}
|
2619
|
-
|
2654
|
+
function change(themeName) {
|
2655
|
+
if (!themeNames.value.includes(themeName)) {
|
2656
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2657
|
+
return;
|
2658
|
+
}
|
2659
|
+
name.value = themeName;
|
2660
|
+
}
|
2661
|
+
function cycle() {
|
2662
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2663
|
+
const currentIndex = themeArray.indexOf(name.value);
|
2664
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2665
|
+
change(themeArray[nextIndex]);
|
2666
|
+
}
|
2667
|
+
function toggle() {
|
2668
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2669
|
+
cycle(themeArray);
|
2670
|
+
}
|
2671
|
+
const globalName = new Proxy(name, {
|
2672
|
+
get(target, prop) {
|
2673
|
+
return target[prop];
|
2674
|
+
},
|
2675
|
+
set(target, prop, val) {
|
2676
|
+
if (prop === 'value') {
|
2677
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2678
|
+
}
|
2679
|
+
// @ts-expect-error
|
2680
|
+
target[prop] = val;
|
2681
|
+
return true;
|
2682
|
+
}
|
2683
|
+
});
|
2620
2684
|
return {
|
2621
2685
|
install,
|
2686
|
+
change,
|
2687
|
+
cycle,
|
2688
|
+
toggle,
|
2622
2689
|
isDisabled: parsedOptions.isDisabled,
|
2623
2690
|
name,
|
2624
2691
|
themes,
|
2625
2692
|
current,
|
2626
2693
|
computedThemes,
|
2694
|
+
prefix: parsedOptions.prefix,
|
2627
2695
|
themeClasses,
|
2628
2696
|
styles,
|
2629
2697
|
global: {
|
2630
|
-
name,
|
2698
|
+
name: globalName,
|
2631
2699
|
current
|
2632
2700
|
}
|
2633
2701
|
};
|
@@ -2638,7 +2706,7 @@
|
|
2638
2706
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2639
2707
|
const name = vue.toRef(() => props.theme ?? theme.name.value);
|
2640
2708
|
const current = vue.toRef(() => theme.themes.value[name.value]);
|
2641
|
-
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined :
|
2709
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
2642
2710
|
const newTheme = {
|
2643
2711
|
...theme,
|
2644
2712
|
name,
|
@@ -3742,7 +3810,10 @@
|
|
3742
3810
|
default: 'default',
|
3743
3811
|
validator: v => allowedDensities$1.includes(v)
|
3744
3812
|
},
|
3745
|
-
extended:
|
3813
|
+
extended: {
|
3814
|
+
type: Boolean,
|
3815
|
+
default: null
|
3816
|
+
},
|
3746
3817
|
extensionHeight: {
|
3747
3818
|
type: [Number, String],
|
3748
3819
|
default: 48
|
@@ -3790,7 +3861,7 @@
|
|
3790
3861
|
const {
|
3791
3862
|
rtlClasses
|
3792
3863
|
} = useRtl();
|
3793
|
-
const isExtended = vue.shallowRef(
|
3864
|
+
const isExtended = vue.shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
3794
3865
|
const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
|
3795
3866
|
const extensionHeight = vue.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);
|
3796
3867
|
provideDefaults({
|
@@ -3802,7 +3873,7 @@
|
|
3802
3873
|
const hasTitle = !!(props.title || slots.title);
|
3803
3874
|
const hasImage = !!(slots.image || props.image);
|
3804
3875
|
const extension = slots.extension?.();
|
3805
|
-
isExtended.value =
|
3876
|
+
isExtended.value = props.extended === null ? !!extension : props.extended;
|
3806
3877
|
return vue.createVNode(props.tag, {
|
3807
3878
|
"class": vue.normalizeClass(['v-toolbar', {
|
3808
3879
|
'v-toolbar--absolute': props.absolute,
|
@@ -4185,9 +4256,15 @@
|
|
4185
4256
|
};
|
4186
4257
|
}
|
4187
4258
|
|
4259
|
+
// Types
|
4260
|
+
|
4188
4261
|
const makeVBtnGroupProps = propsFactory({
|
4189
4262
|
baseColor: String,
|
4190
4263
|
divided: Boolean,
|
4264
|
+
direction: {
|
4265
|
+
type: String,
|
4266
|
+
default: 'horizontal'
|
4267
|
+
},
|
4191
4268
|
...makeBorderProps(),
|
4192
4269
|
...makeComponentProps(),
|
4193
4270
|
...makeDensityProps(),
|
@@ -4221,7 +4298,7 @@
|
|
4221
4298
|
} = useRounded(props);
|
4222
4299
|
provideDefaults({
|
4223
4300
|
VBtn: {
|
4224
|
-
height: 'auto',
|
4301
|
+
height: vue.toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
4225
4302
|
baseColor: vue.toRef(() => props.baseColor),
|
4226
4303
|
color: vue.toRef(() => props.color),
|
4227
4304
|
density: vue.toRef(() => props.density),
|
@@ -4231,7 +4308,7 @@
|
|
4231
4308
|
});
|
4232
4309
|
useRender(() => {
|
4233
4310
|
return vue.createVNode(props.tag, {
|
4234
|
-
"class": vue.normalizeClass(['v-btn-group', {
|
4311
|
+
"class": vue.normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
|
4235
4312
|
'v-btn-group--divided': props.divided
|
4236
4313
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4237
4314
|
"style": vue.normalizeStyle(props.style)
|
@@ -5563,8 +5640,8 @@
|
|
5563
5640
|
window.clearTimeout(element._ripple.showTimer);
|
5564
5641
|
}
|
5565
5642
|
let keyboardRipple = false;
|
5566
|
-
function keyboardRippleShow(e) {
|
5567
|
-
if (!keyboardRipple && (e.keyCode
|
5643
|
+
function keyboardRippleShow(e, keys) {
|
5644
|
+
if (!keyboardRipple && keys.includes(e.keyCode)) {
|
5568
5645
|
keyboardRipple = true;
|
5569
5646
|
rippleShow(e);
|
5570
5647
|
}
|
@@ -5592,9 +5669,12 @@
|
|
5592
5669
|
el._ripple.enabled = enabled;
|
5593
5670
|
el._ripple.centered = modifiers.center;
|
5594
5671
|
el._ripple.circle = modifiers.circle;
|
5595
|
-
|
5596
|
-
|
5672
|
+
const bindingValue = isObject(value) ? value : {};
|
5673
|
+
if (bindingValue.class) {
|
5674
|
+
el._ripple.class = bindingValue.class;
|
5597
5675
|
}
|
5676
|
+
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5677
|
+
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5598
5678
|
if (enabled && !wasEnabled) {
|
5599
5679
|
if (modifiers.stop) {
|
5600
5680
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5616,7 +5696,7 @@
|
|
5616
5696
|
el.addEventListener('mousedown', rippleShow);
|
5617
5697
|
el.addEventListener('mouseup', rippleHide);
|
5618
5698
|
el.addEventListener('mouseleave', rippleHide);
|
5619
|
-
el.addEventListener('keydown', keyboardRippleShow);
|
5699
|
+
el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
|
5620
5700
|
el.addEventListener('keyup', keyboardRippleHide);
|
5621
5701
|
el.addEventListener('blur', focusRippleHide);
|
5622
5702
|
|
@@ -5636,7 +5716,9 @@
|
|
5636
5716
|
el.removeEventListener('touchcancel', rippleHide);
|
5637
5717
|
el.removeEventListener('mouseup', rippleHide);
|
5638
5718
|
el.removeEventListener('mouseleave', rippleHide);
|
5639
|
-
el.
|
5719
|
+
if (el._ripple?.keyDownHandler) {
|
5720
|
+
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5721
|
+
}
|
5640
5722
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5641
5723
|
el.removeEventListener('dragstart', rippleHide);
|
5642
5724
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5645,8 +5727,8 @@
|
|
5645
5727
|
updateRipple(el, binding, false);
|
5646
5728
|
}
|
5647
5729
|
function unmounted$4(el) {
|
5648
|
-
delete el._ripple;
|
5649
5730
|
removeListeners(el);
|
5731
|
+
delete el._ripple;
|
5650
5732
|
}
|
5651
5733
|
function updated$1(el, binding) {
|
5652
5734
|
if (binding.value === binding.oldValue) {
|
@@ -5919,6 +6001,31 @@
|
|
5919
6001
|
// Utilities
|
5920
6002
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5921
6003
|
|
6004
|
+
// Utilities
|
6005
|
+
|
6006
|
+
// Types
|
6007
|
+
|
6008
|
+
// Types
|
6009
|
+
|
6010
|
+
// Composables
|
6011
|
+
const makeIconSizeProps = propsFactory({
|
6012
|
+
iconSize: [Number, String],
|
6013
|
+
iconSizes: {
|
6014
|
+
type: Array,
|
6015
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6016
|
+
}
|
6017
|
+
}, 'iconSize');
|
6018
|
+
function useIconSizes(props, fallback) {
|
6019
|
+
const iconSize = vue.computed(() => {
|
6020
|
+
const iconSizeMap = new Map(props.iconSizes);
|
6021
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6022
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6023
|
+
});
|
6024
|
+
return {
|
6025
|
+
iconSize
|
6026
|
+
};
|
6027
|
+
}
|
6028
|
+
|
5922
6029
|
// Types
|
5923
6030
|
|
5924
6031
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -5958,6 +6065,7 @@
|
|
5958
6065
|
...makeDensityProps(),
|
5959
6066
|
...makeDimensionProps(),
|
5960
6067
|
...makeElevationProps(),
|
6068
|
+
...makeIconSizeProps(),
|
5961
6069
|
...makeLocationProps(),
|
5962
6070
|
...makePositionProps(),
|
5963
6071
|
...makeRoundedProps(),
|
@@ -5985,6 +6093,9 @@
|
|
5985
6093
|
if (!props.type) return props.icon;
|
5986
6094
|
return props.icon ?? `$${props.type}`;
|
5987
6095
|
});
|
6096
|
+
const {
|
6097
|
+
iconSize
|
6098
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
5988
6099
|
const {
|
5989
6100
|
themeClasses
|
5990
6101
|
} = provideTheme(props);
|
@@ -6032,6 +6143,11 @@
|
|
6032
6143
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6033
6144
|
const hasTitle = !!(slots.title || props.title);
|
6034
6145
|
const hasClose = !!(slots.close || props.closable);
|
6146
|
+
const iconProps = {
|
6147
|
+
density: props.density,
|
6148
|
+
icon: icon.value,
|
6149
|
+
size: iconSize.value
|
6150
|
+
};
|
6035
6151
|
return isActive.value && vue.createVNode(props.tag, {
|
6036
6152
|
"class": vue.normalizeClass(['v-alert', props.border && {
|
6037
6153
|
'v-alert--border': !!props.border,
|
@@ -6049,19 +6165,14 @@
|
|
6049
6165
|
}, null), hasPrepend && vue.createElementVNode("div", {
|
6050
6166
|
"key": "prepend",
|
6051
6167
|
"class": "v-alert__prepend"
|
6052
|
-
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
6053
|
-
"key": "prepend-icon"
|
6054
|
-
|
6055
|
-
"icon": icon.value,
|
6056
|
-
"size": props.prominent ? 44 : 28
|
6057
|
-
}, null) : vue.createVNode(VDefaultsProvider, {
|
6168
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, vue.mergeProps({
|
6169
|
+
"key": "prepend-icon"
|
6170
|
+
}, iconProps), null) : vue.createVNode(VDefaultsProvider, {
|
6058
6171
|
"key": "prepend-defaults",
|
6059
6172
|
"disabled": !icon.value,
|
6060
6173
|
"defaults": {
|
6061
6174
|
VIcon: {
|
6062
|
-
|
6063
|
-
icon: icon.value,
|
6064
|
-
size: props.prominent ? 44 : 28
|
6175
|
+
...iconProps
|
6065
6176
|
}
|
6066
6177
|
}
|
6067
6178
|
}, slots.prepend)]), vue.createElementVNode("div", {
|
@@ -7586,6 +7697,7 @@
|
|
7586
7697
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7587
7698
|
const makeVSlideGroupProps = propsFactory({
|
7588
7699
|
centerActive: Boolean,
|
7700
|
+
contentClass: null,
|
7589
7701
|
direction: {
|
7590
7702
|
type: String,
|
7591
7703
|
default: 'horizontal'
|
@@ -7898,7 +8010,7 @@
|
|
7898
8010
|
})]), vue.createElementVNode("div", {
|
7899
8011
|
"key": "container",
|
7900
8012
|
"ref": containerRef,
|
7901
|
-
"class":
|
8013
|
+
"class": vue.normalizeClass(['v-slide-group__container', props.contentClass]),
|
7902
8014
|
"onScroll": onScroll
|
7903
8015
|
}, [vue.createElementVNode("div", {
|
7904
8016
|
"ref": contentRef,
|
@@ -8261,16 +8373,85 @@
|
|
8261
8373
|
}
|
8262
8374
|
});
|
8263
8375
|
|
8376
|
+
const makeVDividerProps = propsFactory({
|
8377
|
+
color: String,
|
8378
|
+
inset: Boolean,
|
8379
|
+
length: [Number, String],
|
8380
|
+
opacity: [Number, String],
|
8381
|
+
thickness: [Number, String],
|
8382
|
+
vertical: Boolean,
|
8383
|
+
...makeComponentProps(),
|
8384
|
+
...makeThemeProps()
|
8385
|
+
}, 'VDivider');
|
8386
|
+
const VDivider = genericComponent()({
|
8387
|
+
name: 'VDivider',
|
8388
|
+
props: makeVDividerProps(),
|
8389
|
+
setup(props, _ref) {
|
8390
|
+
let {
|
8391
|
+
attrs,
|
8392
|
+
slots
|
8393
|
+
} = _ref;
|
8394
|
+
const {
|
8395
|
+
themeClasses
|
8396
|
+
} = provideTheme(props);
|
8397
|
+
const {
|
8398
|
+
textColorClasses,
|
8399
|
+
textColorStyles
|
8400
|
+
} = useTextColor(() => props.color);
|
8401
|
+
const dividerStyles = vue.computed(() => {
|
8402
|
+
const styles = {};
|
8403
|
+
if (props.length) {
|
8404
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8405
|
+
}
|
8406
|
+
if (props.thickness) {
|
8407
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8408
|
+
}
|
8409
|
+
return styles;
|
8410
|
+
});
|
8411
|
+
useRender(() => {
|
8412
|
+
const divider = vue.createElementVNode("hr", {
|
8413
|
+
"class": vue.normalizeClass([{
|
8414
|
+
'v-divider': true,
|
8415
|
+
'v-divider--inset': props.inset,
|
8416
|
+
'v-divider--vertical': props.vertical
|
8417
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
8418
|
+
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8419
|
+
'--v-border-opacity': props.opacity
|
8420
|
+
}, props.style]),
|
8421
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8422
|
+
"role": `${attrs.role || 'separator'}`
|
8423
|
+
}, null);
|
8424
|
+
if (!slots.default) return divider;
|
8425
|
+
return vue.createElementVNode("div", {
|
8426
|
+
"class": vue.normalizeClass(['v-divider__wrapper', {
|
8427
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8428
|
+
'v-divider__wrapper--inset': props.inset
|
8429
|
+
}])
|
8430
|
+
}, [divider, vue.createElementVNode("div", {
|
8431
|
+
"class": "v-divider__content"
|
8432
|
+
}, [slots.default()]), divider]);
|
8433
|
+
});
|
8434
|
+
return {};
|
8435
|
+
}
|
8436
|
+
});
|
8437
|
+
|
8264
8438
|
// Utilities
|
8265
8439
|
|
8266
8440
|
// List
|
8267
8441
|
const ListKey = Symbol.for('vuetify:list');
|
8268
8442
|
function createList() {
|
8443
|
+
let {
|
8444
|
+
filterable
|
8445
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8446
|
+
filterable: false
|
8447
|
+
};
|
8269
8448
|
const parent = vue.inject(ListKey, {
|
8449
|
+
filterable: false,
|
8270
8450
|
hasPrepend: vue.shallowRef(false),
|
8271
8451
|
updateHasPrepend: () => null
|
8272
8452
|
});
|
8273
8453
|
const data = {
|
8454
|
+
filterable: parent.filterable || filterable,
|
8274
8455
|
hasPrepend: vue.shallowRef(false),
|
8275
8456
|
updateHasPrepend: value => {
|
8276
8457
|
if (value) data.hasPrepend.value = value;
|
@@ -9222,6 +9403,9 @@
|
|
9222
9403
|
roundedClasses
|
9223
9404
|
} = useRounded(roundedProps);
|
9224
9405
|
const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9406
|
+
const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9407
|
+
keys: [keyCodes.enter]
|
9408
|
+
} : props.ripple);
|
9225
9409
|
const slotProps = vue.computed(() => ({
|
9226
9410
|
isActive: isActive.value,
|
9227
9411
|
select,
|
@@ -9246,8 +9430,9 @@
|
|
9246
9430
|
function onKeyDown(e) {
|
9247
9431
|
const target = e.target;
|
9248
9432
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9249
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
9433
|
+
if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
|
9250
9434
|
e.preventDefault();
|
9435
|
+
e.stopPropagation();
|
9251
9436
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9252
9437
|
}
|
9253
9438
|
}
|
@@ -9357,7 +9542,7 @@
|
|
9357
9542
|
}), vue.createElementVNode("div", {
|
9358
9543
|
"class": "v-list-item__spacer"
|
9359
9544
|
}, null)])]
|
9360
|
-
}), [[Ripple, isClickable.value &&
|
9545
|
+
}), [[Ripple, isClickable.value && rippleOptions.value]]);
|
9361
9546
|
});
|
9362
9547
|
return {
|
9363
9548
|
activate,
|
@@ -9412,68 +9597,6 @@
|
|
9412
9597
|
}
|
9413
9598
|
});
|
9414
9599
|
|
9415
|
-
const makeVDividerProps = propsFactory({
|
9416
|
-
color: String,
|
9417
|
-
inset: Boolean,
|
9418
|
-
length: [Number, String],
|
9419
|
-
opacity: [Number, String],
|
9420
|
-
thickness: [Number, String],
|
9421
|
-
vertical: Boolean,
|
9422
|
-
...makeComponentProps(),
|
9423
|
-
...makeThemeProps()
|
9424
|
-
}, 'VDivider');
|
9425
|
-
const VDivider = genericComponent()({
|
9426
|
-
name: 'VDivider',
|
9427
|
-
props: makeVDividerProps(),
|
9428
|
-
setup(props, _ref) {
|
9429
|
-
let {
|
9430
|
-
attrs,
|
9431
|
-
slots
|
9432
|
-
} = _ref;
|
9433
|
-
const {
|
9434
|
-
themeClasses
|
9435
|
-
} = provideTheme(props);
|
9436
|
-
const {
|
9437
|
-
textColorClasses,
|
9438
|
-
textColorStyles
|
9439
|
-
} = useTextColor(() => props.color);
|
9440
|
-
const dividerStyles = vue.computed(() => {
|
9441
|
-
const styles = {};
|
9442
|
-
if (props.length) {
|
9443
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9444
|
-
}
|
9445
|
-
if (props.thickness) {
|
9446
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9447
|
-
}
|
9448
|
-
return styles;
|
9449
|
-
});
|
9450
|
-
useRender(() => {
|
9451
|
-
const divider = vue.createElementVNode("hr", {
|
9452
|
-
"class": vue.normalizeClass([{
|
9453
|
-
'v-divider': true,
|
9454
|
-
'v-divider--inset': props.inset,
|
9455
|
-
'v-divider--vertical': props.vertical
|
9456
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
9457
|
-
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9458
|
-
'--v-border-opacity': props.opacity
|
9459
|
-
}, props.style]),
|
9460
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9461
|
-
"role": `${attrs.role || 'separator'}`
|
9462
|
-
}, null);
|
9463
|
-
if (!slots.default) return divider;
|
9464
|
-
return vue.createElementVNode("div", {
|
9465
|
-
"class": vue.normalizeClass(['v-divider__wrapper', {
|
9466
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9467
|
-
'v-divider__wrapper--inset': props.inset
|
9468
|
-
}])
|
9469
|
-
}, [divider, vue.createElementVNode("div", {
|
9470
|
-
"class": "v-divider__content"
|
9471
|
-
}, [slots.default()]), divider]);
|
9472
|
-
});
|
9473
|
-
return {};
|
9474
|
-
}
|
9475
|
-
});
|
9476
|
-
|
9477
9600
|
// Types
|
9478
9601
|
|
9479
9602
|
const makeVListChildrenProps = propsFactory({
|
@@ -9590,7 +9713,7 @@
|
|
9590
9713
|
const _props = {
|
9591
9714
|
title,
|
9592
9715
|
value,
|
9593
|
-
...
|
9716
|
+
...itemProps
|
9594
9717
|
};
|
9595
9718
|
return {
|
9596
9719
|
title: String(_props.title ?? ''),
|
@@ -9742,6 +9865,7 @@
|
|
9742
9865
|
activeClass: String,
|
9743
9866
|
bgColor: String,
|
9744
9867
|
disabled: Boolean,
|
9868
|
+
filterable: Boolean,
|
9745
9869
|
expandIcon: IconValue,
|
9746
9870
|
collapseIcon: IconValue,
|
9747
9871
|
lines: {
|
@@ -9825,7 +9949,9 @@
|
|
9825
9949
|
const activeColor = vue.toRef(() => props.activeColor);
|
9826
9950
|
const baseColor = vue.toRef(() => props.baseColor);
|
9827
9951
|
const color = vue.toRef(() => props.color);
|
9828
|
-
createList(
|
9952
|
+
createList({
|
9953
|
+
filterable: props.filterable
|
9954
|
+
});
|
9829
9955
|
provideDefaults({
|
9830
9956
|
VListGroup: {
|
9831
9957
|
activeColor,
|
@@ -12402,7 +12528,12 @@
|
|
12402
12528
|
}
|
12403
12529
|
function calculateOffset(index) {
|
12404
12530
|
index = clamp(index, 0, items.value.length - 1);
|
12405
|
-
|
12531
|
+
const whole = Math.floor(index);
|
12532
|
+
const fraction = index % 1;
|
12533
|
+
const next = whole + 1;
|
12534
|
+
const wholeOffset = offsets[whole] || 0;
|
12535
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12536
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12406
12537
|
}
|
12407
12538
|
function calculateIndex(scrollTop) {
|
12408
12539
|
return binaryClosest(offsets, scrollTop);
|
@@ -12756,6 +12887,7 @@
|
|
12756
12887
|
},
|
12757
12888
|
openOnClear: Boolean,
|
12758
12889
|
itemColor: String,
|
12890
|
+
noAutoScroll: Boolean,
|
12759
12891
|
...makeItemsProps({
|
12760
12892
|
itemChildren: false
|
12761
12893
|
})
|
@@ -12970,7 +13102,7 @@
|
|
12970
13102
|
vue.watch(menu, () => {
|
12971
13103
|
if (!props.hideSelected && menu.value && model.value.length) {
|
12972
13104
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
12973
|
-
IN_BROWSER && window.requestAnimationFrame(() => {
|
13105
|
+
IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
|
12974
13106
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
12975
13107
|
});
|
12976
13108
|
}
|
@@ -13057,11 +13189,28 @@
|
|
13057
13189
|
index,
|
13058
13190
|
itemRef
|
13059
13191
|
} = _ref2;
|
13192
|
+
const camelizedProps = camelizeProps(item.props);
|
13060
13193
|
const itemProps = vue.mergeProps(item.props, {
|
13061
13194
|
ref: itemRef,
|
13062
13195
|
key: item.value,
|
13063
13196
|
onClick: () => select(item, null)
|
13064
13197
|
});
|
13198
|
+
if (item.raw.type === 'divider') {
|
13199
|
+
return slots.divider?.({
|
13200
|
+
props: item.raw,
|
13201
|
+
index
|
13202
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13203
|
+
"key": `divider-${index}`
|
13204
|
+
}), null);
|
13205
|
+
}
|
13206
|
+
if (item.raw.type === 'subheader') {
|
13207
|
+
return slots.subheader?.({
|
13208
|
+
props: item.raw,
|
13209
|
+
index
|
13210
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13211
|
+
"key": `subheader-${index}`
|
13212
|
+
}), null);
|
13213
|
+
}
|
13065
13214
|
return slots.item?.({
|
13066
13215
|
item,
|
13067
13216
|
index,
|
@@ -13078,10 +13227,10 @@
|
|
13078
13227
|
"modelValue": isSelected,
|
13079
13228
|
"ripple": false,
|
13080
13229
|
"tabindex": "-1"
|
13081
|
-
}, null) : undefined,
|
13082
|
-
"image":
|
13083
|
-
}, null),
|
13084
|
-
"icon":
|
13230
|
+
}, null) : undefined, camelizedProps.prependAvatar && vue.createVNode(VAvatar, {
|
13231
|
+
"image": camelizedProps.prependAvatar
|
13232
|
+
}, null), camelizedProps.prependIcon && vue.createVNode(VIcon, {
|
13233
|
+
"icon": camelizedProps.prependIcon
|
13085
13234
|
}, null)]);
|
13086
13235
|
}
|
13087
13236
|
});
|
@@ -13222,6 +13371,9 @@
|
|
13222
13371
|
let match = -1;
|
13223
13372
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13224
13373
|
if (typeof item === 'object') {
|
13374
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13375
|
+
continue;
|
13376
|
+
}
|
13225
13377
|
const filterKeys = keys || Object.keys(transformed);
|
13226
13378
|
for (const key of filterKeys) {
|
13227
13379
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13424,7 +13576,7 @@
|
|
13424
13576
|
menu.value = !menu.value;
|
13425
13577
|
}
|
13426
13578
|
function onListKeydown(e) {
|
13427
|
-
if (e.key
|
13579
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
13428
13580
|
vTextFieldRef.value?.focus();
|
13429
13581
|
}
|
13430
13582
|
}
|
@@ -13629,6 +13781,7 @@
|
|
13629
13781
|
}, props.menuProps), {
|
13630
13782
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
13631
13783
|
"ref": listRef,
|
13784
|
+
"filterable": true,
|
13632
13785
|
"selected": selectedValues.value,
|
13633
13786
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13634
13787
|
"onMousedown": e => e.preventDefault(),
|
@@ -13660,6 +13813,22 @@
|
|
13660
13813
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13661
13814
|
onClick: () => select(item, null)
|
13662
13815
|
});
|
13816
|
+
if (item.raw.type === 'divider') {
|
13817
|
+
return slots.divider?.({
|
13818
|
+
props: item.raw,
|
13819
|
+
index
|
13820
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13821
|
+
"key": `divider-${index}`
|
13822
|
+
}), null);
|
13823
|
+
}
|
13824
|
+
if (item.raw.type === 'subheader') {
|
13825
|
+
return slots.subheader?.({
|
13826
|
+
props: item.raw,
|
13827
|
+
index
|
13828
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13829
|
+
"key": `subheader-${index}`
|
13830
|
+
}), null);
|
13831
|
+
}
|
13663
13832
|
return slots.item?.({
|
13664
13833
|
item,
|
13665
13834
|
index,
|
@@ -13804,7 +13973,8 @@
|
|
13804
13973
|
...makeThemeProps(),
|
13805
13974
|
...makeTransitionProps({
|
13806
13975
|
transition: 'scale-rotate-transition'
|
13807
|
-
})
|
13976
|
+
}),
|
13977
|
+
...makeDimensionProps()
|
13808
13978
|
}, 'VBadge');
|
13809
13979
|
const VBadge = genericComponent()({
|
13810
13980
|
name: 'VBadge',
|
@@ -13834,6 +14004,9 @@
|
|
13834
14004
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
13835
14005
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
13836
14006
|
});
|
14007
|
+
const {
|
14008
|
+
dimensionStyles
|
14009
|
+
} = useDimension(props);
|
13837
14010
|
useRender(() => {
|
13838
14011
|
const value = Number(props.content);
|
13839
14012
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -13855,7 +14028,7 @@
|
|
13855
14028
|
}, {
|
13856
14029
|
default: () => [vue.withDirectives(vue.createElementVNode("span", vue.mergeProps({
|
13857
14030
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
13858
|
-
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14031
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, dimensionStyles.value, props.inline ? {} : locationStyles.value],
|
13859
14032
|
"aria-atomic": "true",
|
13860
14033
|
"aria-label": t(props.label, value),
|
13861
14034
|
"aria-live": "polite",
|
@@ -17264,13 +17437,13 @@
|
|
17264
17437
|
return null;
|
17265
17438
|
}
|
17266
17439
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17267
|
-
function getWeekdays(locale, firstDayOfWeek) {
|
17440
|
+
function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
|
17268
17441
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17269
17442
|
return createRange(7).map(i => {
|
17270
17443
|
const weekday = new Date(sundayJanuarySecond2000);
|
17271
17444
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17272
17445
|
return new Intl.DateTimeFormat(locale, {
|
17273
|
-
weekday: 'narrow'
|
17446
|
+
weekday: weekdayFormat ?? 'narrow'
|
17274
17447
|
}).format(weekday);
|
17275
17448
|
});
|
17276
17449
|
}
|
@@ -17529,7 +17702,7 @@
|
|
17529
17702
|
const yearStart = new Date(year, 0, 1);
|
17530
17703
|
const size = firstWeekSize(year);
|
17531
17704
|
const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
|
17532
|
-
return 1 + getDiff(date, d1w1, 'weeks');
|
17705
|
+
return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
|
17533
17706
|
}
|
17534
17707
|
function getDate(date) {
|
17535
17708
|
return date.getDate();
|
@@ -17734,9 +17907,9 @@
|
|
17734
17907
|
getDiff(date, comparing, unit) {
|
17735
17908
|
return getDiff(date, comparing, unit);
|
17736
17909
|
}
|
17737
|
-
getWeekdays(firstDayOfWeek) {
|
17910
|
+
getWeekdays(firstDayOfWeek, weekdayFormat) {
|
17738
17911
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17739
|
-
return getWeekdays(this.locale, firstDay);
|
17912
|
+
return getWeekdays(this.locale, firstDay, weekdayFormat);
|
17740
17913
|
}
|
17741
17914
|
getYear(date) {
|
17742
17915
|
return getYear(date);
|
@@ -17833,7 +18006,7 @@
|
|
17833
18006
|
};
|
17834
18007
|
}
|
17835
18008
|
function createDateRange(adapter, start, stop) {
|
17836
|
-
const diff = adapter.getDiff(stop ?? start, start, 'days');
|
18009
|
+
const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
|
17837
18010
|
const datesInRange = [start];
|
17838
18011
|
for (let i = 1; i < diff; i++) {
|
17839
18012
|
const nextDate = adapter.addDays(start, i);
|
@@ -18091,6 +18264,7 @@
|
|
18091
18264
|
_search.value = val ?? '';
|
18092
18265
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18093
18266
|
model.value = [transformItem$3(props, val)];
|
18267
|
+
vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18094
18268
|
}
|
18095
18269
|
if (val && props.multiple && props.delimiters?.length) {
|
18096
18270
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18171,7 +18345,7 @@
|
|
18171
18345
|
menu.value = !menu.value;
|
18172
18346
|
}
|
18173
18347
|
function onListKeydown(e) {
|
18174
|
-
if (e.key
|
18348
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
18175
18349
|
vTextFieldRef.value?.focus();
|
18176
18350
|
}
|
18177
18351
|
}
|
@@ -18376,6 +18550,7 @@
|
|
18376
18550
|
}, props.menuProps), {
|
18377
18551
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
18378
18552
|
"ref": listRef,
|
18553
|
+
"filterable": true,
|
18379
18554
|
"selected": selectedValues.value,
|
18380
18555
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18381
18556
|
"onMousedown": e => e.preventDefault(),
|
@@ -18407,6 +18582,22 @@
|
|
18407
18582
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18408
18583
|
onClick: () => select(item, null)
|
18409
18584
|
});
|
18585
|
+
if (item.raw.type === 'divider') {
|
18586
|
+
return slots.divider?.({
|
18587
|
+
props: item.raw,
|
18588
|
+
index
|
18589
|
+
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
18590
|
+
"key": `divider-${index}`
|
18591
|
+
}), null);
|
18592
|
+
}
|
18593
|
+
if (item.raw.type === 'subheader') {
|
18594
|
+
return slots.subheader?.({
|
18595
|
+
props: item.raw,
|
18596
|
+
index
|
18597
|
+
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
18598
|
+
"key": `subheader-${index}`
|
18599
|
+
}), null);
|
18600
|
+
}
|
18410
18601
|
return slots.item?.({
|
18411
18602
|
item,
|
18412
18603
|
index,
|
@@ -20289,6 +20480,7 @@
|
|
20289
20480
|
color: String,
|
20290
20481
|
disableSort: Boolean,
|
20291
20482
|
fixedHeader: Boolean,
|
20483
|
+
lastFixed: Boolean,
|
20292
20484
|
multiSort: Boolean,
|
20293
20485
|
sortAscIcon: {
|
20294
20486
|
type: IconValue,
|
@@ -20335,10 +20527,11 @@
|
|
20335
20527
|
loaderClasses
|
20336
20528
|
} = useLoader(props);
|
20337
20529
|
function getFixedStyles(column, y) {
|
20338
|
-
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20530
|
+
if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
|
20339
20531
|
return {
|
20340
20532
|
position: 'sticky',
|
20341
|
-
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20533
|
+
left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
|
20534
|
+
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20342
20535
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20343
20536
|
};
|
20344
20537
|
}
|
@@ -20854,11 +21047,18 @@
|
|
20854
21047
|
}
|
20855
21048
|
});
|
20856
21049
|
|
21050
|
+
// Types
|
21051
|
+
|
20857
21052
|
const makeVTableProps = propsFactory({
|
20858
21053
|
fixedHeader: Boolean,
|
20859
21054
|
fixedFooter: Boolean,
|
20860
21055
|
height: [Number, String],
|
20861
21056
|
hover: Boolean,
|
21057
|
+
striped: {
|
21058
|
+
type: String,
|
21059
|
+
default: null,
|
21060
|
+
validator: v => ['even', 'odd'].includes(v)
|
21061
|
+
},
|
20862
21062
|
...makeComponentProps(),
|
20863
21063
|
...makeDensityProps(),
|
20864
21064
|
...makeTagProps(),
|
@@ -20885,7 +21085,9 @@
|
|
20885
21085
|
'v-table--fixed-footer': props.fixedFooter,
|
20886
21086
|
'v-table--has-top': !!slots.top,
|
20887
21087
|
'v-table--has-bottom': !!slots.bottom,
|
20888
|
-
'v-table--hover': props.hover
|
21088
|
+
'v-table--hover': props.hover,
|
21089
|
+
'v-table--striped-even': props.striped === 'even',
|
21090
|
+
'v-table--striped-odd': props.striped === 'odd'
|
20889
21091
|
}, themeClasses.value, densityClasses.value, props.class]),
|
20890
21092
|
"style": vue.normalizeStyle(props.style)
|
20891
21093
|
}, {
|
@@ -22060,7 +22262,8 @@
|
|
22060
22262
|
firstDayOfWeek: {
|
22061
22263
|
type: [Number, String],
|
22062
22264
|
default: undefined
|
22063
|
-
}
|
22265
|
+
},
|
22266
|
+
weekdayFormat: String
|
22064
22267
|
}, 'calendar');
|
22065
22268
|
function useCalendar(props) {
|
22066
22269
|
const adapter = useDate();
|
@@ -22301,7 +22504,7 @@
|
|
22301
22504
|
"ref": daysRef,
|
22302
22505
|
"key": daysInMonth.value[0].date?.toString(),
|
22303
22506
|
"class": "v-date-picker-month__days"
|
22304
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
|
22507
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => vue.createElementVNode("div", {
|
22305
22508
|
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22306
22509
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22307
22510
|
const slotProps = {
|
@@ -23916,6 +24119,9 @@
|
|
23916
24119
|
startStatus.value = status;
|
23917
24120
|
} else if (side === 'end') {
|
23918
24121
|
endStatus.value = status;
|
24122
|
+
} else if (side === 'both') {
|
24123
|
+
startStatus.value = status;
|
24124
|
+
endStatus.value = status;
|
23919
24125
|
}
|
23920
24126
|
}
|
23921
24127
|
function getStatus(side) {
|
@@ -24027,6 +24233,32 @@
|
|
24027
24233
|
}, [renderSide('end', endStatus.value)])]
|
24028
24234
|
});
|
24029
24235
|
});
|
24236
|
+
function reset(side) {
|
24237
|
+
const effectiveSide = side ?? props.side;
|
24238
|
+
setStatus(effectiveSide, 'ok');
|
24239
|
+
vue.nextTick(() => {
|
24240
|
+
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24241
|
+
if (props.mode !== 'manual') {
|
24242
|
+
vue.nextTick(() => {
|
24243
|
+
window.requestAnimationFrame(() => {
|
24244
|
+
window.requestAnimationFrame(() => {
|
24245
|
+
window.requestAnimationFrame(() => {
|
24246
|
+
if (effectiveSide === 'both') {
|
24247
|
+
intersecting('start');
|
24248
|
+
intersecting('end');
|
24249
|
+
} else {
|
24250
|
+
intersecting(effectiveSide);
|
24251
|
+
}
|
24252
|
+
});
|
24253
|
+
});
|
24254
|
+
});
|
24255
|
+
});
|
24256
|
+
}
|
24257
|
+
});
|
24258
|
+
}
|
24259
|
+
return {
|
24260
|
+
reset
|
24261
|
+
};
|
24030
24262
|
}
|
24031
24263
|
});
|
24032
24264
|
|
@@ -24945,6 +25177,10 @@
|
|
24945
25177
|
type: Number,
|
24946
25178
|
default: 0
|
24947
25179
|
},
|
25180
|
+
minFractionDigits: {
|
25181
|
+
type: Number,
|
25182
|
+
default: null
|
25183
|
+
},
|
24948
25184
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24949
25185
|
}, 'VNumberInput');
|
24950
25186
|
const VNumberInput = genericComponent()({
|
@@ -24972,9 +25208,19 @@
|
|
24972
25208
|
const isFocused = vue.shallowRef(props.focused);
|
24973
25209
|
function correctPrecision(val) {
|
24974
25210
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24975
|
-
|
24976
|
-
|
24977
|
-
|
25211
|
+
if (precision == null) {
|
25212
|
+
return String(val);
|
25213
|
+
}
|
25214
|
+
let fixed = val.toFixed(precision);
|
25215
|
+
if (isFocused.value) {
|
25216
|
+
return Number(fixed).toString(); // trim zeros
|
25217
|
+
}
|
25218
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25219
|
+
const trimLimit = precision - props.minFractionDigits;
|
25220
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25221
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25222
|
+
}
|
25223
|
+
return fixed;
|
24978
25224
|
}
|
24979
25225
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24980
25226
|
const _inputText = vue.shallowRef(null);
|
@@ -25029,6 +25275,7 @@
|
|
25029
25275
|
}
|
25030
25276
|
};
|
25031
25277
|
vue.watch(() => props.precision, () => formatInputValue());
|
25278
|
+
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
25032
25279
|
vue.onMounted(() => {
|
25033
25280
|
clampModel();
|
25034
25281
|
});
|
@@ -25143,7 +25390,7 @@
|
|
25143
25390
|
inputText.value = null;
|
25144
25391
|
return;
|
25145
25392
|
}
|
25146
|
-
inputText.value =
|
25393
|
+
inputText.value = correctPrecision(model.value);
|
25147
25394
|
}
|
25148
25395
|
function trimDecimalZeros() {
|
25149
25396
|
if (controlsDisabled.value) return;
|
@@ -25403,9 +25650,10 @@
|
|
25403
25650
|
e.preventDefault();
|
25404
25651
|
e.stopPropagation();
|
25405
25652
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25653
|
+
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25406
25654
|
if (isValidNumber(clipboardText)) return;
|
25407
25655
|
model.value = clipboardText.split('');
|
25408
|
-
inputRef.value?.[
|
25656
|
+
inputRef.value?.[finalIndex].focus();
|
25409
25657
|
}
|
25410
25658
|
function reset() {
|
25411
25659
|
model.value = [];
|
@@ -30105,11 +30353,6 @@
|
|
30105
30353
|
hideOverlay: Boolean,
|
30106
30354
|
icon: [String, Function, Object],
|
30107
30355
|
iconColor: String,
|
30108
|
-
iconSize: [Number, String],
|
30109
|
-
iconSizes: {
|
30110
|
-
type: Array,
|
30111
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30112
|
-
},
|
30113
30356
|
loading: Boolean,
|
30114
30357
|
opacity: [Number, String],
|
30115
30358
|
readonly: Boolean,
|
@@ -30129,6 +30372,7 @@
|
|
30129
30372
|
...makeBorderProps(),
|
30130
30373
|
...makeComponentProps(),
|
30131
30374
|
...makeElevationProps(),
|
30375
|
+
...makeIconSizeProps(),
|
30132
30376
|
...makeRoundedProps(),
|
30133
30377
|
...makeTagProps({
|
30134
30378
|
tag: 'button'
|
@@ -30183,7 +30427,6 @@
|
|
30183
30427
|
})()
|
30184
30428
|
}));
|
30185
30429
|
const btnSizeMap = new Map(props.sizes);
|
30186
|
-
const iconSizeMap = new Map(props.iconSizes);
|
30187
30430
|
function onClick() {
|
30188
30431
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30189
30432
|
isActive.value = !isActive.value;
|
@@ -30195,12 +30438,12 @@
|
|
30195
30438
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30196
30439
|
const btnHeight = props.height ?? btnSize;
|
30197
30440
|
const btnWidth = props.width ?? btnSize;
|
30198
|
-
const
|
30199
|
-
|
30200
|
-
|
30441
|
+
const {
|
30442
|
+
iconSize
|
30443
|
+
} = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
|
30201
30444
|
const iconProps = {
|
30202
30445
|
icon,
|
30203
|
-
size: iconSize,
|
30446
|
+
size: iconSize.value,
|
30204
30447
|
iconColor: props.iconColor,
|
30205
30448
|
opacity: props.opacity
|
30206
30449
|
};
|
@@ -30243,7 +30486,7 @@
|
|
30243
30486
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30244
30487
|
"indeterminate": "disable-shrink",
|
30245
30488
|
"width": "2",
|
30246
|
-
"size": iconSize
|
30489
|
+
"size": iconSize.value
|
30247
30490
|
}, null)])]
|
30248
30491
|
});
|
30249
30492
|
});
|
@@ -32153,7 +32396,7 @@
|
|
32153
32396
|
};
|
32154
32397
|
});
|
32155
32398
|
}
|
32156
|
-
const version$1 = "3.8.
|
32399
|
+
const version$1 = "3.8.9-dev.2025-06-11";
|
32157
32400
|
createVuetify$1.version = version$1;
|
32158
32401
|
|
32159
32402
|
// Vue's inject() can only be used in setup
|
@@ -32451,7 +32694,7 @@
|
|
32451
32694
|
|
32452
32695
|
/* eslint-disable local-rules/sort-imports */
|
32453
32696
|
|
32454
|
-
const version = "3.8.
|
32697
|
+
const version = "3.8.9-dev.2025-06-11";
|
32455
32698
|
|
32456
32699
|
/* eslint-disable local-rules/sort-imports */
|
32457
32700
|
|