fix(ComboBox): selection via typing only find the enabled item, resolves #1222

This commit is contained in:
István Pató 2022-08-04 08:32:51 +02:00
commit 1c2e869030
No known key found for this signature in database
GPG key ID: 3A842123BFF8E969

View file

@ -205,9 +205,7 @@
$: menuId = `menu-${id}`; $: menuId = `menu-${id}`;
$: comboId = `combo-${id}`; $: comboId = `combo-${id}`;
$: highlightedId = items[highlightedIndex] ? items[highlightedIndex].id : 0; $: highlightedId = items[highlightedIndex] ? items[highlightedIndex].id : 0;
$: /** @type Array<ComboBoxItem> */ filteredItems = items.filter((item) => $: filteredItems = items.filter((item) => shouldFilterItem(item, value));
shouldFilterItem(item, value)
);
</script> </script>
<svelte:window <svelte:window
@ -301,23 +299,14 @@
} }
} else { } else {
// searching typed value in text list with lowercase // searching typed value in text list with lowercase
/** @type Array<ComboBoxItem> */ const matchedItem = filteredItems.find(
const listOfItems = filteredItems.map((e) => { (e) =>
return { e.text.toLowerCase() === value?.toLowerCase() && !e.disabled
id: e.id,
text: e.text?.toLowerCase(),
disabled: e.disabled,
};
});
const matchedItem = listOfItems.find(
(e) => e.text === value?.toLowerCase()
); );
if (matchedItem) { if (matchedItem) {
// typed value has matched // typed value has matched
open = false; open = false;
selectedItem = filteredItems.find( selectedItem = matchedItem;
(e) => e.id === matchedItem.id
);
value = selectedItem.text; value = selectedItem.text;
selectedId = selectedItem.id; selectedId = selectedItem.id;
} else { } else {