mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 10:21:05 +00:00
fix(multi-select): fix sorting behavior
- Menu items are sorted when the component renders. - With selectionFeedback: top, selected items are immediately pinned to the top. - With selectionFeedback: top-after-reopen, selected items are pinned to the top only after the dropdown is closed. - With selectionFeedback: fixed, selected items are never pinned to the top. Fixes #2066
This commit is contained in:
parent
901e8bc14f
commit
becee460d1
1 changed files with 19 additions and 6 deletions
|
@ -243,11 +243,11 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$: menuId = `menu-${id}`;
|
function sort() {
|
||||||
$: inline = type === "inline";
|
if (
|
||||||
$: ariaLabel = $$props["aria-label"] || "Choose an item";
|
selectionFeedback === "top" ||
|
||||||
$: sortedItems = (() => {
|
selectionFeedback === "top-after-reopen"
|
||||||
if (selectionFeedback === "top" && selectedIds.length > 0) {
|
) {
|
||||||
const checkedItems = items
|
const checkedItems = items
|
||||||
.filter((item) => selectedIds.includes(item.id))
|
.filter((item) => selectedIds.includes(item.id))
|
||||||
.map((item) => ({ ...item, checked: true }));
|
.map((item) => ({ ...item, checked: true }));
|
||||||
|
@ -269,7 +269,20 @@
|
||||||
checked: selectedIds.includes(item.id),
|
checked: selectedIds.includes(item.id),
|
||||||
}))
|
}))
|
||||||
.sort(sortItem);
|
.sort(sortItem);
|
||||||
})();
|
}
|
||||||
|
|
||||||
|
let sortedItems = sort();
|
||||||
|
|
||||||
|
$: menuId = `menu-${id}`;
|
||||||
|
$: inline = type === "inline";
|
||||||
|
$: ariaLabel = $$props["aria-label"] || "Choose an item";
|
||||||
|
$: if (
|
||||||
|
selectedIds &&
|
||||||
|
(selectionFeedback === "top" ||
|
||||||
|
(selectionFeedback === "top-after-reopen" && open === false))
|
||||||
|
) {
|
||||||
|
sortedItems = sort();
|
||||||
|
}
|
||||||
$: checked = sortedItems.filter(({ checked }) => checked);
|
$: checked = sortedItems.filter(({ checked }) => checked);
|
||||||
$: unchecked = sortedItems.filter(({ checked }) => !checked);
|
$: unchecked = sortedItems.filter(({ checked }) => !checked);
|
||||||
$: filteredItems = sortedItems.filter((item) => filterItem(item, value));
|
$: filteredItems = sortedItems.filter((item) => filterItem(item, value));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue