vuetify 3.10.5 → 3.10.6
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/README.md +0 -6
- package/dist/json/attributes.json +3568 -3592
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +152 -152
- package/dist/json/tags.json +3 -9
- package/dist/json/web-types.json +6916 -6969
- package/dist/vuetify-labs.cjs +178 -72
- package/dist/vuetify-labs.css +4389 -4339
- package/dist/vuetify-labs.d.ts +108 -163
- package/dist/vuetify-labs.esm.js +178 -72
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +178 -72
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +159 -62
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4349 -4321
- package/dist/vuetify.d.ts +108 -128
- package/dist/vuetify.esm.js +159 -62
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +159 -62
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +113 -102
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +0 -61
- package/lib/components/VAutocomplete/VAutocomplete.js +13 -11
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.d.ts +37 -0
- package/lib/components/VChipGroup/VChipGroup.js +3 -1
- package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.d.ts +6 -67
- package/lib/components/VCombobox/VCombobox.js +26 -28
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCounter/VCounter.css +1 -0
- package/lib/components/VCounter/VCounter.sass +1 -0
- package/lib/components/VDatePicker/VDatePicker.js +1 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VList/VListItem.css +14 -12
- package/lib/components/VList/VListItem.js +4 -2
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListItem.sass +20 -18
- package/lib/components/VMenu/VMenu.js +22 -4
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.css +8 -0
- package/lib/components/VNumberInput/VNumberInput.js +5 -2
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.sass +10 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.css +17 -0
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +3 -3
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +7 -0
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +25 -0
- package/lib/components/VSlideGroup/VSlideGroup.js +5 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTabs/VTabs.d.ts +25 -0
- package/lib/components/VTextField/VTextField.js +0 -3
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.css +2 -2
- package/lib/components/VTextarea/VTextarea.js +20 -1
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +4 -2
- package/lib/components/VWindow/VWindow.js +43 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/composables/date/date.js +1 -1
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/group.js +1 -1
- package/lib/composables/group.js.map +1 -1
- package/lib/composables/nested/nested.js +12 -2
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/virtual.js +2 -2
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +54 -54
- package/lib/framework.js +1 -1
- package/lib/labs/VColorInput/VColorInput.d.ts +0 -40
- package/lib/labs/VColorInput/VColorInput.js +2 -2
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +0 -30
- package/lib/labs/VDateInput/VDateInput.js +16 -7
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.css +22 -0
- package/lib/labs/VIconBtn/VIconBtn.scss +32 -0
- package/lib/labs/VMaskInput/VMaskInput.js +1 -1
- package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
- package/lib/labs/rules/rules.js +1 -1
- package/lib/labs/rules/rules.js.map +1 -1
- package/lib/util/helpers.js +4 -2
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify-labs.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.10.
|
|
2
|
+
* Vuetify v3.10.6
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -468,8 +468,10 @@ function callEvent(handler) {
|
|
|
468
468
|
}
|
|
469
469
|
function focusableChildren(el) {
|
|
470
470
|
let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
471
|
-
const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex="-1"])' : ''}:not([disabled])`).join(', ');
|
|
472
|
-
return [...el.querySelectorAll(targets)]
|
|
471
|
+
const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', 'details:not(:has(> summary))', 'details > summary', '[tabindex]', '[contenteditable]:not([contenteditable="false"])', 'audio[controls]', 'video[controls]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex="-1"])' : ''}:not([disabled], [inert])`).join(', ');
|
|
472
|
+
return [...el.querySelectorAll(targets)].filter(x => !x.closest('[inert]')) // does not have inert parent
|
|
473
|
+
.filter(x => !!x.offsetParent || x.getClientRects().length > 0) // is rendered
|
|
474
|
+
.filter(x => !x.parentElement?.closest('details:not([open])') || x.tagName === 'SUMMARY' && x.parentElement?.tagName === 'DETAILS');
|
|
473
475
|
}
|
|
474
476
|
function getNextElement(elements, location, condition) {
|
|
475
477
|
let _el;
|
|
@@ -4543,7 +4545,7 @@ function useGroupItem(props, injectKey) {
|
|
|
4543
4545
|
function unregister() {
|
|
4544
4546
|
group?.unregister(id);
|
|
4545
4547
|
}
|
|
4546
|
-
|
|
4548
|
+
register();
|
|
4547
4549
|
onBeforeUnmount(() => unregister());
|
|
4548
4550
|
const isSelected = computed(() => {
|
|
4549
4551
|
return group.isSelected(id);
|
|
@@ -8093,6 +8095,10 @@ function getOffsetPosition(isHorizontal, element) {
|
|
|
8093
8095
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
|
8094
8096
|
const makeVSlideGroupProps = propsFactory({
|
|
8095
8097
|
centerActive: Boolean,
|
|
8098
|
+
scrollToActive: {
|
|
8099
|
+
type: Boolean,
|
|
8100
|
+
default: true
|
|
8101
|
+
},
|
|
8096
8102
|
contentClass: null,
|
|
8097
8103
|
direction: {
|
|
8098
8104
|
type: String,
|
|
@@ -8181,7 +8187,7 @@ const VSlideGroup = genericComponent()({
|
|
|
8181
8187
|
contentSize.value = contentRect.value[sizeProperty];
|
|
8182
8188
|
isOverflowing.value = containerSize.value + 1 < contentSize.value;
|
|
8183
8189
|
}
|
|
8184
|
-
if (firstSelectedIndex.value >= 0 && contentRef.el) {
|
|
8190
|
+
if (props.scrollToActive && firstSelectedIndex.value >= 0 && contentRef.el) {
|
|
8185
8191
|
// TODO: Is this too naive? Should we store element references in group composable?
|
|
8186
8192
|
const selectedElement = contentRef.el.children[lastSelectedIndex.value];
|
|
8187
8193
|
scrollToChildren(selectedElement, props.centerActive);
|
|
@@ -8450,7 +8456,9 @@ const makeVChipGroupProps = propsFactory({
|
|
|
8450
8456
|
type: Function,
|
|
8451
8457
|
default: deepEqual
|
|
8452
8458
|
},
|
|
8453
|
-
...makeVSlideGroupProps(
|
|
8459
|
+
...makeVSlideGroupProps({
|
|
8460
|
+
scrollToActive: false
|
|
8461
|
+
}),
|
|
8454
8462
|
...makeComponentProps(),
|
|
8455
8463
|
...makeGroupProps({
|
|
8456
8464
|
selectedClass: 'v-chip--selected'
|
|
@@ -9549,7 +9557,9 @@ const useNestedItem = (id, isDisabled, isGroup) => {
|
|
|
9549
9557
|
};
|
|
9550
9558
|
onBeforeMount(() => {
|
|
9551
9559
|
if (!parent.isGroupActivator) {
|
|
9552
|
-
|
|
9560
|
+
nextTick(() => {
|
|
9561
|
+
parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup);
|
|
9562
|
+
});
|
|
9553
9563
|
}
|
|
9554
9564
|
});
|
|
9555
9565
|
onBeforeUnmount(() => {
|
|
@@ -9557,6 +9567,14 @@ const useNestedItem = (id, isDisabled, isGroup) => {
|
|
|
9557
9567
|
parent.root.unregister(computedId.value);
|
|
9558
9568
|
}
|
|
9559
9569
|
});
|
|
9570
|
+
watch(computedId, (val, oldVal) => {
|
|
9571
|
+
if (!parent.isGroupActivator) {
|
|
9572
|
+
parent.root.unregister(oldVal);
|
|
9573
|
+
nextTick(() => {
|
|
9574
|
+
parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup);
|
|
9575
|
+
});
|
|
9576
|
+
}
|
|
9577
|
+
});
|
|
9560
9578
|
isGroup && provide(VNestedSymbol, item);
|
|
9561
9579
|
return item;
|
|
9562
9580
|
};
|
|
@@ -9807,7 +9825,9 @@ const VListItem = genericComponent()({
|
|
|
9807
9825
|
handleActiveLink();
|
|
9808
9826
|
});
|
|
9809
9827
|
onBeforeMount(() => {
|
|
9810
|
-
if (link.isActive?.value)
|
|
9828
|
+
if (link.isActive?.value) {
|
|
9829
|
+
nextTick(() => handleActiveLink());
|
|
9830
|
+
}
|
|
9811
9831
|
});
|
|
9812
9832
|
function handleActiveLink() {
|
|
9813
9833
|
if (parent.value != null) {
|
|
@@ -12055,25 +12075,41 @@ const VMenu = genericComponent()({
|
|
|
12055
12075
|
document.removeEventListener('focusin', onFocusIn);
|
|
12056
12076
|
});
|
|
12057
12077
|
onDeactivated(() => isActive.value = false);
|
|
12078
|
+
let focusTrapSuppressed = false;
|
|
12079
|
+
let focusTrapSuppressionTimeout = -1;
|
|
12080
|
+
async function onPointerdown() {
|
|
12081
|
+
focusTrapSuppressed = true;
|
|
12082
|
+
focusTrapSuppressionTimeout = window.setTimeout(() => {
|
|
12083
|
+
focusTrapSuppressed = false;
|
|
12084
|
+
}, 100);
|
|
12085
|
+
}
|
|
12058
12086
|
async function onFocusIn(e) {
|
|
12059
12087
|
const before = e.relatedTarget;
|
|
12060
12088
|
const after = e.target;
|
|
12061
12089
|
await nextTick();
|
|
12062
12090
|
if (isActive.value && before !== after && overlay.value?.contentEl &&
|
|
12063
|
-
// We're the
|
|
12064
|
-
overlay.value?.
|
|
12091
|
+
// We're the menu without open submenus or overlays
|
|
12092
|
+
overlay.value?.localTop &&
|
|
12065
12093
|
// It isn't the document or the menu body
|
|
12066
12094
|
![document, overlay.value.contentEl].includes(after) &&
|
|
12067
12095
|
// It isn't inside the menu body
|
|
12068
12096
|
!overlay.value.contentEl.contains(after)) {
|
|
12069
|
-
|
|
12070
|
-
|
|
12097
|
+
if (focusTrapSuppressed) {
|
|
12098
|
+
if (!props.openOnHover || !overlay.value.activatorEl?.contains(after)) {
|
|
12099
|
+
isActive.value = false;
|
|
12100
|
+
}
|
|
12101
|
+
} else {
|
|
12102
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
12103
|
+
focusable[0]?.focus();
|
|
12104
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
12105
|
+
}
|
|
12071
12106
|
}
|
|
12072
12107
|
}
|
|
12073
12108
|
watch(isActive, val => {
|
|
12074
12109
|
if (val) {
|
|
12075
12110
|
parent?.register();
|
|
12076
12111
|
if (IN_BROWSER && !props.disableInitialFocus) {
|
|
12112
|
+
document.addEventListener('pointerdown', onPointerdown);
|
|
12077
12113
|
document.addEventListener('focusin', onFocusIn, {
|
|
12078
12114
|
once: true
|
|
12079
12115
|
});
|
|
@@ -12081,6 +12117,8 @@ const VMenu = genericComponent()({
|
|
|
12081
12117
|
} else {
|
|
12082
12118
|
parent?.unregister();
|
|
12083
12119
|
if (IN_BROWSER) {
|
|
12120
|
+
clearTimeout(focusTrapSuppressionTimeout);
|
|
12121
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
12084
12122
|
document.removeEventListener('focusin', onFocusIn);
|
|
12085
12123
|
}
|
|
12086
12124
|
}
|
|
@@ -12674,7 +12712,6 @@ const VTextField = genericComponent()({
|
|
|
12674
12712
|
e.stopPropagation();
|
|
12675
12713
|
onFocus();
|
|
12676
12714
|
nextTick(() => {
|
|
12677
|
-
model.value = null;
|
|
12678
12715
|
reset();
|
|
12679
12716
|
callEvent(props['onClick:clear'], e);
|
|
12680
12717
|
});
|
|
@@ -12729,8 +12766,6 @@ const VTextField = genericComponent()({
|
|
|
12729
12766
|
"onMousedown": onControlMousedown,
|
|
12730
12767
|
"onClick": onControlClick,
|
|
12731
12768
|
"onClick:clear": e => onClear(e, reset),
|
|
12732
|
-
"onClick:prependInner": props['onClick:prependInner'],
|
|
12733
|
-
"onClick:appendInner": props['onClick:appendInner'],
|
|
12734
12769
|
"role": props.role
|
|
12735
12770
|
}, omit(fieldProps, ['onClick:clear']), {
|
|
12736
12771
|
"id": id.value,
|
|
@@ -12906,7 +12941,7 @@ function useVirtual(props, items) {
|
|
|
12906
12941
|
const start = performance.now();
|
|
12907
12942
|
offsets[0] = 0;
|
|
12908
12943
|
const length = items.value.length;
|
|
12909
|
-
for (let i = 1; i <= length
|
|
12944
|
+
for (let i = 1; i <= length; i++) {
|
|
12910
12945
|
offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);
|
|
12911
12946
|
}
|
|
12912
12947
|
updateTime.value = Math.max(updateTime.value, performance.now() - start);
|
|
@@ -12941,7 +12976,7 @@ function useVirtual(props, items) {
|
|
|
12941
12976
|
}
|
|
12942
12977
|
}
|
|
12943
12978
|
function calculateOffset(index) {
|
|
12944
|
-
index = clamp(index, 0, items.value.length
|
|
12979
|
+
index = clamp(index, 0, items.value.length);
|
|
12945
12980
|
const whole = Math.floor(index);
|
|
12946
12981
|
const fraction = index % 1;
|
|
12947
12982
|
const next = whole + 1;
|
|
@@ -13946,10 +13981,7 @@ const makeVAutocompleteProps = propsFactory({
|
|
|
13946
13981
|
...omit(makeVTextFieldProps({
|
|
13947
13982
|
modelValue: null,
|
|
13948
13983
|
role: 'combobox'
|
|
13949
|
-
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
13950
|
-
...makeTransitionProps({
|
|
13951
|
-
transition: false
|
|
13952
|
-
})
|
|
13984
|
+
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
13953
13985
|
}, 'VAutocomplete');
|
|
13954
13986
|
const VAutocomplete = genericComponent()({
|
|
13955
13987
|
name: 'VAutocomplete',
|
|
@@ -13974,6 +14006,7 @@ const VAutocomplete = genericComponent()({
|
|
|
13974
14006
|
const vMenuRef = ref();
|
|
13975
14007
|
const vVirtualScrollRef = ref();
|
|
13976
14008
|
const selectionIndex = shallowRef(-1);
|
|
14009
|
+
const _searchLock = shallowRef(null);
|
|
13977
14010
|
const {
|
|
13978
14011
|
items,
|
|
13979
14012
|
transformIn,
|
|
@@ -13995,9 +14028,9 @@ const VAutocomplete = genericComponent()({
|
|
|
13995
14028
|
const {
|
|
13996
14029
|
filteredItems,
|
|
13997
14030
|
getMatches
|
|
13998
|
-
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
|
14031
|
+
} = useFilter(props, items, () => _searchLock.value ?? (isPristine.value ? '' : search.value));
|
|
13999
14032
|
const displayItems = computed(() => {
|
|
14000
|
-
if (props.hideSelected) {
|
|
14033
|
+
if (props.hideSelected && _searchLock.value === null) {
|
|
14001
14034
|
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
|
14002
14035
|
}
|
|
14003
14036
|
return filteredItems.value;
|
|
@@ -14128,6 +14161,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14128
14161
|
isPristine.value = true;
|
|
14129
14162
|
vTextFieldRef.value?.focus();
|
|
14130
14163
|
}
|
|
14164
|
+
_searchLock.value = null;
|
|
14131
14165
|
}
|
|
14132
14166
|
function onFocusin(e) {
|
|
14133
14167
|
isFocused.value = true;
|
|
@@ -14163,6 +14197,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14163
14197
|
} else {
|
|
14164
14198
|
const add = set !== false;
|
|
14165
14199
|
model.value = add ? [item] : [];
|
|
14200
|
+
_searchLock.value = isPristine.value ? '' : search.value ?? '';
|
|
14166
14201
|
search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
14167
14202
|
|
|
14168
14203
|
// watch for search watcher to trigger
|
|
@@ -14182,6 +14217,9 @@ const VAutocomplete = genericComponent()({
|
|
|
14182
14217
|
} else {
|
|
14183
14218
|
if (!props.multiple && search.value == null) model.value = [];
|
|
14184
14219
|
menu.value = false;
|
|
14220
|
+
if (!isPristine.value && search.value) {
|
|
14221
|
+
_searchLock.value = search.value;
|
|
14222
|
+
}
|
|
14185
14223
|
search.value = '';
|
|
14186
14224
|
selectionIndex.value = -1;
|
|
14187
14225
|
}
|
|
@@ -14191,13 +14229,14 @@ const VAutocomplete = genericComponent()({
|
|
|
14191
14229
|
if (val) menu.value = true;
|
|
14192
14230
|
isPristine.value = !val;
|
|
14193
14231
|
});
|
|
14194
|
-
watch(menu,
|
|
14195
|
-
if (!props.hideSelected &&
|
|
14232
|
+
watch(menu, val => {
|
|
14233
|
+
if (!props.hideSelected && val && model.value.length && isPristine.value) {
|
|
14196
14234
|
const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));
|
|
14197
14235
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
14198
14236
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
14199
14237
|
});
|
|
14200
14238
|
}
|
|
14239
|
+
if (val) _searchLock.value = null;
|
|
14201
14240
|
});
|
|
14202
14241
|
watch(items, (newVal, oldVal) => {
|
|
14203
14242
|
if (menu.value) return;
|
|
@@ -14248,7 +14287,6 @@ const VAutocomplete = genericComponent()({
|
|
|
14248
14287
|
"maxHeight": 310,
|
|
14249
14288
|
"openOnClick": false,
|
|
14250
14289
|
"closeOnContentClick": false,
|
|
14251
|
-
"transition": props.transition,
|
|
14252
14290
|
"onAfterEnter": onAfterEnter,
|
|
14253
14291
|
"onAfterLeave": onAfterLeave
|
|
14254
14292
|
}, props.menuProps), {
|
|
@@ -15676,7 +15714,21 @@ const VWindow = genericComponent()({
|
|
|
15676
15714
|
const activeIndex = computed(() => {
|
|
15677
15715
|
return group.items.value.findIndex(item => group.selected.value.includes(item.id));
|
|
15678
15716
|
});
|
|
15717
|
+
|
|
15718
|
+
// Fix for https://github.com/vuetifyjs/vuetify/issues/18447
|
|
15679
15719
|
watch(activeIndex, (newVal, oldVal) => {
|
|
15720
|
+
let scrollableParent;
|
|
15721
|
+
const savedScrollPosition = {
|
|
15722
|
+
x: 0,
|
|
15723
|
+
y: 0
|
|
15724
|
+
};
|
|
15725
|
+
if (IN_BROWSER && oldVal >= 0) {
|
|
15726
|
+
scrollableParent = getScrollParent(rootRef.value);
|
|
15727
|
+
|
|
15728
|
+
// Save current scroll position
|
|
15729
|
+
savedScrollPosition.x = scrollableParent.scrollLeft;
|
|
15730
|
+
savedScrollPosition.y = scrollableParent.scrollTop;
|
|
15731
|
+
}
|
|
15680
15732
|
const itemsLength = group.items.value.length;
|
|
15681
15733
|
const lastIndex = itemsLength - 1;
|
|
15682
15734
|
if (itemsLength <= 2) {
|
|
@@ -15688,7 +15740,32 @@ const VWindow = genericComponent()({
|
|
|
15688
15740
|
} else {
|
|
15689
15741
|
isReversed.value = newVal < oldVal;
|
|
15690
15742
|
}
|
|
15691
|
-
|
|
15743
|
+
nextTick(() => {
|
|
15744
|
+
if (!IN_BROWSER || !scrollableParent) return;
|
|
15745
|
+
const currentScrollY = scrollableParent.scrollTop;
|
|
15746
|
+
if (currentScrollY !== savedScrollPosition.y) {
|
|
15747
|
+
scrollableParent.scrollTo({
|
|
15748
|
+
left: savedScrollPosition.x,
|
|
15749
|
+
top: savedScrollPosition.y,
|
|
15750
|
+
behavior: 'instant'
|
|
15751
|
+
});
|
|
15752
|
+
}
|
|
15753
|
+
requestAnimationFrame(() => {
|
|
15754
|
+
if (!scrollableParent) return;
|
|
15755
|
+
const rafScrollY = scrollableParent.scrollTop;
|
|
15756
|
+
if (rafScrollY !== savedScrollPosition.y) {
|
|
15757
|
+
scrollableParent.scrollTo({
|
|
15758
|
+
left: savedScrollPosition.x,
|
|
15759
|
+
top: savedScrollPosition.y,
|
|
15760
|
+
behavior: 'instant'
|
|
15761
|
+
});
|
|
15762
|
+
}
|
|
15763
|
+
});
|
|
15764
|
+
});
|
|
15765
|
+
}, {
|
|
15766
|
+
flush: 'sync'
|
|
15767
|
+
}); // Run synchronously before DOM updates
|
|
15768
|
+
|
|
15692
15769
|
provide(VWindowSymbol, {
|
|
15693
15770
|
transition,
|
|
15694
15771
|
isReversed,
|
|
@@ -18593,7 +18670,7 @@ function createDate(options, locale) {
|
|
|
18593
18670
|
};
|
|
18594
18671
|
}
|
|
18595
18672
|
function createDateRange(adapter, start, stop) {
|
|
18596
|
-
const diff = adapter.getDiff(adapter.
|
|
18673
|
+
const diff = adapter.getDiff(new Date(`${adapter.toISO(stop ?? start)}T00:00:00Z`), new Date(`${adapter.toISO(start)}T00:00:00Z`), 'days');
|
|
18597
18674
|
const datesInRange = [start];
|
|
18598
18675
|
for (let i = 1; i < diff; i++) {
|
|
18599
18676
|
const nextDate = adapter.addDays(start, i);
|
|
@@ -19276,10 +19353,7 @@ const makeVComboboxProps = propsFactory({
|
|
|
19276
19353
|
...omit(makeVTextFieldProps({
|
|
19277
19354
|
modelValue: null,
|
|
19278
19355
|
role: 'combobox'
|
|
19279
|
-
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
19280
|
-
...makeTransitionProps({
|
|
19281
|
-
transition: false
|
|
19282
|
-
})
|
|
19356
|
+
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
19283
19357
|
}, 'VCombobox');
|
|
19284
19358
|
const VCombobox = genericComponent()({
|
|
19285
19359
|
name: 'VCombobox',
|
|
@@ -19323,13 +19397,16 @@ const VCombobox = genericComponent()({
|
|
|
19323
19397
|
const hasChips = computed(() => !!(props.chips || slots.chip));
|
|
19324
19398
|
const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
|
|
19325
19399
|
const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
|
|
19400
|
+
const _searchLock = shallowRef(null);
|
|
19326
19401
|
const search = computed({
|
|
19327
19402
|
get: () => {
|
|
19328
19403
|
return _search.value;
|
|
19329
19404
|
},
|
|
19330
19405
|
set: async val => {
|
|
19331
19406
|
_search.value = val ?? '';
|
|
19332
|
-
if (!props.multiple && !hasSelectionSlot.value) {
|
|
19407
|
+
if (val === null || val === '' && !props.multiple && !hasSelectionSlot.value) {
|
|
19408
|
+
model.value = [];
|
|
19409
|
+
} else if (!props.multiple && !hasSelectionSlot.value) {
|
|
19333
19410
|
model.value = [transformItem$3(props, val)];
|
|
19334
19411
|
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
|
19335
19412
|
}
|
|
@@ -19357,9 +19434,9 @@ const VCombobox = genericComponent()({
|
|
|
19357
19434
|
const {
|
|
19358
19435
|
filteredItems,
|
|
19359
19436
|
getMatches
|
|
19360
|
-
} = useFilter(props, items, () => props.alwaysFilter || !isPristine.value ? search.value : '');
|
|
19437
|
+
} = useFilter(props, items, () => _searchLock.value ?? (props.alwaysFilter || !isPristine.value ? search.value : ''));
|
|
19361
19438
|
const displayItems = computed(() => {
|
|
19362
|
-
if (props.hideSelected) {
|
|
19439
|
+
if (props.hideSelected && _searchLock.value === null) {
|
|
19363
19440
|
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
|
19364
19441
|
}
|
|
19365
19442
|
return filteredItems.value;
|
|
@@ -19440,22 +19517,19 @@ const VCombobox = genericComponent()({
|
|
|
19440
19517
|
if (['Escape'].includes(e.key)) {
|
|
19441
19518
|
menu.value = false;
|
|
19442
19519
|
}
|
|
19443
|
-
if (['Enter', '
|
|
19444
|
-
|
|
19445
|
-
|
|
19446
|
-
|
|
19447
|
-
|
|
19448
|
-
|
|
19449
|
-
|
|
19450
|
-
select(filteredItems.value[0]);
|
|
19451
|
-
}
|
|
19452
|
-
isPristine.value = true;
|
|
19520
|
+
if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {
|
|
19521
|
+
let {
|
|
19522
|
+
value
|
|
19523
|
+
} = _ref2;
|
|
19524
|
+
return value === displayItems.value[0].value;
|
|
19525
|
+
})) {
|
|
19526
|
+
select(filteredItems.value[0]);
|
|
19453
19527
|
}
|
|
19454
19528
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
19455
19529
|
listRef.value?.focus('next');
|
|
19456
19530
|
}
|
|
19457
19531
|
if (e.key === 'Enter' && search.value) {
|
|
19458
|
-
select(transformItem$3(props, search.value));
|
|
19532
|
+
select(transformItem$3(props, search.value), true, true);
|
|
19459
19533
|
if (hasSelectionSlot.value) _search.value = '';
|
|
19460
19534
|
}
|
|
19461
19535
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
@@ -19503,10 +19577,12 @@ const VCombobox = genericComponent()({
|
|
|
19503
19577
|
isPristine.value = true;
|
|
19504
19578
|
vTextFieldRef.value?.focus();
|
|
19505
19579
|
}
|
|
19580
|
+
_searchLock.value = null;
|
|
19506
19581
|
}
|
|
19507
19582
|
/** @param set - null means toggle */
|
|
19508
19583
|
function select(item) {
|
|
19509
19584
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
19585
|
+
let keepMenu = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
19510
19586
|
if (!item || item.props.disabled) return;
|
|
19511
19587
|
if (props.multiple) {
|
|
19512
19588
|
const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
|
|
@@ -19524,11 +19600,14 @@ const VCombobox = genericComponent()({
|
|
|
19524
19600
|
} else {
|
|
19525
19601
|
const add = set !== false;
|
|
19526
19602
|
model.value = add ? [item] : [];
|
|
19603
|
+
if ((!isPristine.value || props.alwaysFilter) && _search.value) {
|
|
19604
|
+
_searchLock.value = _search.value;
|
|
19605
|
+
}
|
|
19527
19606
|
_search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
19528
19607
|
|
|
19529
19608
|
// watch for search watcher to trigger
|
|
19530
19609
|
nextTick(() => {
|
|
19531
|
-
menu.value =
|
|
19610
|
+
menu.value = keepMenu;
|
|
19532
19611
|
isPristine.value = true;
|
|
19533
19612
|
});
|
|
19534
19613
|
}
|
|
@@ -19542,9 +19621,6 @@ const VCombobox = genericComponent()({
|
|
|
19542
19621
|
function onFocusout(e) {
|
|
19543
19622
|
listHasFocus.value = false;
|
|
19544
19623
|
}
|
|
19545
|
-
function onUpdateModelValue(v) {
|
|
19546
|
-
if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
|
|
19547
|
-
}
|
|
19548
19624
|
watch(isFocused, (val, oldVal) => {
|
|
19549
19625
|
if (val || val === oldVal) return;
|
|
19550
19626
|
selectionIndex.value = -1;
|
|
@@ -19567,13 +19643,14 @@ const VCombobox = genericComponent()({
|
|
|
19567
19643
|
}
|
|
19568
19644
|
}
|
|
19569
19645
|
});
|
|
19570
|
-
watch(menu,
|
|
19571
|
-
if (!props.hideSelected &&
|
|
19646
|
+
watch(menu, val => {
|
|
19647
|
+
if (!props.hideSelected && val && model.value.length && isPristine.value) {
|
|
19572
19648
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
|
19573
19649
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
19574
19650
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
19575
19651
|
});
|
|
19576
19652
|
}
|
|
19653
|
+
if (val) _searchLock.value = null;
|
|
19577
19654
|
});
|
|
19578
19655
|
watch(items, (newVal, oldVal) => {
|
|
19579
19656
|
if (menu.value) return;
|
|
@@ -19589,7 +19666,7 @@ const VCombobox = genericComponent()({
|
|
|
19589
19666
|
"ref": vTextFieldRef
|
|
19590
19667
|
}, textFieldProps, {
|
|
19591
19668
|
"modelValue": search.value,
|
|
19592
|
-
"onUpdate:modelValue":
|
|
19669
|
+
"onUpdate:modelValue": $event => search.value = $event,
|
|
19593
19670
|
"focused": isFocused.value,
|
|
19594
19671
|
"onUpdate:focused": $event => isFocused.value = $event,
|
|
19595
19672
|
"validationValue": model.externalValue,
|
|
@@ -19624,7 +19701,6 @@ const VCombobox = genericComponent()({
|
|
|
19624
19701
|
"maxHeight": 310,
|
|
19625
19702
|
"openOnClick": false,
|
|
19626
19703
|
"closeOnContentClick": false,
|
|
19627
|
-
"transition": props.transition,
|
|
19628
19704
|
"onAfterEnter": onAfterEnter,
|
|
19629
19705
|
"onAfterLeave": onAfterLeave
|
|
19630
19706
|
}, props.menuProps), {
|
|
@@ -24104,7 +24180,7 @@ const VDatePicker = genericComponent()({
|
|
|
24104
24180
|
function isAllowedInRange(start, end) {
|
|
24105
24181
|
const allowedDates = props.allowedDates;
|
|
24106
24182
|
if (typeof allowedDates !== 'function') return true;
|
|
24107
|
-
const days = adapter.getDiff(end, start, 'days');
|
|
24183
|
+
const days = 1 + adapter.getDiff(new Date(`${adapter.toISO(end)}T00:00:00Z`), new Date(`${adapter.toISO(start)}T00:00:00Z`), 'days');
|
|
24108
24184
|
for (let i = 0; i < days; i++) {
|
|
24109
24185
|
if (allowedDates(adapter.addDays(start, i))) return true;
|
|
24110
24186
|
}
|
|
@@ -26607,7 +26683,7 @@ const VNumberInput = genericComponent()({
|
|
|
26607
26683
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
|
26608
26684
|
const _inputText = shallowRef(null);
|
|
26609
26685
|
watchEffect(() => {
|
|
26610
|
-
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value) === model.value) ; else if (model.value == null) {
|
|
26686
|
+
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value?.replace(decimalSeparator.value, '.')) === model.value) ; else if (model.value == null) {
|
|
26611
26687
|
_inputText.value = null;
|
|
26612
26688
|
} else if (!isNaN(model.value)) {
|
|
26613
26689
|
_inputText.value = correctPrecision(model.value);
|
|
@@ -26702,6 +26778,7 @@ const VNumberInput = genericComponent()({
|
|
|
26702
26778
|
if (!new RegExp(`^-?\\d*${escapeForRegex(decimalSeparator.value)}?\\d*$`).test(potentialNewInputVal)) {
|
|
26703
26779
|
e.preventDefault();
|
|
26704
26780
|
inputElement.value = potentialNewNumber;
|
|
26781
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
26705
26782
|
}
|
|
26706
26783
|
if (props.precision == null) return;
|
|
26707
26784
|
|
|
@@ -26709,13 +26786,15 @@ const VNumberInput = genericComponent()({
|
|
|
26709
26786
|
if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {
|
|
26710
26787
|
e.preventDefault();
|
|
26711
26788
|
inputElement.value = potentialNewNumber;
|
|
26789
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
26712
26790
|
const cursorPosition = (selectionStart ?? 0) + e.data.length;
|
|
26713
26791
|
inputElement.setSelectionRange(cursorPosition, cursorPosition);
|
|
26714
26792
|
}
|
|
26715
26793
|
// Ignore decimal separator when precision = 0
|
|
26716
|
-
if (props.precision === 0 && potentialNewInputVal.
|
|
26794
|
+
if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {
|
|
26717
26795
|
e.preventDefault();
|
|
26718
26796
|
inputElement.value = potentialNewNumber;
|
|
26797
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
26719
26798
|
}
|
|
26720
26799
|
}
|
|
26721
26800
|
async function onKeydown(e) {
|
|
@@ -27911,12 +27990,12 @@ const VSkeletonLoader = genericComponent()({
|
|
|
27911
27990
|
ariaLabel: t(props.loadingText),
|
|
27912
27991
|
role: 'alert'
|
|
27913
27992
|
};
|
|
27914
|
-
return
|
|
27993
|
+
return isLoading ? createElementVNode("div", mergeProps({
|
|
27915
27994
|
"class": ['v-skeleton-loader', {
|
|
27916
27995
|
'v-skeleton-loader--boilerplate': props.boilerplate
|
|
27917
27996
|
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
|
|
27918
27997
|
"style": [backgroundColorStyles.value, dimensionStyles.value]
|
|
27919
|
-
}, loadingProps, attrs), [items.value]) : slots.default?.()]);
|
|
27998
|
+
}, loadingProps, attrs), [items.value]) : createElementVNode(Fragment, null, [slots.default?.()]);
|
|
27920
27999
|
});
|
|
27921
28000
|
return {};
|
|
27922
28001
|
}
|
|
@@ -29781,6 +29860,10 @@ const VTextarea = genericComponent()({
|
|
|
29781
29860
|
const vFieldRef = ref();
|
|
29782
29861
|
const controlHeight = shallowRef('');
|
|
29783
29862
|
const textareaRef = ref();
|
|
29863
|
+
const scrollbarWidth = ref(0);
|
|
29864
|
+
const {
|
|
29865
|
+
platform
|
|
29866
|
+
} = useDisplay();
|
|
29784
29867
|
const autocomplete = useAutocomplete(props);
|
|
29785
29868
|
const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
|
|
29786
29869
|
function onFocus() {
|
|
@@ -29825,6 +29908,18 @@ const VTextarea = genericComponent()({
|
|
|
29825
29908
|
if (!props.autoGrow) rows.value = Number(props.rows);
|
|
29826
29909
|
});
|
|
29827
29910
|
function calculateInputHeight() {
|
|
29911
|
+
nextTick(() => {
|
|
29912
|
+
if (!textareaRef.value) return;
|
|
29913
|
+
if (platform.value.firefox) {
|
|
29914
|
+
scrollbarWidth.value = 12;
|
|
29915
|
+
return;
|
|
29916
|
+
}
|
|
29917
|
+
const {
|
|
29918
|
+
offsetWidth,
|
|
29919
|
+
clientWidth
|
|
29920
|
+
} = textareaRef.value;
|
|
29921
|
+
scrollbarWidth.value = Math.max(0, offsetWidth - clientWidth);
|
|
29922
|
+
});
|
|
29828
29923
|
if (!props.autoGrow) return;
|
|
29829
29924
|
nextTick(() => {
|
|
29830
29925
|
if (!sizerRef.value || !vFieldRef.value) return;
|
|
@@ -29885,7 +29980,9 @@ const VTextarea = genericComponent()({
|
|
|
29885
29980
|
'v-textarea--no-resize': props.noResize || props.autoGrow,
|
|
29886
29981
|
'v-input--plain-underlined': isPlainOrUnderlined.value
|
|
29887
29982
|
}, props.class],
|
|
29888
|
-
"style":
|
|
29983
|
+
"style": [{
|
|
29984
|
+
'--v-textarea-scroll-bar-width': convertToUnit(scrollbarWidth.value)
|
|
29985
|
+
}, props.style]
|
|
29889
29986
|
}, rootAttrs, inputProps, {
|
|
29890
29987
|
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
|
29891
29988
|
"focused": isFocused.value
|
|
@@ -34313,7 +34410,7 @@ const makeVColorInputProps = propsFactory({
|
|
|
34313
34410
|
...makeFocusProps(),
|
|
34314
34411
|
...makeVConfirmEditProps(),
|
|
34315
34412
|
...makeVTextFieldProps(),
|
|
34316
|
-
...omit(makeVColorPickerProps(), ['
|
|
34413
|
+
...omit(makeVColorPickerProps(), ['location', 'height', 'minHeight', 'maxHeight'])
|
|
34317
34414
|
}, 'VColorInput');
|
|
34318
34415
|
const VColorInput = genericComponent()({
|
|
34319
34416
|
name: 'VColorInput',
|
|
@@ -34352,7 +34449,7 @@ const VColorInput = genericComponent()({
|
|
|
34352
34449
|
}
|
|
34353
34450
|
useRender(() => {
|
|
34354
34451
|
const confirmEditProps = VConfirmEdit.filterProps(props);
|
|
34355
|
-
const colorPickerProps = VColorPicker.filterProps(omit(props, ['active', 'color']));
|
|
34452
|
+
const colorPickerProps = VColorPicker.filterProps(omit(props, ['active', 'bgColor', 'color', 'rounded', 'maxWidth', 'minWidth', 'width']));
|
|
34356
34453
|
const textFieldProps = VTextField.filterProps(props);
|
|
34357
34454
|
const slotWithPip = props.hidePip ? undefined : {
|
|
34358
34455
|
[props.pipLocation]: arg => createElementVNode(Fragment, null, [createVNode(VAvatar, {
|
|
@@ -34570,7 +34667,7 @@ const makeVDateInputProps = propsFactory({
|
|
|
34570
34667
|
...omit(makeVDatePickerProps({
|
|
34571
34668
|
hideHeader: true,
|
|
34572
34669
|
showAdjacentMonths: true
|
|
34573
|
-
}), ['active', 'location', 'rounded'])
|
|
34670
|
+
}), ['active', 'location', 'rounded', 'height', 'minHeight', 'maxHeight'])
|
|
34574
34671
|
}, 'VDateInput');
|
|
34575
34672
|
const VDateInput = genericComponent()({
|
|
34576
34673
|
name: 'VDateInput',
|
|
@@ -34601,6 +34698,15 @@ const VDateInput = genericComponent()({
|
|
|
34601
34698
|
const {
|
|
34602
34699
|
mobile
|
|
34603
34700
|
} = useDisplay(props);
|
|
34701
|
+
const clamp = date => {
|
|
34702
|
+
if (props.max && adapter.isAfter(date, props.max)) {
|
|
34703
|
+
return props.max;
|
|
34704
|
+
}
|
|
34705
|
+
if (props.min && adapter.isBefore(date, props.min)) {
|
|
34706
|
+
return props.min;
|
|
34707
|
+
}
|
|
34708
|
+
return date;
|
|
34709
|
+
};
|
|
34604
34710
|
const emptyModelValue = () => props.multiple ? [] : null;
|
|
34605
34711
|
const model = useProxiedModel(props, 'modelValue', emptyModelValue(), val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
|
|
34606
34712
|
const menu = useProxiedModel(props, 'menu');
|
|
@@ -34651,7 +34757,7 @@ const VDateInput = genericComponent()({
|
|
|
34651
34757
|
if (!menu.value || !isFocused.value) {
|
|
34652
34758
|
menu.value = true;
|
|
34653
34759
|
}
|
|
34654
|
-
if (props.updateOn.includes('enter')) {
|
|
34760
|
+
if (props.updateOn.includes('enter') && !props.readonly) {
|
|
34655
34761
|
onUserInput(e.target);
|
|
34656
34762
|
}
|
|
34657
34763
|
}
|
|
@@ -34678,7 +34784,7 @@ const VDateInput = genericComponent()({
|
|
|
34678
34784
|
model.value = emptyModelValue();
|
|
34679
34785
|
}
|
|
34680
34786
|
function onBlur(e) {
|
|
34681
|
-
if (props.updateOn.includes('blur')) {
|
|
34787
|
+
if (props.updateOn.includes('blur') && !props.readonly) {
|
|
34682
34788
|
onUserInput(e.target);
|
|
34683
34789
|
}
|
|
34684
34790
|
|
|
@@ -34696,23 +34802,23 @@ const VDateInput = genericComponent()({
|
|
|
34696
34802
|
model.value = emptyModelValue();
|
|
34697
34803
|
} else if (!props.multiple) {
|
|
34698
34804
|
if (isValid(value)) {
|
|
34699
|
-
model.value = parseDate(value);
|
|
34805
|
+
model.value = clamp(parseDate(value));
|
|
34700
34806
|
}
|
|
34701
34807
|
} else {
|
|
34702
34808
|
const parts = value.trim().split(/\D+-\D+|[^\d\-/.]+/);
|
|
34703
34809
|
if (parts.every(isValid)) {
|
|
34704
34810
|
if (props.multiple === 'range') {
|
|
34705
|
-
const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
|
|
34811
|
+
const [start, stop] = parts.map(parseDate).map(clamp).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
|
|
34706
34812
|
model.value = createDateRange(adapter, start, stop);
|
|
34707
34813
|
} else {
|
|
34708
|
-
model.value = parts.map(parseDate);
|
|
34814
|
+
model.value = parts.map(parseDate).map(clamp);
|
|
34709
34815
|
}
|
|
34710
34816
|
}
|
|
34711
34817
|
}
|
|
34712
34818
|
}
|
|
34713
34819
|
useRender(() => {
|
|
34714
34820
|
const confirmEditProps = VConfirmEdit.filterProps(props);
|
|
34715
|
-
const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
|
|
34821
|
+
const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'bgColor', 'color', 'location', 'rounded', 'maxWidth', 'minWidth', 'width']));
|
|
34716
34822
|
const datePickerSlots = pick(slots, ['title', 'header', 'day', 'month', 'year']);
|
|
34717
34823
|
const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']));
|
|
34718
34824
|
return createVNode(VTextField, mergeProps({
|
|
@@ -35157,7 +35263,7 @@ const VMaskInput = genericComponent()({
|
|
|
35157
35263
|
// Always display masked value in input when mask is applied
|
|
35158
35264
|
val => props.mask ? mask.mask(mask.unmask(val)) : val, val => {
|
|
35159
35265
|
if (props.mask) {
|
|
35160
|
-
const valueWithoutDelimiters = removeMaskDelimiters(val);
|
|
35266
|
+
const valueWithoutDelimiters = val ? removeMaskDelimiters(val) : '';
|
|
35161
35267
|
|
|
35162
35268
|
// E.g. mask is #-# and the input value is '2-23'
|
|
35163
35269
|
// model-value should be enforced to '2-2'
|
|
@@ -37903,7 +38009,7 @@ function createVuetify$1() {
|
|
|
37903
38009
|
};
|
|
37904
38010
|
});
|
|
37905
38011
|
}
|
|
37906
|
-
const version$1 = "3.10.
|
|
38012
|
+
const version$1 = "3.10.6";
|
|
37907
38013
|
createVuetify$1.version = version$1;
|
|
37908
38014
|
|
|
37909
38015
|
// Vue's inject() can only be used in setup
|
|
@@ -38201,7 +38307,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
38201
38307
|
|
|
38202
38308
|
/* eslint-disable local-rules/sort-imports */
|
|
38203
38309
|
|
|
38204
|
-
const version = "3.10.
|
|
38310
|
+
const version = "3.10.6";
|
|
38205
38311
|
|
|
38206
38312
|
/* eslint-disable local-rules/sort-imports */
|
|
38207
38313
|
|