@vuetify/nightly 3.8.7-dev.2025-05-27 → 3.8.7-master.2025-05-29
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 +5 -24
- package/dist/json/attributes.json +3311 -3363
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +206 -206
- package/dist/json/tags.json +6 -19
- package/dist/json/web-types.json +6080 -6298
- package/dist/vuetify-labs.cjs +204 -321
- package/dist/vuetify-labs.css +5998 -6026
- package/dist/vuetify-labs.d.ts +1384 -1583
- package/dist/vuetify-labs.esm.js +205 -322
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +204 -321
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +193 -315
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4658 -4686
- package/dist/vuetify.d.ts +541 -742
- package/dist/vuetify.esm.js +194 -316
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +193 -315
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1198 -1197
- 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 +10 -15
- 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 -133
- package/lib/components/VAutocomplete/VAutocomplete.js +2 -19
- 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/VChipGroup/VChipGroup.d.ts +0 -10
- package/lib/components/VCombobox/VCombobox.d.ts +96 -133
- package/lib/components/VCombobox/VCombobox.js +2 -20
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +0 -18
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableHeaders.js +2 -4
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +0 -13
- package/lib/components/VDatePicker/VDatePicker.d.ts +20 -10
- package/lib/components/VDatePicker/VDatePicker.js +39 -2
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- 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/VDatePicker/VDatePickerMonths.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonths.js +12 -2
- package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerYears.js +14 -2
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +89 -103
- package/lib/components/VNumberInput/VNumberInput.js +15 -29
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +1 -2
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +3 -3
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +96 -138
- package/lib/components/VSelect/VSelect.js +3 -21
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +0 -10
- package/lib/components/VSlideGroup/VSlideGroup.js +1 -2
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +3 -3
- package/lib/components/VSwitch/VSwitch.d.ts +3 -3
- package/lib/components/VTabs/VTabs.d.ts +0 -10
- 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/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 +71 -76
- 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 +107 -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/globals.d.ts +0 -1
- package/lib/util/globals.js +0 -1
- package/lib/util/globals.js.map +1 -1
- package/package.json +1 -3
- 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.7-
|
2
|
+
* Vuetify v3.8.7-master.2025-05-29
|
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, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
|
8
8
|
|
9
9
|
// Types
|
10
10
|
// eslint-disable-line vue/prefer-import-from-vue
|
@@ -81,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"); }
|
@@ -2338,7 +2337,6 @@ const makeThemeProps = propsFactory({
|
|
2338
2337
|
function genDefaults$2() {
|
2339
2338
|
return {
|
2340
2339
|
defaultTheme: 'light',
|
2341
|
-
prefix: 'v-',
|
2342
2340
|
variations: {
|
2343
2341
|
colors: [],
|
2344
2342
|
lighten: 0,
|
@@ -2420,10 +2418,7 @@ function genDefaults$2() {
|
|
2420
2418
|
}
|
2421
2419
|
}
|
2422
2420
|
},
|
2423
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2424
|
-
scoped: false,
|
2425
|
-
unimportant: false,
|
2426
|
-
utilities: true
|
2421
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2427
2422
|
};
|
2428
2423
|
}
|
2429
2424
|
function parseThemeOptions() {
|
@@ -2446,21 +2441,21 @@ function parseThemeOptions() {
|
|
2446
2441
|
function createCssClass(lines, selector, content, scope) {
|
2447
2442
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2448
2443
|
}
|
2449
|
-
function genCssVariables(theme
|
2444
|
+
function genCssVariables(theme) {
|
2450
2445
|
const lightOverlay = theme.dark ? 2 : 1;
|
2451
2446
|
const darkOverlay = theme.dark ? 1 : 2;
|
2452
2447
|
const variables = [];
|
2453
2448
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2454
2449
|
const rgb = parseColor(value);
|
2455
|
-
variables.push(
|
2450
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2456
2451
|
if (!key.startsWith('on-')) {
|
2457
|
-
variables.push(
|
2452
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2458
2453
|
}
|
2459
2454
|
}
|
2460
2455
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2461
2456
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2462
2457
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2463
|
-
variables.push(
|
2458
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2464
2459
|
}
|
2465
2460
|
return variables;
|
2466
2461
|
}
|
@@ -2504,8 +2499,7 @@ function getScopedSelector(selector, scope) {
|
|
2504
2499
|
const scopeSelector = `:where(${scope})`;
|
2505
2500
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2506
2501
|
}
|
2507
|
-
function upsertStyles(
|
2508
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2502
|
+
function upsertStyles(styleEl, styles) {
|
2509
2503
|
if (!styleEl) return;
|
2510
2504
|
styleEl.innerHTML = styles;
|
2511
2505
|
}
|
@@ -2525,17 +2519,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2525
2519
|
// Composables
|
2526
2520
|
function createTheme(options) {
|
2527
2521
|
const parsedOptions = parseThemeOptions(options);
|
2528
|
-
const
|
2522
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
2529
2523
|
const themes = ref(parsedOptions.themes);
|
2530
|
-
const systemName = shallowRef('light');
|
2531
|
-
const name = computed({
|
2532
|
-
get() {
|
2533
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
2534
|
-
},
|
2535
|
-
set(val) {
|
2536
|
-
_name.value = val;
|
2537
|
-
}
|
2538
|
-
});
|
2539
2524
|
const computedThemes = computed(() => {
|
2540
2525
|
const acc = {};
|
2541
2526
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2556,49 +2541,28 @@ function createTheme(options) {
|
|
2556
2541
|
const current = toRef(() => computedThemes.value[name.value]);
|
2557
2542
|
const styles = computed(() => {
|
2558
2543
|
const lines = [];
|
2559
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
2560
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2561
2544
|
if (current.value?.dark) {
|
2562
2545
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2563
2546
|
}
|
2564
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
2547
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2565
2548
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2566
|
-
createCssClass(lines,
|
2567
|
-
}
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
}
|
2576
|
-
|
2577
|
-
|
2578
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2579
|
-
}
|
2549
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
2550
|
+
}
|
2551
|
+
const bgLines = [];
|
2552
|
+
const fgLines = [];
|
2553
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2554
|
+
for (const key of colors) {
|
2555
|
+
if (key.startsWith('on-')) {
|
2556
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2557
|
+
} else {
|
2558
|
+
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);
|
2559
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2560
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
2580
2561
|
}
|
2581
|
-
lines.push(...bgLines, ...fgLines);
|
2582
2562
|
}
|
2563
|
+
lines.push(...bgLines, ...fgLines);
|
2583
2564
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2584
2565
|
});
|
2585
|
-
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2586
|
-
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
2587
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
2588
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2589
|
-
function updateSystemName() {
|
2590
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
2591
|
-
}
|
2592
|
-
updateSystemName();
|
2593
|
-
media.addEventListener('change', updateSystemName, {
|
2594
|
-
passive: true
|
2595
|
-
});
|
2596
|
-
if (getCurrentScope()) {
|
2597
|
-
onScopeDispose(() => {
|
2598
|
-
media.removeEventListener('change', updateSystemName);
|
2599
|
-
});
|
2600
|
-
}
|
2601
|
-
}
|
2602
2566
|
function install(app) {
|
2603
2567
|
if (parsedOptions.isDisabled) return;
|
2604
2568
|
const head = app._context.provides.usehead;
|
@@ -2636,55 +2600,22 @@ function createTheme(options) {
|
|
2636
2600
|
updateStyles();
|
2637
2601
|
}
|
2638
2602
|
function updateStyles() {
|
2639
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2603
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
2640
2604
|
}
|
2641
2605
|
}
|
2642
2606
|
}
|
2643
|
-
|
2644
|
-
if (!themeNames.value.includes(themeName)) {
|
2645
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2646
|
-
return;
|
2647
|
-
}
|
2648
|
-
name.value = themeName;
|
2649
|
-
}
|
2650
|
-
function cycle() {
|
2651
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2652
|
-
const currentIndex = themeArray.indexOf(name.value);
|
2653
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2654
|
-
change(themeArray[nextIndex]);
|
2655
|
-
}
|
2656
|
-
function toggle() {
|
2657
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2658
|
-
cycle(themeArray);
|
2659
|
-
}
|
2660
|
-
const globalName = new Proxy(name, {
|
2661
|
-
get(target, prop) {
|
2662
|
-
return target[prop];
|
2663
|
-
},
|
2664
|
-
set(target, prop, val) {
|
2665
|
-
if (prop === 'value') {
|
2666
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2667
|
-
}
|
2668
|
-
// @ts-expect-error
|
2669
|
-
target[prop] = val;
|
2670
|
-
return true;
|
2671
|
-
}
|
2672
|
-
});
|
2607
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
2673
2608
|
return {
|
2674
2609
|
install,
|
2675
|
-
change,
|
2676
|
-
cycle,
|
2677
|
-
toggle,
|
2678
2610
|
isDisabled: parsedOptions.isDisabled,
|
2679
2611
|
name,
|
2680
2612
|
themes,
|
2681
2613
|
current,
|
2682
2614
|
computedThemes,
|
2683
|
-
prefix: parsedOptions.prefix,
|
2684
2615
|
themeClasses,
|
2685
2616
|
styles,
|
2686
2617
|
global: {
|
2687
|
-
name
|
2618
|
+
name,
|
2688
2619
|
current
|
2689
2620
|
}
|
2690
2621
|
};
|
@@ -2695,7 +2626,7 @@ function provideTheme(props) {
|
|
2695
2626
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2696
2627
|
const name = toRef(() => props.theme ?? theme.name.value);
|
2697
2628
|
const current = toRef(() => theme.themes.value[name.value]);
|
2698
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
2629
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
2699
2630
|
const newTheme = {
|
2700
2631
|
...theme,
|
2701
2632
|
name,
|
@@ -4242,15 +4173,9 @@ function useVariant(props) {
|
|
4242
4173
|
};
|
4243
4174
|
}
|
4244
4175
|
|
4245
|
-
// Types
|
4246
|
-
|
4247
4176
|
const makeVBtnGroupProps = propsFactory({
|
4248
4177
|
baseColor: String,
|
4249
4178
|
divided: Boolean,
|
4250
|
-
direction: {
|
4251
|
-
type: String,
|
4252
|
-
default: 'horizontal'
|
4253
|
-
},
|
4254
4179
|
...makeBorderProps(),
|
4255
4180
|
...makeComponentProps(),
|
4256
4181
|
...makeDensityProps(),
|
@@ -4284,7 +4209,7 @@ const VBtnGroup = genericComponent()({
|
|
4284
4209
|
} = useRounded(props);
|
4285
4210
|
provideDefaults({
|
4286
4211
|
VBtn: {
|
4287
|
-
height:
|
4212
|
+
height: 'auto',
|
4288
4213
|
baseColor: toRef(() => props.baseColor),
|
4289
4214
|
color: toRef(() => props.color),
|
4290
4215
|
density: toRef(() => props.density),
|
@@ -4294,7 +4219,7 @@ const VBtnGroup = genericComponent()({
|
|
4294
4219
|
});
|
4295
4220
|
useRender(() => {
|
4296
4221
|
return createVNode(props.tag, {
|
4297
|
-
"class": normalizeClass(['v-btn-group',
|
4222
|
+
"class": normalizeClass(['v-btn-group', {
|
4298
4223
|
'v-btn-group--divided': props.divided
|
4299
4224
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4300
4225
|
"style": normalizeStyle(props.style)
|
@@ -5982,31 +5907,6 @@ const VAppBarTitle = genericComponent()({
|
|
5982
5907
|
// Utilities
|
5983
5908
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5984
5909
|
|
5985
|
-
// Utilities
|
5986
|
-
|
5987
|
-
// Types
|
5988
|
-
|
5989
|
-
// Types
|
5990
|
-
|
5991
|
-
// Composables
|
5992
|
-
const makeIconSizeProps = propsFactory({
|
5993
|
-
iconSize: [Number, String],
|
5994
|
-
iconSizes: {
|
5995
|
-
type: Array,
|
5996
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
5997
|
-
}
|
5998
|
-
}, 'iconSize');
|
5999
|
-
function useIconSizes(props, fallback) {
|
6000
|
-
const iconSize = computed(() => {
|
6001
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6002
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6003
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6004
|
-
});
|
6005
|
-
return {
|
6006
|
-
iconSize
|
6007
|
-
};
|
6008
|
-
}
|
6009
|
-
|
6010
5910
|
// Types
|
6011
5911
|
|
6012
5912
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6046,7 +5946,6 @@ const makeVAlertProps = propsFactory({
|
|
6046
5946
|
...makeDensityProps(),
|
6047
5947
|
...makeDimensionProps(),
|
6048
5948
|
...makeElevationProps(),
|
6049
|
-
...makeIconSizeProps(),
|
6050
5949
|
...makeLocationProps(),
|
6051
5950
|
...makePositionProps(),
|
6052
5951
|
...makeRoundedProps(),
|
@@ -6074,9 +5973,6 @@ const VAlert = genericComponent()({
|
|
6074
5973
|
if (!props.type) return props.icon;
|
6075
5974
|
return props.icon ?? `$${props.type}`;
|
6076
5975
|
});
|
6077
|
-
const {
|
6078
|
-
iconSize
|
6079
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6080
5976
|
const {
|
6081
5977
|
themeClasses
|
6082
5978
|
} = provideTheme(props);
|
@@ -6124,11 +6020,6 @@ const VAlert = genericComponent()({
|
|
6124
6020
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6125
6021
|
const hasTitle = !!(slots.title || props.title);
|
6126
6022
|
const hasClose = !!(slots.close || props.closable);
|
6127
|
-
const iconProps = {
|
6128
|
-
density: props.density,
|
6129
|
-
icon: icon.value,
|
6130
|
-
size: iconSize.value
|
6131
|
-
};
|
6132
6023
|
return isActive.value && createVNode(props.tag, {
|
6133
6024
|
"class": normalizeClass(['v-alert', props.border && {
|
6134
6025
|
'v-alert--border': !!props.border,
|
@@ -6146,14 +6037,19 @@ const VAlert = genericComponent()({
|
|
6146
6037
|
}, null), hasPrepend && createElementVNode("div", {
|
6147
6038
|
"key": "prepend",
|
6148
6039
|
"class": "v-alert__prepend"
|
6149
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6150
|
-
"key": "prepend-icon"
|
6151
|
-
|
6040
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6041
|
+
"key": "prepend-icon",
|
6042
|
+
"density": props.density,
|
6043
|
+
"icon": icon.value,
|
6044
|
+
"size": props.prominent ? 44 : 28
|
6045
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6152
6046
|
"key": "prepend-defaults",
|
6153
6047
|
"disabled": !icon.value,
|
6154
6048
|
"defaults": {
|
6155
6049
|
VIcon: {
|
6156
|
-
|
6050
|
+
density: props.density,
|
6051
|
+
icon: icon.value,
|
6052
|
+
size: props.prominent ? 44 : 28
|
6157
6053
|
}
|
6158
6054
|
}
|
6159
6055
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7678,7 +7574,6 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7678
7574
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7679
7575
|
const makeVSlideGroupProps = propsFactory({
|
7680
7576
|
centerActive: Boolean,
|
7681
|
-
contentClass: null,
|
7682
7577
|
direction: {
|
7683
7578
|
type: String,
|
7684
7579
|
default: 'horizontal'
|
@@ -7991,7 +7886,7 @@ const VSlideGroup = genericComponent()({
|
|
7991
7886
|
})]), createElementVNode("div", {
|
7992
7887
|
"key": "container",
|
7993
7888
|
"ref": containerRef,
|
7994
|
-
"class":
|
7889
|
+
"class": "v-slide-group__container",
|
7995
7890
|
"onScroll": onScroll
|
7996
7891
|
}, [createElementVNode("div", {
|
7997
7892
|
"ref": contentRef,
|
@@ -8353,68 +8248,6 @@ const VChip = genericComponent()({
|
|
8353
8248
|
}
|
8354
8249
|
});
|
8355
8250
|
|
8356
|
-
const makeVDividerProps = propsFactory({
|
8357
|
-
color: String,
|
8358
|
-
inset: Boolean,
|
8359
|
-
length: [Number, String],
|
8360
|
-
opacity: [Number, String],
|
8361
|
-
thickness: [Number, String],
|
8362
|
-
vertical: Boolean,
|
8363
|
-
...makeComponentProps(),
|
8364
|
-
...makeThemeProps()
|
8365
|
-
}, 'VDivider');
|
8366
|
-
const VDivider = genericComponent()({
|
8367
|
-
name: 'VDivider',
|
8368
|
-
props: makeVDividerProps(),
|
8369
|
-
setup(props, _ref) {
|
8370
|
-
let {
|
8371
|
-
attrs,
|
8372
|
-
slots
|
8373
|
-
} = _ref;
|
8374
|
-
const {
|
8375
|
-
themeClasses
|
8376
|
-
} = provideTheme(props);
|
8377
|
-
const {
|
8378
|
-
textColorClasses,
|
8379
|
-
textColorStyles
|
8380
|
-
} = useTextColor(() => props.color);
|
8381
|
-
const dividerStyles = computed(() => {
|
8382
|
-
const styles = {};
|
8383
|
-
if (props.length) {
|
8384
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8385
|
-
}
|
8386
|
-
if (props.thickness) {
|
8387
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8388
|
-
}
|
8389
|
-
return styles;
|
8390
|
-
});
|
8391
|
-
useRender(() => {
|
8392
|
-
const divider = createElementVNode("hr", {
|
8393
|
-
"class": normalizeClass([{
|
8394
|
-
'v-divider': true,
|
8395
|
-
'v-divider--inset': props.inset,
|
8396
|
-
'v-divider--vertical': props.vertical
|
8397
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8398
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8399
|
-
'--v-border-opacity': props.opacity
|
8400
|
-
}, props.style]),
|
8401
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8402
|
-
"role": `${attrs.role || 'separator'}`
|
8403
|
-
}, null);
|
8404
|
-
if (!slots.default) return divider;
|
8405
|
-
return createElementVNode("div", {
|
8406
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
8407
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8408
|
-
'v-divider__wrapper--inset': props.inset
|
8409
|
-
}])
|
8410
|
-
}, [divider, createElementVNode("div", {
|
8411
|
-
"class": "v-divider__content"
|
8412
|
-
}, [slots.default()]), divider]);
|
8413
|
-
});
|
8414
|
-
return {};
|
8415
|
-
}
|
8416
|
-
});
|
8417
|
-
|
8418
8251
|
// Utilities
|
8419
8252
|
|
8420
8253
|
// List
|
@@ -9566,6 +9399,68 @@ const VListSubheader = genericComponent()({
|
|
9566
9399
|
}
|
9567
9400
|
});
|
9568
9401
|
|
9402
|
+
const makeVDividerProps = propsFactory({
|
9403
|
+
color: String,
|
9404
|
+
inset: Boolean,
|
9405
|
+
length: [Number, String],
|
9406
|
+
opacity: [Number, String],
|
9407
|
+
thickness: [Number, String],
|
9408
|
+
vertical: Boolean,
|
9409
|
+
...makeComponentProps(),
|
9410
|
+
...makeThemeProps()
|
9411
|
+
}, 'VDivider');
|
9412
|
+
const VDivider = genericComponent()({
|
9413
|
+
name: 'VDivider',
|
9414
|
+
props: makeVDividerProps(),
|
9415
|
+
setup(props, _ref) {
|
9416
|
+
let {
|
9417
|
+
attrs,
|
9418
|
+
slots
|
9419
|
+
} = _ref;
|
9420
|
+
const {
|
9421
|
+
themeClasses
|
9422
|
+
} = provideTheme(props);
|
9423
|
+
const {
|
9424
|
+
textColorClasses,
|
9425
|
+
textColorStyles
|
9426
|
+
} = useTextColor(() => props.color);
|
9427
|
+
const dividerStyles = computed(() => {
|
9428
|
+
const styles = {};
|
9429
|
+
if (props.length) {
|
9430
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9431
|
+
}
|
9432
|
+
if (props.thickness) {
|
9433
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9434
|
+
}
|
9435
|
+
return styles;
|
9436
|
+
});
|
9437
|
+
useRender(() => {
|
9438
|
+
const divider = createElementVNode("hr", {
|
9439
|
+
"class": normalizeClass([{
|
9440
|
+
'v-divider': true,
|
9441
|
+
'v-divider--inset': props.inset,
|
9442
|
+
'v-divider--vertical': props.vertical
|
9443
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9444
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9445
|
+
'--v-border-opacity': props.opacity
|
9446
|
+
}, props.style]),
|
9447
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9448
|
+
"role": `${attrs.role || 'separator'}`
|
9449
|
+
}, null);
|
9450
|
+
if (!slots.default) return divider;
|
9451
|
+
return createElementVNode("div", {
|
9452
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
9453
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9454
|
+
'v-divider__wrapper--inset': props.inset
|
9455
|
+
}])
|
9456
|
+
}, [divider, createElementVNode("div", {
|
9457
|
+
"class": "v-divider__content"
|
9458
|
+
}, [slots.default()]), divider]);
|
9459
|
+
});
|
9460
|
+
return {};
|
9461
|
+
}
|
9462
|
+
});
|
9463
|
+
|
9569
9464
|
// Types
|
9570
9465
|
|
9571
9466
|
const makeVListChildrenProps = propsFactory({
|
@@ -12493,12 +12388,7 @@ function useVirtual(props, items) {
|
|
12493
12388
|
}
|
12494
12389
|
function calculateOffset(index) {
|
12495
12390
|
index = clamp(index, 0, items.value.length - 1);
|
12496
|
-
|
12497
|
-
const fraction = index % 1;
|
12498
|
-
const next = whole + 1;
|
12499
|
-
const wholeOffset = offsets[whole] || 0;
|
12500
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12501
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12391
|
+
return offsets[index] || 0;
|
12502
12392
|
}
|
12503
12393
|
function calculateIndex(scrollTop) {
|
12504
12394
|
return binaryClosest(offsets, scrollTop);
|
@@ -12852,7 +12742,6 @@ const makeSelectProps = propsFactory({
|
|
12852
12742
|
},
|
12853
12743
|
openOnClear: Boolean,
|
12854
12744
|
itemColor: String,
|
12855
|
-
noAutoScroll: Boolean,
|
12856
12745
|
...makeItemsProps({
|
12857
12746
|
itemChildren: false
|
12858
12747
|
})
|
@@ -13067,7 +12956,7 @@ const VSelect = genericComponent()({
|
|
13067
12956
|
watch(menu, () => {
|
13068
12957
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13069
12958
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13070
|
-
IN_BROWSER &&
|
12959
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13071
12960
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13072
12961
|
});
|
13073
12962
|
}
|
@@ -13159,22 +13048,6 @@ const VSelect = genericComponent()({
|
|
13159
13048
|
key: item.value,
|
13160
13049
|
onClick: () => select(item, null)
|
13161
13050
|
});
|
13162
|
-
if (item.raw.type === 'divider') {
|
13163
|
-
return slots.divider?.({
|
13164
|
-
props: item.raw,
|
13165
|
-
index
|
13166
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13167
|
-
"key": `divider-${index}`
|
13168
|
-
}), null);
|
13169
|
-
}
|
13170
|
-
if (item.raw.type === 'subheader') {
|
13171
|
-
return slots.subheader?.({
|
13172
|
-
props: item.raw,
|
13173
|
-
index
|
13174
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13175
|
-
"key": `subheader-${index}`
|
13176
|
-
}), null);
|
13177
|
-
}
|
13178
13051
|
return slots.item?.({
|
13179
13052
|
item,
|
13180
13053
|
index,
|
@@ -13335,9 +13208,6 @@ function filterItems(items, query, options) {
|
|
13335
13208
|
let match = -1;
|
13336
13209
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13337
13210
|
if (typeof item === 'object') {
|
13338
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13339
|
-
continue;
|
13340
|
-
}
|
13341
13211
|
const filterKeys = keys || Object.keys(transformed);
|
13342
13212
|
for (const key of filterKeys) {
|
13343
13213
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13776,22 +13646,6 @@ const VAutocomplete = genericComponent()({
|
|
13776
13646
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13777
13647
|
onClick: () => select(item, null)
|
13778
13648
|
});
|
13779
|
-
if (item.raw.type === 'divider') {
|
13780
|
-
return slots.divider?.({
|
13781
|
-
props: item.raw,
|
13782
|
-
index
|
13783
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13784
|
-
"key": `divider-${index}`
|
13785
|
-
}), null);
|
13786
|
-
}
|
13787
|
-
if (item.raw.type === 'subheader') {
|
13788
|
-
return slots.subheader?.({
|
13789
|
-
props: item.raw,
|
13790
|
-
index
|
13791
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13792
|
-
"key": `subheader-${index}`
|
13793
|
-
}), null);
|
13794
|
-
}
|
13795
13649
|
return slots.item?.({
|
13796
13650
|
item,
|
13797
13651
|
index,
|
@@ -17387,13 +17241,13 @@ function date(value) {
|
|
17387
17241
|
return null;
|
17388
17242
|
}
|
17389
17243
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17390
|
-
function getWeekdays(locale, firstDayOfWeek
|
17244
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17391
17245
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17392
17246
|
return createRange(7).map(i => {
|
17393
17247
|
const weekday = new Date(sundayJanuarySecond2000);
|
17394
17248
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17395
17249
|
return new Intl.DateTimeFormat(locale, {
|
17396
|
-
weekday:
|
17250
|
+
weekday: 'narrow'
|
17397
17251
|
}).format(weekday);
|
17398
17252
|
});
|
17399
17253
|
}
|
@@ -17857,9 +17711,9 @@ class VuetifyDateAdapter {
|
|
17857
17711
|
getDiff(date, comparing, unit) {
|
17858
17712
|
return getDiff(date, comparing, unit);
|
17859
17713
|
}
|
17860
|
-
getWeekdays(firstDayOfWeek
|
17714
|
+
getWeekdays(firstDayOfWeek) {
|
17861
17715
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17862
|
-
return getWeekdays(this.locale, firstDay
|
17716
|
+
return getWeekdays(this.locale, firstDay);
|
17863
17717
|
}
|
17864
17718
|
getYear(date) {
|
17865
17719
|
return getYear(date);
|
@@ -18202,7 +18056,6 @@ const VCombobox = genericComponent()({
|
|
18202
18056
|
_search.value = val ?? '';
|
18203
18057
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18204
18058
|
model.value = [transformItem$3(props, val)];
|
18205
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18206
18059
|
}
|
18207
18060
|
if (val && props.multiple && props.delimiters?.length) {
|
18208
18061
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18519,22 +18372,6 @@ const VCombobox = genericComponent()({
|
|
18519
18372
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18520
18373
|
onClick: () => select(item, null)
|
18521
18374
|
});
|
18522
|
-
if (item.raw.type === 'divider') {
|
18523
|
-
return slots.divider?.({
|
18524
|
-
props: item.raw,
|
18525
|
-
index
|
18526
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18527
|
-
"key": `divider-${index}`
|
18528
|
-
}), null);
|
18529
|
-
}
|
18530
|
-
if (item.raw.type === 'subheader') {
|
18531
|
-
return slots.subheader?.({
|
18532
|
-
props: item.raw,
|
18533
|
-
index
|
18534
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18535
|
-
"key": `subheader-${index}`
|
18536
|
-
}), null);
|
18537
|
-
}
|
18538
18375
|
return slots.item?.({
|
18539
18376
|
item,
|
18540
18377
|
index,
|
@@ -20414,7 +20251,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20414
20251
|
color: String,
|
20415
20252
|
disableSort: Boolean,
|
20416
20253
|
fixedHeader: Boolean,
|
20417
|
-
lastFixed: Boolean,
|
20418
20254
|
multiSort: Boolean,
|
20419
20255
|
sortAscIcon: {
|
20420
20256
|
type: IconValue,
|
@@ -20461,11 +20297,10 @@ const VDataTableHeaders = genericComponent()({
|
|
20461
20297
|
loaderClasses
|
20462
20298
|
} = useLoader(props);
|
20463
20299
|
function getFixedStyles(column, y) {
|
20464
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20300
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20465
20301
|
return {
|
20466
20302
|
position: 'sticky',
|
20467
|
-
left: column.fixed
|
20468
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20303
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20469
20304
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20470
20305
|
};
|
20471
20306
|
}
|
@@ -22180,8 +22015,7 @@ const makeCalendarProps = propsFactory({
|
|
22180
22015
|
firstDayOfWeek: {
|
22181
22016
|
type: [Number, String],
|
22182
22017
|
default: undefined
|
22183
|
-
}
|
22184
|
-
weekdayFormat: String
|
22018
|
+
}
|
22185
22019
|
}, 'calendar');
|
22186
22020
|
function useCalendar(props) {
|
22187
22021
|
const adapter = useDate();
|
@@ -22429,7 +22263,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22429
22263
|
"ref": daysRef,
|
22430
22264
|
"key": daysInMonth.value[0].date?.toString(),
|
22431
22265
|
"class": "v-date-picker-month__days"
|
22432
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22266
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22433
22267
|
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
22434
22268
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22435
22269
|
const slotProps = {
|
@@ -22472,7 +22306,8 @@ const makeVDatePickerMonthsProps = propsFactory({
|
|
22472
22306
|
min: null,
|
22473
22307
|
max: null,
|
22474
22308
|
modelValue: Number,
|
22475
|
-
year: Number
|
22309
|
+
year: Number,
|
22310
|
+
allowedMonths: [Array, Function]
|
22476
22311
|
}, 'VDatePickerMonths');
|
22477
22312
|
const VDatePickerMonths = genericComponent()({
|
22478
22313
|
name: 'VDatePickerMonths',
|
@@ -22494,7 +22329,7 @@ const VDatePickerMonths = genericComponent()({
|
|
22494
22329
|
}
|
22495
22330
|
return createRange(12).map(i => {
|
22496
22331
|
const text = adapter.format(date, 'monthShort');
|
22497
|
-
const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
22332
|
+
const isDisabled = !!(!isMonthAllowed(i) || props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
22498
22333
|
date = adapter.getNextMonth(date);
|
22499
22334
|
return {
|
22500
22335
|
isDisabled,
|
@@ -22506,6 +22341,15 @@ const VDatePickerMonths = genericComponent()({
|
|
22506
22341
|
watchEffect(() => {
|
22507
22342
|
model.value = model.value ?? adapter.getMonth(adapter.date());
|
22508
22343
|
});
|
22344
|
+
function isMonthAllowed(month) {
|
22345
|
+
if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
|
22346
|
+
return props.allowedMonths.includes(month);
|
22347
|
+
}
|
22348
|
+
if (typeof props.allowedMonths === 'function') {
|
22349
|
+
return props.allowedMonths(month);
|
22350
|
+
}
|
22351
|
+
return true;
|
22352
|
+
}
|
22509
22353
|
useRender(() => createElementVNode("div", {
|
22510
22354
|
"class": "v-date-picker-months",
|
22511
22355
|
"style": normalizeStyle({
|
@@ -22551,7 +22395,8 @@ const makeVDatePickerYearsProps = propsFactory({
|
|
22551
22395
|
height: [String, Number],
|
22552
22396
|
min: null,
|
22553
22397
|
max: null,
|
22554
|
-
modelValue: Number
|
22398
|
+
modelValue: Number,
|
22399
|
+
allowedYears: [Array, Function]
|
22555
22400
|
}, 'VDatePickerYears');
|
22556
22401
|
const VDatePickerYears = genericComponent()({
|
22557
22402
|
name: 'VDatePickerYears',
|
@@ -22583,7 +22428,8 @@ const VDatePickerYears = genericComponent()({
|
|
22583
22428
|
date = adapter.setYear(date, adapter.getYear(date) + 1);
|
22584
22429
|
return {
|
22585
22430
|
text,
|
22586
|
-
value: i
|
22431
|
+
value: i,
|
22432
|
+
isDisabled: !isYearAllowed(i)
|
22587
22433
|
};
|
22588
22434
|
});
|
22589
22435
|
});
|
@@ -22597,6 +22443,15 @@ const VDatePickerYears = genericComponent()({
|
|
22597
22443
|
block: 'center'
|
22598
22444
|
});
|
22599
22445
|
});
|
22446
|
+
function isYearAllowed(year) {
|
22447
|
+
if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
|
22448
|
+
return props.allowedYears.includes(year);
|
22449
|
+
}
|
22450
|
+
if (typeof props.allowedYears === 'function') {
|
22451
|
+
return props.allowedYears(year);
|
22452
|
+
}
|
22453
|
+
return true;
|
22454
|
+
}
|
22600
22455
|
useRender(() => createElementVNode("div", {
|
22601
22456
|
"class": "v-date-picker-years",
|
22602
22457
|
"style": normalizeStyle({
|
@@ -22611,6 +22466,7 @@ const VDatePickerYears = genericComponent()({
|
|
22611
22466
|
color: model.value === year.value ? props.color : undefined,
|
22612
22467
|
rounded: true,
|
22613
22468
|
text: year.text,
|
22469
|
+
disabled: year.isDisabled,
|
22614
22470
|
variant: model.value === year.value ? 'flat' : 'text',
|
22615
22471
|
onClick: () => {
|
22616
22472
|
if (model.value === year.value) {
|
@@ -22760,6 +22616,41 @@ const VDatePicker = genericComponent()({
|
|
22760
22616
|
}
|
22761
22617
|
return targets;
|
22762
22618
|
});
|
22619
|
+
function isAllowedInRange(start, end) {
|
22620
|
+
const allowedDates = props.allowedDates;
|
22621
|
+
if (typeof allowedDates !== 'function') return true;
|
22622
|
+
const days = adapter.getDiff(end, start, 'days');
|
22623
|
+
for (let i = 0; i < days; i++) {
|
22624
|
+
if (allowedDates(adapter.addDays(start, i))) return true;
|
22625
|
+
}
|
22626
|
+
return false;
|
22627
|
+
}
|
22628
|
+
function allowedYears(year) {
|
22629
|
+
if (typeof props.allowedDates === 'function') {
|
22630
|
+
const startOfYear = adapter.parseISO(`${year}-01-01`);
|
22631
|
+
return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
|
22632
|
+
}
|
22633
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
22634
|
+
for (const date of props.allowedDates) {
|
22635
|
+
if (adapter.getYear(adapter.date(date)) === year) return true;
|
22636
|
+
}
|
22637
|
+
return false;
|
22638
|
+
}
|
22639
|
+
return true;
|
22640
|
+
}
|
22641
|
+
function allowedMonths(month) {
|
22642
|
+
if (typeof props.allowedDates === 'function') {
|
22643
|
+
const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
|
22644
|
+
return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
|
22645
|
+
}
|
22646
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
22647
|
+
for (const date of props.allowedDates) {
|
22648
|
+
if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
|
22649
|
+
}
|
22650
|
+
return false;
|
22651
|
+
}
|
22652
|
+
return true;
|
22653
|
+
}
|
22763
22654
|
|
22764
22655
|
// function onClickAppend () {
|
22765
22656
|
// inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
|
@@ -22875,14 +22766,16 @@ const VDatePicker = genericComponent()({
|
|
22875
22766
|
"onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
|
22876
22767
|
"min": minDate.value,
|
22877
22768
|
"max": maxDate.value,
|
22878
|
-
"year": year.value
|
22769
|
+
"year": year.value,
|
22770
|
+
"allowedMonths": allowedMonths
|
22879
22771
|
}), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
22880
22772
|
"key": "date-picker-years"
|
22881
22773
|
}, datePickerYearsProps, {
|
22882
22774
|
"modelValue": year.value,
|
22883
22775
|
"onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
|
22884
22776
|
"min": minDate.value,
|
22885
|
-
"max": maxDate.value
|
22777
|
+
"max": maxDate.value,
|
22778
|
+
"allowedYears": allowedYears
|
22886
22779
|
}), null) : createVNode(VDatePickerMonth, mergeProps({
|
22887
22780
|
"key": "date-picker-month"
|
22888
22781
|
}, datePickerMonthProps, {
|
@@ -24960,10 +24853,6 @@ const makeVNumberInputProps = propsFactory({
|
|
24960
24853
|
type: Number,
|
24961
24854
|
default: 0
|
24962
24855
|
},
|
24963
|
-
minFractionDigits: {
|
24964
|
-
type: Number,
|
24965
|
-
default: null
|
24966
|
-
},
|
24967
24856
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24968
24857
|
}, 'VNumberInput');
|
24969
24858
|
const VNumberInput = genericComponent()({
|
@@ -24994,19 +24883,9 @@ const VNumberInput = genericComponent()({
|
|
24994
24883
|
} = useFocus(props);
|
24995
24884
|
function correctPrecision(val) {
|
24996
24885
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24997
|
-
|
24998
|
-
|
24999
|
-
|
25000
|
-
let fixed = val.toFixed(precision);
|
25001
|
-
if (isFocused.value) {
|
25002
|
-
return Number(fixed).toString(); // trim zeros
|
25003
|
-
}
|
25004
|
-
if ((props.minFractionDigits ?? precision) < precision) {
|
25005
|
-
const trimLimit = precision - props.minFractionDigits;
|
25006
|
-
const [baseDigits, fractionDigits] = fixed.split('.');
|
25007
|
-
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25008
|
-
}
|
25009
|
-
return fixed;
|
24886
|
+
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
24887
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
24888
|
+
: fixed;
|
25010
24889
|
}
|
25011
24890
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25012
24891
|
const _inputText = shallowRef(null);
|
@@ -25046,26 +24925,21 @@ const VNumberInput = genericComponent()({
|
|
25046
24925
|
const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
25047
24926
|
const incrementSlotProps = {
|
25048
24927
|
props: {
|
25049
|
-
style: {
|
25050
|
-
touchAction: 'none'
|
25051
|
-
},
|
25052
24928
|
onClick: onControlClick,
|
25053
24929
|
onPointerup: onControlMouseup,
|
25054
|
-
onPointerdown: onUpControlMousedown
|
24930
|
+
onPointerdown: onUpControlMousedown,
|
24931
|
+
onPointercancel: onControlPointerCancel
|
25055
24932
|
}
|
25056
24933
|
};
|
25057
24934
|
const decrementSlotProps = {
|
25058
24935
|
props: {
|
25059
|
-
style: {
|
25060
|
-
touchAction: 'none'
|
25061
|
-
},
|
25062
24936
|
onClick: onControlClick,
|
25063
24937
|
onPointerup: onControlMouseup,
|
25064
|
-
onPointerdown: onDownControlMousedown
|
24938
|
+
onPointerdown: onDownControlMousedown,
|
24939
|
+
onPointercancel: onControlPointerCancel
|
25065
24940
|
}
|
25066
24941
|
};
|
25067
24942
|
watch(() => props.precision, () => formatInputValue());
|
25068
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
25069
24943
|
onMounted(() => {
|
25070
24944
|
clampModel();
|
25071
24945
|
});
|
@@ -25159,6 +25033,11 @@ const VNumberInput = genericComponent()({
|
|
25159
25033
|
e.stopPropagation();
|
25160
25034
|
holdStart('down');
|
25161
25035
|
}
|
25036
|
+
function onControlPointerCancel(e) {
|
25037
|
+
const el = e.currentTarget;
|
25038
|
+
el?.releasePointerCapture(e.pointerId);
|
25039
|
+
holdStop();
|
25040
|
+
}
|
25162
25041
|
function clampModel() {
|
25163
25042
|
if (controlsDisabled.value) return;
|
25164
25043
|
if (!vTextFieldRef.value) return;
|
@@ -25175,7 +25054,7 @@ const VNumberInput = genericComponent()({
|
|
25175
25054
|
inputText.value = null;
|
25176
25055
|
return;
|
25177
25056
|
}
|
25178
|
-
inputText.value =
|
25057
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25179
25058
|
}
|
25180
25059
|
function trimDecimalZeros() {
|
25181
25060
|
if (controlsDisabled.value) return;
|
@@ -25210,8 +25089,8 @@ const VNumberInput = genericComponent()({
|
|
25210
25089
|
"onClick": onControlClick,
|
25211
25090
|
"onPointerdown": onUpControlMousedown,
|
25212
25091
|
"onPointerup": onControlMouseup,
|
25092
|
+
"onPointercancel": onControlPointerCancel,
|
25213
25093
|
"size": controlNodeSize.value,
|
25214
|
-
"style": "touch-action: none",
|
25215
25094
|
"tabindex": "-1"
|
25216
25095
|
}, null) : createVNode(VDefaultsProvider, {
|
25217
25096
|
"key": "increment-defaults",
|
@@ -25240,8 +25119,8 @@ const VNumberInput = genericComponent()({
|
|
25240
25119
|
"onClick": onControlClick,
|
25241
25120
|
"onPointerdown": onDownControlMousedown,
|
25242
25121
|
"onPointerup": onControlMouseup,
|
25122
|
+
"onPointercancel": onControlPointerCancel,
|
25243
25123
|
"size": controlNodeSize.value,
|
25244
|
-
"style": "touch-action: none",
|
25245
25124
|
"tabindex": "-1"
|
25246
25125
|
}, null) : createVNode(VDefaultsProvider, {
|
25247
25126
|
"key": "decrement-defaults",
|
@@ -25435,10 +25314,9 @@ const VOtpInput = genericComponent()({
|
|
25435
25314
|
e.preventDefault();
|
25436
25315
|
e.stopPropagation();
|
25437
25316
|
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25438
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25439
25317
|
if (isValidNumber(clipboardText)) return;
|
25440
25318
|
model.value = clipboardText.split('');
|
25441
|
-
inputRef.value?.[
|
25319
|
+
inputRef.value?.[index].blur();
|
25442
25320
|
}
|
25443
25321
|
function reset() {
|
25444
25322
|
model.value = [];
|
@@ -30145,6 +30023,11 @@ const makeVIconBtnProps = propsFactory({
|
|
30145
30023
|
hideOverlay: Boolean,
|
30146
30024
|
icon: [String, Function, Object],
|
30147
30025
|
iconColor: String,
|
30026
|
+
iconSize: [Number, String],
|
30027
|
+
iconSizes: {
|
30028
|
+
type: Array,
|
30029
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30030
|
+
},
|
30148
30031
|
loading: Boolean,
|
30149
30032
|
opacity: [Number, String],
|
30150
30033
|
readonly: Boolean,
|
@@ -30164,7 +30047,6 @@ const makeVIconBtnProps = propsFactory({
|
|
30164
30047
|
...makeBorderProps(),
|
30165
30048
|
...makeComponentProps(),
|
30166
30049
|
...makeElevationProps(),
|
30167
|
-
...makeIconSizeProps(),
|
30168
30050
|
...makeRoundedProps(),
|
30169
30051
|
...makeTagProps({
|
30170
30052
|
tag: 'button'
|
@@ -30219,6 +30101,7 @@ const VIconBtn = genericComponent()({
|
|
30219
30101
|
})()
|
30220
30102
|
}));
|
30221
30103
|
const btnSizeMap = new Map(props.sizes);
|
30104
|
+
const iconSizeMap = new Map(props.iconSizes);
|
30222
30105
|
function onClick() {
|
30223
30106
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30224
30107
|
isActive.value = !isActive.value;
|
@@ -30230,12 +30113,12 @@ const VIconBtn = genericComponent()({
|
|
30230
30113
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30231
30114
|
const btnHeight = props.height ?? btnSize;
|
30232
30115
|
const btnWidth = props.width ?? btnSize;
|
30233
|
-
const
|
30234
|
-
|
30235
|
-
|
30116
|
+
const _iconSize = props.iconSize;
|
30117
|
+
const hasNamedIconSize = iconSizeMap.has(_iconSize);
|
30118
|
+
const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
|
30236
30119
|
const iconProps = {
|
30237
30120
|
icon,
|
30238
|
-
size: iconSize
|
30121
|
+
size: iconSize,
|
30239
30122
|
iconColor: props.iconColor,
|
30240
30123
|
opacity: props.opacity
|
30241
30124
|
};
|
@@ -30278,7 +30161,7 @@ const VIconBtn = genericComponent()({
|
|
30278
30161
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30279
30162
|
"indeterminate": "disable-shrink",
|
30280
30163
|
"width": "2",
|
30281
|
-
"size": iconSize
|
30164
|
+
"size": iconSize
|
30282
30165
|
}, null)])]
|
30283
30166
|
});
|
30284
30167
|
});
|
@@ -32188,7 +32071,7 @@ function createVuetify$1() {
|
|
32188
32071
|
};
|
32189
32072
|
});
|
32190
32073
|
}
|
32191
|
-
const version$1 = "3.8.7-
|
32074
|
+
const version$1 = "3.8.7-master.2025-05-29";
|
32192
32075
|
createVuetify$1.version = version$1;
|
32193
32076
|
|
32194
32077
|
// Vue's inject() can only be used in setup
|
@@ -32486,7 +32369,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
32486
32369
|
|
32487
32370
|
/* eslint-disable local-rules/sort-imports */
|
32488
32371
|
|
32489
|
-
const version = "3.8.7-
|
32372
|
+
const version = "3.8.7-master.2025-05-29";
|
32490
32373
|
|
32491
32374
|
/* eslint-disable local-rules/sort-imports */
|
32492
32375
|
|