fix(combo-box): correctly select item in a non-filterable ComboBox (#1419)

Fixes #1222

A non-filterable ComboBox will select the item that matches the typed value when pressing "Enter." An unknown (unmatched) value will select the first item.
This commit is contained in:
István Pató 2022-08-04 18:58:32 +02:00 committed by GitHub
commit de81ef99af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -287,7 +287,6 @@
on:keydown|stopPropagation="{({ key }) => {
if (key === 'Enter') {
open = !open;
if (
highlightedIndex > -1 &&
filteredItems[highlightedIndex]?.id !== selectedId
@ -299,11 +298,18 @@
selectedId = filteredItems[highlightedIndex].id;
}
} else {
// searching typed value in text list with lowercase
const matchedItem =
filteredItems.find(
(e) =>
e.text.toLowerCase() === value?.toLowerCase() && !e.disabled
) ?? filteredItems.find((e) => !e.disabled);
if (matchedItem) {
// typed value has matched or fallback to first enabled item
open = false;
if (filteredItems[0]) {
value = itemToString(filteredItems[0]);
selectedItem = filteredItems[0];
selectedId = filteredItems[0].id;
selectedItem = matchedItem;
value = itemToString(selectedItem);
selectedId = selectedItem.id;
}
}
highlightedIndex = -1;