@vuetify/nightly 3.8.6-dev.2025-05-21 → 3.8.6-master.2025-05-22
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 +10 -21
- package/dist/json/attributes.json +3598 -3634
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +184 -184
- package/dist/json/tags.json +0 -9
- package/dist/json/web-types.json +6522 -6697
- package/dist/vuetify-labs.cjs +223 -323
- package/dist/vuetify-labs.css +4050 -4078
- package/dist/vuetify-labs.d.ts +1350 -1508
- package/dist/vuetify-labs.esm.js +224 -324
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +223 -323
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +212 -317
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3022 -3050
- package/dist/vuetify.d.ts +517 -667
- package/dist/vuetify.esm.js +213 -318
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +212 -317
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1195 -1200
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +1 -6
- package/lib/components/VAlert/VAlert.d.ts +0 -35
- package/lib/components/VAlert/VAlert.js +9 -14
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +1 -7
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +96 -120
- package/lib/components/VAutocomplete/VAutocomplete.js +1 -18
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.css +7 -30
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +32 -58
- package/lib/components/VBtnGroup/VBtnGroup.js +3 -7
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +17 -44
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +0 -25
- package/lib/components/VCheckbox/VCheckbox.d.ts +3 -3
- package/lib/components/VCombobox/VCombobox.d.ts +96 -120
- package/lib/components/VCombobox/VCombobox.js +1 -19
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +0 -10
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +0 -10
- 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/VNavigationDrawer/touch.js +2 -4
- package/lib/components/VNavigationDrawer/touch.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +89 -103
- package/lib/components/VNumberInput/VNumberInput.js +22 -29
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/locationStrategies.js +16 -8
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.js +2 -2
- package/lib/components/VProgressCircular/VProgressCircular.js.map +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 +96 -120
- package/lib/components/VSelect/VSelect.js +37 -25
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSlider/slider.js +1 -1
- package/lib/components/VSlider/slider.js.map +1 -1
- 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 +0 -6
- package/lib/composables/calendar.js +1 -2
- 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 +0 -1
- package/lib/composables/date/index.js +0 -1
- package/lib/composables/date/index.js.map +1 -1
- package/lib/composables/filter.js +0 -3
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/goto.js +1 -1
- package/lib/composables/goto.js.map +1 -1
- package/lib/composables/theme.d.ts +1 -6
- package/lib/composables/theme.js +26 -94
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/virtual.js +1 -6
- 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 +67 -72
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +0 -10
- package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +87 -97
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
- package/lib/labs/VIconBtn/VIconBtn.js +11 -7
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/entry-bundler.d.ts +1 -1
- package/lib/util/box.d.ts +1 -0
- package/lib/util/box.js +27 -0
- package/lib/util/box.js.map +1 -1
- package/lib/util/globals.d.ts +0 -1
- package/lib/util/globals.js +0 -1
- package/lib/util/globals.js.map +1 -1
- package/package.json +5 -7
- package/lib/composables/iconSizes.d.ts +0 -28
- package/lib/composables/iconSizes.js +0 -23
- package/lib/composables/iconSizes.js.map +0 -1
package/dist/vuetify-labs.esm.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.6-
|
2
|
+
* Vuetify v3.8.6-master.2025-05-22
|
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,
|
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';
|
8
8
|
|
9
9
|
// Types
|
10
10
|
// eslint-disable-line vue/prefer-import-from-vue
|
@@ -81,7 +81,6 @@ 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';
|
85
84
|
|
86
85
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
87
86
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -692,6 +691,33 @@ function getTargetBox(target) {
|
|
692
691
|
return target.getBoundingClientRect();
|
693
692
|
}
|
694
693
|
}
|
694
|
+
function getElementBox(el) {
|
695
|
+
if (el === document.documentElement) {
|
696
|
+
if (!visualViewport) {
|
697
|
+
return new Box({
|
698
|
+
x: 0,
|
699
|
+
y: 0,
|
700
|
+
width: document.documentElement.clientWidth,
|
701
|
+
height: document.documentElement.clientHeight
|
702
|
+
});
|
703
|
+
} else {
|
704
|
+
return new Box({
|
705
|
+
x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
|
706
|
+
y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
|
707
|
+
width: visualViewport.width * visualViewport.scale,
|
708
|
+
height: visualViewport.height * visualViewport.scale
|
709
|
+
});
|
710
|
+
}
|
711
|
+
} else {
|
712
|
+
const rect = el.getBoundingClientRect();
|
713
|
+
return new Box({
|
714
|
+
x: rect.x,
|
715
|
+
y: rect.y,
|
716
|
+
width: el.clientWidth,
|
717
|
+
height: el.clientHeight
|
718
|
+
});
|
719
|
+
}
|
720
|
+
}
|
695
721
|
|
696
722
|
// Utilities
|
697
723
|
|
@@ -2296,7 +2322,6 @@ const makeThemeProps = propsFactory({
|
|
2296
2322
|
function genDefaults$2() {
|
2297
2323
|
return {
|
2298
2324
|
defaultTheme: 'light',
|
2299
|
-
prefix: 'v-',
|
2300
2325
|
variations: {
|
2301
2326
|
colors: [],
|
2302
2327
|
lighten: 0,
|
@@ -2378,10 +2403,7 @@ function genDefaults$2() {
|
|
2378
2403
|
}
|
2379
2404
|
}
|
2380
2405
|
},
|
2381
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2382
|
-
scoped: false,
|
2383
|
-
unimportant: false,
|
2384
|
-
utilities: true
|
2406
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2385
2407
|
};
|
2386
2408
|
}
|
2387
2409
|
function parseThemeOptions() {
|
@@ -2404,21 +2426,21 @@ function parseThemeOptions() {
|
|
2404
2426
|
function createCssClass(lines, selector, content, scope) {
|
2405
2427
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2406
2428
|
}
|
2407
|
-
function genCssVariables(theme
|
2429
|
+
function genCssVariables(theme) {
|
2408
2430
|
const lightOverlay = theme.dark ? 2 : 1;
|
2409
2431
|
const darkOverlay = theme.dark ? 1 : 2;
|
2410
2432
|
const variables = [];
|
2411
2433
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2412
2434
|
const rgb = parseColor(value);
|
2413
|
-
variables.push(
|
2435
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2414
2436
|
if (!key.startsWith('on-')) {
|
2415
|
-
variables.push(
|
2437
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2416
2438
|
}
|
2417
2439
|
}
|
2418
2440
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2419
2441
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2420
2442
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2421
|
-
variables.push(
|
2443
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2422
2444
|
}
|
2423
2445
|
return variables;
|
2424
2446
|
}
|
@@ -2462,8 +2484,7 @@ function getScopedSelector(selector, scope) {
|
|
2462
2484
|
const scopeSelector = `:where(${scope})`;
|
2463
2485
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2464
2486
|
}
|
2465
|
-
function upsertStyles(
|
2466
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2487
|
+
function upsertStyles(styleEl, styles) {
|
2467
2488
|
if (!styleEl) return;
|
2468
2489
|
styleEl.innerHTML = styles;
|
2469
2490
|
}
|
@@ -2483,17 +2504,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2483
2504
|
// Composables
|
2484
2505
|
function createTheme(options) {
|
2485
2506
|
const parsedOptions = parseThemeOptions(options);
|
2486
|
-
const
|
2507
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
2487
2508
|
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
|
-
});
|
2497
2509
|
const computedThemes = computed(() => {
|
2498
2510
|
const acc = {};
|
2499
2511
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2514,49 +2526,28 @@ function createTheme(options) {
|
|
2514
2526
|
const current = toRef(() => computedThemes.value[name.value]);
|
2515
2527
|
const styles = computed(() => {
|
2516
2528
|
const lines = [];
|
2517
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
2518
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2519
2529
|
if (current.value?.dark) {
|
2520
2530
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2521
2531
|
}
|
2522
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
2532
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2523
2533
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2524
|
-
createCssClass(lines,
|
2525
|
-
}
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
}
|
2534
|
-
|
2535
|
-
|
2536
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2537
|
-
}
|
2534
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
2535
|
+
}
|
2536
|
+
const bgLines = [];
|
2537
|
+
const fgLines = [];
|
2538
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2539
|
+
for (const key of colors) {
|
2540
|
+
if (key.startsWith('on-')) {
|
2541
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2542
|
+
} else {
|
2543
|
+
createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`], parsedOptions.scope);
|
2544
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2545
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
2538
2546
|
}
|
2539
|
-
lines.push(...bgLines, ...fgLines);
|
2540
2547
|
}
|
2548
|
+
lines.push(...bgLines, ...fgLines);
|
2541
2549
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2542
2550
|
});
|
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
|
-
}
|
2560
2551
|
function install(app) {
|
2561
2552
|
if (parsedOptions.isDisabled) return;
|
2562
2553
|
const head = app._context.provides.usehead;
|
@@ -2594,55 +2585,22 @@ function createTheme(options) {
|
|
2594
2585
|
updateStyles();
|
2595
2586
|
}
|
2596
2587
|
function updateStyles() {
|
2597
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2588
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
2598
2589
|
}
|
2599
2590
|
}
|
2600
2591
|
}
|
2601
|
-
|
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
|
-
});
|
2592
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
2631
2593
|
return {
|
2632
2594
|
install,
|
2633
|
-
change,
|
2634
|
-
cycle,
|
2635
|
-
toggle,
|
2636
2595
|
isDisabled: parsedOptions.isDisabled,
|
2637
2596
|
name,
|
2638
2597
|
themes,
|
2639
2598
|
current,
|
2640
2599
|
computedThemes,
|
2641
|
-
prefix: parsedOptions.prefix,
|
2642
2600
|
themeClasses,
|
2643
2601
|
styles,
|
2644
2602
|
global: {
|
2645
|
-
name
|
2603
|
+
name,
|
2646
2604
|
current
|
2647
2605
|
}
|
2648
2606
|
};
|
@@ -2653,7 +2611,7 @@ function provideTheme(props) {
|
|
2653
2611
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2654
2612
|
const name = toRef(() => props.theme ?? theme.name.value);
|
2655
2613
|
const current = toRef(() => theme.themes.value[name.value]);
|
2656
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
2614
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
2657
2615
|
const newTheme = {
|
2658
2616
|
...theme,
|
2659
2617
|
name,
|
@@ -4200,15 +4158,9 @@ function useVariant(props) {
|
|
4200
4158
|
};
|
4201
4159
|
}
|
4202
4160
|
|
4203
|
-
// Types
|
4204
|
-
|
4205
4161
|
const makeVBtnGroupProps = propsFactory({
|
4206
4162
|
baseColor: String,
|
4207
4163
|
divided: Boolean,
|
4208
|
-
direction: {
|
4209
|
-
type: String,
|
4210
|
-
default: 'horizontal'
|
4211
|
-
},
|
4212
4164
|
...makeBorderProps(),
|
4213
4165
|
...makeComponentProps(),
|
4214
4166
|
...makeDensityProps(),
|
@@ -4242,7 +4194,7 @@ const VBtnGroup = genericComponent()({
|
|
4242
4194
|
} = useRounded(props);
|
4243
4195
|
provideDefaults({
|
4244
4196
|
VBtn: {
|
4245
|
-
height:
|
4197
|
+
height: 'auto',
|
4246
4198
|
baseColor: toRef(() => props.baseColor),
|
4247
4199
|
color: toRef(() => props.color),
|
4248
4200
|
density: toRef(() => props.density),
|
@@ -4252,7 +4204,7 @@ const VBtnGroup = genericComponent()({
|
|
4252
4204
|
});
|
4253
4205
|
useRender(() => {
|
4254
4206
|
return createVNode(props.tag, {
|
4255
|
-
"class": ['v-btn-group',
|
4207
|
+
"class": ['v-btn-group', {
|
4256
4208
|
'v-btn-group--divided': props.divided
|
4257
4209
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
4258
4210
|
"style": props.style
|
@@ -4930,7 +4882,7 @@ const VProgressCircular = genericComponent()({
|
|
4930
4882
|
resizeRef,
|
4931
4883
|
contentRect
|
4932
4884
|
} = useResizeObserver();
|
4933
|
-
const normalizedValue = toRef(() =>
|
4885
|
+
const normalizedValue = toRef(() => clamp(parseFloat(props.modelValue), 0, 100));
|
4934
4886
|
const width = toRef(() => Number(props.width));
|
4935
4887
|
const size = toRef(() => {
|
4936
4888
|
// Get size from element if size prop value is small, large etc
|
@@ -5940,31 +5892,6 @@ const VAppBarTitle = genericComponent()({
|
|
5940
5892
|
// Utilities
|
5941
5893
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5942
5894
|
|
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
|
-
|
5968
5895
|
// Types
|
5969
5896
|
|
5970
5897
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6004,7 +5931,6 @@ const makeVAlertProps = propsFactory({
|
|
6004
5931
|
...makeDensityProps(),
|
6005
5932
|
...makeDimensionProps(),
|
6006
5933
|
...makeElevationProps(),
|
6007
|
-
...makeIconSizeProps(),
|
6008
5934
|
...makeLocationProps(),
|
6009
5935
|
...makePositionProps(),
|
6010
5936
|
...makeRoundedProps(),
|
@@ -6032,9 +5958,6 @@ const VAlert = genericComponent()({
|
|
6032
5958
|
if (!props.type) return props.icon;
|
6033
5959
|
return props.icon ?? `$${props.type}`;
|
6034
5960
|
});
|
6035
|
-
const {
|
6036
|
-
iconSize
|
6037
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6038
5961
|
const {
|
6039
5962
|
themeClasses
|
6040
5963
|
} = provideTheme(props);
|
@@ -6082,11 +6005,6 @@ const VAlert = genericComponent()({
|
|
6082
6005
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6083
6006
|
const hasTitle = !!(slots.title || props.title);
|
6084
6007
|
const hasClose = !!(slots.close || props.closable);
|
6085
|
-
const iconProps = {
|
6086
|
-
density: props.density,
|
6087
|
-
icon: icon.value,
|
6088
|
-
size: iconSize.value
|
6089
|
-
};
|
6090
6008
|
return isActive.value && createVNode(props.tag, {
|
6091
6009
|
"class": ['v-alert', props.border && {
|
6092
6010
|
'v-alert--border': !!props.border,
|
@@ -6104,14 +6022,19 @@ const VAlert = genericComponent()({
|
|
6104
6022
|
}, null), hasPrepend && createVNode("div", {
|
6105
6023
|
"key": "prepend",
|
6106
6024
|
"class": "v-alert__prepend"
|
6107
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6108
|
-
"key": "prepend-icon"
|
6109
|
-
|
6025
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6026
|
+
"key": "prepend-icon",
|
6027
|
+
"density": props.density,
|
6028
|
+
"icon": icon.value,
|
6029
|
+
"size": props.prominent ? 44 : 28
|
6030
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6110
6031
|
"key": "prepend-defaults",
|
6111
6032
|
"disabled": !icon.value,
|
6112
6033
|
"defaults": {
|
6113
6034
|
VIcon: {
|
6114
|
-
|
6035
|
+
density: props.density,
|
6036
|
+
icon: icon.value,
|
6037
|
+
size: props.prominent ? 44 : 28
|
6115
6038
|
}
|
6116
6039
|
}
|
6117
6040
|
}, slots.prepend)]), createVNode("div", {
|
@@ -7566,7 +7489,7 @@ function clampTarget(container, value, rtl, horizontal) {
|
|
7566
7489
|
min = 0;
|
7567
7490
|
max = scrollHeight + -containerHeight;
|
7568
7491
|
}
|
7569
|
-
return
|
7492
|
+
return clamp(value, min, max);
|
7570
7493
|
}
|
7571
7494
|
|
7572
7495
|
function calculateUpdatedTarget(_ref) {
|
@@ -8309,68 +8232,6 @@ const VChip = genericComponent()({
|
|
8309
8232
|
}
|
8310
8233
|
});
|
8311
8234
|
|
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
|
-
|
8374
8235
|
// Utilities
|
8375
8236
|
|
8376
8237
|
// List
|
@@ -9522,6 +9383,68 @@ const VListSubheader = genericComponent()({
|
|
9522
9383
|
}
|
9523
9384
|
});
|
9524
9385
|
|
9386
|
+
const makeVDividerProps = propsFactory({
|
9387
|
+
color: String,
|
9388
|
+
inset: Boolean,
|
9389
|
+
length: [Number, String],
|
9390
|
+
opacity: [Number, String],
|
9391
|
+
thickness: [Number, String],
|
9392
|
+
vertical: Boolean,
|
9393
|
+
...makeComponentProps(),
|
9394
|
+
...makeThemeProps()
|
9395
|
+
}, 'VDivider');
|
9396
|
+
const VDivider = genericComponent()({
|
9397
|
+
name: 'VDivider',
|
9398
|
+
props: makeVDividerProps(),
|
9399
|
+
setup(props, _ref) {
|
9400
|
+
let {
|
9401
|
+
attrs,
|
9402
|
+
slots
|
9403
|
+
} = _ref;
|
9404
|
+
const {
|
9405
|
+
themeClasses
|
9406
|
+
} = provideTheme(props);
|
9407
|
+
const {
|
9408
|
+
textColorClasses,
|
9409
|
+
textColorStyles
|
9410
|
+
} = useTextColor(() => props.color);
|
9411
|
+
const dividerStyles = computed(() => {
|
9412
|
+
const styles = {};
|
9413
|
+
if (props.length) {
|
9414
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9415
|
+
}
|
9416
|
+
if (props.thickness) {
|
9417
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9418
|
+
}
|
9419
|
+
return styles;
|
9420
|
+
});
|
9421
|
+
useRender(() => {
|
9422
|
+
const divider = createVNode("hr", {
|
9423
|
+
"class": [{
|
9424
|
+
'v-divider': true,
|
9425
|
+
'v-divider--inset': props.inset,
|
9426
|
+
'v-divider--vertical': props.vertical
|
9427
|
+
}, themeClasses.value, textColorClasses.value, props.class],
|
9428
|
+
"style": [dividerStyles.value, textColorStyles.value, {
|
9429
|
+
'--v-border-opacity': props.opacity
|
9430
|
+
}, props.style],
|
9431
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9432
|
+
"role": `${attrs.role || 'separator'}`
|
9433
|
+
}, null);
|
9434
|
+
if (!slots.default) return divider;
|
9435
|
+
return createVNode("div", {
|
9436
|
+
"class": ['v-divider__wrapper', {
|
9437
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9438
|
+
'v-divider__wrapper--inset': props.inset
|
9439
|
+
}]
|
9440
|
+
}, [divider, createVNode("div", {
|
9441
|
+
"class": "v-divider__content"
|
9442
|
+
}, [slots.default()]), divider]);
|
9443
|
+
});
|
9444
|
+
return {};
|
9445
|
+
}
|
9446
|
+
});
|
9447
|
+
|
9525
9448
|
// Types
|
9526
9449
|
|
9527
9450
|
const makeVListChildrenProps = propsFactory({
|
@@ -10100,11 +10023,19 @@ function useLocationStrategies(props, data) {
|
|
10100
10023
|
watch(() => props.locationStrategy, reset);
|
10101
10024
|
onScopeDispose(() => {
|
10102
10025
|
window.removeEventListener('resize', onResize);
|
10026
|
+
visualViewport?.removeEventListener('resize', onVisualResize);
|
10027
|
+
visualViewport?.removeEventListener('scroll', onVisualScroll);
|
10103
10028
|
updateLocation.value = undefined;
|
10104
10029
|
});
|
10105
10030
|
window.addEventListener('resize', onResize, {
|
10106
10031
|
passive: true
|
10107
10032
|
});
|
10033
|
+
visualViewport?.addEventListener('resize', onVisualResize, {
|
10034
|
+
passive: true
|
10035
|
+
});
|
10036
|
+
visualViewport?.addEventListener('scroll', onVisualScroll, {
|
10037
|
+
passive: true
|
10038
|
+
});
|
10108
10039
|
if (typeof props.locationStrategy === 'function') {
|
10109
10040
|
updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation;
|
10110
10041
|
} else {
|
@@ -10115,6 +10046,12 @@ function useLocationStrategies(props, data) {
|
|
10115
10046
|
function onResize(e) {
|
10116
10047
|
updateLocation.value?.(e);
|
10117
10048
|
}
|
10049
|
+
function onVisualResize(e) {
|
10050
|
+
updateLocation.value?.(e);
|
10051
|
+
}
|
10052
|
+
function onVisualScroll(e) {
|
10053
|
+
updateLocation.value?.(e);
|
10054
|
+
}
|
10118
10055
|
return {
|
10119
10056
|
contentStyles,
|
10120
10057
|
updateLocation
|
@@ -10266,13 +10203,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
10266
10203
|
}
|
10267
10204
|
}
|
10268
10205
|
const viewport = scrollParents.reduce((box, el) => {
|
10269
|
-
const
|
10270
|
-
const scrollBox = new Box({
|
10271
|
-
x: el === document.documentElement ? 0 : rect.x,
|
10272
|
-
y: el === document.documentElement ? 0 : rect.y,
|
10273
|
-
width: el.clientWidth,
|
10274
|
-
height: el.clientHeight
|
10275
|
-
});
|
10206
|
+
const scrollBox = getElementBox(el);
|
10276
10207
|
if (box) {
|
10277
10208
|
return new Box({
|
10278
10209
|
x: Math.max(box.left, scrollBox.left),
|
@@ -12439,12 +12370,7 @@ function useVirtual(props, items) {
|
|
12439
12370
|
}
|
12440
12371
|
function calculateOffset(index) {
|
12441
12372
|
index = clamp(index, 0, items.value.length - 1);
|
12442
|
-
|
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;
|
12373
|
+
return offsets[index] || 0;
|
12448
12374
|
}
|
12449
12375
|
function calculateIndex(scrollTop) {
|
12450
12376
|
return binaryClosest(offsets, scrollTop);
|
@@ -12848,6 +12774,7 @@ const VSelect = genericComponent()({
|
|
12848
12774
|
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
12849
12775
|
const isFocused = shallowRef(false);
|
12850
12776
|
let keyboardLookupPrefix = '';
|
12777
|
+
let keyboardLookupIndex = -1;
|
12851
12778
|
let keyboardLookupLastTime;
|
12852
12779
|
const displayItems = computed(() => {
|
12853
12780
|
if (props.hideSelected) {
|
@@ -12915,18 +12842,46 @@ const VSelect = genericComponent()({
|
|
12915
12842
|
const now = performance.now();
|
12916
12843
|
if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
|
12917
12844
|
keyboardLookupPrefix = '';
|
12845
|
+
keyboardLookupIndex = -1;
|
12918
12846
|
}
|
12919
12847
|
keyboardLookupPrefix += e.key.toLowerCase();
|
12920
12848
|
keyboardLookupLastTime = now;
|
12921
|
-
const
|
12922
|
-
|
12923
|
-
|
12924
|
-
|
12849
|
+
const items = displayItems.value;
|
12850
|
+
function findItem() {
|
12851
|
+
let result = findItemBase();
|
12852
|
+
if (result) return result;
|
12853
|
+
if (keyboardLookupPrefix.at(-1) === keyboardLookupPrefix.at(-2)) {
|
12854
|
+
// No matches but we have a repeated letter, try the next item with that prefix
|
12855
|
+
keyboardLookupPrefix = keyboardLookupPrefix.slice(0, -1);
|
12856
|
+
result = findItemBase();
|
12857
|
+
if (result) return result;
|
12925
12858
|
}
|
12926
|
-
|
12927
|
-
|
12928
|
-
|
12859
|
+
|
12860
|
+
// Still nothing, wrap around to the top
|
12861
|
+
keyboardLookupIndex = -1;
|
12862
|
+
result = findItemBase();
|
12863
|
+
if (result) return result;
|
12864
|
+
|
12865
|
+
// Still nothing, try just the new letter
|
12866
|
+
keyboardLookupPrefix = e.key.toLowerCase();
|
12867
|
+
return findItemBase();
|
12868
|
+
}
|
12869
|
+
function findItemBase() {
|
12870
|
+
for (let i = keyboardLookupIndex + 1; i < items.length; i++) {
|
12871
|
+
const _item = items[i];
|
12872
|
+
if (_item.title.toLowerCase().startsWith(keyboardLookupPrefix)) {
|
12873
|
+
return [_item, i];
|
12874
|
+
}
|
12929
12875
|
}
|
12876
|
+
return undefined;
|
12877
|
+
}
|
12878
|
+
const result = findItem();
|
12879
|
+
if (!result) return;
|
12880
|
+
const [item, index] = result;
|
12881
|
+
keyboardLookupIndex = index;
|
12882
|
+
listRef.value?.focus(index);
|
12883
|
+
if (!props.multiple) {
|
12884
|
+
model.value = [item];
|
12930
12885
|
}
|
12931
12886
|
}
|
12932
12887
|
|
@@ -13075,22 +13030,6 @@ const VSelect = genericComponent()({
|
|
13075
13030
|
key: item.value,
|
13076
13031
|
onClick: () => select(item, null)
|
13077
13032
|
});
|
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
|
-
}
|
13094
13033
|
return slots.item?.({
|
13095
13034
|
item,
|
13096
13035
|
index,
|
@@ -13251,9 +13190,6 @@ function filterItems(items, query, options) {
|
|
13251
13190
|
let match = -1;
|
13252
13191
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13253
13192
|
if (typeof item === 'object') {
|
13254
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13255
|
-
continue;
|
13256
|
-
}
|
13257
13193
|
const filterKeys = keys || Object.keys(transformed);
|
13258
13194
|
for (const key of filterKeys) {
|
13259
13195
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13692,22 +13628,6 @@ const VAutocomplete = genericComponent()({
|
|
13692
13628
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13693
13629
|
onClick: () => select(item, null)
|
13694
13630
|
});
|
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
|
-
}
|
13711
13631
|
return slots.item?.({
|
13712
13632
|
item,
|
13713
13633
|
index,
|
@@ -16005,7 +15925,7 @@ const useSlider = _ref => {
|
|
16005
15925
|
const clickOffset = getPosition(e, position);
|
16006
15926
|
|
16007
15927
|
// It is possible for left to be NaN, force to number
|
16008
|
-
let clickPos =
|
15928
|
+
let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0;
|
16009
15929
|
if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
|
16010
15930
|
return roundValue(min.value + clickPos * (max.value - min.value));
|
16011
15931
|
}
|
@@ -17303,13 +17223,13 @@ function date(value) {
|
|
17303
17223
|
return null;
|
17304
17224
|
}
|
17305
17225
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17306
|
-
function getWeekdays(locale, firstDayOfWeek
|
17226
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17307
17227
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17308
17228
|
return createRange(7).map(i => {
|
17309
17229
|
const weekday = new Date(sundayJanuarySecond2000);
|
17310
17230
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17311
17231
|
return new Intl.DateTimeFormat(locale, {
|
17312
|
-
weekday:
|
17232
|
+
weekday: 'narrow'
|
17313
17233
|
}).format(weekday);
|
17314
17234
|
});
|
17315
17235
|
}
|
@@ -17773,9 +17693,9 @@ class VuetifyDateAdapter {
|
|
17773
17693
|
getDiff(date, comparing, unit) {
|
17774
17694
|
return getDiff(date, comparing, unit);
|
17775
17695
|
}
|
17776
|
-
getWeekdays(firstDayOfWeek
|
17696
|
+
getWeekdays(firstDayOfWeek) {
|
17777
17697
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17778
|
-
return getWeekdays(this.locale, firstDay
|
17698
|
+
return getWeekdays(this.locale, firstDay);
|
17779
17699
|
}
|
17780
17700
|
getYear(date) {
|
17781
17701
|
return getYear(date);
|
@@ -18118,7 +18038,6 @@ const VCombobox = genericComponent()({
|
|
18118
18038
|
_search.value = val ?? '';
|
18119
18039
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18120
18040
|
model.value = [transformItem$3(props, val)];
|
18121
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18122
18041
|
}
|
18123
18042
|
if (val && props.multiple && props.delimiters?.length) {
|
18124
18043
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18435,22 +18354,6 @@ const VCombobox = genericComponent()({
|
|
18435
18354
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18436
18355
|
onClick: () => select(item, null)
|
18437
18356
|
});
|
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
|
-
}
|
18454
18357
|
return slots.item?.({
|
18455
18358
|
item,
|
18456
18359
|
index,
|
@@ -22094,8 +21997,7 @@ const makeCalendarProps = propsFactory({
|
|
22094
21997
|
firstDayOfWeek: {
|
22095
21998
|
type: [Number, String],
|
22096
21999
|
default: undefined
|
22097
|
-
}
|
22098
|
-
weekdayFormat: String
|
22000
|
+
}
|
22099
22001
|
}, 'calendar');
|
22100
22002
|
function useCalendar(props) {
|
22101
22003
|
const adapter = useDate();
|
@@ -22343,7 +22245,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22343
22245
|
"ref": daysRef,
|
22344
22246
|
"key": daysInMonth.value[0].date?.toString(),
|
22345
22247
|
"class": "v-date-picker-month__days"
|
22346
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22248
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createVNode("div", {
|
22347
22249
|
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
22348
22250
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22349
22251
|
const slotProps = {
|
@@ -24461,7 +24363,7 @@ function useTouch(_ref) {
|
|
24461
24363
|
function getProgress(pos) {
|
24462
24364
|
let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
24463
24365
|
const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();
|
24464
|
-
return limit ?
|
24366
|
+
return limit ? clamp(progress) : progress;
|
24465
24367
|
}
|
24466
24368
|
function onTouchstart(e) {
|
24467
24369
|
if (touchless.value) return;
|
@@ -24874,10 +24776,6 @@ const makeVNumberInputProps = propsFactory({
|
|
24874
24776
|
type: Number,
|
24875
24777
|
default: 0
|
24876
24778
|
},
|
24877
|
-
minFractionDigits: {
|
24878
|
-
type: Number,
|
24879
|
-
default: null
|
24880
|
-
},
|
24881
24779
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24882
24780
|
}, 'VNumberInput');
|
24883
24781
|
const VNumberInput = genericComponent()({
|
@@ -24908,19 +24806,9 @@ const VNumberInput = genericComponent()({
|
|
24908
24806
|
} = useFocus(props);
|
24909
24807
|
function correctPrecision(val) {
|
24910
24808
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24911
|
-
|
24912
|
-
|
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;
|
24809
|
+
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
24810
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
24811
|
+
: fixed;
|
24924
24812
|
}
|
24925
24813
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
24926
24814
|
const _inputText = shallowRef(null);
|
@@ -24960,6 +24848,9 @@ const VNumberInput = genericComponent()({
|
|
24960
24848
|
const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
24961
24849
|
const incrementSlotProps = {
|
24962
24850
|
props: {
|
24851
|
+
style: {
|
24852
|
+
touchAction: 'none'
|
24853
|
+
},
|
24963
24854
|
onClick: onControlClick,
|
24964
24855
|
onPointerup: onControlMouseup,
|
24965
24856
|
onPointerdown: onUpControlMousedown
|
@@ -24967,13 +24858,15 @@ const VNumberInput = genericComponent()({
|
|
24967
24858
|
};
|
24968
24859
|
const decrementSlotProps = {
|
24969
24860
|
props: {
|
24861
|
+
style: {
|
24862
|
+
touchAction: 'none'
|
24863
|
+
},
|
24970
24864
|
onClick: onControlClick,
|
24971
24865
|
onPointerup: onControlMouseup,
|
24972
24866
|
onPointerdown: onDownControlMousedown
|
24973
24867
|
}
|
24974
24868
|
};
|
24975
24869
|
watch(() => props.precision, () => formatInputValue());
|
24976
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
24977
24870
|
onMounted(() => {
|
24978
24871
|
clampModel();
|
24979
24872
|
});
|
@@ -25075,7 +24968,7 @@ const VNumberInput = genericComponent()({
|
|
25075
24968
|
inputText.value = null;
|
25076
24969
|
return;
|
25077
24970
|
}
|
25078
|
-
inputText.value =
|
24971
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25079
24972
|
}
|
25080
24973
|
function trimDecimalZeros() {
|
25081
24974
|
if (controlsDisabled.value) return;
|
@@ -25100,17 +24993,18 @@ const VNumberInput = genericComponent()({
|
|
25100
24993
|
} = VTextField.filterProps(props);
|
25101
24994
|
function incrementControlNode() {
|
25102
24995
|
return !slots.increment ? createVNode(VBtn, {
|
24996
|
+
"aria-hidden": "true",
|
24997
|
+
"data-testid": "increment",
|
25103
24998
|
"disabled": !canIncrease.value,
|
25104
24999
|
"flat": true,
|
25105
|
-
"key": "increment-btn",
|
25106
25000
|
"height": controlNodeDefaultHeight.value,
|
25107
|
-
"data-testid": "increment",
|
25108
|
-
"aria-hidden": "true",
|
25109
25001
|
"icon": incrementIcon.value,
|
25002
|
+
"key": "increment-btn",
|
25110
25003
|
"onClick": onControlClick,
|
25111
|
-
"onPointerup": onControlMouseup,
|
25112
25004
|
"onPointerdown": onUpControlMousedown,
|
25005
|
+
"onPointerup": onControlMouseup,
|
25113
25006
|
"size": controlNodeSize.value,
|
25007
|
+
"style": "touch-action: none",
|
25114
25008
|
"tabindex": "-1"
|
25115
25009
|
}, null) : createVNode(VDefaultsProvider, {
|
25116
25010
|
"key": "increment-defaults",
|
@@ -25129,18 +25023,19 @@ const VNumberInput = genericComponent()({
|
|
25129
25023
|
}
|
25130
25024
|
function decrementControlNode() {
|
25131
25025
|
return !slots.decrement ? createVNode(VBtn, {
|
25026
|
+
"aria-hidden": "true",
|
25027
|
+
"data-testid": "decrement",
|
25132
25028
|
"disabled": !canDecrease.value,
|
25133
25029
|
"flat": true,
|
25134
|
-
"key": "decrement-btn",
|
25135
25030
|
"height": controlNodeDefaultHeight.value,
|
25136
|
-
"data-testid": "decrement",
|
25137
|
-
"aria-hidden": "true",
|
25138
25031
|
"icon": decrementIcon.value,
|
25139
|
-
"
|
25140
|
-
"tabindex": "-1",
|
25032
|
+
"key": "decrement-btn",
|
25141
25033
|
"onClick": onControlClick,
|
25034
|
+
"onPointerdown": onDownControlMousedown,
|
25142
25035
|
"onPointerup": onControlMouseup,
|
25143
|
-
"
|
25036
|
+
"size": controlNodeSize.value,
|
25037
|
+
"style": "touch-action: none",
|
25038
|
+
"tabindex": "-1"
|
25144
25039
|
}, null) : createVNode(VDefaultsProvider, {
|
25145
25040
|
"key": "decrement-defaults",
|
25146
25041
|
"defaults": {
|
@@ -30042,6 +29937,11 @@ const makeVIconBtnProps = propsFactory({
|
|
30042
29937
|
hideOverlay: Boolean,
|
30043
29938
|
icon: [String, Function, Object],
|
30044
29939
|
iconColor: String,
|
29940
|
+
iconSize: [Number, String],
|
29941
|
+
iconSizes: {
|
29942
|
+
type: Array,
|
29943
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
29944
|
+
},
|
30045
29945
|
loading: Boolean,
|
30046
29946
|
opacity: [Number, String],
|
30047
29947
|
readonly: Boolean,
|
@@ -30061,7 +29961,6 @@ const makeVIconBtnProps = propsFactory({
|
|
30061
29961
|
...makeBorderProps(),
|
30062
29962
|
...makeComponentProps(),
|
30063
29963
|
...makeElevationProps(),
|
30064
|
-
...makeIconSizeProps(),
|
30065
29964
|
...makeRoundedProps(),
|
30066
29965
|
...makeTagProps({
|
30067
29966
|
tag: 'button'
|
@@ -30116,6 +30015,7 @@ const VIconBtn = genericComponent()({
|
|
30116
30015
|
})()
|
30117
30016
|
}));
|
30118
30017
|
const btnSizeMap = new Map(props.sizes);
|
30018
|
+
const iconSizeMap = new Map(props.iconSizes);
|
30119
30019
|
function onClick() {
|
30120
30020
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30121
30021
|
isActive.value = !isActive.value;
|
@@ -30127,12 +30027,12 @@ const VIconBtn = genericComponent()({
|
|
30127
30027
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30128
30028
|
const btnHeight = props.height ?? btnSize;
|
30129
30029
|
const btnWidth = props.width ?? btnSize;
|
30130
|
-
const
|
30131
|
-
|
30132
|
-
|
30030
|
+
const _iconSize = props.iconSize;
|
30031
|
+
const hasNamedIconSize = iconSizeMap.has(_iconSize);
|
30032
|
+
const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
|
30133
30033
|
const iconProps = {
|
30134
30034
|
icon,
|
30135
|
-
size: iconSize
|
30035
|
+
size: iconSize,
|
30136
30036
|
iconColor: props.iconColor,
|
30137
30037
|
opacity: props.opacity
|
30138
30038
|
};
|
@@ -30175,7 +30075,7 @@ const VIconBtn = genericComponent()({
|
|
30175
30075
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30176
30076
|
"indeterminate": "disable-shrink",
|
30177
30077
|
"width": "2",
|
30178
|
-
"size": iconSize
|
30078
|
+
"size": iconSize
|
30179
30079
|
}, null)])]
|
30180
30080
|
});
|
30181
30081
|
});
|
@@ -32085,7 +31985,7 @@ function createVuetify$1() {
|
|
32085
31985
|
};
|
32086
31986
|
});
|
32087
31987
|
}
|
32088
|
-
const version$1 = "3.8.6-
|
31988
|
+
const version$1 = "3.8.6-master.2025-05-22";
|
32089
31989
|
createVuetify$1.version = version$1;
|
32090
31990
|
|
32091
31991
|
// Vue's inject() can only be used in setup
|
@@ -32383,7 +32283,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
32383
32283
|
|
32384
32284
|
/* eslint-disable local-rules/sort-imports */
|
32385
32285
|
|
32386
|
-
const version = "3.8.6-
|
32286
|
+
const version = "3.8.6-master.2025-05-22";
|
32387
32287
|
|
32388
32288
|
/* eslint-disable local-rules/sort-imports */
|
32389
32289
|
|