Tag picker

Strings + free typing

The simplest case — a flat list of strings.

Selected:

razor
<MultiSelect TItem="string" Items="_tags" Values="_selectedTags" ValuesChanged="@((IReadOnlyList<string> v) => _selectedTags = v)" DisplayFunc="@(s => s)" Label="Tags" Placeholder="Add a tag..." />

Assignee picker — custom template

Two-line option, MaxValues constraint

Combine ItemTemplate with KeyFunc and a MaxValues cap to build a rich assignee selector.

Count: 0 / 5

razor
<MultiSelect TItem="Person" Items="_people" Values="_selectedPeople" ValuesChanged="@((IReadOnlyList<Person> v) => _selectedPeople = v)" DisplayFunc="@(p => p.Name)" KeyFunc="@(p => p.Id)" SearchFunc="@((p, q) => p.Name.Contains(q, StringComparison.OrdinalIgnoreCase) || p.Email.Contains(q, StringComparison.OrdinalIgnoreCase))" Label="Assignees" Placeholder="Search..." MaxValues="5" HintText="Up to 5 assignees."> <ItemTemplate Context="person"> <div style="display: flex; flex-direction: column;"> <span class="text-sm-medium">@person.Name</span> <span class="text-xs-regular" style="color: var(--text-tertiary);">@person.Email</span> </div> </ItemTemplate> </MultiSelect>
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.