@vuetify/nightly 3.8.2-dev.2025-04-17 → 3.8.2-master.2025-04-19
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 +7 -16
- package/dist/json/attributes.json +3562 -3562
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +164 -164
- package/dist/json/web-types.json +6668 -6669
- package/dist/vuetify-labs.cjs +36 -112
- package/dist/vuetify-labs.css +3302 -3302
- package/dist/vuetify-labs.d.ts +62 -76
- package/dist/vuetify-labs.esm.js +37 -113
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +36 -112
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +29 -103
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5737 -5737
- package/dist/vuetify.d.ts +57 -62
- package/dist/vuetify.esm.js +30 -104
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +29 -103
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1165 -1171
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/composables/calendar.d.ts +0 -1
- package/lib/composables/calendar.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.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +57 -62
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
- package/lib/labs/VIconBtn/VIconBtn.js +7 -9
- package/lib/labs/VIconBtn/VIconBtn.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 +1 -1
package/dist/vuetify-labs.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.2-
|
2
|
+
* Vuetify v3.8.2-master.2025-04-19
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -85,7 +85,6 @@
|
|
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';
|
89
88
|
|
90
89
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
91
90
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -2286,7 +2285,6 @@
|
|
2286
2285
|
function genDefaults$2() {
|
2287
2286
|
return {
|
2288
2287
|
defaultTheme: 'light',
|
2289
|
-
prefix: 'v-',
|
2290
2288
|
variations: {
|
2291
2289
|
colors: [],
|
2292
2290
|
lighten: 0,
|
@@ -2368,10 +2366,7 @@
|
|
2368
2366
|
}
|
2369
2367
|
}
|
2370
2368
|
},
|
2371
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2372
|
-
scoped: false,
|
2373
|
-
unimportant: false,
|
2374
|
-
utilities: true
|
2369
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2375
2370
|
};
|
2376
2371
|
}
|
2377
2372
|
function parseThemeOptions() {
|
@@ -2394,21 +2389,21 @@
|
|
2394
2389
|
function createCssClass(lines, selector, content, scope) {
|
2395
2390
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2396
2391
|
}
|
2397
|
-
function genCssVariables(theme
|
2392
|
+
function genCssVariables(theme) {
|
2398
2393
|
const lightOverlay = theme.dark ? 2 : 1;
|
2399
2394
|
const darkOverlay = theme.dark ? 1 : 2;
|
2400
2395
|
const variables = [];
|
2401
2396
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2402
2397
|
const rgb = parseColor(value);
|
2403
|
-
variables.push(
|
2398
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2404
2399
|
if (!key.startsWith('on-')) {
|
2405
|
-
variables.push(
|
2400
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2406
2401
|
}
|
2407
2402
|
}
|
2408
2403
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2409
2404
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2410
2405
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2411
|
-
variables.push(
|
2406
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2412
2407
|
}
|
2413
2408
|
return variables;
|
2414
2409
|
}
|
@@ -2452,8 +2447,7 @@
|
|
2452
2447
|
const scopeSelector = `:where(${scope})`;
|
2453
2448
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2454
2449
|
}
|
2455
|
-
function upsertStyles(
|
2456
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2450
|
+
function upsertStyles(styleEl, styles) {
|
2457
2451
|
if (!styleEl) return;
|
2458
2452
|
styleEl.innerHTML = styles;
|
2459
2453
|
}
|
@@ -2473,17 +2467,8 @@
|
|
2473
2467
|
// Composables
|
2474
2468
|
function createTheme(options) {
|
2475
2469
|
const parsedOptions = parseThemeOptions(options);
|
2476
|
-
const
|
2470
|
+
const name = vue.shallowRef(parsedOptions.defaultTheme);
|
2477
2471
|
const themes = vue.ref(parsedOptions.themes);
|
2478
|
-
const systemName = vue.shallowRef('light');
|
2479
|
-
const name = vue.computed({
|
2480
|
-
get() {
|
2481
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
2482
|
-
},
|
2483
|
-
set(val) {
|
2484
|
-
_name.value = val;
|
2485
|
-
}
|
2486
|
-
});
|
2487
2472
|
const computedThemes = vue.computed(() => {
|
2488
2473
|
const acc = {};
|
2489
2474
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2504,49 +2489,28 @@
|
|
2504
2489
|
const current = vue.computed(() => computedThemes.value[name.value]);
|
2505
2490
|
const styles = vue.computed(() => {
|
2506
2491
|
const lines = [];
|
2507
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
2508
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2509
2492
|
if (current.value?.dark) {
|
2510
2493
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2511
2494
|
}
|
2512
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
2495
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2513
2496
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2514
|
-
createCssClass(lines,
|
2515
|
-
}
|
2516
|
-
|
2517
|
-
|
2518
|
-
|
2519
|
-
|
2520
|
-
|
2521
|
-
|
2522
|
-
|
2523
|
-
}
|
2524
|
-
|
2525
|
-
|
2526
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2527
|
-
}
|
2497
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
2498
|
+
}
|
2499
|
+
const bgLines = [];
|
2500
|
+
const fgLines = [];
|
2501
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2502
|
+
for (const key of colors) {
|
2503
|
+
if (key.startsWith('on-')) {
|
2504
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2505
|
+
} else {
|
2506
|
+
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);
|
2507
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2508
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
2528
2509
|
}
|
2529
|
-
lines.push(...bgLines, ...fgLines);
|
2530
2510
|
}
|
2511
|
+
lines.push(...bgLines, ...fgLines);
|
2531
2512
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2532
2513
|
});
|
2533
|
-
const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2534
|
-
const themeNames = vue.computed(() => Object.keys(computedThemes.value));
|
2535
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
2536
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2537
|
-
function updateSystemName() {
|
2538
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
2539
|
-
}
|
2540
|
-
updateSystemName();
|
2541
|
-
media.addEventListener('change', updateSystemName, {
|
2542
|
-
passive: true
|
2543
|
-
});
|
2544
|
-
if (vue.getCurrentScope()) {
|
2545
|
-
vue.onScopeDispose(() => {
|
2546
|
-
media.removeEventListener('change', updateSystemName);
|
2547
|
-
});
|
2548
|
-
}
|
2549
|
-
}
|
2550
2514
|
function install(app) {
|
2551
2515
|
if (parsedOptions.isDisabled) return;
|
2552
2516
|
const head = app._context.provides.usehead;
|
@@ -2584,55 +2548,22 @@
|
|
2584
2548
|
updateStyles();
|
2585
2549
|
}
|
2586
2550
|
function updateStyles() {
|
2587
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2551
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
2588
2552
|
}
|
2589
2553
|
}
|
2590
2554
|
}
|
2591
|
-
|
2592
|
-
if (!themeNames.value.includes(themeName)) {
|
2593
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2594
|
-
return;
|
2595
|
-
}
|
2596
|
-
name.value = themeName;
|
2597
|
-
}
|
2598
|
-
function cycle() {
|
2599
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2600
|
-
const currentIndex = themeArray.indexOf(name.value);
|
2601
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2602
|
-
change(themeArray[nextIndex]);
|
2603
|
-
}
|
2604
|
-
function toggle() {
|
2605
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2606
|
-
cycle(themeArray);
|
2607
|
-
}
|
2608
|
-
const globalName = new Proxy(name, {
|
2609
|
-
get(target, prop) {
|
2610
|
-
return target[prop];
|
2611
|
-
},
|
2612
|
-
set(target, prop, val) {
|
2613
|
-
if (prop === 'value') {
|
2614
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2615
|
-
}
|
2616
|
-
// @ts-expect-error
|
2617
|
-
target[prop] = val;
|
2618
|
-
return true;
|
2619
|
-
}
|
2620
|
-
});
|
2555
|
+
const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
2621
2556
|
return {
|
2622
2557
|
install,
|
2623
|
-
change,
|
2624
|
-
cycle,
|
2625
|
-
toggle,
|
2626
2558
|
isDisabled: parsedOptions.isDisabled,
|
2627
2559
|
name,
|
2628
2560
|
themes,
|
2629
2561
|
current,
|
2630
2562
|
computedThemes,
|
2631
|
-
prefix: parsedOptions.prefix,
|
2632
2563
|
themeClasses,
|
2633
2564
|
styles,
|
2634
2565
|
global: {
|
2635
|
-
name
|
2566
|
+
name,
|
2636
2567
|
current
|
2637
2568
|
}
|
2638
2569
|
};
|
@@ -2643,7 +2574,7 @@
|
|
2643
2574
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2644
2575
|
const name = vue.computed(() => props.theme ?? theme.name.value);
|
2645
2576
|
const current = vue.computed(() => theme.themes.value[name.value]);
|
2646
|
-
const themeClasses = vue.computed(() => theme.isDisabled ? undefined :
|
2577
|
+
const themeClasses = vue.computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
2647
2578
|
const newTheme = {
|
2648
2579
|
...theme,
|
2649
2580
|
name,
|
@@ -12381,12 +12312,7 @@
|
|
12381
12312
|
}
|
12382
12313
|
function calculateOffset(index) {
|
12383
12314
|
index = clamp(index, 0, items.value.length - 1);
|
12384
|
-
|
12385
|
-
const fraction = index % 1;
|
12386
|
-
const next = whole + 1;
|
12387
|
-
const wholeOffset = offsets[whole] || 0;
|
12388
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12389
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12315
|
+
return offsets[index] || 0;
|
12390
12316
|
}
|
12391
12317
|
function calculateIndex(scrollTop) {
|
12392
12318
|
return binaryClosest(offsets, scrollTop);
|
@@ -29520,10 +29446,7 @@
|
|
29520
29446
|
hideOverlay: Boolean,
|
29521
29447
|
icon: [String, Function, Object],
|
29522
29448
|
iconColor: String,
|
29523
|
-
iconSize:
|
29524
|
-
type: [Number, String],
|
29525
|
-
default: 'default'
|
29526
|
-
},
|
29449
|
+
iconSize: [Number, String],
|
29527
29450
|
iconSizes: {
|
29528
29451
|
type: Array,
|
29529
29452
|
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
@@ -29608,13 +29531,14 @@
|
|
29608
29531
|
}
|
29609
29532
|
useRender(() => {
|
29610
29533
|
const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
|
29611
|
-
const
|
29612
|
-
const hasNamedSize = btnSizeMap.has(
|
29613
|
-
const btnSize = hasNamedSize ? btnSizeMap.get(
|
29534
|
+
const _btnSize = props.size;
|
29535
|
+
const hasNamedSize = btnSizeMap.has(_btnSize);
|
29536
|
+
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
29614
29537
|
const btnHeight = props.height ?? btnSize;
|
29615
29538
|
const btnWidth = props.width ?? btnSize;
|
29616
|
-
const _iconSize =
|
29617
|
-
const
|
29539
|
+
const _iconSize = props.iconSize;
|
29540
|
+
const hasNamedIconSize = iconSizeMap.has(_iconSize);
|
29541
|
+
const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
|
29618
29542
|
const iconProps = {
|
29619
29543
|
icon,
|
29620
29544
|
size: iconSize,
|
@@ -31569,7 +31493,7 @@
|
|
31569
31493
|
};
|
31570
31494
|
});
|
31571
31495
|
}
|
31572
|
-
const version$1 = "3.8.2-
|
31496
|
+
const version$1 = "3.8.2-master.2025-04-19";
|
31573
31497
|
createVuetify$1.version = version$1;
|
31574
31498
|
|
31575
31499
|
// Vue's inject() can only be used in setup
|
@@ -31867,7 +31791,7 @@
|
|
31867
31791
|
|
31868
31792
|
/* eslint-disable local-rules/sort-imports */
|
31869
31793
|
|
31870
|
-
const version = "3.8.2-
|
31794
|
+
const version = "3.8.2-master.2025-04-19";
|
31871
31795
|
|
31872
31796
|
/* eslint-disable local-rules/sort-imports */
|
31873
31797
|
|