@vuetify/nightly 3.8.9-dev.2025-06-13 → 3.8.9-master.2025-06-12
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 +6 -45
- package/dist/json/attributes.json +3714 -4110
- package/dist/json/importMap-labs.json +24 -28
- package/dist/json/importMap.json +154 -154
- package/dist/json/tags.json +2 -106
- package/dist/json/web-types.json +6783 -8232
- package/dist/vuetify-labs.cjs +177 -730
- package/dist/vuetify-labs.css +4085 -4128
- package/dist/vuetify-labs.d.ts +2938 -10254
- package/dist/vuetify-labs.esm.js +178 -731
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +177 -730
- 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 +3607 -3650
- package/dist/vuetify.d.ts +2085 -2782
- 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 +1229 -1251
- 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.css +2 -0
- package/lib/components/VList/VListItem.d.ts +10 -23
- package/lib/components/VList/VListItem.js +3 -7
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListItem.sass +2 -0
- package/lib/components/VList/_variables.scss +1 -0
- 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.css +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.d.ts +0 -13
- package/lib/components/VSpeedDial/VSpeedDial.sass +3 -1
- 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 -6
- 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 +64 -83
- 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 +0 -13
- 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.9-
|
2
|
+
* Vuetify v3.8.9-master.2025-06-12
|
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
|
}
|
@@ -2667,10 +2661,6 @@ function createNumberFunction(current, fallback) {
|
|
2667
2661
|
return numberFormat.format(value);
|
2668
2662
|
};
|
2669
2663
|
}
|
2670
|
-
function inferDecimalSeparator(current, fallback) {
|
2671
|
-
const format = createNumberFunction(current, fallback);
|
2672
|
-
return format(0.1).includes(',') ? ',' : '.';
|
2673
|
-
}
|
2674
2664
|
function useProvided(props, prop, provided) {
|
2675
2665
|
const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);
|
2676
2666
|
|
@@ -2693,7 +2683,6 @@ function createProvideFunction(state) {
|
|
2693
2683
|
current,
|
2694
2684
|
fallback,
|
2695
2685
|
messages,
|
2696
|
-
decimalSeparator: toRef(() => inferDecimalSeparator(current, fallback)),
|
2697
2686
|
t: createTranslateFunction(current, fallback, messages),
|
2698
2687
|
n: createNumberFunction(current, fallback),
|
2699
2688
|
provide: createProvideFunction({
|
@@ -2716,7 +2705,6 @@ function createVuetifyAdapter(options) {
|
|
2716
2705
|
current,
|
2717
2706
|
fallback,
|
2718
2707
|
messages,
|
2719
|
-
decimalSeparator: toRef(() => options?.decimalSeparator ?? inferDecimalSeparator(current, fallback)),
|
2720
2708
|
t: createTranslateFunction(current, fallback, messages),
|
2721
2709
|
n: createNumberFunction(current, fallback),
|
2722
2710
|
provide: createProvideFunction({
|
@@ -2843,7 +2831,6 @@ const makeThemeProps = propsFactory({
|
|
2843
2831
|
function genDefaults$1() {
|
2844
2832
|
return {
|
2845
2833
|
defaultTheme: 'light',
|
2846
|
-
prefix: 'v-',
|
2847
2834
|
variations: {
|
2848
2835
|
colors: [],
|
2849
2836
|
lighten: 0,
|
@@ -2881,8 +2868,8 @@ function genDefaults$1() {
|
|
2881
2868
|
'activated-opacity': 0.12,
|
2882
2869
|
'pressed-opacity': 0.12,
|
2883
2870
|
'dragged-opacity': 0.08,
|
2884
|
-
'theme-kbd': '#
|
2885
|
-
'theme-on-kbd': '#
|
2871
|
+
'theme-kbd': '#212529',
|
2872
|
+
'theme-on-kbd': '#FFFFFF',
|
2886
2873
|
'theme-code': '#F5F5F5',
|
2887
2874
|
'theme-on-code': '#000000'
|
2888
2875
|
}
|
@@ -2918,17 +2905,14 @@ function genDefaults$1() {
|
|
2918
2905
|
'activated-opacity': 0.12,
|
2919
2906
|
'pressed-opacity': 0.16,
|
2920
2907
|
'dragged-opacity': 0.08,
|
2921
|
-
'theme-kbd': '#
|
2908
|
+
'theme-kbd': '#212529',
|
2922
2909
|
'theme-on-kbd': '#FFFFFF',
|
2923
2910
|
'theme-code': '#343434',
|
2924
2911
|
'theme-on-code': '#CCCCCC'
|
2925
2912
|
}
|
2926
2913
|
}
|
2927
2914
|
},
|
2928
|
-
stylesheetId: 'vuetify-theme-stylesheet'
|
2929
|
-
scoped: false,
|
2930
|
-
unimportant: false,
|
2931
|
-
utilities: true
|
2915
|
+
stylesheetId: 'vuetify-theme-stylesheet'
|
2932
2916
|
};
|
2933
2917
|
}
|
2934
2918
|
function parseThemeOptions() {
|
@@ -2951,21 +2935,21 @@ function parseThemeOptions() {
|
|
2951
2935
|
function createCssClass(lines, selector, content, scope) {
|
2952
2936
|
lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
|
2953
2937
|
}
|
2954
|
-
function genCssVariables(theme
|
2938
|
+
function genCssVariables(theme) {
|
2955
2939
|
const lightOverlay = theme.dark ? 2 : 1;
|
2956
2940
|
const darkOverlay = theme.dark ? 1 : 2;
|
2957
2941
|
const variables = [];
|
2958
2942
|
for (const [key, value] of Object.entries(theme.colors)) {
|
2959
2943
|
const rgb = parseColor(value);
|
2960
|
-
variables.push(
|
2944
|
+
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
2961
2945
|
if (!key.startsWith('on-')) {
|
2962
|
-
variables.push(
|
2946
|
+
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
2963
2947
|
}
|
2964
2948
|
}
|
2965
2949
|
for (const [key, value] of Object.entries(theme.variables)) {
|
2966
2950
|
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
2967
2951
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
2968
|
-
variables.push(
|
2952
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
2969
2953
|
}
|
2970
2954
|
return variables;
|
2971
2955
|
}
|
@@ -3009,8 +2993,7 @@ function getScopedSelector(selector, scope) {
|
|
3009
2993
|
const scopeSelector = `:where(${scope})`;
|
3010
2994
|
return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
|
3011
2995
|
}
|
3012
|
-
function upsertStyles(
|
3013
|
-
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
2996
|
+
function upsertStyles(styleEl, styles) {
|
3014
2997
|
if (!styleEl) return;
|
3015
2998
|
styleEl.innerHTML = styles;
|
3016
2999
|
}
|
@@ -3030,17 +3013,8 @@ function getOrCreateStyleElement(id, cspNonce) {
|
|
3030
3013
|
// Composables
|
3031
3014
|
function createTheme(options) {
|
3032
3015
|
const parsedOptions = parseThemeOptions(options);
|
3033
|
-
const
|
3016
|
+
const name = shallowRef(parsedOptions.defaultTheme);
|
3034
3017
|
const themes = ref(parsedOptions.themes);
|
3035
|
-
const systemName = shallowRef('light');
|
3036
|
-
const name = computed({
|
3037
|
-
get() {
|
3038
|
-
return _name.value === 'system' ? systemName.value : _name.value;
|
3039
|
-
},
|
3040
|
-
set(val) {
|
3041
|
-
_name.value = val;
|
3042
|
-
}
|
3043
|
-
});
|
3044
3018
|
const computedThemes = computed(() => {
|
3045
3019
|
const acc = {};
|
3046
3020
|
for (const [name, original] of Object.entries(themes.value)) {
|
@@ -3061,49 +3035,28 @@ function createTheme(options) {
|
|
3061
3035
|
const current = toRef(() => computedThemes.value[name.value]);
|
3062
3036
|
const styles = computed(() => {
|
3063
3037
|
const lines = [];
|
3064
|
-
const important = parsedOptions.unimportant ? '' : ' !important';
|
3065
|
-
const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
|
3066
3038
|
if (current.value?.dark) {
|
3067
3039
|
createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
|
3068
3040
|
}
|
3069
|
-
createCssClass(lines, ':root', genCssVariables(current.value
|
3041
|
+
createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
|
3070
3042
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
3071
|
-
createCssClass(lines,
|
3072
|
-
}
|
3073
|
-
|
3074
|
-
|
3075
|
-
|
3076
|
-
|
3077
|
-
|
3078
|
-
|
3079
|
-
|
3080
|
-
}
|
3081
|
-
|
3082
|
-
|
3083
|
-
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
3084
|
-
}
|
3043
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
|
3044
|
+
}
|
3045
|
+
const bgLines = [];
|
3046
|
+
const fgLines = [];
|
3047
|
+
const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
|
3048
|
+
for (const key of colors) {
|
3049
|
+
if (key.startsWith('on-')) {
|
3050
|
+
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3051
|
+
} else {
|
3052
|
+
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);
|
3053
|
+
createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
|
3054
|
+
createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
|
3085
3055
|
}
|
3086
|
-
lines.push(...bgLines, ...fgLines);
|
3087
3056
|
}
|
3057
|
+
lines.push(...bgLines, ...fgLines);
|
3088
3058
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
3089
3059
|
});
|
3090
|
-
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
|
3091
|
-
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
3092
|
-
if (SUPPORTS_MATCH_MEDIA) {
|
3093
|
-
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
3094
|
-
function updateSystemName() {
|
3095
|
-
systemName.value = media.matches ? 'dark' : 'light';
|
3096
|
-
}
|
3097
|
-
updateSystemName();
|
3098
|
-
media.addEventListener('change', updateSystemName, {
|
3099
|
-
passive: true
|
3100
|
-
});
|
3101
|
-
if (getCurrentScope()) {
|
3102
|
-
onScopeDispose(() => {
|
3103
|
-
media.removeEventListener('change', updateSystemName);
|
3104
|
-
});
|
3105
|
-
}
|
3106
|
-
}
|
3107
3060
|
function install(app) {
|
3108
3061
|
if (parsedOptions.isDisabled) return;
|
3109
3062
|
const head = app._context.provides.usehead;
|
@@ -3141,55 +3094,22 @@ function createTheme(options) {
|
|
3141
3094
|
updateStyles();
|
3142
3095
|
}
|
3143
3096
|
function updateStyles() {
|
3144
|
-
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
3097
|
+
upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
|
3145
3098
|
}
|
3146
3099
|
}
|
3147
3100
|
}
|
3148
|
-
|
3149
|
-
if (!themeNames.value.includes(themeName)) {
|
3150
|
-
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
3151
|
-
return;
|
3152
|
-
}
|
3153
|
-
name.value = themeName;
|
3154
|
-
}
|
3155
|
-
function cycle() {
|
3156
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
|
3157
|
-
const currentIndex = themeArray.indexOf(name.value);
|
3158
|
-
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
3159
|
-
change(themeArray[nextIndex]);
|
3160
|
-
}
|
3161
|
-
function toggle() {
|
3162
|
-
let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
|
3163
|
-
cycle(themeArray);
|
3164
|
-
}
|
3165
|
-
const globalName = new Proxy(name, {
|
3166
|
-
get(target, prop) {
|
3167
|
-
return target[prop];
|
3168
|
-
},
|
3169
|
-
set(target, prop, val) {
|
3170
|
-
if (prop === 'value') {
|
3171
|
-
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
3172
|
-
}
|
3173
|
-
// @ts-expect-error
|
3174
|
-
target[prop] = val;
|
3175
|
-
return true;
|
3176
|
-
}
|
3177
|
-
});
|
3101
|
+
const themeClasses = toRef(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
|
3178
3102
|
return {
|
3179
3103
|
install,
|
3180
|
-
change,
|
3181
|
-
cycle,
|
3182
|
-
toggle,
|
3183
3104
|
isDisabled: parsedOptions.isDisabled,
|
3184
3105
|
name,
|
3185
3106
|
themes,
|
3186
3107
|
current,
|
3187
3108
|
computedThemes,
|
3188
|
-
prefix: parsedOptions.prefix,
|
3189
3109
|
themeClasses,
|
3190
3110
|
styles,
|
3191
3111
|
global: {
|
3192
|
-
name
|
3112
|
+
name,
|
3193
3113
|
current
|
3194
3114
|
}
|
3195
3115
|
};
|
@@ -3200,7 +3120,7 @@ function provideTheme(props) {
|
|
3200
3120
|
if (!theme) throw new Error('Could not find Vuetify theme injection');
|
3201
3121
|
const name = toRef(() => props.theme ?? theme.name.value);
|
3202
3122
|
const current = toRef(() => theme.themes.value[name.value]);
|
3203
|
-
const themeClasses = toRef(() => theme.isDisabled ? undefined :
|
3123
|
+
const themeClasses = toRef(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
|
3204
3124
|
const newTheme = {
|
3205
3125
|
...theme,
|
3206
3126
|
name,
|
@@ -4304,10 +4224,7 @@ const makeVToolbarProps = propsFactory({
|
|
4304
4224
|
default: 'default',
|
4305
4225
|
validator: v => allowedDensities$1.includes(v)
|
4306
4226
|
},
|
4307
|
-
extended:
|
4308
|
-
type: Boolean,
|
4309
|
-
default: null
|
4310
|
-
},
|
4227
|
+
extended: Boolean,
|
4311
4228
|
extensionHeight: {
|
4312
4229
|
type: [Number, String],
|
4313
4230
|
default: 48
|
@@ -4355,7 +4272,7 @@ const VToolbar = genericComponent()({
|
|
4355
4272
|
const {
|
4356
4273
|
rtlClasses
|
4357
4274
|
} = useRtl();
|
4358
|
-
const isExtended = shallowRef(props.extended
|
4275
|
+
const isExtended = shallowRef(!!(props.extended || slots.extension?.()));
|
4359
4276
|
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));
|
4360
4277
|
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);
|
4361
4278
|
provideDefaults({
|
@@ -4367,7 +4284,7 @@ const VToolbar = genericComponent()({
|
|
4367
4284
|
const hasTitle = !!(props.title || slots.title);
|
4368
4285
|
const hasImage = !!(slots.image || props.image);
|
4369
4286
|
const extension = slots.extension?.();
|
4370
|
-
isExtended.value = props.extended
|
4287
|
+
isExtended.value = !!(props.extended || extension);
|
4371
4288
|
return createVNode(props.tag, {
|
4372
4289
|
"class": normalizeClass(['v-toolbar', {
|
4373
4290
|
'v-toolbar--absolute': props.absolute,
|
@@ -4750,15 +4667,9 @@ function useVariant(props) {
|
|
4750
4667
|
};
|
4751
4668
|
}
|
4752
4669
|
|
4753
|
-
// Types
|
4754
|
-
|
4755
4670
|
const makeVBtnGroupProps = propsFactory({
|
4756
4671
|
baseColor: String,
|
4757
4672
|
divided: Boolean,
|
4758
|
-
direction: {
|
4759
|
-
type: String,
|
4760
|
-
default: 'horizontal'
|
4761
|
-
},
|
4762
4673
|
...makeBorderProps(),
|
4763
4674
|
...makeComponentProps(),
|
4764
4675
|
...makeDensityProps(),
|
@@ -4792,7 +4703,7 @@ const VBtnGroup = genericComponent()({
|
|
4792
4703
|
} = useRounded(props);
|
4793
4704
|
provideDefaults({
|
4794
4705
|
VBtn: {
|
4795
|
-
height:
|
4706
|
+
height: 'auto',
|
4796
4707
|
baseColor: toRef(() => props.baseColor),
|
4797
4708
|
color: toRef(() => props.color),
|
4798
4709
|
density: toRef(() => props.density),
|
@@ -4802,7 +4713,7 @@ const VBtnGroup = genericComponent()({
|
|
4802
4713
|
});
|
4803
4714
|
useRender(() => {
|
4804
4715
|
return createVNode(props.tag, {
|
4805
|
-
"class": normalizeClass(['v-btn-group',
|
4716
|
+
"class": normalizeClass(['v-btn-group', {
|
4806
4717
|
'v-btn-group--divided': props.divided
|
4807
4718
|
}, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
4808
4719
|
"style": normalizeStyle(props.style)
|
@@ -5925,8 +5836,8 @@ function rippleCancelShow(e) {
|
|
5925
5836
|
window.clearTimeout(element._ripple.showTimer);
|
5926
5837
|
}
|
5927
5838
|
let keyboardRipple = false;
|
5928
|
-
function keyboardRippleShow(e
|
5929
|
-
if (!keyboardRipple &&
|
5839
|
+
function keyboardRippleShow(e) {
|
5840
|
+
if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
|
5930
5841
|
keyboardRipple = true;
|
5931
5842
|
rippleShow(e);
|
5932
5843
|
}
|
@@ -5954,12 +5865,9 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5954
5865
|
el._ripple.enabled = enabled;
|
5955
5866
|
el._ripple.centered = modifiers.center;
|
5956
5867
|
el._ripple.circle = modifiers.circle;
|
5957
|
-
|
5958
|
-
|
5959
|
-
el._ripple.class = bindingValue.class;
|
5868
|
+
if (isObject(value) && value.class) {
|
5869
|
+
el._ripple.class = value.class;
|
5960
5870
|
}
|
5961
|
-
const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
|
5962
|
-
el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
|
5963
5871
|
if (enabled && !wasEnabled) {
|
5964
5872
|
if (modifiers.stop) {
|
5965
5873
|
el.addEventListener('touchstart', rippleStop, {
|
@@ -5981,7 +5889,7 @@ function updateRipple(el, binding, wasEnabled) {
|
|
5981
5889
|
el.addEventListener('mousedown', rippleShow);
|
5982
5890
|
el.addEventListener('mouseup', rippleHide);
|
5983
5891
|
el.addEventListener('mouseleave', rippleHide);
|
5984
|
-
el.addEventListener('keydown',
|
5892
|
+
el.addEventListener('keydown', keyboardRippleShow);
|
5985
5893
|
el.addEventListener('keyup', keyboardRippleHide);
|
5986
5894
|
el.addEventListener('blur', focusRippleHide);
|
5987
5895
|
|
@@ -6001,9 +5909,7 @@ function removeListeners(el) {
|
|
6001
5909
|
el.removeEventListener('touchcancel', rippleHide);
|
6002
5910
|
el.removeEventListener('mouseup', rippleHide);
|
6003
5911
|
el.removeEventListener('mouseleave', rippleHide);
|
6004
|
-
|
6005
|
-
el.removeEventListener('keydown', el._ripple.keyDownHandler);
|
6006
|
-
}
|
5912
|
+
el.removeEventListener('keydown', keyboardRippleShow);
|
6007
5913
|
el.removeEventListener('keyup', keyboardRippleHide);
|
6008
5914
|
el.removeEventListener('dragstart', rippleHide);
|
6009
5915
|
el.removeEventListener('blur', focusRippleHide);
|
@@ -6012,8 +5918,8 @@ function mounted$4(el, binding) {
|
|
6012
5918
|
updateRipple(el, binding, false);
|
6013
5919
|
}
|
6014
5920
|
function unmounted$4(el) {
|
6015
|
-
removeListeners(el);
|
6016
5921
|
delete el._ripple;
|
5922
|
+
removeListeners(el);
|
6017
5923
|
}
|
6018
5924
|
function updated$1(el, binding) {
|
6019
5925
|
if (binding.value === binding.oldValue) {
|
@@ -6286,31 +6192,6 @@ const VAppBarTitle = genericComponent()({
|
|
6286
6192
|
// Utilities
|
6287
6193
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
6288
6194
|
|
6289
|
-
// Utilities
|
6290
|
-
|
6291
|
-
// Types
|
6292
|
-
|
6293
|
-
// Types
|
6294
|
-
|
6295
|
-
// Composables
|
6296
|
-
const makeIconSizeProps = propsFactory({
|
6297
|
-
iconSize: [Number, String],
|
6298
|
-
iconSizes: {
|
6299
|
-
type: Array,
|
6300
|
-
default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
|
6301
|
-
}
|
6302
|
-
}, 'iconSize');
|
6303
|
-
function useIconSizes(props, fallback) {
|
6304
|
-
const iconSize = computed(() => {
|
6305
|
-
const iconSizeMap = new Map(props.iconSizes);
|
6306
|
-
const _iconSize = props.iconSize ?? fallback() ?? 'default';
|
6307
|
-
return iconSizeMap.has(_iconSize) ? iconSizeMap.get(_iconSize) : _iconSize;
|
6308
|
-
});
|
6309
|
-
return {
|
6310
|
-
iconSize
|
6311
|
-
};
|
6312
|
-
}
|
6313
|
-
|
6314
6195
|
// Types
|
6315
6196
|
|
6316
6197
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
@@ -6350,7 +6231,6 @@ const makeVAlertProps = propsFactory({
|
|
6350
6231
|
...makeDensityProps(),
|
6351
6232
|
...makeDimensionProps(),
|
6352
6233
|
...makeElevationProps(),
|
6353
|
-
...makeIconSizeProps(),
|
6354
6234
|
...makeLocationProps(),
|
6355
6235
|
...makePositionProps(),
|
6356
6236
|
...makeRoundedProps(),
|
@@ -6378,9 +6258,6 @@ const VAlert = genericComponent()({
|
|
6378
6258
|
if (!props.type) return props.icon;
|
6379
6259
|
return props.icon ?? `$${props.type}`;
|
6380
6260
|
});
|
6381
|
-
const {
|
6382
|
-
iconSize
|
6383
|
-
} = useIconSizes(props, () => props.prominent ? 44 : 28);
|
6384
6261
|
const {
|
6385
6262
|
themeClasses
|
6386
6263
|
} = provideTheme(props);
|
@@ -6428,11 +6305,6 @@ const VAlert = genericComponent()({
|
|
6428
6305
|
const hasPrepend = !!(slots.prepend || icon.value);
|
6429
6306
|
const hasTitle = !!(slots.title || props.title);
|
6430
6307
|
const hasClose = !!(slots.close || props.closable);
|
6431
|
-
const iconProps = {
|
6432
|
-
density: props.density,
|
6433
|
-
icon: icon.value,
|
6434
|
-
size: iconSize.value
|
6435
|
-
};
|
6436
6308
|
return isActive.value && createVNode(props.tag, {
|
6437
6309
|
"class": normalizeClass(['v-alert', props.border && {
|
6438
6310
|
'v-alert--border': !!props.border,
|
@@ -6450,14 +6322,19 @@ const VAlert = genericComponent()({
|
|
6450
6322
|
}, null), hasPrepend && createElementVNode("div", {
|
6451
6323
|
"key": "prepend",
|
6452
6324
|
"class": "v-alert__prepend"
|
6453
|
-
}, [!slots.prepend ? createVNode(VIcon,
|
6454
|
-
"key": "prepend-icon"
|
6455
|
-
|
6325
|
+
}, [!slots.prepend ? createVNode(VIcon, {
|
6326
|
+
"key": "prepend-icon",
|
6327
|
+
"density": props.density,
|
6328
|
+
"icon": icon.value,
|
6329
|
+
"size": props.prominent ? 44 : 28
|
6330
|
+
}, null) : createVNode(VDefaultsProvider, {
|
6456
6331
|
"key": "prepend-defaults",
|
6457
6332
|
"disabled": !icon.value,
|
6458
6333
|
"defaults": {
|
6459
6334
|
VIcon: {
|
6460
|
-
|
6335
|
+
density: props.density,
|
6336
|
+
icon: icon.value,
|
6337
|
+
size: props.prominent ? 44 : 28
|
6461
6338
|
}
|
6462
6339
|
}
|
6463
6340
|
}, slots.prepend)]), createElementVNode("div", {
|
@@ -7982,7 +7859,6 @@ function getOffsetPosition(isHorizontal, element) {
|
|
7982
7859
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
7983
7860
|
const makeVSlideGroupProps = propsFactory({
|
7984
7861
|
centerActive: Boolean,
|
7985
|
-
contentClass: null,
|
7986
7862
|
direction: {
|
7987
7863
|
type: String,
|
7988
7864
|
default: 'horizontal'
|
@@ -8295,7 +8171,7 @@ const VSlideGroup = genericComponent()({
|
|
8295
8171
|
})]), createElementVNode("div", {
|
8296
8172
|
"key": "container",
|
8297
8173
|
"ref": containerRef,
|
8298
|
-
"class":
|
8174
|
+
"class": "v-slide-group__container",
|
8299
8175
|
"onScroll": onScroll
|
8300
8176
|
}, [createElementVNode("div", {
|
8301
8177
|
"ref": contentRef,
|
@@ -8658,85 +8534,16 @@ const VChip = genericComponent()({
|
|
8658
8534
|
}
|
8659
8535
|
});
|
8660
8536
|
|
8661
|
-
const makeVDividerProps = propsFactory({
|
8662
|
-
color: String,
|
8663
|
-
inset: Boolean,
|
8664
|
-
length: [Number, String],
|
8665
|
-
opacity: [Number, String],
|
8666
|
-
thickness: [Number, String],
|
8667
|
-
vertical: Boolean,
|
8668
|
-
...makeComponentProps(),
|
8669
|
-
...makeThemeProps()
|
8670
|
-
}, 'VDivider');
|
8671
|
-
const VDivider = genericComponent()({
|
8672
|
-
name: 'VDivider',
|
8673
|
-
props: makeVDividerProps(),
|
8674
|
-
setup(props, _ref) {
|
8675
|
-
let {
|
8676
|
-
attrs,
|
8677
|
-
slots
|
8678
|
-
} = _ref;
|
8679
|
-
const {
|
8680
|
-
themeClasses
|
8681
|
-
} = provideTheme(props);
|
8682
|
-
const {
|
8683
|
-
textColorClasses,
|
8684
|
-
textColorStyles
|
8685
|
-
} = useTextColor(() => props.color);
|
8686
|
-
const dividerStyles = computed(() => {
|
8687
|
-
const styles = {};
|
8688
|
-
if (props.length) {
|
8689
|
-
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
8690
|
-
}
|
8691
|
-
if (props.thickness) {
|
8692
|
-
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
8693
|
-
}
|
8694
|
-
return styles;
|
8695
|
-
});
|
8696
|
-
useRender(() => {
|
8697
|
-
const divider = createElementVNode("hr", {
|
8698
|
-
"class": normalizeClass([{
|
8699
|
-
'v-divider': true,
|
8700
|
-
'v-divider--inset': props.inset,
|
8701
|
-
'v-divider--vertical': props.vertical
|
8702
|
-
}, themeClasses.value, textColorClasses.value, props.class]),
|
8703
|
-
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
8704
|
-
'--v-border-opacity': props.opacity
|
8705
|
-
}, props.style]),
|
8706
|
-
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
8707
|
-
"role": `${attrs.role || 'separator'}`
|
8708
|
-
}, null);
|
8709
|
-
if (!slots.default) return divider;
|
8710
|
-
return createElementVNode("div", {
|
8711
|
-
"class": normalizeClass(['v-divider__wrapper', {
|
8712
|
-
'v-divider__wrapper--vertical': props.vertical,
|
8713
|
-
'v-divider__wrapper--inset': props.inset
|
8714
|
-
}])
|
8715
|
-
}, [divider, createElementVNode("div", {
|
8716
|
-
"class": "v-divider__content"
|
8717
|
-
}, [slots.default()]), divider]);
|
8718
|
-
});
|
8719
|
-
return {};
|
8720
|
-
}
|
8721
|
-
});
|
8722
|
-
|
8723
8537
|
// Utilities
|
8724
8538
|
|
8725
8539
|
// List
|
8726
8540
|
const ListKey = Symbol.for('vuetify:list');
|
8727
8541
|
function createList() {
|
8728
|
-
let {
|
8729
|
-
filterable
|
8730
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
8731
|
-
filterable: false
|
8732
|
-
};
|
8733
8542
|
const parent = inject$1(ListKey, {
|
8734
|
-
filterable: false,
|
8735
8543
|
hasPrepend: shallowRef(false),
|
8736
8544
|
updateHasPrepend: () => null
|
8737
8545
|
});
|
8738
8546
|
const data = {
|
8739
|
-
filterable: parent.filterable || filterable,
|
8740
8547
|
hasPrepend: shallowRef(false),
|
8741
8548
|
updateHasPrepend: value => {
|
8742
8549
|
if (value) data.hasPrepend.value = value;
|
@@ -9688,9 +9495,6 @@ const VListItem = genericComponent()({
|
|
9688
9495
|
roundedClasses
|
9689
9496
|
} = useRounded(roundedProps);
|
9690
9497
|
const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
9691
|
-
const rippleOptions = toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
|
9692
|
-
keys: [keyCodes.enter]
|
9693
|
-
} : props.ripple);
|
9694
9498
|
const slotProps = computed(() => ({
|
9695
9499
|
isActive: isActive.value,
|
9696
9500
|
select,
|
@@ -9715,9 +9519,8 @@ const VListItem = genericComponent()({
|
|
9715
9519
|
function onKeyDown(e) {
|
9716
9520
|
const target = e.target;
|
9717
9521
|
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
9718
|
-
if (e.key === 'Enter' || e.key === ' '
|
9522
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
9719
9523
|
e.preventDefault();
|
9720
|
-
e.stopPropagation();
|
9721
9524
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
9722
9525
|
}
|
9723
9526
|
}
|
@@ -9827,7 +9630,7 @@ const VListItem = genericComponent()({
|
|
9827
9630
|
}), createElementVNode("div", {
|
9828
9631
|
"class": "v-list-item__spacer"
|
9829
9632
|
}, null)])]
|
9830
|
-
}), [[Ripple, isClickable.value &&
|
9633
|
+
}), [[Ripple, isClickable.value && props.ripple]]);
|
9831
9634
|
});
|
9832
9635
|
return {
|
9833
9636
|
activate,
|
@@ -9882,6 +9685,68 @@ const VListSubheader = genericComponent()({
|
|
9882
9685
|
}
|
9883
9686
|
});
|
9884
9687
|
|
9688
|
+
const makeVDividerProps = propsFactory({
|
9689
|
+
color: String,
|
9690
|
+
inset: Boolean,
|
9691
|
+
length: [Number, String],
|
9692
|
+
opacity: [Number, String],
|
9693
|
+
thickness: [Number, String],
|
9694
|
+
vertical: Boolean,
|
9695
|
+
...makeComponentProps(),
|
9696
|
+
...makeThemeProps()
|
9697
|
+
}, 'VDivider');
|
9698
|
+
const VDivider = genericComponent()({
|
9699
|
+
name: 'VDivider',
|
9700
|
+
props: makeVDividerProps(),
|
9701
|
+
setup(props, _ref) {
|
9702
|
+
let {
|
9703
|
+
attrs,
|
9704
|
+
slots
|
9705
|
+
} = _ref;
|
9706
|
+
const {
|
9707
|
+
themeClasses
|
9708
|
+
} = provideTheme(props);
|
9709
|
+
const {
|
9710
|
+
textColorClasses,
|
9711
|
+
textColorStyles
|
9712
|
+
} = useTextColor(() => props.color);
|
9713
|
+
const dividerStyles = computed(() => {
|
9714
|
+
const styles = {};
|
9715
|
+
if (props.length) {
|
9716
|
+
styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length);
|
9717
|
+
}
|
9718
|
+
if (props.thickness) {
|
9719
|
+
styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness);
|
9720
|
+
}
|
9721
|
+
return styles;
|
9722
|
+
});
|
9723
|
+
useRender(() => {
|
9724
|
+
const divider = createElementVNode("hr", {
|
9725
|
+
"class": normalizeClass([{
|
9726
|
+
'v-divider': true,
|
9727
|
+
'v-divider--inset': props.inset,
|
9728
|
+
'v-divider--vertical': props.vertical
|
9729
|
+
}, themeClasses.value, textColorClasses.value, props.class]),
|
9730
|
+
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
9731
|
+
'--v-border-opacity': props.opacity
|
9732
|
+
}, props.style]),
|
9733
|
+
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
9734
|
+
"role": `${attrs.role || 'separator'}`
|
9735
|
+
}, null);
|
9736
|
+
if (!slots.default) return divider;
|
9737
|
+
return createElementVNode("div", {
|
9738
|
+
"class": normalizeClass(['v-divider__wrapper', {
|
9739
|
+
'v-divider__wrapper--vertical': props.vertical,
|
9740
|
+
'v-divider__wrapper--inset': props.inset
|
9741
|
+
}])
|
9742
|
+
}, [divider, createElementVNode("div", {
|
9743
|
+
"class": "v-divider__content"
|
9744
|
+
}, [slots.default()]), divider]);
|
9745
|
+
});
|
9746
|
+
return {};
|
9747
|
+
}
|
9748
|
+
});
|
9749
|
+
|
9885
9750
|
// Types
|
9886
9751
|
|
9887
9752
|
const makeVListChildrenProps = propsFactory({
|
@@ -10150,7 +10015,6 @@ const makeVListProps = propsFactory({
|
|
10150
10015
|
activeClass: String,
|
10151
10016
|
bgColor: String,
|
10152
10017
|
disabled: Boolean,
|
10153
|
-
filterable: Boolean,
|
10154
10018
|
expandIcon: IconValue,
|
10155
10019
|
collapseIcon: IconValue,
|
10156
10020
|
lines: {
|
@@ -10234,9 +10098,7 @@ const VList = genericComponent()({
|
|
10234
10098
|
const activeColor = toRef(() => props.activeColor);
|
10235
10099
|
const baseColor = toRef(() => props.baseColor);
|
10236
10100
|
const color = toRef(() => props.color);
|
10237
|
-
createList(
|
10238
|
-
filterable: props.filterable
|
10239
|
-
});
|
10101
|
+
createList();
|
10240
10102
|
provideDefaults({
|
10241
10103
|
VListGroup: {
|
10242
10104
|
activeColor,
|
@@ -11919,7 +11781,6 @@ const makeVMenuProps = propsFactory({
|
|
11919
11781
|
// disableKeys: Boolean,
|
11920
11782
|
id: String,
|
11921
11783
|
submenu: Boolean,
|
11922
|
-
disableInitialFocus: Boolean,
|
11923
11784
|
...omit(makeVOverlayProps({
|
11924
11785
|
closeDelay: 250,
|
11925
11786
|
closeOnContentClick: true,
|
@@ -11994,7 +11855,7 @@ const VMenu = genericComponent()({
|
|
11994
11855
|
watch(isActive, val => {
|
11995
11856
|
if (val) {
|
11996
11857
|
parent?.register();
|
11997
|
-
if (IN_BROWSER
|
11858
|
+
if (IN_BROWSER) {
|
11998
11859
|
document.addEventListener('focusin', onFocusIn, {
|
11999
11860
|
once: true
|
12000
11861
|
});
|
@@ -12814,12 +12675,7 @@ function useVirtual(props, items) {
|
|
12814
12675
|
}
|
12815
12676
|
function calculateOffset(index) {
|
12816
12677
|
index = clamp(index, 0, items.value.length - 1);
|
12817
|
-
|
12818
|
-
const fraction = index % 1;
|
12819
|
-
const next = whole + 1;
|
12820
|
-
const wholeOffset = offsets[whole] || 0;
|
12821
|
-
const nextOffset = offsets[next] || wholeOffset;
|
12822
|
-
return wholeOffset + (nextOffset - wholeOffset) * fraction;
|
12678
|
+
return offsets[index] || 0;
|
12823
12679
|
}
|
12824
12680
|
function calculateIndex(scrollTop) {
|
12825
12681
|
return binaryClosest(offsets, scrollTop);
|
@@ -13173,7 +13029,6 @@ const makeSelectProps = propsFactory({
|
|
13173
13029
|
},
|
13174
13030
|
openOnClear: Boolean,
|
13175
13031
|
itemColor: String,
|
13176
|
-
noAutoScroll: Boolean,
|
13177
13032
|
...makeItemsProps({
|
13178
13033
|
itemChildren: false
|
13179
13034
|
})
|
@@ -13388,7 +13243,7 @@ const VSelect = genericComponent()({
|
|
13388
13243
|
watch(menu, () => {
|
13389
13244
|
if (!props.hideSelected && menu.value && model.value.length) {
|
13390
13245
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
13391
|
-
IN_BROWSER &&
|
13246
|
+
IN_BROWSER && window.requestAnimationFrame(() => {
|
13392
13247
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
13393
13248
|
});
|
13394
13249
|
}
|
@@ -13481,22 +13336,6 @@ const VSelect = genericComponent()({
|
|
13481
13336
|
key: item.value,
|
13482
13337
|
onClick: () => select(item, null)
|
13483
13338
|
});
|
13484
|
-
if (item.raw.type === 'divider') {
|
13485
|
-
return slots.divider?.({
|
13486
|
-
props: item.raw,
|
13487
|
-
index
|
13488
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
13489
|
-
"key": `divider-${index}`
|
13490
|
-
}), null);
|
13491
|
-
}
|
13492
|
-
if (item.raw.type === 'subheader') {
|
13493
|
-
return slots.subheader?.({
|
13494
|
-
props: item.raw,
|
13495
|
-
index
|
13496
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
13497
|
-
"key": `subheader-${index}`
|
13498
|
-
}), null);
|
13499
|
-
}
|
13500
13339
|
return slots.item?.({
|
13501
13340
|
item,
|
13502
13341
|
index,
|
@@ -13657,9 +13496,6 @@ function filterItems(items, query, options) {
|
|
13657
13496
|
let match = -1;
|
13658
13497
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
13659
13498
|
if (typeof item === 'object') {
|
13660
|
-
if (['divider', 'subheader'].includes(item.raw?.type)) {
|
13661
|
-
continue;
|
13662
|
-
}
|
13663
13499
|
const filterKeys = keys || Object.keys(transformed);
|
13664
13500
|
for (const key of filterKeys) {
|
13665
13501
|
const value = getPropertyFromItem(transformed, key);
|
@@ -13862,7 +13698,7 @@ const VAutocomplete = genericComponent()({
|
|
13862
13698
|
menu.value = !menu.value;
|
13863
13699
|
}
|
13864
13700
|
function onListKeydown(e) {
|
13865
|
-
if (
|
13701
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
13866
13702
|
vTextFieldRef.value?.focus();
|
13867
13703
|
}
|
13868
13704
|
}
|
@@ -14067,7 +13903,6 @@ const VAutocomplete = genericComponent()({
|
|
14067
13903
|
}, props.menuProps), {
|
14068
13904
|
default: () => [hasList && createVNode(VList, mergeProps({
|
14069
13905
|
"ref": listRef,
|
14070
|
-
"filterable": true,
|
14071
13906
|
"selected": selectedValues.value,
|
14072
13907
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
14073
13908
|
"onMousedown": e => e.preventDefault(),
|
@@ -14099,22 +13934,6 @@ const VAutocomplete = genericComponent()({
|
|
14099
13934
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
14100
13935
|
onClick: () => select(item, null)
|
14101
13936
|
});
|
14102
|
-
if (item.raw.type === 'divider') {
|
14103
|
-
return slots.divider?.({
|
14104
|
-
props: item.raw,
|
14105
|
-
index
|
14106
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
14107
|
-
"key": `divider-${index}`
|
14108
|
-
}), null);
|
14109
|
-
}
|
14110
|
-
if (item.raw.type === 'subheader') {
|
14111
|
-
return slots.subheader?.({
|
14112
|
-
props: item.raw,
|
14113
|
-
index
|
14114
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
14115
|
-
"key": `subheader-${index}`
|
14116
|
-
}), null);
|
14117
|
-
}
|
14118
13937
|
return slots.item?.({
|
14119
13938
|
item,
|
14120
13939
|
index,
|
@@ -14259,8 +14078,7 @@ const makeVBadgeProps = propsFactory({
|
|
14259
14078
|
...makeThemeProps(),
|
14260
14079
|
...makeTransitionProps({
|
14261
14080
|
transition: 'scale-rotate-transition'
|
14262
|
-
})
|
14263
|
-
...makeDimensionProps()
|
14081
|
+
})
|
14264
14082
|
}, 'VBadge');
|
14265
14083
|
const VBadge = genericComponent()({
|
14266
14084
|
name: 'VBadge',
|
@@ -14290,9 +14108,6 @@ const VBadge = genericComponent()({
|
|
14290
14108
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
14291
14109
|
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
14292
14110
|
});
|
14293
|
-
const {
|
14294
|
-
dimensionStyles
|
14295
|
-
} = useDimension(props);
|
14296
14111
|
useRender(() => {
|
14297
14112
|
const value = Number(props.content);
|
14298
14113
|
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
@@ -14314,7 +14129,7 @@ const VBadge = genericComponent()({
|
|
14314
14129
|
}, {
|
14315
14130
|
default: () => [withDirectives(createElementVNode("span", mergeProps({
|
14316
14131
|
"class": ['v-badge__badge', themeClasses.value, backgroundColorClasses.value, roundedClasses.value, textColorClasses.value],
|
14317
|
-
"style": [backgroundColorStyles.value, textColorStyles.value,
|
14132
|
+
"style": [backgroundColorStyles.value, textColorStyles.value, props.inline ? {} : locationStyles.value],
|
14318
14133
|
"aria-atomic": "true",
|
14319
14134
|
"aria-label": t(props.label, value),
|
14320
14135
|
"aria-live": "polite",
|
@@ -17723,13 +17538,13 @@ function date(value) {
|
|
17723
17538
|
return null;
|
17724
17539
|
}
|
17725
17540
|
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
17726
|
-
function getWeekdays(locale, firstDayOfWeek
|
17541
|
+
function getWeekdays(locale, firstDayOfWeek) {
|
17727
17542
|
const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
|
17728
17543
|
return createRange(7).map(i => {
|
17729
17544
|
const weekday = new Date(sundayJanuarySecond2000);
|
17730
17545
|
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
17731
17546
|
return new Intl.DateTimeFormat(locale, {
|
17732
|
-
weekday:
|
17547
|
+
weekday: 'narrow'
|
17733
17548
|
}).format(weekday);
|
17734
17549
|
});
|
17735
17550
|
}
|
@@ -18193,9 +18008,9 @@ class VuetifyDateAdapter {
|
|
18193
18008
|
getDiff(date, comparing, unit) {
|
18194
18009
|
return getDiff(date, comparing, unit);
|
18195
18010
|
}
|
18196
|
-
getWeekdays(firstDayOfWeek
|
18011
|
+
getWeekdays(firstDayOfWeek) {
|
18197
18012
|
const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
|
18198
|
-
return getWeekdays(this.locale, firstDay
|
18013
|
+
return getWeekdays(this.locale, firstDay);
|
18199
18014
|
}
|
18200
18015
|
getYear(date) {
|
18201
18016
|
return getYear(date);
|
@@ -18550,7 +18365,6 @@ const VCombobox = genericComponent()({
|
|
18550
18365
|
_search.value = val ?? '';
|
18551
18366
|
if (!props.multiple && !hasSelectionSlot.value) {
|
18552
18367
|
model.value = [transformItem$3(props, val)];
|
18553
|
-
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
18554
18368
|
}
|
18555
18369
|
if (val && props.multiple && props.delimiters?.length) {
|
18556
18370
|
const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
|
@@ -18631,7 +18445,7 @@ const VCombobox = genericComponent()({
|
|
18631
18445
|
menu.value = !menu.value;
|
18632
18446
|
}
|
18633
18447
|
function onListKeydown(e) {
|
18634
|
-
if (
|
18448
|
+
if (e.key !== ' ' && checkPrintable(e)) {
|
18635
18449
|
vTextFieldRef.value?.focus();
|
18636
18450
|
}
|
18637
18451
|
}
|
@@ -18836,7 +18650,6 @@ const VCombobox = genericComponent()({
|
|
18836
18650
|
}, props.menuProps), {
|
18837
18651
|
default: () => [hasList && createVNode(VList, mergeProps({
|
18838
18652
|
"ref": listRef,
|
18839
|
-
"filterable": true,
|
18840
18653
|
"selected": selectedValues.value,
|
18841
18654
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
18842
18655
|
"onMousedown": e => e.preventDefault(),
|
@@ -18868,22 +18681,6 @@ const VCombobox = genericComponent()({
|
|
18868
18681
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
18869
18682
|
onClick: () => select(item, null)
|
18870
18683
|
});
|
18871
|
-
if (item.raw.type === 'divider') {
|
18872
|
-
return slots.divider?.({
|
18873
|
-
props: item.raw,
|
18874
|
-
index
|
18875
|
-
}) ?? createVNode(VDivider, mergeProps(item.props, {
|
18876
|
-
"key": `divider-${index}`
|
18877
|
-
}), null);
|
18878
|
-
}
|
18879
|
-
if (item.raw.type === 'subheader') {
|
18880
|
-
return slots.subheader?.({
|
18881
|
-
props: item.raw,
|
18882
|
-
index
|
18883
|
-
}) ?? createVNode(VListSubheader, mergeProps(item.props, {
|
18884
|
-
"key": `subheader-${index}`
|
18885
|
-
}), null);
|
18886
|
-
}
|
18887
18684
|
return slots.item?.({
|
18888
18685
|
item,
|
18889
18686
|
index,
|
@@ -20766,7 +20563,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
20766
20563
|
color: String,
|
20767
20564
|
disableSort: Boolean,
|
20768
20565
|
fixedHeader: Boolean,
|
20769
|
-
lastFixed: Boolean,
|
20770
20566
|
multiSort: Boolean,
|
20771
20567
|
sortAscIcon: {
|
20772
20568
|
type: IconValue,
|
@@ -20813,11 +20609,10 @@ const VDataTableHeaders = genericComponent()({
|
|
20813
20609
|
loaderClasses
|
20814
20610
|
} = useLoader(props);
|
20815
20611
|
function getFixedStyles(column, y) {
|
20816
|
-
if (!(props.sticky || props.fixedHeader) && !
|
20612
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
20817
20613
|
return {
|
20818
20614
|
position: 'sticky',
|
20819
|
-
left: column.fixed
|
20820
|
-
right: column.lastFixed ? convertToUnit(column.fixedOffset ?? 0) : undefined,
|
20615
|
+
left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,
|
20821
20616
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20822
20617
|
};
|
20823
20618
|
}
|
@@ -21333,18 +21128,11 @@ const VDataTableRows = genericComponent()({
|
|
21333
21128
|
}
|
21334
21129
|
});
|
21335
21130
|
|
21336
|
-
// Types
|
21337
|
-
|
21338
21131
|
const makeVTableProps = propsFactory({
|
21339
21132
|
fixedHeader: Boolean,
|
21340
21133
|
fixedFooter: Boolean,
|
21341
21134
|
height: [Number, String],
|
21342
21135
|
hover: Boolean,
|
21343
|
-
striped: {
|
21344
|
-
type: String,
|
21345
|
-
default: null,
|
21346
|
-
validator: v => ['even', 'odd'].includes(v)
|
21347
|
-
},
|
21348
21136
|
...makeComponentProps(),
|
21349
21137
|
...makeDensityProps(),
|
21350
21138
|
...makeTagProps(),
|
@@ -21371,9 +21159,7 @@ const VTable = genericComponent()({
|
|
21371
21159
|
'v-table--fixed-footer': props.fixedFooter,
|
21372
21160
|
'v-table--has-top': !!slots.top,
|
21373
21161
|
'v-table--has-bottom': !!slots.bottom,
|
21374
|
-
'v-table--hover': props.hover
|
21375
|
-
'v-table--striped-even': props.striped === 'even',
|
21376
|
-
'v-table--striped-odd': props.striped === 'odd'
|
21162
|
+
'v-table--hover': props.hover
|
21377
21163
|
}, themeClasses.value, densityClasses.value, props.class]),
|
21378
21164
|
"style": normalizeStyle(props.style)
|
21379
21165
|
}, {
|
@@ -22548,8 +22334,7 @@ const makeCalendarProps = propsFactory({
|
|
22548
22334
|
firstDayOfWeek: {
|
22549
22335
|
type: [Number, String],
|
22550
22336
|
default: undefined
|
22551
|
-
}
|
22552
|
-
weekdayFormat: String
|
22337
|
+
}
|
22553
22338
|
}, 'calendar');
|
22554
22339
|
function useCalendar(props) {
|
22555
22340
|
const adapter = useDate();
|
@@ -22790,7 +22575,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22790
22575
|
"ref": daysRef,
|
22791
22576
|
"key": daysInMonth.value[0].date?.toString(),
|
22792
22577
|
"class": "v-date-picker-month__days"
|
22793
|
-
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek
|
22578
|
+
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => createElementVNode("div", {
|
22794
22579
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22795
22580
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22796
22581
|
const slotProps = {
|
@@ -23295,9 +23080,7 @@ const VDatePicker = genericComponent()({
|
|
23295
23080
|
"max": maxDate.value,
|
23296
23081
|
"year": year.value,
|
23297
23082
|
"allowedMonths": allowedMonths
|
23298
|
-
}), {
|
23299
|
-
...pick(slots, ['month'])
|
23300
|
-
}) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
23083
|
+
}), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
|
23301
23084
|
"key": "date-picker-years"
|
23302
23085
|
}, datePickerYearsProps, {
|
23303
23086
|
"modelValue": year.value,
|
@@ -23305,9 +23088,7 @@ const VDatePicker = genericComponent()({
|
|
23305
23088
|
"min": minDate.value,
|
23306
23089
|
"max": maxDate.value,
|
23307
23090
|
"allowedYears": allowedYears
|
23308
|
-
}), {
|
23309
|
-
...pick(slots, ['year'])
|
23310
|
-
}) : createVNode(VDatePickerMonth, mergeProps({
|
23091
|
+
}), null) : createVNode(VDatePickerMonth, mergeProps({
|
23311
23092
|
"key": "date-picker-month"
|
23312
23093
|
}, datePickerMonthProps, {
|
23313
23094
|
"modelValue": model.value,
|
@@ -23318,9 +23099,7 @@ const VDatePicker = genericComponent()({
|
|
23318
23099
|
"onUpdate:year": [$event => year.value = $event, onUpdateYear],
|
23319
23100
|
"min": minDate.value,
|
23320
23101
|
"max": maxDate.value
|
23321
|
-
}),
|
23322
|
-
...pick(slots, ['day'])
|
23323
|
-
})]
|
23102
|
+
}), null)]
|
23324
23103
|
})]),
|
23325
23104
|
actions: slots.actions
|
23326
23105
|
});
|
@@ -24411,9 +24190,6 @@ const VInfiniteScroll = genericComponent()({
|
|
24411
24190
|
startStatus.value = status;
|
24412
24191
|
} else if (side === 'end') {
|
24413
24192
|
endStatus.value = status;
|
24414
|
-
} else if (side === 'both') {
|
24415
|
-
startStatus.value = status;
|
24416
|
-
endStatus.value = status;
|
24417
24193
|
}
|
24418
24194
|
}
|
24419
24195
|
function getStatus(side) {
|
@@ -24525,32 +24301,6 @@ const VInfiniteScroll = genericComponent()({
|
|
24525
24301
|
}, [renderSide('end', endStatus.value)])]
|
24526
24302
|
});
|
24527
24303
|
});
|
24528
|
-
function reset(side) {
|
24529
|
-
const effectiveSide = side ?? props.side;
|
24530
|
-
setStatus(effectiveSide, 'ok');
|
24531
|
-
nextTick(() => {
|
24532
|
-
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
24533
|
-
if (props.mode !== 'manual') {
|
24534
|
-
nextTick(() => {
|
24535
|
-
window.requestAnimationFrame(() => {
|
24536
|
-
window.requestAnimationFrame(() => {
|
24537
|
-
window.requestAnimationFrame(() => {
|
24538
|
-
if (effectiveSide === 'both') {
|
24539
|
-
intersecting('start');
|
24540
|
-
intersecting('end');
|
24541
|
-
} else {
|
24542
|
-
intersecting(effectiveSide);
|
24543
|
-
}
|
24544
|
-
});
|
24545
|
-
});
|
24546
|
-
});
|
24547
|
-
});
|
24548
|
-
}
|
24549
|
-
});
|
24550
|
-
}
|
24551
|
-
return {
|
24552
|
-
reset
|
24553
|
-
};
|
24554
24304
|
}
|
24555
24305
|
});
|
24556
24306
|
|
@@ -24630,47 +24380,8 @@ const VItem = genericComponent()({
|
|
24630
24380
|
}
|
24631
24381
|
});
|
24632
24382
|
|
24633
|
-
|
24634
|
-
|
24635
|
-
...makeComponentProps(),
|
24636
|
-
...makeRoundedProps(),
|
24637
|
-
...makeTagProps({
|
24638
|
-
tag: 'kbd'
|
24639
|
-
}),
|
24640
|
-
...makeThemeProps(),
|
24641
|
-
...makeElevationProps(),
|
24642
|
-
color: String
|
24643
|
-
}, 'VKbd');
|
24644
|
-
const VKbd = genericComponent()({
|
24645
|
-
name: 'VKbd',
|
24646
|
-
props: makeVKbdProps(),
|
24647
|
-
setup(props, _ref) {
|
24648
|
-
let {
|
24649
|
-
slots
|
24650
|
-
} = _ref;
|
24651
|
-
const {
|
24652
|
-
themeClasses
|
24653
|
-
} = provideTheme(props);
|
24654
|
-
const {
|
24655
|
-
borderClasses
|
24656
|
-
} = useBorder(props);
|
24657
|
-
const {
|
24658
|
-
roundedClasses
|
24659
|
-
} = useRounded(props);
|
24660
|
-
const {
|
24661
|
-
backgroundColorClasses,
|
24662
|
-
backgroundColorStyles
|
24663
|
-
} = useBackgroundColor(() => props.color);
|
24664
|
-
const {
|
24665
|
-
elevationClasses
|
24666
|
-
} = useElevation(props);
|
24667
|
-
useRender(() => createVNode(props.tag, {
|
24668
|
-
"class": normalizeClass(['v-kbd', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
24669
|
-
"style": normalizeStyle([backgroundColorStyles.value, props.style])
|
24670
|
-
}, slots));
|
24671
|
-
return {};
|
24672
|
-
}
|
24673
|
-
});
|
24383
|
+
// Styles
|
24384
|
+
const VKbd = createSimpleFunctional('v-kbd', 'kbd');
|
24674
24385
|
|
24675
24386
|
const makeVLayoutProps = propsFactory({
|
24676
24387
|
...makeComponentProps(),
|
@@ -25508,14 +25219,6 @@ const makeVNumberInputProps = propsFactory({
|
|
25508
25219
|
type: Number,
|
25509
25220
|
default: 0
|
25510
25221
|
},
|
25511
|
-
minFractionDigits: {
|
25512
|
-
type: Number,
|
25513
|
-
default: null
|
25514
|
-
},
|
25515
|
-
decimalSeparator: {
|
25516
|
-
type: String,
|
25517
|
-
validator: v => !v || v.length === 1
|
25518
|
-
},
|
25519
25222
|
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
25520
25223
|
}, 'VNumberInput');
|
25521
25224
|
const VNumberInput = genericComponent()({
|
@@ -25541,24 +25244,11 @@ const VNumberInput = genericComponent()({
|
|
25541
25244
|
const form = useForm(props);
|
25542
25245
|
const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
|
25543
25246
|
const isFocused = shallowRef(props.focused);
|
25544
|
-
const {
|
25545
|
-
decimalSeparator: decimalSeparatorFromLocale
|
25546
|
-
} = useLocale();
|
25547
|
-
const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);
|
25548
25247
|
function correctPrecision(val) {
|
25549
25248
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25550
|
-
let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
25551
25249
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
25552
|
-
|
25553
|
-
|
25554
|
-
.replace('.', decimalSeparator.value);
|
25555
|
-
}
|
25556
|
-
if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {
|
25557
|
-
return fixed.replace('.', decimalSeparator.value);
|
25558
|
-
}
|
25559
|
-
let [baseDigits, fractionDigits] = fixed.split('.');
|
25560
|
-
fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\d{${props.minFractionDigits}})0`, 'g'), '');
|
25561
|
-
return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);
|
25250
|
+
return isFocused.value ? Number(fixed).toString() // trim zeros
|
25251
|
+
: fixed;
|
25562
25252
|
}
|
25563
25253
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
25564
25254
|
const _inputText = shallowRef(null);
|
@@ -25575,11 +25265,8 @@ const VNumberInput = genericComponent()({
|
|
25575
25265
|
if (val === null || val === '') {
|
25576
25266
|
model.value = null;
|
25577
25267
|
_inputText.value = null;
|
25578
|
-
|
25579
|
-
|
25580
|
-
const parsedValue = Number(val.replace(decimalSeparator.value, '.'));
|
25581
|
-
if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {
|
25582
|
-
model.value = parsedValue;
|
25268
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
25269
|
+
model.value = Number(val);
|
25583
25270
|
_inputText.value = val;
|
25584
25271
|
}
|
25585
25272
|
}
|
@@ -25616,7 +25303,6 @@ const VNumberInput = genericComponent()({
|
|
25616
25303
|
}
|
25617
25304
|
};
|
25618
25305
|
watch(() => props.precision, () => formatInputValue());
|
25619
|
-
watch(() => props.minFractionDigits, () => formatInputValue());
|
25620
25306
|
onMounted(() => {
|
25621
25307
|
clampModel();
|
25622
25308
|
});
|
@@ -25650,24 +25336,24 @@ const VNumberInput = genericComponent()({
|
|
25650
25336
|
selectionEnd
|
25651
25337
|
} = inputElement ?? {};
|
25652
25338
|
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
25653
|
-
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision
|
25339
|
+
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
|
25654
25340
|
|
25655
|
-
//
|
25656
|
-
//
|
25657
|
-
//
|
25658
|
-
if (
|
25341
|
+
// Only numbers, "-", "." are allowed
|
25342
|
+
// AND "-", "." are allowed only once
|
25343
|
+
// AND "-" is only allowed at the start
|
25344
|
+
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
25659
25345
|
e.preventDefault();
|
25660
25346
|
inputElement.value = potentialNewNumber;
|
25661
25347
|
}
|
25662
25348
|
if (props.precision == null) return;
|
25663
25349
|
|
25664
25350
|
// Ignore decimal digits above precision limit
|
25665
|
-
if (potentialNewInputVal.split(
|
25351
|
+
if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
|
25666
25352
|
e.preventDefault();
|
25667
25353
|
inputElement.value = potentialNewNumber;
|
25668
25354
|
}
|
25669
25355
|
// Ignore decimal separator when precision = 0
|
25670
|
-
if (props.precision === 0 && potentialNewInputVal.includes(
|
25356
|
+
if (props.precision === 0 && potentialNewInputVal.includes('.')) {
|
25671
25357
|
e.preventDefault();
|
25672
25358
|
inputElement.value = potentialNewNumber;
|
25673
25359
|
}
|
@@ -25719,16 +25405,19 @@ const VNumberInput = genericComponent()({
|
|
25719
25405
|
if (controlsDisabled.value) return;
|
25720
25406
|
if (!vTextFieldRef.value) return;
|
25721
25407
|
const actualText = vTextFieldRef.value.value;
|
25722
|
-
|
25723
|
-
|
25724
|
-
inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));
|
25408
|
+
if (actualText && !isNaN(Number(actualText))) {
|
25409
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
25725
25410
|
} else {
|
25726
25411
|
inputText.value = null;
|
25727
25412
|
}
|
25728
25413
|
}
|
25729
25414
|
function formatInputValue() {
|
25730
25415
|
if (controlsDisabled.value) return;
|
25731
|
-
|
25416
|
+
if (model.value === null || isNaN(model.value)) {
|
25417
|
+
inputText.value = null;
|
25418
|
+
return;
|
25419
|
+
}
|
25420
|
+
inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
|
25732
25421
|
}
|
25733
25422
|
function trimDecimalZeros() {
|
25734
25423
|
if (controlsDisabled.value) return;
|
@@ -25736,7 +25425,7 @@ const VNumberInput = genericComponent()({
|
|
25736
25425
|
inputText.value = null;
|
25737
25426
|
return;
|
25738
25427
|
}
|
25739
|
-
inputText.value = model.value.toString()
|
25428
|
+
inputText.value = model.value.toString();
|
25740
25429
|
}
|
25741
25430
|
function onFocus() {
|
25742
25431
|
trimDecimalZeros();
|
@@ -25988,10 +25677,9 @@ const VOtpInput = genericComponent()({
|
|
25988
25677
|
e.preventDefault();
|
25989
25678
|
e.stopPropagation();
|
25990
25679
|
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25991
|
-
const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
|
25992
25680
|
if (isValidNumber(clipboardText)) return;
|
25993
25681
|
model.value = clipboardText.split('');
|
25994
|
-
inputRef.value?.[
|
25682
|
+
inputRef.value?.[index].blur();
|
25995
25683
|
}
|
25996
25684
|
function reset() {
|
25997
25685
|
model.value = [];
|
@@ -29776,7 +29464,7 @@ function createVuetify$1() {
|
|
29776
29464
|
};
|
29777
29465
|
});
|
29778
29466
|
}
|
29779
|
-
const version$1 = "3.8.9-
|
29467
|
+
const version$1 = "3.8.9-master.2025-06-12";
|
29780
29468
|
createVuetify$1.version = version$1;
|
29781
29469
|
|
29782
29470
|
// Vue's inject() can only be used in setup
|
@@ -29801,7 +29489,7 @@ const createVuetify = function () {
|
|
29801
29489
|
...options
|
29802
29490
|
});
|
29803
29491
|
};
|
29804
|
-
const version = "3.8.9-
|
29492
|
+
const version = "3.8.9-master.2025-06-12";
|
29805
29493
|
createVuetify.version = version;
|
29806
29494
|
|
29807
29495
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|