@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.esm.js
CHANGED
@@ -1,16 +1,15 @@
|
|
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, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, 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, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, normalizeStyle, TransitionGroup, Transition, toRefs, 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
|
const IN_BROWSER = typeof window !== 'undefined';
|
10
10
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
11
11
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
12
12
|
const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
|
13
|
-
const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
|
14
13
|
|
15
14
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
16
15
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -511,23 +510,18 @@ function checkPrintable(e) {
|
|
511
510
|
function isPrimitive(value) {
|
512
511
|
return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
|
513
512
|
}
|
514
|
-
function
|
515
|
-
|
516
|
-
}
|
517
|
-
function extractNumber(text, decimalDigitsLimit, decimalSeparator) {
|
518
|
-
const onlyValidCharacters = new RegExp(`[\\d\\-${escapeForRegex(decimalSeparator)}]`);
|
519
|
-
const cleanText = text.split('').filter(x => onlyValidCharacters.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
513
|
+
function extractNumber(text, decimalDigitsLimit) {
|
514
|
+
const cleanText = text.split('').filter(x => /[\d\-.]/.test(x)).filter((x, i, all) => i === 0 && /[-]/.test(x) ||
|
520
515
|
// sign allowed at the start
|
521
|
-
x ===
|
516
|
+
x === '.' && i === all.indexOf('.') ||
|
522
517
|
// decimal separator allowed only once
|
523
518
|
/\d/.test(x)).join('');
|
524
519
|
if (decimalDigitsLimit === 0) {
|
525
|
-
return cleanText.split(
|
520
|
+
return cleanText.split('.')[0];
|
526
521
|
}
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join(decimalSeparator);
|
522
|
+
if (decimalDigitsLimit !== null && /\.\d/.test(cleanText)) {
|
523
|
+
const parts = cleanText.split('.');
|
524
|
+
return [parts[0], parts[1].substring(0, decimalDigitsLimit)].join('.');
|
531
525
|
}
|
532
526
|
return cleanText;
|
533
527
|
}
|
@@ -2674,10 +2668,6 @@ function createNumberFunction(current, fallback) {
|
|
2674
2668
|
return numberFormat.format(value);
|
2675
2669
|
};
|
2676
2670
|
}
|
2677
|
-
function inferDecimalSeparator(current, fallback) {
|
2678
|
-
const format = createNumberFunction(current, fallback);
|
2679
|
-
return format(0.1).includes(',') ? ',' : '.';
|
2680
|
-
}
|
2681
2671
|
function useProvided(props, prop, provided) {
|
2682
2672
|
const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);
|
2683
2673
|
|
@@ -2700,7 +2690,6 @@ function createProvideFunction(state) {
|
|
2700
2690
|
current,
|
2701
2691
|
fallback,
|
2702
2692
|
messages,
|
2703
|
-
decimalSeparator: toRef(() => inferDecimalSeparator(current, fallback)),
|
2704
2693
|
t: createTranslateFunction(current, fallback, messages),
|
2705
2694
|
n: createNumberFunction(current, fallback),
|
2706
2695
|
provide: createProvideFunction({
|
@@ -2723,7 +2712,6 @@ function createVuetifyAdapter(options) {
|
|
2723
2712
|
current,
|
2724
2713
|
fallback,
|
2725
2714
|
messages,
|
2726
|
-
decimalSeparator: toRef(() => options?.decimalSeparator ?? inferDecimalSeparator(current, fallback)),
|
2727
2715
|
t: createTranslateFunction(current, fallback, messages),
|
2728
2716
|
n: createNumberFunction(current, fallback),
|
2729
2717
|
provide: createProvideFunction({
|
@@ -2850,7 +2838,6 @@ const makeThemeProps = propsFactory({
|
|
2850
2838
|
function genDefaults$1() {
|
2851
2839
|
return {
|
2852
2840
|
defaultTheme: 'light',
|
2853
|
-
prefix: 'v-',
|
2854
2841
|
variations: {
|
2855
2842
|
colors: [],
|
2856
2843
|
lighten: 0,
|
@@ -2888,8 +2875,8 @@ function genDefaults$1() {
|
|
2888
2875
|
'activated-opacity': 0.12,
|
2889
2876
|
'pressed-opacity': 0.12,
|
2890
2877
|
'dragged-opacity': 0.08,
|
2891
|
-
'theme-kbd': '#
|
2892
|
-
'theme-on-kbd': '#
|
2878
|
+
'theme-kbd': '#212529',
|
2879
|
+
'theme-on-kbd': '#FFFFFF',
|
2893
2880
|
'theme-code': '#F5F5F5',
|
2894
2881
|
'theme-on-code': '#000000'
|
2895
2882
|
}
|
@@ -2925,17 +2912,14 @@ function genDefaults$1() {
|
|
2925
2912
|
'activated-opacity': 0.12,
|
2926
2913
|
'pressed-opacity': 0.16,
|
2927
2914
|
'dragged-opacity': 0.08,
|
2928
|
-
'theme-kbd': '#
|
2915
|
+
'theme-kbd': '#212529',
|
2929
2916
|
'theme-on-kbd': '#FFFFFF',
|
2930
2917
|
'theme-code': '#343434',
|
2931
2918
|
'theme-on-code': '#CCCCCC'
|
2932
2919
|
}
|
2933
2920
|
}
|
2934
2921
|
},
|
2935
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2936
|
-
scoped: false,
|
2937
|
-
unimportant: false,
|
2938
|
-
utilities: true
|
2922
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2939
2923
|
};
|
2940
2924
|
}
|
2941
2925
|
function parseThemeOptions() {
|
@@ -2958,21 +2942,21 @@ function parseThemeOptions() {
|
|
2958
2942
|
function createCssClass(lines, selector, content, scope) {
|
2959
2943
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2960
2944
|
}
|
2961
|
-
function genCssVariables(theme
|
2945
|
+
function genCssVariables(theme) {
|
2962
2946
|
const lightOverlay = theme.dark ? 2 : 1;
|
2963
2947
|
const darkOverlay = theme.dark ? 1 : 2;
|
2964
2948
|
const variables = [];
|
2965
2949
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2966
2950
|
const rgb = parseColor(value);
|
2967
|
-
variables.push(
|
2951
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2968
2952
|
if (!key.startsWith('on-')) {
|
2969
|
-
variables.push(
|
2953
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2970
2954
|
}
|
2971
2955
|
}
|
2972
2956
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2973
2957
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2974
2958
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2975
|
-
variables.push(
|
2959
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2976
2960
|
}
|
2977
2961
|
return variables;
|
2978
2962
|
}
|
@@ -3016,8 +3000,7 @@ function getScopedSelector(selector, scope) {
|
|
3016
3000
|
const scopeSelector = `:where(${scope})`;
|
3017
3001
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
3018
3002
|
}
|
3019
|
-
function upsertStyles(
|
3020
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
3003
|
+
function upsertStyles(styleEl, styles) {
|
3021
3004
|
if (!styleEl) return;
|
3022
3005
|
styleEl.innerHTML = styles;
|
3023
3006
|
}
|
@@ -3037,17 +3020,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
3037
3020
|
// Composables
|
3038
3021
|
function createTheme(options) {
|
3039
3022
|
const parsedOptions = parseThemeOptions(options);
|
3040
|
-
const
|
3023
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
3041
3024
|
const themes = ref(parsedOptions.themes);
|
3042
|
-
const systemName = shallowRef('light');
|
3043
|
-
const name = computed({
|
3044
|
-
get() {
|
3045
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
3046
|
-
},
|
3047
|
-
set(val) {
|
3048
|
-
_name.value = val;
|
3049
|
-
}
|
3050
|
-
});
|
3051
3025
|
const computedThemes = computed(() => {
|
3052
3026
|
const acc = {};
|
3053
3027
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3068,49 +3042,28 @@ function createTheme(options) {
|
|
3068
3042
|
const current = toRef(() => computedThemes.value[name.value]);
|
3069
3043
|
const styles = computed(() => {
|
3070
3044
|
const lines = [];
|
3071
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
3072
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3073
3045
|
if (current.value?.dark) {
|
3074
3046
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3075
3047
|
}
|
3076
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
3048
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3077
3049
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3078
|
-
createCssClass(lines,
|
3079
|
-
}
|
3080
|
-
|
3081
|
-
|
3082
|
-
|
3083
|
-
|
3084
|
-
|
3085
|
-
|
3086
|
-
|
3087
|
-
}
|
3088
|
-
|
3089
|
-
|
3090
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3091
|
-
}
|
3050
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
3051
|
+
}
|
3052
|
+
const bgLines = [];
|
3053
|
+
const fgLines = [];
|
3054
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3055
|
+
for (const key of colors) {
|
3056
|
+
if (key.startsWith('on-')) {
|
3057
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3058
|
+
} else {
|
3059
|
+
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);
|
3060
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3061
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
3092
3062
|
}
|
3093
|
-
lines.push(...bgLines, ...fgLines);
|
3094
3063
|
}
|
3064
|
+
lines.push(...bgLines, ...fgLines);
|
3095
3065
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3096
3066
|
});
|
3097
|
-
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3098
|
-
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
3099
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
3100
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3101
|
-
function updateSystemName() {
|
3102
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
3103
|
-
}
|
3104
|
-
updateSystemName();
|
3105
|
-
media.addEventListener('change', updateSystemName, {
|
3106
|
-
passive: true
|
3107
|
-
});
|
3108
|
-
if (getCurrentScope()) {
|
3109
|
-
onScopeDispose(() => {
|
3110
|
-
media.removeEventListener('change', updateSystemName);
|
3111
|
-
});
|
3112
|
-
}
|
3113
|
-
}
|
3114
3067
|
function install(app) {
|
3115
3068
|
if (parsedOptions.isDisabled) return;
|
3116
3069
|
const head = app._context.provides.usehead;
|
@@ -3148,55 +3101,22 @@ function createTheme(options) {
|
|
3148
3101
|
updateStyles();
|
3149
3102
|
}
|
3150
3103
|
function updateStyles() {
|
3151
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3104
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
3152
3105
|
}
|
3153
3106
|
}
|
3154
3107
|
}
|
3155
|
-
|
3156
|
-
if (!themeNames.value.includes(themeName)) {
|
3157
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3158
|
-
return;
|
3159
|
-
}
|
3160
|
-
name.value = themeName;
|
3161
|
-
}
|
3162
|
-
function cycle() {
|
3163
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3164
|
-
const currentIndex = themeArray.indexOf(name.value);
|
3165
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3166
|
-
change(themeArray[nextIndex]);
|
3167
|
-
}
|
3168
|
-
function toggle() {
|
3169
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3170
|
-
cycle(themeArray);
|
3171
|
-
}
|
3172
|
-
const globalName = new Proxy(name, {
|
3173
|
-
get(target, prop) {
|
3174
|
-
return target[prop];
|
3175
|
-
},
|
3176
|
-
set(target, prop, val) {
|
3177
|
-
if (prop === 'value') {
|
3178
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3179
|
-
}
|
3180
|
-
// @ts-expect-error
|
3181
|
-
target[prop] = val;
|
3182
|
-
return true;
|
3183
|
-
}
|
3184
|
-
});
|
3108
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
3185
3109
|
return {
|
3186
3110
|
install,
|
3187
|
-
change,
|
3188
|
-
cycle,
|
3189
|
-
toggle,
|
3190
3111
|
isDisabled: parsedOptions.isDisabled,
|
3191
3112
|
name,
|
3192
3113
|
themes,
|
3193
3114
|
current,
|
3194
3115
|
computedThemes,
|
3195
|
-
prefix: parsedOptions.prefix,
|
3196
3116
|
themeClasses,
|
3197
3117
|
styles,
|
3198
3118
|
global: {
|
3199
|
-
name
|
3119
|
+
name,
|
3200
3120
|
current
|
3201
3121
|
}
|
3202
3122
|
};
|
@@ -3207,7 +3127,7 @@ function provideTheme(props) {
|
|
3207
3127
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3208
3128
|
const name = toRef(() => props.theme ?? theme.name.value);
|
3209
3129
|
const current = toRef(() => theme.themes.value[name.value]);
|
3210
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
3130
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
3211
3131
|
const newTheme = {
|
3212
3132
|
...theme,
|
3213
3133
|
name,
|
@@ -4311,10 +4231,7 @@ const makeVToolbarProps = propsFactory({
|
|
4311
4231
|
default: 'default',
|
4312
4232
|
validator: v => allowedDensities$1.includes(v)
|
4313
4233
|
},
|
4314
|
-
extended:
|
4315
|
-
type: Boolean,
|
4316
|
-
default: null
|
4317
|
-
},
|
4234
|
+
extended: Boolean,
|
4318
4235
|
extensionHeight: {
|
4319
4236
|
type: [Number, String],
|
4320
4237
|
default: 48
|
@@ -4362,7 +4279,7 @@ const VToolbar = genericComponent()({
|
|
4362
4279
|
const {
|
4363
4280
|
rtlClasses
|
4364
4281
|
} = useRtl();
|
4365
|
-
const isExtended = shallowRef(props.extended
|
4282
|
+
const isExtended = shallowRef(!!(props.extended || slots.extension?.()));
|
4366
4283
|
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));
|
4367
4284
|
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);
|
4368
4285
|
provideDefaults({
|
@@ -4374,7 +4291,7 @@ const VToolbar = genericComponent()({
|
|
4374
4291
|
const hasTitle = !!(props.title || slots.title);
|
4375
4292
|
const hasImage = !!(slots.image || props.image);
|
4376
4293
|
const extension = slots.extension?.();
|
4377
|
-
isExtended.value = props.extended
|
4294
|
+
isExtended.value = !!(props.extended || extension);
|
4378
4295
|
return createVNode(props.tag, {
|
4379
4296
|
"class": normalizeClass(['v-toolbar', {
|
4380
4297
|
'v-toolbar--absolute': props.absolute,
|
@@ -4757,15 +4674,9 @@ function useVariant(props) {
|
|
4757
4674
|
};
|
4758
4675
|
}
|
4759
4676
|
|
4760
|
-
// Types
|
4761
|
-
|
4762
4677
|
const makeVBtnGroupProps = propsFactory({
|
4763
4678
|
baseColor: String,
|
4764
4679
|
divided: Boolean,
|
4765
|
-
direction: {
|
4766
|
-
type: String,
|
4767
|
-
default: 'horizontal'
|
4768
|
-
},
|
4769
4680
|
...makeBorderProps(),
|
4770
4681
|
...makeComponentProps(),
|
4771
4682
|
...makeDensityProps(),
|
@@ -4799,7 +4710,7 @@ const VBtnGroup = genericComponent()({
|
|
4799
4710
|
} = useRounded(props);
|
4800
4711
|
provideDefaults({
|
4801
4712
|
VBtn: {
|
4802
|
-
height:
|
4713
|
+
height: 'auto',
|
4803
4714
|
baseColor: toRef(() => props.baseColor),
|
4804
4715
|
color: toRef(() => props.color),
|
4805
4716
|
density: toRef(() => props.density),
|
@@ -4809,7 +4720,7 @@ const VBtnGroup = genericComponent()({
|
|
4809
4720
|
});
|
4810
4721
|
useRender(() => {
|
4811
4722
|
return createVNode(props.tag, {
|
4812
|
-
"class": normalizeClass(['v-btn-group',
|
4723
|
+
"class": normalizeClass(['v-btn-group', {
|
4813
4724
|
'v-btn-group--divided': props.divided
|
4814
4725
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4815
4726
|
"style": normalizeStyle(props.style)
|
@@ -5933,8 +5844,8 @@ function rippleCancelShow(e) {
|
|
5933
5844
|
window.clearTimeout(element._ripple.showTimer);
|
5934
5845
|
}
|
5935
5846
|
let keyboardRipple = false;
|
5936
|
-
function keyboardRippleShow(e
|
5937
|
-
if (!keyboardRipple &&
|
5847
|
+
function keyboardRippleShow(e) {
|
5848
|
+
if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
|
5938
5849
|
keyboardRipple = true;
|
5939
5850
|
rippleShow(e);
|
5940
5851
|
}
|
@@ -5962,12 +5873,9 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5962
5873
|
el._ripple.enabled = enabled;
|
5963
5874
|
el._ripple.centered = modifiers.center;
|
5964
5875
|
el._ripple.circle = modifiers.circle;
|
5965
|
-
|
5966
|
-
|
5967
|
-
el._ripple.class = bindingValue.class;
|
5876
|
+
if (isObject(value) && value.class) {
|
5877
|
+
el._ripple.class = value.class;
|
5968
5878
|
}
|
5969
|
-
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5970
|
-
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5971
5879
|
if (enabled && !wasEnabled) {
|
5972
5880
|
if (modifiers.stop) {
|
5973
5881
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5989,7 +5897,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5989
5897
|
el.addEventListener('mousedown', rippleShow);
|
5990
5898
|
el.addEventListener('mouseup', rippleHide);
|
5991
5899
|
el.addEventListener('mouseleave', rippleHide);
|
5992
|
-
el.addEventListener('keydown',
|
5900
|
+
el.addEventListener('keydown', keyboardRippleShow);
|
5993
5901
|
el.addEventListener('keyup', keyboardRippleHide);
|
5994
5902
|
el.addEventListener('blur', focusRippleHide);
|
5995
5903
|
|
@@ -6009,9 +5917,7 @@ function removeListeners(el) {
|
|
6009
5917
|
el.removeEventListener('touchcancel', rippleHide);
|
6010
5918
|
el.removeEventListener('mouseup', rippleHide);
|
6011
5919
|
el.removeEventListener('mouseleave', rippleHide);
|
6012
|
-
|
6013
|
-
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
6014
|
-
}
|
5920
|
+
el.removeEventListener('keydown', keyboardRippleShow);
|
6015
5921
|
el.removeEventListener('keyup', keyboardRippleHide);
|
6016
5922
|
el.removeEventListener('dragstart', rippleHide);
|
6017
5923
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -6020,8 +5926,8 @@ function mounted$4(el, binding) {
|
|
6020
5926
|
updateRipple(el, binding, false);
|
6021
5927
|
}
|
6022
5928
|
function unmounted$4(el) {
|
6023
|
-
removeListeners(el);
|
6024
5929
|
delete el._ripple;
|
5930
|
+
removeListeners(el);
|
6025
5931
|
}
|
6026
5932
|
function updated$1(el, binding) {
|
6027
5933
|
if (binding.value === binding.oldValue) {
|
@@ -6294,31 +6200,6 @@ const VAppBarTitle = genericComponent()({
|
|
6294
6200
|
// Utilities
|
6295
6201
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6296
6202
|
|
6297
|
-
// Utilities
|
6298
|
-
|
6299
|
-
// Types
|
6300
|
-
|
6301
|
-
// Types
|
6302
|
-
|
6303
|
-
// Composables
|
6304
|
-
const makeIconSizeProps = propsFactory({
|
6305
|
-
iconSize: [Number, String],
|
6306
|
-
iconSizes: {
|
6307
|
-
type: Array,
|
6308
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6309
|
-
}
|
6310
|
-
}, 'iconSize');
|
6311
|
-
function useIconSizes(props, fallback) {
|
6312
|
-
const iconSize = computed(() => {
|
6313
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6314
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6315
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6316
|
-
});
|
6317
|
-
return {
|
6318
|
-
iconSize
|
6319
|
-
};
|
6320
|
-
}
|
6321
|
-
|
6322
6203
|
// Types
|
6323
6204
|
|
6324
6205
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6358,7 +6239,6 @@ const makeVAlertProps = propsFactory({
|
|
6358
6239
|
...makeDensityProps(),
|
6359
6240
|
...makeDimensionProps(),
|
6360
6241
|
...makeElevationProps(),
|
6361
|
-
...makeIconSizeProps(),
|
6362
6242
|
...makeLocationProps(),
|
6363
6243
|
...makePositionProps(),
|
6364
6244
|
...makeRoundedProps(),
|
@@ -6386,9 +6266,6 @@ const VAlert = genericComponent()({
|
|
6386
6266
|
if (!props.type) return props.icon;
|
6387
6267
|
return props.icon ?? `$${props.type}`;
|
6388
6268
|
});
|
6389
|
-
const {
|
6390
|
-
iconSize
|
6391
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6392
6269
|
const {
|
6393
6270
|
themeClasses
|
6394
6271
|
} = provideTheme(props);
|
@@ -6436,11 +6313,6 @@ const VAlert = genericComponent()({
|
|
6436
6313
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6437
6314
|
const hasTitle = !!(slots.title || props.title);
|
6438
6315
|
const hasClose = !!(slots.close || props.closable);
|
6439
|
-
const iconProps = {
|
6440
|
-
density: props.density,
|
6441
|
-
icon: icon.value,
|
6442
|
-
size: iconSize.value
|
6443
|
-
};
|
6444
6316
|
return isActive.value && createVNode(props.tag, {
|
6445
6317
|
"class": normalizeClass(['v-alert', props.border && {
|
6446
6318
|
'v-alert--border': !!props.border,
|
@@ -6458,14 +6330,19 @@ const VAlert = genericComponent()({
|
|
6458
6330
|
}, null), hasPrepend && createElementVNode("div", {
|
6459
6331
|
"key": "prepend",
|
6460
6332
|
"class": "v-alert__prepend"
|
6461
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6462
|
-
"key": "prepend-icon"
|
6463
|
-
|
6333
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6334
|
+
"key": "prepend-icon",
|
6335
|
+
"density": props.density,
|
6336
|
+
"icon": icon.value,
|
6337
|
+
"size": props.prominent ? 44 : 28
|
6338
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6464
6339
|
"key": "prepend-defaults",
|
6465
6340
|
"disabled": !icon.value,
|
6466
6341
|
"defaults": {
|
6467
6342
|
VIcon: {
|
6468
|
-
|
6343
|
+
density: props.density,
|
6344
|
+
icon: icon.value,
|
6345
|
+
size: props.prominent ? 44 : 28
|
6469
6346
|
}
|
6470
6347
|
}
|
6471
6348
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7990,7 +7867,6 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7990
7867
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7991
7868
|
const makeVSlideGroupProps = propsFactory({
|
7992
7869
|
centerActive: Boolean,
|
7993
|
-
contentClass: null,
|
7994
7870
|
direction: {
|
7995
7871
|
type: String,
|
7996
7872
|
default: 'horizontal'
|
@@ -8303,7 +8179,7 @@ const VSlideGroup = genericComponent()({
|
|
8303
8179
|
})]), createElementVNode("div", {
|
8304
8180
|
"key": "container",
|
8305
8181
|
"ref": containerRef,
|
8306
|
-
"class":
|
8182
|
+
"class": "v-slide-group__container",
|
8307
8183
|
"onScroll": onScroll
|
8308
8184
|
}, [createElementVNode("div", {
|
8309
8185
|
"ref": contentRef,
|
@@ -8666,85 +8542,16 @@ const VChip = genericComponent()({
|
|
8666
8542
|
}
|
8667
8543
|
});
|
8668
8544
|
|
8669
|
-
const makeVDividerProps = propsFactory({
|
8670
|
-
color: String,
|
8671
|
-
inset: Boolean,
|
8672
|
-
length: [Number, String],
|
8673
|
-
opacity: [Number, String],
|
8674
|
-
thickness: [Number, String],
|
8675
|
-
vertical: Boolean,
|
8676
|
-
...makeComponentProps(),
|
8677
|
-
...makeThemeProps()
|
8678
|
-
}, 'VDivider');
|
8679
|
-
const VDivider = genericComponent()({
|
8680
|
-
name: 'VDivider',
|
8681
|
-
props: makeVDividerProps(),
|
8682
|
-
setup(props, _ref) {
|
8683
|
-
let {
|
8684
|
-
attrs,
|
8685
|
-
slots
|
8686
|
-
} = _ref;
|
8687
|
-
const {
|
8688
|
-
themeClasses
|
8689
|
-
} = provideTheme(props);
|
8690
|
-
const {
|
8691
|
-
textColorClasses,
|
8692
|
-
textColorStyles
|
8693
|
-
} = useTextColor(() => props.color);
|
8694
|
-
const dividerStyles = computed(() => {
|
8695
|
-
const styles = {};
|
8696
|
-
if (props.length) {
|
8697
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8698
|
-
}
|
8699
|
-
if (props.thickness) {
|
8700
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8701
|
-
}
|
8702
|
-
return styles;
|
8703
|
-
});
|
8704
|
-
useRender(() => {
|
8705
|
-
const divider = createElementVNode("hr", {
|
8706
|
-
"class": normalizeClass([{
|
8707
|
-
'v-divider': true,
|
8708
|
-
'v-divider--inset': props.inset,
|
8709
|
-
'v-divider--vertical': props.vertical
|
8710
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8711
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8712
|
-
'--v-border-opacity': props.opacity
|
8713
|
-
}, props.style]),
|
8714
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8715
|
-
"role": `${attrs.role || 'separator'}`
|
8716
|
-
}, null);
|
8717
|
-
if (!slots.default) return divider;
|
8718
|
-
return createElementVNode("div", {
|
8719
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
8720
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8721
|
-
'v-divider__wrapper--inset': props.inset
|
8722
|
-
}])
|
8723
|
-
}, [divider, createElementVNode("div", {
|
8724
|
-
"class": "v-divider__content"
|
8725
|
-
}, [slots.default()]), divider]);
|
8726
|
-
});
|
8727
|
-
return {};
|
8728
|
-
}
|
8729
|
-
});
|
8730
|
-
|
8731
8545
|
// Utilities
|
8732
8546
|
|
8733
8547
|
// List
|
8734
8548
|
const ListKey = Symbol.for('vuetify:list');
|
8735
8549
|
function createList() {
|
8736
|
-
let {
|
8737
|
-
filterable
|
8738
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8739
|
-
filterable: false
|
8740
|
-
};
|
8741
8550
|
const parent = inject$1(ListKey, {
|
8742
|
-
filterable: false,
|
8743
8551
|
hasPrepend: shallowRef(false),
|
8744
8552
|
updateHasPrepend: () => null
|
8745
8553
|
});
|
8746
8554
|
const data = {
|
8747
|
-
filterable: parent.filterable || filterable,
|
8748
8555
|
hasPrepend: shallowRef(false),
|
8749
8556
|
updateHasPrepend: value => {
|
8750
8557
|
if (value) data.hasPrepend.value = value;
|
@@ -9696,9 +9503,6 @@ const VListItem = genericComponent()({
|
|
9696
9503
|
roundedClasses
|
9697
9504
|
} = useRounded(roundedProps);
|
9698
9505
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9699
|
-
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9700
|
-
keys: [keyCodes.enter]
|
9701
|
-
} : props.ripple);
|
9702
9506
|
const slotProps = computed(() => ({
|
9703
9507
|
isActive: isActive.value,
|
9704
9508
|
select,
|
@@ -9723,9 +9527,8 @@ const VListItem = genericComponent()({
|
|
9723
9527
|
function onKeyDown(e) {
|
9724
9528
|
const target = e.target;
|
9725
9529
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9726
|
-
if (e.key === 'Enter' || e.key === ' '
|
9530
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
9727
9531
|
e.preventDefault();
|
9728
|
-
e.stopPropagation();
|
9729
9532
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9730
9533
|
}
|
9731
9534
|
}
|
@@ -9835,7 +9638,7 @@ const VListItem = genericComponent()({
|
|
9835
9638
|
}), createElementVNode("div", {
|
9836
9639
|
"class": "v-list-item__spacer"
|
9837
9640
|
}, null)])]
|
9838
|
-
}), [[Ripple, isClickable.value &&
|
9641
|
+
}), [[Ripple, isClickable.value && props.ripple]]);
|
9839
9642
|
});
|
9840
9643
|
return {
|
9841
9644
|
activate,
|
@@ -9890,6 +9693,68 @@ const VListSubheader = genericComponent()({
|
|
9890
9693
|
}
|
9891
9694
|
});
|
9892
9695
|
|
9696
|
+
const makeVDividerProps = propsFactory({
|
9697
|
+
color: String,
|
9698
|
+
inset: Boolean,
|
9699
|
+
length: [Number, String],
|
9700
|
+
opacity: [Number, String],
|
9701
|
+
thickness: [Number, String],
|
9702
|
+
vertical: Boolean,
|
9703
|
+
...makeComponentProps(),
|
9704
|
+
...makeThemeProps()
|
9705
|
+
}, 'VDivider');
|
9706
|
+
const VDivider = genericComponent()({
|
9707
|
+
name: 'VDivider',
|
9708
|
+
props: makeVDividerProps(),
|
9709
|
+
setup(props, _ref) {
|
9710
|
+
let {
|
9711
|
+
attrs,
|
9712
|
+
slots
|
9713
|
+
} = _ref;
|
9714
|
+
const {
|
9715
|
+
themeClasses
|
9716
|
+
} = provideTheme(props);
|
9717
|
+
const {
|
9718
|
+
textColorClasses,
|
9719
|
+
textColorStyles
|
9720
|
+
} = useTextColor(() => props.color);
|
9721
|
+
const dividerStyles = computed(() => {
|
9722
|
+
const styles = {};
|
9723
|
+
if (props.length) {
|
9724
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9725
|
+
}
|
9726
|
+
if (props.thickness) {
|
9727
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9728
|
+
}
|
9729
|
+
return styles;
|
9730
|
+
});
|
9731
|
+
useRender(() => {
|
9732
|
+
const divider = createElementVNode("hr", {
|
9733
|
+
"class": normalizeClass([{
|
9734
|
+
'v-divider': true,
|
9735
|
+
'v-divider--inset': props.inset,
|
9736
|
+
'v-divider--vertical': props.vertical
|
9737
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9738
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9739
|
+
'--v-border-opacity': props.opacity
|
9740
|
+
}, props.style]),
|
9741
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9742
|
+
"role": `${attrs.role || 'separator'}`
|
9743
|
+
}, null);
|
9744
|
+
if (!slots.default) return divider;
|
9745
|
+
return createElementVNode("div", {
|
9746
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
9747
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9748
|
+
'v-divider__wrapper--inset': props.inset
|
9749
|
+
}])
|
9750
|
+
}, [divider, createElementVNode("div", {
|
9751
|
+
"class": "v-divider__content"
|
9752
|
+
}, [slots.default()]), divider]);
|
9753
|
+
});
|
9754
|
+
return {};
|
9755
|
+
}
|
9756
|
+
});
|
9757
|
+
|
9893
9758
|
// Types
|
9894
9759
|
|
9895
9760
|
const makeVListChildrenProps = propsFactory({
|
@@ -10159,7 +10024,6 @@ const makeVListProps = propsFactory({
|
|
10159
10024
|
activeClass: String,
|
10160
10025
|
bgColor: String,
|
10161
10026
|
disabled: Boolean,
|
10162
|
-
filterable: Boolean,
|
10163
10027
|
expandIcon: IconValue,
|
10164
10028
|
collapseIcon: IconValue,
|
10165
10029
|
lines: {
|
@@ -10243,9 +10107,7 @@ const VList = genericComponent()({
|
|
10243
10107
|
const activeColor = toRef(() => props.activeColor);
|
10244
10108
|
const baseColor = toRef(() => props.baseColor);
|
10245
10109
|
const color = toRef(() => props.color);
|
10246
|
-
createList(
|
10247
|
-
filterable: props.filterable
|
10248
|
-
});
|
10110
|
+
createList();
|
10249
10111
|
provideDefaults({
|
10250
10112
|
VListGroup: {
|
10251
10113
|
activeColor,
|
@@ -11928,7 +11790,6 @@ const makeVMenuProps = propsFactory({
|
|
11928
11790
|
// disableKeys: Boolean,
|
11929
11791
|
id: String,
|
11930
11792
|
submenu: Boolean,
|
11931
|
-
disableInitialFocus: Boolean,
|
11932
11793
|
...omit(makeVOverlayProps({
|
11933
11794
|
closeDelay: 250,
|
11934
11795
|
closeOnContentClick: true,
|
@@ -12003,7 +11864,7 @@ const VMenu = genericComponent()({
|
|
12003
11864
|
watch(isActive, val => {
|
12004
11865
|
if (val) {
|
12005
11866
|
parent?.register();
|
12006
|
-
if (IN_BROWSER
|
11867
|
+
if (IN_BROWSER) {
|
12007
11868
|
document.addEventListener('focusin', onFocusIn, {
|
12008
11869
|
once: true
|
12009
11870
|
});
|
@@ -12840,12 +12701,7 @@ function useVirtual(props, items) {
|
|
12840
12701
|
}
|
12841
12702
|
function calculateOffset(index) {
|
12842
12703
|
index = clamp(index, 0, items.value.length - 1);
|
12843
|
-
|
12844
|
-
const fraction = index % 1;
|
12845
|
-
const next = whole + 1;
|
12846
|
-
const wholeOffset = offsets[whole] || 0;
|
12847
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12848
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12704
|
+
return offsets[index] || 0;
|
12849
12705
|
}
|
12850
12706
|
function calculateIndex(scrollTop) {
|
12851
12707
|
return binaryClosest(offsets, scrollTop);
|
@@ -13199,7 +13055,6 @@ const makeSelectProps = propsFactory({
|
|
13199
13055
|
},
|
13200
13056
|
openOnClear: Boolean,
|
13201
13057
|
itemColor: String,
|
13202
|
-
noAutoScroll: Boolean,
|
13203
13058
|
...makeItemsProps({
|
13204
13059
|
itemChildren: false
|
13205
13060
|
})
|
@@ -13414,7 +13269,7 @@ const VSelect = genericComponent()({
|
|
13414
13269
|
watch(menu, () => {
|
13415
13270
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13416
13271
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13417
|
-
IN_BROWSER &&
|
13272
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13418
13273
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13419
13274
|
});
|
13420
13275
|
}
|
@@ -13507,22 +13362,6 @@ const VSelect = genericComponent()({
|
|
13507
13362
|
key: item.value,
|
13508
13363
|
onClick: () => select(item, null)
|
13509
13364
|
});
|
13510
|
-
if (item.raw.type === 'divider') {
|
13511
|
-
return slots.divider?.({
|
13512
|
-
props: item.raw,
|
13513
|
-
index
|
13514
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13515
|
-
"key": `divider-${index}`
|
13516
|
-
}), null);
|
13517
|
-
}
|
13518
|
-
if (item.raw.type === 'subheader') {
|
13519
|
-
return slots.subheader?.({
|
13520
|
-
props: item.raw,
|
13521
|
-
index
|
13522
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13523
|
-
"key": `subheader-${index}`
|
13524
|
-
}), null);
|
13525
|
-
}
|
13526
13365
|
return slots.item?.({
|
13527
13366
|
item,
|
13528
13367
|
index,
|
@@ -13683,9 +13522,6 @@ function filterItems(items, query, options) {
|
|
13683
13522
|
let match = -1;
|
13684
13523
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13685
13524
|
if (typeof item === 'object') {
|
13686
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13687
|
-
continue;
|
13688
|
-
}
|
13689
13525
|
const filterKeys = keys || Object.keys(transformed);
|
13690
13526
|
for (const key of filterKeys) {
|
13691
13527
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13888,7 +13724,7 @@ const VAutocomplete = genericComponent()({
|
|
13888
13724
|
menu.value = !menu.value;
|
13889
13725
|
}
|
13890
13726
|
function onListKeydown(e) {
|
13891
|
-
if (
|
13727
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
13892
13728
|
vTextFieldRef.value?.focus();
|
13893
13729
|
}
|
13894
13730
|
}
|
@@ -14093,7 +13929,6 @@ const VAutocomplete = genericComponent()({
|
|
14093
13929
|
}, props.menuProps), {
|
14094
13930
|
default: () => [hasList && createVNode(VList, mergeProps({
|
14095
13931
|
"ref": listRef,
|
14096
|
-
"filterable": true,
|
14097
13932
|
"selected": selectedValues.value,
|
14098
13933
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
14099
13934
|
"onMousedown": e => e.preventDefault(),
|
@@ -14125,22 +13960,6 @@ const VAutocomplete = genericComponent()({
|
|
14125
13960
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
14126
13961
|
onClick: () => select(item, null)
|
14127
13962
|
});
|
14128
|
-
if (item.raw.type === 'divider') {
|
14129
|
-
return slots.divider?.({
|
14130
|
-
props: item.raw,
|
14131
|
-
index
|
14132
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
14133
|
-
"key": `divider-${index}`
|
14134
|
-
}), null);
|
14135
|
-
}
|
14136
|
-
if (item.raw.type === 'subheader') {
|
14137
|
-
return slots.subheader?.({
|
14138
|
-
props: item.raw,
|
14139
|
-
index
|
14140
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
14141
|
-
"key": `subheader-${index}`
|
14142
|
-
}), null);
|
14143
|
-
}
|
14144
13963
|
return slots.item?.({
|
14145
13964
|
item,
|
14146
13965
|
index,
|
@@ -14285,8 +14104,7 @@ const makeVBadgeProps = propsFactory({
|
|
14285
14104
|
...makeThemeProps(),
|
14286
14105
|
...makeTransitionProps({
|
14287
14106
|
transition: 'scale-rotate-transition'
|
14288
|
-
})
|
14289
|
-
...makeDimensionProps()
|
14107
|
+
})
|
14290
14108
|
}, 'VBadge');
|
14291
14109
|
const VBadge = genericComponent()({
|
14292
14110
|
name: 'VBadge',
|
@@ -14316,9 +14134,6 @@ const VBadge = genericComponent()({
|
|
14316
14134
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
14317
14135
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
14318
14136
|
});
|
14319
|
-
const {
|
14320
|
-
dimensionStyles
|
14321
|
-
} = useDimension(props);
|
14322
14137
|
useRender(() => {
|
14323
14138
|
const value = Number(props.content);
|
14324
14139
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -14340,7 +14155,7 @@ const VBadge = genericComponent()({
|
|
14340
14155
|
}, {
|
14341
14156
|
default: () => [withDirectives(createElementVNode("span", mergeProps({
|
14342
14157
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
14343
|
-
"style": [backgroundColorStyles.value, textColorStyles.value,
|
14158
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14344
14159
|
"aria-atomic": "true",
|
14345
14160
|
"aria-label": t(props.label, value),
|
14346
14161
|
"aria-live": "polite",
|
@@ -17749,13 +17564,13 @@ function date(value) {
|
|
17749
17564
|
return null;
|
17750
17565
|
}
|
17751
17566
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17752
|
-
function getWeekdays(locale, firstDayOfWeek
|
17567
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17753
17568
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17754
17569
|
return createRange(7).map(i => {
|
17755
17570
|
const weekday = new Date(sundayJanuarySecond2000);
|
17756
17571
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17757
17572
|
return new Intl.DateTimeFormat(locale, {
|
17758
|
-
weekday:
|
17573
|
+
weekday: 'narrow'
|
17759
17574
|
}).format(weekday);
|
17760
17575
|
});
|
17761
17576
|
}
|
@@ -18219,9 +18034,9 @@ class VuetifyDateAdapter {
|
|
18219
18034
|
getDiff(date, comparing, unit) {
|
18220
18035
|
return getDiff(date, comparing, unit);
|
18221
18036
|
}
|
18222
|
-
getWeekdays(firstDayOfWeek
|
18037
|
+
getWeekdays(firstDayOfWeek) {
|
18223
18038
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
18224
|
-
return getWeekdays(this.locale, firstDay
|
18039
|
+
return getWeekdays(this.locale, firstDay);
|
18225
18040
|
}
|
18226
18041
|
getYear(date) {
|
18227
18042
|
return getYear(date);
|
@@ -18576,7 +18391,6 @@ const VCombobox = genericComponent()({
|
|
18576
18391
|
_search.value = val ?? '';
|
18577
18392
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18578
18393
|
model.value = [transformItem$3(props, val)];
|
18579
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18580
18394
|
}
|
18581
18395
|
if (val && props.multiple && props.delimiters?.length) {
|
18582
18396
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18657,7 +18471,7 @@ const VCombobox = genericComponent()({
|
|
18657
18471
|
menu.value = !menu.value;
|
18658
18472
|
}
|
18659
18473
|
function onListKeydown(e) {
|
18660
|
-
if (
|
18474
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
18661
18475
|
vTextFieldRef.value?.focus();
|
18662
18476
|
}
|
18663
18477
|
}
|
@@ -18862,7 +18676,6 @@ const VCombobox = genericComponent()({
|
|
18862
18676
|
}, props.menuProps), {
|
18863
18677
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18864
18678
|
"ref": listRef,
|
18865
|
-
"filterable": true,
|
18866
18679
|
"selected": selectedValues.value,
|
18867
18680
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18868
18681
|
"onMousedown": e => e.preventDefault(),
|
@@ -18894,22 +18707,6 @@ const VCombobox = genericComponent()({
|
|
18894
18707
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18895
18708
|
onClick: () => select(item, null)
|
18896
18709
|
});
|
18897
|
-
if (item.raw.type === 'divider') {
|
18898
|
-
return slots.divider?.({
|
18899
|
-
props: item.raw,
|
18900
|
-
index
|
18901
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18902
|
-
"key": `divider-${index}`
|
18903
|
-
}), null);
|
18904
|
-
}
|
18905
|
-
if (item.raw.type === 'subheader') {
|
18906
|
-
return slots.subheader?.({
|
18907
|
-
props: item.raw,
|
18908
|
-
index
|
18909
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18910
|
-
"key": `subheader-${index}`
|
18911
|
-
}), null);
|
18912
|
-
}
|
18913
18710
|
return slots.item?.({
|
18914
18711
|
item,
|
18915
18712
|
index,
|
@@ -20792,7 +20589,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20792
20589
|
color: String,
|
20793
20590
|
disableSort: Boolean,
|
20794
20591
|
fixedHeader: Boolean,
|
20795
|
-
lastFixed: Boolean,
|
20796
20592
|
multiSort: Boolean,
|
20797
20593
|
sortAscIcon: {
|
20798
20594
|
type: IconValue,
|
@@ -20839,11 +20635,10 @@ const VDataTableHeaders = genericComponent()({
|
|
20839
20635
|
loaderClasses
|
20840
20636
|
} = useLoader(props);
|
20841
20637
|
function getFixedStyles(column, y) {
|
20842
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20638
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20843
20639
|
return {
|
20844
20640
|
position: 'sticky',
|
20845
|
-
left: column.fixed
|
20846
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20641
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20847
20642
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20848
20643
|
};
|
20849
20644
|
}
|
@@ -21359,18 +21154,11 @@ const VDataTableRows = genericComponent()({
|
|
21359
21154
|
}
|
21360
21155
|
});
|
21361
21156
|
|
21362
|
-
// Types
|
21363
|
-
|
21364
21157
|
const makeVTableProps = propsFactory({
|
21365
21158
|
fixedHeader: Boolean,
|
21366
21159
|
fixedFooter: Boolean,
|
21367
21160
|
height: [Number, String],
|
21368
21161
|
hover: Boolean,
|
21369
|
-
striped: {
|
21370
|
-
type: String,
|
21371
|
-
default: null,
|
21372
|
-
validator: v => ['even', 'odd'].includes(v)
|
21373
|
-
},
|
21374
21162
|
...makeComponentProps(),
|
21375
21163
|
...makeDensityProps(),
|
21376
21164
|
...makeTagProps(),
|
@@ -21397,9 +21185,7 @@ const VTable = genericComponent()({
|
|
21397
21185
|
'v-table--fixed-footer': props.fixedFooter,
|
21398
21186
|
'v-table--has-top': !!slots.top,
|
21399
21187
|
'v-table--has-bottom': !!slots.bottom,
|
21400
|
-
'v-table--hover': props.hover
|
21401
|
-
'v-table--striped-even': props.striped === 'even',
|
21402
|
-
'v-table--striped-odd': props.striped === 'odd'
|
21188
|
+
'v-table--hover': props.hover
|
21403
21189
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21404
21190
|
"style": normalizeStyle(props.style)
|
21405
21191
|
}, {
|
@@ -22574,8 +22360,7 @@ const makeCalendarProps = propsFactory({
|
|
22574
22360
|
firstDayOfWeek: {
|
22575
22361
|
type: [Number, String],
|
22576
22362
|
default: undefined
|
22577
|
-
}
|
22578
|
-
weekdayFormat: String
|
22363
|
+
}
|
22579
22364
|
}, 'calendar');
|
22580
22365
|
function useCalendar(props) {
|
22581
22366
|
const adapter = useDate();
|
@@ -22816,7 +22601,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22816
22601
|
"ref": daysRef,
|
22817
22602
|
"key": daysInMonth.value[0].date?.toString(),
|
22818
22603
|
"class": "v-date-picker-month__days"
|
22819
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22604
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22820
22605
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22821
22606
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22822
22607
|
const slotProps = {
|
@@ -23325,9 +23110,7 @@ const VDatePicker = genericComponent()({
|
|
23325
23110
|
"max": maxDate.value,
|
23326
23111
|
"year": year.value,
|
23327
23112
|
"allowedMonths": allowedMonths
|
23328
|
-
}), {
|
23329
|
-
...pick(slots, ['month'])
|
23330
|
-
}) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
23113
|
+
}), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
23331
23114
|
"key": "date-picker-years"
|
23332
23115
|
}, datePickerYearsProps, {
|
23333
23116
|
"modelValue": year.value,
|
@@ -23335,9 +23118,7 @@ const VDatePicker = genericComponent()({
|
|
23335
23118
|
"min": minDate.value,
|
23336
23119
|
"max": maxDate.value,
|
23337
23120
|
"allowedYears": allowedYears
|
23338
|
-
}), {
|
23339
|
-
...pick(slots, ['year'])
|
23340
|
-
}) : createVNode(VDatePickerMonth, mergeProps({
|
23121
|
+
}), null) : createVNode(VDatePickerMonth, mergeProps({
|
23341
23122
|
"key": "date-picker-month"
|
23342
23123
|
}, datePickerMonthProps, {
|
23343
23124
|
"modelValue": model.value,
|
@@ -23348,9 +23129,7 @@ const VDatePicker = genericComponent()({
|
|
23348
23129
|
"onUpdate:year": [$event => year.value = $event, onUpdateYear],
|
23349
23130
|
"min": minDate.value,
|
23350
23131
|
"max": maxDate.value
|
23351
|
-
}),
|
23352
|
-
...pick(slots, ['day'])
|
23353
|
-
})]
|
23132
|
+
}), null)]
|
23354
23133
|
})]),
|
23355
23134
|
actions: slots.actions
|
23356
23135
|
});
|
@@ -24441,9 +24220,6 @@ const VInfiniteScroll = genericComponent()({
|
|
24441
24220
|
startStatus.value = status;
|
24442
24221
|
} else if (side === 'end') {
|
24443
24222
|
endStatus.value = status;
|
24444
|
-
} else if (side === 'both') {
|
24445
|
-
startStatus.value = status;
|
24446
|
-
endStatus.value = status;
|
24447
24223
|
}
|
24448
24224
|
}
|
24449
24225
|
function getStatus(side) {
|
@@ -24555,32 +24331,6 @@ const VInfiniteScroll = genericComponent()({
|
|
24555
24331
|
}, [renderSide('end', endStatus.value)])]
|
24556
24332
|
});
|
24557
24333
|
});
|
24558
|
-
function reset(side) {
|
24559
|
-
const effectiveSide = side ?? props.side;
|
24560
|
-
setStatus(effectiveSide, 'ok');
|
24561
|
-
nextTick(() => {
|
24562
|
-
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24563
|
-
if (props.mode !== 'manual') {
|
24564
|
-
nextTick(() => {
|
24565
|
-
window.requestAnimationFrame(() => {
|
24566
|
-
window.requestAnimationFrame(() => {
|
24567
|
-
window.requestAnimationFrame(() => {
|
24568
|
-
if (effectiveSide === 'both') {
|
24569
|
-
intersecting('start');
|
24570
|
-
intersecting('end');
|
24571
|
-
} else {
|
24572
|
-
intersecting(effectiveSide);
|
24573
|
-
}
|
24574
|
-
});
|
24575
|
-
});
|
24576
|
-
});
|
24577
|
-
});
|
24578
|
-
}
|
24579
|
-
});
|
24580
|
-
}
|
24581
|
-
return {
|
24582
|
-
reset
|
24583
|
-
};
|
24584
24334
|
}
|
24585
24335
|
});
|
24586
24336
|
|
@@ -24660,47 +24410,8 @@ const VItem = genericComponent()({
|
|
24660
24410
|
}
|
24661
24411
|
});
|
24662
24412
|
|
24663
|
-
|
24664
|
-
|
24665
|
-
...makeComponentProps(),
|
24666
|
-
...makeRoundedProps(),
|
24667
|
-
...makeTagProps({
|
24668
|
-
tag: 'kbd'
|
24669
|
-
}),
|
24670
|
-
...makeThemeProps(),
|
24671
|
-
...makeElevationProps(),
|
24672
|
-
color: String
|
24673
|
-
}, 'VKbd');
|
24674
|
-
const VKbd = genericComponent()({
|
24675
|
-
name: 'VKbd',
|
24676
|
-
props: makeVKbdProps(),
|
24677
|
-
setup(props, _ref) {
|
24678
|
-
let {
|
24679
|
-
slots
|
24680
|
-
} = _ref;
|
24681
|
-
const {
|
24682
|
-
themeClasses
|
24683
|
-
} = provideTheme(props);
|
24684
|
-
const {
|
24685
|
-
borderClasses
|
24686
|
-
} = useBorder(props);
|
24687
|
-
const {
|
24688
|
-
roundedClasses
|
24689
|
-
} = useRounded(props);
|
24690
|
-
const {
|
24691
|
-
backgroundColorClasses,
|
24692
|
-
backgroundColorStyles
|
24693
|
-
} = useBackgroundColor(() => props.color);
|
24694
|
-
const {
|
24695
|
-
elevationClasses
|
24696
|
-
} = useElevation(props);
|
24697
|
-
useRender(() => createVNode(props.tag, {
|
24698
|
-
"class": normalizeClass(['v-kbd', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
24699
|
-
"style": normalizeStyle([backgroundColorStyles.value, props.style])
|
24700
|
-
}, slots));
|
24701
|
-
return {};
|
24702
|
-
}
|
24703
|
-
});
|
24413
|
+
// Styles
|
24414
|
+
const VKbd = createSimpleFunctional('v-kbd', 'kbd');
|
24704
24415
|
|
24705
24416
|
const makeVLayoutProps = propsFactory({
|
24706
24417
|
...makeComponentProps(),
|
@@ -25538,14 +25249,6 @@ const makeVNumberInputProps = propsFactory({
|
|
25538
25249
|
type: Number,
|
25539
25250
|
default: 0
|
25540
25251
|
},
|
25541
|
-
minFractionDigits: {
|
25542
|
-
type: Number,
|
25543
|
-
default: null
|
25544
|
-
},
|
25545
|
-
decimalSeparator: {
|
25546
|
-
type: String,
|
25547
|
-
validator: v => !v || v.length === 1
|
25548
|
-
},
|
25549
25252
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25550
25253
|
}, 'VNumberInput');
|
25551
25254
|
const VNumberInput = genericComponent()({
|
@@ -25571,24 +25274,11 @@ const VNumberInput = genericComponent()({
|
|
25571
25274
|
const form = useForm(props);
|
25572
25275
|
const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
|
25573
25276
|
const isFocused = shallowRef(props.focused);
|
25574
|
-
const {
|
25575
|
-
decimalSeparator: decimalSeparatorFromLocale
|
25576
|
-
} = useLocale();
|
25577
|
-
const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);
|
25578
25277
|
function correctPrecision(val) {
|
25579
25278
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25580
|
-
let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
25581
25279
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25582
|
-
|
25583
|
-
|
25584
|
-
.replace('.', decimalSeparator.value);
|
25585
|
-
}
|
25586
|
-
if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {
|
25587
|
-
return fixed.replace('.', decimalSeparator.value);
|
25588
|
-
}
|
25589
|
-
let [baseDigits, fractionDigits] = fixed.split('.');
|
25590
|
-
fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\d{${props.minFractionDigits}})0`, 'g'), '');
|
25591
|
-
return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);
|
25280
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25281
|
+
: fixed;
|
25592
25282
|
}
|
25593
25283
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25594
25284
|
const _inputText = shallowRef(null);
|
@@ -25605,11 +25295,8 @@ const VNumberInput = genericComponent()({
|
|
25605
25295
|
if (val === null || val === '') {
|
25606
25296
|
model.value = null;
|
25607
25297
|
_inputText.value = null;
|
25608
|
-
|
25609
|
-
|
25610
|
-
const parsedValue = Number(val.replace(decimalSeparator.value, '.'));
|
25611
|
-
if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {
|
25612
|
-
model.value = parsedValue;
|
25298
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
25299
|
+
model.value = Number(val);
|
25613
25300
|
_inputText.value = val;
|
25614
25301
|
}
|
25615
25302
|
}
|
@@ -25646,7 +25333,6 @@ const VNumberInput = genericComponent()({
|
|
25646
25333
|
}
|
25647
25334
|
};
|
25648
25335
|
watch(() => props.precision, () => formatInputValue());
|
25649
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
25650
25336
|
onMounted(() => {
|
25651
25337
|
clampModel();
|
25652
25338
|
});
|
@@ -25680,24 +25366,24 @@ const VNumberInput = genericComponent()({
|
|
25680
25366
|
selectionEnd
|
25681
25367
|
} = inputElement ?? {};
|
25682
25368
|
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
25683
|
-
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision
|
25369
|
+
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
|
25684
25370
|
|
25685
|
-
//
|
25686
|
-
//
|
25687
|
-
//
|
25688
|
-
if (
|
25371
|
+
// Only numbers, "-", "." are allowed
|
25372
|
+
// AND "-", "." are allowed only once
|
25373
|
+
// AND "-" is only allowed at the start
|
25374
|
+
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
25689
25375
|
e.preventDefault();
|
25690
25376
|
inputElement.value = potentialNewNumber;
|
25691
25377
|
}
|
25692
25378
|
if (props.precision == null) return;
|
25693
25379
|
|
25694
25380
|
// Ignore decimal digits above precision limit
|
25695
|
-
if (potentialNewInputVal.split(
|
25381
|
+
if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
|
25696
25382
|
e.preventDefault();
|
25697
25383
|
inputElement.value = potentialNewNumber;
|
25698
25384
|
}
|
25699
25385
|
// Ignore decimal separator when precision = 0
|
25700
|
-
if (props.precision === 0 && potentialNewInputVal.includes(
|
25386
|
+
if (props.precision === 0 && potentialNewInputVal.includes('.')) {
|
25701
25387
|
e.preventDefault();
|
25702
25388
|
inputElement.value = potentialNewNumber;
|
25703
25389
|
}
|
@@ -25749,16 +25435,19 @@ const VNumberInput = genericComponent()({
|
|
25749
25435
|
if (controlsDisabled.value) return;
|
25750
25436
|
if (!vTextFieldRef.value) return;
|
25751
25437
|
const actualText = vTextFieldRef.value.value;
|
25752
|
-
|
25753
|
-
|
25754
|
-
inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));
|
25438
|
+
if (actualText && !isNaN(Number(actualText))) {
|
25439
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
25755
25440
|
} else {
|
25756
25441
|
inputText.value = null;
|
25757
25442
|
}
|
25758
25443
|
}
|
25759
25444
|
function formatInputValue() {
|
25760
25445
|
if (controlsDisabled.value) return;
|
25761
|
-
|
25446
|
+
if (model.value === null || isNaN(model.value)) {
|
25447
|
+
inputText.value = null;
|
25448
|
+
return;
|
25449
|
+
}
|
25450
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25762
25451
|
}
|
25763
25452
|
function trimDecimalZeros() {
|
25764
25453
|
if (controlsDisabled.value) return;
|
@@ -25766,7 +25455,7 @@ const VNumberInput = genericComponent()({
|
|
25766
25455
|
inputText.value = null;
|
25767
25456
|
return;
|
25768
25457
|
}
|
25769
|
-
inputText.value = model.value.toString()
|
25458
|
+
inputText.value = model.value.toString();
|
25770
25459
|
}
|
25771
25460
|
function onFocus() {
|
25772
25461
|
trimDecimalZeros();
|
@@ -26033,10 +25722,9 @@ const VOtpInput = genericComponent()({
|
|
26033
25722
|
e.preventDefault();
|
26034
25723
|
e.stopPropagation();
|
26035
25724
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
26036
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
26037
25725
|
if (isValidNumber(clipboardText)) return;
|
26038
25726
|
model.value = clipboardText.split('');
|
26039
|
-
inputRef.value?.[
|
25727
|
+
inputRef.value?.[index].blur();
|
26040
25728
|
}
|
26041
25729
|
function reset() {
|
26042
25730
|
model.value = [];
|
@@ -29820,7 +29508,7 @@ function createVuetify$1() {
|
|
29820
29508
|
};
|
29821
29509
|
});
|
29822
29510
|
}
|
29823
|
-
const version$1 = "3.8.10-
|
29511
|
+
const version$1 = "3.8.10-master.2025-06-18";
|
29824
29512
|
createVuetify$1.version = version$1;
|
29825
29513
|
|
29826
29514
|
// Vue's inject() can only be used in setup
|
@@ -29845,7 +29533,7 @@ const createVuetify = function () {
|
|
29845
29533
|
...options
|
29846
29534
|
});
|
29847
29535
|
};
|
29848
|
-
const version = "3.8.10-
|
29536
|
+
const version = "3.8.10-master.2025-06-18";
|
29849
29537
|
createVuetify.version = version;
|
29850
29538
|
|
29851
29539
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|