Using Grommet for HPE?See Select examples and guidance.
Custom label to be used by screen readers. When provided, an aria-label will be added to the element.
string
"a user friendly label for screen readers"
How to align along the cross axis when contained in a Box or along the column axis when contained in a Grid.
string
"start"
"center"
"end"
"stretch"
"baseline"
Function that will be called when each option is rendered.
function
The function will be passed (option, index, options, state) where option is the option to render, index is the index of that option in the options array, and state is an object with (active, disabled, selected) keys indicating the current state of the option.
(option, index, options, { active, disabled, selected }) => {}
Whether to provide a button option to clear selections.
boolean
true
false
object
{ position: "top" | "bottom", label: "string" }
Initially selected value. This can be an array when multiple.
string
"value1"
object
{}
number
1
array
An array of strings, objects, or numbers.
["string", ...]
[{...}, {...}]
[1, 2]
Whether the entire select or individual options should be disabled.
boolean
true
false
array
An array of strings, objects, or numbers. An array of numbers indicates the indexes into 'options' of the disabled options. An array of strings or objects work the same way as the 'value' to indicate which options are disabled.
["string", ...]
[{...}, {...}]
[1, 2]
When the options array contains objects, this property indicates how to determine which options should be disabled.
string
If a string is provided, it is used as the key for each item object and if that key returns truthy, the option is disabled.
"key"
function
If a function is provided, it is called with the option and the return value determines if the option is disabled.
() => {}
How to align the drop.
object
{ top: "top" | "bottom", bottom: "top" | "bottom", right: "left" | "right", left: "left" | "right" }
{ top: "bottom", left: "left" }
Target where the options drop will be aligned to. This should be a React reference. Typically, this is not required as the drop will be aligned to the Select itself by default.
object
ref.current
Empty option message to display when no matching results were found
string
"No matches found"
node
<Text> No results found. <Text/>
A custom icon to be used when rendering the select. You can use false to not render an icon at all.
boolean
true
false
function
() => {}
node
<Icon />
When the options array contains objects, this property indicates how to retrieve the label for each option. The label is what is displayed to the user in the options list drop down and for the selected option itself.
string
If a string is provided, it is used as the key to retrieve a property of an option object, which should be a string.
"key"
function
If a function is provided, it is called with the option and should return a string or a React node.
() => {}
The amount of margin around the component.
string
"none"
"xxsmall"
"xsmall"
"small"
"medium"
"large"
"xlarge"
object
Can be specified to distinguish horizontal margin, vertical margin, and margin on a particular side.
{ vertical: "...", horizontal: "...", top: "...", bottom: "...", left: "...", right: "..." }
Whether to allow multiple options to be selected. When multiple is true, 'value' should be an array of selected options and 'options' should be an array of possible options.
boolean
true
false
Function that will be called when the user selects an option.
function
({ value, option }) => {...}
Use this to indicate that 'options' doesn't contain all that it could.
function
The function will be called when the entire list of items has been rendered. This might be used when the total number of items that could be retrieved is more than you'd want to load into the browser. 'onMore' allows you to lazily fetch more from the server only when needed.
() => {}
Function that will be called when the user types in the search input. If this property is not provided, no search field will be rendered.
function
() => {}
The options to choose from.
There are a number of ways to set and change the options based on the 'onChange', 'onSelect', and 'onSearch' functions. As a general rule of guidance when using 'onSearch', define an original list of options that is separate from the currently stored options. Use this definition to reset options in functions.
For examples of defining, setting, and changing options, see our Storybook examples with Select.
array[string]
["option1", "option2"]
array[number]
[1, 2]
array[boolean]
[true, false]
array[element]
[<Element />, <Element />]
array[object]
If an object is used, use children callback in order to render anything based on the current item.
[{}, {}]
Whether to replace previously rendered items with a generic spacing element when they have scrolled out of view. This is more performant but means that in-page searching will not find elements that have been replaced.
boolean
true
false
Placeholder text to use in the search box when the search input is empty.
string
"search..."
node
<Text>Enter search term</Text>
Index of the currently selected option. When multiple, the set of options selected. NOTE: This is deprecated in favor of indicating the selected values via the 'value' property.
number
1
array[number]
[1, 2]
The currently selected value. When 'valueKey' sets 'reduce', the value(s) here should match what the 'valueKey' would return for the corresponding selected option object. Otherwise, the value should be one (or multiple, when multiple = true) of the options from the options array.
string
"option1"
element
Passing an element allows the caller to control how the value is rendered. Passing an element is deprecated. Instead, use the 'valueLabel' property.
<Element />
object
{}
number
1
array[string]
["option1", "option2"]
array[number]
[1, 2]
array[object]
[{}, {}]
When the options array contains objects, this property indicates how to retrieve the value of each option.
string
If a string is provided, it is used as the key to retrieve a property of an option object.
"key"
object
If reduce is true, this value will be used for the 'value' delivered via 'onChange'.
{ key: "string", reduce: boolean }
function
If a function is provided, it is called with the option and should return the value.
(option) => {}
The background style when hovering.
string
"active"
object
{ color: "active", opacity: "medium" }
The text color when hovering.
string
A hex, name, or rgb value.
"black"
object
An object with a color for dark and light modes.
{ dark: "white", light: "black" }
Any valid Box prop for the options container.
object
{ align: "start", pad: "small" }
Any valid Text prop for text used inside the options container.
object
{ margin: "none" }
Any additional style for the container of the Select component.
string
Any CSS.
css`color: 'blue'`
function
(props) => {}
Any valid Box prop for the clear button container.
object
{ pad: "small", background: "light-2" }
Any valid Box prop to adjust the button container style when the clear button is hovered.
object
{}
Any valid Text prop for text used inside the clear button container.
object
{ color: "dark-3" }
Any additional style for the Select DropButton when using the controlled open state.
string
"CSS"
object
{}
Any additional style for the control of the Select component.
string
Any CSS.
css`color: 'blue'`
function
(props) => {}
Any valid Box props for the emptySearchMessage container.
object
{ pad: "small"}
Any valid Text props for the emptySearchMessage text.
object
{ color: "text" }
The margin used for Select icons.
string
"none"
"xxsmall"
"xsmall"
"small"
"medium"
"large"
"xlarge"
object
Can be specified to distinguish horizontal margin, vertical margin, and margin on a particular side.
{ vertical: "...", horizontal: "...", top: "...", bottom: "...", left: "...", right: "..." }
The color used for Select icons.
string
A hex, name, or rgb value.
"brand"
object
An object with a color for dark and light modes.
{ dark: "string", light: "string" }