@ebay/ui-core-react
Version:
Skin components build off React
91 lines (68 loc) • 4.25 kB
Markdown
//opensource.ebay.com/ebayui-core-react/main/?path=/docs/building-blocks-ebay-listbox--docs)
```jsx harmony
import { EbayListbox, EbayListboxOption, EbayListboxOptionDescription } from "@ebay/ui-core-react/ebay-listbox";
```
```js
import "@ebay/skin/listbox";
```
```js
import "@ebay/skin/listbox.css";
```
```jsx
<EbayListbox>
<EbayListboxOption value="AA" text="Option 1" />
<EbayListboxOption value="BB" text="Option 2" />
<EbayListboxOption value="CC" text="Option 3" />
</EbayListbox>
```
| Name | Type | Required | Description |
| ------------------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name` | string | No | Used for the name attribute of the native `<select>`. |
| `disabled` | boolean | No | Set to true if the field is disabled. |
| `listSelection` | string | No | If `manual`, the user will need to press enter to select an item using the keyboard. Otherwise, `auto` will automatically select as the user presses up/down. |
| `typeaheadTimeoutLength` | number | No | Timeout length to pass to typeahead. |
| `maxHeight` | string | No | Example: 100px, 200px, 10rem. |
| Name | Type | Required | Description |
| ---------- | ------------ | -------- | ------------------------------------------------------ |
| `icon` | ReactElement | No | An optional icon to display alongside the option text. |
| `text` | string | No | The text to display for the option. |
| `value` | string | Yes | The value of the option. |
| `disabled` | boolean | No | Set to true if the option is disabled. |
| `selected` | boolean | No | Set to true if the option is selected by default. |
| Name | Type | Required | Description | Data |
| ---------- | -------- | -------- | ------------------------------ | ---------------------------------------------------------------------------- |
| `onChange` | Function | No | triggered on change | `(ChangeEvent, { index: number, selected: string[] , wasClicked: boolean })` |
| `onEscape` | Function | No | triggered on typing Escape key | `()` |
```jsx
<EbayListbox>
<EbayListboxOption value="AA" text="Option 1" />
<EbayListboxOption value="BB" text="Option 2" />
<EbayListboxOption value="CC" text="Option 3" />
</EbayListbox>
```
```jsx
<EbayListbox>
<EbayListboxOption value="AA" text="Option 1">
<EbayListboxOptionDescription>Option 1 extra info</EbayListboxOptionDescription>
</EbayListboxOption>
<EbayListboxOption value="BB" text="Option 2">
<EbayListboxOptionDescription>Option 2 extra info</EbayListboxOptionDescription>
</EbayListboxOption>
<EbayListboxOption value="CC" text="Option 3">
<EbayListboxOptionDescription>Option 3 extra info</EbayListboxOptionDescription>
</EbayListboxOption>
</EbayListbox>
```
[ ](https: