diff --git a/src/MultiSelect/MultiSelect.svelte b/src/MultiSelect/MultiSelect.svelte index 71130bcd..56c9036c 100644 --- a/src/MultiSelect/MultiSelect.svelte +++ b/src/MultiSelect/MultiSelect.svelte @@ -329,9 +329,10 @@ change(-1); } else if (key === 'Enter') { if (highlightedIndex > -1) { - sortedItems[highlightedIndex].checked = !sortedItems[ - highlightedIndex - ].checked; + sortedItems = sortedItems.map((item, i) => { + if (i !== highlightedIndex) return item; + return { ...item, checked: !item.checked }; + }); } } }}" @@ -392,9 +393,22 @@ on:keydown|stopPropagation="{({ key }) => { if (key === 'Enter') { if (highlightedIndex > -1) { - sortedItems[highlightedIndex].checked = !sortedItems[ - highlightedIndex - ].checked; + 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 = sortedItems.map((item, i) => { + if (i !== highlightedIndex) return item; + return { ...item, checked: !item.checked }; + }); + } } } else if (key === 'Tab') { open = false;