vuetify 3.10.4 → 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 +1910 -1922
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +182 -182
- package/dist/json/tags.json +6 -9
- package/dist/json/web-types.json +3674 -3697
- package/dist/vuetify-labs.cjs +211 -107
- package/dist/vuetify-labs.css +5703 -5642
- package/dist/vuetify-labs.d.ts +168 -175
- package/dist/vuetify-labs.esm.js +211 -107
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +211 -107
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +192 -97
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5916 -5877
- package/dist/vuetify.d.ts +168 -140
- package/dist/vuetify.esm.js +192 -97
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +192 -97
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +124 -114
- 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/VBadge/VBadge.css +10 -0
- package/lib/components/VBadge/VBadge.sass +9 -0
- 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/VDataTable/VDataTableGroupHeaderRow.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +4 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableRow.js +3 -0
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.d.ts +29 -0
- package/lib/components/VDataTable/VDataTableRows.js +4 -3
- package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +1 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDivider/VDivider.css +1 -0
- package/lib/components/VDivider/VDivider.sass +1 -0
- package/lib/components/VKbd/_variables.scss +3 -1
- package/lib/components/VList/VListItem.css +14 -12
- package/lib/components/VList/VListItem.js +5 -3
- 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/VTable/VTable.js +20 -32
- package/lib/components/VTable/VTable.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 +66 -66
- 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 +4 -4
- 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.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
|
*/
|
|
@@ -397,8 +397,10 @@ function callEvent(handler) {
|
|
|
397
397
|
}
|
|
398
398
|
function focusableChildren(el) {
|
|
399
399
|
let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
400
|
-
const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex="-1"])' : ''}:not([disabled])`).join(', ');
|
|
401
|
-
return [...el.querySelectorAll(targets)]
|
|
400
|
+
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(', ');
|
|
401
|
+
return [...el.querySelectorAll(targets)].filter(x => !x.closest('[inert]')) // does not have inert parent
|
|
402
|
+
.filter(x => !!x.offsetParent || x.getClientRects().length > 0) // is rendered
|
|
403
|
+
.filter(x => !x.parentElement?.closest('details:not([open])') || x.tagName === 'SUMMARY' && x.parentElement?.tagName === 'DETAILS');
|
|
402
404
|
}
|
|
403
405
|
function getNextElement(elements, location, condition) {
|
|
404
406
|
let _el;
|
|
@@ -5019,7 +5021,7 @@ function useGroupItem(props, injectKey) {
|
|
|
5019
5021
|
function unregister() {
|
|
5020
5022
|
group?.unregister(id);
|
|
5021
5023
|
}
|
|
5022
|
-
|
|
5024
|
+
register();
|
|
5023
5025
|
onBeforeUnmount(() => unregister());
|
|
5024
5026
|
const isSelected = computed(() => {
|
|
5025
5027
|
return group.isSelected(id);
|
|
@@ -8339,6 +8341,10 @@ function getOffsetPosition(isHorizontal, element) {
|
|
|
8339
8341
|
const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
|
8340
8342
|
const makeVSlideGroupProps = propsFactory({
|
|
8341
8343
|
centerActive: Boolean,
|
|
8344
|
+
scrollToActive: {
|
|
8345
|
+
type: Boolean,
|
|
8346
|
+
default: true
|
|
8347
|
+
},
|
|
8342
8348
|
contentClass: null,
|
|
8343
8349
|
direction: {
|
|
8344
8350
|
type: String,
|
|
@@ -8427,7 +8433,7 @@ const VSlideGroup = genericComponent()({
|
|
|
8427
8433
|
contentSize.value = contentRect.value[sizeProperty];
|
|
8428
8434
|
isOverflowing.value = containerSize.value + 1 < contentSize.value;
|
|
8429
8435
|
}
|
|
8430
|
-
if (firstSelectedIndex.value >= 0 && contentRef.el) {
|
|
8436
|
+
if (props.scrollToActive && firstSelectedIndex.value >= 0 && contentRef.el) {
|
|
8431
8437
|
// TODO: Is this too naive? Should we store element references in group composable?
|
|
8432
8438
|
const selectedElement = contentRef.el.children[lastSelectedIndex.value];
|
|
8433
8439
|
scrollToChildren(selectedElement, props.centerActive);
|
|
@@ -8696,7 +8702,9 @@ const makeVChipGroupProps = propsFactory({
|
|
|
8696
8702
|
type: Function,
|
|
8697
8703
|
default: deepEqual
|
|
8698
8704
|
},
|
|
8699
|
-
...makeVSlideGroupProps(
|
|
8705
|
+
...makeVSlideGroupProps({
|
|
8706
|
+
scrollToActive: false
|
|
8707
|
+
}),
|
|
8700
8708
|
...makeComponentProps(),
|
|
8701
8709
|
...makeGroupProps({
|
|
8702
8710
|
selectedClass: 'v-chip--selected'
|
|
@@ -9795,7 +9803,9 @@ const useNestedItem = (id, isDisabled, isGroup) => {
|
|
|
9795
9803
|
};
|
|
9796
9804
|
onBeforeMount(() => {
|
|
9797
9805
|
if (!parent.isGroupActivator) {
|
|
9798
|
-
|
|
9806
|
+
nextTick(() => {
|
|
9807
|
+
parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup);
|
|
9808
|
+
});
|
|
9799
9809
|
}
|
|
9800
9810
|
});
|
|
9801
9811
|
onBeforeUnmount(() => {
|
|
@@ -9803,6 +9813,14 @@ const useNestedItem = (id, isDisabled, isGroup) => {
|
|
|
9803
9813
|
parent.root.unregister(computedId.value);
|
|
9804
9814
|
}
|
|
9805
9815
|
});
|
|
9816
|
+
watch(computedId, (val, oldVal) => {
|
|
9817
|
+
if (!parent.isGroupActivator) {
|
|
9818
|
+
parent.root.unregister(oldVal);
|
|
9819
|
+
nextTick(() => {
|
|
9820
|
+
parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup);
|
|
9821
|
+
});
|
|
9822
|
+
}
|
|
9823
|
+
});
|
|
9806
9824
|
isGroup && provide(VNestedSymbol, item);
|
|
9807
9825
|
return item;
|
|
9808
9826
|
};
|
|
@@ -10034,7 +10052,7 @@ const VListItem = genericComponent()({
|
|
|
10034
10052
|
const isLink = toRef(() => props.link !== false && link.isLink.value);
|
|
10035
10053
|
const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
|
|
10036
10054
|
const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
|
|
10037
|
-
const role = computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
|
|
10055
|
+
const role = computed(() => list ? isLink.value ? 'link' : isSelectable.value ? 'option' : 'listitem' : undefined);
|
|
10038
10056
|
const ariaSelected = computed(() => {
|
|
10039
10057
|
if (!isSelectable.value) return undefined;
|
|
10040
10058
|
return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
|
|
@@ -10053,7 +10071,9 @@ const VListItem = genericComponent()({
|
|
|
10053
10071
|
handleActiveLink();
|
|
10054
10072
|
});
|
|
10055
10073
|
onBeforeMount(() => {
|
|
10056
|
-
if (link.isActive?.value)
|
|
10074
|
+
if (link.isActive?.value) {
|
|
10075
|
+
nextTick(() => handleActiveLink());
|
|
10076
|
+
}
|
|
10057
10077
|
});
|
|
10058
10078
|
function handleActiveLink() {
|
|
10059
10079
|
if (parent.value != null) {
|
|
@@ -12301,25 +12321,41 @@ const VMenu = genericComponent()({
|
|
|
12301
12321
|
document.removeEventListener('focusin', onFocusIn);
|
|
12302
12322
|
});
|
|
12303
12323
|
onDeactivated(() => isActive.value = false);
|
|
12324
|
+
let focusTrapSuppressed = false;
|
|
12325
|
+
let focusTrapSuppressionTimeout = -1;
|
|
12326
|
+
async function onPointerdown() {
|
|
12327
|
+
focusTrapSuppressed = true;
|
|
12328
|
+
focusTrapSuppressionTimeout = window.setTimeout(() => {
|
|
12329
|
+
focusTrapSuppressed = false;
|
|
12330
|
+
}, 100);
|
|
12331
|
+
}
|
|
12304
12332
|
async function onFocusIn(e) {
|
|
12305
12333
|
const before = e.relatedTarget;
|
|
12306
12334
|
const after = e.target;
|
|
12307
12335
|
await nextTick();
|
|
12308
12336
|
if (isActive.value && before !== after && overlay.value?.contentEl &&
|
|
12309
|
-
// We're the
|
|
12310
|
-
overlay.value?.
|
|
12337
|
+
// We're the menu without open submenus or overlays
|
|
12338
|
+
overlay.value?.localTop &&
|
|
12311
12339
|
// It isn't the document or the menu body
|
|
12312
12340
|
![document, overlay.value.contentEl].includes(after) &&
|
|
12313
12341
|
// It isn't inside the menu body
|
|
12314
12342
|
!overlay.value.contentEl.contains(after)) {
|
|
12315
|
-
|
|
12316
|
-
|
|
12343
|
+
if (focusTrapSuppressed) {
|
|
12344
|
+
if (!props.openOnHover || !overlay.value.activatorEl?.contains(after)) {
|
|
12345
|
+
isActive.value = false;
|
|
12346
|
+
}
|
|
12347
|
+
} else {
|
|
12348
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
12349
|
+
focusable[0]?.focus();
|
|
12350
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
12351
|
+
}
|
|
12317
12352
|
}
|
|
12318
12353
|
}
|
|
12319
12354
|
watch(isActive, val => {
|
|
12320
12355
|
if (val) {
|
|
12321
12356
|
parent?.register();
|
|
12322
12357
|
if (IN_BROWSER && !props.disableInitialFocus) {
|
|
12358
|
+
document.addEventListener('pointerdown', onPointerdown);
|
|
12323
12359
|
document.addEventListener('focusin', onFocusIn, {
|
|
12324
12360
|
once: true
|
|
12325
12361
|
});
|
|
@@ -12327,6 +12363,8 @@ const VMenu = genericComponent()({
|
|
|
12327
12363
|
} else {
|
|
12328
12364
|
parent?.unregister();
|
|
12329
12365
|
if (IN_BROWSER) {
|
|
12366
|
+
clearTimeout(focusTrapSuppressionTimeout);
|
|
12367
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
12330
12368
|
document.removeEventListener('focusin', onFocusIn);
|
|
12331
12369
|
}
|
|
12332
12370
|
}
|
|
@@ -12920,7 +12958,6 @@ const VTextField = genericComponent()({
|
|
|
12920
12958
|
e.stopPropagation();
|
|
12921
12959
|
onFocus();
|
|
12922
12960
|
nextTick(() => {
|
|
12923
|
-
model.value = null;
|
|
12924
12961
|
reset();
|
|
12925
12962
|
callEvent(props['onClick:clear'], e);
|
|
12926
12963
|
});
|
|
@@ -12975,8 +13012,6 @@ const VTextField = genericComponent()({
|
|
|
12975
13012
|
"onMousedown": onControlMousedown,
|
|
12976
13013
|
"onClick": onControlClick,
|
|
12977
13014
|
"onClick:clear": e => onClear(e, reset),
|
|
12978
|
-
"onClick:prependInner": props['onClick:prependInner'],
|
|
12979
|
-
"onClick:appendInner": props['onClick:appendInner'],
|
|
12980
13015
|
"role": props.role
|
|
12981
13016
|
}, omit(fieldProps, ['onClick:clear']), {
|
|
12982
13017
|
"id": id.value,
|
|
@@ -13152,7 +13187,7 @@ function useVirtual(props, items) {
|
|
|
13152
13187
|
const start = performance.now();
|
|
13153
13188
|
offsets[0] = 0;
|
|
13154
13189
|
const length = items.value.length;
|
|
13155
|
-
for (let i = 1; i <= length
|
|
13190
|
+
for (let i = 1; i <= length; i++) {
|
|
13156
13191
|
offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1);
|
|
13157
13192
|
}
|
|
13158
13193
|
updateTime.value = Math.max(updateTime.value, performance.now() - start);
|
|
@@ -13187,7 +13222,7 @@ function useVirtual(props, items) {
|
|
|
13187
13222
|
}
|
|
13188
13223
|
}
|
|
13189
13224
|
function calculateOffset(index) {
|
|
13190
|
-
index = clamp(index, 0, items.value.length
|
|
13225
|
+
index = clamp(index, 0, items.value.length);
|
|
13191
13226
|
const whole = Math.floor(index);
|
|
13192
13227
|
const fraction = index % 1;
|
|
13193
13228
|
const next = whole + 1;
|
|
@@ -14192,10 +14227,7 @@ const makeVAutocompleteProps = propsFactory({
|
|
|
14192
14227
|
...omit(makeVTextFieldProps({
|
|
14193
14228
|
modelValue: null,
|
|
14194
14229
|
role: 'combobox'
|
|
14195
|
-
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
14196
|
-
...makeTransitionProps({
|
|
14197
|
-
transition: false
|
|
14198
|
-
})
|
|
14230
|
+
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
14199
14231
|
}, 'VAutocomplete');
|
|
14200
14232
|
const VAutocomplete = genericComponent()({
|
|
14201
14233
|
name: 'VAutocomplete',
|
|
@@ -14220,6 +14252,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14220
14252
|
const vMenuRef = ref();
|
|
14221
14253
|
const vVirtualScrollRef = ref();
|
|
14222
14254
|
const selectionIndex = shallowRef(-1);
|
|
14255
|
+
const _searchLock = shallowRef(null);
|
|
14223
14256
|
const {
|
|
14224
14257
|
items,
|
|
14225
14258
|
transformIn,
|
|
@@ -14241,9 +14274,9 @@ const VAutocomplete = genericComponent()({
|
|
|
14241
14274
|
const {
|
|
14242
14275
|
filteredItems,
|
|
14243
14276
|
getMatches
|
|
14244
|
-
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
|
14277
|
+
} = useFilter(props, items, () => _searchLock.value ?? (isPristine.value ? '' : search.value));
|
|
14245
14278
|
const displayItems = computed(() => {
|
|
14246
|
-
if (props.hideSelected) {
|
|
14279
|
+
if (props.hideSelected && _searchLock.value === null) {
|
|
14247
14280
|
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
|
14248
14281
|
}
|
|
14249
14282
|
return filteredItems.value;
|
|
@@ -14374,6 +14407,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14374
14407
|
isPristine.value = true;
|
|
14375
14408
|
vTextFieldRef.value?.focus();
|
|
14376
14409
|
}
|
|
14410
|
+
_searchLock.value = null;
|
|
14377
14411
|
}
|
|
14378
14412
|
function onFocusin(e) {
|
|
14379
14413
|
isFocused.value = true;
|
|
@@ -14409,6 +14443,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14409
14443
|
} else {
|
|
14410
14444
|
const add = set !== false;
|
|
14411
14445
|
model.value = add ? [item] : [];
|
|
14446
|
+
_searchLock.value = isPristine.value ? '' : search.value ?? '';
|
|
14412
14447
|
search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
14413
14448
|
|
|
14414
14449
|
// watch for search watcher to trigger
|
|
@@ -14428,6 +14463,9 @@ const VAutocomplete = genericComponent()({
|
|
|
14428
14463
|
} else {
|
|
14429
14464
|
if (!props.multiple && search.value == null) model.value = [];
|
|
14430
14465
|
menu.value = false;
|
|
14466
|
+
if (!isPristine.value && search.value) {
|
|
14467
|
+
_searchLock.value = search.value;
|
|
14468
|
+
}
|
|
14431
14469
|
search.value = '';
|
|
14432
14470
|
selectionIndex.value = -1;
|
|
14433
14471
|
}
|
|
@@ -14437,13 +14475,14 @@ const VAutocomplete = genericComponent()({
|
|
|
14437
14475
|
if (val) menu.value = true;
|
|
14438
14476
|
isPristine.value = !val;
|
|
14439
14477
|
});
|
|
14440
|
-
watch(menu,
|
|
14441
|
-
if (!props.hideSelected &&
|
|
14478
|
+
watch(menu, val => {
|
|
14479
|
+
if (!props.hideSelected && val && model.value.length && isPristine.value) {
|
|
14442
14480
|
const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));
|
|
14443
14481
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
14444
14482
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
14445
14483
|
});
|
|
14446
14484
|
}
|
|
14485
|
+
if (val) _searchLock.value = null;
|
|
14447
14486
|
});
|
|
14448
14487
|
watch(items, (newVal, oldVal) => {
|
|
14449
14488
|
if (menu.value) return;
|
|
@@ -14494,7 +14533,6 @@ const VAutocomplete = genericComponent()({
|
|
|
14494
14533
|
"maxHeight": 310,
|
|
14495
14534
|
"openOnClick": false,
|
|
14496
14535
|
"closeOnContentClick": false,
|
|
14497
|
-
"transition": props.transition,
|
|
14498
14536
|
"onAfterEnter": onAfterEnter,
|
|
14499
14537
|
"onAfterLeave": onAfterLeave
|
|
14500
14538
|
}, props.menuProps), {
|
|
@@ -15922,7 +15960,21 @@ const VWindow = genericComponent()({
|
|
|
15922
15960
|
const activeIndex = computed(() => {
|
|
15923
15961
|
return group.items.value.findIndex(item => group.selected.value.includes(item.id));
|
|
15924
15962
|
});
|
|
15963
|
+
|
|
15964
|
+
// Fix for https://github.com/vuetifyjs/vuetify/issues/18447
|
|
15925
15965
|
watch(activeIndex, (newVal, oldVal) => {
|
|
15966
|
+
let scrollableParent;
|
|
15967
|
+
const savedScrollPosition = {
|
|
15968
|
+
x: 0,
|
|
15969
|
+
y: 0
|
|
15970
|
+
};
|
|
15971
|
+
if (IN_BROWSER && oldVal >= 0) {
|
|
15972
|
+
scrollableParent = getScrollParent(rootRef.value);
|
|
15973
|
+
|
|
15974
|
+
// Save current scroll position
|
|
15975
|
+
savedScrollPosition.x = scrollableParent.scrollLeft;
|
|
15976
|
+
savedScrollPosition.y = scrollableParent.scrollTop;
|
|
15977
|
+
}
|
|
15926
15978
|
const itemsLength = group.items.value.length;
|
|
15927
15979
|
const lastIndex = itemsLength - 1;
|
|
15928
15980
|
if (itemsLength <= 2) {
|
|
@@ -15934,7 +15986,32 @@ const VWindow = genericComponent()({
|
|
|
15934
15986
|
} else {
|
|
15935
15987
|
isReversed.value = newVal < oldVal;
|
|
15936
15988
|
}
|
|
15937
|
-
|
|
15989
|
+
nextTick(() => {
|
|
15990
|
+
if (!IN_BROWSER || !scrollableParent) return;
|
|
15991
|
+
const currentScrollY = scrollableParent.scrollTop;
|
|
15992
|
+
if (currentScrollY !== savedScrollPosition.y) {
|
|
15993
|
+
scrollableParent.scrollTo({
|
|
15994
|
+
left: savedScrollPosition.x,
|
|
15995
|
+
top: savedScrollPosition.y,
|
|
15996
|
+
behavior: 'instant'
|
|
15997
|
+
});
|
|
15998
|
+
}
|
|
15999
|
+
requestAnimationFrame(() => {
|
|
16000
|
+
if (!scrollableParent) return;
|
|
16001
|
+
const rafScrollY = scrollableParent.scrollTop;
|
|
16002
|
+
if (rafScrollY !== savedScrollPosition.y) {
|
|
16003
|
+
scrollableParent.scrollTo({
|
|
16004
|
+
left: savedScrollPosition.x,
|
|
16005
|
+
top: savedScrollPosition.y,
|
|
16006
|
+
behavior: 'instant'
|
|
16007
|
+
});
|
|
16008
|
+
}
|
|
16009
|
+
});
|
|
16010
|
+
});
|
|
16011
|
+
}, {
|
|
16012
|
+
flush: 'sync'
|
|
16013
|
+
}); // Run synchronously before DOM updates
|
|
16014
|
+
|
|
15938
16015
|
provide(VWindowSymbol, {
|
|
15939
16016
|
transition,
|
|
15940
16017
|
isReversed,
|
|
@@ -18839,7 +18916,7 @@ function createDate(options, locale) {
|
|
|
18839
18916
|
};
|
|
18840
18917
|
}
|
|
18841
18918
|
function createDateRange(adapter, start, stop) {
|
|
18842
|
-
const diff = adapter.getDiff(adapter.
|
|
18919
|
+
const diff = adapter.getDiff(new Date(`${adapter.toISO(stop ?? start)}T00:00:00Z`), new Date(`${adapter.toISO(start)}T00:00:00Z`), 'days');
|
|
18843
18920
|
const datesInRange = [start];
|
|
18844
18921
|
for (let i = 1; i < diff; i++) {
|
|
18845
18922
|
const nextDate = adapter.addDays(start, i);
|
|
@@ -19513,10 +19590,7 @@ const makeVComboboxProps = propsFactory({
|
|
|
19513
19590
|
...omit(makeVTextFieldProps({
|
|
19514
19591
|
modelValue: null,
|
|
19515
19592
|
role: 'combobox'
|
|
19516
|
-
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
19517
|
-
...makeTransitionProps({
|
|
19518
|
-
transition: false
|
|
19519
|
-
})
|
|
19593
|
+
}), ['validationValue', 'dirty', 'appendInnerIcon'])
|
|
19520
19594
|
}, 'VCombobox');
|
|
19521
19595
|
const VCombobox = genericComponent()({
|
|
19522
19596
|
name: 'VCombobox',
|
|
@@ -19560,13 +19634,16 @@ const VCombobox = genericComponent()({
|
|
|
19560
19634
|
const hasChips = computed(() => !!(props.chips || slots.chip));
|
|
19561
19635
|
const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
|
|
19562
19636
|
const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
|
|
19637
|
+
const _searchLock = shallowRef(null);
|
|
19563
19638
|
const search = computed({
|
|
19564
19639
|
get: () => {
|
|
19565
19640
|
return _search.value;
|
|
19566
19641
|
},
|
|
19567
19642
|
set: async val => {
|
|
19568
19643
|
_search.value = val ?? '';
|
|
19569
|
-
if (!props.multiple && !hasSelectionSlot.value) {
|
|
19644
|
+
if (val === null || val === '' && !props.multiple && !hasSelectionSlot.value) {
|
|
19645
|
+
model.value = [];
|
|
19646
|
+
} else if (!props.multiple && !hasSelectionSlot.value) {
|
|
19570
19647
|
model.value = [transformItem$3(props, val)];
|
|
19571
19648
|
nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
|
|
19572
19649
|
}
|
|
@@ -19594,9 +19671,9 @@ const VCombobox = genericComponent()({
|
|
|
19594
19671
|
const {
|
|
19595
19672
|
filteredItems,
|
|
19596
19673
|
getMatches
|
|
19597
|
-
} = useFilter(props, items, () => props.alwaysFilter || !isPristine.value ? search.value : '');
|
|
19674
|
+
} = useFilter(props, items, () => _searchLock.value ?? (props.alwaysFilter || !isPristine.value ? search.value : ''));
|
|
19598
19675
|
const displayItems = computed(() => {
|
|
19599
|
-
if (props.hideSelected) {
|
|
19676
|
+
if (props.hideSelected && _searchLock.value === null) {
|
|
19600
19677
|
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
|
19601
19678
|
}
|
|
19602
19679
|
return filteredItems.value;
|
|
@@ -19677,22 +19754,19 @@ const VCombobox = genericComponent()({
|
|
|
19677
19754
|
if (['Escape'].includes(e.key)) {
|
|
19678
19755
|
menu.value = false;
|
|
19679
19756
|
}
|
|
19680
|
-
if (['Enter', '
|
|
19681
|
-
|
|
19682
|
-
|
|
19683
|
-
|
|
19684
|
-
|
|
19685
|
-
|
|
19686
|
-
|
|
19687
|
-
select(filteredItems.value[0]);
|
|
19688
|
-
}
|
|
19689
|
-
isPristine.value = true;
|
|
19757
|
+
if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key) && !model.value.some(_ref2 => {
|
|
19758
|
+
let {
|
|
19759
|
+
value
|
|
19760
|
+
} = _ref2;
|
|
19761
|
+
return value === displayItems.value[0].value;
|
|
19762
|
+
})) {
|
|
19763
|
+
select(filteredItems.value[0]);
|
|
19690
19764
|
}
|
|
19691
19765
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
19692
19766
|
listRef.value?.focus('next');
|
|
19693
19767
|
}
|
|
19694
19768
|
if (e.key === 'Enter' && search.value) {
|
|
19695
|
-
select(transformItem$3(props, search.value));
|
|
19769
|
+
select(transformItem$3(props, search.value), true, true);
|
|
19696
19770
|
if (hasSelectionSlot.value) _search.value = '';
|
|
19697
19771
|
}
|
|
19698
19772
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
@@ -19740,10 +19814,12 @@ const VCombobox = genericComponent()({
|
|
|
19740
19814
|
isPristine.value = true;
|
|
19741
19815
|
vTextFieldRef.value?.focus();
|
|
19742
19816
|
}
|
|
19817
|
+
_searchLock.value = null;
|
|
19743
19818
|
}
|
|
19744
19819
|
/** @param set - null means toggle */
|
|
19745
19820
|
function select(item) {
|
|
19746
19821
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
19822
|
+
let keepMenu = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
19747
19823
|
if (!item || item.props.disabled) return;
|
|
19748
19824
|
if (props.multiple) {
|
|
19749
19825
|
const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
|
|
@@ -19761,11 +19837,14 @@ const VCombobox = genericComponent()({
|
|
|
19761
19837
|
} else {
|
|
19762
19838
|
const add = set !== false;
|
|
19763
19839
|
model.value = add ? [item] : [];
|
|
19840
|
+
if ((!isPristine.value || props.alwaysFilter) && _search.value) {
|
|
19841
|
+
_searchLock.value = _search.value;
|
|
19842
|
+
}
|
|
19764
19843
|
_search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
19765
19844
|
|
|
19766
19845
|
// watch for search watcher to trigger
|
|
19767
19846
|
nextTick(() => {
|
|
19768
|
-
menu.value =
|
|
19847
|
+
menu.value = keepMenu;
|
|
19769
19848
|
isPristine.value = true;
|
|
19770
19849
|
});
|
|
19771
19850
|
}
|
|
@@ -19779,9 +19858,6 @@ const VCombobox = genericComponent()({
|
|
|
19779
19858
|
function onFocusout(e) {
|
|
19780
19859
|
listHasFocus.value = false;
|
|
19781
19860
|
}
|
|
19782
|
-
function onUpdateModelValue(v) {
|
|
19783
|
-
if (v == null || v === '' && !props.multiple && !hasSelectionSlot.value) model.value = [];
|
|
19784
|
-
}
|
|
19785
19861
|
watch(isFocused, (val, oldVal) => {
|
|
19786
19862
|
if (val || val === oldVal) return;
|
|
19787
19863
|
selectionIndex.value = -1;
|
|
@@ -19804,13 +19880,14 @@ const VCombobox = genericComponent()({
|
|
|
19804
19880
|
}
|
|
19805
19881
|
}
|
|
19806
19882
|
});
|
|
19807
|
-
watch(menu,
|
|
19808
|
-
if (!props.hideSelected &&
|
|
19883
|
+
watch(menu, val => {
|
|
19884
|
+
if (!props.hideSelected && val && model.value.length && isPristine.value) {
|
|
19809
19885
|
const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
|
|
19810
19886
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
19811
19887
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
19812
19888
|
});
|
|
19813
19889
|
}
|
|
19890
|
+
if (val) _searchLock.value = null;
|
|
19814
19891
|
});
|
|
19815
19892
|
watch(items, (newVal, oldVal) => {
|
|
19816
19893
|
if (menu.value) return;
|
|
@@ -19826,7 +19903,7 @@ const VCombobox = genericComponent()({
|
|
|
19826
19903
|
"ref": vTextFieldRef
|
|
19827
19904
|
}, textFieldProps, {
|
|
19828
19905
|
"modelValue": search.value,
|
|
19829
|
-
"onUpdate:modelValue":
|
|
19906
|
+
"onUpdate:modelValue": $event => search.value = $event,
|
|
19830
19907
|
"focused": isFocused.value,
|
|
19831
19908
|
"onUpdate:focused": $event => isFocused.value = $event,
|
|
19832
19909
|
"validationValue": model.externalValue,
|
|
@@ -19861,7 +19938,6 @@ const VCombobox = genericComponent()({
|
|
|
19861
19938
|
"maxHeight": 310,
|
|
19862
19939
|
"openOnClick": false,
|
|
19863
19940
|
"closeOnContentClick": false,
|
|
19864
|
-
"transition": props.transition,
|
|
19865
19941
|
"onAfterEnter": onAfterEnter,
|
|
19866
19942
|
"onAfterLeave": onAfterLeave
|
|
19867
19943
|
}, props.menuProps), {
|
|
@@ -21875,6 +21951,7 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
|
21875
21951
|
},
|
|
21876
21952
|
/** @deprecated */
|
|
21877
21953
|
sticky: Boolean,
|
|
21954
|
+
...makeDensityProps(),
|
|
21878
21955
|
...makeDisplayProps(),
|
|
21879
21956
|
...makeLoaderProps()
|
|
21880
21957
|
}, 'VDataTableHeaders');
|
|
@@ -21999,6 +22076,7 @@ const VDataTableHeaders = genericComponent()({
|
|
|
21999
22076
|
if (isEmpty) return '';
|
|
22000
22077
|
if (column.key === 'data-table-select') {
|
|
22001
22078
|
return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && createVNode(VCheckboxBtn, {
|
|
22079
|
+
"density": props.density,
|
|
22002
22080
|
"modelValue": allSelected.value,
|
|
22003
22081
|
"indeterminate": someSelected.value && !allSelected.value,
|
|
22004
22082
|
"onUpdate:modelValue": selectAll
|
|
@@ -22099,7 +22177,8 @@ const makeVDataTableGroupHeaderRowProps = propsFactory({
|
|
|
22099
22177
|
groupExpandIcon: {
|
|
22100
22178
|
type: IconValue,
|
|
22101
22179
|
default: '$tableGroupExpand'
|
|
22102
|
-
}
|
|
22180
|
+
},
|
|
22181
|
+
...makeDensityProps()
|
|
22103
22182
|
}, 'VDataTableGroupHeaderRow');
|
|
22104
22183
|
const VDataTableGroupHeaderRow = genericComponent()({
|
|
22105
22184
|
name: 'VDataTableGroupHeaderRow',
|
|
@@ -22167,6 +22246,7 @@ const VDataTableGroupHeaderRow = genericComponent()({
|
|
|
22167
22246
|
"noPadding": true
|
|
22168
22247
|
}, {
|
|
22169
22248
|
default: () => [createVNode(VCheckboxBtn, {
|
|
22249
|
+
"density": props.density,
|
|
22170
22250
|
"modelValue": modelValue,
|
|
22171
22251
|
"indeterminate": indeterminate,
|
|
22172
22252
|
"onUpdate:modelValue": selectGroup
|
|
@@ -22195,6 +22275,7 @@ const makeVDataTableRowProps = propsFactory({
|
|
|
22195
22275
|
onClick: EventProp(),
|
|
22196
22276
|
onContextmenu: EventProp(),
|
|
22197
22277
|
onDblclick: EventProp(),
|
|
22278
|
+
...makeDensityProps(),
|
|
22198
22279
|
...makeDisplayProps()
|
|
22199
22280
|
}, 'VDataTableRow');
|
|
22200
22281
|
const VDataTableRow = genericComponent()({
|
|
@@ -22303,6 +22384,7 @@ const VDataTableRow = genericComponent()({
|
|
|
22303
22384
|
}
|
|
22304
22385
|
}) ?? createVNode(VCheckboxBtn, {
|
|
22305
22386
|
"disabled": !item.selectable,
|
|
22387
|
+
"density": props.density,
|
|
22306
22388
|
"modelValue": isSelected([item]),
|
|
22307
22389
|
"onClick": withModifiers(event => toggleSelect(item, props.index, event), ['stop'])
|
|
22308
22390
|
}, null);
|
|
@@ -22355,8 +22437,8 @@ const makeVDataTableRowsProps = propsFactory({
|
|
|
22355
22437
|
},
|
|
22356
22438
|
rowProps: [Object, Function],
|
|
22357
22439
|
cellProps: [Object, Function],
|
|
22358
|
-
...pick(makeVDataTableRowProps(), ['collapseIcon', 'expandIcon']),
|
|
22359
|
-
...pick(makeVDataTableGroupHeaderRowProps(), ['groupCollapseIcon', 'groupExpandIcon']),
|
|
22440
|
+
...pick(makeVDataTableRowProps(), ['collapseIcon', 'expandIcon', 'density']),
|
|
22441
|
+
...pick(makeVDataTableGroupHeaderRowProps(), ['groupCollapseIcon', 'groupExpandIcon', 'density']),
|
|
22360
22442
|
...makeDisplayProps()
|
|
22361
22443
|
}, 'VDataTableRows');
|
|
22362
22444
|
const VDataTableRows = genericComponent()({
|
|
@@ -22391,7 +22473,7 @@ const VDataTableRows = genericComponent()({
|
|
|
22391
22473
|
mobile
|
|
22392
22474
|
} = useDisplay(props);
|
|
22393
22475
|
useRender(() => {
|
|
22394
|
-
const groupHeaderRowProps = pick(props, ['groupCollapseIcon', 'groupExpandIcon']);
|
|
22476
|
+
const groupHeaderRowProps = pick(props, ['groupCollapseIcon', 'groupExpandIcon', 'density']);
|
|
22395
22477
|
if (props.loading && (!props.items.length || slots.loading)) {
|
|
22396
22478
|
return createElementVNode("tr", {
|
|
22397
22479
|
"class": "v-data-table-rows-loading",
|
|
@@ -22457,6 +22539,7 @@ const VDataTableRows = genericComponent()({
|
|
|
22457
22539
|
cellProps: props.cellProps,
|
|
22458
22540
|
collapseIcon: props.collapseIcon,
|
|
22459
22541
|
expandIcon: props.expandIcon,
|
|
22542
|
+
density: props.density,
|
|
22460
22543
|
mobile: mobile.value
|
|
22461
22544
|
}, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({
|
|
22462
22545
|
item: slotProps.item,
|
|
@@ -22473,6 +22556,8 @@ const VDataTableRows = genericComponent()({
|
|
|
22473
22556
|
}
|
|
22474
22557
|
});
|
|
22475
22558
|
|
|
22559
|
+
// Types
|
|
22560
|
+
|
|
22476
22561
|
const makeVTableProps = propsFactory({
|
|
22477
22562
|
fixedHeader: Boolean,
|
|
22478
22563
|
fixedFooter: Boolean,
|
|
@@ -22502,37 +22587,26 @@ const VTable = genericComponent()({
|
|
|
22502
22587
|
const {
|
|
22503
22588
|
densityClasses
|
|
22504
22589
|
} = useDensity(props);
|
|
22505
|
-
useRender(() => {
|
|
22506
|
-
|
|
22507
|
-
|
|
22508
|
-
|
|
22590
|
+
useRender(() => createVNode(props.tag, {
|
|
22591
|
+
"class": normalizeClass(['v-table', {
|
|
22592
|
+
'v-table--fixed-height': !!props.height,
|
|
22593
|
+
'v-table--fixed-header': props.fixedHeader,
|
|
22594
|
+
'v-table--fixed-footer': props.fixedFooter,
|
|
22595
|
+
'v-table--has-top': !!slots.top,
|
|
22596
|
+
'v-table--has-bottom': !!slots.bottom,
|
|
22597
|
+
'v-table--hover': props.hover,
|
|
22598
|
+
'v-table--striped-even': props.striped === 'even',
|
|
22599
|
+
'v-table--striped-odd': props.striped === 'odd'
|
|
22600
|
+
}, themeClasses.value, densityClasses.value, props.class]),
|
|
22601
|
+
"style": normalizeStyle(props.style)
|
|
22602
|
+
}, {
|
|
22603
|
+
default: () => [slots.top?.(), slots.default ? createElementVNode("div", {
|
|
22604
|
+
"class": "v-table__wrapper",
|
|
22605
|
+
"style": {
|
|
22606
|
+
height: convertToUnit(props.height)
|
|
22509
22607
|
}
|
|
22510
|
-
}
|
|
22511
|
-
|
|
22512
|
-
"class": normalizeClass(['v-table', {
|
|
22513
|
-
'v-table--fixed-height': !!props.height,
|
|
22514
|
-
'v-table--fixed-header': props.fixedHeader,
|
|
22515
|
-
'v-table--fixed-footer': props.fixedFooter,
|
|
22516
|
-
'v-table--has-top': !!slots.top,
|
|
22517
|
-
'v-table--has-bottom': !!slots.bottom,
|
|
22518
|
-
'v-table--hover': props.hover,
|
|
22519
|
-
'v-table--striped-even': props.striped === 'even',
|
|
22520
|
-
'v-table--striped-odd': props.striped === 'odd'
|
|
22521
|
-
}, themeClasses.value, densityClasses.value, props.class]),
|
|
22522
|
-
"style": normalizeStyle(props.style)
|
|
22523
|
-
}, {
|
|
22524
|
-
default: () => [slots.top?.(), createVNode(VDefaultsProvider, {
|
|
22525
|
-
"defaults": tableContentDefaults
|
|
22526
|
-
}, {
|
|
22527
|
-
default: () => [slots.default ? createElementVNode("div", {
|
|
22528
|
-
"class": "v-table__wrapper",
|
|
22529
|
-
"style": {
|
|
22530
|
-
height: convertToUnit(props.height)
|
|
22531
|
-
}
|
|
22532
|
-
}, [createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.()]
|
|
22533
|
-
}), slots.bottom?.()]
|
|
22534
|
-
});
|
|
22535
|
-
});
|
|
22608
|
+
}, [createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
|
|
22609
|
+
}));
|
|
22536
22610
|
return {};
|
|
22537
22611
|
}
|
|
22538
22612
|
});
|
|
@@ -24343,7 +24417,7 @@ const VDatePicker = genericComponent()({
|
|
|
24343
24417
|
function isAllowedInRange(start, end) {
|
|
24344
24418
|
const allowedDates = props.allowedDates;
|
|
24345
24419
|
if (typeof allowedDates !== 'function') return true;
|
|
24346
|
-
const days = adapter.getDiff(end, start, 'days');
|
|
24420
|
+
const days = 1 + adapter.getDiff(new Date(`${adapter.toISO(end)}T00:00:00Z`), new Date(`${adapter.toISO(start)}T00:00:00Z`), 'days');
|
|
24347
24421
|
for (let i = 0; i < days; i++) {
|
|
24348
24422
|
if (allowedDates(adapter.addDays(start, i))) return true;
|
|
24349
24423
|
}
|
|
@@ -26846,7 +26920,7 @@ const VNumberInput = genericComponent()({
|
|
|
26846
26920
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
|
26847
26921
|
const _inputText = shallowRef(null);
|
|
26848
26922
|
watchEffect(() => {
|
|
26849
|
-
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value) === model.value) ; else if (model.value == null) {
|
|
26923
|
+
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value?.replace(decimalSeparator.value, '.')) === model.value) ; else if (model.value == null) {
|
|
26850
26924
|
_inputText.value = null;
|
|
26851
26925
|
} else if (!isNaN(model.value)) {
|
|
26852
26926
|
_inputText.value = correctPrecision(model.value);
|
|
@@ -26941,6 +27015,7 @@ const VNumberInput = genericComponent()({
|
|
|
26941
27015
|
if (!new RegExp(`^-?\\d*${escapeForRegex(decimalSeparator.value)}?\\d*$`).test(potentialNewInputVal)) {
|
|
26942
27016
|
e.preventDefault();
|
|
26943
27017
|
inputElement.value = potentialNewNumber;
|
|
27018
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
26944
27019
|
}
|
|
26945
27020
|
if (props.precision == null) return;
|
|
26946
27021
|
|
|
@@ -26948,13 +27023,15 @@ const VNumberInput = genericComponent()({
|
|
|
26948
27023
|
if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {
|
|
26949
27024
|
e.preventDefault();
|
|
26950
27025
|
inputElement.value = potentialNewNumber;
|
|
27026
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
26951
27027
|
const cursorPosition = (selectionStart ?? 0) + e.data.length;
|
|
26952
27028
|
inputElement.setSelectionRange(cursorPosition, cursorPosition);
|
|
26953
27029
|
}
|
|
26954
27030
|
// Ignore decimal separator when precision = 0
|
|
26955
|
-
if (props.precision === 0 && potentialNewInputVal.
|
|
27031
|
+
if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {
|
|
26956
27032
|
e.preventDefault();
|
|
26957
27033
|
inputElement.value = potentialNewNumber;
|
|
27034
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
26958
27035
|
}
|
|
26959
27036
|
}
|
|
26960
27037
|
async function onKeydown(e) {
|
|
@@ -28150,12 +28227,12 @@ const VSkeletonLoader = genericComponent()({
|
|
|
28150
28227
|
ariaLabel: t(props.loadingText),
|
|
28151
28228
|
role: 'alert'
|
|
28152
28229
|
};
|
|
28153
|
-
return
|
|
28230
|
+
return isLoading ? createElementVNode("div", mergeProps({
|
|
28154
28231
|
"class": ['v-skeleton-loader', {
|
|
28155
28232
|
'v-skeleton-loader--boilerplate': props.boilerplate
|
|
28156
28233
|
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
|
|
28157
28234
|
"style": [backgroundColorStyles.value, dimensionStyles.value]
|
|
28158
|
-
}, loadingProps, attrs), [items.value]) : slots.default?.()]);
|
|
28235
|
+
}, loadingProps, attrs), [items.value]) : createElementVNode(Fragment, null, [slots.default?.()]);
|
|
28159
28236
|
});
|
|
28160
28237
|
return {};
|
|
28161
28238
|
}
|
|
@@ -30020,6 +30097,10 @@ const VTextarea = genericComponent()({
|
|
|
30020
30097
|
const vFieldRef = ref();
|
|
30021
30098
|
const controlHeight = shallowRef('');
|
|
30022
30099
|
const textareaRef = ref();
|
|
30100
|
+
const scrollbarWidth = ref(0);
|
|
30101
|
+
const {
|
|
30102
|
+
platform
|
|
30103
|
+
} = useDisplay();
|
|
30023
30104
|
const autocomplete = useAutocomplete(props);
|
|
30024
30105
|
const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
|
|
30025
30106
|
function onFocus() {
|
|
@@ -30064,6 +30145,18 @@ const VTextarea = genericComponent()({
|
|
|
30064
30145
|
if (!props.autoGrow) rows.value = Number(props.rows);
|
|
30065
30146
|
});
|
|
30066
30147
|
function calculateInputHeight() {
|
|
30148
|
+
nextTick(() => {
|
|
30149
|
+
if (!textareaRef.value) return;
|
|
30150
|
+
if (platform.value.firefox) {
|
|
30151
|
+
scrollbarWidth.value = 12;
|
|
30152
|
+
return;
|
|
30153
|
+
}
|
|
30154
|
+
const {
|
|
30155
|
+
offsetWidth,
|
|
30156
|
+
clientWidth
|
|
30157
|
+
} = textareaRef.value;
|
|
30158
|
+
scrollbarWidth.value = Math.max(0, offsetWidth - clientWidth);
|
|
30159
|
+
});
|
|
30067
30160
|
if (!props.autoGrow) return;
|
|
30068
30161
|
nextTick(() => {
|
|
30069
30162
|
if (!sizerRef.value || !vFieldRef.value) return;
|
|
@@ -30124,7 +30217,9 @@ const VTextarea = genericComponent()({
|
|
|
30124
30217
|
'v-textarea--no-resize': props.noResize || props.autoGrow,
|
|
30125
30218
|
'v-input--plain-underlined': isPlainOrUnderlined.value
|
|
30126
30219
|
}, props.class],
|
|
30127
|
-
"style":
|
|
30220
|
+
"style": [{
|
|
30221
|
+
'--v-textarea-scroll-bar-width': convertToUnit(scrollbarWidth.value)
|
|
30222
|
+
}, props.style]
|
|
30128
30223
|
}, rootAttrs, inputProps, {
|
|
30129
30224
|
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
|
30130
30225
|
"focused": isFocused.value
|
|
@@ -32279,7 +32374,7 @@ function createVuetify$1() {
|
|
|
32279
32374
|
};
|
|
32280
32375
|
});
|
|
32281
32376
|
}
|
|
32282
|
-
const version$1 = "3.10.
|
|
32377
|
+
const version$1 = "3.10.6";
|
|
32283
32378
|
createVuetify$1.version = version$1;
|
|
32284
32379
|
|
|
32285
32380
|
// Vue's inject() can only be used in setup
|
|
@@ -32304,7 +32399,7 @@ const createVuetify = function () {
|
|
|
32304
32399
|
...options
|
|
32305
32400
|
});
|
|
32306
32401
|
};
|
|
32307
|
-
const version = "3.10.
|
|
32402
|
+
const version = "3.10.6";
|
|
32308
32403
|
createVuetify.version = version;
|
|
32309
32404
|
|
|
32310
32405
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useMask, useRtl, useTheme, version };
|