InputPicker
Single item selector with text box input.
Import
import { InputPicker } from 'rsuite';
Examples
Basic
Size
Block
Group
Creatable
Custom
Disabled and read only
Async
Controlled
Accessibility
ARIA properties
- InputPicker has role
combobox
. - Has the
aria-haspopup="listbox"
attribute to indicate that the combobox has a popup listbox. - Has the
aria-expanded
attribute to indicate whether the listbox is open or not. - Has the
aria-controls
attribute to indicate the ID of the listbox element. - Has the
aria-activedescendant
attribute to indicate the ID of the focused option. - When
label
is set, thearia-labelledby
attribute is added to the combobox element and the listbox element and is set to the value of theid
attribute oflabel
.
Keyboard interactions
- โ - Move focus to the next option.
- โ - Move focus to the previous option.
- Enter - Select the focused option.
- Esc - Close the listbox.
Props
<InputPicker>
Property | Type (Default) |
Description |
---|---|---|
block | boolean | Blocking an entire row |
caretAs | ElementType | Custom component for the caret icon |
classPrefix | string ('picker') |
The prefix of the component CSS class |
cleanable | boolean (true) |
Whether the option can be emptied. |
container | HTMLElement | (() => HTMLElement) | Sets the rendering container |
creatable | boolean | Settings can create new options |
data * | ItemDataType[] | Selectable data |
defaultValue | string | Default value |
disabled | boolean | Whether or not component is disabled |
disabledItemValues | string[] | Disable optional |
groupBy | string | Set grouping criteria 'key' in 'data' |
labelKey | string ('label') |
Set options to display the 'key' in 'data' |
listProps | ListProps | Properties of virtualized lists. |
loading | boolean (false) |
Whether to display a loading state indicator |
locale | PickerLocaleType | Locale text |
menuClassName | string | A css class to apply to the Menu DOM node. |
menuMaxHeight | number (320) |
Set the max height of the Dropdown |
menuStyle | CSSProperties | A style to apply to the Menu DOM node. |
onChange | (value:string, event) => void | callback function when value changes |
onClean | (event) => void | Callback fired when value clean |
onClose | () => void | Close callback functions |
onCreate | (value: string, item: ItemDataType, event) => void | Callback fired when a new option is created |
onEnter | () => void | Callback fired before the overlay transitions in |
onEntered | () => void | Callback fired after the overlay finishes transitioning in |
onEntering | () => void | Callback fired as the overlay begins to transition in |
onExit | () => void | Callback fired right before the overlay transitions out |
onExited | () => void | Callback fired after the overlay finishes transitioning out |
onExiting | () => void | Callback fired as the overlay begins to transition out |
onGroupTitleClick | (event) => void | Click the callback function for the group header |
onOpen | () => void | Open callback function |
onSearch | (searchKeyword:string, event) => void | callback function for Search |
onSelect | (value:string, item: ItemDataType , event) => void | option is clicked after the selected callback function |
open | boolean | Whether open the component |
placeholder | ReactNode ('Select') |
Setting placeholders |
placement | Placement('bottomStart') |
The placement of component |
preventOverflow | boolean | Prevent floating element overflow |
renderExtraFooter | () => ReactNode | custom render extra footer |
renderMenu | (menu: ReactNode) => ReactNode | Customizing the Rendering Menu list |
renderMenuGroup | (groupTitle: ReactNode, item: ItemDataType) => ReactNode | Custom Render Options Group |
renderMenuItem | (label: ReactNode, item: ItemDataType) => ReactNode | Custom Render Options |
renderValue | (value:string, item: ItemDataType,selectedElement:ReactNode) => ReactNode | Custom Render selected options |
searchable | boolean (true) |
Whether you can search for options. |
searchBy | (keyword: string, label: ReactNode, item: ItemDataType) => boolean | Custom search rules |
shouldDisplayCreateOption | (searchKeyword: string, filteredData: InputItemDataType[]) => boolean | Customize whether to display "Create option" action with given textbox value |
size | 'lg' | 'md' | 'sm' | 'xs' ('md') |
A picker can have different sizes |
sort | (isGroup: boolean) => (a: any, b: any) => number | Sort options |
toggleAs | ElementType ('a') |
You can use a custom element for this component |
value | string | Value (Controlled) |
valueKey | string ('value') |
Set option value 'key' in 'data' |
virtualized | boolean | Whether using Virtualized List |
ts:ItemDataType
interface ItemDataType<V> {
/** The value of the option corresponds to the `valueKey` in the data. **/
value: V;
/** The content displayed by the option corresponds to the `labelKey` in the data. **/
label: ReactNode;
/**
* The data of the child option corresponds to the `childrenKey` in the data.
* Properties owned by tree structure components, such as TreePicker, Cascader.
*/
children?: ItemDataType<V>[];
/**
* Properties of grouping functional components, such as CheckPicker, InputPicker
*/
groupBy?: string;
/**
* The children under the current node are loading.
* Used for components that have cascading relationships and lazy loading of children. E.g. Cascader, MultiCascader
*/
loading?: boolean;
}
ts:Placement
type Placement =
| 'bottomStart'
| 'bottomEnd'
| 'topStart'
| 'topEnd'
| 'leftStart'
| 'leftEnd'
| 'rightStart'
| 'rightEnd'
| 'auto'
| 'autoVerticalStart'
| 'autoVerticalEnd'
| 'autoHorizontalStart'
| 'autoHorizontalEnd';
ts:ListProps
interface ListProps {
/**
* Size of a item in the direction being windowed.
*/
itemSize?: number | ((index: number) => number);
/**
* Scroll offset for initial render.
*/
initialScrollOffset?: number;
/**
* Called when the items rendered by the list change.
*/
onItemsRendered?: (props: ListOnItemsRenderedProps) => void;
/**
* Called when the list scroll positions changes, as a result of user scrolling or scroll-to method calls.
*/
onScroll?: (props: ListOnScrollProps) => void;
}