@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.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
|
*/
|
@@ -14,7 +14,6 @@
|
|
14
14
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
15
15
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
16
16
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
17
|
-
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
18
17
|
|
19
18
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
20
19
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -515,23 +514,18 @@
|
|
515
514
|
function isPrimitive(value) {
|
516
515
|
return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
|
517
516
|
}
|
518
|
-
function
|
519
|
-
|
520
|
-
}
|
521
|
-
function extractNumber(text, decimalDigitsLimit, decimalSeparator) {
|
522
|
-
const onlyValidCharacters = new RegExp(`[\\d\\-${escapeForRegex(decimalSeparator)}]`);
|
523
|
-
const cleanText = text.split('').filter(x => onlyValidCharacters.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
517
|
+
function extractNumber(text, decimalDigitsLimit) {
|
518
|
+
const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
524
519
|
// sign allowed at the start
|
525
|
-
x ===
|
520
|
+
x === '.' && i === all.indexOf('.') ||
|
526
521
|
// decimal separator allowed only once
|
527
522
|
/\d/.test(x)).join('');
|
528
523
|
if (decimalDigitsLimit === 0) {
|
529
|
-
return cleanText.split(
|
524
|
+
return cleanText.split('.')[0];
|
530
525
|
}
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join(decimalSeparator);
|
526
|
+
if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
|
527
|
+
const parts = cleanText.split('.');
|
528
|
+
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
|
535
529
|
}
|
536
530
|
return cleanText;
|
537
531
|
}
|
@@ -2678,10 +2672,6 @@
|
|
2678
2672
|
return numberFormat.format(value);
|
2679
2673
|
};
|
2680
2674
|
}
|
2681
|
-
function inferDecimalSeparator(current, fallback) {
|
2682
|
-
const format = createNumberFunction(current, fallback);
|
2683
|
-
return format(0.1).includes(',') ? ',' : '.';
|
2684
|
-
}
|
2685
2675
|
function useProvided(props, prop, provided) {
|
2686
2676
|
const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);
|
2687
2677
|
|
@@ -2704,7 +2694,6 @@
|
|
2704
2694
|
current,
|
2705
2695
|
fallback,
|
2706
2696
|
messages,
|
2707
|
-
decimalSeparator: vue.toRef(() => inferDecimalSeparator(current, fallback)),
|
2708
2697
|
t: createTranslateFunction(current, fallback, messages),
|
2709
2698
|
n: createNumberFunction(current, fallback),
|
2710
2699
|
provide: createProvideFunction({
|
@@ -2727,7 +2716,6 @@
|
|
2727
2716
|
current,
|
2728
2717
|
fallback,
|
2729
2718
|
messages,
|
2730
|
-
decimalSeparator: vue.toRef(() => options?.decimalSeparator ?? inferDecimalSeparator(current, fallback)),
|
2731
2719
|
t: createTranslateFunction(current, fallback, messages),
|
2732
2720
|
n: createNumberFunction(current, fallback),
|
2733
2721
|
provide: createProvideFunction({
|
@@ -2854,7 +2842,6 @@
|
|
2854
2842
|
function genDefaults$1() {
|
2855
2843
|
return {
|
2856
2844
|
defaultTheme: 'light',
|
2857
|
-
prefix: 'v-',
|
2858
2845
|
variations: {
|
2859
2846
|
colors: [],
|
2860
2847
|
lighten: 0,
|
@@ -2892,8 +2879,8 @@
|
|
2892
2879
|
'activated-opacity': 0.12,
|
2893
2880
|
'pressed-opacity': 0.12,
|
2894
2881
|
'dragged-opacity': 0.08,
|
2895
|
-
'theme-kbd': '#
|
2896
|
-
'theme-on-kbd': '#
|
2882
|
+
'theme-kbd': '#212529',
|
2883
|
+
'theme-on-kbd': '#FFFFFF',
|
2897
2884
|
'theme-code': '#F5F5F5',
|
2898
2885
|
'theme-on-code': '#000000'
|
2899
2886
|
}
|
@@ -2929,17 +2916,14 @@
|
|
2929
2916
|
'activated-opacity': 0.12,
|
2930
2917
|
'pressed-opacity': 0.16,
|
2931
2918
|
'dragged-opacity': 0.08,
|
2932
|
-
'theme-kbd': '#
|
2919
|
+
'theme-kbd': '#212529',
|
2933
2920
|
'theme-on-kbd': '#FFFFFF',
|
2934
2921
|
'theme-code': '#343434',
|
2935
2922
|
'theme-on-code': '#CCCCCC'
|
2936
2923
|
}
|
2937
2924
|
}
|
2938
2925
|
},
|
2939
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2940
|
-
scoped: false,
|
2941
|
-
unimportant: false,
|
2942
|
-
utilities: true
|
2926
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2943
2927
|
};
|
2944
2928
|
}
|
2945
2929
|
function parseThemeOptions() {
|
@@ -2962,21 +2946,21 @@
|
|
2962
2946
|
function createCssClass(lines, selector, content, scope) {
|
2963
2947
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2964
2948
|
}
|
2965
|
-
function genCssVariables(theme
|
2949
|
+
function genCssVariables(theme) {
|
2966
2950
|
const lightOverlay = theme.dark ? 2 : 1;
|
2967
2951
|
const darkOverlay = theme.dark ? 1 : 2;
|
2968
2952
|
const variables = [];
|
2969
2953
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2970
2954
|
const rgb = parseColor(value);
|
2971
|
-
variables.push(
|
2955
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2972
2956
|
if (!key.startsWith('on-')) {
|
2973
|
-
variables.push(
|
2957
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2974
2958
|
}
|
2975
2959
|
}
|
2976
2960
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2977
2961
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2978
2962
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2979
|
-
variables.push(
|
2963
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2980
2964
|
}
|
2981
2965
|
return variables;
|
2982
2966
|
}
|
@@ -3020,8 +3004,7 @@
|
|
3020
3004
|
const scopeSelector = `:where(${scope})`;
|
3021
3005
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
3022
3006
|
}
|
3023
|
-
function upsertStyles(
|
3024
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
3007
|
+
function upsertStyles(styleEl, styles) {
|
3025
3008
|
if (!styleEl) return;
|
3026
3009
|
styleEl.innerHTML = styles;
|
3027
3010
|
}
|
@@ -3041,17 +3024,8 @@
|
|
3041
3024
|
// Composables
|
3042
3025
|
function createTheme(options) {
|
3043
3026
|
const parsedOptions = parseThemeOptions(options);
|
3044
|
-
const
|
3027
|
+
const name = vue.shallowRef(parsedOptions.defaultTheme);
|
3045
3028
|
const themes = vue.ref(parsedOptions.themes);
|
3046
|
-
const systemName = vue.shallowRef('light');
|
3047
|
-
const name = vue.computed({
|
3048
|
-
get() {
|
3049
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
3050
|
-
},
|
3051
|
-
set(val) {
|
3052
|
-
_name.value = val;
|
3053
|
-
}
|
3054
|
-
});
|
3055
3029
|
const computedThemes = vue.computed(() => {
|
3056
3030
|
const acc = {};
|
3057
3031
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3072,49 +3046,28 @@
|
|
3072
3046
|
const current = vue.toRef(() => computedThemes.value[name.value]);
|
3073
3047
|
const styles = vue.computed(() => {
|
3074
3048
|
const lines = [];
|
3075
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
3076
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3077
3049
|
if (current.value?.dark) {
|
3078
3050
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3079
3051
|
}
|
3080
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
3052
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3081
3053
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3082
|
-
createCssClass(lines,
|
3083
|
-
}
|
3084
|
-
|
3085
|
-
|
3086
|
-
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3091
|
-
}
|
3092
|
-
|
3093
|
-
|
3094
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3095
|
-
}
|
3054
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
3055
|
+
}
|
3056
|
+
const bgLines = [];
|
3057
|
+
const fgLines = [];
|
3058
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3059
|
+
for (const key of colors) {
|
3060
|
+
if (key.startsWith('on-')) {
|
3061
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3062
|
+
} else {
|
3063
|
+
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);
|
3064
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3065
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
3096
3066
|
}
|
3097
|
-
lines.push(...bgLines, ...fgLines);
|
3098
3067
|
}
|
3068
|
+
lines.push(...bgLines, ...fgLines);
|
3099
3069
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3100
3070
|
});
|
3101
|
-
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3102
|
-
const themeNames = vue.toRef(() => Object.keys(computedThemes.value));
|
3103
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
3104
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3105
|
-
function updateSystemName() {
|
3106
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
3107
|
-
}
|
3108
|
-
updateSystemName();
|
3109
|
-
media.addEventListener('change', updateSystemName, {
|
3110
|
-
passive: true
|
3111
|
-
});
|
3112
|
-
if (vue.getCurrentScope()) {
|
3113
|
-
vue.onScopeDispose(() => {
|
3114
|
-
media.removeEventListener('change', updateSystemName);
|
3115
|
-
});
|
3116
|
-
}
|
3117
|
-
}
|
3118
3071
|
function install(app) {
|
3119
3072
|
if (parsedOptions.isDisabled) return;
|
3120
3073
|
const head = app._context.provides.usehead;
|
@@ -3152,55 +3105,22 @@
|
|
3152
3105
|
updateStyles();
|
3153
3106
|
}
|
3154
3107
|
function updateStyles() {
|
3155
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3108
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
3156
3109
|
}
|
3157
3110
|
}
|
3158
3111
|
}
|
3159
|
-
|
3160
|
-
if (!themeNames.value.includes(themeName)) {
|
3161
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3162
|
-
return;
|
3163
|
-
}
|
3164
|
-
name.value = themeName;
|
3165
|
-
}
|
3166
|
-
function cycle() {
|
3167
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3168
|
-
const currentIndex = themeArray.indexOf(name.value);
|
3169
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3170
|
-
change(themeArray[nextIndex]);
|
3171
|
-
}
|
3172
|
-
function toggle() {
|
3173
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3174
|
-
cycle(themeArray);
|
3175
|
-
}
|
3176
|
-
const globalName = new Proxy(name, {
|
3177
|
-
get(target, prop) {
|
3178
|
-
return target[prop];
|
3179
|
-
},
|
3180
|
-
set(target, prop, val) {
|
3181
|
-
if (prop === 'value') {
|
3182
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3183
|
-
}
|
3184
|
-
// @ts-expect-error
|
3185
|
-
target[prop] = val;
|
3186
|
-
return true;
|
3187
|
-
}
|
3188
|
-
});
|
3112
|
+
const themeClasses = vue.toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
3189
3113
|
return {
|
3190
3114
|
install,
|
3191
|
-
change,
|
3192
|
-
cycle,
|
3193
|
-
toggle,
|
3194
3115
|
isDisabled: parsedOptions.isDisabled,
|
3195
3116
|
name,
|
3196
3117
|
themes,
|
3197
3118
|
current,
|
3198
3119
|
computedThemes,
|
3199
|
-
prefix: parsedOptions.prefix,
|
3200
3120
|
themeClasses,
|
3201
3121
|
styles,
|
3202
3122
|
global: {
|
3203
|
-
name
|
3123
|
+
name,
|
3204
3124
|
current
|
3205
3125
|
}
|
3206
3126
|
};
|
@@ -3211,7 +3131,7 @@
|
|
3211
3131
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3212
3132
|
const name = vue.toRef(() => props.theme ?? theme.name.value);
|
3213
3133
|
const current = vue.toRef(() => theme.themes.value[name.value]);
|
3214
|
-
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined :
|
3134
|
+
const themeClasses = vue.toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
3215
3135
|
const newTheme = {
|
3216
3136
|
...theme,
|
3217
3137
|
name,
|
@@ -4315,10 +4235,7 @@
|
|
4315
4235
|
default: 'default',
|
4316
4236
|
validator: v => allowedDensities$1.includes(v)
|
4317
4237
|
},
|
4318
|
-
extended:
|
4319
|
-
type: Boolean,
|
4320
|
-
default: null
|
4321
|
-
},
|
4238
|
+
extended: Boolean,
|
4322
4239
|
extensionHeight: {
|
4323
4240
|
type: [Number, String],
|
4324
4241
|
default: 48
|
@@ -4366,7 +4283,7 @@
|
|
4366
4283
|
const {
|
4367
4284
|
rtlClasses
|
4368
4285
|
} = useRtl();
|
4369
|
-
const isExtended = vue.shallowRef(props.extended
|
4286
|
+
const isExtended = vue.shallowRef(!!(props.extended || slots.extension?.()));
|
4370
4287
|
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));
|
4371
4288
|
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);
|
4372
4289
|
provideDefaults({
|
@@ -4378,7 +4295,7 @@
|
|
4378
4295
|
const hasTitle = !!(props.title || slots.title);
|
4379
4296
|
const hasImage = !!(slots.image || props.image);
|
4380
4297
|
const extension = slots.extension?.();
|
4381
|
-
isExtended.value = props.extended
|
4298
|
+
isExtended.value = !!(props.extended || extension);
|
4382
4299
|
return vue.createVNode(props.tag, {
|
4383
4300
|
"class": vue.normalizeClass(['v-toolbar', {
|
4384
4301
|
'v-toolbar--absolute': props.absolute,
|
@@ -4761,15 +4678,9 @@
|
|
4761
4678
|
};
|
4762
4679
|
}
|
4763
4680
|
|
4764
|
-
// Types
|
4765
|
-
|
4766
4681
|
const makeVBtnGroupProps = propsFactory({
|
4767
4682
|
baseColor: String,
|
4768
4683
|
divided: Boolean,
|
4769
|
-
direction: {
|
4770
|
-
type: String,
|
4771
|
-
default: 'horizontal'
|
4772
|
-
},
|
4773
4684
|
...makeBorderProps(),
|
4774
4685
|
...makeComponentProps(),
|
4775
4686
|
...makeDensityProps(),
|
@@ -4803,7 +4714,7 @@
|
|
4803
4714
|
} = useRounded(props);
|
4804
4715
|
provideDefaults({
|
4805
4716
|
VBtn: {
|
4806
|
-
height:
|
4717
|
+
height: 'auto',
|
4807
4718
|
baseColor: vue.toRef(() => props.baseColor),
|
4808
4719
|
color: vue.toRef(() => props.color),
|
4809
4720
|
density: vue.toRef(() => props.density),
|
@@ -4813,7 +4724,7 @@
|
|
4813
4724
|
});
|
4814
4725
|
useRender(() => {
|
4815
4726
|
return vue.createVNode(props.tag, {
|
4816
|
-
"class": vue.normalizeClass(['v-btn-group',
|
4727
|
+
"class": vue.normalizeClass(['v-btn-group', {
|
4817
4728
|
'v-btn-group--divided': props.divided
|
4818
4729
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4819
4730
|
"style": vue.normalizeStyle(props.style)
|
@@ -5937,8 +5848,8 @@
|
|
5937
5848
|
window.clearTimeout(element._ripple.showTimer);
|
5938
5849
|
}
|
5939
5850
|
let keyboardRipple = false;
|
5940
|
-
function keyboardRippleShow(e
|
5941
|
-
if (!keyboardRipple &&
|
5851
|
+
function keyboardRippleShow(e) {
|
5852
|
+
if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
|
5942
5853
|
keyboardRipple = true;
|
5943
5854
|
rippleShow(e);
|
5944
5855
|
}
|
@@ -5966,12 +5877,9 @@
|
|
5966
5877
|
el._ripple.enabled = enabled;
|
5967
5878
|
el._ripple.centered = modifiers.center;
|
5968
5879
|
el._ripple.circle = modifiers.circle;
|
5969
|
-
|
5970
|
-
|
5971
|
-
el._ripple.class = bindingValue.class;
|
5880
|
+
if (isObject(value) && value.class) {
|
5881
|
+
el._ripple.class = value.class;
|
5972
5882
|
}
|
5973
|
-
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5974
|
-
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5975
5883
|
if (enabled && !wasEnabled) {
|
5976
5884
|
if (modifiers.stop) {
|
5977
5885
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5993,7 +5901,7 @@
|
|
5993
5901
|
el.addEventListener('mousedown', rippleShow);
|
5994
5902
|
el.addEventListener('mouseup', rippleHide);
|
5995
5903
|
el.addEventListener('mouseleave', rippleHide);
|
5996
|
-
el.addEventListener('keydown',
|
5904
|
+
el.addEventListener('keydown', keyboardRippleShow);
|
5997
5905
|
el.addEventListener('keyup', keyboardRippleHide);
|
5998
5906
|
el.addEventListener('blur', focusRippleHide);
|
5999
5907
|
|
@@ -6013,9 +5921,7 @@
|
|
6013
5921
|
el.removeEventListener('touchcancel', rippleHide);
|
6014
5922
|
el.removeEventListener('mouseup', rippleHide);
|
6015
5923
|
el.removeEventListener('mouseleave', rippleHide);
|
6016
|
-
|
6017
|
-
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
6018
|
-
}
|
5924
|
+
el.removeEventListener('keydown', keyboardRippleShow);
|
6019
5925
|
el.removeEventListener('keyup', keyboardRippleHide);
|
6020
5926
|
el.removeEventListener('dragstart', rippleHide);
|
6021
5927
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -6024,8 +5930,8 @@
|
|
6024
5930
|
updateRipple(el, binding, false);
|
6025
5931
|
}
|
6026
5932
|
function unmounted$4(el) {
|
6027
|
-
removeListeners(el);
|
6028
5933
|
delete el._ripple;
|
5934
|
+
removeListeners(el);
|
6029
5935
|
}
|
6030
5936
|
function updated$1(el, binding) {
|
6031
5937
|
if (binding.value === binding.oldValue) {
|
@@ -6298,31 +6204,6 @@
|
|
6298
6204
|
// Utilities
|
6299
6205
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6300
6206
|
|
6301
|
-
// Utilities
|
6302
|
-
|
6303
|
-
// Types
|
6304
|
-
|
6305
|
-
// Types
|
6306
|
-
|
6307
|
-
// Composables
|
6308
|
-
const makeIconSizeProps = propsFactory({
|
6309
|
-
iconSize: [Number, String],
|
6310
|
-
iconSizes: {
|
6311
|
-
type: Array,
|
6312
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6313
|
-
}
|
6314
|
-
}, 'iconSize');
|
6315
|
-
function useIconSizes(props, fallback) {
|
6316
|
-
const iconSize = vue.computed(() => {
|
6317
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6318
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6319
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6320
|
-
});
|
6321
|
-
return {
|
6322
|
-
iconSize
|
6323
|
-
};
|
6324
|
-
}
|
6325
|
-
|
6326
6207
|
// Types
|
6327
6208
|
|
6328
6209
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6362,7 +6243,6 @@
|
|
6362
6243
|
...makeDensityProps(),
|
6363
6244
|
...makeDimensionProps(),
|
6364
6245
|
...makeElevationProps(),
|
6365
|
-
...makeIconSizeProps(),
|
6366
6246
|
...makeLocationProps(),
|
6367
6247
|
...makePositionProps(),
|
6368
6248
|
...makeRoundedProps(),
|
@@ -6390,9 +6270,6 @@
|
|
6390
6270
|
if (!props.type) return props.icon;
|
6391
6271
|
return props.icon ?? `$${props.type}`;
|
6392
6272
|
});
|
6393
|
-
const {
|
6394
|
-
iconSize
|
6395
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6396
6273
|
const {
|
6397
6274
|
themeClasses
|
6398
6275
|
} = provideTheme(props);
|
@@ -6440,11 +6317,6 @@
|
|
6440
6317
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6441
6318
|
const hasTitle = !!(slots.title || props.title);
|
6442
6319
|
const hasClose = !!(slots.close || props.closable);
|
6443
|
-
const iconProps = {
|
6444
|
-
density: props.density,
|
6445
|
-
icon: icon.value,
|
6446
|
-
size: iconSize.value
|
6447
|
-
};
|
6448
6320
|
return isActive.value && vue.createVNode(props.tag, {
|
6449
6321
|
"class": vue.normalizeClass(['v-alert', props.border && {
|
6450
6322
|
'v-alert--border': !!props.border,
|
@@ -6462,14 +6334,19 @@
|
|
6462
6334
|
}, null), hasPrepend && vue.createElementVNode("div", {
|
6463
6335
|
"key": "prepend",
|
6464
6336
|
"class": "v-alert__prepend"
|
6465
|
-
}, [!slots.prepend ? vue.createVNode(VIcon,
|
6466
|
-
"key": "prepend-icon"
|
6467
|
-
|
6337
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
6338
|
+
"key": "prepend-icon",
|
6339
|
+
"density": props.density,
|
6340
|
+
"icon": icon.value,
|
6341
|
+
"size": props.prominent ? 44 : 28
|
6342
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
6468
6343
|
"key": "prepend-defaults",
|
6469
6344
|
"disabled": !icon.value,
|
6470
6345
|
"defaults": {
|
6471
6346
|
VIcon: {
|
6472
|
-
|
6347
|
+
density: props.density,
|
6348
|
+
icon: icon.value,
|
6349
|
+
size: props.prominent ? 44 : 28
|
6473
6350
|
}
|
6474
6351
|
}
|
6475
6352
|
}, slots.prepend)]), vue.createElementVNode("div", {
|
@@ -7994,7 +7871,6 @@
|
|
7994
7871
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7995
7872
|
const makeVSlideGroupProps = propsFactory({
|
7996
7873
|
centerActive: Boolean,
|
7997
|
-
contentClass: null,
|
7998
7874
|
direction: {
|
7999
7875
|
type: String,
|
8000
7876
|
default: 'horizontal'
|
@@ -8307,7 +8183,7 @@
|
|
8307
8183
|
})]), vue.createElementVNode("div", {
|
8308
8184
|
"key": "container",
|
8309
8185
|
"ref": containerRef,
|
8310
|
-
"class":
|
8186
|
+
"class": "v-slide-group__container",
|
8311
8187
|
"onScroll": onScroll
|
8312
8188
|
}, [vue.createElementVNode("div", {
|
8313
8189
|
"ref": contentRef,
|
@@ -8670,85 +8546,16 @@
|
|
8670
8546
|
}
|
8671
8547
|
});
|
8672
8548
|
|
8673
|
-
const makeVDividerProps = propsFactory({
|
8674
|
-
color: String,
|
8675
|
-
inset: Boolean,
|
8676
|
-
length: [Number, String],
|
8677
|
-
opacity: [Number, String],
|
8678
|
-
thickness: [Number, String],
|
8679
|
-
vertical: Boolean,
|
8680
|
-
...makeComponentProps(),
|
8681
|
-
...makeThemeProps()
|
8682
|
-
}, 'VDivider');
|
8683
|
-
const VDivider = genericComponent()({
|
8684
|
-
name: 'VDivider',
|
8685
|
-
props: makeVDividerProps(),
|
8686
|
-
setup(props, _ref) {
|
8687
|
-
let {
|
8688
|
-
attrs,
|
8689
|
-
slots
|
8690
|
-
} = _ref;
|
8691
|
-
const {
|
8692
|
-
themeClasses
|
8693
|
-
} = provideTheme(props);
|
8694
|
-
const {
|
8695
|
-
textColorClasses,
|
8696
|
-
textColorStyles
|
8697
|
-
} = useTextColor(() => props.color);
|
8698
|
-
const dividerStyles = vue.computed(() => {
|
8699
|
-
const styles = {};
|
8700
|
-
if (props.length) {
|
8701
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8702
|
-
}
|
8703
|
-
if (props.thickness) {
|
8704
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8705
|
-
}
|
8706
|
-
return styles;
|
8707
|
-
});
|
8708
|
-
useRender(() => {
|
8709
|
-
const divider = vue.createElementVNode("hr", {
|
8710
|
-
"class": vue.normalizeClass([{
|
8711
|
-
'v-divider': true,
|
8712
|
-
'v-divider--inset': props.inset,
|
8713
|
-
'v-divider--vertical': props.vertical
|
8714
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8715
|
-
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8716
|
-
'--v-border-opacity': props.opacity
|
8717
|
-
}, props.style]),
|
8718
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8719
|
-
"role": `${attrs.role || 'separator'}`
|
8720
|
-
}, null);
|
8721
|
-
if (!slots.default) return divider;
|
8722
|
-
return vue.createElementVNode("div", {
|
8723
|
-
"class": vue.normalizeClass(['v-divider__wrapper', {
|
8724
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8725
|
-
'v-divider__wrapper--inset': props.inset
|
8726
|
-
}])
|
8727
|
-
}, [divider, vue.createElementVNode("div", {
|
8728
|
-
"class": "v-divider__content"
|
8729
|
-
}, [slots.default()]), divider]);
|
8730
|
-
});
|
8731
|
-
return {};
|
8732
|
-
}
|
8733
|
-
});
|
8734
|
-
|
8735
8549
|
// Utilities
|
8736
8550
|
|
8737
8551
|
// List
|
8738
8552
|
const ListKey = Symbol.for('vuetify:list');
|
8739
8553
|
function createList() {
|
8740
|
-
let {
|
8741
|
-
filterable
|
8742
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8743
|
-
filterable: false
|
8744
|
-
};
|
8745
8554
|
const parent = vue.inject(ListKey, {
|
8746
|
-
filterable: false,
|
8747
8555
|
hasPrepend: vue.shallowRef(false),
|
8748
8556
|
updateHasPrepend: () => null
|
8749
8557
|
});
|
8750
8558
|
const data = {
|
8751
|
-
filterable: parent.filterable || filterable,
|
8752
8559
|
hasPrepend: vue.shallowRef(false),
|
8753
8560
|
updateHasPrepend: value => {
|
8754
8561
|
if (value) data.hasPrepend.value = value;
|
@@ -9700,9 +9507,6 @@
|
|
9700
9507
|
roundedClasses
|
9701
9508
|
} = useRounded(roundedProps);
|
9702
9509
|
const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9703
|
-
const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9704
|
-
keys: [keyCodes.enter]
|
9705
|
-
} : props.ripple);
|
9706
9510
|
const slotProps = vue.computed(() => ({
|
9707
9511
|
isActive: isActive.value,
|
9708
9512
|
select,
|
@@ -9727,9 +9531,8 @@
|
|
9727
9531
|
function onKeyDown(e) {
|
9728
9532
|
const target = e.target;
|
9729
9533
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9730
|
-
if (e.key === 'Enter' || e.key === ' '
|
9534
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
9731
9535
|
e.preventDefault();
|
9732
|
-
e.stopPropagation();
|
9733
9536
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9734
9537
|
}
|
9735
9538
|
}
|
@@ -9839,7 +9642,7 @@
|
|
9839
9642
|
}), vue.createElementVNode("div", {
|
9840
9643
|
"class": "v-list-item__spacer"
|
9841
9644
|
}, null)])]
|
9842
|
-
}), [[Ripple, isClickable.value &&
|
9645
|
+
}), [[Ripple, isClickable.value && props.ripple]]);
|
9843
9646
|
});
|
9844
9647
|
return {
|
9845
9648
|
activate,
|
@@ -9894,6 +9697,68 @@
|
|
9894
9697
|
}
|
9895
9698
|
});
|
9896
9699
|
|
9700
|
+
const makeVDividerProps = propsFactory({
|
9701
|
+
color: String,
|
9702
|
+
inset: Boolean,
|
9703
|
+
length: [Number, String],
|
9704
|
+
opacity: [Number, String],
|
9705
|
+
thickness: [Number, String],
|
9706
|
+
vertical: Boolean,
|
9707
|
+
...makeComponentProps(),
|
9708
|
+
...makeThemeProps()
|
9709
|
+
}, 'VDivider');
|
9710
|
+
const VDivider = genericComponent()({
|
9711
|
+
name: 'VDivider',
|
9712
|
+
props: makeVDividerProps(),
|
9713
|
+
setup(props, _ref) {
|
9714
|
+
let {
|
9715
|
+
attrs,
|
9716
|
+
slots
|
9717
|
+
} = _ref;
|
9718
|
+
const {
|
9719
|
+
themeClasses
|
9720
|
+
} = provideTheme(props);
|
9721
|
+
const {
|
9722
|
+
textColorClasses,
|
9723
|
+
textColorStyles
|
9724
|
+
} = useTextColor(() => props.color);
|
9725
|
+
const dividerStyles = vue.computed(() => {
|
9726
|
+
const styles = {};
|
9727
|
+
if (props.length) {
|
9728
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9729
|
+
}
|
9730
|
+
if (props.thickness) {
|
9731
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9732
|
+
}
|
9733
|
+
return styles;
|
9734
|
+
});
|
9735
|
+
useRender(() => {
|
9736
|
+
const divider = vue.createElementVNode("hr", {
|
9737
|
+
"class": vue.normalizeClass([{
|
9738
|
+
'v-divider': true,
|
9739
|
+
'v-divider--inset': props.inset,
|
9740
|
+
'v-divider--vertical': props.vertical
|
9741
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9742
|
+
"style": vue.normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9743
|
+
'--v-border-opacity': props.opacity
|
9744
|
+
}, props.style]),
|
9745
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9746
|
+
"role": `${attrs.role || 'separator'}`
|
9747
|
+
}, null);
|
9748
|
+
if (!slots.default) return divider;
|
9749
|
+
return vue.createElementVNode("div", {
|
9750
|
+
"class": vue.normalizeClass(['v-divider__wrapper', {
|
9751
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9752
|
+
'v-divider__wrapper--inset': props.inset
|
9753
|
+
}])
|
9754
|
+
}, [divider, vue.createElementVNode("div", {
|
9755
|
+
"class": "v-divider__content"
|
9756
|
+
}, [slots.default()]), divider]);
|
9757
|
+
});
|
9758
|
+
return {};
|
9759
|
+
}
|
9760
|
+
});
|
9761
|
+
|
9897
9762
|
// Types
|
9898
9763
|
|
9899
9764
|
const makeVListChildrenProps = propsFactory({
|
@@ -10163,7 +10028,6 @@
|
|
10163
10028
|
activeClass: String,
|
10164
10029
|
bgColor: String,
|
10165
10030
|
disabled: Boolean,
|
10166
|
-
filterable: Boolean,
|
10167
10031
|
expandIcon: IconValue,
|
10168
10032
|
collapseIcon: IconValue,
|
10169
10033
|
lines: {
|
@@ -10247,9 +10111,7 @@
|
|
10247
10111
|
const activeColor = vue.toRef(() => props.activeColor);
|
10248
10112
|
const baseColor = vue.toRef(() => props.baseColor);
|
10249
10113
|
const color = vue.toRef(() => props.color);
|
10250
|
-
createList(
|
10251
|
-
filterable: props.filterable
|
10252
|
-
});
|
10114
|
+
createList();
|
10253
10115
|
provideDefaults({
|
10254
10116
|
VListGroup: {
|
10255
10117
|
activeColor,
|
@@ -11932,7 +11794,6 @@
|
|
11932
11794
|
// disableKeys: Boolean,
|
11933
11795
|
id: String,
|
11934
11796
|
submenu: Boolean,
|
11935
|
-
disableInitialFocus: Boolean,
|
11936
11797
|
...omit(makeVOverlayProps({
|
11937
11798
|
closeDelay: 250,
|
11938
11799
|
closeOnContentClick: true,
|
@@ -12007,7 +11868,7 @@
|
|
12007
11868
|
vue.watch(isActive, val => {
|
12008
11869
|
if (val) {
|
12009
11870
|
parent?.register();
|
12010
|
-
if (IN_BROWSER
|
11871
|
+
if (IN_BROWSER) {
|
12011
11872
|
document.addEventListener('focusin', onFocusIn, {
|
12012
11873
|
once: true
|
12013
11874
|
});
|
@@ -12844,12 +12705,7 @@
|
|
12844
12705
|
}
|
12845
12706
|
function calculateOffset(index) {
|
12846
12707
|
index = clamp(index, 0, items.value.length - 1);
|
12847
|
-
|
12848
|
-
const fraction = index % 1;
|
12849
|
-
const next = whole + 1;
|
12850
|
-
const wholeOffset = offsets[whole] || 0;
|
12851
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12852
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12708
|
+
return offsets[index] || 0;
|
12853
12709
|
}
|
12854
12710
|
function calculateIndex(scrollTop) {
|
12855
12711
|
return binaryClosest(offsets, scrollTop);
|
@@ -13203,7 +13059,6 @@
|
|
13203
13059
|
},
|
13204
13060
|
openOnClear: Boolean,
|
13205
13061
|
itemColor: String,
|
13206
|
-
noAutoScroll: Boolean,
|
13207
13062
|
...makeItemsProps({
|
13208
13063
|
itemChildren: false
|
13209
13064
|
})
|
@@ -13418,7 +13273,7 @@
|
|
13418
13273
|
vue.watch(menu, () => {
|
13419
13274
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13420
13275
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13421
|
-
IN_BROWSER &&
|
13276
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13422
13277
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13423
13278
|
});
|
13424
13279
|
}
|
@@ -13511,22 +13366,6 @@
|
|
13511
13366
|
key: item.value,
|
13512
13367
|
onClick: () => select(item, null)
|
13513
13368
|
});
|
13514
|
-
if (item.raw.type === 'divider') {
|
13515
|
-
return slots.divider?.({
|
13516
|
-
props: item.raw,
|
13517
|
-
index
|
13518
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
13519
|
-
"key": `divider-${index}`
|
13520
|
-
}), null);
|
13521
|
-
}
|
13522
|
-
if (item.raw.type === 'subheader') {
|
13523
|
-
return slots.subheader?.({
|
13524
|
-
props: item.raw,
|
13525
|
-
index
|
13526
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
13527
|
-
"key": `subheader-${index}`
|
13528
|
-
}), null);
|
13529
|
-
}
|
13530
13369
|
return slots.item?.({
|
13531
13370
|
item,
|
13532
13371
|
index,
|
@@ -13687,9 +13526,6 @@
|
|
13687
13526
|
let match = -1;
|
13688
13527
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13689
13528
|
if (typeof item === 'object') {
|
13690
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13691
|
-
continue;
|
13692
|
-
}
|
13693
13529
|
const filterKeys = keys || Object.keys(transformed);
|
13694
13530
|
for (const key of filterKeys) {
|
13695
13531
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13892,7 +13728,7 @@
|
|
13892
13728
|
menu.value = !menu.value;
|
13893
13729
|
}
|
13894
13730
|
function onListKeydown(e) {
|
13895
|
-
if (
|
13731
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
13896
13732
|
vTextFieldRef.value?.focus();
|
13897
13733
|
}
|
13898
13734
|
}
|
@@ -14097,7 +13933,6 @@
|
|
14097
13933
|
}, props.menuProps), {
|
14098
13934
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
14099
13935
|
"ref": listRef,
|
14100
|
-
"filterable": true,
|
14101
13936
|
"selected": selectedValues.value,
|
14102
13937
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
14103
13938
|
"onMousedown": e => e.preventDefault(),
|
@@ -14129,22 +13964,6 @@
|
|
14129
13964
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
14130
13965
|
onClick: () => select(item, null)
|
14131
13966
|
});
|
14132
|
-
if (item.raw.type === 'divider') {
|
14133
|
-
return slots.divider?.({
|
14134
|
-
props: item.raw,
|
14135
|
-
index
|
14136
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
14137
|
-
"key": `divider-${index}`
|
14138
|
-
}), null);
|
14139
|
-
}
|
14140
|
-
if (item.raw.type === 'subheader') {
|
14141
|
-
return slots.subheader?.({
|
14142
|
-
props: item.raw,
|
14143
|
-
index
|
14144
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
14145
|
-
"key": `subheader-${index}`
|
14146
|
-
}), null);
|
14147
|
-
}
|
14148
13967
|
return slots.item?.({
|
14149
13968
|
item,
|
14150
13969
|
index,
|
@@ -14289,8 +14108,7 @@
|
|
14289
14108
|
...makeThemeProps(),
|
14290
14109
|
...makeTransitionProps({
|
14291
14110
|
transition: 'scale-rotate-transition'
|
14292
|
-
})
|
14293
|
-
...makeDimensionProps()
|
14111
|
+
})
|
14294
14112
|
}, 'VBadge');
|
14295
14113
|
const VBadge = genericComponent()({
|
14296
14114
|
name: 'VBadge',
|
@@ -14320,9 +14138,6 @@
|
|
14320
14138
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
14321
14139
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
14322
14140
|
});
|
14323
|
-
const {
|
14324
|
-
dimensionStyles
|
14325
|
-
} = useDimension(props);
|
14326
14141
|
useRender(() => {
|
14327
14142
|
const value = Number(props.content);
|
14328
14143
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -14344,7 +14159,7 @@
|
|
14344
14159
|
}, {
|
14345
14160
|
default: () => [vue.withDirectives(vue.createElementVNode("span", vue.mergeProps({
|
14346
14161
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
14347
|
-
"style": [backgroundColorStyles.value, textColorStyles.value,
|
14162
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14348
14163
|
"aria-atomic": "true",
|
14349
14164
|
"aria-label": t(props.label, value),
|
14350
14165
|
"aria-live": "polite",
|
@@ -17753,13 +17568,13 @@
|
|
17753
17568
|
return null;
|
17754
17569
|
}
|
17755
17570
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17756
|
-
function getWeekdays(locale, firstDayOfWeek
|
17571
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17757
17572
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17758
17573
|
return createRange(7).map(i => {
|
17759
17574
|
const weekday = new Date(sundayJanuarySecond2000);
|
17760
17575
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17761
17576
|
return new Intl.DateTimeFormat(locale, {
|
17762
|
-
weekday:
|
17577
|
+
weekday: 'narrow'
|
17763
17578
|
}).format(weekday);
|
17764
17579
|
});
|
17765
17580
|
}
|
@@ -18223,9 +18038,9 @@
|
|
18223
18038
|
getDiff(date, comparing, unit) {
|
18224
18039
|
return getDiff(date, comparing, unit);
|
18225
18040
|
}
|
18226
|
-
getWeekdays(firstDayOfWeek
|
18041
|
+
getWeekdays(firstDayOfWeek) {
|
18227
18042
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
18228
|
-
return getWeekdays(this.locale, firstDay
|
18043
|
+
return getWeekdays(this.locale, firstDay);
|
18229
18044
|
}
|
18230
18045
|
getYear(date) {
|
18231
18046
|
return getYear(date);
|
@@ -18580,7 +18395,6 @@
|
|
18580
18395
|
_search.value = val ?? '';
|
18581
18396
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18582
18397
|
model.value = [transformItem$3(props, val)];
|
18583
|
-
vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18584
18398
|
}
|
18585
18399
|
if (val && props.multiple && props.delimiters?.length) {
|
18586
18400
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18661,7 +18475,7 @@
|
|
18661
18475
|
menu.value = !menu.value;
|
18662
18476
|
}
|
18663
18477
|
function onListKeydown(e) {
|
18664
|
-
if (
|
18478
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
18665
18479
|
vTextFieldRef.value?.focus();
|
18666
18480
|
}
|
18667
18481
|
}
|
@@ -18866,7 +18680,6 @@
|
|
18866
18680
|
}, props.menuProps), {
|
18867
18681
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
18868
18682
|
"ref": listRef,
|
18869
|
-
"filterable": true,
|
18870
18683
|
"selected": selectedValues.value,
|
18871
18684
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18872
18685
|
"onMousedown": e => e.preventDefault(),
|
@@ -18898,22 +18711,6 @@
|
|
18898
18711
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18899
18712
|
onClick: () => select(item, null)
|
18900
18713
|
});
|
18901
|
-
if (item.raw.type === 'divider') {
|
18902
|
-
return slots.divider?.({
|
18903
|
-
props: item.raw,
|
18904
|
-
index
|
18905
|
-
}) ?? vue.createVNode(VDivider, vue.mergeProps(item.props, {
|
18906
|
-
"key": `divider-${index}`
|
18907
|
-
}), null);
|
18908
|
-
}
|
18909
|
-
if (item.raw.type === 'subheader') {
|
18910
|
-
return slots.subheader?.({
|
18911
|
-
props: item.raw,
|
18912
|
-
index
|
18913
|
-
}) ?? vue.createVNode(VListSubheader, vue.mergeProps(item.props, {
|
18914
|
-
"key": `subheader-${index}`
|
18915
|
-
}), null);
|
18916
|
-
}
|
18917
18714
|
return slots.item?.({
|
18918
18715
|
item,
|
18919
18716
|
index,
|
@@ -20796,7 +20593,6 @@
|
|
20796
20593
|
color: String,
|
20797
20594
|
disableSort: Boolean,
|
20798
20595
|
fixedHeader: Boolean,
|
20799
|
-
lastFixed: Boolean,
|
20800
20596
|
multiSort: Boolean,
|
20801
20597
|
sortAscIcon: {
|
20802
20598
|
type: IconValue,
|
@@ -20843,11 +20639,10 @@
|
|
20843
20639
|
loaderClasses
|
20844
20640
|
} = useLoader(props);
|
20845
20641
|
function getFixedStyles(column, y) {
|
20846
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20642
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20847
20643
|
return {
|
20848
20644
|
position: 'sticky',
|
20849
|
-
left: column.fixed
|
20850
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20645
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20851
20646
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20852
20647
|
};
|
20853
20648
|
}
|
@@ -21363,18 +21158,11 @@
|
|
21363
21158
|
}
|
21364
21159
|
});
|
21365
21160
|
|
21366
|
-
// Types
|
21367
|
-
|
21368
21161
|
const makeVTableProps = propsFactory({
|
21369
21162
|
fixedHeader: Boolean,
|
21370
21163
|
fixedFooter: Boolean,
|
21371
21164
|
height: [Number, String],
|
21372
21165
|
hover: Boolean,
|
21373
|
-
striped: {
|
21374
|
-
type: String,
|
21375
|
-
default: null,
|
21376
|
-
validator: v => ['even', 'odd'].includes(v)
|
21377
|
-
},
|
21378
21166
|
...makeComponentProps(),
|
21379
21167
|
...makeDensityProps(),
|
21380
21168
|
...makeTagProps(),
|
@@ -21401,9 +21189,7 @@
|
|
21401
21189
|
'v-table--fixed-footer': props.fixedFooter,
|
21402
21190
|
'v-table--has-top': !!slots.top,
|
21403
21191
|
'v-table--has-bottom': !!slots.bottom,
|
21404
|
-
'v-table--hover': props.hover
|
21405
|
-
'v-table--striped-even': props.striped === 'even',
|
21406
|
-
'v-table--striped-odd': props.striped === 'odd'
|
21192
|
+
'v-table--hover': props.hover
|
21407
21193
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21408
21194
|
"style": vue.normalizeStyle(props.style)
|
21409
21195
|
}, {
|
@@ -22578,8 +22364,7 @@
|
|
22578
22364
|
firstDayOfWeek: {
|
22579
22365
|
type: [Number, String],
|
22580
22366
|
default: undefined
|
22581
|
-
}
|
22582
|
-
weekdayFormat: String
|
22367
|
+
}
|
22583
22368
|
}, 'calendar');
|
22584
22369
|
function useCalendar(props) {
|
22585
22370
|
const adapter = useDate();
|
@@ -22820,7 +22605,7 @@
|
|
22820
22605
|
"ref": daysRef,
|
22821
22606
|
"key": daysInMonth.value[0].date?.toString(),
|
22822
22607
|
"class": "v-date-picker-month__days"
|
22823
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22608
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
|
22824
22609
|
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22825
22610
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22826
22611
|
const slotProps = {
|
@@ -23329,9 +23114,7 @@
|
|
23329
23114
|
"max": maxDate.value,
|
23330
23115
|
"year": year.value,
|
23331
23116
|
"allowedMonths": allowedMonths
|
23332
|
-
}), {
|
23333
|
-
...pick(slots, ['month'])
|
23334
|
-
}) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
|
23117
|
+
}), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
|
23335
23118
|
"key": "date-picker-years"
|
23336
23119
|
}, datePickerYearsProps, {
|
23337
23120
|
"modelValue": year.value,
|
@@ -23339,9 +23122,7 @@
|
|
23339
23122
|
"min": minDate.value,
|
23340
23123
|
"max": maxDate.value,
|
23341
23124
|
"allowedYears": allowedYears
|
23342
|
-
}), {
|
23343
|
-
...pick(slots, ['year'])
|
23344
|
-
}) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
|
23125
|
+
}), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
|
23345
23126
|
"key": "date-picker-month"
|
23346
23127
|
}, datePickerMonthProps, {
|
23347
23128
|
"modelValue": model.value,
|
@@ -23352,9 +23133,7 @@
|
|
23352
23133
|
"onUpdate:year": [$event => year.value = $event, onUpdateYear],
|
23353
23134
|
"min": minDate.value,
|
23354
23135
|
"max": maxDate.value
|
23355
|
-
}),
|
23356
|
-
...pick(slots, ['day'])
|
23357
|
-
})]
|
23136
|
+
}), null)]
|
23358
23137
|
})]),
|
23359
23138
|
actions: slots.actions
|
23360
23139
|
});
|
@@ -24445,9 +24224,6 @@
|
|
24445
24224
|
startStatus.value = status;
|
24446
24225
|
} else if (side === 'end') {
|
24447
24226
|
endStatus.value = status;
|
24448
|
-
} else if (side === 'both') {
|
24449
|
-
startStatus.value = status;
|
24450
|
-
endStatus.value = status;
|
24451
24227
|
}
|
24452
24228
|
}
|
24453
24229
|
function getStatus(side) {
|
@@ -24559,32 +24335,6 @@
|
|
24559
24335
|
}, [renderSide('end', endStatus.value)])]
|
24560
24336
|
});
|
24561
24337
|
});
|
24562
|
-
function reset(side) {
|
24563
|
-
const effectiveSide = side ?? props.side;
|
24564
|
-
setStatus(effectiveSide, 'ok');
|
24565
|
-
vue.nextTick(() => {
|
24566
|
-
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24567
|
-
if (props.mode !== 'manual') {
|
24568
|
-
vue.nextTick(() => {
|
24569
|
-
window.requestAnimationFrame(() => {
|
24570
|
-
window.requestAnimationFrame(() => {
|
24571
|
-
window.requestAnimationFrame(() => {
|
24572
|
-
if (effectiveSide === 'both') {
|
24573
|
-
intersecting('start');
|
24574
|
-
intersecting('end');
|
24575
|
-
} else {
|
24576
|
-
intersecting(effectiveSide);
|
24577
|
-
}
|
24578
|
-
});
|
24579
|
-
});
|
24580
|
-
});
|
24581
|
-
});
|
24582
|
-
}
|
24583
|
-
});
|
24584
|
-
}
|
24585
|
-
return {
|
24586
|
-
reset
|
24587
|
-
};
|
24588
24338
|
}
|
24589
24339
|
});
|
24590
24340
|
|
@@ -24664,47 +24414,8 @@
|
|
24664
24414
|
}
|
24665
24415
|
});
|
24666
24416
|
|
24667
|
-
|
24668
|
-
|
24669
|
-
...makeComponentProps(),
|
24670
|
-
...makeRoundedProps(),
|
24671
|
-
...makeTagProps({
|
24672
|
-
tag: 'kbd'
|
24673
|
-
}),
|
24674
|
-
...makeThemeProps(),
|
24675
|
-
...makeElevationProps(),
|
24676
|
-
color: String
|
24677
|
-
}, 'VKbd');
|
24678
|
-
const VKbd = genericComponent()({
|
24679
|
-
name: 'VKbd',
|
24680
|
-
props: makeVKbdProps(),
|
24681
|
-
setup(props, _ref) {
|
24682
|
-
let {
|
24683
|
-
slots
|
24684
|
-
} = _ref;
|
24685
|
-
const {
|
24686
|
-
themeClasses
|
24687
|
-
} = provideTheme(props);
|
24688
|
-
const {
|
24689
|
-
borderClasses
|
24690
|
-
} = useBorder(props);
|
24691
|
-
const {
|
24692
|
-
roundedClasses
|
24693
|
-
} = useRounded(props);
|
24694
|
-
const {
|
24695
|
-
backgroundColorClasses,
|
24696
|
-
backgroundColorStyles
|
24697
|
-
} = useBackgroundColor(() => props.color);
|
24698
|
-
const {
|
24699
|
-
elevationClasses
|
24700
|
-
} = useElevation(props);
|
24701
|
-
useRender(() => vue.createVNode(props.tag, {
|
24702
|
-
"class": vue.normalizeClass(['v-kbd', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
24703
|
-
"style": vue.normalizeStyle([backgroundColorStyles.value, props.style])
|
24704
|
-
}, slots));
|
24705
|
-
return {};
|
24706
|
-
}
|
24707
|
-
});
|
24417
|
+
// Styles
|
24418
|
+
const VKbd = createSimpleFunctional('v-kbd', 'kbd');
|
24708
24419
|
|
24709
24420
|
const makeVLayoutProps = propsFactory({
|
24710
24421
|
...makeComponentProps(),
|
@@ -25542,14 +25253,6 @@
|
|
25542
25253
|
type: Number,
|
25543
25254
|
default: 0
|
25544
25255
|
},
|
25545
|
-
minFractionDigits: {
|
25546
|
-
type: Number,
|
25547
|
-
default: null
|
25548
|
-
},
|
25549
|
-
decimalSeparator: {
|
25550
|
-
type: String,
|
25551
|
-
validator: v => !v || v.length === 1
|
25552
|
-
},
|
25553
25256
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25554
25257
|
}, 'VNumberInput');
|
25555
25258
|
const VNumberInput = genericComponent()({
|
@@ -25575,24 +25278,11 @@
|
|
25575
25278
|
const form = useForm(props);
|
25576
25279
|
const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
|
25577
25280
|
const isFocused = vue.shallowRef(props.focused);
|
25578
|
-
const {
|
25579
|
-
decimalSeparator: decimalSeparatorFromLocale
|
25580
|
-
} = useLocale();
|
25581
|
-
const decimalSeparator = vue.computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);
|
25582
25281
|
function correctPrecision(val) {
|
25583
25282
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25584
|
-
let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
25585
25283
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25586
|
-
|
25587
|
-
|
25588
|
-
.replace('.', decimalSeparator.value);
|
25589
|
-
}
|
25590
|
-
if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {
|
25591
|
-
return fixed.replace('.', decimalSeparator.value);
|
25592
|
-
}
|
25593
|
-
let [baseDigits, fractionDigits] = fixed.split('.');
|
25594
|
-
fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\d{${props.minFractionDigits}})0`, 'g'), '');
|
25595
|
-
return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);
|
25284
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25285
|
+
: fixed;
|
25596
25286
|
}
|
25597
25287
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25598
25288
|
const _inputText = vue.shallowRef(null);
|
@@ -25609,11 +25299,8 @@
|
|
25609
25299
|
if (val === null || val === '') {
|
25610
25300
|
model.value = null;
|
25611
25301
|
_inputText.value = null;
|
25612
|
-
|
25613
|
-
|
25614
|
-
const parsedValue = Number(val.replace(decimalSeparator.value, '.'));
|
25615
|
-
if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {
|
25616
|
-
model.value = parsedValue;
|
25302
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
25303
|
+
model.value = Number(val);
|
25617
25304
|
_inputText.value = val;
|
25618
25305
|
}
|
25619
25306
|
}
|
@@ -25650,7 +25337,6 @@
|
|
25650
25337
|
}
|
25651
25338
|
};
|
25652
25339
|
vue.watch(() => props.precision, () => formatInputValue());
|
25653
|
-
vue.watch(() => props.minFractionDigits, () => formatInputValue());
|
25654
25340
|
vue.onMounted(() => {
|
25655
25341
|
clampModel();
|
25656
25342
|
});
|
@@ -25684,24 +25370,24 @@
|
|
25684
25370
|
selectionEnd
|
25685
25371
|
} = inputElement ?? {};
|
25686
25372
|
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
25687
|
-
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision
|
25373
|
+
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
|
25688
25374
|
|
25689
|
-
//
|
25690
|
-
//
|
25691
|
-
//
|
25692
|
-
if (
|
25375
|
+
// Only numbers, "-", "." are allowed
|
25376
|
+
// AND "-", "." are allowed only once
|
25377
|
+
// AND "-" is only allowed at the start
|
25378
|
+
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
25693
25379
|
e.preventDefault();
|
25694
25380
|
inputElement.value = potentialNewNumber;
|
25695
25381
|
}
|
25696
25382
|
if (props.precision == null) return;
|
25697
25383
|
|
25698
25384
|
// Ignore decimal digits above precision limit
|
25699
|
-
if (potentialNewInputVal.split(
|
25385
|
+
if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
|
25700
25386
|
e.preventDefault();
|
25701
25387
|
inputElement.value = potentialNewNumber;
|
25702
25388
|
}
|
25703
25389
|
// Ignore decimal separator when precision = 0
|
25704
|
-
if (props.precision === 0 && potentialNewInputVal.includes(
|
25390
|
+
if (props.precision === 0 && potentialNewInputVal.includes('.')) {
|
25705
25391
|
e.preventDefault();
|
25706
25392
|
inputElement.value = potentialNewNumber;
|
25707
25393
|
}
|
@@ -25753,16 +25439,19 @@
|
|
25753
25439
|
if (controlsDisabled.value) return;
|
25754
25440
|
if (!vTextFieldRef.value) return;
|
25755
25441
|
const actualText = vTextFieldRef.value.value;
|
25756
|
-
|
25757
|
-
|
25758
|
-
inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));
|
25442
|
+
if (actualText && !isNaN(Number(actualText))) {
|
25443
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
25759
25444
|
} else {
|
25760
25445
|
inputText.value = null;
|
25761
25446
|
}
|
25762
25447
|
}
|
25763
25448
|
function formatInputValue() {
|
25764
25449
|
if (controlsDisabled.value) return;
|
25765
|
-
|
25450
|
+
if (model.value === null || isNaN(model.value)) {
|
25451
|
+
inputText.value = null;
|
25452
|
+
return;
|
25453
|
+
}
|
25454
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25766
25455
|
}
|
25767
25456
|
function trimDecimalZeros() {
|
25768
25457
|
if (controlsDisabled.value) return;
|
@@ -25770,7 +25459,7 @@
|
|
25770
25459
|
inputText.value = null;
|
25771
25460
|
return;
|
25772
25461
|
}
|
25773
|
-
inputText.value = model.value.toString()
|
25462
|
+
inputText.value = model.value.toString();
|
25774
25463
|
}
|
25775
25464
|
function onFocus() {
|
25776
25465
|
trimDecimalZeros();
|
@@ -26037,10 +25726,9 @@
|
|
26037
25726
|
e.preventDefault();
|
26038
25727
|
e.stopPropagation();
|
26039
25728
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
26040
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
26041
25729
|
if (isValidNumber(clipboardText)) return;
|
26042
25730
|
model.value = clipboardText.split('');
|
26043
|
-
inputRef.value?.[
|
25731
|
+
inputRef.value?.[index].blur();
|
26044
25732
|
}
|
26045
25733
|
function reset() {
|
26046
25734
|
model.value = [];
|
@@ -29824,7 +29512,7 @@
|
|
29824
29512
|
};
|
29825
29513
|
});
|
29826
29514
|
}
|
29827
|
-
const version$1 = "3.8.10-
|
29515
|
+
const version$1 = "3.8.10-master.2025-06-18";
|
29828
29516
|
createVuetify$1.version = version$1;
|
29829
29517
|
|
29830
29518
|
// Vue's inject() can only be used in setup
|
@@ -29849,7 +29537,7 @@
|
|
29849
29537
|
...options
|
29850
29538
|
});
|
29851
29539
|
};
|
29852
|
-
const version = "3.8.10-
|
29540
|
+
const version = "3.8.10-master.2025-06-18";
|
29853
29541
|
createVuetify.version = version;
|
29854
29542
|
|
29855
29543
|
exports.blueprints = index;
|