@vuetify/nightly 3.8.5-pr-21419.3ae3440 → 3.8.6-dev.2025-05-21
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 +21 -10
- package/dist/json/attributes.json +3457 -3421
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +174 -174
- package/dist/json/tags.json +9 -0
- package/dist/json/web-types.json +6421 -6246
- package/dist/vuetify-labs.cjs +296 -156
- package/dist/vuetify-labs.css +5588 -5549
- package/dist/vuetify-labs.d.ts +1512 -1354
- package/dist/vuetify-labs.esm.js +297 -157
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +296 -156
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +290 -145
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4006 -3967
- package/dist/vuetify.d.ts +671 -521
- package/dist/vuetify.esm.js +291 -146
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +290 -145
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1196 -1189
- 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 +14 -9
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +7 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +120 -96
- package/lib/components/VAutocomplete/VAutocomplete.js +18 -1
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- 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/VCheckbox/VCheckbox.d.ts +3 -3
- package/lib/components/VCombobox/VCombobox.d.ts +120 -96
- package/lib/components/VCombobox/VCombobox.js +19 -1
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- 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/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/VListChildren.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.css +15 -4
- 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/VNumberInput/VNumberInput.sass +18 -6
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +3 -3
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +120 -96
- package/lib/components/VSelect/VSelect.js +19 -34
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSwitch/VSwitch.d.ts +3 -3
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- 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 +1 -1
- package/lib/composables/date/DateAdapter.js.map +1 -1
- 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 +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/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/entry-bundler.d.ts +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +76 -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/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/entry-bundler.d.ts +1 -1
- package/lib/util/globals.d.ts +1 -0
- package/lib/util/globals.js +1 -0
- package/lib/util/globals.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.6-dev.2025-05-21
|
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, camelize, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, isRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
|
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, camelize, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, isRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, 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"); }
|
@@ -2295,6 +2296,7 @@ const makeThemeProps = propsFactory({
|
|
2295
2296
|
function genDefaults$2() {
|
2296
2297
|
return {
|
2297
2298
|
defaultTheme: 'light',
|
2299
|
+
prefix: 'v-',
|
2298
2300
|
variations: {
|
2299
2301
|
colors: [],
|
2300
2302
|
lighten: 0,
|
@@ -2376,7 +2378,10 @@ function genDefaults$2() {
|
|
2376
2378
|
}
|
2377
2379
|
}
|
2378
2380
|
},
|
2379
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2381
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
2382
|
+
scoped: false,
|
2383
|
+
unimportant: false,
|
2384
|
+
utilities: true
|
2380
2385
|
};
|
2381
2386
|
}
|
2382
2387
|
function parseThemeOptions() {
|
@@ -2399,21 +2404,21 @@ function parseThemeOptions() {
|
|
2399
2404
|
function createCssClass(lines, selector, content, scope) {
|
2400
2405
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2401
2406
|
}
|
2402
|
-
function genCssVariables(theme) {
|
2407
|
+
function genCssVariables(theme, prefix) {
|
2403
2408
|
const lightOverlay = theme.dark ? 2 : 1;
|
2404
2409
|
const darkOverlay = theme.dark ? 1 : 2;
|
2405
2410
|
const variables = [];
|
2406
2411
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2407
2412
|
const rgb = parseColor(value);
|
2408
|
-
variables.push(
|
2413
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2409
2414
|
if (!key.startsWith('on-')) {
|
2410
|
-
variables.push(
|
2415
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2411
2416
|
}
|
2412
2417
|
}
|
2413
2418
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2414
2419
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2415
2420
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2416
|
-
variables.push(
|
2421
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
2417
2422
|
}
|
2418
2423
|
return variables;
|
2419
2424
|
}
|
@@ -2457,7 +2462,8 @@ function getScopedSelector(selector, scope) {
|
|
2457
2462
|
const scopeSelector = `:where(${scope})`;
|
2458
2463
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2459
2464
|
}
|
2460
|
-
function upsertStyles(
|
2465
|
+
function upsertStyles(id, cspNonce, styles) {
|
2466
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2461
2467
|
if (!styleEl) return;
|
2462
2468
|
styleEl.innerHTML = styles;
|
2463
2469
|
}
|
@@ -2477,8 +2483,17 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2477
2483
|
// Composables
|
2478
2484
|
function createTheme(options) {
|
2479
2485
|
const parsedOptions = parseThemeOptions(options);
|
2480
|
-
const
|
2486
|
+
const _name = shallowRef(parsedOptions.defaultTheme);
|
2481
2487
|
const themes = ref(parsedOptions.themes);
|
2488
|
+
const systemName = shallowRef('light');
|
2489
|
+
const name = computed({
|
2490
|
+
get() {
|
2491
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
2492
|
+
},
|
2493
|
+
set(val) {
|
2494
|
+
_name.value = val;
|
2495
|
+
}
|
2496
|
+
});
|
2482
2497
|
const computedThemes = computed(() => {
|
2483
2498
|
const acc = {};
|
2484
2499
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2499,28 +2514,49 @@ function createTheme(options) {
|
|
2499
2514
|
const current = toRef(() => computedThemes.value[name.value]);
|
2500
2515
|
const styles = computed(() => {
|
2501
2516
|
const lines = [];
|
2517
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
2518
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2502
2519
|
if (current.value?.dark) {
|
2503
2520
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2504
2521
|
}
|
2505
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2522
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
2506
2523
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2507
|
-
createCssClass(lines,
|
2508
|
-
}
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2516
|
-
|
2517
|
-
|
2518
|
-
|
2524
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
2525
|
+
}
|
2526
|
+
if (parsedOptions.utilities) {
|
2527
|
+
const bgLines = [];
|
2528
|
+
const fgLines = [];
|
2529
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2530
|
+
for (const key of colors) {
|
2531
|
+
if (key.startsWith('on-')) {
|
2532
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2533
|
+
} else {
|
2534
|
+
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);
|
2535
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
2536
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2537
|
+
}
|
2519
2538
|
}
|
2539
|
+
lines.push(...bgLines, ...fgLines);
|
2520
2540
|
}
|
2521
|
-
lines.push(...bgLines, ...fgLines);
|
2522
2541
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2523
2542
|
});
|
2543
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2544
|
+
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
2545
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
2546
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2547
|
+
function updateSystemName() {
|
2548
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
2549
|
+
}
|
2550
|
+
updateSystemName();
|
2551
|
+
media.addEventListener('change', updateSystemName, {
|
2552
|
+
passive: true
|
2553
|
+
});
|
2554
|
+
if (getCurrentScope()) {
|
2555
|
+
onScopeDispose(() => {
|
2556
|
+
media.removeEventListener('change', updateSystemName);
|
2557
|
+
});
|
2558
|
+
}
|
2559
|
+
}
|
2524
2560
|
function install(app) {
|
2525
2561
|
if (parsedOptions.isDisabled) return;
|
2526
2562
|
const head = app._context.provides.usehead;
|
@@ -2558,22 +2594,55 @@ function createTheme(options) {
|
|
2558
2594
|
updateStyles();
|
2559
2595
|
}
|
2560
2596
|
function updateStyles() {
|
2561
|
-
upsertStyles(
|
2597
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2562
2598
|
}
|
2563
2599
|
}
|
2564
2600
|
}
|
2565
|
-
|
2601
|
+
function change(themeName) {
|
2602
|
+
if (!themeNames.value.includes(themeName)) {
|
2603
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2604
|
+
return;
|
2605
|
+
}
|
2606
|
+
name.value = themeName;
|
2607
|
+
}
|
2608
|
+
function cycle() {
|
2609
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2610
|
+
const currentIndex = themeArray.indexOf(name.value);
|
2611
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2612
|
+
change(themeArray[nextIndex]);
|
2613
|
+
}
|
2614
|
+
function toggle() {
|
2615
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2616
|
+
cycle(themeArray);
|
2617
|
+
}
|
2618
|
+
const globalName = new Proxy(name, {
|
2619
|
+
get(target, prop) {
|
2620
|
+
return target[prop];
|
2621
|
+
},
|
2622
|
+
set(target, prop, val) {
|
2623
|
+
if (prop === 'value') {
|
2624
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2625
|
+
}
|
2626
|
+
// @ts-expect-error
|
2627
|
+
target[prop] = val;
|
2628
|
+
return true;
|
2629
|
+
}
|
2630
|
+
});
|
2566
2631
|
return {
|
2567
2632
|
install,
|
2633
|
+
change,
|
2634
|
+
cycle,
|
2635
|
+
toggle,
|
2568
2636
|
isDisabled: parsedOptions.isDisabled,
|
2569
2637
|
name,
|
2570
2638
|
themes,
|
2571
2639
|
current,
|
2572
2640
|
computedThemes,
|
2641
|
+
prefix: parsedOptions.prefix,
|
2573
2642
|
themeClasses,
|
2574
2643
|
styles,
|
2575
2644
|
global: {
|
2576
|
-
name,
|
2645
|
+
name: globalName,
|
2577
2646
|
current
|
2578
2647
|
}
|
2579
2648
|
};
|
@@ -2584,7 +2653,7 @@ function provideTheme(props) {
|
|
2584
2653
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2585
2654
|
const name = toRef(() => props.theme ?? theme.name.value);
|
2586
2655
|
const current = toRef(() => theme.themes.value[name.value]);
|
2587
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
2656
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
2588
2657
|
const newTheme = {
|
2589
2658
|
...theme,
|
2590
2659
|
name,
|
@@ -4131,9 +4200,15 @@ function useVariant(props) {
|
|
4131
4200
|
};
|
4132
4201
|
}
|
4133
4202
|
|
4203
|
+
// Types
|
4204
|
+
|
4134
4205
|
const makeVBtnGroupProps = propsFactory({
|
4135
4206
|
baseColor: String,
|
4136
4207
|
divided: Boolean,
|
4208
|
+
direction: {
|
4209
|
+
type: String,
|
4210
|
+
default: 'horizontal'
|
4211
|
+
},
|
4137
4212
|
...makeBorderProps(),
|
4138
4213
|
...makeComponentProps(),
|
4139
4214
|
...makeDensityProps(),
|
@@ -4167,7 +4242,7 @@ const VBtnGroup = genericComponent()({
|
|
4167
4242
|
} = useRounded(props);
|
4168
4243
|
provideDefaults({
|
4169
4244
|
VBtn: {
|
4170
|
-
height: 'auto',
|
4245
|
+
height: toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
4171
4246
|
baseColor: toRef(() => props.baseColor),
|
4172
4247
|
color: toRef(() => props.color),
|
4173
4248
|
density: toRef(() => props.density),
|
@@ -4177,7 +4252,7 @@ const VBtnGroup = genericComponent()({
|
|
4177
4252
|
});
|
4178
4253
|
useRender(() => {
|
4179
4254
|
return createVNode(props.tag, {
|
4180
|
-
"class": ['v-btn-group', {
|
4255
|
+
"class": ['v-btn-group', `v-btn-group--${props.direction}`, {
|
4181
4256
|
'v-btn-group--divided': props.divided
|
4182
4257
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
4183
4258
|
"style": props.style
|
@@ -5865,6 +5940,31 @@ const VAppBarTitle = genericComponent()({
|
|
5865
5940
|
// Utilities
|
5866
5941
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5867
5942
|
|
5943
|
+
// Utilities
|
5944
|
+
|
5945
|
+
// Types
|
5946
|
+
|
5947
|
+
// Types
|
5948
|
+
|
5949
|
+
// Composables
|
5950
|
+
const makeIconSizeProps = propsFactory({
|
5951
|
+
iconSize: [Number, String],
|
5952
|
+
iconSizes: {
|
5953
|
+
type: Array,
|
5954
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
5955
|
+
}
|
5956
|
+
}, 'iconSize');
|
5957
|
+
function useIconSizes(props, fallback) {
|
5958
|
+
const iconSize = computed(() => {
|
5959
|
+
const iconSizeMap = new Map(props.iconSizes);
|
5960
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
5961
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
5962
|
+
});
|
5963
|
+
return {
|
5964
|
+
iconSize
|
5965
|
+
};
|
5966
|
+
}
|
5967
|
+
|
5868
5968
|
// Types
|
5869
5969
|
|
5870
5970
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -5904,6 +6004,7 @@ const makeVAlertProps = propsFactory({
|
|
5904
6004
|
...makeDensityProps(),
|
5905
6005
|
...makeDimensionProps(),
|
5906
6006
|
...makeElevationProps(),
|
6007
|
+
...makeIconSizeProps(),
|
5907
6008
|
...makeLocationProps(),
|
5908
6009
|
...makePositionProps(),
|
5909
6010
|
...makeRoundedProps(),
|
@@ -5931,6 +6032,9 @@ const VAlert = genericComponent()({
|
|
5931
6032
|
if (!props.type) return props.icon;
|
5932
6033
|
return props.icon ?? `$${props.type}`;
|
5933
6034
|
});
|
6035
|
+
const {
|
6036
|
+
iconSize
|
6037
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
5934
6038
|
const {
|
5935
6039
|
themeClasses
|
5936
6040
|
} = provideTheme(props);
|
@@ -5978,6 +6082,11 @@ const VAlert = genericComponent()({
|
|
5978
6082
|
const hasPrepend = !!(slots.prepend || icon.value);
|
5979
6083
|
const hasTitle = !!(slots.title || props.title);
|
5980
6084
|
const hasClose = !!(slots.close || props.closable);
|
6085
|
+
const iconProps = {
|
6086
|
+
density: props.density,
|
6087
|
+
icon: icon.value,
|
6088
|
+
size: iconSize.value
|
6089
|
+
};
|
5981
6090
|
return isActive.value && createVNode(props.tag, {
|
5982
6091
|
"class": ['v-alert', props.border && {
|
5983
6092
|
'v-alert--border': !!props.border,
|
@@ -5995,19 +6104,14 @@ const VAlert = genericComponent()({
|
|
5995
6104
|
}, null), hasPrepend && createVNode("div", {
|
5996
6105
|
"key": "prepend",
|
5997
6106
|
"class": "v-alert__prepend"
|
5998
|
-
}, [!slots.prepend ? createVNode(VIcon, {
|
5999
|
-
"key": "prepend-icon"
|
6000
|
-
|
6001
|
-
"icon": icon.value,
|
6002
|
-
"size": props.prominent ? 44 : 28
|
6003
|
-
}, null) : createVNode(VDefaultsProvider, {
|
6107
|
+
}, [!slots.prepend ? createVNode(VIcon, mergeProps({
|
6108
|
+
"key": "prepend-icon"
|
6109
|
+
}, iconProps), null) : createVNode(VDefaultsProvider, {
|
6004
6110
|
"key": "prepend-defaults",
|
6005
6111
|
"disabled": !icon.value,
|
6006
6112
|
"defaults": {
|
6007
6113
|
VIcon: {
|
6008
|
-
|
6009
|
-
icon: icon.value,
|
6010
|
-
size: props.prominent ? 44 : 28
|
6114
|
+
...iconProps
|
6011
6115
|
}
|
6012
6116
|
}
|
6013
6117
|
}, slots.prepend)]), createVNode("div", {
|
@@ -8205,6 +8309,68 @@ const VChip = genericComponent()({
|
|
8205
8309
|
}
|
8206
8310
|
});
|
8207
8311
|
|
8312
|
+
const makeVDividerProps = propsFactory({
|
8313
|
+
color: String,
|
8314
|
+
inset: Boolean,
|
8315
|
+
length: [Number, String],
|
8316
|
+
opacity: [Number, String],
|
8317
|
+
thickness: [Number, String],
|
8318
|
+
vertical: Boolean,
|
8319
|
+
...makeComponentProps(),
|
8320
|
+
...makeThemeProps()
|
8321
|
+
}, 'VDivider');
|
8322
|
+
const VDivider = genericComponent()({
|
8323
|
+
name: 'VDivider',
|
8324
|
+
props: makeVDividerProps(),
|
8325
|
+
setup(props, _ref) {
|
8326
|
+
let {
|
8327
|
+
attrs,
|
8328
|
+
slots
|
8329
|
+
} = _ref;
|
8330
|
+
const {
|
8331
|
+
themeClasses
|
8332
|
+
} = provideTheme(props);
|
8333
|
+
const {
|
8334
|
+
textColorClasses,
|
8335
|
+
textColorStyles
|
8336
|
+
} = useTextColor(() => props.color);
|
8337
|
+
const dividerStyles = computed(() => {
|
8338
|
+
const styles = {};
|
8339
|
+
if (props.length) {
|
8340
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8341
|
+
}
|
8342
|
+
if (props.thickness) {
|
8343
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8344
|
+
}
|
8345
|
+
return styles;
|
8346
|
+
});
|
8347
|
+
useRender(() => {
|
8348
|
+
const divider = createVNode("hr", {
|
8349
|
+
"class": [{
|
8350
|
+
'v-divider': true,
|
8351
|
+
'v-divider--inset': props.inset,
|
8352
|
+
'v-divider--vertical': props.vertical
|
8353
|
+
}, themeClasses.value, textColorClasses.value, props.class],
|
8354
|
+
"style": [dividerStyles.value, textColorStyles.value, {
|
8355
|
+
'--v-border-opacity': props.opacity
|
8356
|
+
}, props.style],
|
8357
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8358
|
+
"role": `${attrs.role || 'separator'}`
|
8359
|
+
}, null);
|
8360
|
+
if (!slots.default) return divider;
|
8361
|
+
return createVNode("div", {
|
8362
|
+
"class": ['v-divider__wrapper', {
|
8363
|
+
'v-divider__wrapper--vertical': props.vertical,
|
8364
|
+
'v-divider__wrapper--inset': props.inset
|
8365
|
+
}]
|
8366
|
+
}, [divider, createVNode("div", {
|
8367
|
+
"class": "v-divider__content"
|
8368
|
+
}, [slots.default()]), divider]);
|
8369
|
+
});
|
8370
|
+
return {};
|
8371
|
+
}
|
8372
|
+
});
|
8373
|
+
|
8208
8374
|
// Utilities
|
8209
8375
|
|
8210
8376
|
// List
|
@@ -9356,68 +9522,6 @@ const VListSubheader = genericComponent()({
|
|
9356
9522
|
}
|
9357
9523
|
});
|
9358
9524
|
|
9359
|
-
const makeVDividerProps = propsFactory({
|
9360
|
-
color: String,
|
9361
|
-
inset: Boolean,
|
9362
|
-
length: [Number, String],
|
9363
|
-
opacity: [Number, String],
|
9364
|
-
thickness: [Number, String],
|
9365
|
-
vertical: Boolean,
|
9366
|
-
...makeComponentProps(),
|
9367
|
-
...makeThemeProps()
|
9368
|
-
}, 'VDivider');
|
9369
|
-
const VDivider = genericComponent()({
|
9370
|
-
name: 'VDivider',
|
9371
|
-
props: makeVDividerProps(),
|
9372
|
-
setup(props, _ref) {
|
9373
|
-
let {
|
9374
|
-
attrs,
|
9375
|
-
slots
|
9376
|
-
} = _ref;
|
9377
|
-
const {
|
9378
|
-
themeClasses
|
9379
|
-
} = provideTheme(props);
|
9380
|
-
const {
|
9381
|
-
textColorClasses,
|
9382
|
-
textColorStyles
|
9383
|
-
} = useTextColor(() => props.color);
|
9384
|
-
const dividerStyles = computed(() => {
|
9385
|
-
const styles = {};
|
9386
|
-
if (props.length) {
|
9387
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9388
|
-
}
|
9389
|
-
if (props.thickness) {
|
9390
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9391
|
-
}
|
9392
|
-
return styles;
|
9393
|
-
});
|
9394
|
-
useRender(() => {
|
9395
|
-
const divider = createVNode("hr", {
|
9396
|
-
"class": [{
|
9397
|
-
'v-divider': true,
|
9398
|
-
'v-divider--inset': props.inset,
|
9399
|
-
'v-divider--vertical': props.vertical
|
9400
|
-
}, themeClasses.value, textColorClasses.value, props.class],
|
9401
|
-
"style": [dividerStyles.value, textColorStyles.value, {
|
9402
|
-
'--v-border-opacity': props.opacity
|
9403
|
-
}, props.style],
|
9404
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9405
|
-
"role": `${attrs.role || 'separator'}`
|
9406
|
-
}, null);
|
9407
|
-
if (!slots.default) return divider;
|
9408
|
-
return createVNode("div", {
|
9409
|
-
"class": ['v-divider__wrapper', {
|
9410
|
-
'v-divider__wrapper--vertical': props.vertical,
|
9411
|
-
'v-divider__wrapper--inset': props.inset
|
9412
|
-
}]
|
9413
|
-
}, [divider, createVNode("div", {
|
9414
|
-
"class": "v-divider__content"
|
9415
|
-
}, [slots.default()]), divider]);
|
9416
|
-
});
|
9417
|
-
return {};
|
9418
|
-
}
|
9419
|
-
});
|
9420
|
-
|
9421
9525
|
// Types
|
9422
9526
|
|
9423
9527
|
const makeVListChildrenProps = propsFactory({
|
@@ -12335,7 +12439,12 @@ function useVirtual(props, items) {
|
|
12335
12439
|
}
|
12336
12440
|
function calculateOffset(index) {
|
12337
12441
|
index = clamp(index, 0, items.value.length - 1);
|
12338
|
-
|
12442
|
+
const whole = Math.floor(index);
|
12443
|
+
const fraction = index % 1;
|
12444
|
+
const next = whole + 1;
|
12445
|
+
const wholeOffset = offsets[whole] || 0;
|
12446
|
+
const nextOffset = offsets[next] || wholeOffset;
|
12447
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12339
12448
|
}
|
12340
12449
|
function calculateIndex(scrollTop) {
|
12341
12450
|
return binaryClosest(offsets, scrollTop);
|
@@ -12739,7 +12848,6 @@ const VSelect = genericComponent()({
|
|
12739
12848
|
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
12740
12849
|
const isFocused = shallowRef(false);
|
12741
12850
|
let keyboardLookupPrefix = '';
|
12742
|
-
let keyboardLookupIndex = -1;
|
12743
12851
|
let keyboardLookupLastTime;
|
12744
12852
|
const displayItems = computed(() => {
|
12745
12853
|
if (props.hideSelected) {
|
@@ -12807,41 +12915,10 @@ const VSelect = genericComponent()({
|
|
12807
12915
|
const now = performance.now();
|
12808
12916
|
if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
|
12809
12917
|
keyboardLookupPrefix = '';
|
12810
|
-
keyboardLookupIndex = -1;
|
12811
12918
|
}
|
12812
12919
|
keyboardLookupPrefix += e.key.toLowerCase();
|
12813
12920
|
keyboardLookupLastTime = now;
|
12814
|
-
const
|
12815
|
-
function findItem() {
|
12816
|
-
let result = findItemBase();
|
12817
|
-
if (result !== undefined) return result;
|
12818
|
-
if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
|
12819
|
-
// No matches but we have a repeated letter, try the next item with that prefix
|
12820
|
-
keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
|
12821
|
-
result = findItemBase();
|
12822
|
-
if (result !== undefined) return result;
|
12823
|
-
}
|
12824
|
-
|
12825
|
-
// Still nothing, wrap around to the top
|
12826
|
-
keyboardLookupIndex = -1;
|
12827
|
-
result = findItemBase();
|
12828
|
-
if (result !== undefined) return result;
|
12829
|
-
|
12830
|
-
// Still nothing, try just the new letter
|
12831
|
-
keyboardLookupPrefix = e.key.toLowerCase();
|
12832
|
-
return findItemBase();
|
12833
|
-
}
|
12834
|
-
function findItemBase() {
|
12835
|
-
for (let i = 0; i < items.length; i++) {
|
12836
|
-
const _item = items[i];
|
12837
|
-
if (i > keyboardLookupIndex && _item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
|
12838
|
-
keyboardLookupIndex = i;
|
12839
|
-
return _item;
|
12840
|
-
}
|
12841
|
-
}
|
12842
|
-
return undefined;
|
12843
|
-
}
|
12844
|
-
const item = findItem();
|
12921
|
+
const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
|
12845
12922
|
if (item !== undefined) {
|
12846
12923
|
if (!props.multiple) {
|
12847
12924
|
model.value = [item];
|
@@ -12998,6 +13075,22 @@ const VSelect = genericComponent()({
|
|
12998
13075
|
key: item.value,
|
12999
13076
|
onClick: () => select(item, null)
|
13000
13077
|
});
|
13078
|
+
if (item.raw.type === 'divider') {
|
13079
|
+
return slots.divider?.({
|
13080
|
+
props: item.raw,
|
13081
|
+
index
|
13082
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13083
|
+
"key": `divider-${index}`
|
13084
|
+
}), null);
|
13085
|
+
}
|
13086
|
+
if (item.raw.type === 'subheader') {
|
13087
|
+
return slots.subheader?.({
|
13088
|
+
props: item.raw,
|
13089
|
+
index
|
13090
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13091
|
+
"key": `subheader-${index}`
|
13092
|
+
}), null);
|
13093
|
+
}
|
13001
13094
|
return slots.item?.({
|
13002
13095
|
item,
|
13003
13096
|
index,
|
@@ -13158,6 +13251,9 @@ function filterItems(items, query, options) {
|
|
13158
13251
|
let match = -1;
|
13159
13252
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13160
13253
|
if (typeof item === 'object') {
|
13254
|
+
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13255
|
+
continue;
|
13256
|
+
}
|
13161
13257
|
const filterKeys = keys || Object.keys(transformed);
|
13162
13258
|
for (const key of filterKeys) {
|
13163
13259
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13596,6 +13692,22 @@ const VAutocomplete = genericComponent()({
|
|
13596
13692
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13597
13693
|
onClick: () => select(item, null)
|
13598
13694
|
});
|
13695
|
+
if (item.raw.type === 'divider') {
|
13696
|
+
return slots.divider?.({
|
13697
|
+
props: item.raw,
|
13698
|
+
index
|
13699
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13700
|
+
"key": `divider-${index}`
|
13701
|
+
}), null);
|
13702
|
+
}
|
13703
|
+
if (item.raw.type === 'subheader') {
|
13704
|
+
return slots.subheader?.({
|
13705
|
+
props: item.raw,
|
13706
|
+
index
|
13707
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13708
|
+
"key": `subheader-${index}`
|
13709
|
+
}), null);
|
13710
|
+
}
|
13599
13711
|
return slots.item?.({
|
13600
13712
|
item,
|
13601
13713
|
index,
|
@@ -17191,13 +17303,13 @@ function date(value) {
|
|
17191
17303
|
return null;
|
17192
17304
|
}
|
17193
17305
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17194
|
-
function getWeekdays(locale, firstDayOfWeek) {
|
17306
|
+
function getWeekdays(locale, firstDayOfWeek, weekdayFormat) {
|
17195
17307
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17196
17308
|
return createRange(7).map(i => {
|
17197
17309
|
const weekday = new Date(sundayJanuarySecond2000);
|
17198
17310
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17199
17311
|
return new Intl.DateTimeFormat(locale, {
|
17200
|
-
weekday: 'narrow'
|
17312
|
+
weekday: weekdayFormat ?? 'narrow'
|
17201
17313
|
}).format(weekday);
|
17202
17314
|
});
|
17203
17315
|
}
|
@@ -17661,9 +17773,9 @@ class VuetifyDateAdapter {
|
|
17661
17773
|
getDiff(date, comparing, unit) {
|
17662
17774
|
return getDiff(date, comparing, unit);
|
17663
17775
|
}
|
17664
|
-
getWeekdays(firstDayOfWeek) {
|
17776
|
+
getWeekdays(firstDayOfWeek, weekdayFormat) {
|
17665
17777
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17666
|
-
return getWeekdays(this.locale, firstDay);
|
17778
|
+
return getWeekdays(this.locale, firstDay, weekdayFormat);
|
17667
17779
|
}
|
17668
17780
|
getYear(date) {
|
17669
17781
|
return getYear(date);
|
@@ -18006,6 +18118,7 @@ const VCombobox = genericComponent()({
|
|
18006
18118
|
_search.value = val ?? '';
|
18007
18119
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18008
18120
|
model.value = [transformItem$3(props, val)];
|
18121
|
+
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18009
18122
|
}
|
18010
18123
|
if (val && props.multiple && props.delimiters?.length) {
|
18011
18124
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18322,6 +18435,22 @@ const VCombobox = genericComponent()({
|
|
18322
18435
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18323
18436
|
onClick: () => select(item, null)
|
18324
18437
|
});
|
18438
|
+
if (item.raw.type === 'divider') {
|
18439
|
+
return slots.divider?.({
|
18440
|
+
props: item.raw,
|
18441
|
+
index
|
18442
|
+
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18443
|
+
"key": `divider-${index}`
|
18444
|
+
}), null);
|
18445
|
+
}
|
18446
|
+
if (item.raw.type === 'subheader') {
|
18447
|
+
return slots.subheader?.({
|
18448
|
+
props: item.raw,
|
18449
|
+
index
|
18450
|
+
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18451
|
+
"key": `subheader-${index}`
|
18452
|
+
}), null);
|
18453
|
+
}
|
18325
18454
|
return slots.item?.({
|
18326
18455
|
item,
|
18327
18456
|
index,
|
@@ -21965,7 +22094,8 @@ const makeCalendarProps = propsFactory({
|
|
21965
22094
|
firstDayOfWeek: {
|
21966
22095
|
type: [Number, String],
|
21967
22096
|
default: undefined
|
21968
|
-
}
|
22097
|
+
},
|
22098
|
+
weekdayFormat: String
|
21969
22099
|
}, 'calendar');
|
21970
22100
|
function useCalendar(props) {
|
21971
22101
|
const adapter = useDate();
|
@@ -22213,7 +22343,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22213
22343
|
"ref": daysRef,
|
22214
22344
|
"key": daysInMonth.value[0].date?.toString(),
|
22215
22345
|
"class": "v-date-picker-month__days"
|
22216
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createVNode("div", {
|
22346
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).map(weekDay => createVNode("div", {
|
22217
22347
|
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
22218
22348
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22219
22349
|
const slotProps = {
|
@@ -24744,6 +24874,10 @@ const makeVNumberInputProps = propsFactory({
|
|
24744
24874
|
type: Number,
|
24745
24875
|
default: 0
|
24746
24876
|
},
|
24877
|
+
minFractionDigits: {
|
24878
|
+
type: Number,
|
24879
|
+
default: null
|
24880
|
+
},
|
24747
24881
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24748
24882
|
}, 'VNumberInput');
|
24749
24883
|
const VNumberInput = genericComponent()({
|
@@ -24774,9 +24908,19 @@ const VNumberInput = genericComponent()({
|
|
24774
24908
|
} = useFocus(props);
|
24775
24909
|
function correctPrecision(val) {
|
24776
24910
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24777
|
-
|
24778
|
-
|
24779
|
-
|
24911
|
+
if (precision == null) {
|
24912
|
+
return String(val);
|
24913
|
+
}
|
24914
|
+
let fixed = val.toFixed(precision);
|
24915
|
+
if (isFocused.value) {
|
24916
|
+
return Number(fixed).toString(); // trim zeros
|
24917
|
+
}
|
24918
|
+
if ((props.minFractionDigits ?? precision) < precision) {
|
24919
|
+
const trimLimit = precision - props.minFractionDigits;
|
24920
|
+
const [baseDigits, fractionDigits] = fixed.split('.');
|
24921
|
+
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
24922
|
+
}
|
24923
|
+
return fixed;
|
24780
24924
|
}
|
24781
24925
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24782
24926
|
const _inputText = shallowRef(null);
|
@@ -24829,6 +24973,7 @@ const VNumberInput = genericComponent()({
|
|
24829
24973
|
}
|
24830
24974
|
};
|
24831
24975
|
watch(() => props.precision, () => formatInputValue());
|
24976
|
+
watch(() => props.minFractionDigits, () => formatInputValue());
|
24832
24977
|
onMounted(() => {
|
24833
24978
|
clampModel();
|
24834
24979
|
});
|
@@ -24930,7 +25075,7 @@ const VNumberInput = genericComponent()({
|
|
24930
25075
|
inputText.value = null;
|
24931
25076
|
return;
|
24932
25077
|
}
|
24933
|
-
inputText.value =
|
25078
|
+
inputText.value = correctPrecision(model.value);
|
24934
25079
|
}
|
24935
25080
|
function trimDecimalZeros() {
|
24936
25081
|
if (controlsDisabled.value) return;
|
@@ -29897,11 +30042,6 @@ const makeVIconBtnProps = propsFactory({
|
|
29897
30042
|
hideOverlay: Boolean,
|
29898
30043
|
icon: [String, Function, Object],
|
29899
30044
|
iconColor: String,
|
29900
|
-
iconSize: [Number, String],
|
29901
|
-
iconSizes: {
|
29902
|
-
type: Array,
|
29903
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
29904
|
-
},
|
29905
30045
|
loading: Boolean,
|
29906
30046
|
opacity: [Number, String],
|
29907
30047
|
readonly: Boolean,
|
@@ -29921,6 +30061,7 @@ const makeVIconBtnProps = propsFactory({
|
|
29921
30061
|
...makeBorderProps(),
|
29922
30062
|
...makeComponentProps(),
|
29923
30063
|
...makeElevationProps(),
|
30064
|
+
...makeIconSizeProps(),
|
29924
30065
|
...makeRoundedProps(),
|
29925
30066
|
...makeTagProps({
|
29926
30067
|
tag: 'button'
|
@@ -29975,7 +30116,6 @@ const VIconBtn = genericComponent()({
|
|
29975
30116
|
})()
|
29976
30117
|
}));
|
29977
30118
|
const btnSizeMap = new Map(props.sizes);
|
29978
|
-
const iconSizeMap = new Map(props.iconSizes);
|
29979
30119
|
function onClick() {
|
29980
30120
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
29981
30121
|
isActive.value = !isActive.value;
|
@@ -29987,12 +30127,12 @@ const VIconBtn = genericComponent()({
|
|
29987
30127
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
29988
30128
|
const btnHeight = props.height ?? btnSize;
|
29989
30129
|
const btnWidth = props.width ?? btnSize;
|
29990
|
-
const
|
29991
|
-
|
29992
|
-
|
30130
|
+
const {
|
30131
|
+
iconSize
|
30132
|
+
} = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
|
29993
30133
|
const iconProps = {
|
29994
30134
|
icon,
|
29995
|
-
size: iconSize,
|
30135
|
+
size: iconSize.value,
|
29996
30136
|
iconColor: props.iconColor,
|
29997
30137
|
opacity: props.opacity
|
29998
30138
|
};
|
@@ -30035,7 +30175,7 @@ const VIconBtn = genericComponent()({
|
|
30035
30175
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30036
30176
|
"indeterminate": "disable-shrink",
|
30037
30177
|
"width": "2",
|
30038
|
-
"size": iconSize
|
30178
|
+
"size": iconSize.value
|
30039
30179
|
}, null)])]
|
30040
30180
|
});
|
30041
30181
|
});
|
@@ -31945,7 +32085,7 @@ function createVuetify$1() {
|
|
31945
32085
|
};
|
31946
32086
|
});
|
31947
32087
|
}
|
31948
|
-
const version$1 = "3.8.
|
32088
|
+
const version$1 = "3.8.6-dev.2025-05-21";
|
31949
32089
|
createVuetify$1.version = version$1;
|
31950
32090
|
|
31951
32091
|
// Vue's inject() can only be used in setup
|
@@ -32243,7 +32383,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
32243
32383
|
|
32244
32384
|
/* eslint-disable local-rules/sort-imports */
|
32245
32385
|
|
32246
|
-
const version = "3.8.
|
32386
|
+
const version = "3.8.6-dev.2025-05-21";
|
32247
32387
|
|
32248
32388
|
/* eslint-disable local-rules/sort-imports */
|
32249
32389
|
|