SelectList
The SelectList
can be used to select multiple items from a list simultaneously. It provides a familiar interface where users can select multiple items.
Anatomy
A SelectList
consists of a container element, with rows of data inside. The rows within a list may contain focusable elements or plain text content. If the list supports row selection, each row includes a selection indicator.

Appearance
The appearance of a component can be customized using the variant
and size
props. These props adjust the visual style and dimensions of the component, available values are based on the active theme.
Property | Type | Description |
---|---|---|
variant | - | The available variants of this component. |
size | - | The available sizes of this component. |
Usage
The SelectList
component is used to display a list of items that can be selected by the user. It supports both single and multiple selection modes, allowing users to choose one or more items from the list.
Built with accessibility in mind, it supports full keyboard navigation, making it easy to interact with using only the keyboard.
SelectList with multiple selection mode
If you want to allow users to select multiple items, you can set the selectionMode
prop to multiple
. This enables checkboxes for each item, allowing users to select or deselect multiple items at once.
You can also provide interactive actions for each item, such as buttons or links, to perform specific actions on the selected items.
Disabled behavior
The <SelectList>
lets you disable certain items, which is helpful if you don’t want users to select them. You can use the disabledBehavior
prop to control what happens with those disabled items. In the example below, we use disabledBehavior="selection"
. This means the disabled items can’t be selected and won’t show a selection indicator — but you can still use their actions (like buttons or links inside them).
Props
SelectList
aria-describedby?
string;
aria-details?
string;
aria-label?
string;
aria-labelledby?
string;
autoFocus?
boolean | FocusStrategy;
children?
ReactNode | ((item: object) => ReactNode);
defaultSelectedKeys?
"all" | Iterable<Key>;
dependencies?
readonly any[]
disabledBehavior?
DisabledBehavior;
disabledKeys
applies to all interactions, or only selection.disabledKeys?
Iterable<Key>;
disallowEmptySelection?
boolean;
disallowTypeAhead?
boolean;
"false"
dragAndDropHooks?
DragAndDropHooks;
useDragAndDrop
used to enable drag and drop behavior for the GridList.escapeKeyBehavior?
"clearSelection" | "none";
'clearSelection'
id?
string;
items?
Iterable<object>;
keyboardNavigationBehavior?
"arrow" | "tab";
'arrow'
layout?
"stack" | "grid";
'stack'
onAction?
(key: Key) => void;
selectionBehavior
prop and the interaction modality.onChange?
((keys: Selection) => void) | Dispatch<any>;
onScroll?
(e: UIEvent<HTMLDivElement, UIEvent>) => void;
ref?
Ref<HTMLUListElement>;
ref.current
to null
(or call the ref with null
if you passed a callback ref).
@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}renderEmptyState?
(props: GridListRenderProps) => ReactNode;
selectedKeys?
"all" | Iterable<Key>;
selectionBehavior?
SelectionBehavior;
selectionMode?
SelectionMode;
shouldSelectOnPressUp?
boolean;
slot?
string | null;
null
value indicates that the local props completely override all props received from a parent.SelectList.Item
children?
ReactNode;
disabled?
boolean;
"false"
download?
string | boolean;
href?
string;
hrefLang?
string;
id?
Key;
onAction?
() => void;
selectionBehavior
prop and the interaction modality.onHoverChange?
(isHovering: boolean) => void;
onHoverEnd?
(e: HoverEvent) => void;
onHoverStart?
(e: HoverEvent) => void;
ping?
string;
ref?
Ref<HTMLDivElement>;
ref.current
to null
(or call the ref with null
if you passed a callback ref).
@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}referrerPolicy?
HTMLAttributeReferrerPolicy;
rel?
string;
routerOptions?
undefined;
target?
HTMLAttributeAnchorTarget;
textValue?
string;
value?
object;
Alternative components
The SelectList
is a versatile component that can be used in various scenarios where users need to select multiple items from a list. But there are alternative components that might be more suitable depending on your specific use case:
- Table: If you need to display tabular data with multiple selection capabilities, consider using the
<Table>
component. It provides a structured layout for displaying data in rows and columns, along with selection features. - Stack: If you need to display a list of items with a more compact layout, consider using the
<Stack>
component. It allows you to create a vertical stack of items, which can be useful for displaying lists with less emphasis on selection.