in src/stories/ActionList2/examples.stories.tsx [141:175]
export function MultipleSelection(): JSX.Element {
const [assignees, setAssignees] = React.useState(users.slice(0, 2))
const toggleAssignee = (assignee: typeof users[number]) => {
const assigneeIndex = assignees.findIndex(a => a.login === assignee.login)
if (assigneeIndex === -1) setAssignees([...assignees, assignee])
else setAssignees(assignees.filter((_, index) => index !== assigneeIndex))
}
return (
<>
<h1>Multi Select List</h1>
<p>This pattern appears in issues and pull requests to pick multiple assignees</p>
<ActionList selectionVariant="multiple" showDividers role="listbox" aria-label="Select assignees">
{users.map(user => (
<ActionList.Item
role="option"
key={user.login}
selected={Boolean(assignees.find(assignee => assignee.login === user.login))}
onSelect={() => toggleAssignee(user)}
>
<ActionList.LeadingVisual>
<Avatar src={`https://github.com/${user.login}.png`} />
</ActionList.LeadingVisual>
{user.login}
<ActionList.Description>{user.name}</ActionList.Description>
</ActionList.Item>
))}
</ActionList>
</>
)
}