A SelectPanel
provides an anchor that will open an overlay with a list of selectable items, and a text input to filter the selectable items
function getColorCircle(color) {return function () {return (<BoxborderWidth="1px"borderStyle="solid"bg={color}borderColor={color}width={14}height={14}borderRadius={10}margin="auto"/>)}}const items = [{leadingVisual: getColorCircle('#a2eeef'), text: 'enhancement', id: 1},{leadingVisual: getColorCircle('#d73a4a'), text: 'bug', id: 2},{leadingVisual: getColorCircle('#0cf478'), text: 'good first issue', id: 3},{leadingVisual: getColorCircle('#ffd78e'), text: 'design', id: 4},{leadingVisual: getColorCircle('#ff0000'), text: 'blocker', id: 5},{leadingVisual: getColorCircle('#a4f287'), text: 'backend', id: 6},{leadingVisual: getColorCircle('#8dc6fc'), text: 'frontend', id: 7}]function DemoComponent() {const [selected, setSelected] = React.useState([items[0], items[1]])const [filter, setFilter] = React.useState('')const filteredItems = items.filter(item => item.text.toLowerCase().startsWith(filter.toLowerCase()))const [open, setOpen] = React.useState(false)return (<SelectPanelrenderAnchor={({children, 'aria-labelledby': ariaLabelledBy, ...anchorProps}) => (<Button trailingIcon={TriangleDownIcon} aria-labelledby={` ${ariaLabelledBy}`} {...anchorProps}>{children || 'Select Labels'}</Button>)}placeholderText="Filter Labels"open={open}onOpenChange={setOpen}items={filteredItems}selected={selected}onSelectedChange={setSelected}onFilterChange={setFilter}showItemDividers={true}overlayProps={{width: 'small', height: 'xsmall'}}/>)}render(<DemoComponent />)
Pressing Enter
or Space
on the SelectPanel
anchor will
open the SelectPanel
and place focus on the filter input. Pressing Escape
or interacting with the cancel or close buttons will close the SelectPanel
and restore focus to the anchor.
A user may use Tab
and Shift+Tab
to navigate between the filter input, list of
items, action buttons, and the close button.
When focus is on the list of items, pressing ArrowDown
and ArrowUp
will allow navigation between items. Support for Home
and End
is also provided to quickly navigate to the first and last items in the list, respectively. Pressing Space
will select an item.
The Enter
key may be used when focus is within the SelectPanel
as an
alternative to activating the save button.
Name | Type | Default | Description |
---|---|---|---|
onOpenChange Required | ( open: boolean, gesture: | 'anchor-click' | 'anchor-key-press' | 'click-outside' | 'escape' | 'selection' ) => void | ||
placeholder | string | ||
overlayProps | Partial<OverlayProps> | See Overlay props. | |
title | string | ||
inputLabel | string | ||
inputPlaceholder | string |