@vuetify/nightly 3.8.3-master.2025-05-05 → 3.8.4-dev.2025-05-13
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 +17 -29
- package/dist/json/attributes.json +3080 -3064
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +144 -144
- package/dist/json/tags.json +4 -0
- package/dist/json/web-types.json +5925 -5886
- package/dist/vuetify-labs.cjs +206 -92
- package/dist/vuetify-labs.css +3956 -3924
- package/dist/vuetify-labs.d.ts +1030 -978
- package/dist/vuetify-labs.esm.js +207 -93
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +206 -92
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +179 -48
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3200 -3168
- package/dist/vuetify.d.ts +620 -566
- package/dist/vuetify.esm.js +180 -49
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +179 -48
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1185 -1174
- 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 +97 -97
- package/lib/components/VAutocomplete/VAutocomplete.js +5 -0
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +6 -6
- 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 +97 -97
- package/lib/components/VDataTable/VDataTable.d.ts +110 -110
- package/lib/components/VDataTable/VDataTableHeaders.js +1 -2
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +55 -55
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +55 -55
- package/lib/components/VDataTable/composables/headers.d.ts +75 -75
- package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +6 -6
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.css +4 -0
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VFileInput/VFileInput.js +21 -3
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +4 -0
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VNumberInput/VNumberInput.d.ts +92 -92
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/locationStrategies.js +1 -1
- package/lib/components/VOverlay/locationStrategies.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 +97 -97
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSwitch/VSwitch.d.ts +3 -3
- package/lib/components/VTabs/VTabs.d.ts +6 -6
- package/lib/components/VTextField/VTextField.d.ts +27 -27
- package/lib/components/VTextarea/VTextarea.d.ts +15 -15
- package/lib/components/transitions/dialog-transition.js +3 -3
- package/lib/components/transitions/dialog-transition.js.map +1 -1
- package/lib/composables/calendar.d.ts +1 -0
- package/lib/composables/calendar.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 +6 -6
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +57 -52
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +3 -3
- package/lib/labs/VCalendar/VCalendarDay.d.ts +3 -3
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +3 -3
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +96 -96
- package/lib/labs/VFileUpload/VFileUpload.js +19 -31
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- 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/VTimePicker/VTimePickerClock.js +2 -2
- package/lib/labs/VTimePicker/VTimePickerClock.js.map +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/lib/util/helpers.js.map +1 -1
- package/package.json +7 -6
package/dist/vuetify-labs.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.8.
|
|
2
|
+
* Vuetify v3.8.4-dev.2025-05-13
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
|
86
86
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
|
87
87
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
|
88
|
+
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
|
88
89
|
|
|
89
90
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
|
90
91
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
|
@@ -2299,6 +2300,7 @@
|
|
|
2299
2300
|
function genDefaults$2() {
|
|
2300
2301
|
return {
|
|
2301
2302
|
defaultTheme: 'light',
|
|
2303
|
+
prefix: 'v-',
|
|
2302
2304
|
variations: {
|
|
2303
2305
|
colors: [],
|
|
2304
2306
|
lighten: 0,
|
|
@@ -2380,7 +2382,10 @@
|
|
|
2380
2382
|
}
|
|
2381
2383
|
}
|
|
2382
2384
|
},
|
|
2383
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
|
2385
|
+
stylesheetId: 'vuetify-theme-stylesheet',
|
|
2386
|
+
scoped: false,
|
|
2387
|
+
unimportant: false,
|
|
2388
|
+
utilities: true
|
|
2384
2389
|
};
|
|
2385
2390
|
}
|
|
2386
2391
|
function parseThemeOptions() {
|
|
@@ -2403,21 +2408,21 @@
|
|
|
2403
2408
|
function createCssClass(lines, selector, content, scope) {
|
|
2404
2409
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
|
2405
2410
|
}
|
|
2406
|
-
function genCssVariables(theme) {
|
|
2411
|
+
function genCssVariables(theme, prefix) {
|
|
2407
2412
|
const lightOverlay = theme.dark ? 2 : 1;
|
|
2408
2413
|
const darkOverlay = theme.dark ? 1 : 2;
|
|
2409
2414
|
const variables = [];
|
|
2410
2415
|
for (const [key, value] of Object.entries(theme.colors)) {
|
|
2411
2416
|
const rgb = parseColor(value);
|
|
2412
|
-
variables.push(
|
|
2417
|
+
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
|
2413
2418
|
if (!key.startsWith('on-')) {
|
|
2414
|
-
variables.push(
|
|
2419
|
+
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
|
2415
2420
|
}
|
|
2416
2421
|
}
|
|
2417
2422
|
for (const [key, value] of Object.entries(theme.variables)) {
|
|
2418
2423
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
|
2419
2424
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
2420
|
-
variables.push(
|
|
2425
|
+
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
|
2421
2426
|
}
|
|
2422
2427
|
return variables;
|
|
2423
2428
|
}
|
|
@@ -2461,7 +2466,8 @@
|
|
|
2461
2466
|
const scopeSelector = `:where(${scope})`;
|
|
2462
2467
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
|
2463
2468
|
}
|
|
2464
|
-
function upsertStyles(
|
|
2469
|
+
function upsertStyles(id, cspNonce, styles) {
|
|
2470
|
+
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
|
2465
2471
|
if (!styleEl) return;
|
|
2466
2472
|
styleEl.innerHTML = styles;
|
|
2467
2473
|
}
|
|
@@ -2481,8 +2487,17 @@
|
|
|
2481
2487
|
// Composables
|
|
2482
2488
|
function createTheme(options) {
|
|
2483
2489
|
const parsedOptions = parseThemeOptions(options);
|
|
2484
|
-
const
|
|
2490
|
+
const _name = vue.shallowRef(parsedOptions.defaultTheme);
|
|
2485
2491
|
const themes = vue.ref(parsedOptions.themes);
|
|
2492
|
+
const systemName = vue.shallowRef('light');
|
|
2493
|
+
const name = vue.computed({
|
|
2494
|
+
get() {
|
|
2495
|
+
return _name.value === 'system' ? systemName.value : _name.value;
|
|
2496
|
+
},
|
|
2497
|
+
set(val) {
|
|
2498
|
+
_name.value = val;
|
|
2499
|
+
}
|
|
2500
|
+
});
|
|
2486
2501
|
const computedThemes = vue.computed(() => {
|
|
2487
2502
|
const acc = {};
|
|
2488
2503
|
for (const [name, original] of Object.entries(themes.value)) {
|
|
@@ -2503,28 +2518,49 @@
|
|
|
2503
2518
|
const current = vue.toRef(() => computedThemes.value[name.value]);
|
|
2504
2519
|
const styles = vue.computed(() => {
|
|
2505
2520
|
const lines = [];
|
|
2521
|
+
const important = parsedOptions.unimportant ? '' : ' !important';
|
|
2522
|
+
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
|
2506
2523
|
if (current.value?.dark) {
|
|
2507
2524
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
|
2508
2525
|
}
|
|
2509
|
-
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
|
2526
|
+
createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
|
2510
2527
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
|
2511
|
-
createCssClass(lines,
|
|
2512
|
-
}
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2528
|
+
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
|
2529
|
+
}
|
|
2530
|
+
if (parsedOptions.utilities) {
|
|
2531
|
+
const bgLines = [];
|
|
2532
|
+
const fgLines = [];
|
|
2533
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
|
2534
|
+
for (const key of colors) {
|
|
2535
|
+
if (key.startsWith('on-')) {
|
|
2536
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
|
2537
|
+
} else {
|
|
2538
|
+
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);
|
|
2539
|
+
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
|
2540
|
+
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
|
2541
|
+
}
|
|
2523
2542
|
}
|
|
2543
|
+
lines.push(...bgLines, ...fgLines);
|
|
2524
2544
|
}
|
|
2525
|
-
lines.push(...bgLines, ...fgLines);
|
|
2526
2545
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
|
2527
2546
|
});
|
|
2547
|
+
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
|
2548
|
+
const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
|
|
2549
|
+
if (SUPPORTS_MATCH_MEDIA) {
|
|
2550
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
|
2551
|
+
function updateSystemName() {
|
|
2552
|
+
systemName.value = media.matches ? 'dark' : 'light';
|
|
2553
|
+
}
|
|
2554
|
+
updateSystemName();
|
|
2555
|
+
media.addEventListener('change', updateSystemName, {
|
|
2556
|
+
passive: true
|
|
2557
|
+
});
|
|
2558
|
+
if (vue.getCurrentScope()) {
|
|
2559
|
+
vue.onScopeDispose(() => {
|
|
2560
|
+
media.removeEventListener('change', updateSystemName);
|
|
2561
|
+
});
|
|
2562
|
+
}
|
|
2563
|
+
}
|
|
2528
2564
|
function install(app) {
|
|
2529
2565
|
if (parsedOptions.isDisabled) return;
|
|
2530
2566
|
const head = app._context.provides.usehead;
|
|
@@ -2562,22 +2598,55 @@
|
|
|
2562
2598
|
updateStyles();
|
|
2563
2599
|
}
|
|
2564
2600
|
function updateStyles() {
|
|
2565
|
-
upsertStyles(
|
|
2601
|
+
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
|
2566
2602
|
}
|
|
2567
2603
|
}
|
|
2568
2604
|
}
|
|
2569
|
-
|
|
2605
|
+
function change(themeName) {
|
|
2606
|
+
if (!themeNames.value.includes(themeName)) {
|
|
2607
|
+
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
|
2608
|
+
return;
|
|
2609
|
+
}
|
|
2610
|
+
name.value = themeName;
|
|
2611
|
+
}
|
|
2612
|
+
function cycle() {
|
|
2613
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
|
2614
|
+
const currentIndex = themeArray.indexOf(name.value);
|
|
2615
|
+
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
|
2616
|
+
change(themeArray[nextIndex]);
|
|
2617
|
+
}
|
|
2618
|
+
function toggle() {
|
|
2619
|
+
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
|
2620
|
+
cycle(themeArray);
|
|
2621
|
+
}
|
|
2622
|
+
const globalName = new Proxy(name, {
|
|
2623
|
+
get(target, prop) {
|
|
2624
|
+
return target[prop];
|
|
2625
|
+
},
|
|
2626
|
+
set(target, prop, val) {
|
|
2627
|
+
if (prop === 'value') {
|
|
2628
|
+
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
|
2629
|
+
}
|
|
2630
|
+
// @ts-expect-error
|
|
2631
|
+
target[prop] = val;
|
|
2632
|
+
return true;
|
|
2633
|
+
}
|
|
2634
|
+
});
|
|
2570
2635
|
return {
|
|
2571
2636
|
install,
|
|
2637
|
+
change,
|
|
2638
|
+
cycle,
|
|
2639
|
+
toggle,
|
|
2572
2640
|
isDisabled: parsedOptions.isDisabled,
|
|
2573
2641
|
name,
|
|
2574
2642
|
themes,
|
|
2575
2643
|
current,
|
|
2576
2644
|
computedThemes,
|
|
2645
|
+
prefix: parsedOptions.prefix,
|
|
2577
2646
|
themeClasses,
|
|
2578
2647
|
styles,
|
|
2579
2648
|
global: {
|
|
2580
|
-
name,
|
|
2649
|
+
name: globalName,
|
|
2581
2650
|
current
|
|
2582
2651
|
}
|
|
2583
2652
|
};
|
|
@@ -2588,7 +2657,7 @@
|
|
|
2588
2657
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
|
2589
2658
|
const name = vue.toRef(() => props.theme ?? theme.name.value);
|
|
2590
2659
|
const current = vue.toRef(() => theme.themes.value[name.value]);
|
|
2591
|
-
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined :
|
|
2660
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
|
|
2592
2661
|
const newTheme = {
|
|
2593
2662
|
...theme,
|
|
2594
2663
|
name,
|
|
@@ -2927,10 +2996,10 @@
|
|
|
2927
2996
|
async onLeave(el, done) {
|
|
2928
2997
|
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
2929
2998
|
let dimensions;
|
|
2930
|
-
if (!Array.isArray(props.target)
|
|
2931
|
-
dimensions = saved.get(el);
|
|
2932
|
-
} else {
|
|
2999
|
+
if (!saved.has(el) || Array.isArray(props.target) || props.target.offsetParent || props.target.getClientRects().length) {
|
|
2933
3000
|
dimensions = getDimensions(props.target, el);
|
|
3001
|
+
} else {
|
|
3002
|
+
dimensions = saved.get(el);
|
|
2934
3003
|
}
|
|
2935
3004
|
const {
|
|
2936
3005
|
x,
|
|
@@ -4135,9 +4204,15 @@
|
|
|
4135
4204
|
};
|
|
4136
4205
|
}
|
|
4137
4206
|
|
|
4207
|
+
// Types
|
|
4208
|
+
|
|
4138
4209
|
const makeVBtnGroupProps = propsFactory({
|
|
4139
4210
|
baseColor: String,
|
|
4140
4211
|
divided: Boolean,
|
|
4212
|
+
direction: {
|
|
4213
|
+
type: String,
|
|
4214
|
+
default: 'horizontal'
|
|
4215
|
+
},
|
|
4141
4216
|
...makeBorderProps(),
|
|
4142
4217
|
...makeComponentProps(),
|
|
4143
4218
|
...makeDensityProps(),
|
|
@@ -4171,7 +4246,7 @@
|
|
|
4171
4246
|
} = useRounded(props);
|
|
4172
4247
|
provideDefaults({
|
|
4173
4248
|
VBtn: {
|
|
4174
|
-
height: 'auto',
|
|
4249
|
+
height: vue.toRef(() => props.direction === 'horizontal' ? 'auto' : null),
|
|
4175
4250
|
baseColor: vue.toRef(() => props.baseColor),
|
|
4176
4251
|
color: vue.toRef(() => props.color),
|
|
4177
4252
|
density: vue.toRef(() => props.density),
|
|
@@ -4181,7 +4256,7 @@
|
|
|
4181
4256
|
});
|
|
4182
4257
|
useRender(() => {
|
|
4183
4258
|
return vue.createVNode(props.tag, {
|
|
4184
|
-
"class": ['v-btn-group', {
|
|
4259
|
+
"class": ['v-btn-group', `v-btn-group--${props.direction}`, {
|
|
4185
4260
|
'v-btn-group--divided': props.divided
|
|
4186
4261
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
|
4187
4262
|
"style": props.style
|
|
@@ -5868,6 +5943,31 @@
|
|
|
5868
5943
|
// Utilities
|
|
5869
5944
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
|
5870
5945
|
|
|
5946
|
+
// Utilities
|
|
5947
|
+
|
|
5948
|
+
// Types
|
|
5949
|
+
|
|
5950
|
+
// Types
|
|
5951
|
+
|
|
5952
|
+
// Composables
|
|
5953
|
+
const makeIconSizeProps = propsFactory({
|
|
5954
|
+
iconSize: [Number, String],
|
|
5955
|
+
iconSizes: {
|
|
5956
|
+
type: Array,
|
|
5957
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
|
5958
|
+
}
|
|
5959
|
+
}, 'iconSize');
|
|
5960
|
+
function useIconSizes(props, fallback) {
|
|
5961
|
+
const iconSize = vue.computed(() => {
|
|
5962
|
+
const iconSizeMap = new Map(props.iconSizes);
|
|
5963
|
+
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
|
5964
|
+
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
|
5965
|
+
});
|
|
5966
|
+
return {
|
|
5967
|
+
iconSize
|
|
5968
|
+
};
|
|
5969
|
+
}
|
|
5970
|
+
|
|
5871
5971
|
// Types
|
|
5872
5972
|
|
|
5873
5973
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
|
@@ -5907,6 +6007,7 @@
|
|
|
5907
6007
|
...makeDensityProps(),
|
|
5908
6008
|
...makeDimensionProps(),
|
|
5909
6009
|
...makeElevationProps(),
|
|
6010
|
+
...makeIconSizeProps(),
|
|
5910
6011
|
...makeLocationProps(),
|
|
5911
6012
|
...makePositionProps(),
|
|
5912
6013
|
...makeRoundedProps(),
|
|
@@ -5934,6 +6035,9 @@
|
|
|
5934
6035
|
if (!props.type) return props.icon;
|
|
5935
6036
|
return props.icon ?? `$${props.type}`;
|
|
5936
6037
|
});
|
|
6038
|
+
const {
|
|
6039
|
+
iconSize
|
|
6040
|
+
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
|
5937
6041
|
const {
|
|
5938
6042
|
themeClasses
|
|
5939
6043
|
} = provideTheme(props);
|
|
@@ -5981,6 +6085,11 @@
|
|
|
5981
6085
|
const hasPrepend = !!(slots.prepend || icon.value);
|
|
5982
6086
|
const hasTitle = !!(slots.title || props.title);
|
|
5983
6087
|
const hasClose = !!(slots.close || props.closable);
|
|
6088
|
+
const iconProps = {
|
|
6089
|
+
density: props.density,
|
|
6090
|
+
icon: icon.value,
|
|
6091
|
+
size: iconSize.value
|
|
6092
|
+
};
|
|
5984
6093
|
return isActive.value && vue.createVNode(props.tag, {
|
|
5985
6094
|
"class": ['v-alert', props.border && {
|
|
5986
6095
|
'v-alert--border': !!props.border,
|
|
@@ -5998,19 +6107,14 @@
|
|
|
5998
6107
|
}, null), hasPrepend && vue.createVNode("div", {
|
|
5999
6108
|
"key": "prepend",
|
|
6000
6109
|
"class": "v-alert__prepend"
|
|
6001
|
-
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
|
6002
|
-
"key": "prepend-icon"
|
|
6003
|
-
|
|
6004
|
-
"icon": icon.value,
|
|
6005
|
-
"size": props.prominent ? 44 : 28
|
|
6006
|
-
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
6110
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, vue.mergeProps({
|
|
6111
|
+
"key": "prepend-icon"
|
|
6112
|
+
}, iconProps), null) : vue.createVNode(VDefaultsProvider, {
|
|
6007
6113
|
"key": "prepend-defaults",
|
|
6008
6114
|
"disabled": !icon.value,
|
|
6009
6115
|
"defaults": {
|
|
6010
6116
|
VIcon: {
|
|
6011
|
-
|
|
6012
|
-
icon: icon.value,
|
|
6013
|
-
size: props.prominent ? 44 : 28
|
|
6117
|
+
...iconProps
|
|
6014
6118
|
}
|
|
6015
6119
|
}
|
|
6016
6120
|
}, slots.prepend)]), vue.createVNode("div", {
|
|
@@ -10168,7 +10272,7 @@
|
|
|
10168
10272
|
observe = false;
|
|
10169
10273
|
requestAnimationFrame(() => observe = true);
|
|
10170
10274
|
if (!data.target.value || !data.contentEl.value) return;
|
|
10171
|
-
if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
|
|
10275
|
+
if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {
|
|
10172
10276
|
targetBox = getTargetBox(data.target.value);
|
|
10173
10277
|
} // Otherwise target element is hidden, use last known value
|
|
10174
10278
|
|
|
@@ -12356,7 +12460,12 @@
|
|
|
12356
12460
|
}
|
|
12357
12461
|
function calculateOffset(index) {
|
|
12358
12462
|
index = clamp(index, 0, items.value.length - 1);
|
|
12359
|
-
|
|
12463
|
+
const whole = Math.floor(index);
|
|
12464
|
+
const fraction = index % 1;
|
|
12465
|
+
const next = whole + 1;
|
|
12466
|
+
const wholeOffset = offsets[whole] || 0;
|
|
12467
|
+
const nextOffset = offsets[next] || wholeOffset;
|
|
12468
|
+
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
|
12360
12469
|
}
|
|
12361
12470
|
function calculateIndex(scrollTop) {
|
|
12362
12471
|
return binaryClosest(offsets, scrollTop);
|
|
@@ -13506,6 +13615,11 @@
|
|
|
13506
13615
|
menu.value = true;
|
|
13507
13616
|
}
|
|
13508
13617
|
});
|
|
13618
|
+
vue.watch(model, value => {
|
|
13619
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
13620
|
+
search.value = value[0]?.title ?? '';
|
|
13621
|
+
}
|
|
13622
|
+
});
|
|
13509
13623
|
useRender(() => {
|
|
13510
13624
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
13511
13625
|
const isDirty = model.value.length > 0;
|
|
@@ -20333,7 +20447,6 @@
|
|
|
20333
20447
|
});
|
|
20334
20448
|
};
|
|
20335
20449
|
const VDataTableMobileHeaderCell = () => {
|
|
20336
|
-
const headerProps = vue.mergeProps(props.headerProps ?? {} ?? {});
|
|
20337
20450
|
const displayItems = vue.computed(() => {
|
|
20338
20451
|
return columns.value.filter(column => column?.sortable && !props.disableSort);
|
|
20339
20452
|
});
|
|
@@ -20346,7 +20459,7 @@
|
|
|
20346
20459
|
"tag": "th",
|
|
20347
20460
|
"class": [...headerCellClasses.value],
|
|
20348
20461
|
"colspan": headers.value.length + 1
|
|
20349
|
-
}, headerProps), {
|
|
20462
|
+
}, props.headerProps), {
|
|
20350
20463
|
default: () => [vue.createVNode("div", {
|
|
20351
20464
|
"class": "v-data-table-header__content"
|
|
20352
20465
|
}, [vue.createVNode(VSelect, {
|
|
@@ -23269,6 +23382,7 @@
|
|
|
23269
23382
|
const inputRef = vue.ref();
|
|
23270
23383
|
const isActive = vue.toRef(() => isFocused.value || props.active);
|
|
23271
23384
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
23385
|
+
const isDragging = vue.shallowRef(false);
|
|
23272
23386
|
function onFocus() {
|
|
23273
23387
|
if (inputRef.value !== document.activeElement) {
|
|
23274
23388
|
inputRef.value?.focus();
|
|
@@ -23295,11 +23409,26 @@
|
|
|
23295
23409
|
}
|
|
23296
23410
|
function onDragover(e) {
|
|
23297
23411
|
e.preventDefault();
|
|
23412
|
+
e.stopImmediatePropagation();
|
|
23413
|
+
isDragging.value = true;
|
|
23414
|
+
}
|
|
23415
|
+
function onDragleave(e) {
|
|
23416
|
+
e.preventDefault();
|
|
23417
|
+
isDragging.value = false;
|
|
23298
23418
|
}
|
|
23299
23419
|
function onDrop(e) {
|
|
23300
23420
|
e.preventDefault();
|
|
23301
|
-
|
|
23302
|
-
|
|
23421
|
+
e.stopImmediatePropagation();
|
|
23422
|
+
isDragging.value = false;
|
|
23423
|
+
if (!e.dataTransfer?.files?.length || !inputRef.value) return;
|
|
23424
|
+
const dataTransfer = new DataTransfer();
|
|
23425
|
+
for (const file of e.dataTransfer.files) {
|
|
23426
|
+
dataTransfer.items.add(file);
|
|
23427
|
+
}
|
|
23428
|
+
inputRef.value.files = dataTransfer.files;
|
|
23429
|
+
inputRef.value.dispatchEvent(new Event('change', {
|
|
23430
|
+
bubbles: true
|
|
23431
|
+
}));
|
|
23303
23432
|
}
|
|
23304
23433
|
vue.watch(model, newValue => {
|
|
23305
23434
|
const hasModelReset = !Array.isArray(newValue) || !newValue.length;
|
|
@@ -23321,6 +23450,7 @@
|
|
|
23321
23450
|
"modelValue": props.multiple ? model.value : model.value[0],
|
|
23322
23451
|
"class": ['v-file-input', {
|
|
23323
23452
|
'v-file-input--chips': !!props.chips,
|
|
23453
|
+
'v-file-input--dragging': isDragging.value,
|
|
23324
23454
|
'v-file-input--hide': props.hideInput,
|
|
23325
23455
|
'v-input--plain-underlined': isPlainOrUnderlined.value
|
|
23326
23456
|
}, props.class],
|
|
@@ -23382,6 +23512,7 @@
|
|
|
23382
23512
|
const target = e.target;
|
|
23383
23513
|
model.value = [...(target.files ?? [])];
|
|
23384
23514
|
},
|
|
23515
|
+
"onDragleave": onDragleave,
|
|
23385
23516
|
"onFocus": onFocus,
|
|
23386
23517
|
"onBlur": blur
|
|
23387
23518
|
}, slotProps, inputAttrs), null), vue.createVNode("div", {
|
|
@@ -29434,43 +29565,31 @@
|
|
|
29434
29565
|
densityClasses
|
|
29435
29566
|
} = useDensity(props);
|
|
29436
29567
|
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
|
|
29437
|
-
const
|
|
29568
|
+
const isDragging = vue.shallowRef(false);
|
|
29438
29569
|
const vSheetRef = vue.ref(null);
|
|
29439
29570
|
const inputRef = vue.ref(null);
|
|
29440
|
-
|
|
29441
|
-
vSheetRef.value?.$el.addEventListener('dragover', onDragOver);
|
|
29442
|
-
vSheetRef.value?.$el.addEventListener('drop', onDrop);
|
|
29443
|
-
});
|
|
29444
|
-
vue.onUnmounted(() => {
|
|
29445
|
-
vSheetRef.value?.$el.removeEventListener('dragover', onDragOver);
|
|
29446
|
-
vSheetRef.value?.$el.removeEventListener('drop', onDrop);
|
|
29447
|
-
});
|
|
29448
|
-
function onDragOver(e) {
|
|
29571
|
+
function onDragover(e) {
|
|
29449
29572
|
e.preventDefault();
|
|
29450
29573
|
e.stopImmediatePropagation();
|
|
29451
|
-
|
|
29574
|
+
isDragging.value = true;
|
|
29452
29575
|
}
|
|
29453
|
-
function
|
|
29576
|
+
function onDragleave(e) {
|
|
29454
29577
|
e.preventDefault();
|
|
29455
|
-
|
|
29578
|
+
isDragging.value = false;
|
|
29456
29579
|
}
|
|
29457
29580
|
function onDrop(e) {
|
|
29458
29581
|
e.preventDefault();
|
|
29459
29582
|
e.stopImmediatePropagation();
|
|
29460
|
-
|
|
29461
|
-
|
|
29462
|
-
|
|
29463
|
-
|
|
29464
|
-
|
|
29465
|
-
|
|
29466
|
-
|
|
29467
|
-
|
|
29468
|
-
|
|
29469
|
-
|
|
29470
|
-
array.push(file);
|
|
29471
|
-
}
|
|
29472
|
-
}
|
|
29473
|
-
model.value = array;
|
|
29583
|
+
isDragging.value = false;
|
|
29584
|
+
if (!e.dataTransfer?.files?.length || !inputRef.value) return;
|
|
29585
|
+
const dataTransfer = new DataTransfer();
|
|
29586
|
+
for (const file of e.dataTransfer.files) {
|
|
29587
|
+
dataTransfer.items.add(file);
|
|
29588
|
+
}
|
|
29589
|
+
inputRef.value.files = dataTransfer.files;
|
|
29590
|
+
inputRef.value.dispatchEvent(new Event('change', {
|
|
29591
|
+
bubbles: true
|
|
29592
|
+
}));
|
|
29474
29593
|
}
|
|
29475
29594
|
function onClick() {
|
|
29476
29595
|
inputRef.value?.click();
|
|
@@ -29506,11 +29625,11 @@
|
|
|
29506
29625
|
"class": ['v-file-upload', {
|
|
29507
29626
|
'v-file-upload--clickable': !hasBrowse,
|
|
29508
29627
|
'v-file-upload--disabled': props.disabled,
|
|
29509
|
-
'v-file-upload--dragging':
|
|
29628
|
+
'v-file-upload--dragging': isDragging.value
|
|
29510
29629
|
}, densityClasses.value, props.class],
|
|
29511
29630
|
"style": [props.style],
|
|
29512
|
-
"onDragleave":
|
|
29513
|
-
"onDragover":
|
|
29631
|
+
"onDragleave": onDragleave,
|
|
29632
|
+
"onDragover": onDragover,
|
|
29514
29633
|
"onDrop": onDrop,
|
|
29515
29634
|
"onClick": !hasBrowse ? onClick : undefined
|
|
29516
29635
|
}, rootAttrs), {
|
|
@@ -29561,7 +29680,7 @@
|
|
|
29561
29680
|
})]), props.subtitle && vue.createVNode("div", {
|
|
29562
29681
|
"class": "v-file-upload-subtitle"
|
|
29563
29682
|
}, [props.subtitle])]), vue.createVNode(VOverlay, {
|
|
29564
|
-
"model-value":
|
|
29683
|
+
"model-value": isDragging.value,
|
|
29565
29684
|
"contained": true,
|
|
29566
29685
|
"scrim": props.scrim
|
|
29567
29686
|
}, null), slots.input?.({
|
|
@@ -29617,11 +29736,6 @@
|
|
|
29617
29736
|
hideOverlay: Boolean,
|
|
29618
29737
|
icon: [String, Function, Object],
|
|
29619
29738
|
iconColor: String,
|
|
29620
|
-
iconSize: [Number, String],
|
|
29621
|
-
iconSizes: {
|
|
29622
|
-
type: Array,
|
|
29623
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
|
29624
|
-
},
|
|
29625
29739
|
loading: Boolean,
|
|
29626
29740
|
opacity: [Number, String],
|
|
29627
29741
|
readonly: Boolean,
|
|
@@ -29641,6 +29755,7 @@
|
|
|
29641
29755
|
...makeBorderProps(),
|
|
29642
29756
|
...makeComponentProps(),
|
|
29643
29757
|
...makeElevationProps(),
|
|
29758
|
+
...makeIconSizeProps(),
|
|
29644
29759
|
...makeRoundedProps(),
|
|
29645
29760
|
...makeTagProps({
|
|
29646
29761
|
tag: 'button'
|
|
@@ -29695,7 +29810,6 @@
|
|
|
29695
29810
|
})()
|
|
29696
29811
|
}));
|
|
29697
29812
|
const btnSizeMap = new Map(props.sizes);
|
|
29698
|
-
const iconSizeMap = new Map(props.iconSizes);
|
|
29699
29813
|
function onClick() {
|
|
29700
29814
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
|
29701
29815
|
isActive.value = !isActive.value;
|
|
@@ -29707,12 +29821,12 @@
|
|
|
29707
29821
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
|
29708
29822
|
const btnHeight = props.height ?? btnSize;
|
|
29709
29823
|
const btnWidth = props.width ?? btnSize;
|
|
29710
|
-
const
|
|
29711
|
-
|
|
29712
|
-
|
|
29824
|
+
const {
|
|
29825
|
+
iconSize
|
|
29826
|
+
} = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
|
|
29713
29827
|
const iconProps = {
|
|
29714
29828
|
icon,
|
|
29715
|
-
size: iconSize,
|
|
29829
|
+
size: iconSize.value,
|
|
29716
29830
|
iconColor: props.iconColor,
|
|
29717
29831
|
opacity: props.opacity
|
|
29718
29832
|
};
|
|
@@ -29755,7 +29869,7 @@
|
|
|
29755
29869
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
|
29756
29870
|
"indeterminate": "disable-shrink",
|
|
29757
29871
|
"width": "2",
|
|
29758
|
-
"size": iconSize
|
|
29872
|
+
"size": iconSize.value
|
|
29759
29873
|
}, null)])]
|
|
29760
29874
|
});
|
|
29761
29875
|
});
|
|
@@ -30259,8 +30373,8 @@
|
|
|
30259
30373
|
y
|
|
30260
30374
|
} = getPosition(i);
|
|
30261
30375
|
return {
|
|
30262
|
-
left: `${50 + x * 50}%`,
|
|
30263
|
-
top: `${50 + y * 50}%`
|
|
30376
|
+
left: `${Math.round(50 + x * 50)}%`,
|
|
30377
|
+
top: `${Math.round(50 + y * 50)}%`
|
|
30264
30378
|
};
|
|
30265
30379
|
}
|
|
30266
30380
|
function euclidean(p0, p1) {
|
|
@@ -31664,7 +31778,7 @@
|
|
|
31664
31778
|
};
|
|
31665
31779
|
});
|
|
31666
31780
|
}
|
|
31667
|
-
const version$1 = "3.8.
|
|
31781
|
+
const version$1 = "3.8.4-dev.2025-05-13";
|
|
31668
31782
|
createVuetify$1.version = version$1;
|
|
31669
31783
|
|
|
31670
31784
|
// Vue's inject() can only be used in setup
|
|
@@ -31962,7 +32076,7 @@
|
|
|
31962
32076
|
|
|
31963
32077
|
/* eslint-disable local-rules/sort-imports */
|
|
31964
32078
|
|
|
31965
|
-
const version = "3.8.
|
|
32079
|
+
const version = "3.8.4-dev.2025-05-13";
|
|
31966
32080
|
|
|
31967
32081
|
/* eslint-disable local-rules/sort-imports */
|
|
31968
32082
|
|