mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 10:21:05 +00:00
Fix filterable multiselect keyboard selection behavior (#923)
* fix(multi-select): correctly select correct item in filterable multiselect Fixes #922 * fix(multiselect): do not mutate sortedItems
This commit is contained in:
parent
96930a4065
commit
4de0fab859
1 changed files with 20 additions and 6 deletions
|
@ -329,9 +329,10 @@
|
||||||
change(-1);
|
change(-1);
|
||||||
} else if (key === 'Enter') {
|
} else if (key === 'Enter') {
|
||||||
if (highlightedIndex > -1) {
|
if (highlightedIndex > -1) {
|
||||||
sortedItems[highlightedIndex].checked = !sortedItems[
|
sortedItems = sortedItems.map((item, i) => {
|
||||||
highlightedIndex
|
if (i !== highlightedIndex) return item;
|
||||||
].checked;
|
return { ...item, checked: !item.checked };
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}"
|
}}"
|
||||||
|
@ -392,9 +393,22 @@
|
||||||
on:keydown|stopPropagation="{({ key }) => {
|
on:keydown|stopPropagation="{({ key }) => {
|
||||||
if (key === 'Enter') {
|
if (key === 'Enter') {
|
||||||
if (highlightedIndex > -1) {
|
if (highlightedIndex > -1) {
|
||||||
sortedItems[highlightedIndex].checked = !sortedItems[
|
if (filterable) {
|
||||||
highlightedIndex
|
const filteredItemId = filteredItems[highlightedIndex].id;
|
||||||
].checked;
|
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') {
|
} else if (key === 'Tab') {
|
||||||
open = false;
|
open = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue