From f6c9c8cea1088caa371438f57ee37195dc1e523c Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 27 Nov 2021 09:58:24 -0800 Subject: [PATCH] fix(multi-select): correctly select correct item in filterable multiselect Fixes #922 --- src/MultiSelect/MultiSelect.svelte | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/MultiSelect/MultiSelect.svelte b/src/MultiSelect/MultiSelect.svelte index 71130bcd..d710faca 100644 --- a/src/MultiSelect/MultiSelect.svelte +++ b/src/MultiSelect/MultiSelect.svelte @@ -392,9 +392,21 @@ 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[highlightedIndex].checked = !sortedItems[ + highlightedIndex + ].checked; + } } } else if (key === 'Tab') { open = false;