fix(multi-select): correctly select correct item in filterable multiselect

Fixes #922
This commit is contained in:
Eric Liu 2021-11-27 09:58:24 -08:00
commit f6c9c8cea1

View file

@ -392,10 +392,22 @@
on:keydown|stopPropagation="{({ key }) => { on:keydown|stopPropagation="{({ key }) => {
if (key === 'Enter') { if (key === 'Enter') {
if (highlightedIndex > -1) { if (highlightedIndex > -1) {
if (filterable) {
const filteredItemId = filteredItems[highlightedIndex].id;
const filteredItemIndex = sortedItems
.map((item) => item.id)
.indexOf(filteredItemId);
sortedItems = sortedItems.map((item, i) => {
if (i !== filteredItemIndex) return item;
return { ...item, checked: !item.checked };
});
} else {
sortedItems[highlightedIndex].checked = !sortedItems[ sortedItems[highlightedIndex].checked = !sortedItems[
highlightedIndex highlightedIndex
].checked; ].checked;
} }
}
} else if (key === 'Tab') { } else if (key === 'Tab') {
open = false; open = false;
} else if (key === 'ArrowDown') { } else if (key === 'ArrowDown') {