@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.esm.js
CHANGED
@@ -1,10 +1,10 @@
|
|
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
|
*/
|
6
6
|
|
7
|
-
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw,
|
7
|
+
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, toValue, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
|
8
8
|
|
9
9
|
// Types
|
10
10
|
// eslint-disable-line vue/prefer-import-from-vue
|
@@ -81,7 +81,6 @@ const IN_BROWSER = typeof window !== 'undefined';
|
|
81
81
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
82
82
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
83
83
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
84
|
-
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
85
84
|
|
86
85
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
87
86
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -588,23 +587,18 @@ function checkPrintable(e) {
|
|
588
587
|
function isPrimitive(value) {
|
589
588
|
return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
|
590
589
|
}
|
591
|
-
function
|
592
|
-
|
593
|
-
}
|
594
|
-
function extractNumber(text, decimalDigitsLimit, decimalSeparator) {
|
595
|
-
const onlyValidCharacters = new RegExp(`[\\d\\-${escapeForRegex(decimalSeparator)}]`);
|
596
|
-
const cleanText = text.split('').filter(x => onlyValidCharacters.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
590
|
+
function extractNumber(text, decimalDigitsLimit) {
|
591
|
+
const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
597
592
|
// sign allowed at the start
|
598
|
-
x ===
|
593
|
+
x === '.' && i === all.indexOf('.') ||
|
599
594
|
// decimal separator allowed only once
|
600
595
|
/\d/.test(x)).join('');
|
601
596
|
if (decimalDigitsLimit === 0) {
|
602
|
-
return cleanText.split(
|
597
|
+
return cleanText.split('.')[0];
|
603
598
|
}
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join(decimalSeparator);
|
599
|
+
if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
|
600
|
+
const parts = cleanText.split('.');
|
601
|
+
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
|
608
602
|
}
|
609
603
|
return cleanText;
|
610
604
|
}
|
@@ -2187,10 +2181,6 @@ function createNumberFunction(current, fallback) {
|
|
2187
2181
|
return numberFormat.format(value);
|
2188
2182
|
};
|
2189
2183
|
}
|
2190
|
-
function inferDecimalSeparator(current, fallback) {
|
2191
|
-
const format = createNumberFunction(current, fallback);
|
2192
|
-
return format(0.1).includes(',') ? ',' : '.';
|
2193
|
-
}
|
2194
2184
|
function useProvided(props, prop, provided) {
|
2195
2185
|
const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);
|
2196
2186
|
|
@@ -2213,7 +2203,6 @@ function createProvideFunction(state) {
|
|
2213
2203
|
current,
|
2214
2204
|
fallback,
|
2215
2205
|
messages,
|
2216
|
-
decimalSeparator: toRef(() => inferDecimalSeparator(current, fallback)),
|
2217
2206
|
t: createTranslateFunction(current, fallback, messages),
|
2218
2207
|
n: createNumberFunction(current, fallback),
|
2219
2208
|
provide: createProvideFunction({
|
@@ -2236,7 +2225,6 @@ function createVuetifyAdapter(options) {
|
|
2236
2225
|
current,
|
2237
2226
|
fallback,
|
2238
2227
|
messages,
|
2239
|
-
decimalSeparator: toRef(() => options?.decimalSeparator ?? inferDecimalSeparator(current, fallback)),
|
2240
2228
|
t: createTranslateFunction(current, fallback, messages),
|
2241
2229
|
n: createNumberFunction(current, fallback),
|
2242
2230
|
provide: createProvideFunction({
|
@@ -2363,7 +2351,6 @@ const makeThemeProps = propsFactory({
|
|
2363
2351
|
function genDefaults$2() {
|
2364
2352
|
return {
|
2365
2353
|
defaultTheme: 'light',
|
2366
|
-
prefix: 'v-',
|
2367
2354
|
variations: {
|
2368
2355
|
colors: [],
|
2369
2356
|
lighten: 0,
|
@@ -2401,8 +2388,8 @@ function genDefaults$2() {
|
|
2401
2388
|
'activated-opacity': 0.12,
|
2402
2389
|
'pressed-opacity': 0.12,
|
2403
2390
|
'dragged-opacity': 0.08,
|
2404
|
-
'theme-kbd': '#
|
2405
|
-
'theme-on-kbd': '#
|
2391
|
+
'theme-kbd': '#212529',
|
2392
|
+
'theme-on-kbd': '#FFFFFF',
|
2406
2393
|
'theme-code': '#F5F5F5',
|
2407
2394
|
'theme-on-code': '#000000'
|
2408
2395
|
}
|
@@ -2438,17 +2425,14 @@ function genDefaults$2() {
|
|
2438
2425
|
'activated-opacity': 0.12,
|
2439
2426
|
'pressed-opacity': 0.16,
|
2440
2427
|
'dragged-opacity': 0.08,
|
2441
|
-
'theme-kbd': '#
|
2428
|
+
'theme-kbd': '#212529',
|
2442
2429
|
'theme-on-kbd': '#FFFFFF',
|
2443
2430
|
'theme-code': '#343434',
|
2444
2431
|
'theme-on-code': '#CCCCCC'
|
2445
2432
|
}
|
2446
2433
|
}
|
2447
2434
|
},
|
2448
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2449
|
-
scoped: false,
|
2450
|
-
unimportant: false,
|
2451
|
-
utilities: true
|
2435
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2452
2436
|
};
|
2453
2437
|
}
|
2454
2438
|
function parseThemeOptions() {
|
@@ -2471,21 +2455,21 @@ function parseThemeOptions() {
|
|
2471
2455
|
function createCssClass(lines, selector, content, scope) {
|
2472
2456
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2473
2457
|
}
|
2474
|
-
function genCssVariables(theme
|
2458
|
+
function genCssVariables(theme) {
|
2475
2459
|
const lightOverlay = theme.dark ? 2 : 1;
|
2476
2460
|
const darkOverlay = theme.dark ? 1 : 2;
|
2477
2461
|
const variables = [];
|
2478
2462
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2479
2463
|
const rgb = parseColor(value);
|
2480
|
-
variables.push(
|
2464
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2481
2465
|
if (!key.startsWith('on-')) {
|
2482
|
-
variables.push(
|
2466
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2483
2467
|
}
|
2484
2468
|
}
|
2485
2469
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2486
2470
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2487
2471
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2488
|
-
variables.push(
|
2472
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2489
2473
|
}
|
2490
2474
|
return variables;
|
2491
2475
|
}
|
@@ -2529,8 +2513,7 @@ function getScopedSelector(selector, scope) {
|
|
2529
2513
|
const scopeSelector = `:where(${scope})`;
|
2530
2514
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
2531
2515
|
}
|
2532
|
-
function upsertStyles(
|
2533
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2516
|
+
function upsertStyles(styleEl, styles) {
|
2534
2517
|
if (!styleEl) return;
|
2535
2518
|
styleEl.innerHTML = styles;
|
2536
2519
|
}
|
@@ -2550,17 +2533,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
2550
2533
|
// Composables
|
2551
2534
|
function createTheme(options) {
|
2552
2535
|
const parsedOptions = parseThemeOptions(options);
|
2553
|
-
const
|
2536
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
2554
2537
|
const themes = ref(parsedOptions.themes);
|
2555
|
-
const systemName = shallowRef('light');
|
2556
|
-
const name = computed({
|
2557
|
-
get() {
|
2558
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
2559
|
-
},
|
2560
|
-
set(val) {
|
2561
|
-
_name.value = val;
|
2562
|
-
}
|
2563
|
-
});
|
2564
2538
|
const computedThemes = computed(() => {
|
2565
2539
|
const acc = {};
|
2566
2540
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -2581,49 +2555,28 @@ function createTheme(options) {
|
|
2581
2555
|
const current = toRef(() => computedThemes.value[name.value]);
|
2582
2556
|
const styles = computed(() => {
|
2583
2557
|
const lines = [];
|
2584
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
2585
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
2586
2558
|
if (current.value?.dark) {
|
2587
2559
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
2588
2560
|
}
|
2589
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
2561
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
2590
2562
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
2591
|
-
createCssClass(lines,
|
2592
|
-
}
|
2593
|
-
|
2594
|
-
|
2595
|
-
|
2596
|
-
|
2597
|
-
|
2598
|
-
|
2599
|
-
|
2600
|
-
}
|
2601
|
-
|
2602
|
-
|
2603
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
2604
|
-
}
|
2563
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
2564
|
+
}
|
2565
|
+
const bgLines = [];
|
2566
|
+
const fgLines = [];
|
2567
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
2568
|
+
for (const key of colors) {
|
2569
|
+
if (key.startsWith('on-')) {
|
2570
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2571
|
+
} else {
|
2572
|
+
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);
|
2573
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
2574
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
2605
2575
|
}
|
2606
|
-
lines.push(...bgLines, ...fgLines);
|
2607
2576
|
}
|
2577
|
+
lines.push(...bgLines, ...fgLines);
|
2608
2578
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
2609
2579
|
});
|
2610
|
-
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
2611
|
-
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
2612
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
2613
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
2614
|
-
function updateSystemName() {
|
2615
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
2616
|
-
}
|
2617
|
-
updateSystemName();
|
2618
|
-
media.addEventListener('change', updateSystemName, {
|
2619
|
-
passive: true
|
2620
|
-
});
|
2621
|
-
if (getCurrentScope()) {
|
2622
|
-
onScopeDispose(() => {
|
2623
|
-
media.removeEventListener('change', updateSystemName);
|
2624
|
-
});
|
2625
|
-
}
|
2626
|
-
}
|
2627
2580
|
function install(app) {
|
2628
2581
|
if (parsedOptions.isDisabled) return;
|
2629
2582
|
const head = app._context.provides.usehead;
|
@@ -2661,55 +2614,22 @@ function createTheme(options) {
|
|
2661
2614
|
updateStyles();
|
2662
2615
|
}
|
2663
2616
|
function updateStyles() {
|
2664
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
2617
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
2665
2618
|
}
|
2666
2619
|
}
|
2667
2620
|
}
|
2668
|
-
|
2669
|
-
if (!themeNames.value.includes(themeName)) {
|
2670
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
2671
|
-
return;
|
2672
|
-
}
|
2673
|
-
name.value = themeName;
|
2674
|
-
}
|
2675
|
-
function cycle() {
|
2676
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
2677
|
-
const currentIndex = themeArray.indexOf(name.value);
|
2678
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
2679
|
-
change(themeArray[nextIndex]);
|
2680
|
-
}
|
2681
|
-
function toggle() {
|
2682
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
2683
|
-
cycle(themeArray);
|
2684
|
-
}
|
2685
|
-
const globalName = new Proxy(name, {
|
2686
|
-
get(target, prop) {
|
2687
|
-
return target[prop];
|
2688
|
-
},
|
2689
|
-
set(target, prop, val) {
|
2690
|
-
if (prop === 'value') {
|
2691
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
2692
|
-
}
|
2693
|
-
// @ts-expect-error
|
2694
|
-
target[prop] = val;
|
2695
|
-
return true;
|
2696
|
-
}
|
2697
|
-
});
|
2621
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
2698
2622
|
return {
|
2699
2623
|
install,
|
2700
|
-
change,
|
2701
|
-
cycle,
|
2702
|
-
toggle,
|
2703
2624
|
isDisabled: parsedOptions.isDisabled,
|
2704
2625
|
name,
|
2705
2626
|
themes,
|
2706
2627
|
current,
|
2707
2628
|
computedThemes,
|
2708
|
-
prefix: parsedOptions.prefix,
|
2709
2629
|
themeClasses,
|
2710
2630
|
styles,
|
2711
2631
|
global: {
|
2712
|
-
name
|
2632
|
+
name,
|
2713
2633
|
current
|
2714
2634
|
}
|
2715
2635
|
};
|
@@ -2720,7 +2640,7 @@ function provideTheme(props) {
|
|
2720
2640
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
2721
2641
|
const name = toRef(() => props.theme ?? theme.name.value);
|
2722
2642
|
const current = toRef(() => theme.themes.value[name.value]);
|
2723
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
2643
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
2724
2644
|
const newTheme = {
|
2725
2645
|
...theme,
|
2726
2646
|
name,
|
@@ -3824,10 +3744,7 @@ const makeVToolbarProps = propsFactory({
|
|
3824
3744
|
default: 'default',
|
3825
3745
|
validator: v => allowedDensities$1.includes(v)
|
3826
3746
|
},
|
3827
|
-
extended:
|
3828
|
-
type: Boolean,
|
3829
|
-
default: null
|
3830
|
-
},
|
3747
|
+
extended: Boolean,
|
3831
3748
|
extensionHeight: {
|
3832
3749
|
type: [Number, String],
|
3833
3750
|
default: 48
|
@@ -3875,7 +3792,7 @@ const VToolbar = genericComponent()({
|
|
3875
3792
|
const {
|
3876
3793
|
rtlClasses
|
3877
3794
|
} = useRtl();
|
3878
|
-
const isExtended = shallowRef(props.extended
|
3795
|
+
const isExtended = shallowRef(!!(props.extended || slots.extension?.()));
|
3879
3796
|
const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
|
3880
3797
|
const extensionHeight = 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);
|
3881
3798
|
provideDefaults({
|
@@ -3887,7 +3804,7 @@ const VToolbar = genericComponent()({
|
|
3887
3804
|
const hasTitle = !!(props.title || slots.title);
|
3888
3805
|
const hasImage = !!(slots.image || props.image);
|
3889
3806
|
const extension = slots.extension?.();
|
3890
|
-
isExtended.value = props.extended
|
3807
|
+
isExtended.value = !!(props.extended || extension);
|
3891
3808
|
return createVNode(props.tag, {
|
3892
3809
|
"class": normalizeClass(['v-toolbar', {
|
3893
3810
|
'v-toolbar--absolute': props.absolute,
|
@@ -4270,15 +4187,9 @@ function useVariant(props) {
|
|
4270
4187
|
};
|
4271
4188
|
}
|
4272
4189
|
|
4273
|
-
// Types
|
4274
|
-
|
4275
4190
|
const makeVBtnGroupProps = propsFactory({
|
4276
4191
|
baseColor: String,
|
4277
4192
|
divided: Boolean,
|
4278
|
-
direction: {
|
4279
|
-
type: String,
|
4280
|
-
default: 'horizontal'
|
4281
|
-
},
|
4282
4193
|
...makeBorderProps(),
|
4283
4194
|
...makeComponentProps(),
|
4284
4195
|
...makeDensityProps(),
|
@@ -4312,7 +4223,7 @@ const VBtnGroup = genericComponent()({
|
|
4312
4223
|
} = useRounded(props);
|
4313
4224
|
provideDefaults({
|
4314
4225
|
VBtn: {
|
4315
|
-
height:
|
4226
|
+
height: 'auto',
|
4316
4227
|
baseColor: toRef(() => props.baseColor),
|
4317
4228
|
color: toRef(() => props.color),
|
4318
4229
|
density: toRef(() => props.density),
|
@@ -4322,7 +4233,7 @@ const VBtnGroup = genericComponent()({
|
|
4322
4233
|
});
|
4323
4234
|
useRender(() => {
|
4324
4235
|
return createVNode(props.tag, {
|
4325
|
-
"class": normalizeClass(['v-btn-group',
|
4236
|
+
"class": normalizeClass(['v-btn-group', {
|
4326
4237
|
'v-btn-group--divided': props.divided
|
4327
4238
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4328
4239
|
"style": normalizeStyle(props.style)
|
@@ -5655,8 +5566,8 @@ function rippleCancelShow(e) {
|
|
5655
5566
|
window.clearTimeout(element._ripple.showTimer);
|
5656
5567
|
}
|
5657
5568
|
let keyboardRipple = false;
|
5658
|
-
function keyboardRippleShow(e
|
5659
|
-
if (!keyboardRipple &&
|
5569
|
+
function keyboardRippleShow(e) {
|
5570
|
+
if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
|
5660
5571
|
keyboardRipple = true;
|
5661
5572
|
rippleShow(e);
|
5662
5573
|
}
|
@@ -5684,12 +5595,9 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5684
5595
|
el._ripple.enabled = enabled;
|
5685
5596
|
el._ripple.centered = modifiers.center;
|
5686
5597
|
el._ripple.circle = modifiers.circle;
|
5687
|
-
|
5688
|
-
|
5689
|
-
el._ripple.class = bindingValue.class;
|
5598
|
+
if (isObject(value) && value.class) {
|
5599
|
+
el._ripple.class = value.class;
|
5690
5600
|
}
|
5691
|
-
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5692
|
-
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5693
5601
|
if (enabled && !wasEnabled) {
|
5694
5602
|
if (modifiers.stop) {
|
5695
5603
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5711,7 +5619,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5711
5619
|
el.addEventListener('mousedown', rippleShow);
|
5712
5620
|
el.addEventListener('mouseup', rippleHide);
|
5713
5621
|
el.addEventListener('mouseleave', rippleHide);
|
5714
|
-
el.addEventListener('keydown',
|
5622
|
+
el.addEventListener('keydown', keyboardRippleShow);
|
5715
5623
|
el.addEventListener('keyup', keyboardRippleHide);
|
5716
5624
|
el.addEventListener('blur', focusRippleHide);
|
5717
5625
|
|
@@ -5731,9 +5639,7 @@ function removeListeners(el) {
|
|
5731
5639
|
el.removeEventListener('touchcancel', rippleHide);
|
5732
5640
|
el.removeEventListener('mouseup', rippleHide);
|
5733
5641
|
el.removeEventListener('mouseleave', rippleHide);
|
5734
|
-
|
5735
|
-
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
5736
|
-
}
|
5642
|
+
el.removeEventListener('keydown', keyboardRippleShow);
|
5737
5643
|
el.removeEventListener('keyup', keyboardRippleHide);
|
5738
5644
|
el.removeEventListener('dragstart', rippleHide);
|
5739
5645
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -5742,8 +5648,8 @@ function mounted$4(el, binding) {
|
|
5742
5648
|
updateRipple(el, binding, false);
|
5743
5649
|
}
|
5744
5650
|
function unmounted$4(el) {
|
5745
|
-
removeListeners(el);
|
5746
5651
|
delete el._ripple;
|
5652
|
+
removeListeners(el);
|
5747
5653
|
}
|
5748
5654
|
function updated$1(el, binding) {
|
5749
5655
|
if (binding.value === binding.oldValue) {
|
@@ -6016,31 +5922,6 @@ const VAppBarTitle = genericComponent()({
|
|
6016
5922
|
// Utilities
|
6017
5923
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6018
5924
|
|
6019
|
-
// Utilities
|
6020
|
-
|
6021
|
-
// Types
|
6022
|
-
|
6023
|
-
// Types
|
6024
|
-
|
6025
|
-
// Composables
|
6026
|
-
const makeIconSizeProps = propsFactory({
|
6027
|
-
iconSize: [Number, String],
|
6028
|
-
iconSizes: {
|
6029
|
-
type: Array,
|
6030
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6031
|
-
}
|
6032
|
-
}, 'iconSize');
|
6033
|
-
function useIconSizes(props, fallback) {
|
6034
|
-
const iconSize = computed(() => {
|
6035
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6036
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6037
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6038
|
-
});
|
6039
|
-
return {
|
6040
|
-
iconSize
|
6041
|
-
};
|
6042
|
-
}
|
6043
|
-
|
6044
5925
|
// Types
|
6045
5926
|
|
6046
5927
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6080,7 +5961,6 @@ const makeVAlertProps = propsFactory({
|
|
6080
5961
|
...makeDensityProps(),
|
6081
5962
|
...makeDimensionProps(),
|
6082
5963
|
...makeElevationProps(),
|
6083
|
-
...makeIconSizeProps(),
|
6084
5964
|
...makeLocationProps(),
|
6085
5965
|
...makePositionProps(),
|
6086
5966
|
...makeRoundedProps(),
|
@@ -6108,9 +5988,6 @@ const VAlert = genericComponent()({
|
|
6108
5988
|
if (!props.type) return props.icon;
|
6109
5989
|
return props.icon ?? `$${props.type}`;
|
6110
5990
|
});
|
6111
|
-
const {
|
6112
|
-
iconSize
|
6113
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6114
5991
|
const {
|
6115
5992
|
themeClasses
|
6116
5993
|
} = provideTheme(props);
|
@@ -6158,11 +6035,6 @@ const VAlert = genericComponent()({
|
|
6158
6035
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6159
6036
|
const hasTitle = !!(slots.title || props.title);
|
6160
6037
|
const hasClose = !!(slots.close || props.closable);
|
6161
|
-
const iconProps = {
|
6162
|
-
density: props.density,
|
6163
|
-
icon: icon.value,
|
6164
|
-
size: iconSize.value
|
6165
|
-
};
|
6166
6038
|
return isActive.value && createVNode(props.tag, {
|
6167
6039
|
"class": normalizeClass(['v-alert', props.border && {
|
6168
6040
|
'v-alert--border': !!props.border,
|
@@ -6180,14 +6052,19 @@ const VAlert = genericComponent()({
|
|
6180
6052
|
}, null), hasPrepend && createElementVNode("div", {
|
6181
6053
|
"key": "prepend",
|
6182
6054
|
"class": "v-alert__prepend"
|
6183
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6184
|
-
"key": "prepend-icon"
|
6185
|
-
|
6055
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6056
|
+
"key": "prepend-icon",
|
6057
|
+
"density": props.density,
|
6058
|
+
"icon": icon.value,
|
6059
|
+
"size": props.prominent ? 44 : 28
|
6060
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6186
6061
|
"key": "prepend-defaults",
|
6187
6062
|
"disabled": !icon.value,
|
6188
6063
|
"defaults": {
|
6189
6064
|
VIcon: {
|
6190
|
-
|
6065
|
+
density: props.density,
|
6066
|
+
icon: icon.value,
|
6067
|
+
size: props.prominent ? 44 : 28
|
6191
6068
|
}
|
6192
6069
|
}
|
6193
6070
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7712,7 +7589,6 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7712
7589
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7713
7590
|
const makeVSlideGroupProps = propsFactory({
|
7714
7591
|
centerActive: Boolean,
|
7715
|
-
contentClass: null,
|
7716
7592
|
direction: {
|
7717
7593
|
type: String,
|
7718
7594
|
default: 'horizontal'
|
@@ -8025,7 +7901,7 @@ const VSlideGroup = genericComponent()({
|
|
8025
7901
|
})]), createElementVNode("div", {
|
8026
7902
|
"key": "container",
|
8027
7903
|
"ref": containerRef,
|
8028
|
-
"class":
|
7904
|
+
"class": "v-slide-group__container",
|
8029
7905
|
"onScroll": onScroll
|
8030
7906
|
}, [createElementVNode("div", {
|
8031
7907
|
"ref": contentRef,
|
@@ -8388,85 +8264,16 @@ const VChip = genericComponent()({
|
|
8388
8264
|
}
|
8389
8265
|
});
|
8390
8266
|
|
8391
|
-
const makeVDividerProps = propsFactory({
|
8392
|
-
color: String,
|
8393
|
-
inset: Boolean,
|
8394
|
-
length: [Number, String],
|
8395
|
-
opacity: [Number, String],
|
8396
|
-
thickness: [Number, String],
|
8397
|
-
vertical: Boolean,
|
8398
|
-
...makeComponentProps(),
|
8399
|
-
...makeThemeProps()
|
8400
|
-
}, 'VDivider');
|
8401
|
-
const VDivider = genericComponent()({
|
8402
|
-
name: 'VDivider',
|
8403
|
-
props: makeVDividerProps(),
|
8404
|
-
setup(props, _ref) {
|
8405
|
-
let {
|
8406
|
-
attrs,
|
8407
|
-
slots
|
8408
|
-
} = _ref;
|
8409
|
-
const {
|
8410
|
-
themeClasses
|
8411
|
-
} = provideTheme(props);
|
8412
|
-
const {
|
8413
|
-
textColorClasses,
|
8414
|
-
textColorStyles
|
8415
|
-
} = useTextColor(() => props.color);
|
8416
|
-
const dividerStyles = computed(() => {
|
8417
|
-
const styles = {};
|
8418
|
-
if (props.length) {
|
8419
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8420
|
-
}
|
8421
|
-
if (props.thickness) {
|
8422
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8423
|
-
}
|
8424
|
-
return styles;
|
8425
|
-
});
|
8426
|
-
useRender(() => {
|
8427
|
-
const divider = createElementVNode("hr", {
|
8428
|
-
"class": normalizeClass([{
|
8429
|
-
'v-divider': true,
|
8430
|
-
'v-divider--inset': props.inset,
|
8431
|
-
'v-divider--vertical': props.vertical
|
8432
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8433
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8434
|
-
'--v-border-opacity': props.opacity
|
8435
|
-
}, props.style]),
|
8436
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8437
|
-
"role": `${attrs.role || 'separator'}`
|
8438
|
-
}, null);
|
8439
|
-
if (!slots.default) return divider;
|
8440
|
-
return createElementVNode("div", {
|
8441
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
8442
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8443
|
-
'v-divider__wrapper--inset': props.inset
|
8444
|
-
}])
|
8445
|
-
}, [divider, createElementVNode("div", {
|
8446
|
-
"class": "v-divider__content"
|
8447
|
-
}, [slots.default()]), divider]);
|
8448
|
-
});
|
8449
|
-
return {};
|
8450
|
-
}
|
8451
|
-
});
|
8452
|
-
|
8453
8267
|
// Utilities
|
8454
8268
|
|
8455
8269
|
// List
|
8456
8270
|
const ListKey = Symbol.for('vuetify:list');
|
8457
8271
|
function createList() {
|
8458
|
-
let {
|
8459
|
-
filterable
|
8460
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8461
|
-
filterable: false
|
8462
|
-
};
|
8463
8272
|
const parent = inject$1(ListKey, {
|
8464
|
-
filterable: false,
|
8465
8273
|
hasPrepend: shallowRef(false),
|
8466
8274
|
updateHasPrepend: () => null
|
8467
8275
|
});
|
8468
8276
|
const data = {
|
8469
|
-
filterable: parent.filterable || filterable,
|
8470
8277
|
hasPrepend: shallowRef(false),
|
8471
8278
|
updateHasPrepend: value => {
|
8472
8279
|
if (value) data.hasPrepend.value = value;
|
@@ -9418,9 +9225,6 @@ const VListItem = genericComponent()({
|
|
9418
9225
|
roundedClasses
|
9419
9226
|
} = useRounded(roundedProps);
|
9420
9227
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9421
|
-
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9422
|
-
keys: [keyCodes.enter]
|
9423
|
-
} : props.ripple);
|
9424
9228
|
const slotProps = computed(() => ({
|
9425
9229
|
isActive: isActive.value,
|
9426
9230
|
select,
|
@@ -9445,9 +9249,8 @@ const VListItem = genericComponent()({
|
|
9445
9249
|
function onKeyDown(e) {
|
9446
9250
|
const target = e.target;
|
9447
9251
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9448
|
-
if (e.key === 'Enter' || e.key === ' '
|
9252
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
9449
9253
|
e.preventDefault();
|
9450
|
-
e.stopPropagation();
|
9451
9254
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9452
9255
|
}
|
9453
9256
|
}
|
@@ -9557,7 +9360,7 @@ const VListItem = genericComponent()({
|
|
9557
9360
|
}), createElementVNode("div", {
|
9558
9361
|
"class": "v-list-item__spacer"
|
9559
9362
|
}, null)])]
|
9560
|
-
}), [[Ripple, isClickable.value &&
|
9363
|
+
}), [[Ripple, isClickable.value && props.ripple]]);
|
9561
9364
|
});
|
9562
9365
|
return {
|
9563
9366
|
activate,
|
@@ -9612,6 +9415,68 @@ const VListSubheader = genericComponent()({
|
|
9612
9415
|
}
|
9613
9416
|
});
|
9614
9417
|
|
9418
|
+
const makeVDividerProps = propsFactory({
|
9419
|
+
color: String,
|
9420
|
+
inset: Boolean,
|
9421
|
+
length: [Number, String],
|
9422
|
+
opacity: [Number, String],
|
9423
|
+
thickness: [Number, String],
|
9424
|
+
vertical: Boolean,
|
9425
|
+
...makeComponentProps(),
|
9426
|
+
...makeThemeProps()
|
9427
|
+
}, 'VDivider');
|
9428
|
+
const VDivider = genericComponent()({
|
9429
|
+
name: 'VDivider',
|
9430
|
+
props: makeVDividerProps(),
|
9431
|
+
setup(props, _ref) {
|
9432
|
+
let {
|
9433
|
+
attrs,
|
9434
|
+
slots
|
9435
|
+
} = _ref;
|
9436
|
+
const {
|
9437
|
+
themeClasses
|
9438
|
+
} = provideTheme(props);
|
9439
|
+
const {
|
9440
|
+
textColorClasses,
|
9441
|
+
textColorStyles
|
9442
|
+
} = useTextColor(() => props.color);
|
9443
|
+
const dividerStyles = computed(() => {
|
9444
|
+
const styles = {};
|
9445
|
+
if (props.length) {
|
9446
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9447
|
+
}
|
9448
|
+
if (props.thickness) {
|
9449
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9450
|
+
}
|
9451
|
+
return styles;
|
9452
|
+
});
|
9453
|
+
useRender(() => {
|
9454
|
+
const divider = createElementVNode("hr", {
|
9455
|
+
"class": normalizeClass([{
|
9456
|
+
'v-divider': true,
|
9457
|
+
'v-divider--inset': props.inset,
|
9458
|
+
'v-divider--vertical': props.vertical
|
9459
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9460
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9461
|
+
'--v-border-opacity': props.opacity
|
9462
|
+
}, props.style]),
|
9463
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9464
|
+
"role": `${attrs.role || 'separator'}`
|
9465
|
+
}, null);
|
9466
|
+
if (!slots.default) return divider;
|
9467
|
+
return createElementVNode("div", {
|
9468
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
9469
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9470
|
+
'v-divider__wrapper--inset': props.inset
|
9471
|
+
}])
|
9472
|
+
}, [divider, createElementVNode("div", {
|
9473
|
+
"class": "v-divider__content"
|
9474
|
+
}, [slots.default()]), divider]);
|
9475
|
+
});
|
9476
|
+
return {};
|
9477
|
+
}
|
9478
|
+
});
|
9479
|
+
|
9615
9480
|
// Types
|
9616
9481
|
|
9617
9482
|
const makeVListChildrenProps = propsFactory({
|
@@ -9881,7 +9746,6 @@ const makeVListProps = propsFactory({
|
|
9881
9746
|
activeClass: String,
|
9882
9747
|
bgColor: String,
|
9883
9748
|
disabled: Boolean,
|
9884
|
-
filterable: Boolean,
|
9885
9749
|
expandIcon: IconValue,
|
9886
9750
|
collapseIcon: IconValue,
|
9887
9751
|
lines: {
|
@@ -9965,9 +9829,7 @@ const VList = genericComponent()({
|
|
9965
9829
|
const activeColor = toRef(() => props.activeColor);
|
9966
9830
|
const baseColor = toRef(() => props.baseColor);
|
9967
9831
|
const color = toRef(() => props.color);
|
9968
|
-
createList(
|
9969
|
-
filterable: props.filterable
|
9970
|
-
});
|
9832
|
+
createList();
|
9971
9833
|
provideDefaults({
|
9972
9834
|
VListGroup: {
|
9973
9835
|
activeColor,
|
@@ -11650,7 +11512,6 @@ const makeVMenuProps = propsFactory({
|
|
11650
11512
|
// disableKeys: Boolean,
|
11651
11513
|
id: String,
|
11652
11514
|
submenu: Boolean,
|
11653
|
-
disableInitialFocus: Boolean,
|
11654
11515
|
...omit(makeVOverlayProps({
|
11655
11516
|
closeDelay: 250,
|
11656
11517
|
closeOnContentClick: true,
|
@@ -11725,7 +11586,7 @@ const VMenu = genericComponent()({
|
|
11725
11586
|
watch(isActive, val => {
|
11726
11587
|
if (val) {
|
11727
11588
|
parent?.register();
|
11728
|
-
if (IN_BROWSER
|
11589
|
+
if (IN_BROWSER) {
|
11729
11590
|
document.addEventListener('focusin', onFocusIn, {
|
11730
11591
|
once: true
|
11731
11592
|
});
|
@@ -12562,12 +12423,7 @@ function useVirtual(props, items) {
|
|
12562
12423
|
}
|
12563
12424
|
function calculateOffset(index) {
|
12564
12425
|
index = clamp(index, 0, items.value.length - 1);
|
12565
|
-
|
12566
|
-
const fraction = index % 1;
|
12567
|
-
const next = whole + 1;
|
12568
|
-
const wholeOffset = offsets[whole] || 0;
|
12569
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12570
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12426
|
+
return offsets[index] || 0;
|
12571
12427
|
}
|
12572
12428
|
function calculateIndex(scrollTop) {
|
12573
12429
|
return binaryClosest(offsets, scrollTop);
|
@@ -12921,7 +12777,6 @@ const makeSelectProps = propsFactory({
|
|
12921
12777
|
},
|
12922
12778
|
openOnClear: Boolean,
|
12923
12779
|
itemColor: String,
|
12924
|
-
noAutoScroll: Boolean,
|
12925
12780
|
...makeItemsProps({
|
12926
12781
|
itemChildren: false
|
12927
12782
|
})
|
@@ -13136,7 +12991,7 @@ const VSelect = genericComponent()({
|
|
13136
12991
|
watch(menu, () => {
|
13137
12992
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13138
12993
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13139
|
-
IN_BROWSER &&
|
12994
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13140
12995
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13141
12996
|
});
|
13142
12997
|
}
|
@@ -13229,22 +13084,6 @@ const VSelect = genericComponent()({
|
|
13229
13084
|
key: item.value,
|
13230
13085
|
onClick: () => select(item, null)
|
13231
13086
|
});
|
13232
|
-
if (item.raw.type === 'divider') {
|
13233
|
-
return slots.divider?.({
|
13234
|
-
props: item.raw,
|
13235
|
-
index
|
13236
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13237
|
-
"key": `divider-${index}`
|
13238
|
-
}), null);
|
13239
|
-
}
|
13240
|
-
if (item.raw.type === 'subheader') {
|
13241
|
-
return slots.subheader?.({
|
13242
|
-
props: item.raw,
|
13243
|
-
index
|
13244
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13245
|
-
"key": `subheader-${index}`
|
13246
|
-
}), null);
|
13247
|
-
}
|
13248
13087
|
return slots.item?.({
|
13249
13088
|
item,
|
13250
13089
|
index,
|
@@ -13405,9 +13244,6 @@ function filterItems(items, query, options) {
|
|
13405
13244
|
let match = -1;
|
13406
13245
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13407
13246
|
if (typeof item === 'object') {
|
13408
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13409
|
-
continue;
|
13410
|
-
}
|
13411
13247
|
const filterKeys = keys || Object.keys(transformed);
|
13412
13248
|
for (const key of filterKeys) {
|
13413
13249
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13610,7 +13446,7 @@ const VAutocomplete = genericComponent()({
|
|
13610
13446
|
menu.value = !menu.value;
|
13611
13447
|
}
|
13612
13448
|
function onListKeydown(e) {
|
13613
|
-
if (
|
13449
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
13614
13450
|
vTextFieldRef.value?.focus();
|
13615
13451
|
}
|
13616
13452
|
}
|
@@ -13815,7 +13651,6 @@ const VAutocomplete = genericComponent()({
|
|
13815
13651
|
}, props.menuProps), {
|
13816
13652
|
default: () => [hasList && createVNode(VList, mergeProps({
|
13817
13653
|
"ref": listRef,
|
13818
|
-
"filterable": true,
|
13819
13654
|
"selected": selectedValues.value,
|
13820
13655
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
13821
13656
|
"onMousedown": e => e.preventDefault(),
|
@@ -13847,22 +13682,6 @@ const VAutocomplete = genericComponent()({
|
|
13847
13682
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
13848
13683
|
onClick: () => select(item, null)
|
13849
13684
|
});
|
13850
|
-
if (item.raw.type === 'divider') {
|
13851
|
-
return slots.divider?.({
|
13852
|
-
props: item.raw,
|
13853
|
-
index
|
13854
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13855
|
-
"key": `divider-${index}`
|
13856
|
-
}), null);
|
13857
|
-
}
|
13858
|
-
if (item.raw.type === 'subheader') {
|
13859
|
-
return slots.subheader?.({
|
13860
|
-
props: item.raw,
|
13861
|
-
index
|
13862
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13863
|
-
"key": `subheader-${index}`
|
13864
|
-
}), null);
|
13865
|
-
}
|
13866
13685
|
return slots.item?.({
|
13867
13686
|
item,
|
13868
13687
|
index,
|
@@ -14007,8 +13826,7 @@ const makeVBadgeProps = propsFactory({
|
|
14007
13826
|
...makeThemeProps(),
|
14008
13827
|
...makeTransitionProps({
|
14009
13828
|
transition: 'scale-rotate-transition'
|
14010
|
-
})
|
14011
|
-
...makeDimensionProps()
|
13829
|
+
})
|
14012
13830
|
}, 'VBadge');
|
14013
13831
|
const VBadge = genericComponent()({
|
14014
13832
|
name: 'VBadge',
|
@@ -14038,9 +13856,6 @@ const VBadge = genericComponent()({
|
|
14038
13856
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
14039
13857
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
14040
13858
|
});
|
14041
|
-
const {
|
14042
|
-
dimensionStyles
|
14043
|
-
} = useDimension(props);
|
14044
13859
|
useRender(() => {
|
14045
13860
|
const value = Number(props.content);
|
14046
13861
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -14062,7 +13877,7 @@ const VBadge = genericComponent()({
|
|
14062
13877
|
}, {
|
14063
13878
|
default: () => [withDirectives(createElementVNode("span", mergeProps({
|
14064
13879
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
14065
|
-
"style": [backgroundColorStyles.value, textColorStyles.value,
|
13880
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14066
13881
|
"aria-atomic": "true",
|
14067
13882
|
"aria-label": t(props.label, value),
|
14068
13883
|
"aria-live": "polite",
|
@@ -17471,13 +17286,13 @@ function date(value) {
|
|
17471
17286
|
return null;
|
17472
17287
|
}
|
17473
17288
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17474
|
-
function getWeekdays(locale, firstDayOfWeek
|
17289
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17475
17290
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17476
17291
|
return createRange(7).map(i => {
|
17477
17292
|
const weekday = new Date(sundayJanuarySecond2000);
|
17478
17293
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17479
17294
|
return new Intl.DateTimeFormat(locale, {
|
17480
|
-
weekday:
|
17295
|
+
weekday: 'narrow'
|
17481
17296
|
}).format(weekday);
|
17482
17297
|
});
|
17483
17298
|
}
|
@@ -17941,9 +17756,9 @@ class VuetifyDateAdapter {
|
|
17941
17756
|
getDiff(date, comparing, unit) {
|
17942
17757
|
return getDiff(date, comparing, unit);
|
17943
17758
|
}
|
17944
|
-
getWeekdays(firstDayOfWeek
|
17759
|
+
getWeekdays(firstDayOfWeek) {
|
17945
17760
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
17946
|
-
return getWeekdays(this.locale, firstDay
|
17761
|
+
return getWeekdays(this.locale, firstDay);
|
17947
17762
|
}
|
17948
17763
|
getYear(date) {
|
17949
17764
|
return getYear(date);
|
@@ -18298,7 +18113,6 @@ const VCombobox = genericComponent()({
|
|
18298
18113
|
_search.value = val ?? '';
|
18299
18114
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18300
18115
|
model.value = [transformItem$3(props, val)];
|
18301
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18302
18116
|
}
|
18303
18117
|
if (val && props.multiple && props.delimiters?.length) {
|
18304
18118
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18379,7 +18193,7 @@ const VCombobox = genericComponent()({
|
|
18379
18193
|
menu.value = !menu.value;
|
18380
18194
|
}
|
18381
18195
|
function onListKeydown(e) {
|
18382
|
-
if (
|
18196
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
18383
18197
|
vTextFieldRef.value?.focus();
|
18384
18198
|
}
|
18385
18199
|
}
|
@@ -18584,7 +18398,6 @@ const VCombobox = genericComponent()({
|
|
18584
18398
|
}, props.menuProps), {
|
18585
18399
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18586
18400
|
"ref": listRef,
|
18587
|
-
"filterable": true,
|
18588
18401
|
"selected": selectedValues.value,
|
18589
18402
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18590
18403
|
"onMousedown": e => e.preventDefault(),
|
@@ -18616,22 +18429,6 @@ const VCombobox = genericComponent()({
|
|
18616
18429
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18617
18430
|
onClick: () => select(item, null)
|
18618
18431
|
});
|
18619
|
-
if (item.raw.type === 'divider') {
|
18620
|
-
return slots.divider?.({
|
18621
|
-
props: item.raw,
|
18622
|
-
index
|
18623
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18624
|
-
"key": `divider-${index}`
|
18625
|
-
}), null);
|
18626
|
-
}
|
18627
|
-
if (item.raw.type === 'subheader') {
|
18628
|
-
return slots.subheader?.({
|
18629
|
-
props: item.raw,
|
18630
|
-
index
|
18631
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18632
|
-
"key": `subheader-${index}`
|
18633
|
-
}), null);
|
18634
|
-
}
|
18635
18432
|
return slots.item?.({
|
18636
18433
|
item,
|
18637
18434
|
index,
|
@@ -20514,7 +20311,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20514
20311
|
color: String,
|
20515
20312
|
disableSort: Boolean,
|
20516
20313
|
fixedHeader: Boolean,
|
20517
|
-
lastFixed: Boolean,
|
20518
20314
|
multiSort: Boolean,
|
20519
20315
|
sortAscIcon: {
|
20520
20316
|
type: IconValue,
|
@@ -20561,11 +20357,10 @@ const VDataTableHeaders = genericComponent()({
|
|
20561
20357
|
loaderClasses
|
20562
20358
|
} = useLoader(props);
|
20563
20359
|
function getFixedStyles(column, y) {
|
20564
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20360
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20565
20361
|
return {
|
20566
20362
|
position: 'sticky',
|
20567
|
-
left: column.fixed
|
20568
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20363
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20569
20364
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20570
20365
|
};
|
20571
20366
|
}
|
@@ -21081,18 +20876,11 @@ const VDataTableRows = genericComponent()({
|
|
21081
20876
|
}
|
21082
20877
|
});
|
21083
20878
|
|
21084
|
-
// Types
|
21085
|
-
|
21086
20879
|
const makeVTableProps = propsFactory({
|
21087
20880
|
fixedHeader: Boolean,
|
21088
20881
|
fixedFooter: Boolean,
|
21089
20882
|
height: [Number, String],
|
21090
20883
|
hover: Boolean,
|
21091
|
-
striped: {
|
21092
|
-
type: String,
|
21093
|
-
default: null,
|
21094
|
-
validator: v => ['even', 'odd'].includes(v)
|
21095
|
-
},
|
21096
20884
|
...makeComponentProps(),
|
21097
20885
|
...makeDensityProps(),
|
21098
20886
|
...makeTagProps(),
|
@@ -21119,9 +20907,7 @@ const VTable = genericComponent()({
|
|
21119
20907
|
'v-table--fixed-footer': props.fixedFooter,
|
21120
20908
|
'v-table--has-top': !!slots.top,
|
21121
20909
|
'v-table--has-bottom': !!slots.bottom,
|
21122
|
-
'v-table--hover': props.hover
|
21123
|
-
'v-table--striped-even': props.striped === 'even',
|
21124
|
-
'v-table--striped-odd': props.striped === 'odd'
|
20910
|
+
'v-table--hover': props.hover
|
21125
20911
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21126
20912
|
"style": normalizeStyle(props.style)
|
21127
20913
|
}, {
|
@@ -22296,8 +22082,7 @@ const makeCalendarProps = propsFactory({
|
|
22296
22082
|
firstDayOfWeek: {
|
22297
22083
|
type: [Number, String],
|
22298
22084
|
default: undefined
|
22299
|
-
}
|
22300
|
-
weekdayFormat: String
|
22085
|
+
}
|
22301
22086
|
}, 'calendar');
|
22302
22087
|
function useCalendar(props) {
|
22303
22088
|
const adapter = useDate();
|
@@ -22538,7 +22323,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22538
22323
|
"ref": daysRef,
|
22539
22324
|
"key": daysInMonth.value[0].date?.toString(),
|
22540
22325
|
"class": "v-date-picker-month__days"
|
22541
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22326
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22542
22327
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22543
22328
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22544
22329
|
const slotProps = {
|
@@ -23047,9 +22832,7 @@ const VDatePicker = genericComponent()({
|
|
23047
22832
|
"max": maxDate.value,
|
23048
22833
|
"year": year.value,
|
23049
22834
|
"allowedMonths": allowedMonths
|
23050
|
-
}), {
|
23051
|
-
...pick(slots, ['month'])
|
23052
|
-
}) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
22835
|
+
}), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
23053
22836
|
"key": "date-picker-years"
|
23054
22837
|
}, datePickerYearsProps, {
|
23055
22838
|
"modelValue": year.value,
|
@@ -23057,9 +22840,7 @@ const VDatePicker = genericComponent()({
|
|
23057
22840
|
"min": minDate.value,
|
23058
22841
|
"max": maxDate.value,
|
23059
22842
|
"allowedYears": allowedYears
|
23060
|
-
}), {
|
23061
|
-
...pick(slots, ['year'])
|
23062
|
-
}) : createVNode(VDatePickerMonth, mergeProps({
|
22843
|
+
}), null) : createVNode(VDatePickerMonth, mergeProps({
|
23063
22844
|
"key": "date-picker-month"
|
23064
22845
|
}, datePickerMonthProps, {
|
23065
22846
|
"modelValue": model.value,
|
@@ -23070,9 +22851,7 @@ const VDatePicker = genericComponent()({
|
|
23070
22851
|
"onUpdate:year": [$event => year.value = $event, onUpdateYear],
|
23071
22852
|
"min": minDate.value,
|
23072
22853
|
"max": maxDate.value
|
23073
|
-
}),
|
23074
|
-
...pick(slots, ['day'])
|
23075
|
-
})]
|
22854
|
+
}), null)]
|
23076
22855
|
})]),
|
23077
22856
|
actions: slots.actions
|
23078
22857
|
});
|
@@ -24163,9 +23942,6 @@ const VInfiniteScroll = genericComponent()({
|
|
24163
23942
|
startStatus.value = status;
|
24164
23943
|
} else if (side === 'end') {
|
24165
23944
|
endStatus.value = status;
|
24166
|
-
} else if (side === 'both') {
|
24167
|
-
startStatus.value = status;
|
24168
|
-
endStatus.value = status;
|
24169
23945
|
}
|
24170
23946
|
}
|
24171
23947
|
function getStatus(side) {
|
@@ -24277,32 +24053,6 @@ const VInfiniteScroll = genericComponent()({
|
|
24277
24053
|
}, [renderSide('end', endStatus.value)])]
|
24278
24054
|
});
|
24279
24055
|
});
|
24280
|
-
function reset(side) {
|
24281
|
-
const effectiveSide = side ?? props.side;
|
24282
|
-
setStatus(effectiveSide, 'ok');
|
24283
|
-
nextTick(() => {
|
24284
|
-
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24285
|
-
if (props.mode !== 'manual') {
|
24286
|
-
nextTick(() => {
|
24287
|
-
window.requestAnimationFrame(() => {
|
24288
|
-
window.requestAnimationFrame(() => {
|
24289
|
-
window.requestAnimationFrame(() => {
|
24290
|
-
if (effectiveSide === 'both') {
|
24291
|
-
intersecting('start');
|
24292
|
-
intersecting('end');
|
24293
|
-
} else {
|
24294
|
-
intersecting(effectiveSide);
|
24295
|
-
}
|
24296
|
-
});
|
24297
|
-
});
|
24298
|
-
});
|
24299
|
-
});
|
24300
|
-
}
|
24301
|
-
});
|
24302
|
-
}
|
24303
|
-
return {
|
24304
|
-
reset
|
24305
|
-
};
|
24306
24056
|
}
|
24307
24057
|
});
|
24308
24058
|
|
@@ -24382,47 +24132,8 @@ const VItem = genericComponent()({
|
|
24382
24132
|
}
|
24383
24133
|
});
|
24384
24134
|
|
24385
|
-
|
24386
|
-
|
24387
|
-
...makeComponentProps(),
|
24388
|
-
...makeRoundedProps(),
|
24389
|
-
...makeTagProps({
|
24390
|
-
tag: 'kbd'
|
24391
|
-
}),
|
24392
|
-
...makeThemeProps(),
|
24393
|
-
...makeElevationProps(),
|
24394
|
-
color: String
|
24395
|
-
}, 'VKbd');
|
24396
|
-
const VKbd = genericComponent()({
|
24397
|
-
name: 'VKbd',
|
24398
|
-
props: makeVKbdProps(),
|
24399
|
-
setup(props, _ref) {
|
24400
|
-
let {
|
24401
|
-
slots
|
24402
|
-
} = _ref;
|
24403
|
-
const {
|
24404
|
-
themeClasses
|
24405
|
-
} = provideTheme(props);
|
24406
|
-
const {
|
24407
|
-
borderClasses
|
24408
|
-
} = useBorder(props);
|
24409
|
-
const {
|
24410
|
-
roundedClasses
|
24411
|
-
} = useRounded(props);
|
24412
|
-
const {
|
24413
|
-
backgroundColorClasses,
|
24414
|
-
backgroundColorStyles
|
24415
|
-
} = useBackgroundColor(() => props.color);
|
24416
|
-
const {
|
24417
|
-
elevationClasses
|
24418
|
-
} = useElevation(props);
|
24419
|
-
useRender(() => createVNode(props.tag, {
|
24420
|
-
"class": normalizeClass(['v-kbd', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
24421
|
-
"style": normalizeStyle([backgroundColorStyles.value, props.style])
|
24422
|
-
}, slots));
|
24423
|
-
return {};
|
24424
|
-
}
|
24425
|
-
});
|
24135
|
+
// Styles
|
24136
|
+
const VKbd = createSimpleFunctional('v-kbd', 'kbd');
|
24426
24137
|
|
24427
24138
|
const makeVLayoutProps = propsFactory({
|
24428
24139
|
...makeComponentProps(),
|
@@ -25260,14 +24971,6 @@ const makeVNumberInputProps = propsFactory({
|
|
25260
24971
|
type: Number,
|
25261
24972
|
default: 0
|
25262
24973
|
},
|
25263
|
-
minFractionDigits: {
|
25264
|
-
type: Number,
|
25265
|
-
default: null
|
25266
|
-
},
|
25267
|
-
decimalSeparator: {
|
25268
|
-
type: String,
|
25269
|
-
validator: v => !v || v.length === 1
|
25270
|
-
},
|
25271
24974
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25272
24975
|
}, 'VNumberInput');
|
25273
24976
|
const VNumberInput = genericComponent()({
|
@@ -25293,24 +24996,11 @@ const VNumberInput = genericComponent()({
|
|
25293
24996
|
const form = useForm(props);
|
25294
24997
|
const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
|
25295
24998
|
const isFocused = shallowRef(props.focused);
|
25296
|
-
const {
|
25297
|
-
decimalSeparator: decimalSeparatorFromLocale
|
25298
|
-
} = useLocale();
|
25299
|
-
const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);
|
25300
24999
|
function correctPrecision(val) {
|
25301
25000
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25302
|
-
let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
25303
25001
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25304
|
-
|
25305
|
-
|
25306
|
-
.replace('.', decimalSeparator.value);
|
25307
|
-
}
|
25308
|
-
if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {
|
25309
|
-
return fixed.replace('.', decimalSeparator.value);
|
25310
|
-
}
|
25311
|
-
let [baseDigits, fractionDigits] = fixed.split('.');
|
25312
|
-
fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\d{${props.minFractionDigits}})0`, 'g'), '');
|
25313
|
-
return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);
|
25002
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25003
|
+
: fixed;
|
25314
25004
|
}
|
25315
25005
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25316
25006
|
const _inputText = shallowRef(null);
|
@@ -25327,11 +25017,8 @@ const VNumberInput = genericComponent()({
|
|
25327
25017
|
if (val === null || val === '') {
|
25328
25018
|
model.value = null;
|
25329
25019
|
_inputText.value = null;
|
25330
|
-
|
25331
|
-
|
25332
|
-
const parsedValue = Number(val.replace(decimalSeparator.value, '.'));
|
25333
|
-
if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {
|
25334
|
-
model.value = parsedValue;
|
25020
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
25021
|
+
model.value = Number(val);
|
25335
25022
|
_inputText.value = val;
|
25336
25023
|
}
|
25337
25024
|
}
|
@@ -25368,7 +25055,6 @@ const VNumberInput = genericComponent()({
|
|
25368
25055
|
}
|
25369
25056
|
};
|
25370
25057
|
watch(() => props.precision, () => formatInputValue());
|
25371
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
25372
25058
|
onMounted(() => {
|
25373
25059
|
clampModel();
|
25374
25060
|
});
|
@@ -25402,24 +25088,24 @@ const VNumberInput = genericComponent()({
|
|
25402
25088
|
selectionEnd
|
25403
25089
|
} = inputElement ?? {};
|
25404
25090
|
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
25405
|
-
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision
|
25091
|
+
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
|
25406
25092
|
|
25407
|
-
//
|
25408
|
-
//
|
25409
|
-
//
|
25410
|
-
if (
|
25093
|
+
// Only numbers, "-", "." are allowed
|
25094
|
+
// AND "-", "." are allowed only once
|
25095
|
+
// AND "-" is only allowed at the start
|
25096
|
+
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
25411
25097
|
e.preventDefault();
|
25412
25098
|
inputElement.value = potentialNewNumber;
|
25413
25099
|
}
|
25414
25100
|
if (props.precision == null) return;
|
25415
25101
|
|
25416
25102
|
// Ignore decimal digits above precision limit
|
25417
|
-
if (potentialNewInputVal.split(
|
25103
|
+
if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
|
25418
25104
|
e.preventDefault();
|
25419
25105
|
inputElement.value = potentialNewNumber;
|
25420
25106
|
}
|
25421
25107
|
// Ignore decimal separator when precision = 0
|
25422
|
-
if (props.precision === 0 && potentialNewInputVal.includes(
|
25108
|
+
if (props.precision === 0 && potentialNewInputVal.includes('.')) {
|
25423
25109
|
e.preventDefault();
|
25424
25110
|
inputElement.value = potentialNewNumber;
|
25425
25111
|
}
|
@@ -25471,16 +25157,19 @@ const VNumberInput = genericComponent()({
|
|
25471
25157
|
if (controlsDisabled.value) return;
|
25472
25158
|
if (!vTextFieldRef.value) return;
|
25473
25159
|
const actualText = vTextFieldRef.value.value;
|
25474
|
-
|
25475
|
-
|
25476
|
-
inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));
|
25160
|
+
if (actualText && !isNaN(Number(actualText))) {
|
25161
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
25477
25162
|
} else {
|
25478
25163
|
inputText.value = null;
|
25479
25164
|
}
|
25480
25165
|
}
|
25481
25166
|
function formatInputValue() {
|
25482
25167
|
if (controlsDisabled.value) return;
|
25483
|
-
|
25168
|
+
if (model.value === null || isNaN(model.value)) {
|
25169
|
+
inputText.value = null;
|
25170
|
+
return;
|
25171
|
+
}
|
25172
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25484
25173
|
}
|
25485
25174
|
function trimDecimalZeros() {
|
25486
25175
|
if (controlsDisabled.value) return;
|
@@ -25488,7 +25177,7 @@ const VNumberInput = genericComponent()({
|
|
25488
25177
|
inputText.value = null;
|
25489
25178
|
return;
|
25490
25179
|
}
|
25491
|
-
inputText.value = model.value.toString()
|
25180
|
+
inputText.value = model.value.toString();
|
25492
25181
|
}
|
25493
25182
|
function onFocus() {
|
25494
25183
|
trimDecimalZeros();
|
@@ -25755,10 +25444,9 @@ const VOtpInput = genericComponent()({
|
|
25755
25444
|
e.preventDefault();
|
25756
25445
|
e.stopPropagation();
|
25757
25446
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25758
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25759
25447
|
if (isValidNumber(clipboardText)) return;
|
25760
25448
|
model.value = clipboardText.split('');
|
25761
|
-
inputRef.value?.[
|
25449
|
+
inputRef.value?.[index].blur();
|
25762
25450
|
}
|
25763
25451
|
function reset() {
|
25764
25452
|
model.value = [];
|
@@ -30458,6 +30146,11 @@ const makeVIconBtnProps = propsFactory({
|
|
30458
30146
|
hideOverlay: Boolean,
|
30459
30147
|
icon: [String, Function, Object],
|
30460
30148
|
iconColor: String,
|
30149
|
+
iconSize: [Number, String],
|
30150
|
+
iconSizes: {
|
30151
|
+
type: Array,
|
30152
|
+
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
30153
|
+
},
|
30461
30154
|
loading: Boolean,
|
30462
30155
|
opacity: [Number, String],
|
30463
30156
|
readonly: Boolean,
|
@@ -30477,7 +30170,6 @@ const makeVIconBtnProps = propsFactory({
|
|
30477
30170
|
...makeBorderProps(),
|
30478
30171
|
...makeComponentProps(),
|
30479
30172
|
...makeElevationProps(),
|
30480
|
-
...makeIconSizeProps(),
|
30481
30173
|
...makeRoundedProps(),
|
30482
30174
|
...makeTagProps({
|
30483
30175
|
tag: 'button'
|
@@ -30532,6 +30224,7 @@ const VIconBtn = genericComponent()({
|
|
30532
30224
|
})()
|
30533
30225
|
}));
|
30534
30226
|
const btnSizeMap = new Map(props.sizes);
|
30227
|
+
const iconSizeMap = new Map(props.iconSizes);
|
30535
30228
|
function onClick() {
|
30536
30229
|
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
30537
30230
|
isActive.value = !isActive.value;
|
@@ -30543,12 +30236,12 @@ const VIconBtn = genericComponent()({
|
|
30543
30236
|
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
30544
30237
|
const btnHeight = props.height ?? btnSize;
|
30545
30238
|
const btnWidth = props.width ?? btnSize;
|
30546
|
-
const
|
30547
|
-
|
30548
|
-
|
30239
|
+
const _iconSize = props.iconSize;
|
30240
|
+
const hasNamedIconSize = iconSizeMap.has(_iconSize);
|
30241
|
+
const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
|
30549
30242
|
const iconProps = {
|
30550
30243
|
icon,
|
30551
|
-
size: iconSize
|
30244
|
+
size: iconSize,
|
30552
30245
|
iconColor: props.iconColor,
|
30553
30246
|
opacity: props.opacity
|
30554
30247
|
};
|
@@ -30591,7 +30284,7 @@ const VIconBtn = genericComponent()({
|
|
30591
30284
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
30592
30285
|
"indeterminate": "disable-shrink",
|
30593
30286
|
"width": "2",
|
30594
|
-
"size": iconSize
|
30287
|
+
"size": iconSize
|
30595
30288
|
}, null)])]
|
30596
30289
|
});
|
30597
30290
|
});
|
@@ -30599,251 +30292,6 @@ const VIconBtn = genericComponent()({
|
|
30599
30292
|
}
|
30600
30293
|
});
|
30601
30294
|
|
30602
|
-
// Utilities
|
30603
|
-
|
30604
|
-
// Types
|
30605
|
-
|
30606
|
-
const makeMaskProps = propsFactory({
|
30607
|
-
mask: [String, Object],
|
30608
|
-
returnMaskedValue: Boolean
|
30609
|
-
}, 'mask');
|
30610
|
-
const defaultDelimiters = /[-!$%^&*()_+|~=`{}[\]:";'<>?,./\\ ]/;
|
30611
|
-
const presets = {
|
30612
|
-
'credit-card': '#### - #### - #### - ####',
|
30613
|
-
date: '##/##/####',
|
30614
|
-
'date-time': '##/##/#### ##:##',
|
30615
|
-
'iso-date': '####-##-##',
|
30616
|
-
'iso-date-time': '####-##-## ##:##',
|
30617
|
-
phone: '(###) ### - ####',
|
30618
|
-
social: '###-##-####',
|
30619
|
-
time: '##:##',
|
30620
|
-
'time-with-seconds': '##:##:##'
|
30621
|
-
};
|
30622
|
-
function isMaskDelimiter(char) {
|
30623
|
-
return char ? defaultDelimiters.test(char) : false;
|
30624
|
-
}
|
30625
|
-
const defaultTokens = {
|
30626
|
-
'#': {
|
30627
|
-
pattern: /[0-9]/
|
30628
|
-
},
|
30629
|
-
A: {
|
30630
|
-
pattern: /[A-Z]/i,
|
30631
|
-
convert: v => v.toUpperCase()
|
30632
|
-
},
|
30633
|
-
a: {
|
30634
|
-
pattern: /[a-z]/i,
|
30635
|
-
convert: v => v.toLowerCase()
|
30636
|
-
},
|
30637
|
-
N: {
|
30638
|
-
pattern: /[0-9A-Z]/i,
|
30639
|
-
convert: v => v.toUpperCase()
|
30640
|
-
},
|
30641
|
-
n: {
|
30642
|
-
pattern: /[0-9a-z]/i,
|
30643
|
-
convert: v => v.toLowerCase()
|
30644
|
-
},
|
30645
|
-
X: {
|
30646
|
-
pattern: defaultDelimiters
|
30647
|
-
}
|
30648
|
-
};
|
30649
|
-
function useMask(props, inputRef) {
|
30650
|
-
const mask = computed(() => {
|
30651
|
-
if (typeof props.mask === 'string') {
|
30652
|
-
if (props.mask in presets) return presets[props.mask];
|
30653
|
-
return props.mask;
|
30654
|
-
}
|
30655
|
-
return props.mask?.mask ?? '';
|
30656
|
-
});
|
30657
|
-
const tokens = computed(() => {
|
30658
|
-
return {
|
30659
|
-
...defaultTokens,
|
30660
|
-
...(isObject(props.mask) ? props.mask.tokens : null)
|
30661
|
-
};
|
30662
|
-
});
|
30663
|
-
const selection = shallowRef(0);
|
30664
|
-
const lazySelection = shallowRef(0);
|
30665
|
-
function isMask(char) {
|
30666
|
-
return char in tokens.value;
|
30667
|
-
}
|
30668
|
-
function maskValidates(mask, char) {
|
30669
|
-
if (char == null || !isMask(mask)) return false;
|
30670
|
-
const item = tokens.value[mask];
|
30671
|
-
if (item.pattern) return item.pattern.test(char);
|
30672
|
-
return item.test(char);
|
30673
|
-
}
|
30674
|
-
function convert(mask, char) {
|
30675
|
-
const item = tokens.value[mask];
|
30676
|
-
return item.convert ? item.convert(char) : char;
|
30677
|
-
}
|
30678
|
-
function maskText(text) {
|
30679
|
-
const trimmedText = text?.trim().replace(/\s+/g, ' ');
|
30680
|
-
if (trimmedText == null) return '';
|
30681
|
-
if (!mask.value.length || !trimmedText.length) return trimmedText;
|
30682
|
-
let textIndex = 0;
|
30683
|
-
let maskIndex = 0;
|
30684
|
-
let newText = '';
|
30685
|
-
while (maskIndex < mask.value.length) {
|
30686
|
-
const mchar = mask.value[maskIndex];
|
30687
|
-
const tchar = trimmedText[textIndex];
|
30688
|
-
|
30689
|
-
// Escaped character in mask, the next mask character is inserted
|
30690
|
-
if (mchar === '\\') {
|
30691
|
-
newText += mask.value[maskIndex + 1];
|
30692
|
-
maskIndex += 2;
|
30693
|
-
continue;
|
30694
|
-
}
|
30695
|
-
if (!isMask(mchar)) {
|
30696
|
-
newText += mchar;
|
30697
|
-
if (tchar === mchar) {
|
30698
|
-
textIndex++;
|
30699
|
-
}
|
30700
|
-
} else if (maskValidates(mchar, tchar)) {
|
30701
|
-
newText += convert(mchar, tchar);
|
30702
|
-
textIndex++;
|
30703
|
-
} else {
|
30704
|
-
break;
|
30705
|
-
}
|
30706
|
-
maskIndex++;
|
30707
|
-
}
|
30708
|
-
return newText;
|
30709
|
-
}
|
30710
|
-
function unmaskText(text) {
|
30711
|
-
if (text == null) return null;
|
30712
|
-
if (!mask.value.length || !text.length) return text;
|
30713
|
-
let textIndex = 0;
|
30714
|
-
let maskIndex = 0;
|
30715
|
-
let newText = '';
|
30716
|
-
while (true) {
|
30717
|
-
const mchar = mask.value[maskIndex];
|
30718
|
-
const tchar = text[textIndex];
|
30719
|
-
if (tchar == null) break;
|
30720
|
-
if (mchar == null) {
|
30721
|
-
newText += tchar;
|
30722
|
-
textIndex++;
|
30723
|
-
continue;
|
30724
|
-
}
|
30725
|
-
|
30726
|
-
// Escaped character in mask, skip the next input character
|
30727
|
-
if (mchar === '\\') {
|
30728
|
-
if (tchar === mask.value[maskIndex + 1]) {
|
30729
|
-
textIndex++;
|
30730
|
-
}
|
30731
|
-
maskIndex += 2;
|
30732
|
-
continue;
|
30733
|
-
}
|
30734
|
-
if (maskValidates(mchar, tchar)) {
|
30735
|
-
// masked char
|
30736
|
-
newText += tchar;
|
30737
|
-
textIndex++;
|
30738
|
-
maskIndex++;
|
30739
|
-
continue;
|
30740
|
-
} else if (mchar !== tchar) {
|
30741
|
-
// input doesn't match mask, skip forward until it does
|
30742
|
-
while (true) {
|
30743
|
-
const mchar = mask.value[maskIndex++];
|
30744
|
-
if (mchar == null || maskValidates(mchar, tchar)) break;
|
30745
|
-
}
|
30746
|
-
continue;
|
30747
|
-
}
|
30748
|
-
textIndex++;
|
30749
|
-
maskIndex++;
|
30750
|
-
}
|
30751
|
-
return newText;
|
30752
|
-
}
|
30753
|
-
function setCaretPosition(newSelection) {
|
30754
|
-
selection.value = newSelection;
|
30755
|
-
inputRef.value && inputRef.value.setSelectionRange(selection.value, selection.value);
|
30756
|
-
}
|
30757
|
-
function resetSelections() {
|
30758
|
-
if (!inputRef.value?.selectionEnd) return;
|
30759
|
-
selection.value = inputRef.value.selectionEnd;
|
30760
|
-
lazySelection.value = 0;
|
30761
|
-
for (let index = 0; index < selection.value; index++) {
|
30762
|
-
isMaskDelimiter(inputRef.value.value[index]) || lazySelection.value++;
|
30763
|
-
}
|
30764
|
-
}
|
30765
|
-
function updateRange() {
|
30766
|
-
if (!inputRef.value) return;
|
30767
|
-
resetSelections();
|
30768
|
-
let selection = 0;
|
30769
|
-
const newValue = inputRef.value.value;
|
30770
|
-
if (newValue) {
|
30771
|
-
for (let index = 0; index < newValue.length; index++) {
|
30772
|
-
if (lazySelection.value <= 0) break;
|
30773
|
-
isMaskDelimiter(newValue[index]) || lazySelection.value--;
|
30774
|
-
selection++;
|
30775
|
-
}
|
30776
|
-
}
|
30777
|
-
setCaretPosition(selection);
|
30778
|
-
}
|
30779
|
-
return {
|
30780
|
-
updateRange,
|
30781
|
-
maskText,
|
30782
|
-
unmaskText
|
30783
|
-
};
|
30784
|
-
}
|
30785
|
-
|
30786
|
-
// Types
|
30787
|
-
|
30788
|
-
const makeVMaskInputProps = propsFactory({
|
30789
|
-
...makeVTextFieldProps(),
|
30790
|
-
...makeMaskProps()
|
30791
|
-
}, 'VMaskInput');
|
30792
|
-
const VMaskInput = genericComponent()({
|
30793
|
-
name: 'VMaskInput',
|
30794
|
-
props: makeVMaskInputProps(),
|
30795
|
-
emits: {
|
30796
|
-
'update:modelValue': val => true
|
30797
|
-
},
|
30798
|
-
setup(props, _ref) {
|
30799
|
-
let {
|
30800
|
-
slots,
|
30801
|
-
emit
|
30802
|
-
} = _ref;
|
30803
|
-
const vTextFieldRef = ref();
|
30804
|
-
const {
|
30805
|
-
maskText,
|
30806
|
-
updateRange,
|
30807
|
-
unmaskText
|
30808
|
-
} = useMask(props, vTextFieldRef);
|
30809
|
-
const returnMaskedValue = computed(() => props.mask && props.returnMaskedValue);
|
30810
|
-
const model = useProxiedModel(props, 'modelValue', undefined,
|
30811
|
-
// Always display masked value in input when mask is applied
|
30812
|
-
val => props.mask ? maskText(unmaskText(val)) : val, val => {
|
30813
|
-
if (props.mask) {
|
30814
|
-
const valueBeforeChange = unmaskText(model.value);
|
30815
|
-
// E.g. mask is #-# and the input value is '2-23'
|
30816
|
-
// model-value should be enforced to '2-2'
|
30817
|
-
const enforcedMaskedValue = maskText(unmaskText(val));
|
30818
|
-
const newUnmaskedValue = unmaskText(enforcedMaskedValue);
|
30819
|
-
if (newUnmaskedValue === valueBeforeChange) {
|
30820
|
-
vTextFieldRef.value.value = enforcedMaskedValue;
|
30821
|
-
}
|
30822
|
-
val = newUnmaskedValue;
|
30823
|
-
updateRange();
|
30824
|
-
return returnMaskedValue.value ? maskText(val) : val;
|
30825
|
-
}
|
30826
|
-
return val;
|
30827
|
-
});
|
30828
|
-
onBeforeMount(() => {
|
30829
|
-
if (props.returnMaskedValue) {
|
30830
|
-
emit('update:modelValue', model.value);
|
30831
|
-
}
|
30832
|
-
});
|
30833
|
-
useRender(() => {
|
30834
|
-
const textFieldProps = VTextField.filterProps(props);
|
30835
|
-
return createVNode(VTextField, mergeProps(textFieldProps, {
|
30836
|
-
"modelValue": model.value,
|
30837
|
-
"onUpdate:modelValue": $event => model.value = $event,
|
30838
|
-
"ref": vTextFieldRef
|
30839
|
-
}), {
|
30840
|
-
...slots
|
30841
|
-
});
|
30842
|
-
});
|
30843
|
-
return forwardRefs({}, vTextFieldRef);
|
30844
|
-
}
|
30845
|
-
});
|
30846
|
-
|
30847
30295
|
// Types
|
30848
30296
|
|
30849
30297
|
const makeVStepperVerticalActionsProps = propsFactory({
|
@@ -31986,11 +31434,6 @@ const makeVTreeviewChildrenProps = propsFactory({
|
|
31986
31434
|
selectable: Boolean,
|
31987
31435
|
selectedColor: String,
|
31988
31436
|
selectStrategy: [String, Function, Object],
|
31989
|
-
index: Number,
|
31990
|
-
path: {
|
31991
|
-
type: Array,
|
31992
|
-
default: () => []
|
31993
|
-
},
|
31994
31437
|
...makeDensityProps()
|
31995
31438
|
}, 'VTreeviewChildren');
|
31996
31439
|
const VTreeviewChildren = genericComponent()({
|
@@ -32018,19 +31461,12 @@ const VTreeviewChildren = genericComponent()({
|
|
32018
31461
|
select(!isSelected);
|
32019
31462
|
}
|
32020
31463
|
}
|
32021
|
-
return () => slots.default?.() ?? props.items?.map(
|
31464
|
+
return () => slots.default?.() ?? props.items?.map(item => {
|
32022
31465
|
const {
|
32023
31466
|
children,
|
32024
31467
|
props: itemProps
|
32025
31468
|
} = item;
|
32026
31469
|
const loading = isLoading.has(item.value);
|
32027
|
-
const treeItemProps = {
|
32028
|
-
index,
|
32029
|
-
depth: props.path?.length ?? 0,
|
32030
|
-
isFirst: index === 0,
|
32031
|
-
isLast: props.items ? props.items.length - 1 === index : false,
|
32032
|
-
path: [...props.path, index]
|
32033
|
-
};
|
32034
31470
|
const slotsWithItem = {
|
32035
31471
|
prepend: slotProps => createElementVNode(Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && createElementVNode("div", null, [createVNode(VCheckboxBtn, {
|
32036
31472
|
"key": item.value,
|
@@ -32051,13 +31487,11 @@ const VTreeviewChildren = genericComponent()({
|
|
32051
31487
|
}
|
32052
31488
|
}, null)]), slots.prepend?.({
|
32053
31489
|
...slotProps,
|
32054
|
-
...treeItemProps,
|
32055
31490
|
item: item.raw,
|
32056
31491
|
internalItem: item
|
32057
31492
|
})]),
|
32058
31493
|
append: slots.append ? slotProps => slots.append?.({
|
32059
31494
|
...slotProps,
|
32060
|
-
...treeItemProps,
|
32061
31495
|
item: item.raw,
|
32062
31496
|
internalItem: item
|
32063
31497
|
}) : undefined,
|
@@ -32073,10 +31507,7 @@ const VTreeviewChildren = genericComponent()({
|
|
32073
31507
|
}) : undefined
|
32074
31508
|
};
|
32075
31509
|
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
32076
|
-
const treeviewChildrenProps = VTreeviewChildren.filterProps(
|
32077
|
-
...props,
|
32078
|
-
...treeItemProps
|
32079
|
-
});
|
31510
|
+
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
32080
31511
|
return children ? createVNode(VTreeviewGroup, mergeProps(treeviewGroupProps, {
|
32081
31512
|
"value": props.returnObject ? item.raw : treeviewGroupProps?.value,
|
32082
31513
|
"rawId": treeviewGroupProps?.value
|
@@ -32127,7 +31558,7 @@ const makeVTreeviewProps = propsFactory({
|
|
32127
31558
|
...makeFilterProps({
|
32128
31559
|
filterKeys: ['title']
|
32129
31560
|
}),
|
32130
|
-
...
|
31561
|
+
...makeVTreeviewChildrenProps(),
|
32131
31562
|
...omit(makeVListProps({
|
32132
31563
|
collapseIcon: '$treeviewCollapse',
|
32133
31564
|
expandIcon: '$treeviewExpand',
|
@@ -32370,7 +31801,6 @@ var components = /*#__PURE__*/Object.freeze({
|
|
32370
31801
|
VListSubheader: VListSubheader,
|
32371
31802
|
VLocaleProvider: VLocaleProvider,
|
32372
31803
|
VMain: VMain,
|
32373
|
-
VMaskInput: VMaskInput,
|
32374
31804
|
VMenu: VMenu,
|
32375
31805
|
VMessages: VMessages,
|
32376
31806
|
VNavigationDrawer: VNavigationDrawer,
|
@@ -32768,7 +32198,7 @@ function createVuetify$1() {
|
|
32768
32198
|
};
|
32769
32199
|
});
|
32770
32200
|
}
|
32771
|
-
const version$1 = "3.8.10-
|
32201
|
+
const version$1 = "3.8.10-master.2025-06-18";
|
32772
32202
|
createVuetify$1.version = version$1;
|
32773
32203
|
|
32774
32204
|
// Vue's inject() can only be used in setup
|
@@ -33066,7 +32496,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
33066
32496
|
|
33067
32497
|
/* eslint-disable local-rules/sort-imports */
|
33068
32498
|
|
33069
|
-
const version = "3.8.10-
|
32499
|
+
const version = "3.8.10-master.2025-06-18";
|
33070
32500
|
|
33071
32501
|
/* eslint-disable local-rules/sort-imports */
|
33072
32502
|
|