@vuetify/nightly 3.8.7-master.2025-06-02 → 3.8.8-dev.2025-06-04
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -11
- package/dist/json/attributes.json +2042 -1942
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +146 -146
- package/dist/json/tags.json +25 -0
- package/dist/json/web-types.json +3842 -3510
- package/dist/vuetify-labs.cjs +380 -152
- package/dist/vuetify-labs.css +5726 -5686
- package/dist/vuetify-labs.d.ts +2393 -1889
- package/dist/vuetify-labs.esm.js +381 -153
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +380 -152
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +374 -141
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2674 -2634
- package/dist/vuetify.d.ts +1548 -1084
- package/dist/vuetify.esm.js +375 -142
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +374 -141
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1226 -1208
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +6 -1
- package/lib/components/VAlert/VAlert.d.ts +35 -0
- package/lib/components/VAlert/VAlert.js +15 -10
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +7 -1
- package/lib/components/VAppBar/VAppBar.d.ts +15 -3
- package/lib/components/VAppBar/VAppBarNavIcon.d.ts +20 -10
- package/lib/components/VAutocomplete/VAutocomplete.css +6 -6
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +154 -103
- package/lib/components/VAutocomplete/VAutocomplete.js +21 -3
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +3 -9
- package/lib/components/VBtn/VBtn.d.ts +20 -10
- package/lib/components/VBtnGroup/VBtnGroup.css +30 -7
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +58 -32
- package/lib/components/VBtnGroup/VBtnGroup.js +7 -3
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +44 -17
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +25 -0
- package/lib/components/VCard/VCard.d.ts +20 -10
- package/lib/components/VCheckbox/VCheckbox.d.ts +23 -13
- package/lib/components/VCheckbox/VCheckboxBtn.d.ts +20 -10
- package/lib/components/VChip/VChip.d.ts +20 -10
- package/lib/components/VChip/VChip.js +1 -0
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.d.ts +10 -0
- package/lib/components/VCombobox/VCombobox.css +6 -6
- package/lib/components/VCombobox/VCombobox.d.ts +154 -103
- package/lib/components/VCombobox/VCombobox.js +22 -3
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +3 -9
- package/lib/components/VDataTable/VDataTable.d.ts +60 -0
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +13 -0
- package/lib/components/VDataTable/VDataTableHeaders.js +4 -2
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +42 -0
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +42 -0
- package/lib/components/VDatePicker/VDatePicker.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonth.js +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +20 -10
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +20 -10
- package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +20 -10
- package/lib/components/VFab/VFab.d.ts +20 -10
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VList/VList.d.ts +13 -0
- package/lib/components/VList/VList.js +4 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +23 -10
- package/lib/components/VList/VListItem.js +7 -3
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/list.d.ts +9 -2
- package/lib/components/VList/list.js +7 -0
- package/lib/components/VList/list.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +103 -89
- package/lib/components/VNumberInput/VNumberInput.js +19 -4
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +2 -1
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VRadio/VRadio.d.ts +20 -10
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +23 -13
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.css +6 -0
- package/lib/components/VSelect/VSelect.d.ts +171 -107
- package/lib/components/VSelect/VSelect.js +21 -3
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelect.sass +3 -0
- package/lib/components/VSelect/_mixins.scss +14 -0
- package/lib/components/VSelectionControl/VSelectionControl.d.ts +20 -10
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +28 -14
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +10 -0
- package/lib/components/VSlideGroup/VSlideGroup.js +2 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSlider/VSliderThumb.d.ts +20 -10
- package/lib/components/VSlider/VSliderThumb.js +12 -6
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/slider.js +4 -1
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/VStepper/VStepperItem.d.ts +28 -14
- package/lib/components/VSwitch/VSwitch.d.ts +23 -13
- package/lib/components/VTable/VTable.css +6 -0
- package/lib/components/VTable/VTable.d.ts +55 -24
- package/lib/components/VTable/VTable.js +9 -2
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTable/VTable.sass +14 -0
- package/lib/components/VTable/_variables.scss +1 -0
- package/lib/components/VTabs/VTab.d.ts +56 -28
- package/lib/components/VTabs/VTabs.d.ts +10 -0
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- package/lib/components/VToolbar/VToolbar.d.ts +15 -3
- package/lib/components/VToolbar/VToolbar.js +6 -3
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/composables/calendar.d.ts +6 -0
- package/lib/composables/calendar.js +2 -1
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/DateAdapter.d.ts +3 -3
- package/lib/composables/date/DateAdapter.js.map +1 -1
- package/lib/composables/date/adapters/string.d.ts +54 -0
- package/lib/composables/date/adapters/string.js +153 -0
- package/lib/composables/date/adapters/string.js.map +1 -0
- package/lib/composables/date/adapters/vuetify.d.ts +1 -1
- package/lib/composables/date/adapters/vuetify.js +4 -4
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +3 -3
- package/lib/composables/date/index.d.ts +1 -0
- package/lib/composables/date/index.js +1 -0
- package/lib/composables/date/index.js.map +1 -1
- package/lib/composables/filter.js +3 -0
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/iconSizes.d.ts +28 -0
- package/lib/composables/iconSizes.js +23 -0
- package/lib/composables/iconSizes.js.map +1 -0
- package/lib/composables/list-items.js +2 -2
- package/lib/composables/list-items.js.map +1 -1
- package/lib/composables/theme.d.ts +6 -1
- package/lib/composables/theme.js +94 -26
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/virtual.js +6 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/directives/ripple/index.d.ts +2 -1
- package/lib/directives/ripple/index.js +12 -7
- package/lib/directives/ripple/index.js.map +1 -1
- package/lib/entry-bundler.d.ts +3 -3
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +73 -58
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +10 -0
- package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +97 -87
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VFileUpload/VFileUploadItem.d.ts +20 -10
- package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
- package/lib/labs/VIconBtn/VIconBtn.js +7 -11
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/VStepperVertical/VStepperVertical.d.ts +20 -10
- package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +20 -10
- package/lib/labs/VTreeview/VTreeview.d.ts +13 -0
- package/lib/labs/VTreeview/VTreeviewItem.d.ts +20 -10
- package/lib/labs/entry-bundler.d.ts +3 -3
- package/lib/util/globals.d.ts +1 -0
- package/lib/util/globals.js +1 -0
- package/lib/util/globals.js.map +1 -1
- package/lib/util/helpers.d.ts +1 -0
- package/lib/util/helpers.js +9 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +3 -1
package/dist/vuetify-labs.esm.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.
|
2
|
+
* Vuetify v3.8.8-dev.2025-06-04
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
6
6
|
|
7
|
-
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h,
|
7
|
+
import { shallowRef, reactive, watchEffect, toRef, capitalize, camelize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, 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"); }
|
@@ -602,6 +603,14 @@ function extractNumber(text, decimalDigitsLimit) {
|
|
602
603
|
}
|
603
604
|
return cleanText;
|
604
605
|
}
|
606
|
+
function camelizeProps(props) {
|
607
|
+
if (!props) return;
|
608
|
+
const out = {};
|
609
|
+
for (const prop in props) {
|
610
|
+
out[camelize(prop)] = props[prop];
|
611
|
+
}
|
612
|
+
return out;
|
613
|
+
}
|
605
614
|
|
606
615
|
// Utilities
|
607
616
|
const block = ['top', 'bottom'];
|
@@ -2337,6 +2346,7 @@ const makeThemeProps = propsFactory({
|
|
2337
2346
|
function genDefaults$2() {
|
2338
2347
|
return {
|
2339
2348
|
defaultTheme: 'light',
|
2349
|
+
prefix: 'v-',
|
2340
2350
|
variations: {
|
2341
2351
|
colors: [],
|
2342
2352
|
lighten: 0,
|
@@ -2418,7 +2428,10 @@ function genDefaults$2() {
|
|
2418
2428
|
}
|
2419
2429
|
}
|
2420
2430
|
},
|
2421
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2431
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
2432
|
+
scoped: false,
|
2433
|
+
unimportant: false,
|
2434
|
+
utilities: true
|
2422
2435
|
};
|
2423
2436
|
}
|
2424
2437
|
function parseThemeOptions() {
|
@@ -2441,21 +2454,21 @@ function parseThemeOptions() {
|
|
2441
2454
|
function createCssClass(lines, selector, content, scope) {
|
2442
2455
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2443
2456
|
}
|
2444
|
-
function genCssVariables(theme) {
|
2457
|
+
function genCssVariables(theme, prefix) {
|
2445
2458
|
const lightOverlay = theme.dark ? 2 : 1;
|
2446
2459
|
const darkOverlay = theme.dark ? 1 : 2;
|
2447
2460
|
const variables = [];
|
2448
2461
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2449
2462
|
const rgb = parseColor(value);
|
2450
|
-
variables.push(
|
2463
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2451
2464
|
if (!key.startsWith('on-')) {
|
2452
|
-
variables.push(
|
2465
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2453
2466
|
}
|
2454
2467
|
}
|
2455
2468
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2456
2469
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2457
2470
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2458
|
-
variables.push(
|
2471
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
2459
2472
|
}
|
2460
2473
|
return variables;
|
2461
2474
|
}
|
@@ -2499,7 +2512,8 @@ function getScopedSelector(selector, scope) {
|
|
2499
2512
|
const scopeSelector = `:where(${scope})`;
|
2500
2513
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2501
2514
|
}
|
2502
|
-
function upsertStyles(
|
2515
|
+
function upsertStyles(id, cspNonce, styles) {
|
2516
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2503
2517
|
if (!styleEl) return;
|
2504
2518
|
styleEl.innerHTML = styles;
|
2505
2519
|
}
|
@@ -2519,8 +2533,17 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2519
2533
|
// Composables
|
2520
2534
|
function createTheme(options) {
|
2521
2535
|
const parsedOptions = parseThemeOptions(options);
|
2522
|
-
const
|
2536
|
+
const _name = shallowRef(parsedOptions.defaultTheme);
|
2523
2537
|
const themes = ref(parsedOptions.themes);
|
2538
|
+
const systemName = shallowRef('light');
|
2539
|
+
const name = computed({
|
2540
|
+
get() {
|
2541
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
2542
|
+
},
|
2543
|
+
set(val) {
|
2544
|
+
_name.value = val;
|
2545
|
+
}
|
2546
|
+
});
|
2524
2547
|
const computedThemes = computed(() => {
|
2525
2548
|
const acc = {};
|
2526
2549
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2541,28 +2564,49 @@ function createTheme(options) {
|
|
2541
2564
|
const current = toRef(() => computedThemes.value[name.value]);
|
2542
2565
|
const styles = computed(() => {
|
2543
2566
|
const lines = [];
|
2567
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
2568
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2544
2569
|
if (current.value?.dark) {
|
2545
2570
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2546
2571
|
}
|
2547
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2572
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
2548
2573
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2549
|
-
createCssClass(lines,
|
2550
|
-
}
|
2551
|
-
|
2552
|
-
|
2553
|
-
|
2554
|
-
|
2555
|
-
|
2556
|
-
|
2557
|
-
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2574
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
2575
|
+
}
|
2576
|
+
if (parsedOptions.utilities) {
|
2577
|
+
const bgLines = [];
|
2578
|
+
const fgLines = [];
|
2579
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2580
|
+
for (const key of colors) {
|
2581
|
+
if (key.startsWith('on-')) {
|
2582
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2583
|
+
} else {
|
2584
|
+
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);
|
2585
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2586
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2587
|
+
}
|
2561
2588
|
}
|
2589
|
+
lines.push(...bgLines, ...fgLines);
|
2562
2590
|
}
|
2563
|
-
lines.push(...bgLines, ...fgLines);
|
2564
2591
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2565
2592
|
});
|
2593
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2594
|
+
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
2595
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
2596
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2597
|
+
function updateSystemName() {
|
2598
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
2599
|
+
}
|
2600
|
+
updateSystemName();
|
2601
|
+
media.addEventListener('change', updateSystemName, {
|
2602
|
+
passive: true
|
2603
|
+
});
|
2604
|
+
if (getCurrentScope()) {
|
2605
|
+
onScopeDispose(() => {
|
2606
|
+
media.removeEventListener('change', updateSystemName);
|
2607
|
+
});
|
2608
|
+
}
|
2609
|
+
}
|
2566
2610
|
function install(app) {
|
2567
2611
|
if (parsedOptions.isDisabled) return;
|
2568
2612
|
const head = app._context.provides.usehead;
|
@@ -2600,22 +2644,55 @@ function createTheme(options) {
|
|
2600
2644
|
updateStyles();
|
2601
2645
|
}
|
2602
2646
|
function updateStyles() {
|
2603
|
-
upsertStyles(
|
2647
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2604
2648
|
}
|
2605
2649
|
}
|
2606
2650
|
}
|
2607
|
-
|
2651
|
+
function change(themeName) {
|
2652
|
+
if (!themeNames.value.includes(themeName)) {
|
2653
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2654
|
+
return;
|
2655
|
+
}
|
2656
|
+
name.value = themeName;
|
2657
|
+
}
|
2658
|
+
function cycle() {
|
2659
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2660
|
+
const currentIndex = themeArray.indexOf(name.value);
|
2661
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2662
|
+
change(themeArray[nextIndex]);
|
2663
|
+
}
|
2664
|
+
function toggle() {
|
2665
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2666
|
+
cycle(themeArray);
|
2667
|
+
}
|
2668
|
+
const globalName = new Proxy(name, {
|
2669
|
+
get(target, prop) {
|
2670
|
+
return target[prop];
|
2671
|
+
},
|
2672
|
+
set(target, prop, val) {
|
2673
|
+
if (prop === 'value') {
|
2674
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2675
|
+
}
|
2676
|
+
// @ts-expect-error
|
2677
|
+
target[prop] = val;
|
2678
|
+
return true;
|
2679
|
+
}
|
2680
|
+
});
|
2608
2681
|
return {
|
2609
2682
|
install,
|
2683
|
+
change,
|
2684
|
+
cycle,
|
2685
|
+
toggle,
|
2610
2686
|
isDisabled: parsedOptions.isDisabled,
|
2611
2687
|
name,
|
2612
2688
|
themes,
|
2613
2689
|
current,
|
2614
2690
|
computedThemes,
|
2691
|
+
prefix: parsedOptions.prefix,
|
2615
2692
|
themeClasses,
|
2616
2693
|
styles,
|
2617
2694
|
global: {
|
2618
|
-
name,
|
2695
|
+
name: globalName,
|
2619
2696
|
current
|
2620
2697
|
}
|
2621
2698
|
};
|
@@ -2626,7 +2703,7 @@ function provideTheme(props) {
|
|
2626
2703
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2627
2704
|
const name = toRef(() => props.theme ?? theme.name.value);
|
2628
2705
|
const current = toRef(() => theme.themes.value[name.value]);
|
2629
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
2706
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
2630
2707
|
const newTheme = {
|
2631
2708
|
...theme,
|
2632
2709
|
name,
|
@@ -3730,7 +3807,10 @@ const makeVToolbarProps = propsFactory({
|
|
3730
3807
|
default: 'default',
|
3731
3808
|
validator: v => allowedDensities$1.includes(v)
|
3732
3809
|
},
|
3733
|
-
extended:
|
3810
|
+
extended: {
|
3811
|
+
type: Boolean,
|
3812
|
+
default: null
|
3813
|
+
},
|
3734
3814
|
extensionHeight: {
|
3735
3815
|
type: [Number, String],
|
3736
3816
|
default: 48
|
@@ -3778,7 +3858,7 @@ const VToolbar = genericComponent()({
|
|
3778
3858
|
const {
|
3779
3859
|
rtlClasses
|
3780
3860
|
} = useRtl();
|
3781
|
-
const isExtended = shallowRef(
|
3861
|
+
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
3782
3862
|
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));
|
3783
3863
|
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);
|
3784
3864
|
provideDefaults({
|
@@ -3790,7 +3870,7 @@ const VToolbar = genericComponent()({
|
|
3790
3870
|
const hasTitle = !!(props.title || slots.title);
|
3791
3871
|
const hasImage = !!(slots.image || props.image);
|
3792
3872
|
const extension = slots.extension?.();
|
3793
|
-
isExtended.value =
|
3873
|
+
isExtended.value = props.extended === null ? !!extension : props.extended;
|
3794
3874
|
return createVNode(props.tag, {
|
3795
3875
|
"class": normalizeClass(['v-toolbar', {
|
3796
3876
|
'v-toolbar--absolute': props.absolute,
|
@@ -4173,9 +4253,15 @@ function useVariant(props) {
|
|
4173
4253
|
};
|
4174
4254
|
}
|
4175
4255
|
|
4256
|
+
// Types
|
4257
|
+
|
4176
4258
|
const makeVBtnGroupProps = propsFactory({
|
4177
4259
|
baseColor: String,
|
4178
4260
|
divided: Boolean,
|
4261
|
+
direction: {
|
4262
|
+
type: String,
|
4263
|
+
default: 'horizontal'
|
4264
|
+
},
|
4179
4265
|
...makeBorderProps(),
|
4180
4266
|
...makeComponentProps(),
|
4181
4267
|
...makeDensityProps(),
|
@@ -4209,7 +4295,7 @@ const VBtnGroup = genericComponent()({
|
|
4209
4295
|
} = useRounded(props);
|
4210
4296
|
provideDefaults({
|
4211
4297
|
VBtn: {
|
4212
|
-
height: 'auto',
|
4298
|
+
height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
4213
4299
|
baseColor: toRef(() => props.baseColor),
|
4214
4300
|
color: toRef(() => props.color),
|
4215
4301
|
density: toRef(() => props.density),
|
@@ -4219,7 +4305,7 @@ const VBtnGroup = genericComponent()({
|
|
4219
4305
|
});
|
4220
4306
|
useRender(() => {
|
4221
4307
|
return createVNode(props.tag, {
|
4222
|
-
"class": normalizeClass(['v-btn-group', {
|
4308
|
+
"class": normalizeClass(['v-btn-group', `v-btn-group--${props.direction}`, {
|
4223
4309
|
'v-btn-group--divided': props.divided
|
4224
4310
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4225
4311
|
"style": normalizeStyle(props.style)
|
@@ -5551,8 +5637,8 @@ function rippleCancelShow(e) {
|
|
5551
5637
|
window.clearTimeout(element._ripple.showTimer);
|
5552
5638
|
}
|
5553
5639
|
let keyboardRipple = false;
|
5554
|
-
function keyboardRippleShow(e) {
|
5555
|
-
if (!keyboardRipple && (e.keyCode
|
5640
|
+
function keyboardRippleShow(e, keys) {
|
5641
|
+
if (!keyboardRipple && keys.includes(e.keyCode)) {
|
5556
5642
|
keyboardRipple = true;
|
5557
5643
|
rippleShow(e);
|
5558
5644
|
}
|
@@ -5580,9 +5666,12 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5580
5666
|
el._ripple.enabled = enabled;
|
5581
5667
|
el._ripple.centered = modifiers.center;
|
5582
5668
|
el._ripple.circle = modifiers.circle;
|
5583
|
-
|
5584
|
-
|
5669
|
+
const bindingValue = isObject(value) ? value : {};
|
5670
|
+
if (bindingValue.class) {
|
5671
|
+
el._ripple.class = bindingValue.class;
|
5585
5672
|
}
|
5673
|
+
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5674
|
+
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5586
5675
|
if (enabled && !wasEnabled) {
|
5587
5676
|
if (modifiers.stop) {
|
5588
5677
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5604,7 +5693,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5604
5693
|
el.addEventListener('mousedown', rippleShow);
|
5605
5694
|
el.addEventListener('mouseup', rippleHide);
|
5606
5695
|
el.addEventListener('mouseleave', rippleHide);
|
5607
|
-
el.addEventListener('keydown', keyboardRippleShow);
|
5696
|
+
el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
|
5608
5697
|
el.addEventListener('keyup', keyboardRippleHide);
|
5609
5698
|
el.addEventListener('blur', focusRippleHide);
|
5610
5699
|
|
@@ -5624,7 +5713,9 @@ function removeListeners(el) {
|
|
5624
5713
|
el.removeEventListener('touchcancel', rippleHide);
|
5625
5714
|
el.removeEventListener('mouseup', rippleHide);
|
5626
5715
|
el.removeEventListener('mouseleave', rippleHide);
|
5627
|
-
el.
|
5716
|
+
if (el._ripple?.keyDownHandler) {
|
5717
|
+
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5718
|
+
}
|
5628
5719
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5629
5720
|
el.removeEventListener('dragstart', rippleHide);
|
5630
5721
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5633,8 +5724,8 @@ function mounted$4(el, binding) {
|
|
5633
5724
|
updateRipple(el, binding, false);
|
5634
5725
|
}
|
5635
5726
|
function unmounted$4(el) {
|
5636
|
-
delete el._ripple;
|
5637
5727
|
removeListeners(el);
|
5728
|
+
delete el._ripple;
|
5638
5729
|
}
|
5639
5730
|
function updated$1(el, binding) {
|
5640
5731
|
if (binding.value === binding.oldValue) {
|
@@ -5907,6 +5998,31 @@ const VAppBarTitle = genericComponent()({
|
|
5907
5998
|
// Utilities
|
5908
5999
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5909
6000
|
|
6001
|
+
// Utilities
|
6002
|
+
|
6003
|
+
// Types
|
6004
|
+
|
6005
|
+
// Types
|
6006
|
+
|
6007
|
+
// Composables
|
6008
|
+
const makeIconSizeProps = propsFactory({
|
6009
|
+
iconSize: [Number, String],
|
6010
|
+
iconSizes: {
|
6011
|
+
type: Array,
|
6012
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6013
|
+
}
|
6014
|
+
}, 'iconSize');
|
6015
|
+
function useIconSizes(props, fallback) {
|
6016
|
+
const iconSize = computed(() => {
|
6017
|
+
const iconSizeMap = new Map(props.iconSizes);
|
6018
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6019
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6020
|
+
});
|
6021
|
+
return {
|
6022
|
+
iconSize
|
6023
|
+
};
|
6024
|
+
}
|
6025
|
+
|
5910
6026
|
// Types
|
5911
6027
|
|
5912
6028
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -5946,6 +6062,7 @@ const makeVAlertProps = propsFactory({
|
|
5946
6062
|
...makeDensityProps(),
|
5947
6063
|
...makeDimensionProps(),
|
5948
6064
|
...makeElevationProps(),
|
6065
|
+
...makeIconSizeProps(),
|
5949
6066
|
...makeLocationProps(),
|
5950
6067
|
...makePositionProps(),
|
5951
6068
|
...makeRoundedProps(),
|
@@ -5973,6 +6090,9 @@ const VAlert = genericComponent()({
|
|
5973
6090
|
if (!props.type) return props.icon;
|
5974
6091
|
return props.icon ?? `$${props.type}`;
|
5975
6092
|
});
|
6093
|
+
const {
|
6094
|
+
iconSize
|
6095
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
5976
6096
|
const {
|
5977
6097
|
themeClasses
|
5978
6098
|
} = provideTheme(props);
|
@@ -6020,6 +6140,11 @@ const VAlert = genericComponent()({
|
|
6020
6140
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6021
6141
|
const hasTitle = !!(slots.title || props.title);
|
6022
6142
|
const hasClose = !!(slots.close || props.closable);
|
6143
|
+
const iconProps = {
|
6144
|
+
density: props.density,
|
6145
|
+
icon: icon.value,
|
6146
|
+
size: iconSize.value
|
6147
|
+
};
|
6023
6148
|
return isActive.value && createVNode(props.tag, {
|
6024
6149
|
"class": normalizeClass(['v-alert', props.border && {
|
6025
6150
|
'v-alert--border': !!props.border,
|
@@ -6037,19 +6162,14 @@ const VAlert = genericComponent()({
|
|
6037
6162
|
}, null), hasPrepend && createElementVNode("div", {
|
6038
6163
|
"key": "prepend",
|
6039
6164
|
"class": "v-alert__prepend"
|
6040
|
-
}, [!slots.prepend ? createVNode(VIcon, {
|
6041
|
-
"key": "prepend-icon"
|
6042
|
-
|
6043
|
-
"icon": icon.value,
|
6044
|
-
"size": props.prominent ? 44 : 28
|
6045
|
-
}, null) : createVNode(VDefaultsProvider, {
|
6165
|
+
}, [!slots.prepend ? createVNode(VIcon, mergeProps({
|
6166
|
+
"key": "prepend-icon"
|
6167
|
+
}, iconProps), null) : createVNode(VDefaultsProvider, {
|
6046
6168
|
"key": "prepend-defaults",
|
6047
6169
|
"disabled": !icon.value,
|
6048
6170
|
"defaults": {
|
6049
6171
|
VIcon: {
|
6050
|
-
|
6051
|
-
icon: icon.value,
|
6052
|
-
size: props.prominent ? 44 : 28
|
6172
|
+
...iconProps
|
6053
6173
|
}
|
6054
6174
|
}
|
6055
6175
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7574,6 +7694,7 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7574
7694
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7575
7695
|
const makeVSlideGroupProps = propsFactory({
|
7576
7696
|
centerActive: Boolean,
|
7697
|
+
contentClass: null,
|
7577
7698
|
direction: {
|
7578
7699
|
type: String,
|
7579
7700
|
default: 'horizontal'
|
@@ -7886,7 +8007,7 @@ const VSlideGroup = genericComponent()({
|
|
7886
8007
|
})]), createElementVNode("div", {
|
7887
8008
|
"key": "container",
|
7888
8009
|
"ref": containerRef,
|
7889
|
-
"class":
|
8010
|
+
"class": normalizeClass(['v-slide-group__container', props.contentClass]),
|
7890
8011
|
"onScroll": onScroll
|
7891
8012
|
}, [createElementVNode("div", {
|
7892
8013
|
"ref": contentRef,
|
@@ -8096,6 +8217,7 @@ const VChip = genericComponent()({
|
|
8096
8217
|
const isClickable = computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
|
8097
8218
|
const closeProps = toRef(() => ({
|
8098
8219
|
'aria-label': t(props.closeLabel),
|
8220
|
+
disabled: props.disabled,
|
8099
8221
|
onClick(e) {
|
8100
8222
|
e.preventDefault();
|
8101
8223
|
e.stopPropagation();
|
@@ -8248,16 +8370,85 @@ const VChip = genericComponent()({
|
|
8248
8370
|
}
|
8249
8371
|
});
|
8250
8372
|
|
8373
|
+
const makeVDividerProps = propsFactory({
|
8374
|
+
color: String,
|
8375
|
+
inset: Boolean,
|
8376
|
+
length: [Number, String],
|
8377
|
+
opacity: [Number, String],
|
8378
|
+
thickness: [Number, String],
|
8379
|
+
vertical: Boolean,
|
8380
|
+
...makeComponentProps(),
|
8381
|
+
...makeThemeProps()
|
8382
|
+
}, 'VDivider');
|
8383
|
+
const VDivider = genericComponent()({
|
8384
|
+
name: 'VDivider',
|
8385
|
+
props: makeVDividerProps(),
|
8386
|
+
setup(props, _ref) {
|
8387
|
+
let {
|
8388
|
+
attrs,
|
8389
|
+
slots
|
8390
|
+
} = _ref;
|
8391
|
+
const {
|
8392
|
+
themeClasses
|
8393
|
+
} = provideTheme(props);
|
8394
|
+
const {
|
8395
|
+
textColorClasses,
|
8396
|
+
textColorStyles
|
8397
|
+
} = useTextColor(() => props.color);
|
8398
|
+
const dividerStyles = computed(() => {
|
8399
|
+
const styles = {};
|
8400
|
+
if (props.length) {
|
8401
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8402
|
+
}
|
8403
|
+
if (props.thickness) {
|
8404
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8405
|
+
}
|
8406
|
+
return styles;
|
8407
|
+
});
|
8408
|
+
useRender(() => {
|
8409
|
+
const divider = createElementVNode("hr", {
|
8410
|
+
"class": normalizeClass([{
|
8411
|
+
'v-divider': true,
|
8412
|
+
'v-divider--inset': props.inset,
|
8413
|
+
'v-divider--vertical': props.vertical
|
8414
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
8415
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8416
|
+
'--v-border-opacity': props.opacity
|
8417
|
+
}, props.style]),
|
8418
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8419
|
+
"role": `${attrs.role || 'separator'}`
|
8420
|
+
}, null);
|
8421
|
+
if (!slots.default) return divider;
|
8422
|
+
return createElementVNode("div", {
|
8423
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
8424
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8425
|
+
'v-divider__wrapper--inset': props.inset
|
8426
|
+
}])
|
8427
|
+
}, [divider, createElementVNode("div", {
|
8428
|
+
"class": "v-divider__content"
|
8429
|
+
}, [slots.default()]), divider]);
|
8430
|
+
});
|
8431
|
+
return {};
|
8432
|
+
}
|
8433
|
+
});
|
8434
|
+
|
8251
8435
|
// Utilities
|
8252
8436
|
|
8253
8437
|
// List
|
8254
8438
|
const ListKey = Symbol.for('vuetify:list');
|
8255
8439
|
function createList() {
|
8440
|
+
let {
|
8441
|
+
filterable
|
8442
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8443
|
+
filterable: false
|
8444
|
+
};
|
8256
8445
|
const parent = inject$1(ListKey, {
|
8446
|
+
filterable: false,
|
8257
8447
|
hasPrepend: shallowRef(false),
|
8258
8448
|
updateHasPrepend: () => null
|
8259
8449
|
});
|
8260
8450
|
const data = {
|
8451
|
+
filterable: parent.filterable || filterable,
|
8261
8452
|
hasPrepend: shallowRef(false),
|
8262
8453
|
updateHasPrepend: value => {
|
8263
8454
|
if (value) data.hasPrepend.value = value;
|
@@ -9209,6 +9400,9 @@ const VListItem = genericComponent()({
|
|
9209
9400
|
roundedClasses
|
9210
9401
|
} = useRounded(roundedProps);
|
9211
9402
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9403
|
+
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9404
|
+
keys: [keyCodes.enter]
|
9405
|
+
} : props.ripple);
|
9212
9406
|
const slotProps = computed(() => ({
|
9213
9407
|
isActive: isActive.value,
|
9214
9408
|
select,
|
@@ -9233,8 +9427,9 @@ const VListItem = genericComponent()({
|
|
9233
9427
|
function onKeyDown(e) {
|
9234
9428
|
const target = e.target;
|
9235
9429
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9236
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
9430
|
+
if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
|
9237
9431
|
e.preventDefault();
|
9432
|
+
e.stopPropagation();
|
9238
9433
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9239
9434
|
}
|
9240
9435
|
}
|
@@ -9344,7 +9539,7 @@ const VListItem = genericComponent()({
|
|
9344
9539
|
}), createElementVNode("div", {
|
9345
9540
|
"class": "v-list-item__spacer"
|
9346
9541
|
}, null)])]
|
9347
|
-
}), [[Ripple, isClickable.value &&
|
9542
|
+
}), [[Ripple, isClickable.value && rippleOptions.value]]);
|
9348
9543
|
});
|
9349
9544
|
return {
|
9350
9545
|
activate,
|
@@ -9399,68 +9594,6 @@ const VListSubheader = genericComponent()({
|
|
9399
9594
|
}
|
9400
9595
|
});
|
9401
9596
|
|
9402
|
-
const makeVDividerProps = propsFactory({
|
9403
|
-
color: String,
|
9404
|
-
inset: Boolean,
|
9405
|
-
length: [Number, String],
|
9406
|
-
opacity: [Number, String],
|
9407
|
-
thickness: [Number, String],
|
9408
|
-
vertical: Boolean,
|
9409
|
-
...makeComponentProps(),
|
9410
|
-
...makeThemeProps()
|
9411
|
-
}, 'VDivider');
|
9412
|
-
const VDivider = genericComponent()({
|
9413
|
-
name: 'VDivider',
|
9414
|
-
props: makeVDividerProps(),
|
9415
|
-
setup(props, _ref) {
|
9416
|
-
let {
|
9417
|
-
attrs,
|
9418
|
-
slots
|
9419
|
-
} = _ref;
|
9420
|
-
const {
|
9421
|
-
themeClasses
|
9422
|
-
} = provideTheme(props);
|
9423
|
-
const {
|
9424
|
-
textColorClasses,
|
9425
|
-
textColorStyles
|
9426
|
-
} = useTextColor(() => props.color);
|
9427
|
-
const dividerStyles = computed(() => {
|
9428
|
-
const styles = {};
|
9429
|
-
if (props.length) {
|
9430
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9431
|
-
}
|
9432
|
-
if (props.thickness) {
|
9433
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9434
|
-
}
|
9435
|
-
return styles;
|
9436
|
-
});
|
9437
|
-
useRender(() => {
|
9438
|
-
const divider = createElementVNode("hr", {
|
9439
|
-
"class": normalizeClass([{
|
9440
|
-
'v-divider': true,
|
9441
|
-
'v-divider--inset': props.inset,
|
9442
|
-
'v-divider--vertical': props.vertical
|
9443
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
9444
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9445
|
-
'--v-border-opacity': props.opacity
|
9446
|
-
}, props.style]),
|
9447
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9448
|
-
"role": `${attrs.role || 'separator'}`
|
9449
|
-
}, null);
|
9450
|
-
if (!slots.default) return divider;
|
9451
|
-
return createElementVNode("div", {
|
9452
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
9453
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9454
|
-
'v-divider__wrapper--inset': props.inset
|
9455
|
-
}])
|
9456
|
-
}, [divider, createElementVNode("div", {
|
9457
|
-
"class": "v-divider__content"
|
9458
|
-
}, [slots.default()]), divider]);
|
9459
|
-
});
|
9460
|
-
return {};
|
9461
|
-
}
|
9462
|
-
});
|
9463
|
-
|
9464
9597
|
// Types
|
9465
9598
|
|
9466
9599
|
const makeVListChildrenProps = propsFactory({
|
@@ -9577,7 +9710,7 @@ function transformItem$3(props, item) {
|
|
9577
9710
|
const _props = {
|
9578
9711
|
title,
|
9579
9712
|
value,
|
9580
|
-
...itemProps
|
9713
|
+
...camelizeProps(itemProps)
|
9581
9714
|
};
|
9582
9715
|
return {
|
9583
9716
|
title: String(_props.title ?? ''),
|
@@ -9729,6 +9862,7 @@ const makeVListProps = propsFactory({
|
|
9729
9862
|
activeClass: String,
|
9730
9863
|
bgColor: String,
|
9731
9864
|
disabled: Boolean,
|
9865
|
+
filterable: Boolean,
|
9732
9866
|
expandIcon: IconValue,
|
9733
9867
|
collapseIcon: IconValue,
|
9734
9868
|
lines: {
|
@@ -9812,7 +9946,9 @@ const VList = genericComponent()({
|
|
9812
9946
|
const activeColor = toRef(() => props.activeColor);
|
9813
9947
|
const baseColor = toRef(() => props.baseColor);
|
9814
9948
|
const color = toRef(() => props.color);
|
9815
|
-
createList(
|
9949
|
+
createList({
|
9950
|
+
filterable: props.filterable
|
9951
|
+
});
|
9816
9952
|
provideDefaults({
|
9817
9953
|
VListGroup: {
|
9818
9954
|
activeColor,
|
@@ -12388,7 +12524,12 @@ function useVirtual(props, items) {
|
|
12388
12524
|
}
|
12389
12525
|
function calculateOffset(index) {
|
12390
12526
|
index = clamp(index, 0, items.value.length - 1);
|
12391
|
-
|
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;
|
12392
12533
|
}
|
12393
12534
|
function calculateIndex(scrollTop) {
|
12394
12535
|
return binaryClosest(offsets, scrollTop);
|
@@ -12742,6 +12883,7 @@ const makeSelectProps = propsFactory({
|
|
12742
12883
|
},
|
12743
12884
|
openOnClear: Boolean,
|
12744
12885
|
itemColor: String,
|
12886
|
+
noAutoScroll: Boolean,
|
12745
12887
|
...makeItemsProps({
|
12746
12888
|
itemChildren: false
|
12747
12889
|
})
|
@@ -12956,7 +13098,7 @@ const VSelect = genericComponent()({
|
|
12956
13098
|
watch(menu, () => {
|
12957
13099
|
if (!props.hideSelected && menu.value && model.value.length) {
|
12958
13100
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
12959
|
-
IN_BROWSER && window.requestAnimationFrame(() => {
|
13101
|
+
IN_BROWSER && !props.noAutoScroll && window.requestAnimationFrame(() => {
|
12960
13102
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
12961
13103
|
});
|
12962
13104
|
}
|
@@ -13048,6 +13190,22 @@ const VSelect = genericComponent()({
|
|
13048
13190
|
key: item.value,
|
13049
13191
|
onClick: () => select(item, null)
|
13050
13192
|
});
|
13193
|
+
if (item.raw.type === 'divider') {
|
13194
|
+
return slots.divider?.({
|
13195
|
+
props: item.raw,
|
13196
|
+
index
|
13197
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13198
|
+
"key": `divider-${index}`
|
13199
|
+
}), null);
|
13200
|
+
}
|
13201
|
+
if (item.raw.type === 'subheader') {
|
13202
|
+
return slots.subheader?.({
|
13203
|
+
props: item.raw,
|
13204
|
+
index
|
13205
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13206
|
+
"key": `subheader-${index}`
|
13207
|
+
}), null);
|
13208
|
+
}
|
13051
13209
|
return slots.item?.({
|
13052
13210
|
item,
|
13053
13211
|
index,
|
@@ -13208,6 +13366,9 @@ function filterItems(items, query, options) {
|
|
13208
13366
|
let match = -1;
|
13209
13367
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13210
13368
|
if (typeof item === 'object') {
|
13369
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13370
|
+
continue;
|
13371
|
+
}
|
13211
13372
|
const filterKeys = keys || Object.keys(transformed);
|
13212
13373
|
for (const key of filterKeys) {
|
13213
13374
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13410,7 +13571,7 @@ const VAutocomplete = genericComponent()({
|
|
13410
13571
|
menu.value = !menu.value;
|
13411
13572
|
}
|
13412
13573
|
function onListKeydown(e) {
|
13413
|
-
if (e.key
|
13574
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
13414
13575
|
vTextFieldRef.value?.focus();
|
13415
13576
|
}
|
13416
13577
|
}
|
@@ -13615,6 +13776,7 @@ const VAutocomplete = genericComponent()({
|
|
13615
13776
|
}, props.menuProps), {
|
13616
13777
|
default: () => [hasList && createVNode(VList, mergeProps({
|
13617
13778
|
"ref": listRef,
|
13779
|
+
"filterable": true,
|
13618
13780
|
"selected": selectedValues.value,
|
13619
13781
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13620
13782
|
"onMousedown": e => e.preventDefault(),
|
@@ -13646,6 +13808,22 @@ const VAutocomplete = genericComponent()({
|
|
13646
13808
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13647
13809
|
onClick: () => select(item, null)
|
13648
13810
|
});
|
13811
|
+
if (item.raw.type === 'divider') {
|
13812
|
+
return slots.divider?.({
|
13813
|
+
props: item.raw,
|
13814
|
+
index
|
13815
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13816
|
+
"key": `divider-${index}`
|
13817
|
+
}), null);
|
13818
|
+
}
|
13819
|
+
if (item.raw.type === 'subheader') {
|
13820
|
+
return slots.subheader?.({
|
13821
|
+
props: item.raw,
|
13822
|
+
index
|
13823
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13824
|
+
"key": `subheader-${index}`
|
13825
|
+
}), null);
|
13826
|
+
}
|
13649
13827
|
return slots.item?.({
|
13650
13828
|
item,
|
13651
13829
|
index,
|
@@ -15884,7 +16062,10 @@ const useSteps = props => {
|
|
15884
16062
|
if (step.value <= 0) return value;
|
15885
16063
|
const clamped = clamp(value, min.value, max.value);
|
15886
16064
|
const offset = min.value % step.value;
|
15887
|
-
|
16065
|
+
let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
16066
|
+
if (clamped > newValue && newValue + step.value > max.value) {
|
16067
|
+
newValue = max.value;
|
16068
|
+
}
|
15888
16069
|
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
15889
16070
|
}
|
15890
16071
|
return {
|
@@ -16140,6 +16321,8 @@ const VSliderThumb = genericComponent()({
|
|
16140
16321
|
} = useRtl();
|
16141
16322
|
if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
|
16142
16323
|
const {
|
16324
|
+
min,
|
16325
|
+
max,
|
16143
16326
|
thumbColor,
|
16144
16327
|
step,
|
16145
16328
|
disabled,
|
@@ -16180,16 +16363,20 @@ const VSliderThumb = genericComponent()({
|
|
16180
16363
|
if (!relevantKeys.includes(e.key)) return;
|
16181
16364
|
e.preventDefault();
|
16182
16365
|
const _step = step.value || 0.1;
|
16183
|
-
const steps = (
|
16366
|
+
const steps = (max.value - min.value) / _step;
|
16184
16367
|
if ([left, right, down, up].includes(e.key)) {
|
16185
16368
|
const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
|
16186
16369
|
const direction = increase.includes(e.key) ? 1 : -1;
|
16187
16370
|
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
16188
|
-
|
16371
|
+
if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
|
16372
|
+
value = value - steps % 1 * _step;
|
16373
|
+
} else {
|
16374
|
+
value = value + direction * _step * multipliers.value[multiplier];
|
16375
|
+
}
|
16189
16376
|
} else if (e.key === home) {
|
16190
|
-
value =
|
16377
|
+
value = min.value;
|
16191
16378
|
} else if (e.key === end) {
|
16192
|
-
value =
|
16379
|
+
value = max.value;
|
16193
16380
|
} else {
|
16194
16381
|
const direction = e.key === pagedown ? 1 : -1;
|
16195
16382
|
value = value - direction * _step * (steps > 100 ? steps / 10 : 10);
|
@@ -16214,8 +16401,8 @@ const VSliderThumb = genericComponent()({
|
|
16214
16401
|
"role": "slider",
|
16215
16402
|
"tabindex": disabled.value ? -1 : 0,
|
16216
16403
|
"aria-label": props.name,
|
16217
|
-
"aria-valuemin":
|
16218
|
-
"aria-valuemax":
|
16404
|
+
"aria-valuemin": min.value,
|
16405
|
+
"aria-valuemax": max.value,
|
16219
16406
|
"aria-valuenow": props.modelValue,
|
16220
16407
|
"aria-readonly": !!readonly.value,
|
16221
16408
|
"aria-orientation": direction.value,
|
@@ -17241,13 +17428,13 @@ function date(value) {
|
|
17241
17428
|
return null;
|
17242
17429
|
}
|
17243
17430
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17244
|
-
function getWeekdays(locale, firstDayOfWeek) {
|
17431
|
+
function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
|
17245
17432
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17246
17433
|
return createRange(7).map(i => {
|
17247
17434
|
const weekday = new Date(sundayJanuarySecond2000);
|
17248
17435
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17249
17436
|
return new Intl.DateTimeFormat(locale, {
|
17250
|
-
weekday: 'narrow'
|
17437
|
+
weekday: weekdayFormat ?? 'narrow'
|
17251
17438
|
}).format(weekday);
|
17252
17439
|
});
|
17253
17440
|
}
|
@@ -17711,9 +17898,9 @@ class VuetifyDateAdapter {
|
|
17711
17898
|
getDiff(date, comparing, unit) {
|
17712
17899
|
return getDiff(date, comparing, unit);
|
17713
17900
|
}
|
17714
|
-
getWeekdays(firstDayOfWeek) {
|
17901
|
+
getWeekdays(firstDayOfWeek, weekdayFormat) {
|
17715
17902
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17716
|
-
return getWeekdays(this.locale, firstDay);
|
17903
|
+
return getWeekdays(this.locale, firstDay, weekdayFormat);
|
17717
17904
|
}
|
17718
17905
|
getYear(date) {
|
17719
17906
|
return getYear(date);
|
@@ -18069,6 +18256,7 @@ const VCombobox = genericComponent()({
|
|
18069
18256
|
_search.value = val ?? '';
|
18070
18257
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18071
18258
|
model.value = [transformItem$3(props, val)];
|
18259
|
+
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18072
18260
|
}
|
18073
18261
|
if (val && props.multiple && props.delimiters?.length) {
|
18074
18262
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18149,7 +18337,7 @@ const VCombobox = genericComponent()({
|
|
18149
18337
|
menu.value = !menu.value;
|
18150
18338
|
}
|
18151
18339
|
function onListKeydown(e) {
|
18152
|
-
if (e.key
|
18340
|
+
if (checkPrintable(e) || e.key === 'Backspace') {
|
18153
18341
|
vTextFieldRef.value?.focus();
|
18154
18342
|
}
|
18155
18343
|
}
|
@@ -18354,6 +18542,7 @@ const VCombobox = genericComponent()({
|
|
18354
18542
|
}, props.menuProps), {
|
18355
18543
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18356
18544
|
"ref": listRef,
|
18545
|
+
"filterable": true,
|
18357
18546
|
"selected": selectedValues.value,
|
18358
18547
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18359
18548
|
"onMousedown": e => e.preventDefault(),
|
@@ -18385,6 +18574,22 @@ const VCombobox = genericComponent()({
|
|
18385
18574
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18386
18575
|
onClick: () => select(item, null)
|
18387
18576
|
});
|
18577
|
+
if (item.raw.type === 'divider') {
|
18578
|
+
return slots.divider?.({
|
18579
|
+
props: item.raw,
|
18580
|
+
index
|
18581
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18582
|
+
"key": `divider-${index}`
|
18583
|
+
}), null);
|
18584
|
+
}
|
18585
|
+
if (item.raw.type === 'subheader') {
|
18586
|
+
return slots.subheader?.({
|
18587
|
+
props: item.raw,
|
18588
|
+
index
|
18589
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18590
|
+
"key": `subheader-${index}`
|
18591
|
+
}), null);
|
18592
|
+
}
|
18388
18593
|
return slots.item?.({
|
18389
18594
|
item,
|
18390
18595
|
index,
|
@@ -20264,6 +20469,7 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20264
20469
|
color: String,
|
20265
20470
|
disableSort: Boolean,
|
20266
20471
|
fixedHeader: Boolean,
|
20472
|
+
lastFixed: Boolean,
|
20267
20473
|
multiSort: Boolean,
|
20268
20474
|
sortAscIcon: {
|
20269
20475
|
type: IconValue,
|
@@ -20310,10 +20516,11 @@ const VDataTableHeaders = genericComponent()({
|
|
20310
20516
|
loaderClasses
|
20311
20517
|
} = useLoader(props);
|
20312
20518
|
function getFixedStyles(column, y) {
|
20313
|
-
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20519
|
+
if (!(props.sticky || props.fixedHeader) && !(column.fixed || column.lastFixed)) return undefined;
|
20314
20520
|
return {
|
20315
20521
|
position: 'sticky',
|
20316
|
-
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20522
|
+
left: column.fixed || column.lastFixed ? convertToUnit(column.fixedOffset) : undefined,
|
20523
|
+
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20317
20524
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20318
20525
|
};
|
20319
20526
|
}
|
@@ -20822,11 +21029,18 @@ const VDataTableRows = genericComponent()({
|
|
20822
21029
|
}
|
20823
21030
|
});
|
20824
21031
|
|
21032
|
+
// Types
|
21033
|
+
|
20825
21034
|
const makeVTableProps = propsFactory({
|
20826
21035
|
fixedHeader: Boolean,
|
20827
21036
|
fixedFooter: Boolean,
|
20828
21037
|
height: [Number, String],
|
20829
21038
|
hover: Boolean,
|
21039
|
+
striped: {
|
21040
|
+
type: String,
|
21041
|
+
default: null,
|
21042
|
+
validator: v => ['even', 'odd'].includes(v)
|
21043
|
+
},
|
20830
21044
|
...makeComponentProps(),
|
20831
21045
|
...makeDensityProps(),
|
20832
21046
|
...makeTagProps(),
|
@@ -20853,7 +21067,9 @@ const VTable = genericComponent()({
|
|
20853
21067
|
'v-table--fixed-footer': props.fixedFooter,
|
20854
21068
|
'v-table--has-top': !!slots.top,
|
20855
21069
|
'v-table--has-bottom': !!slots.bottom,
|
20856
|
-
'v-table--hover': props.hover
|
21070
|
+
'v-table--hover': props.hover,
|
21071
|
+
'v-table--striped-even': props.striped === 'even',
|
21072
|
+
'v-table--striped-odd': props.striped === 'odd'
|
20857
21073
|
}, themeClasses.value, densityClasses.value, props.class]),
|
20858
21074
|
"style": normalizeStyle(props.style)
|
20859
21075
|
}, {
|
@@ -22028,7 +22244,8 @@ const makeCalendarProps = propsFactory({
|
|
22028
22244
|
firstDayOfWeek: {
|
22029
22245
|
type: [Number, String],
|
22030
22246
|
default: undefined
|
22031
|
-
}
|
22247
|
+
},
|
22248
|
+
weekdayFormat: String
|
22032
22249
|
}, 'calendar');
|
22033
22250
|
function useCalendar(props) {
|
22034
22251
|
const adapter = useDate();
|
@@ -22269,7 +22486,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22269
22486
|
"ref": daysRef,
|
22270
22487
|
"key": daysInMonth.value[0].date?.toString(),
|
22271
22488
|
"class": "v-date-picker-month__days"
|
22272
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22489
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createElementVNode("div", {
|
22273
22490
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22274
22491
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22275
22492
|
const slotProps = {
|
@@ -24859,6 +25076,10 @@ const makeVNumberInputProps = propsFactory({
|
|
24859
25076
|
type: Number,
|
24860
25077
|
default: 0
|
24861
25078
|
},
|
25079
|
+
minFractionDigits: {
|
25080
|
+
type: Number,
|
25081
|
+
default: null
|
25082
|
+
},
|
24862
25083
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24863
25084
|
}, 'VNumberInput');
|
24864
25085
|
const VNumberInput = genericComponent()({
|
@@ -24889,9 +25110,19 @@ const VNumberInput = genericComponent()({
|
|
24889
25110
|
} = useFocus(props);
|
24890
25111
|
function correctPrecision(val) {
|
24891
25112
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24892
|
-
|
24893
|
-
|
24894
|
-
|
25113
|
+
if (precision == null) {
|
25114
|
+
return String(val);
|
25115
|
+
}
|
25116
|
+
let fixed = val.toFixed(precision);
|
25117
|
+
if (isFocused.value) {
|
25118
|
+
return Number(fixed).toString(); // trim zeros
|
25119
|
+
}
|
25120
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
25121
|
+
const trimLimit = precision - props.minFractionDigits;
|
25122
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
25123
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25124
|
+
}
|
25125
|
+
return fixed;
|
24895
25126
|
}
|
24896
25127
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24897
25128
|
const _inputText = shallowRef(null);
|
@@ -24946,6 +25177,7 @@ const VNumberInput = genericComponent()({
|
|
24946
25177
|
}
|
24947
25178
|
};
|
24948
25179
|
watch(() => props.precision, () => formatInputValue());
|
25180
|
+
watch(() => props.minFractionDigits, () => formatInputValue());
|
24949
25181
|
onMounted(() => {
|
24950
25182
|
clampModel();
|
24951
25183
|
});
|
@@ -25060,7 +25292,7 @@ const VNumberInput = genericComponent()({
|
|
25060
25292
|
inputText.value = null;
|
25061
25293
|
return;
|
25062
25294
|
}
|
25063
|
-
inputText.value =
|
25295
|
+
inputText.value = correctPrecision(model.value);
|
25064
25296
|
}
|
25065
25297
|
function trimDecimalZeros() {
|
25066
25298
|
if (controlsDisabled.value) return;
|
@@ -25320,9 +25552,10 @@ const VOtpInput = genericComponent()({
|
|
25320
25552
|
e.preventDefault();
|
25321
25553
|
e.stopPropagation();
|
25322
25554
|
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25555
|
+
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25323
25556
|
if (isValidNumber(clipboardText)) return;
|
25324
25557
|
model.value = clipboardText.split('');
|
25325
|
-
inputRef.value?.[
|
25558
|
+
inputRef.value?.[finalIndex].focus();
|
25326
25559
|
}
|
25327
25560
|
function reset() {
|
25328
25561
|
model.value = [];
|
@@ -30025,11 +30258,6 @@ const makeVIconBtnProps = propsFactory({
|
|
30025
30258
|
hideOverlay: Boolean,
|
30026
30259
|
icon: [String, Function, Object],
|
30027
30260
|
iconColor: String,
|
30028
|
-
iconSize: [Number, String],
|
30029
|
-
iconSizes: {
|
30030
|
-
type: Array,
|
30031
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30032
|
-
},
|
30033
30261
|
loading: Boolean,
|
30034
30262
|
opacity: [Number, String],
|
30035
30263
|
readonly: Boolean,
|
@@ -30049,6 +30277,7 @@ const makeVIconBtnProps = propsFactory({
|
|
30049
30277
|
...makeBorderProps(),
|
30050
30278
|
...makeComponentProps(),
|
30051
30279
|
...makeElevationProps(),
|
30280
|
+
...makeIconSizeProps(),
|
30052
30281
|
...makeRoundedProps(),
|
30053
30282
|
...makeTagProps({
|
30054
30283
|
tag: 'button'
|
@@ -30103,7 +30332,6 @@ const VIconBtn = genericComponent()({
|
|
30103
30332
|
})()
|
30104
30333
|
}));
|
30105
30334
|
const btnSizeMap = new Map(props.sizes);
|
30106
|
-
const iconSizeMap = new Map(props.iconSizes);
|
30107
30335
|
function onClick() {
|
30108
30336
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30109
30337
|
isActive.value = !isActive.value;
|
@@ -30115,12 +30343,12 @@ const VIconBtn = genericComponent()({
|
|
30115
30343
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30116
30344
|
const btnHeight = props.height ?? btnSize;
|
30117
30345
|
const btnWidth = props.width ?? btnSize;
|
30118
|
-
const
|
30119
|
-
|
30120
|
-
|
30346
|
+
const {
|
30347
|
+
iconSize
|
30348
|
+
} = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
|
30121
30349
|
const iconProps = {
|
30122
30350
|
icon,
|
30123
|
-
size: iconSize,
|
30351
|
+
size: iconSize.value,
|
30124
30352
|
iconColor: props.iconColor,
|
30125
30353
|
opacity: props.opacity
|
30126
30354
|
};
|
@@ -30163,7 +30391,7 @@ const VIconBtn = genericComponent()({
|
|
30163
30391
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30164
30392
|
"indeterminate": "disable-shrink",
|
30165
30393
|
"width": "2",
|
30166
|
-
"size": iconSize
|
30394
|
+
"size": iconSize.value
|
30167
30395
|
}, null)])]
|
30168
30396
|
});
|
30169
30397
|
});
|
@@ -32073,7 +32301,7 @@ function createVuetify$1() {
|
|
32073
32301
|
};
|
32074
32302
|
});
|
32075
32303
|
}
|
32076
|
-
const version$1 = "3.8.
|
32304
|
+
const version$1 = "3.8.8-dev.2025-06-04";
|
32077
32305
|
createVuetify$1.version = version$1;
|
32078
32306
|
|
32079
32307
|
// Vue's inject() can only be used in setup
|
@@ -32371,7 +32599,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
32371
32599
|
|
32372
32600
|
/* eslint-disable local-rules/sort-imports */
|
32373
32601
|
|
32374
|
-
const version = "3.8.
|
32602
|
+
const version = "3.8.8-dev.2025-06-04";
|
32375
32603
|
|
32376
32604
|
/* eslint-disable local-rules/sort-imports */
|
32377
32605
|
|