Selection field
Dropdown
Single or multiple selection in a field you can read at rest — chips, a limit, and a panel you may replace entirely.Reviewers are notified once the pull request opens
Four scenarios worth trying
Each one is a real component on this page. Open them, break them, watch the read-outs.
Selected: undefined
At three, the remaining rows stop being selectable: they keep their place in the list with aria-disabled and drop out of the arrow walk, because the only move still open is to remove one. Take a chip off and they come back.
1 / 3 chosen
The form arrives with jp already chosen and an empty list. The field shows the raw value it was handed, swaps to the label once the options land, and never rewrites the model in between — the model is the truth, the rows are its view.
Same keyboard, same ARIA, same selection — none of it lives in the markup above. Swap this list for a virtual scroller and nothing else changes.
What the component decides for you
Four rules that are not props. They are the reason the field behaves the same in every app that uses it.
A value with no matching item still shows
It renders from a fallback row built out of the value itself, and the model is left alone. Dropping it would quietly rewrite the form.
Keyboard order is data order
Rows are walked in the order of items, so inserting one in the middle of a live list cannot send the arrows somewhere else.
A blocked row is not a disabled item
max blocks the rows you have not chosen; the selected ones stay reachable, because removing one is the only move left.
Validation binds the selection
Bind path and the adapter receives the value, not the text drawn in the box.
Reach for something else when…
A dropdown hides its options behind a click. That is the right trade only sometimes.
Two or three options, always visible
Segmented buttons or radios show every choice at once and cost one interaction less.
A list nobody can read
Past a screenful, the useful control is a query, not a scroll. Use the autocomplete.
A value that is not in the list
A dropdown never invents an option. If the user must be able to add one, that is a combobox, not this.
A short, closed set of values
Statuses, countries, reviewers, labels — the case this component exists for.