@vuetify/nightly 3.8.10-dev.2025-06-18 → 3.8.10-master.2025-06-18
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 +3 -54
- package/dist/json/attributes.json +1259 -1655
- package/dist/json/importMap-labs.json +22 -26
- package/dist/json/importMap.json +160 -160
- package/dist/json/tags.json +2 -106
- package/dist/json/web-types.json +2705 -4334
- package/dist/vuetify-labs.cjs +180 -750
- package/dist/vuetify-labs.css +4655 -4700
- package/dist/vuetify-labs.d.ts +3083 -10404
- package/dist/vuetify-labs.esm.js +181 -751
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +180 -750
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +166 -478
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3324 -3369
- package/dist/vuetify.d.ts +2088 -2790
- package/dist/vuetify.esm.js +167 -479
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +166 -478
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1232 -1254
- 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/VAppBar/VAppBar.d.ts +3 -15
- package/lib/components/VAppBar/VAppBarNavIcon.d.ts +10 -20
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +110 -175
- package/lib/components/VAutocomplete/VAutocomplete.js +3 -21
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBadge/VBadge.d.ts +0 -60
- package/lib/components/VBadge/VBadge.js +2 -7
- package/lib/components/VBadge/VBadge.js.map +1 -1
- package/lib/components/VBtn/VBtn.d.ts +10 -20
- 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/VCard/VCard.d.ts +10 -20
- package/lib/components/VCheckbox/VCheckbox.d.ts +13 -23
- package/lib/components/VCheckbox/VCheckboxBtn.d.ts +10 -20
- package/lib/components/VChip/VChip.d.ts +10 -20
- package/lib/components/VChipGroup/VChipGroup.d.ts +0 -10
- package/lib/components/VCombobox/VCombobox.d.ts +110 -175
- package/lib/components/VCombobox/VCombobox.js +3 -22
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +0 -60
- 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 -42
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +0 -42
- package/lib/components/VDatePicker/VDatePicker.d.ts +5 -80
- package/lib/components/VDatePicker/VDatePicker.js +4 -10
- 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/VExpansionPanel/VExpansionPanel.d.ts +10 -20
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +10 -20
- package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +10 -20
- package/lib/components/VFab/VFab.d.ts +10 -20
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +15 -15
- package/lib/components/VInfiniteScroll/VInfiniteScroll.d.ts +3 -9
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js +0 -29
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
- package/lib/components/VInput/VInput.d.ts +4 -4
- package/lib/components/VKbd/VKbd.css +2 -13
- package/lib/components/VKbd/VKbd.sass +1 -2
- package/lib/components/VKbd/_variables.scss +1 -12
- package/lib/components/VKbd/index.d.ts +95 -1
- package/lib/components/VKbd/index.js +4 -1
- package/lib/components/VKbd/index.js.map +1 -1
- package/lib/components/VList/VList.d.ts +0 -13
- package/lib/components/VList/VList.js +1 -4
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +10 -28
- package/lib/components/VList/VListItem.js +3 -7
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/list.d.ts +2 -9
- package/lib/components/VList/list.js +0 -7
- package/lib/components/VList/list.js.map +1 -1
- package/lib/components/VMenu/VMenu.d.ts +0 -13
- package/lib/components/VMenu/VMenu.js +1 -2
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +89 -114
- package/lib/components/VNumberInput/VNumberInput.js +20 -43
- 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/VRadio/VRadio.d.ts +10 -20
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +13 -23
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +118 -204
- package/lib/components/VSelect/VSelect.js +3 -21
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.d.ts +10 -20
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +14 -28
- 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/VSlider/VSliderThumb.d.ts +10 -20
- package/lib/components/VSpeedDial/VSpeedDial.d.ts +0 -13
- package/lib/components/VStepper/VStepperItem.d.ts +14 -28
- package/lib/components/VSwitch/VSwitch.d.ts +13 -23
- package/lib/components/VTable/VTable.css +0 -6
- package/lib/components/VTable/VTable.d.ts +24 -55
- package/lib/components/VTable/VTable.js +2 -9
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTable/VTable.sass +0 -14
- package/lib/components/VTable/_variables.scss +0 -1
- package/lib/components/VTabs/VTab.d.ts +28 -56
- 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/components/VToolbar/VToolbar.d.ts +3 -15
- package/lib/components/VToolbar/VToolbar.js +3 -6
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/composables/calendar.d.ts +0 -5
- package/lib/composables/calendar.js +1 -2
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/DateAdapter.d.ts +3 -3
- 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 +3 -3
- 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/locale.d.ts +1 -5
- package/lib/composables/locale.js.map +1 -1
- package/lib/composables/theme.d.ts +1 -6
- package/lib/composables/theme.js +29 -97
- 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/directives/ripple/index.d.ts +1 -2
- package/lib/directives/ripple/index.js +7 -12
- package/lib/directives/ripple/index.js.map +1 -1
- package/lib/entry-bundler.d.ts +3 -4
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +67 -86
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +0 -10
- package/lib/labs/VColorInput/VColorInput.d.ts +3 -3
- package/lib/labs/VDateInput/VDateInput.d.ts +87 -97
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VFileUpload/VFileUploadItem.d.ts +10 -20
- 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/VStepperVertical/VStepperVertical.d.ts +10 -20
- package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +10 -20
- package/lib/labs/VTreeview/VTreeview.d.ts +38 -51
- package/lib/labs/VTreeview/VTreeview.js +1 -1
- package/lib/labs/VTreeview/VTreeview.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewChildren.d.ts +0 -35
- package/lib/labs/VTreeview/VTreeviewChildren.js +2 -19
- package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.d.ts +10 -20
- package/lib/labs/components.d.ts +0 -1
- package/lib/labs/components.js +0 -1
- package/lib/labs/components.js.map +1 -1
- package/lib/labs/entry-bundler.d.ts +3 -4
- package/lib/locale/adapters/vue-i18n.js +1 -6
- package/lib/locale/adapters/vue-i18n.js.map +1 -1
- package/lib/locale/adapters/vuetify.js +1 -7
- package/lib/locale/adapters/vuetify.js.map +1 -1
- package/lib/util/globals.d.ts +0 -1
- package/lib/util/globals.js +0 -1
- package/lib/util/globals.js.map +1 -1
- package/lib/util/helpers.d.ts +1 -2
- package/lib/util/helpers.js +7 -12
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -3
- package/lib/components/VKbd/VKbd.d.ts +0 -221
- package/lib/components/VKbd/VKbd.js +0 -55
- package/lib/components/VKbd/VKbd.js.map +0 -1
- package/lib/composables/date/adapters/string.d.ts +0 -54
- package/lib/composables/date/adapters/string.js +0 -153
- package/lib/composables/date/adapters/string.js.map +0 -1
- package/lib/composables/iconSizes.d.ts +0 -28
- package/lib/composables/iconSizes.js +0 -23
- package/lib/composables/iconSizes.js.map +0 -1
- package/lib/composables/mask.d.ts +0 -38
- package/lib/composables/mask.js +0 -183
- package/lib/composables/mask.js.map +0 -1
- package/lib/labs/VMaskInput/VMaskInput.d.ts +0 -6993
- package/lib/labs/VMaskInput/VMaskInput.js +0 -67
- package/lib/labs/VMaskInput/VMaskInput.js.map +0 -1
- package/lib/labs/VMaskInput/index.d.ts +0 -1
- package/lib/labs/VMaskInput/index.js +0 -2
- package/lib/labs/VMaskInput/index.js.map +0 -1
package/dist/vuetify-labs.cjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.10-
|
2
|
+
* Vuetify v3.8.10-master.2025-06-18
|
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"); }
|
@@ -592,23 +591,18 @@
|
|
592
591
|
function isPrimitive(value) {
|
593
592
|
return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
|
594
593
|
}
|
595
|
-
function
|
596
|
-
|
597
|
-
}
|
598
|
-
function extractNumber(text, decimalDigitsLimit, decimalSeparator) {
|
599
|
-
const onlyValidCharacters = new RegExp(`[\\d\\-${escapeForRegex(decimalSeparator)}]`);
|
600
|
-
const cleanText = text.split('').filter(x => onlyValidCharacters.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
594
|
+
function extractNumber(text, decimalDigitsLimit) {
|
595
|
+
const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
601
596
|
// sign allowed at the start
|
602
|
-
x ===
|
597
|
+
x === '.' && i === all.indexOf('.') ||
|
603
598
|
// decimal separator allowed only once
|
604
599
|
/\d/.test(x)).join('');
|
605
600
|
if (decimalDigitsLimit === 0) {
|
606
|
-
return cleanText.split(
|
601
|
+
return cleanText.split('.')[0];
|
607
602
|
}
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join(decimalSeparator);
|
603
|
+
if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
|
604
|
+
const parts = cleanText.split('.');
|
605
|
+
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
|
612
606
|
}
|
613
607
|
return cleanText;
|
614
608
|
}
|
@@ -2191,10 +2185,6 @@
|
|
2191
2185
|
return numberFormat.format(value);
|
2192
2186
|
};
|
2193
2187
|
}
|
2194
|
-
function inferDecimalSeparator(current, fallback) {
|
2195
|
-
const format = createNumberFunction(current, fallback);
|
2196
|
-
return format(0.1).includes(',') ? ',' : '.';
|
2197
|
-
}
|
2198
2188
|
function useProvided(props, prop, provided) {
|
2199
2189
|
const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);
|
2200
2190
|
|
@@ -2217,7 +2207,6 @@
|
|
2217
2207
|
current,
|
2218
2208
|
fallback,
|
2219
2209
|
messages,
|
2220
|
-
decimalSeparator: vue.toRef(() => inferDecimalSeparator(current, fallback)),
|
2221
2210
|
t: createTranslateFunction(current, fallback, messages),
|
2222
2211
|
n: createNumberFunction(current, fallback),
|
2223
2212
|
provide: createProvideFunction({
|
@@ -2240,7 +2229,6 @@
|
|
2240
2229
|
current,
|
2241
2230
|
fallback,
|
2242
2231
|
messages,
|
2243
|
-
decimalSeparator: vue.toRef(() => options?.decimalSeparator ?? inferDecimalSeparator(current, fallback)),
|
2244
2232
|
t: createTranslateFunction(current, fallback, messages),
|
2245
2233
|
n: createNumberFunction(current, fallback),
|
2246
2234
|
provide: createProvideFunction({
|
@@ -2367,7 +2355,6 @@
|
|
2367
2355
|
function genDefaults$2() {
|
2368
2356
|
return {
|
2369
2357
|
defaultTheme: 'light',
|
2370
|
-
prefix: 'v-',
|
2371
2358
|
variations: {
|
2372
2359
|
colors: [],
|
2373
2360
|
lighten: 0,
|
@@ -2405,8 +2392,8 @@
|
|
2405
2392
|
'activated-opacity': 0.12,
|
2406
2393
|
'pressed-opacity': 0.12,
|
2407
2394
|
'dragged-opacity': 0.08,
|
2408
|
-
'theme-kbd': '#
|
2409
|
-
'theme-on-kbd': '#
|
2395
|
+
'theme-kbd': '#212529',
|
2396
|
+
'theme-on-kbd': '#FFFFFF',
|
2410
2397
|
'theme-code': '#F5F5F5',
|
2411
2398
|
'theme-on-code': '#000000'
|
2412
2399
|
}
|
@@ -2442,17 +2429,14 @@
|
|
2442
2429
|
'activated-opacity': 0.12,
|
2443
2430
|
'pressed-opacity': 0.16,
|
2444
2431
|
'dragged-opacity': 0.08,
|
2445
|
-
'theme-kbd': '#
|
2432
|
+
'theme-kbd': '#212529',
|
2446
2433
|
'theme-on-kbd': '#FFFFFF',
|
2447
2434
|
'theme-code': '#343434',
|
2448
2435
|
'theme-on-code': '#CCCCCC'
|
2449
2436
|
}
|
2450
2437
|
}
|
2451
2438
|
},
|
2452
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2453
|
-
scoped: false,
|
2454
|
-
unimportant: false,
|
2455
|
-
utilities: true
|
2439
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2456
2440
|
};
|
2457
2441
|
}
|
2458
2442
|
function parseThemeOptions() {
|
@@ -2475,21 +2459,21 @@
|
|
2475
2459
|
function createCssClass(lines, selector, content, scope) {
|
2476
2460
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2477
2461
|
}
|
2478
|
-
function genCssVariables(theme
|
2462
|
+
function genCssVariables(theme) {
|
2479
2463
|
const lightOverlay = theme.dark ? 2 : 1;
|
2480
2464
|
const darkOverlay = theme.dark ? 1 : 2;
|
2481
2465
|
const variables = [];
|
2482
2466
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2483
2467
|
const rgb = parseColor(value);
|
2484
|
-
variables.push(
|
2468
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2485
2469
|
if (!key.startsWith('on-')) {
|
2486
|
-
variables.push(
|
2470
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2487
2471
|
}
|
2488
2472
|
}
|
2489
2473
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2490
2474
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2491
2475
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2492
|
-
variables.push(
|
2476
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2493
2477
|
}
|
2494
2478
|
return variables;
|
2495
2479
|
}
|
@@ -2533,8 +2517,7 @@
|
|
2533
2517
|
const scopeSelector = `:where(${scope})`;
|
2534
2518
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2535
2519
|
}
|
2536
|
-
function upsertStyles(
|
2537
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2520
|
+
function upsertStyles(styleEl, styles) {
|
2538
2521
|
if (!styleEl) return;
|
2539
2522
|
styleEl.innerHTML = styles;
|
2540
2523
|
}
|
@@ -2554,17 +2537,8 @@
|
|
2554
2537
|
// Composables
|
2555
2538
|
function createTheme(options) {
|
2556
2539
|
const parsedOptions = parseThemeOptions(options);
|
2557
|
-
const
|
2540
|
+
const name = vue.shallowRef(parsedOptions.defaultTheme);
|
2558
2541
|
const themes = vue.ref(parsedOptions.themes);
|
2559
|
-
const systemName = vue.shallowRef('light');
|
2560
|
-
const name = vue.computed({
|
2561
|
-
get() {
|
2562
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
2563
|
-
},
|
2564
|
-
set(val) {
|
2565
|
-
_name.value = val;
|
2566
|
-
}
|
2567
|
-
});
|
2568
2542
|
const computedThemes = vue.computed(() => {
|
2569
2543
|
const acc = {};
|
2570
2544
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2585,49 +2559,28 @@
|
|
2585
2559
|
const current = vue.toRef(() => computedThemes.value[name.value]);
|
2586
2560
|
const styles = vue.computed(() => {
|
2587
2561
|
const lines = [];
|
2588
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
2589
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2590
2562
|
if (current.value?.dark) {
|
2591
2563
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2592
2564
|
}
|
2593
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
2565
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2594
2566
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2595
|
-
createCssClass(lines,
|
2596
|
-
}
|
2597
|
-
|
2598
|
-
|
2599
|
-
|
2600
|
-
|
2601
|
-
|
2602
|
-
|
2603
|
-
|
2604
|
-
}
|
2605
|
-
|
2606
|
-
|
2607
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2608
|
-
}
|
2567
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
2568
|
+
}
|
2569
|
+
const bgLines = [];
|
2570
|
+
const fgLines = [];
|
2571
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2572
|
+
for (const key of colors) {
|
2573
|
+
if (key.startsWith('on-')) {
|
2574
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2575
|
+
} else {
|
2576
|
+
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);
|
2577
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2578
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
2609
2579
|
}
|
2610
|
-
lines.push(...bgLines, ...fgLines);
|
2611
2580
|
}
|
2581
|
+
lines.push(...bgLines, ...fgLines);
|
2612
2582
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2613
2583
|
});
|
2614
|
-
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2615
|
-
const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
|
2616
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
2617
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2618
|
-
function updateSystemName() {
|
2619
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
2620
|
-
}
|
2621
|
-
updateSystemName();
|
2622
|
-
media.addEventListener('change', updateSystemName, {
|
2623
|
-
passive: true
|
2624
|
-
});
|
2625
|
-
if (vue.getCurrentScope()) {
|
2626
|
-
vue.onScopeDispose(() => {
|
2627
|
-
media.removeEventListener('change', updateSystemName);
|
2628
|
-
});
|
2629
|
-
}
|
2630
|
-
}
|
2631
2584
|
function install(app) {
|
2632
2585
|
if (parsedOptions.isDisabled) return;
|
2633
2586
|
const head = app._context.provides.usehead;
|
@@ -2665,55 +2618,22 @@
|
|
2665
2618
|
updateStyles();
|
2666
2619
|
}
|
2667
2620
|
function updateStyles() {
|
2668
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2621
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
2669
2622
|
}
|
2670
2623
|
}
|
2671
2624
|
}
|
2672
|
-
|
2673
|
-
if (!themeNames.value.includes(themeName)) {
|
2674
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2675
|
-
return;
|
2676
|
-
}
|
2677
|
-
name.value = themeName;
|
2678
|
-
}
|
2679
|
-
function cycle() {
|
2680
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2681
|
-
const currentIndex = themeArray.indexOf(name.value);
|
2682
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2683
|
-
change(themeArray[nextIndex]);
|
2684
|
-
}
|
2685
|
-
function toggle() {
|
2686
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2687
|
-
cycle(themeArray);
|
2688
|
-
}
|
2689
|
-
const globalName = new Proxy(name, {
|
2690
|
-
get(target, prop) {
|
2691
|
-
return target[prop];
|
2692
|
-
},
|
2693
|
-
set(target, prop, val) {
|
2694
|
-
if (prop === 'value') {
|
2695
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2696
|
-
}
|
2697
|
-
// @ts-expect-error
|
2698
|
-
target[prop] = val;
|
2699
|
-
return true;
|
2700
|
-
}
|
2701
|
-
});
|
2625
|
+
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
2702
2626
|
return {
|
2703
2627
|
install,
|
2704
|
-
change,
|
2705
|
-
cycle,
|
2706
|
-
toggle,
|
2707
2628
|
isDisabled: parsedOptions.isDisabled,
|
2708
2629
|
name,
|
2709
2630
|
themes,
|
2710
2631
|
current,
|
2711
2632
|
computedThemes,
|
2712
|
-
prefix: parsedOptions.prefix,
|
2713
2633
|
themeClasses,
|
2714
2634
|
styles,
|
2715
2635
|
global: {
|
2716
|
-
name
|
2636
|
+
name,
|
2717
2637
|
current
|
2718
2638
|
}
|
2719
2639
|
};
|
@@ -2724,7 +2644,7 @@
|
|
2724
2644
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2725
2645
|
const name = vue.toRef(() => props.theme ?? theme.name.value);
|
2726
2646
|
const current = vue.toRef(() => theme.themes.value[name.value]);
|
2727
|
-
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined :
|
2647
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
2728
2648
|
const newTheme = {
|
2729
2649
|
...theme,
|
2730
2650
|
name,
|
@@ -3828,10 +3748,7 @@
|
|
3828
3748
|
default: 'default',
|
3829
3749
|
validator: v => allowedDensities$1.includes(v)
|
3830
3750
|
},
|
3831
|
-
extended:
|
3832
|
-
type: Boolean,
|
3833
|
-
default: null
|
3834
|
-
},
|
3751
|
+
extended: Boolean,
|
3835
3752
|
extensionHeight: {
|
3836
3753
|
type: [Number, String],
|
3837
3754
|
default: 48
|
@@ -3879,7 +3796,7 @@
|
|
3879
3796
|
const {
|
3880
3797
|
rtlClasses
|
3881
3798
|
} = useRtl();
|
3882
|
-
const isExtended = vue.shallowRef(props.extended
|
3799
|
+
const isExtended = vue.shallowRef(!!(props.extended || slots.extension?.()));
|
3883
3800
|
const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
|
3884
3801
|
const extensionHeight = vue.computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
|
3885
3802
|
provideDefaults({
|
@@ -3891,7 +3808,7 @@
|
|
3891
3808
|
const hasTitle = !!(props.title || slots.title);
|
3892
3809
|
const hasImage = !!(slots.image || props.image);
|
3893
3810
|
const extension = slots.extension?.();
|
3894
|
-
isExtended.value = props.extended
|
3811
|
+
isExtended.value = !!(props.extended || extension);
|
3895
3812
|
return vue.createVNode(props.tag, {
|
3896
3813
|
"class": vue.normalizeClass(['v-toolbar', {
|
3897
3814
|
'v-toolbar--absolute': props.absolute,
|
@@ -4274,15 +4191,9 @@
|
|
4274
4191
|
};
|
4275
4192
|
}
|
4276
4193
|
|
4277
|
-
// Types
|
4278
|
-
|
4279
4194
|
const makeVBtnGroupProps = propsFactory({
|
4280
4195
|
baseColor: String,
|
4281
4196
|
divided: Boolean,
|
4282
|
-
direction: {
|
4283
|
-
type: String,
|
4284
|
-
default: 'horizontal'
|
4285
|
-
},
|
4286
4197
|
...makeBorderProps(),
|
4287
4198
|
...makeComponentProps(),
|
4288
4199
|
...makeDensityProps(),
|
@@ -4316,7 +4227,7 @@
|
|
4316
4227
|
} = useRounded(props);
|
4317
4228
|
provideDefaults({
|
4318
4229
|
VBtn: {
|
4319
|
-
height:
|
4230
|
+
height: 'auto',
|
4320
4231
|
baseColor: vue.toRef(() => props.baseColor),
|
4321
4232
|
color: vue.toRef(() => props.color),
|
4322
4233
|
density: vue.toRef(() => props.density),
|
@@ -4326,7 +4237,7 @@
|
|
4326
4237
|
});
|
4327
4238
|
useRender(() => {
|
4328
4239
|
return vue.createVNode(props.tag, {
|
4329
|
-
"class": vue.normalizeClass(['v-btn-group',
|
4240
|
+
"class": vue.normalizeClass(['v-btn-group', {
|
4330
4241
|
'v-btn-group--divided': props.divided
|
4331
4242
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4332
4243
|
"style": vue.normalizeStyle(props.style)
|
@@ -5659,8 +5570,8 @@
|
|
5659
5570
|
window.clearTimeout(element._ripple.showTimer);
|
5660
5571
|
}
|
5661
5572
|
let keyboardRipple = false;
|
5662
|
-
function keyboardRippleShow(e
|
5663
|
-
if (!keyboardRipple &&
|
5573
|
+
function keyboardRippleShow(e) {
|
5574
|
+
if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
|
5664
5575
|
keyboardRipple = true;
|
5665
5576
|
rippleShow(e);
|
5666
5577
|
}
|
@@ -5688,12 +5599,9 @@
|
|
5688
5599
|
el._ripple.enabled = enabled;
|
5689
5600
|
el._ripple.centered = modifiers.center;
|
5690
5601
|
el._ripple.circle = modifiers.circle;
|
5691
|
-
|
5692
|
-
|
5693
|
-
el._ripple.class = bindingValue.class;
|
5602
|
+
if (isObject(value) && value.class) {
|
5603
|
+
el._ripple.class = value.class;
|
5694
5604
|
}
|
5695
|
-
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5696
|
-
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5697
5605
|
if (enabled && !wasEnabled) {
|
5698
5606
|
if (modifiers.stop) {
|
5699
5607
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5715,7 +5623,7 @@
|
|
5715
5623
|
el.addEventListener('mousedown', rippleShow);
|
5716
5624
|
el.addEventListener('mouseup', rippleHide);
|
5717
5625
|
el.addEventListener('mouseleave', rippleHide);
|
5718
|
-
el.addEventListener('keydown',
|
5626
|
+
el.addEventListener('keydown', keyboardRippleShow);
|
5719
5627
|
el.addEventListener('keyup', keyboardRippleHide);
|
5720
5628
|
el.addEventListener('blur', focusRippleHide);
|
5721
5629
|
|
@@ -5735,9 +5643,7 @@
|
|
5735
5643
|
el.removeEventListener('touchcancel', rippleHide);
|
5736
5644
|
el.removeEventListener('mouseup', rippleHide);
|
5737
5645
|
el.removeEventListener('mouseleave', rippleHide);
|
5738
|
-
|
5739
|
-
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5740
|
-
}
|
5646
|
+
el.removeEventListener('keydown', keyboardRippleShow);
|
5741
5647
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5742
5648
|
el.removeEventListener('dragstart', rippleHide);
|
5743
5649
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5746,8 +5652,8 @@
|
|
5746
5652
|
updateRipple(el, binding, false);
|
5747
5653
|
}
|
5748
5654
|
function unmounted$4(el) {
|
5749
|
-
removeListeners(el);
|
5750
5655
|
delete el._ripple;
|
5656
|
+
removeListeners(el);
|
5751
5657
|
}
|
5752
5658
|
function updated$1(el, binding) {
|
5753
5659
|
if (binding.value === binding.oldValue) {
|
@@ -6020,31 +5926,6 @@
|
|
6020
5926
|
// Utilities
|
6021
5927
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6022
5928
|
|
6023
|
-
// Utilities
|
6024
|
-
|
6025
|
-
// Types
|
6026
|
-
|
6027
|
-
// Types
|
6028
|
-
|
6029
|
-
// Composables
|
6030
|
-
const makeIconSizeProps = propsFactory({
|
6031
|
-
iconSize: [Number, String],
|
6032
|
-
iconSizes: {
|
6033
|
-
type: Array,
|
6034
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6035
|
-
}
|
6036
|
-
}, 'iconSize');
|
6037
|
-
function useIconSizes(props, fallback) {
|
6038
|
-
const iconSize = vue.computed(() => {
|
6039
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6040
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6041
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6042
|
-
});
|
6043
|
-
return {
|
6044
|
-
iconSize
|
6045
|
-
};
|
6046
|
-
}
|
6047
|
-
|
6048
5929
|
// Types
|
6049
5930
|
|
6050
5931
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6084,7 +5965,6 @@
|
|
6084
5965
|
...makeDensityProps(),
|
6085
5966
|
...makeDimensionProps(),
|
6086
5967
|
...makeElevationProps(),
|
6087
|
-
...makeIconSizeProps(),
|
6088
5968
|
...makeLocationProps(),
|
6089
5969
|
...makePositionProps(),
|
6090
5970
|
...makeRoundedProps(),
|
@@ -6112,9 +5992,6 @@
|
|
6112
5992
|
if (!props.type) return props.icon;
|
6113
5993
|
return props.icon ?? `$${props.type}`;
|
6114
5994
|
});
|
6115
|
-
const {
|
6116
|
-
iconSize
|
6117
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6118
5995
|
const {
|
6119
5996
|
themeClasses
|
6120
5997
|
} = provideTheme(props);
|
@@ -6162,11 +6039,6 @@
|
|
6162
6039
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6163
6040
|
const hasTitle = !!(slots.title || props.title);
|
6164
6041
|
const hasClose = !!(slots.close || props.closable);
|
6165
|
-
const iconProps = {
|
6166
|
-
density: props.density,
|
6167
|
-
icon: icon.value,
|
6168
|
-
size: iconSize.value
|
6169
|
-
};
|
6170
6042
|
return isActive.value && vue.createVNode(props.tag, {
|
6171
6043
|
"class": vue.normalizeClass(['v-alert', props.border && {
|
6172
6044
|
'v-alert--border': !!props.border,
|
@@ -6184,14 +6056,19 @@
|
|
6184
6056
|
}, null), hasPrepend && vue.createElementVNode("div", {
|
6185
6057
|
"key": "prepend",
|
6186
6058
|
"class": "v-alert__prepend"
|
6187
|
-
}, [!slots.prepend ? vue.createVNode(VIcon,
|
6188
|
-
"key": "prepend-icon"
|
6189
|
-
|
6059
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
6060
|
+
"key": "prepend-icon",
|
6061
|
+
"density": props.density,
|
6062
|
+
"icon": icon.value,
|
6063
|
+
"size": props.prominent ? 44 : 28
|
6064
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
6190
6065
|
"key": "prepend-defaults",
|
6191
6066
|
"disabled": !icon.value,
|
6192
6067
|
"defaults": {
|
6193
6068
|
VIcon: {
|
6194
|
-
|
6069
|
+
density: props.density,
|
6070
|
+
icon: icon.value,
|
6071
|
+
size: props.prominent ? 44 : 28
|
6195
6072
|
}
|
6196
6073
|
}
|
6197
6074
|
}, slots.prepend)]), vue.createElementVNode("div", {
|
@@ -7716,7 +7593,6 @@
|
|
7716
7593
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7717
7594
|
const makeVSlideGroupProps = propsFactory({
|
7718
7595
|
centerActive: Boolean,
|
7719
|
-
contentClass: null,
|
7720
7596
|
direction: {
|
7721
7597
|
type: String,
|
7722
7598
|
default: 'horizontal'
|
@@ -8029,7 +7905,7 @@
|
|
8029
7905
|
})]), vue.createElementVNode("div", {
|
8030
7906
|
"key": "container",
|
8031
7907
|
"ref": containerRef,
|
8032
|
-
"class":
|
7908
|
+
"class": "v-slide-group__container",
|
8033
7909
|
"onScroll": onScroll
|
8034
7910
|
}, [vue.createElementVNode("div", {
|
8035
7911
|
"ref": contentRef,
|
@@ -8392,85 +8268,16 @@
|
|
8392
8268
|
}
|
8393
8269
|
});
|
8394
8270
|
|
8395
|
-
const makeVDividerProps = propsFactory({
|
8396
|
-
color: String,
|
8397
|
-
inset: Boolean,
|
8398
|
-
length: [Number, String],
|
8399
|
-
opacity: [Number, String],
|
8400
|
-
thickness: [Number, String],
|
8401
|
-
vertical: Boolean,
|
8402
|
-
...makeComponentProps(),
|
8403
|
-
...makeThemeProps()
|
8404
|
-
}, 'VDivider');
|
8405
|
-
const VDivider = genericComponent()({
|
8406
|
-
name: 'VDivider',
|
8407
|
-
props: makeVDividerProps(),
|
8408
|
-
setup(props, _ref) {
|
8409
|
-
let {
|
8410
|
-
attrs,
|
8411
|
-
slots
|
8412
|
-
} = _ref;
|
8413
|
-
const {
|
8414
|
-
themeClasses
|
8415
|
-
} = provideTheme(props);
|
8416
|
-
const {
|
8417
|
-
textColorClasses,
|
8418
|
-
textColorStyles
|
8419
|
-
} = useTextColor(() => props.color);
|
8420
|
-
const dividerStyles = vue.computed(() => {
|
8421
|
-
const styles = {};
|
8422
|
-
if (props.length) {
|
8423
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8424
|
-
}
|
8425
|
-
if (props.thickness) {
|
8426
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8427
|
-
}
|
8428
|
-
return styles;
|
8429
|
-
});
|
8430
|
-
useRender(() => {
|
8431
|
-
const divider = vue.createElementVNode("hr", {
|
8432
|
-
"class": vue.normalizeClass([{
|
8433
|
-
'v-divider': true,
|
8434
|
-
'v-divider--inset': props.inset,
|
8435
|
-
'v-divider--vertical': props.vertical
|
8436
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8437
|
-
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8438
|
-
'--v-border-opacity': props.opacity
|
8439
|
-
}, props.style]),
|
8440
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8441
|
-
"role": `${attrs.role || 'separator'}`
|
8442
|
-
}, null);
|
8443
|
-
if (!slots.default) return divider;
|
8444
|
-
return vue.createElementVNode("div", {
|
8445
|
-
"class": vue.normalizeClass(['v-divider__wrapper', {
|
8446
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8447
|
-
'v-divider__wrapper--inset': props.inset
|
8448
|
-
}])
|
8449
|
-
}, [divider, vue.createElementVNode("div", {
|
8450
|
-
"class": "v-divider__content"
|
8451
|
-
}, [slots.default()]), divider]);
|
8452
|
-
});
|
8453
|
-
return {};
|
8454
|
-
}
|
8455
|
-
});
|
8456
|
-
|
8457
8271
|
// Utilities
|
8458
8272
|
|
8459
8273
|
// List
|
8460
8274
|
const ListKey = Symbol.for('vuetify:list');
|
8461
8275
|
function createList() {
|
8462
|
-
let {
|
8463
|
-
filterable
|
8464
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8465
|
-
filterable: false
|
8466
|
-
};
|
8467
8276
|
const parent = vue.inject(ListKey, {
|
8468
|
-
filterable: false,
|
8469
8277
|
hasPrepend: vue.shallowRef(false),
|
8470
8278
|
updateHasPrepend: () => null
|
8471
8279
|
});
|
8472
8280
|
const data = {
|
8473
|
-
filterable: parent.filterable || filterable,
|
8474
8281
|
hasPrepend: vue.shallowRef(false),
|
8475
8282
|
updateHasPrepend: value => {
|
8476
8283
|
if (value) data.hasPrepend.value = value;
|
@@ -9422,9 +9229,6 @@
|
|
9422
9229
|
roundedClasses
|
9423
9230
|
} = useRounded(roundedProps);
|
9424
9231
|
const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9425
|
-
const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9426
|
-
keys: [keyCodes.enter]
|
9427
|
-
} : props.ripple);
|
9428
9232
|
const slotProps = vue.computed(() => ({
|
9429
9233
|
isActive: isActive.value,
|
9430
9234
|
select,
|
@@ -9449,9 +9253,8 @@
|
|
9449
9253
|
function onKeyDown(e) {
|
9450
9254
|
const target = e.target;
|
9451
9255
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9452
|
-
if (e.key === 'Enter' || e.key === ' '
|
9256
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
9453
9257
|
e.preventDefault();
|
9454
|
-
e.stopPropagation();
|
9455
9258
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9456
9259
|
}
|
9457
9260
|
}
|
@@ -9561,7 +9364,7 @@
|
|
9561
9364
|
}), vue.createElementVNode("div", {
|
9562
9365
|
"class": "v-list-item__spacer"
|
9563
9366
|
}, null)])]
|
9564
|
-
}), [[Ripple, isClickable.value &&
|
9367
|
+
}), [[Ripple, isClickable.value && props.ripple]]);
|
9565
9368
|
});
|
9566
9369
|
return {
|
9567
9370
|
activate,
|
@@ -9616,6 +9419,68 @@
|
|
9616
9419
|
}
|
9617
9420
|
});
|
9618
9421
|
|
9422
|
+
const makeVDividerProps = propsFactory({
|
9423
|
+
color: String,
|
9424
|
+
inset: Boolean,
|
9425
|
+
length: [Number, String],
|
9426
|
+
opacity: [Number, String],
|
9427
|
+
thickness: [Number, String],
|
9428
|
+
vertical: Boolean,
|
9429
|
+
...makeComponentProps(),
|
9430
|
+
...makeThemeProps()
|
9431
|
+
}, 'VDivider');
|
9432
|
+
const VDivider = genericComponent()({
|
9433
|
+
name: 'VDivider',
|
9434
|
+
props: makeVDividerProps(),
|
9435
|
+
setup(props, _ref) {
|
9436
|
+
let {
|
9437
|
+
attrs,
|
9438
|
+
slots
|
9439
|
+
} = _ref;
|
9440
|
+
const {
|
9441
|
+
themeClasses
|
9442
|
+
} = provideTheme(props);
|
9443
|
+
const {
|
9444
|
+
textColorClasses,
|
9445
|
+
textColorStyles
|
9446
|
+
} = useTextColor(() => props.color);
|
9447
|
+
const dividerStyles = vue.computed(() => {
|
9448
|
+
const styles = {};
|
9449
|
+
if (props.length) {
|
9450
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9451
|
+
}
|
9452
|
+
if (props.thickness) {
|
9453
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9454
|
+
}
|
9455
|
+
return styles;
|
9456
|
+
});
|
9457
|
+
useRender(() => {
|
9458
|
+
const divider = vue.createElementVNode("hr", {
|
9459
|
+
"class": vue.normalizeClass([{
|
9460
|
+
'v-divider': true,
|
9461
|
+
'v-divider--inset': props.inset,
|
9462
|
+
'v-divider--vertical': props.vertical
|
9463
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9464
|
+
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9465
|
+
'--v-border-opacity': props.opacity
|
9466
|
+
}, props.style]),
|
9467
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9468
|
+
"role": `${attrs.role || 'separator'}`
|
9469
|
+
}, null);
|
9470
|
+
if (!slots.default) return divider;
|
9471
|
+
return vue.createElementVNode("div", {
|
9472
|
+
"class": vue.normalizeClass(['v-divider__wrapper', {
|
9473
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9474
|
+
'v-divider__wrapper--inset': props.inset
|
9475
|
+
}])
|
9476
|
+
}, [divider, vue.createElementVNode("div", {
|
9477
|
+
"class": "v-divider__content"
|
9478
|
+
}, [slots.default()]), divider]);
|
9479
|
+
});
|
9480
|
+
return {};
|
9481
|
+
}
|
9482
|
+
});
|
9483
|
+
|
9619
9484
|
// Types
|
9620
9485
|
|
9621
9486
|
const makeVListChildrenProps = propsFactory({
|
@@ -9885,7 +9750,6 @@
|
|
9885
9750
|
activeClass: String,
|
9886
9751
|
bgColor: String,
|
9887
9752
|
disabled: Boolean,
|
9888
|
-
filterable: Boolean,
|
9889
9753
|
expandIcon: IconValue,
|
9890
9754
|
collapseIcon: IconValue,
|
9891
9755
|
lines: {
|
@@ -9969,9 +9833,7 @@
|
|
9969
9833
|
const activeColor = vue.toRef(() => props.activeColor);
|
9970
9834
|
const baseColor = vue.toRef(() => props.baseColor);
|
9971
9835
|
const color = vue.toRef(() => props.color);
|
9972
|
-
createList(
|
9973
|
-
filterable: props.filterable
|
9974
|
-
});
|
9836
|
+
createList();
|
9975
9837
|
provideDefaults({
|
9976
9838
|
VListGroup: {
|
9977
9839
|
activeColor,
|
@@ -11654,7 +11516,6 @@
|
|
11654
11516
|
// disableKeys: Boolean,
|
11655
11517
|
id: String,
|
11656
11518
|
submenu: Boolean,
|
11657
|
-
disableInitialFocus: Boolean,
|
11658
11519
|
...omit(makeVOverlayProps({
|
11659
11520
|
closeDelay: 250,
|
11660
11521
|
closeOnContentClick: true,
|
@@ -11729,7 +11590,7 @@
|
|
11729
11590
|
vue.watch(isActive, val => {
|
11730
11591
|
if (val) {
|
11731
11592
|
parent?.register();
|
11732
|
-
if (IN_BROWSER
|
11593
|
+
if (IN_BROWSER) {
|
11733
11594
|
document.addEventListener('focusin', onFocusIn, {
|
11734
11595
|
once: true
|
11735
11596
|
});
|
@@ -12566,12 +12427,7 @@
|
|
12566
12427
|
}
|
12567
12428
|
function calculateOffset(index) {
|
12568
12429
|
index = clamp(index, 0, items.value.length - 1);
|
12569
|
-
|
12570
|
-
const fraction = index % 1;
|
12571
|
-
const next = whole + 1;
|
12572
|
-
const wholeOffset = offsets[whole] || 0;
|
12573
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12574
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12430
|
+
return offsets[index] || 0;
|
12575
12431
|
}
|
12576
12432
|
function calculateIndex(scrollTop) {
|
12577
12433
|
return binaryClosest(offsets, scrollTop);
|
@@ -12925,7 +12781,6 @@
|
|
12925
12781
|
},
|
12926
12782
|
openOnClear: Boolean,
|
12927
12783
|
itemColor: String,
|
12928
|
-
noAutoScroll: Boolean,
|
12929
12784
|
...makeItemsProps({
|
12930
12785
|
itemChildren: false
|
12931
12786
|
})
|
@@ -13140,7 +12995,7 @@
|
|
13140
12995
|
vue.watch(menu, () => {
|
13141
12996
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13142
12997
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13143
|
-
IN_BROWSER &&
|
12998
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13144
12999
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13145
13000
|
});
|
13146
13001
|
}
|
@@ -13233,22 +13088,6 @@
|
|
13233
13088
|
key: item.value,
|
13234
13089
|
onClick: () => select(item, null)
|
13235
13090
|
});
|
13236
|
-
if (item.raw.type === 'divider') {
|
13237
|
-
return slots.divider?.({
|
13238
|
-
props: item.raw,
|
13239
|
-
index
|
13240
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13241
|
-
"key": `divider-${index}`
|
13242
|
-
}), null);
|
13243
|
-
}
|
13244
|
-
if (item.raw.type === 'subheader') {
|
13245
|
-
return slots.subheader?.({
|
13246
|
-
props: item.raw,
|
13247
|
-
index
|
13248
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13249
|
-
"key": `subheader-${index}`
|
13250
|
-
}), null);
|
13251
|
-
}
|
13252
13091
|
return slots.item?.({
|
13253
13092
|
item,
|
13254
13093
|
index,
|
@@ -13409,9 +13248,6 @@
|
|
13409
13248
|
let match = -1;
|
13410
13249
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13411
13250
|
if (typeof item === 'object') {
|
13412
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13413
|
-
continue;
|
13414
|
-
}
|
13415
13251
|
const filterKeys = keys || Object.keys(transformed);
|
13416
13252
|
for (const key of filterKeys) {
|
13417
13253
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13614,7 +13450,7 @@
|
|
13614
13450
|
menu.value = !menu.value;
|
13615
13451
|
}
|
13616
13452
|
function onListKeydown(e) {
|
13617
|
-
if (
|
13453
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
13618
13454
|
vTextFieldRef.value?.focus();
|
13619
13455
|
}
|
13620
13456
|
}
|
@@ -13819,7 +13655,6 @@
|
|
13819
13655
|
}, props.menuProps), {
|
13820
13656
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
13821
13657
|
"ref": listRef,
|
13822
|
-
"filterable": true,
|
13823
13658
|
"selected": selectedValues.value,
|
13824
13659
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13825
13660
|
"onMousedown": e => e.preventDefault(),
|
@@ -13851,22 +13686,6 @@
|
|
13851
13686
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13852
13687
|
onClick: () => select(item, null)
|
13853
13688
|
});
|
13854
|
-
if (item.raw.type === 'divider') {
|
13855
|
-
return slots.divider?.({
|
13856
|
-
props: item.raw,
|
13857
|
-
index
|
13858
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13859
|
-
"key": `divider-${index}`
|
13860
|
-
}), null);
|
13861
|
-
}
|
13862
|
-
if (item.raw.type === 'subheader') {
|
13863
|
-
return slots.subheader?.({
|
13864
|
-
props: item.raw,
|
13865
|
-
index
|
13866
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13867
|
-
"key": `subheader-${index}`
|
13868
|
-
}), null);
|
13869
|
-
}
|
13870
13689
|
return slots.item?.({
|
13871
13690
|
item,
|
13872
13691
|
index,
|
@@ -14011,8 +13830,7 @@
|
|
14011
13830
|
...makeThemeProps(),
|
14012
13831
|
...makeTransitionProps({
|
14013
13832
|
transition: 'scale-rotate-transition'
|
14014
|
-
})
|
14015
|
-
...makeDimensionProps()
|
13833
|
+
})
|
14016
13834
|
}, 'VBadge');
|
14017
13835
|
const VBadge = genericComponent()({
|
14018
13836
|
name: 'VBadge',
|
@@ -14042,9 +13860,6 @@
|
|
14042
13860
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
14043
13861
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
14044
13862
|
});
|
14045
|
-
const {
|
14046
|
-
dimensionStyles
|
14047
|
-
} = useDimension(props);
|
14048
13863
|
useRender(() => {
|
14049
13864
|
const value = Number(props.content);
|
14050
13865
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -14066,7 +13881,7 @@
|
|
14066
13881
|
}, {
|
14067
13882
|
default: () => [vue.withDirectives(vue.createElementVNode("span", vue.mergeProps({
|
14068
13883
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
14069
|
-
"style": [backgroundColorStyles.value, textColorStyles.value,
|
13884
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14070
13885
|
"aria-atomic": "true",
|
14071
13886
|
"aria-label": t(props.label, value),
|
14072
13887
|
"aria-live": "polite",
|
@@ -17475,13 +17290,13 @@
|
|
17475
17290
|
return null;
|
17476
17291
|
}
|
17477
17292
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17478
|
-
function getWeekdays(locale, firstDayOfWeek
|
17293
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17479
17294
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17480
17295
|
return createRange(7).map(i => {
|
17481
17296
|
const weekday = new Date(sundayJanuarySecond2000);
|
17482
17297
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17483
17298
|
return new Intl.DateTimeFormat(locale, {
|
17484
|
-
weekday:
|
17299
|
+
weekday: 'narrow'
|
17485
17300
|
}).format(weekday);
|
17486
17301
|
});
|
17487
17302
|
}
|
@@ -17945,9 +17760,9 @@
|
|
17945
17760
|
getDiff(date, comparing, unit) {
|
17946
17761
|
return getDiff(date, comparing, unit);
|
17947
17762
|
}
|
17948
|
-
getWeekdays(firstDayOfWeek
|
17763
|
+
getWeekdays(firstDayOfWeek) {
|
17949
17764
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17950
|
-
return getWeekdays(this.locale, firstDay
|
17765
|
+
return getWeekdays(this.locale, firstDay);
|
17951
17766
|
}
|
17952
17767
|
getYear(date) {
|
17953
17768
|
return getYear(date);
|
@@ -18302,7 +18117,6 @@
|
|
18302
18117
|
_search.value = val ?? '';
|
18303
18118
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18304
18119
|
model.value = [transformItem$3(props, val)];
|
18305
|
-
vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18306
18120
|
}
|
18307
18121
|
if (val && props.multiple && props.delimiters?.length) {
|
18308
18122
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18383,7 +18197,7 @@
|
|
18383
18197
|
menu.value = !menu.value;
|
18384
18198
|
}
|
18385
18199
|
function onListKeydown(e) {
|
18386
|
-
if (
|
18200
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
18387
18201
|
vTextFieldRef.value?.focus();
|
18388
18202
|
}
|
18389
18203
|
}
|
@@ -18588,7 +18402,6 @@
|
|
18588
18402
|
}, props.menuProps), {
|
18589
18403
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
18590
18404
|
"ref": listRef,
|
18591
|
-
"filterable": true,
|
18592
18405
|
"selected": selectedValues.value,
|
18593
18406
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18594
18407
|
"onMousedown": e => e.preventDefault(),
|
@@ -18620,22 +18433,6 @@
|
|
18620
18433
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18621
18434
|
onClick: () => select(item, null)
|
18622
18435
|
});
|
18623
|
-
if (item.raw.type === 'divider') {
|
18624
|
-
return slots.divider?.({
|
18625
|
-
props: item.raw,
|
18626
|
-
index
|
18627
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
18628
|
-
"key": `divider-${index}`
|
18629
|
-
}), null);
|
18630
|
-
}
|
18631
|
-
if (item.raw.type === 'subheader') {
|
18632
|
-
return slots.subheader?.({
|
18633
|
-
props: item.raw,
|
18634
|
-
index
|
18635
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
18636
|
-
"key": `subheader-${index}`
|
18637
|
-
}), null);
|
18638
|
-
}
|
18639
18436
|
return slots.item?.({
|
18640
18437
|
item,
|
18641
18438
|
index,
|
@@ -20518,7 +20315,6 @@
|
|
20518
20315
|
color: String,
|
20519
20316
|
disableSort: Boolean,
|
20520
20317
|
fixedHeader: Boolean,
|
20521
|
-
lastFixed: Boolean,
|
20522
20318
|
multiSort: Boolean,
|
20523
20319
|
sortAscIcon: {
|
20524
20320
|
type: IconValue,
|
@@ -20565,11 +20361,10 @@
|
|
20565
20361
|
loaderClasses
|
20566
20362
|
} = useLoader(props);
|
20567
20363
|
function getFixedStyles(column, y) {
|
20568
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20364
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20569
20365
|
return {
|
20570
20366
|
position: 'sticky',
|
20571
|
-
left: column.fixed
|
20572
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20367
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20573
20368
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20574
20369
|
};
|
20575
20370
|
}
|
@@ -21085,18 +20880,11 @@
|
|
21085
20880
|
}
|
21086
20881
|
});
|
21087
20882
|
|
21088
|
-
// Types
|
21089
|
-
|
21090
20883
|
const makeVTableProps = propsFactory({
|
21091
20884
|
fixedHeader: Boolean,
|
21092
20885
|
fixedFooter: Boolean,
|
21093
20886
|
height: [Number, String],
|
21094
20887
|
hover: Boolean,
|
21095
|
-
striped: {
|
21096
|
-
type: String,
|
21097
|
-
default: null,
|
21098
|
-
validator: v => ['even', 'odd'].includes(v)
|
21099
|
-
},
|
21100
20888
|
...makeComponentProps(),
|
21101
20889
|
...makeDensityProps(),
|
21102
20890
|
...makeTagProps(),
|
@@ -21123,9 +20911,7 @@
|
|
21123
20911
|
'v-table--fixed-footer': props.fixedFooter,
|
21124
20912
|
'v-table--has-top': !!slots.top,
|
21125
20913
|
'v-table--has-bottom': !!slots.bottom,
|
21126
|
-
'v-table--hover': props.hover
|
21127
|
-
'v-table--striped-even': props.striped === 'even',
|
21128
|
-
'v-table--striped-odd': props.striped === 'odd'
|
20914
|
+
'v-table--hover': props.hover
|
21129
20915
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21130
20916
|
"style": vue.normalizeStyle(props.style)
|
21131
20917
|
}, {
|
@@ -22300,8 +22086,7 @@
|
|
22300
22086
|
firstDayOfWeek: {
|
22301
22087
|
type: [Number, String],
|
22302
22088
|
default: undefined
|
22303
|
-
}
|
22304
|
-
weekdayFormat: String
|
22089
|
+
}
|
22305
22090
|
}, 'calendar');
|
22306
22091
|
function useCalendar(props) {
|
22307
22092
|
const adapter = useDate();
|
@@ -22542,7 +22327,7 @@
|
|
22542
22327
|
"ref": daysRef,
|
22543
22328
|
"key": daysInMonth.value[0].date?.toString(),
|
22544
22329
|
"class": "v-date-picker-month__days"
|
22545
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22330
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
|
22546
22331
|
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22547
22332
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22548
22333
|
const slotProps = {
|
@@ -23051,9 +22836,7 @@
|
|
23051
22836
|
"max": maxDate.value,
|
23052
22837
|
"year": year.value,
|
23053
22838
|
"allowedMonths": allowedMonths
|
23054
|
-
}), {
|
23055
|
-
...pick(slots, ['month'])
|
23056
|
-
}) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
|
22839
|
+
}), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
|
23057
22840
|
"key": "date-picker-years"
|
23058
22841
|
}, datePickerYearsProps, {
|
23059
22842
|
"modelValue": year.value,
|
@@ -23061,9 +22844,7 @@
|
|
23061
22844
|
"min": minDate.value,
|
23062
22845
|
"max": maxDate.value,
|
23063
22846
|
"allowedYears": allowedYears
|
23064
|
-
}), {
|
23065
|
-
...pick(slots, ['year'])
|
23066
|
-
}) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
|
22847
|
+
}), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
|
23067
22848
|
"key": "date-picker-month"
|
23068
22849
|
}, datePickerMonthProps, {
|
23069
22850
|
"modelValue": model.value,
|
@@ -23074,9 +22855,7 @@
|
|
23074
22855
|
"onUpdate:year": [$event => year.value = $event, onUpdateYear],
|
23075
22856
|
"min": minDate.value,
|
23076
22857
|
"max": maxDate.value
|
23077
|
-
}),
|
23078
|
-
...pick(slots, ['day'])
|
23079
|
-
})]
|
22858
|
+
}), null)]
|
23080
22859
|
})]),
|
23081
22860
|
actions: slots.actions
|
23082
22861
|
});
|
@@ -24167,9 +23946,6 @@
|
|
24167
23946
|
startStatus.value = status;
|
24168
23947
|
} else if (side === 'end') {
|
24169
23948
|
endStatus.value = status;
|
24170
|
-
} else if (side === 'both') {
|
24171
|
-
startStatus.value = status;
|
24172
|
-
endStatus.value = status;
|
24173
23949
|
}
|
24174
23950
|
}
|
24175
23951
|
function getStatus(side) {
|
@@ -24281,32 +24057,6 @@
|
|
24281
24057
|
}, [renderSide('end', endStatus.value)])]
|
24282
24058
|
});
|
24283
24059
|
});
|
24284
|
-
function reset(side) {
|
24285
|
-
const effectiveSide = side ?? props.side;
|
24286
|
-
setStatus(effectiveSide, 'ok');
|
24287
|
-
vue.nextTick(() => {
|
24288
|
-
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24289
|
-
if (props.mode !== 'manual') {
|
24290
|
-
vue.nextTick(() => {
|
24291
|
-
window.requestAnimationFrame(() => {
|
24292
|
-
window.requestAnimationFrame(() => {
|
24293
|
-
window.requestAnimationFrame(() => {
|
24294
|
-
if (effectiveSide === 'both') {
|
24295
|
-
intersecting('start');
|
24296
|
-
intersecting('end');
|
24297
|
-
} else {
|
24298
|
-
intersecting(effectiveSide);
|
24299
|
-
}
|
24300
|
-
});
|
24301
|
-
});
|
24302
|
-
});
|
24303
|
-
});
|
24304
|
-
}
|
24305
|
-
});
|
24306
|
-
}
|
24307
|
-
return {
|
24308
|
-
reset
|
24309
|
-
};
|
24310
24060
|
}
|
24311
24061
|
});
|
24312
24062
|
|
@@ -24386,47 +24136,8 @@
|
|
24386
24136
|
}
|
24387
24137
|
});
|
24388
24138
|
|
24389
|
-
|
24390
|
-
|
24391
|
-
...makeComponentProps(),
|
24392
|
-
...makeRoundedProps(),
|
24393
|
-
...makeTagProps({
|
24394
|
-
tag: 'kbd'
|
24395
|
-
}),
|
24396
|
-
...makeThemeProps(),
|
24397
|
-
...makeElevationProps(),
|
24398
|
-
color: String
|
24399
|
-
}, 'VKbd');
|
24400
|
-
const VKbd = genericComponent()({
|
24401
|
-
name: 'VKbd',
|
24402
|
-
props: makeVKbdProps(),
|
24403
|
-
setup(props, _ref) {
|
24404
|
-
let {
|
24405
|
-
slots
|
24406
|
-
} = _ref;
|
24407
|
-
const {
|
24408
|
-
themeClasses
|
24409
|
-
} = provideTheme(props);
|
24410
|
-
const {
|
24411
|
-
borderClasses
|
24412
|
-
} = useBorder(props);
|
24413
|
-
const {
|
24414
|
-
roundedClasses
|
24415
|
-
} = useRounded(props);
|
24416
|
-
const {
|
24417
|
-
backgroundColorClasses,
|
24418
|
-
backgroundColorStyles
|
24419
|
-
} = useBackgroundColor(() => props.color);
|
24420
|
-
const {
|
24421
|
-
elevationClasses
|
24422
|
-
} = useElevation(props);
|
24423
|
-
useRender(() => vue.createVNode(props.tag, {
|
24424
|
-
"class": vue.normalizeClass(['v-kbd', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
24425
|
-
"style": vue.normalizeStyle([backgroundColorStyles.value, props.style])
|
24426
|
-
}, slots));
|
24427
|
-
return {};
|
24428
|
-
}
|
24429
|
-
});
|
24139
|
+
// Styles
|
24140
|
+
const VKbd = createSimpleFunctional('v-kbd', 'kbd');
|
24430
24141
|
|
24431
24142
|
const makeVLayoutProps = propsFactory({
|
24432
24143
|
...makeComponentProps(),
|
@@ -25264,14 +24975,6 @@
|
|
25264
24975
|
type: Number,
|
25265
24976
|
default: 0
|
25266
24977
|
},
|
25267
|
-
minFractionDigits: {
|
25268
|
-
type: Number,
|
25269
|
-
default: null
|
25270
|
-
},
|
25271
|
-
decimalSeparator: {
|
25272
|
-
type: String,
|
25273
|
-
validator: v => !v || v.length === 1
|
25274
|
-
},
|
25275
24978
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25276
24979
|
}, 'VNumberInput');
|
25277
24980
|
const VNumberInput = genericComponent()({
|
@@ -25297,24 +25000,11 @@
|
|
25297
25000
|
const form = useForm(props);
|
25298
25001
|
const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
|
25299
25002
|
const isFocused = vue.shallowRef(props.focused);
|
25300
|
-
const {
|
25301
|
-
decimalSeparator: decimalSeparatorFromLocale
|
25302
|
-
} = useLocale();
|
25303
|
-
const decimalSeparator = vue.computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);
|
25304
25003
|
function correctPrecision(val) {
|
25305
25004
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25306
|
-
let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
25307
25005
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25308
|
-
|
25309
|
-
|
25310
|
-
.replace('.', decimalSeparator.value);
|
25311
|
-
}
|
25312
|
-
if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {
|
25313
|
-
return fixed.replace('.', decimalSeparator.value);
|
25314
|
-
}
|
25315
|
-
let [baseDigits, fractionDigits] = fixed.split('.');
|
25316
|
-
fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\d{${props.minFractionDigits}})0`, 'g'), '');
|
25317
|
-
return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);
|
25006
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25007
|
+
: fixed;
|
25318
25008
|
}
|
25319
25009
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25320
25010
|
const _inputText = vue.shallowRef(null);
|
@@ -25331,11 +25021,8 @@
|
|
25331
25021
|
if (val === null || val === '') {
|
25332
25022
|
model.value = null;
|
25333
25023
|
_inputText.value = null;
|
25334
|
-
|
25335
|
-
|
25336
|
-
const parsedValue = Number(val.replace(decimalSeparator.value, '.'));
|
25337
|
-
if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {
|
25338
|
-
model.value = parsedValue;
|
25024
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
25025
|
+
model.value = Number(val);
|
25339
25026
|
_inputText.value = val;
|
25340
25027
|
}
|
25341
25028
|
}
|
@@ -25372,7 +25059,6 @@
|
|
25372
25059
|
}
|
25373
25060
|
};
|
25374
25061
|
vue.watch(() => props.precision, () => formatInputValue());
|
25375
|
-
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
25376
25062
|
vue.onMounted(() => {
|
25377
25063
|
clampModel();
|
25378
25064
|
});
|
@@ -25406,24 +25092,24 @@
|
|
25406
25092
|
selectionEnd
|
25407
25093
|
} = inputElement ?? {};
|
25408
25094
|
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
25409
|
-
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision
|
25095
|
+
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
|
25410
25096
|
|
25411
|
-
//
|
25412
|
-
//
|
25413
|
-
//
|
25414
|
-
if (
|
25097
|
+
// Only numbers, "-", "." are allowed
|
25098
|
+
// AND "-", "." are allowed only once
|
25099
|
+
// AND "-" is only allowed at the start
|
25100
|
+
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
25415
25101
|
e.preventDefault();
|
25416
25102
|
inputElement.value = potentialNewNumber;
|
25417
25103
|
}
|
25418
25104
|
if (props.precision == null) return;
|
25419
25105
|
|
25420
25106
|
// Ignore decimal digits above precision limit
|
25421
|
-
if (potentialNewInputVal.split(
|
25107
|
+
if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
|
25422
25108
|
e.preventDefault();
|
25423
25109
|
inputElement.value = potentialNewNumber;
|
25424
25110
|
}
|
25425
25111
|
// Ignore decimal separator when precision = 0
|
25426
|
-
if (props.precision === 0 && potentialNewInputVal.includes(
|
25112
|
+
if (props.precision === 0 && potentialNewInputVal.includes('.')) {
|
25427
25113
|
e.preventDefault();
|
25428
25114
|
inputElement.value = potentialNewNumber;
|
25429
25115
|
}
|
@@ -25475,16 +25161,19 @@
|
|
25475
25161
|
if (controlsDisabled.value) return;
|
25476
25162
|
if (!vTextFieldRef.value) return;
|
25477
25163
|
const actualText = vTextFieldRef.value.value;
|
25478
|
-
|
25479
|
-
|
25480
|
-
inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));
|
25164
|
+
if (actualText && !isNaN(Number(actualText))) {
|
25165
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
25481
25166
|
} else {
|
25482
25167
|
inputText.value = null;
|
25483
25168
|
}
|
25484
25169
|
}
|
25485
25170
|
function formatInputValue() {
|
25486
25171
|
if (controlsDisabled.value) return;
|
25487
|
-
|
25172
|
+
if (model.value === null || isNaN(model.value)) {
|
25173
|
+
inputText.value = null;
|
25174
|
+
return;
|
25175
|
+
}
|
25176
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25488
25177
|
}
|
25489
25178
|
function trimDecimalZeros() {
|
25490
25179
|
if (controlsDisabled.value) return;
|
@@ -25492,7 +25181,7 @@
|
|
25492
25181
|
inputText.value = null;
|
25493
25182
|
return;
|
25494
25183
|
}
|
25495
|
-
inputText.value = model.value.toString()
|
25184
|
+
inputText.value = model.value.toString();
|
25496
25185
|
}
|
25497
25186
|
function onFocus() {
|
25498
25187
|
trimDecimalZeros();
|
@@ -25759,10 +25448,9 @@
|
|
25759
25448
|
e.preventDefault();
|
25760
25449
|
e.stopPropagation();
|
25761
25450
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25762
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25763
25451
|
if (isValidNumber(clipboardText)) return;
|
25764
25452
|
model.value = clipboardText.split('');
|
25765
|
-
inputRef.value?.[
|
25453
|
+
inputRef.value?.[index].blur();
|
25766
25454
|
}
|
25767
25455
|
function reset() {
|
25768
25456
|
model.value = [];
|
@@ -30462,6 +30150,11 @@
|
|
30462
30150
|
hideOverlay: Boolean,
|
30463
30151
|
icon: [String, Function, Object],
|
30464
30152
|
iconColor: String,
|
30153
|
+
iconSize: [Number, String],
|
30154
|
+
iconSizes: {
|
30155
|
+
type: Array,
|
30156
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30157
|
+
},
|
30465
30158
|
loading: Boolean,
|
30466
30159
|
opacity: [Number, String],
|
30467
30160
|
readonly: Boolean,
|
@@ -30481,7 +30174,6 @@
|
|
30481
30174
|
...makeBorderProps(),
|
30482
30175
|
...makeComponentProps(),
|
30483
30176
|
...makeElevationProps(),
|
30484
|
-
...makeIconSizeProps(),
|
30485
30177
|
...makeRoundedProps(),
|
30486
30178
|
...makeTagProps({
|
30487
30179
|
tag: 'button'
|
@@ -30536,6 +30228,7 @@
|
|
30536
30228
|
})()
|
30537
30229
|
}));
|
30538
30230
|
const btnSizeMap = new Map(props.sizes);
|
30231
|
+
const iconSizeMap = new Map(props.iconSizes);
|
30539
30232
|
function onClick() {
|
30540
30233
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30541
30234
|
isActive.value = !isActive.value;
|
@@ -30547,12 +30240,12 @@
|
|
30547
30240
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30548
30241
|
const btnHeight = props.height ?? btnSize;
|
30549
30242
|
const btnWidth = props.width ?? btnSize;
|
30550
|
-
const
|
30551
|
-
|
30552
|
-
|
30243
|
+
const _iconSize = props.iconSize;
|
30244
|
+
const hasNamedIconSize = iconSizeMap.has(_iconSize);
|
30245
|
+
const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
|
30553
30246
|
const iconProps = {
|
30554
30247
|
icon,
|
30555
|
-
size: iconSize
|
30248
|
+
size: iconSize,
|
30556
30249
|
iconColor: props.iconColor,
|
30557
30250
|
opacity: props.opacity
|
30558
30251
|
};
|
@@ -30595,7 +30288,7 @@
|
|
30595
30288
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30596
30289
|
"indeterminate": "disable-shrink",
|
30597
30290
|
"width": "2",
|
30598
|
-
"size": iconSize
|
30291
|
+
"size": iconSize
|
30599
30292
|
}, null)])]
|
30600
30293
|
});
|
30601
30294
|
});
|
@@ -30603,251 +30296,6 @@
|
|
30603
30296
|
}
|
30604
30297
|
});
|
30605
30298
|
|
30606
|
-
// Utilities
|
30607
|
-
|
30608
|
-
// Types
|
30609
|
-
|
30610
|
-
const makeMaskProps = propsFactory({
|
30611
|
-
mask: [String, Object],
|
30612
|
-
returnMaskedValue: Boolean
|
30613
|
-
}, 'mask');
|
30614
|
-
const defaultDelimiters = /[-!$%^&*()_+|~=`{}[\]:";'<>?,./\\ ]/;
|
30615
|
-
const presets = {
|
30616
|
-
'credit-card': '#### - #### - #### - ####',
|
30617
|
-
date: '##/##/####',
|
30618
|
-
'date-time': '##/##/#### ##:##',
|
30619
|
-
'iso-date': '####-##-##',
|
30620
|
-
'iso-date-time': '####-##-## ##:##',
|
30621
|
-
phone: '(###) ### - ####',
|
30622
|
-
social: '###-##-####',
|
30623
|
-
time: '##:##',
|
30624
|
-
'time-with-seconds': '##:##:##'
|
30625
|
-
};
|
30626
|
-
function isMaskDelimiter(char) {
|
30627
|
-
return char ? defaultDelimiters.test(char) : false;
|
30628
|
-
}
|
30629
|
-
const defaultTokens = {
|
30630
|
-
'#': {
|
30631
|
-
pattern: /[0-9]/
|
30632
|
-
},
|
30633
|
-
A: {
|
30634
|
-
pattern: /[A-Z]/i,
|
30635
|
-
convert: v => v.toUpperCase()
|
30636
|
-
},
|
30637
|
-
a: {
|
30638
|
-
pattern: /[a-z]/i,
|
30639
|
-
convert: v => v.toLowerCase()
|
30640
|
-
},
|
30641
|
-
N: {
|
30642
|
-
pattern: /[0-9A-Z]/i,
|
30643
|
-
convert: v => v.toUpperCase()
|
30644
|
-
},
|
30645
|
-
n: {
|
30646
|
-
pattern: /[0-9a-z]/i,
|
30647
|
-
convert: v => v.toLowerCase()
|
30648
|
-
},
|
30649
|
-
X: {
|
30650
|
-
pattern: defaultDelimiters
|
30651
|
-
}
|
30652
|
-
};
|
30653
|
-
function useMask(props, inputRef) {
|
30654
|
-
const mask = vue.computed(() => {
|
30655
|
-
if (typeof props.mask === 'string') {
|
30656
|
-
if (props.mask in presets) return presets[props.mask];
|
30657
|
-
return props.mask;
|
30658
|
-
}
|
30659
|
-
return props.mask?.mask ?? '';
|
30660
|
-
});
|
30661
|
-
const tokens = vue.computed(() => {
|
30662
|
-
return {
|
30663
|
-
...defaultTokens,
|
30664
|
-
...(isObject(props.mask) ? props.mask.tokens : null)
|
30665
|
-
};
|
30666
|
-
});
|
30667
|
-
const selection = vue.shallowRef(0);
|
30668
|
-
const lazySelection = vue.shallowRef(0);
|
30669
|
-
function isMask(char) {
|
30670
|
-
return char in tokens.value;
|
30671
|
-
}
|
30672
|
-
function maskValidates(mask, char) {
|
30673
|
-
if (char == null || !isMask(mask)) return false;
|
30674
|
-
const item = tokens.value[mask];
|
30675
|
-
if (item.pattern) return item.pattern.test(char);
|
30676
|
-
return item.test(char);
|
30677
|
-
}
|
30678
|
-
function convert(mask, char) {
|
30679
|
-
const item = tokens.value[mask];
|
30680
|
-
return item.convert ? item.convert(char) : char;
|
30681
|
-
}
|
30682
|
-
function maskText(text) {
|
30683
|
-
const trimmedText = text?.trim().replace(/\s+/g, ' ');
|
30684
|
-
if (trimmedText == null) return '';
|
30685
|
-
if (!mask.value.length || !trimmedText.length) return trimmedText;
|
30686
|
-
let textIndex = 0;
|
30687
|
-
let maskIndex = 0;
|
30688
|
-
let newText = '';
|
30689
|
-
while (maskIndex < mask.value.length) {
|
30690
|
-
const mchar = mask.value[maskIndex];
|
30691
|
-
const tchar = trimmedText[textIndex];
|
30692
|
-
|
30693
|
-
// Escaped character in mask, the next mask character is inserted
|
30694
|
-
if (mchar === '\\') {
|
30695
|
-
newText += mask.value[maskIndex + 1];
|
30696
|
-
maskIndex += 2;
|
30697
|
-
continue;
|
30698
|
-
}
|
30699
|
-
if (!isMask(mchar)) {
|
30700
|
-
newText += mchar;
|
30701
|
-
if (tchar === mchar) {
|
30702
|
-
textIndex++;
|
30703
|
-
}
|
30704
|
-
} else if (maskValidates(mchar, tchar)) {
|
30705
|
-
newText += convert(mchar, tchar);
|
30706
|
-
textIndex++;
|
30707
|
-
} else {
|
30708
|
-
break;
|
30709
|
-
}
|
30710
|
-
maskIndex++;
|
30711
|
-
}
|
30712
|
-
return newText;
|
30713
|
-
}
|
30714
|
-
function unmaskText(text) {
|
30715
|
-
if (text == null) return null;
|
30716
|
-
if (!mask.value.length || !text.length) return text;
|
30717
|
-
let textIndex = 0;
|
30718
|
-
let maskIndex = 0;
|
30719
|
-
let newText = '';
|
30720
|
-
while (true) {
|
30721
|
-
const mchar = mask.value[maskIndex];
|
30722
|
-
const tchar = text[textIndex];
|
30723
|
-
if (tchar == null) break;
|
30724
|
-
if (mchar == null) {
|
30725
|
-
newText += tchar;
|
30726
|
-
textIndex++;
|
30727
|
-
continue;
|
30728
|
-
}
|
30729
|
-
|
30730
|
-
// Escaped character in mask, skip the next input character
|
30731
|
-
if (mchar === '\\') {
|
30732
|
-
if (tchar === mask.value[maskIndex + 1]) {
|
30733
|
-
textIndex++;
|
30734
|
-
}
|
30735
|
-
maskIndex += 2;
|
30736
|
-
continue;
|
30737
|
-
}
|
30738
|
-
if (maskValidates(mchar, tchar)) {
|
30739
|
-
// masked char
|
30740
|
-
newText += tchar;
|
30741
|
-
textIndex++;
|
30742
|
-
maskIndex++;
|
30743
|
-
continue;
|
30744
|
-
} else if (mchar !== tchar) {
|
30745
|
-
// input doesn't match mask, skip forward until it does
|
30746
|
-
while (true) {
|
30747
|
-
const mchar = mask.value[maskIndex++];
|
30748
|
-
if (mchar == null || maskValidates(mchar, tchar)) break;
|
30749
|
-
}
|
30750
|
-
continue;
|
30751
|
-
}
|
30752
|
-
textIndex++;
|
30753
|
-
maskIndex++;
|
30754
|
-
}
|
30755
|
-
return newText;
|
30756
|
-
}
|
30757
|
-
function setCaretPosition(newSelection) {
|
30758
|
-
selection.value = newSelection;
|
30759
|
-
inputRef.value && inputRef.value.setSelectionRange(selection.value, selection.value);
|
30760
|
-
}
|
30761
|
-
function resetSelections() {
|
30762
|
-
if (!inputRef.value?.selectionEnd) return;
|
30763
|
-
selection.value = inputRef.value.selectionEnd;
|
30764
|
-
lazySelection.value = 0;
|
30765
|
-
for (let index = 0; index < selection.value; index++) {
|
30766
|
-
isMaskDelimiter(inputRef.value.value[index]) || lazySelection.value++;
|
30767
|
-
}
|
30768
|
-
}
|
30769
|
-
function updateRange() {
|
30770
|
-
if (!inputRef.value) return;
|
30771
|
-
resetSelections();
|
30772
|
-
let selection = 0;
|
30773
|
-
const newValue = inputRef.value.value;
|
30774
|
-
if (newValue) {
|
30775
|
-
for (let index = 0; index < newValue.length; index++) {
|
30776
|
-
if (lazySelection.value <= 0) break;
|
30777
|
-
isMaskDelimiter(newValue[index]) || lazySelection.value--;
|
30778
|
-
selection++;
|
30779
|
-
}
|
30780
|
-
}
|
30781
|
-
setCaretPosition(selection);
|
30782
|
-
}
|
30783
|
-
return {
|
30784
|
-
updateRange,
|
30785
|
-
maskText,
|
30786
|
-
unmaskText
|
30787
|
-
};
|
30788
|
-
}
|
30789
|
-
|
30790
|
-
// Types
|
30791
|
-
|
30792
|
-
const makeVMaskInputProps = propsFactory({
|
30793
|
-
...makeVTextFieldProps(),
|
30794
|
-
...makeMaskProps()
|
30795
|
-
}, 'VMaskInput');
|
30796
|
-
const VMaskInput = genericComponent()({
|
30797
|
-
name: 'VMaskInput',
|
30798
|
-
props: makeVMaskInputProps(),
|
30799
|
-
emits: {
|
30800
|
-
'update:modelValue': val => true
|
30801
|
-
},
|
30802
|
-
setup(props, _ref) {
|
30803
|
-
let {
|
30804
|
-
slots,
|
30805
|
-
emit
|
30806
|
-
} = _ref;
|
30807
|
-
const vTextFieldRef = vue.ref();
|
30808
|
-
const {
|
30809
|
-
maskText,
|
30810
|
-
updateRange,
|
30811
|
-
unmaskText
|
30812
|
-
} = useMask(props, vTextFieldRef);
|
30813
|
-
const returnMaskedValue = vue.computed(() => props.mask && props.returnMaskedValue);
|
30814
|
-
const model = useProxiedModel(props, 'modelValue', undefined,
|
30815
|
-
// Always display masked value in input when mask is applied
|
30816
|
-
val => props.mask ? maskText(unmaskText(val)) : val, val => {
|
30817
|
-
if (props.mask) {
|
30818
|
-
const valueBeforeChange = unmaskText(model.value);
|
30819
|
-
// E.g. mask is #-# and the input value is '2-23'
|
30820
|
-
// model-value should be enforced to '2-2'
|
30821
|
-
const enforcedMaskedValue = maskText(unmaskText(val));
|
30822
|
-
const newUnmaskedValue = unmaskText(enforcedMaskedValue);
|
30823
|
-
if (newUnmaskedValue === valueBeforeChange) {
|
30824
|
-
vTextFieldRef.value.value = enforcedMaskedValue;
|
30825
|
-
}
|
30826
|
-
val = newUnmaskedValue;
|
30827
|
-
updateRange();
|
30828
|
-
return returnMaskedValue.value ? maskText(val) : val;
|
30829
|
-
}
|
30830
|
-
return val;
|
30831
|
-
});
|
30832
|
-
vue.onBeforeMount(() => {
|
30833
|
-
if (props.returnMaskedValue) {
|
30834
|
-
emit('update:modelValue', model.value);
|
30835
|
-
}
|
30836
|
-
});
|
30837
|
-
useRender(() => {
|
30838
|
-
const textFieldProps = VTextField.filterProps(props);
|
30839
|
-
return vue.createVNode(VTextField, vue.mergeProps(textFieldProps, {
|
30840
|
-
"modelValue": model.value,
|
30841
|
-
"onUpdate:modelValue": $event => model.value = $event,
|
30842
|
-
"ref": vTextFieldRef
|
30843
|
-
}), {
|
30844
|
-
...slots
|
30845
|
-
});
|
30846
|
-
});
|
30847
|
-
return forwardRefs({}, vTextFieldRef);
|
30848
|
-
}
|
30849
|
-
});
|
30850
|
-
|
30851
30299
|
// Types
|
30852
30300
|
|
30853
30301
|
const makeVStepperVerticalActionsProps = propsFactory({
|
@@ -31990,11 +31438,6 @@
|
|
31990
31438
|
selectable: Boolean,
|
31991
31439
|
selectedColor: String,
|
31992
31440
|
selectStrategy: [String, Function, Object],
|
31993
|
-
index: Number,
|
31994
|
-
path: {
|
31995
|
-
type: Array,
|
31996
|
-
default: () => []
|
31997
|
-
},
|
31998
31441
|
...makeDensityProps()
|
31999
31442
|
}, 'VTreeviewChildren');
|
32000
31443
|
const VTreeviewChildren = genericComponent()({
|
@@ -32022,19 +31465,12 @@
|
|
32022
31465
|
select(!isSelected);
|
32023
31466
|
}
|
32024
31467
|
}
|
32025
|
-
return () => slots.default?.() ?? props.items?.map(
|
31468
|
+
return () => slots.default?.() ?? props.items?.map(item => {
|
32026
31469
|
const {
|
32027
31470
|
children,
|
32028
31471
|
props: itemProps
|
32029
31472
|
} = item;
|
32030
31473
|
const loading = isLoading.has(item.value);
|
32031
|
-
const treeItemProps = {
|
32032
|
-
index,
|
32033
|
-
depth: props.path?.length ?? 0,
|
32034
|
-
isFirst: index === 0,
|
32035
|
-
isLast: props.items ? props.items.length - 1 === index : false,
|
32036
|
-
path: [...props.path, index]
|
32037
|
-
};
|
32038
31474
|
const slotsWithItem = {
|
32039
31475
|
prepend: slotProps => vue.createElementVNode(vue.Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && vue.createElementVNode("div", null, [vue.createVNode(VCheckboxBtn, {
|
32040
31476
|
"key": item.value,
|
@@ -32055,13 +31491,11 @@
|
|
32055
31491
|
}
|
32056
31492
|
}, null)]), slots.prepend?.({
|
32057
31493
|
...slotProps,
|
32058
|
-
...treeItemProps,
|
32059
31494
|
item: item.raw,
|
32060
31495
|
internalItem: item
|
32061
31496
|
})]),
|
32062
31497
|
append: slots.append ? slotProps => slots.append?.({
|
32063
31498
|
...slotProps,
|
32064
|
-
...treeItemProps,
|
32065
31499
|
item: item.raw,
|
32066
31500
|
internalItem: item
|
32067
31501
|
}) : undefined,
|
@@ -32077,10 +31511,7 @@
|
|
32077
31511
|
}) : undefined
|
32078
31512
|
};
|
32079
31513
|
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
32080
|
-
const treeviewChildrenProps = VTreeviewChildren.filterProps(
|
32081
|
-
...props,
|
32082
|
-
...treeItemProps
|
32083
|
-
});
|
31514
|
+
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
32084
31515
|
return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
|
32085
31516
|
"value": props.returnObject ? item.raw : treeviewGroupProps?.value,
|
32086
31517
|
"rawId": treeviewGroupProps?.value
|
@@ -32131,7 +31562,7 @@
|
|
32131
31562
|
...makeFilterProps({
|
32132
31563
|
filterKeys: ['title']
|
32133
31564
|
}),
|
32134
|
-
...
|
31565
|
+
...makeVTreeviewChildrenProps(),
|
32135
31566
|
...omit(makeVListProps({
|
32136
31567
|
collapseIcon: '$treeviewCollapse',
|
32137
31568
|
expandIcon: '$treeviewExpand',
|
@@ -32374,7 +31805,6 @@
|
|
32374
31805
|
VListSubheader: VListSubheader,
|
32375
31806
|
VLocaleProvider: VLocaleProvider,
|
32376
31807
|
VMain: VMain,
|
32377
|
-
VMaskInput: VMaskInput,
|
32378
31808
|
VMenu: VMenu,
|
32379
31809
|
VMessages: VMessages,
|
32380
31810
|
VNavigationDrawer: VNavigationDrawer,
|
@@ -32772,7 +32202,7 @@
|
|
32772
32202
|
};
|
32773
32203
|
});
|
32774
32204
|
}
|
32775
|
-
const version$1 = "3.8.10-
|
32205
|
+
const version$1 = "3.8.10-master.2025-06-18";
|
32776
32206
|
createVuetify$1.version = version$1;
|
32777
32207
|
|
32778
32208
|
// Vue's inject() can only be used in setup
|
@@ -33070,7 +32500,7 @@
|
|
33070
32500
|
|
33071
32501
|
/* eslint-disable local-rules/sort-imports */
|
33072
32502
|
|
33073
|
-
const version = "3.8.10-
|
32503
|
+
const version = "3.8.10-master.2025-06-18";
|
33074
32504
|
|
33075
32505
|
/* eslint-disable local-rules/sort-imports */
|
33076
32506
|
|