@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.js
CHANGED
@@ -1,5 +1,5 @@
|
|
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
|
*/
|
@@ -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"); }
|
@@ -2342,7 +2341,6 @@
|
|
2342
2341
|
function genDefaults$2() {
|
2343
2342
|
return {
|
2344
2343
|
defaultTheme: 'light',
|
2345
|
-
prefix: 'v-',
|
2346
2344
|
variations: {
|
2347
2345
|
colors: [],
|
2348
2346
|
lighten: 0,
|
@@ -2424,10 +2422,7 @@
|
|
2424
2422
|
}
|
2425
2423
|
}
|
2426
2424
|
},
|
2427
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2428
|
-
scoped: false,
|
2429
|
-
unimportant: false,
|
2430
|
-
utilities: true
|
2425
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2431
2426
|
};
|
2432
2427
|
}
|
2433
2428
|
function parseThemeOptions() {
|
@@ -2450,21 +2445,21 @@
|
|
2450
2445
|
function createCssClass(lines, selector, content, scope) {
|
2451
2446
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2452
2447
|
}
|
2453
|
-
function genCssVariables(theme
|
2448
|
+
function genCssVariables(theme) {
|
2454
2449
|
const lightOverlay = theme.dark ? 2 : 1;
|
2455
2450
|
const darkOverlay = theme.dark ? 1 : 2;
|
2456
2451
|
const variables = [];
|
2457
2452
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2458
2453
|
const rgb = parseColor(value);
|
2459
|
-
variables.push(
|
2454
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2460
2455
|
if (!key.startsWith('on-')) {
|
2461
|
-
variables.push(
|
2456
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2462
2457
|
}
|
2463
2458
|
}
|
2464
2459
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2465
2460
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2466
2461
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2467
|
-
variables.push(
|
2462
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2468
2463
|
}
|
2469
2464
|
return variables;
|
2470
2465
|
}
|
@@ -2508,8 +2503,7 @@
|
|
2508
2503
|
const scopeSelector = `:where(${scope})`;
|
2509
2504
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2510
2505
|
}
|
2511
|
-
function upsertStyles(
|
2512
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2506
|
+
function upsertStyles(styleEl, styles) {
|
2513
2507
|
if (!styleEl) return;
|
2514
2508
|
styleEl.innerHTML = styles;
|
2515
2509
|
}
|
@@ -2529,17 +2523,8 @@
|
|
2529
2523
|
// Composables
|
2530
2524
|
function createTheme(options) {
|
2531
2525
|
const parsedOptions = parseThemeOptions(options);
|
2532
|
-
const
|
2526
|
+
const name = vue.shallowRef(parsedOptions.defaultTheme);
|
2533
2527
|
const themes = vue.ref(parsedOptions.themes);
|
2534
|
-
const systemName = vue.shallowRef('light');
|
2535
|
-
const name = vue.computed({
|
2536
|
-
get() {
|
2537
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
2538
|
-
},
|
2539
|
-
set(val) {
|
2540
|
-
_name.value = val;
|
2541
|
-
}
|
2542
|
-
});
|
2543
2528
|
const computedThemes = vue.computed(() => {
|
2544
2529
|
const acc = {};
|
2545
2530
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2560,49 +2545,28 @@
|
|
2560
2545
|
const current = vue.toRef(() => computedThemes.value[name.value]);
|
2561
2546
|
const styles = vue.computed(() => {
|
2562
2547
|
const lines = [];
|
2563
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
2564
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2565
2548
|
if (current.value?.dark) {
|
2566
2549
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2567
2550
|
}
|
2568
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
2551
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2569
2552
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2570
|
-
createCssClass(lines,
|
2571
|
-
}
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2577
|
-
|
2578
|
-
|
2579
|
-
}
|
2580
|
-
|
2581
|
-
|
2582
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2583
|
-
}
|
2553
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
2554
|
+
}
|
2555
|
+
const bgLines = [];
|
2556
|
+
const fgLines = [];
|
2557
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2558
|
+
for (const key of colors) {
|
2559
|
+
if (key.startsWith('on-')) {
|
2560
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2561
|
+
} else {
|
2562
|
+
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);
|
2563
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2564
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
2584
2565
|
}
|
2585
|
-
lines.push(...bgLines, ...fgLines);
|
2586
2566
|
}
|
2567
|
+
lines.push(...bgLines, ...fgLines);
|
2587
2568
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2588
2569
|
});
|
2589
|
-
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2590
|
-
const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
|
2591
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
2592
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2593
|
-
function updateSystemName() {
|
2594
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
2595
|
-
}
|
2596
|
-
updateSystemName();
|
2597
|
-
media.addEventListener('change', updateSystemName, {
|
2598
|
-
passive: true
|
2599
|
-
});
|
2600
|
-
if (vue.getCurrentScope()) {
|
2601
|
-
vue.onScopeDispose(() => {
|
2602
|
-
media.removeEventListener('change', updateSystemName);
|
2603
|
-
});
|
2604
|
-
}
|
2605
|
-
}
|
2606
2570
|
function install(app) {
|
2607
2571
|
if (parsedOptions.isDisabled) return;
|
2608
2572
|
const head = app._context.provides.usehead;
|
@@ -2640,55 +2604,22 @@
|
|
2640
2604
|
updateStyles();
|
2641
2605
|
}
|
2642
2606
|
function updateStyles() {
|
2643
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2607
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
2644
2608
|
}
|
2645
2609
|
}
|
2646
2610
|
}
|
2647
|
-
|
2648
|
-
if (!themeNames.value.includes(themeName)) {
|
2649
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2650
|
-
return;
|
2651
|
-
}
|
2652
|
-
name.value = themeName;
|
2653
|
-
}
|
2654
|
-
function cycle() {
|
2655
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2656
|
-
const currentIndex = themeArray.indexOf(name.value);
|
2657
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2658
|
-
change(themeArray[nextIndex]);
|
2659
|
-
}
|
2660
|
-
function toggle() {
|
2661
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2662
|
-
cycle(themeArray);
|
2663
|
-
}
|
2664
|
-
const globalName = new Proxy(name, {
|
2665
|
-
get(target, prop) {
|
2666
|
-
return target[prop];
|
2667
|
-
},
|
2668
|
-
set(target, prop, val) {
|
2669
|
-
if (prop === 'value') {
|
2670
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2671
|
-
}
|
2672
|
-
// @ts-expect-error
|
2673
|
-
target[prop] = val;
|
2674
|
-
return true;
|
2675
|
-
}
|
2676
|
-
});
|
2611
|
+
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
2677
2612
|
return {
|
2678
2613
|
install,
|
2679
|
-
change,
|
2680
|
-
cycle,
|
2681
|
-
toggle,
|
2682
2614
|
isDisabled: parsedOptions.isDisabled,
|
2683
2615
|
name,
|
2684
2616
|
themes,
|
2685
2617
|
current,
|
2686
2618
|
computedThemes,
|
2687
|
-
prefix: parsedOptions.prefix,
|
2688
2619
|
themeClasses,
|
2689
2620
|
styles,
|
2690
2621
|
global: {
|
2691
|
-
name
|
2622
|
+
name,
|
2692
2623
|
current
|
2693
2624
|
}
|
2694
2625
|
};
|
@@ -2699,7 +2630,7 @@
|
|
2699
2630
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2700
2631
|
const name = vue.toRef(() => props.theme ?? theme.name.value);
|
2701
2632
|
const current = vue.toRef(() => theme.themes.value[name.value]);
|
2702
|
-
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined :
|
2633
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
2703
2634
|
const newTheme = {
|
2704
2635
|
...theme,
|
2705
2636
|
name,
|
@@ -4246,15 +4177,9 @@
|
|
4246
4177
|
};
|
4247
4178
|
}
|
4248
4179
|
|
4249
|
-
// Types
|
4250
|
-
|
4251
4180
|
const makeVBtnGroupProps = propsFactory({
|
4252
4181
|
baseColor: String,
|
4253
4182
|
divided: Boolean,
|
4254
|
-
direction: {
|
4255
|
-
type: String,
|
4256
|
-
default: 'horizontal'
|
4257
|
-
},
|
4258
4183
|
...makeBorderProps(),
|
4259
4184
|
...makeComponentProps(),
|
4260
4185
|
...makeDensityProps(),
|
@@ -4288,7 +4213,7 @@
|
|
4288
4213
|
} = useRounded(props);
|
4289
4214
|
provideDefaults({
|
4290
4215
|
VBtn: {
|
4291
|
-
height:
|
4216
|
+
height: 'auto',
|
4292
4217
|
baseColor: vue.toRef(() => props.baseColor),
|
4293
4218
|
color: vue.toRef(() => props.color),
|
4294
4219
|
density: vue.toRef(() => props.density),
|
@@ -4298,7 +4223,7 @@
|
|
4298
4223
|
});
|
4299
4224
|
useRender(() => {
|
4300
4225
|
return vue.createVNode(props.tag, {
|
4301
|
-
"class": vue.normalizeClass(['v-btn-group',
|
4226
|
+
"class": vue.normalizeClass(['v-btn-group', {
|
4302
4227
|
'v-btn-group--divided': props.divided
|
4303
4228
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4304
4229
|
"style": vue.normalizeStyle(props.style)
|
@@ -5986,31 +5911,6 @@
|
|
5986
5911
|
// Utilities
|
5987
5912
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
5988
5913
|
|
5989
|
-
// Utilities
|
5990
|
-
|
5991
|
-
// Types
|
5992
|
-
|
5993
|
-
// Types
|
5994
|
-
|
5995
|
-
// Composables
|
5996
|
-
const makeIconSizeProps = propsFactory({
|
5997
|
-
iconSize: [Number, String],
|
5998
|
-
iconSizes: {
|
5999
|
-
type: Array,
|
6000
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6001
|
-
}
|
6002
|
-
}, 'iconSize');
|
6003
|
-
function useIconSizes(props, fallback) {
|
6004
|
-
const iconSize = vue.computed(() => {
|
6005
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6006
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6007
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6008
|
-
});
|
6009
|
-
return {
|
6010
|
-
iconSize
|
6011
|
-
};
|
6012
|
-
}
|
6013
|
-
|
6014
5914
|
// Types
|
6015
5915
|
|
6016
5916
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6050,7 +5950,6 @@
|
|
6050
5950
|
...makeDensityProps(),
|
6051
5951
|
...makeDimensionProps(),
|
6052
5952
|
...makeElevationProps(),
|
6053
|
-
...makeIconSizeProps(),
|
6054
5953
|
...makeLocationProps(),
|
6055
5954
|
...makePositionProps(),
|
6056
5955
|
...makeRoundedProps(),
|
@@ -6078,9 +5977,6 @@
|
|
6078
5977
|
if (!props.type) return props.icon;
|
6079
5978
|
return props.icon ?? `$${props.type}`;
|
6080
5979
|
});
|
6081
|
-
const {
|
6082
|
-
iconSize
|
6083
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6084
5980
|
const {
|
6085
5981
|
themeClasses
|
6086
5982
|
} = provideTheme(props);
|
@@ -6128,11 +6024,6 @@
|
|
6128
6024
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6129
6025
|
const hasTitle = !!(slots.title || props.title);
|
6130
6026
|
const hasClose = !!(slots.close || props.closable);
|
6131
|
-
const iconProps = {
|
6132
|
-
density: props.density,
|
6133
|
-
icon: icon.value,
|
6134
|
-
size: iconSize.value
|
6135
|
-
};
|
6136
6027
|
return isActive.value && vue.createVNode(props.tag, {
|
6137
6028
|
"class": vue.normalizeClass(['v-alert', props.border && {
|
6138
6029
|
'v-alert--border': !!props.border,
|
@@ -6150,14 +6041,19 @@
|
|
6150
6041
|
}, null), hasPrepend && vue.createElementVNode("div", {
|
6151
6042
|
"key": "prepend",
|
6152
6043
|
"class": "v-alert__prepend"
|
6153
|
-
}, [!slots.prepend ? vue.createVNode(VIcon,
|
6154
|
-
"key": "prepend-icon"
|
6155
|
-
|
6044
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
6045
|
+
"key": "prepend-icon",
|
6046
|
+
"density": props.density,
|
6047
|
+
"icon": icon.value,
|
6048
|
+
"size": props.prominent ? 44 : 28
|
6049
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
6156
6050
|
"key": "prepend-defaults",
|
6157
6051
|
"disabled": !icon.value,
|
6158
6052
|
"defaults": {
|
6159
6053
|
VIcon: {
|
6160
|
-
|
6054
|
+
density: props.density,
|
6055
|
+
icon: icon.value,
|
6056
|
+
size: props.prominent ? 44 : 28
|
6161
6057
|
}
|
6162
6058
|
}
|
6163
6059
|
}, slots.prepend)]), vue.createElementVNode("div", {
|
@@ -7682,7 +7578,6 @@
|
|
7682
7578
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7683
7579
|
const makeVSlideGroupProps = propsFactory({
|
7684
7580
|
centerActive: Boolean,
|
7685
|
-
contentClass: null,
|
7686
7581
|
direction: {
|
7687
7582
|
type: String,
|
7688
7583
|
default: 'horizontal'
|
@@ -7995,7 +7890,7 @@
|
|
7995
7890
|
})]), vue.createElementVNode("div", {
|
7996
7891
|
"key": "container",
|
7997
7892
|
"ref": containerRef,
|
7998
|
-
"class":
|
7893
|
+
"class": "v-slide-group__container",
|
7999
7894
|
"onScroll": onScroll
|
8000
7895
|
}, [vue.createElementVNode("div", {
|
8001
7896
|
"ref": contentRef,
|
@@ -8357,68 +8252,6 @@
|
|
8357
8252
|
}
|
8358
8253
|
});
|
8359
8254
|
|
8360
|
-
const makeVDividerProps = propsFactory({
|
8361
|
-
color: String,
|
8362
|
-
inset: Boolean,
|
8363
|
-
length: [Number, String],
|
8364
|
-
opacity: [Number, String],
|
8365
|
-
thickness: [Number, String],
|
8366
|
-
vertical: Boolean,
|
8367
|
-
...makeComponentProps(),
|
8368
|
-
...makeThemeProps()
|
8369
|
-
}, 'VDivider');
|
8370
|
-
const VDivider = genericComponent()({
|
8371
|
-
name: 'VDivider',
|
8372
|
-
props: makeVDividerProps(),
|
8373
|
-
setup(props, _ref) {
|
8374
|
-
let {
|
8375
|
-
attrs,
|
8376
|
-
slots
|
8377
|
-
} = _ref;
|
8378
|
-
const {
|
8379
|
-
themeClasses
|
8380
|
-
} = provideTheme(props);
|
8381
|
-
const {
|
8382
|
-
textColorClasses,
|
8383
|
-
textColorStyles
|
8384
|
-
} = useTextColor(() => props.color);
|
8385
|
-
const dividerStyles = vue.computed(() => {
|
8386
|
-
const styles = {};
|
8387
|
-
if (props.length) {
|
8388
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8389
|
-
}
|
8390
|
-
if (props.thickness) {
|
8391
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8392
|
-
}
|
8393
|
-
return styles;
|
8394
|
-
});
|
8395
|
-
useRender(() => {
|
8396
|
-
const divider = vue.createElementVNode("hr", {
|
8397
|
-
"class": vue.normalizeClass([{
|
8398
|
-
'v-divider': true,
|
8399
|
-
'v-divider--inset': props.inset,
|
8400
|
-
'v-divider--vertical': props.vertical
|
8401
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8402
|
-
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8403
|
-
'--v-border-opacity': props.opacity
|
8404
|
-
}, props.style]),
|
8405
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8406
|
-
"role": `${attrs.role || 'separator'}`
|
8407
|
-
}, null);
|
8408
|
-
if (!slots.default) return divider;
|
8409
|
-
return vue.createElementVNode("div", {
|
8410
|
-
"class": vue.normalizeClass(['v-divider__wrapper', {
|
8411
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8412
|
-
'v-divider__wrapper--inset': props.inset
|
8413
|
-
}])
|
8414
|
-
}, [divider, vue.createElementVNode("div", {
|
8415
|
-
"class": "v-divider__content"
|
8416
|
-
}, [slots.default()]), divider]);
|
8417
|
-
});
|
8418
|
-
return {};
|
8419
|
-
}
|
8420
|
-
});
|
8421
|
-
|
8422
8255
|
// Utilities
|
8423
8256
|
|
8424
8257
|
// List
|
@@ -9570,6 +9403,68 @@
|
|
9570
9403
|
}
|
9571
9404
|
});
|
9572
9405
|
|
9406
|
+
const makeVDividerProps = propsFactory({
|
9407
|
+
color: String,
|
9408
|
+
inset: Boolean,
|
9409
|
+
length: [Number, String],
|
9410
|
+
opacity: [Number, String],
|
9411
|
+
thickness: [Number, String],
|
9412
|
+
vertical: Boolean,
|
9413
|
+
...makeComponentProps(),
|
9414
|
+
...makeThemeProps()
|
9415
|
+
}, 'VDivider');
|
9416
|
+
const VDivider = genericComponent()({
|
9417
|
+
name: 'VDivider',
|
9418
|
+
props: makeVDividerProps(),
|
9419
|
+
setup(props, _ref) {
|
9420
|
+
let {
|
9421
|
+
attrs,
|
9422
|
+
slots
|
9423
|
+
} = _ref;
|
9424
|
+
const {
|
9425
|
+
themeClasses
|
9426
|
+
} = provideTheme(props);
|
9427
|
+
const {
|
9428
|
+
textColorClasses,
|
9429
|
+
textColorStyles
|
9430
|
+
} = useTextColor(() => props.color);
|
9431
|
+
const dividerStyles = vue.computed(() => {
|
9432
|
+
const styles = {};
|
9433
|
+
if (props.length) {
|
9434
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9435
|
+
}
|
9436
|
+
if (props.thickness) {
|
9437
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9438
|
+
}
|
9439
|
+
return styles;
|
9440
|
+
});
|
9441
|
+
useRender(() => {
|
9442
|
+
const divider = vue.createElementVNode("hr", {
|
9443
|
+
"class": vue.normalizeClass([{
|
9444
|
+
'v-divider': true,
|
9445
|
+
'v-divider--inset': props.inset,
|
9446
|
+
'v-divider--vertical': props.vertical
|
9447
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9448
|
+
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9449
|
+
'--v-border-opacity': props.opacity
|
9450
|
+
}, props.style]),
|
9451
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9452
|
+
"role": `${attrs.role || 'separator'}`
|
9453
|
+
}, null);
|
9454
|
+
if (!slots.default) return divider;
|
9455
|
+
return vue.createElementVNode("div", {
|
9456
|
+
"class": vue.normalizeClass(['v-divider__wrapper', {
|
9457
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9458
|
+
'v-divider__wrapper--inset': props.inset
|
9459
|
+
}])
|
9460
|
+
}, [divider, vue.createElementVNode("div", {
|
9461
|
+
"class": "v-divider__content"
|
9462
|
+
}, [slots.default()]), divider]);
|
9463
|
+
});
|
9464
|
+
return {};
|
9465
|
+
}
|
9466
|
+
});
|
9467
|
+
|
9573
9468
|
// Types
|
9574
9469
|
|
9575
9470
|
const makeVListChildrenProps = propsFactory({
|
@@ -12497,12 +12392,7 @@
|
|
12497
12392
|
}
|
12498
12393
|
function calculateOffset(index) {
|
12499
12394
|
index = clamp(index, 0, items.value.length - 1);
|
12500
|
-
|
12501
|
-
const fraction = index % 1;
|
12502
|
-
const next = whole + 1;
|
12503
|
-
const wholeOffset = offsets[whole] || 0;
|
12504
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12505
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12395
|
+
return offsets[index] || 0;
|
12506
12396
|
}
|
12507
12397
|
function calculateIndex(scrollTop) {
|
12508
12398
|
return binaryClosest(offsets, scrollTop);
|
@@ -12856,7 +12746,6 @@
|
|
12856
12746
|
},
|
12857
12747
|
openOnClear: Boolean,
|
12858
12748
|
itemColor: String,
|
12859
|
-
noAutoScroll: Boolean,
|
12860
12749
|
...makeItemsProps({
|
12861
12750
|
itemChildren: false
|
12862
12751
|
})
|
@@ -13071,7 +12960,7 @@
|
|
13071
12960
|
vue.watch(menu, () => {
|
13072
12961
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13073
12962
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13074
|
-
IN_BROWSER &&
|
12963
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13075
12964
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13076
12965
|
});
|
13077
12966
|
}
|
@@ -13163,22 +13052,6 @@
|
|
13163
13052
|
key: item.value,
|
13164
13053
|
onClick: () => select(item, null)
|
13165
13054
|
});
|
13166
|
-
if (item.raw.type === 'divider') {
|
13167
|
-
return slots.divider?.({
|
13168
|
-
props: item.raw,
|
13169
|
-
index
|
13170
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13171
|
-
"key": `divider-${index}`
|
13172
|
-
}), null);
|
13173
|
-
}
|
13174
|
-
if (item.raw.type === 'subheader') {
|
13175
|
-
return slots.subheader?.({
|
13176
|
-
props: item.raw,
|
13177
|
-
index
|
13178
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13179
|
-
"key": `subheader-${index}`
|
13180
|
-
}), null);
|
13181
|
-
}
|
13182
13055
|
return slots.item?.({
|
13183
13056
|
item,
|
13184
13057
|
index,
|
@@ -13339,9 +13212,6 @@
|
|
13339
13212
|
let match = -1;
|
13340
13213
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13341
13214
|
if (typeof item === 'object') {
|
13342
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13343
|
-
continue;
|
13344
|
-
}
|
13345
13215
|
const filterKeys = keys || Object.keys(transformed);
|
13346
13216
|
for (const key of filterKeys) {
|
13347
13217
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13780,22 +13650,6 @@
|
|
13780
13650
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13781
13651
|
onClick: () => select(item, null)
|
13782
13652
|
});
|
13783
|
-
if (item.raw.type === 'divider') {
|
13784
|
-
return slots.divider?.({
|
13785
|
-
props: item.raw,
|
13786
|
-
index
|
13787
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13788
|
-
"key": `divider-${index}`
|
13789
|
-
}), null);
|
13790
|
-
}
|
13791
|
-
if (item.raw.type === 'subheader') {
|
13792
|
-
return slots.subheader?.({
|
13793
|
-
props: item.raw,
|
13794
|
-
index
|
13795
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13796
|
-
"key": `subheader-${index}`
|
13797
|
-
}), null);
|
13798
|
-
}
|
13799
13653
|
return slots.item?.({
|
13800
13654
|
item,
|
13801
13655
|
index,
|
@@ -17391,13 +17245,13 @@
|
|
17391
17245
|
return null;
|
17392
17246
|
}
|
17393
17247
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17394
|
-
function getWeekdays(locale, firstDayOfWeek
|
17248
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17395
17249
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17396
17250
|
return createRange(7).map(i => {
|
17397
17251
|
const weekday = new Date(sundayJanuarySecond2000);
|
17398
17252
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17399
17253
|
return new Intl.DateTimeFormat(locale, {
|
17400
|
-
weekday:
|
17254
|
+
weekday: 'narrow'
|
17401
17255
|
}).format(weekday);
|
17402
17256
|
});
|
17403
17257
|
}
|
@@ -17861,9 +17715,9 @@
|
|
17861
17715
|
getDiff(date, comparing, unit) {
|
17862
17716
|
return getDiff(date, comparing, unit);
|
17863
17717
|
}
|
17864
|
-
getWeekdays(firstDayOfWeek
|
17718
|
+
getWeekdays(firstDayOfWeek) {
|
17865
17719
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17866
|
-
return getWeekdays(this.locale, firstDay
|
17720
|
+
return getWeekdays(this.locale, firstDay);
|
17867
17721
|
}
|
17868
17722
|
getYear(date) {
|
17869
17723
|
return getYear(date);
|
@@ -18206,7 +18060,6 @@
|
|
18206
18060
|
_search.value = val ?? '';
|
18207
18061
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18208
18062
|
model.value = [transformItem$3(props, val)];
|
18209
|
-
vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18210
18063
|
}
|
18211
18064
|
if (val && props.multiple && props.delimiters?.length) {
|
18212
18065
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18523,22 +18376,6 @@
|
|
18523
18376
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18524
18377
|
onClick: () => select(item, null)
|
18525
18378
|
});
|
18526
|
-
if (item.raw.type === 'divider') {
|
18527
|
-
return slots.divider?.({
|
18528
|
-
props: item.raw,
|
18529
|
-
index
|
18530
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
18531
|
-
"key": `divider-${index}`
|
18532
|
-
}), null);
|
18533
|
-
}
|
18534
|
-
if (item.raw.type === 'subheader') {
|
18535
|
-
return slots.subheader?.({
|
18536
|
-
props: item.raw,
|
18537
|
-
index
|
18538
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
18539
|
-
"key": `subheader-${index}`
|
18540
|
-
}), null);
|
18541
|
-
}
|
18542
18379
|
return slots.item?.({
|
18543
18380
|
item,
|
18544
18381
|
index,
|
@@ -20418,7 +20255,6 @@
|
|
20418
20255
|
color: String,
|
20419
20256
|
disableSort: Boolean,
|
20420
20257
|
fixedHeader: Boolean,
|
20421
|
-
lastFixed: Boolean,
|
20422
20258
|
multiSort: Boolean,
|
20423
20259
|
sortAscIcon: {
|
20424
20260
|
type: IconValue,
|
@@ -20465,11 +20301,10 @@
|
|
20465
20301
|
loaderClasses
|
20466
20302
|
} = useLoader(props);
|
20467
20303
|
function getFixedStyles(column, y) {
|
20468
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20304
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20469
20305
|
return {
|
20470
20306
|
position: 'sticky',
|
20471
|
-
left: column.fixed
|
20472
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20307
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20473
20308
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20474
20309
|
};
|
20475
20310
|
}
|
@@ -22184,8 +22019,7 @@
|
|
22184
22019
|
firstDayOfWeek: {
|
22185
22020
|
type: [Number, String],
|
22186
22021
|
default: undefined
|
22187
|
-
}
|
22188
|
-
weekdayFormat: String
|
22022
|
+
}
|
22189
22023
|
}, 'calendar');
|
22190
22024
|
function useCalendar(props) {
|
22191
22025
|
const adapter = useDate();
|
@@ -22433,7 +22267,7 @@
|
|
22433
22267
|
"ref": daysRef,
|
22434
22268
|
"key": daysInMonth.value[0].date?.toString(),
|
22435
22269
|
"class": "v-date-picker-month__days"
|
22436
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22270
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
|
22437
22271
|
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
22438
22272
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22439
22273
|
const slotProps = {
|
@@ -22476,7 +22310,8 @@
|
|
22476
22310
|
min: null,
|
22477
22311
|
max: null,
|
22478
22312
|
modelValue: Number,
|
22479
|
-
year: Number
|
22313
|
+
year: Number,
|
22314
|
+
allowedMonths: [Array, Function]
|
22480
22315
|
}, 'VDatePickerMonths');
|
22481
22316
|
const VDatePickerMonths = genericComponent()({
|
22482
22317
|
name: 'VDatePickerMonths',
|
@@ -22498,7 +22333,7 @@
|
|
22498
22333
|
}
|
22499
22334
|
return createRange(12).map(i => {
|
22500
22335
|
const text = adapter.format(date, 'monthShort');
|
22501
|
-
const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
22336
|
+
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))));
|
22502
22337
|
date = adapter.getNextMonth(date);
|
22503
22338
|
return {
|
22504
22339
|
isDisabled,
|
@@ -22510,6 +22345,15 @@
|
|
22510
22345
|
vue.watchEffect(() => {
|
22511
22346
|
model.value = model.value ?? adapter.getMonth(adapter.date());
|
22512
22347
|
});
|
22348
|
+
function isMonthAllowed(month) {
|
22349
|
+
if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
|
22350
|
+
return props.allowedMonths.includes(month);
|
22351
|
+
}
|
22352
|
+
if (typeof props.allowedMonths === 'function') {
|
22353
|
+
return props.allowedMonths(month);
|
22354
|
+
}
|
22355
|
+
return true;
|
22356
|
+
}
|
22513
22357
|
useRender(() => vue.createElementVNode("div", {
|
22514
22358
|
"class": "v-date-picker-months",
|
22515
22359
|
"style": vue.normalizeStyle({
|
@@ -22555,7 +22399,8 @@
|
|
22555
22399
|
height: [String, Number],
|
22556
22400
|
min: null,
|
22557
22401
|
max: null,
|
22558
|
-
modelValue: Number
|
22402
|
+
modelValue: Number,
|
22403
|
+
allowedYears: [Array, Function]
|
22559
22404
|
}, 'VDatePickerYears');
|
22560
22405
|
const VDatePickerYears = genericComponent()({
|
22561
22406
|
name: 'VDatePickerYears',
|
@@ -22587,7 +22432,8 @@
|
|
22587
22432
|
date = adapter.setYear(date, adapter.getYear(date) + 1);
|
22588
22433
|
return {
|
22589
22434
|
text,
|
22590
|
-
value: i
|
22435
|
+
value: i,
|
22436
|
+
isDisabled: !isYearAllowed(i)
|
22591
22437
|
};
|
22592
22438
|
});
|
22593
22439
|
});
|
@@ -22601,6 +22447,15 @@
|
|
22601
22447
|
block: 'center'
|
22602
22448
|
});
|
22603
22449
|
});
|
22450
|
+
function isYearAllowed(year) {
|
22451
|
+
if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
|
22452
|
+
return props.allowedYears.includes(year);
|
22453
|
+
}
|
22454
|
+
if (typeof props.allowedYears === 'function') {
|
22455
|
+
return props.allowedYears(year);
|
22456
|
+
}
|
22457
|
+
return true;
|
22458
|
+
}
|
22604
22459
|
useRender(() => vue.createElementVNode("div", {
|
22605
22460
|
"class": "v-date-picker-years",
|
22606
22461
|
"style": vue.normalizeStyle({
|
@@ -22615,6 +22470,7 @@
|
|
22615
22470
|
color: model.value === year.value ? props.color : undefined,
|
22616
22471
|
rounded: true,
|
22617
22472
|
text: year.text,
|
22473
|
+
disabled: year.isDisabled,
|
22618
22474
|
variant: model.value === year.value ? 'flat' : 'text',
|
22619
22475
|
onClick: () => {
|
22620
22476
|
if (model.value === year.value) {
|
@@ -22764,6 +22620,41 @@
|
|
22764
22620
|
}
|
22765
22621
|
return targets;
|
22766
22622
|
});
|
22623
|
+
function isAllowedInRange(start, end) {
|
22624
|
+
const allowedDates = props.allowedDates;
|
22625
|
+
if (typeof allowedDates !== 'function') return true;
|
22626
|
+
const days = adapter.getDiff(end, start, 'days');
|
22627
|
+
for (let i = 0; i < days; i++) {
|
22628
|
+
if (allowedDates(adapter.addDays(start, i))) return true;
|
22629
|
+
}
|
22630
|
+
return false;
|
22631
|
+
}
|
22632
|
+
function allowedYears(year) {
|
22633
|
+
if (typeof props.allowedDates === 'function') {
|
22634
|
+
const startOfYear = adapter.parseISO(`${year}-01-01`);
|
22635
|
+
return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
|
22636
|
+
}
|
22637
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
22638
|
+
for (const date of props.allowedDates) {
|
22639
|
+
if (adapter.getYear(adapter.date(date)) === year) return true;
|
22640
|
+
}
|
22641
|
+
return false;
|
22642
|
+
}
|
22643
|
+
return true;
|
22644
|
+
}
|
22645
|
+
function allowedMonths(month) {
|
22646
|
+
if (typeof props.allowedDates === 'function') {
|
22647
|
+
const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
|
22648
|
+
return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
|
22649
|
+
}
|
22650
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
22651
|
+
for (const date of props.allowedDates) {
|
22652
|
+
if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
|
22653
|
+
}
|
22654
|
+
return false;
|
22655
|
+
}
|
22656
|
+
return true;
|
22657
|
+
}
|
22767
22658
|
|
22768
22659
|
// function onClickAppend () {
|
22769
22660
|
// inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
|
@@ -22879,14 +22770,16 @@
|
|
22879
22770
|
"onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
|
22880
22771
|
"min": minDate.value,
|
22881
22772
|
"max": maxDate.value,
|
22882
|
-
"year": year.value
|
22773
|
+
"year": year.value,
|
22774
|
+
"allowedMonths": allowedMonths
|
22883
22775
|
}), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
|
22884
22776
|
"key": "date-picker-years"
|
22885
22777
|
}, datePickerYearsProps, {
|
22886
22778
|
"modelValue": year.value,
|
22887
22779
|
"onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
|
22888
22780
|
"min": minDate.value,
|
22889
|
-
"max": maxDate.value
|
22781
|
+
"max": maxDate.value,
|
22782
|
+
"allowedYears": allowedYears
|
22890
22783
|
}), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
|
22891
22784
|
"key": "date-picker-month"
|
22892
22785
|
}, datePickerMonthProps, {
|
@@ -24964,10 +24857,6 @@
|
|
24964
24857
|
type: Number,
|
24965
24858
|
default: 0
|
24966
24859
|
},
|
24967
|
-
minFractionDigits: {
|
24968
|
-
type: Number,
|
24969
|
-
default: null
|
24970
|
-
},
|
24971
24860
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
24972
24861
|
}, 'VNumberInput');
|
24973
24862
|
const VNumberInput = genericComponent()({
|
@@ -24998,19 +24887,9 @@
|
|
24998
24887
|
} = useFocus(props);
|
24999
24888
|
function correctPrecision(val) {
|
25000
24889
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25001
|
-
|
25002
|
-
|
25003
|
-
|
25004
|
-
let fixed = val.toFixed(precision);
|
25005
|
-
if (isFocused.value) {
|
25006
|
-
return Number(fixed).toString(); // trim zeros
|
25007
|
-
}
|
25008
|
-
if ((props.minFractionDigits ?? precision) < precision) {
|
25009
|
-
const trimLimit = precision - props.minFractionDigits;
|
25010
|
-
const [baseDigits, fractionDigits] = fixed.split('.');
|
25011
|
-
fixed = [baseDigits, fractionDigits.replace(new RegExp(`0{1,${trimLimit}}$`), '')].filter(Boolean).join('.');
|
25012
|
-
}
|
25013
|
-
return fixed;
|
24890
|
+
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
24891
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
24892
|
+
: fixed;
|
25014
24893
|
}
|
25015
24894
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25016
24895
|
const _inputText = vue.shallowRef(null);
|
@@ -25050,26 +24929,21 @@
|
|
25050
24929
|
const controlNodeDefaultHeight = vue.toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
25051
24930
|
const incrementSlotProps = {
|
25052
24931
|
props: {
|
25053
|
-
style: {
|
25054
|
-
touchAction: 'none'
|
25055
|
-
},
|
25056
24932
|
onClick: onControlClick,
|
25057
24933
|
onPointerup: onControlMouseup,
|
25058
|
-
onPointerdown: onUpControlMousedown
|
24934
|
+
onPointerdown: onUpControlMousedown,
|
24935
|
+
onPointercancel: onControlPointerCancel
|
25059
24936
|
}
|
25060
24937
|
};
|
25061
24938
|
const decrementSlotProps = {
|
25062
24939
|
props: {
|
25063
|
-
style: {
|
25064
|
-
touchAction: 'none'
|
25065
|
-
},
|
25066
24940
|
onClick: onControlClick,
|
25067
24941
|
onPointerup: onControlMouseup,
|
25068
|
-
onPointerdown: onDownControlMousedown
|
24942
|
+
onPointerdown: onDownControlMousedown,
|
24943
|
+
onPointercancel: onControlPointerCancel
|
25069
24944
|
}
|
25070
24945
|
};
|
25071
24946
|
vue.watch(() => props.precision, () => formatInputValue());
|
25072
|
-
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
25073
24947
|
vue.onMounted(() => {
|
25074
24948
|
clampModel();
|
25075
24949
|
});
|
@@ -25163,6 +25037,11 @@
|
|
25163
25037
|
e.stopPropagation();
|
25164
25038
|
holdStart('down');
|
25165
25039
|
}
|
25040
|
+
function onControlPointerCancel(e) {
|
25041
|
+
const el = e.currentTarget;
|
25042
|
+
el?.releasePointerCapture(e.pointerId);
|
25043
|
+
holdStop();
|
25044
|
+
}
|
25166
25045
|
function clampModel() {
|
25167
25046
|
if (controlsDisabled.value) return;
|
25168
25047
|
if (!vTextFieldRef.value) return;
|
@@ -25179,7 +25058,7 @@
|
|
25179
25058
|
inputText.value = null;
|
25180
25059
|
return;
|
25181
25060
|
}
|
25182
|
-
inputText.value =
|
25061
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25183
25062
|
}
|
25184
25063
|
function trimDecimalZeros() {
|
25185
25064
|
if (controlsDisabled.value) return;
|
@@ -25214,8 +25093,8 @@
|
|
25214
25093
|
"onClick": onControlClick,
|
25215
25094
|
"onPointerdown": onUpControlMousedown,
|
25216
25095
|
"onPointerup": onControlMouseup,
|
25096
|
+
"onPointercancel": onControlPointerCancel,
|
25217
25097
|
"size": controlNodeSize.value,
|
25218
|
-
"style": "touch-action: none",
|
25219
25098
|
"tabindex": "-1"
|
25220
25099
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
25221
25100
|
"key": "increment-defaults",
|
@@ -25244,8 +25123,8 @@
|
|
25244
25123
|
"onClick": onControlClick,
|
25245
25124
|
"onPointerdown": onDownControlMousedown,
|
25246
25125
|
"onPointerup": onControlMouseup,
|
25126
|
+
"onPointercancel": onControlPointerCancel,
|
25247
25127
|
"size": controlNodeSize.value,
|
25248
|
-
"style": "touch-action: none",
|
25249
25128
|
"tabindex": "-1"
|
25250
25129
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
25251
25130
|
"key": "decrement-defaults",
|
@@ -25439,10 +25318,9 @@
|
|
25439
25318
|
e.preventDefault();
|
25440
25319
|
e.stopPropagation();
|
25441
25320
|
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25442
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25443
25321
|
if (isValidNumber(clipboardText)) return;
|
25444
25322
|
model.value = clipboardText.split('');
|
25445
|
-
inputRef.value?.[
|
25323
|
+
inputRef.value?.[index].blur();
|
25446
25324
|
}
|
25447
25325
|
function reset() {
|
25448
25326
|
model.value = [];
|
@@ -30149,6 +30027,11 @@
|
|
30149
30027
|
hideOverlay: Boolean,
|
30150
30028
|
icon: [String, Function, Object],
|
30151
30029
|
iconColor: String,
|
30030
|
+
iconSize: [Number, String],
|
30031
|
+
iconSizes: {
|
30032
|
+
type: Array,
|
30033
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30034
|
+
},
|
30152
30035
|
loading: Boolean,
|
30153
30036
|
opacity: [Number, String],
|
30154
30037
|
readonly: Boolean,
|
@@ -30168,7 +30051,6 @@
|
|
30168
30051
|
...makeBorderProps(),
|
30169
30052
|
...makeComponentProps(),
|
30170
30053
|
...makeElevationProps(),
|
30171
|
-
...makeIconSizeProps(),
|
30172
30054
|
...makeRoundedProps(),
|
30173
30055
|
...makeTagProps({
|
30174
30056
|
tag: 'button'
|
@@ -30223,6 +30105,7 @@
|
|
30223
30105
|
})()
|
30224
30106
|
}));
|
30225
30107
|
const btnSizeMap = new Map(props.sizes);
|
30108
|
+
const iconSizeMap = new Map(props.iconSizes);
|
30226
30109
|
function onClick() {
|
30227
30110
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30228
30111
|
isActive.value = !isActive.value;
|
@@ -30234,12 +30117,12 @@
|
|
30234
30117
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30235
30118
|
const btnHeight = props.height ?? btnSize;
|
30236
30119
|
const btnWidth = props.width ?? btnSize;
|
30237
|
-
const
|
30238
|
-
|
30239
|
-
|
30120
|
+
const _iconSize = props.iconSize;
|
30121
|
+
const hasNamedIconSize = iconSizeMap.has(_iconSize);
|
30122
|
+
const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
|
30240
30123
|
const iconProps = {
|
30241
30124
|
icon,
|
30242
|
-
size: iconSize
|
30125
|
+
size: iconSize,
|
30243
30126
|
iconColor: props.iconColor,
|
30244
30127
|
opacity: props.opacity
|
30245
30128
|
};
|
@@ -30282,7 +30165,7 @@
|
|
30282
30165
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30283
30166
|
"indeterminate": "disable-shrink",
|
30284
30167
|
"width": "2",
|
30285
|
-
"size": iconSize
|
30168
|
+
"size": iconSize
|
30286
30169
|
}, null)])]
|
30287
30170
|
});
|
30288
30171
|
});
|
@@ -32192,7 +32075,7 @@
|
|
32192
32075
|
};
|
32193
32076
|
});
|
32194
32077
|
}
|
32195
|
-
const version$1 = "3.8.7-
|
32078
|
+
const version$1 = "3.8.7-master.2025-05-29";
|
32196
32079
|
createVuetify$1.version = version$1;
|
32197
32080
|
|
32198
32081
|
// Vue's inject() can only be used in setup
|
@@ -32490,7 +32373,7 @@
|
|
32490
32373
|
|
32491
32374
|
/* eslint-disable local-rules/sort-imports */
|
32492
32375
|
|
32493
|
-
const version = "3.8.7-
|
32376
|
+
const version = "3.8.7-master.2025-05-29";
|
32494
32377
|
|
32495
32378
|
/* eslint-disable local-rules/sort-imports */
|
32496
32379
|
|