@paprika/list-box
v7.0.1
Published
The ListBox component allows users to select one or more options from a list contained within the component
Downloads
10,080
Keywords
Readme
@paprika/list-box
Description
The ListBox component allows users to select one or more options from a list contained within the component
Installation
yarn add @paprika/list-box
or with npm:
npm install @paprika/list-box
Props
ListBox
| Prop | Type | required | default | Description | | -------------- | ----------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------- | ------------------------------------------------------------------------------ | | children | arrayOf | false | null | Child of type <ListBox.Option />, <ListBox.Divider />, etc | | hasError | bool | false | false | If ListBox is in an error state | | hasTag | bool | false | false | If there is a tag | | hasImplicitAll | bool | false | false | Has implicit "All items selected" value when no item is selected | | height | [string,number] | false | 200 | The maximum height for the options container. Using a number implies px units. | | isDisabled | bool | false | false | Disables the ListBox if true | | isInline | bool | false | false | This options will display the list-box without the Popover | | isMulti | bool | false | false | Let the user to select multiple options at same time | | isOpen | bool | false | false | Indicates if the popover is visible | | isReadOnly | bool | false | false | The ListBox will not allow value to be changed | | onChange | func | false | () => {} | Callback returning the current selection on the ListBox | | placeholder | string | false | null | Default label for trigger when the ListBox has no option selected | | size | [ ListBoxContainer.types.size.SMALL, ListBoxContainer.types.size.MEDIUM, ListBoxContainer.types.size.LARGE] | false | ListBoxContainer.types.size.MEDIUM | Size of the trigger and options (font size, height, padding, etc). | | contentOffsetX | number | false | 0 | Lets the user control the X-axis offset for the ListBox content | | contentOffsetY | number | false | 0 | Lets the user control the Y-axis offset for the ListBox content |
ListBox.A11y
| Prop | Type | required | default | Description | | -------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------- | | id | string | false | null | DOM id attribute for focussable control (trigger element or ul element if isInline=true) | | refLabel | custom | false | null | Ref for a DOM element containing the label for this component |
ListBox.Box
| Prop | Type | required | default | Description | | -------- | ---- | -------- | ------- | ------------------------ | | children | node | false | null | Body content of the box. |
ListBox.Divider
| Prop | Type | required | default | Description | | ---------- | ---- | -------- | ------- | --------------------------------------------- | | isDisabled | bool | false | true | isDisable is use internally as a default prop |
the prop is read by the option/helpers/optionState.js which is assigned in the store it helps to ignore the divider while using the keyboard. see: options/helpers/options.js| |children|node|false|null| |
ListBox.Filter
| Prop | Type | required | default | Description | | ---------------- | ------ | -------- | ------- | --------------------------------------------------------------------------------------------------- | | a11yText | string | false | null | Descriptive a11y text for assistive technologies. By default, text from children node will be used. | | filter | func | false | null | Filters the list | | hasSearchIcon | bool | false | true | If true displays a search icon | | noResultsMessage | string | false | null | Message displayed if no results are found | | onChangeFilter | func | false | null | Callback to be executed when the value is changed | | onKeyDown | func | false | null | Callback to be executed when a key is pressed | | placeholder | string | false | null | Displays a placeholder | | renderFilter | func | false | null | Render function for filter | | value | string | false | null | Sets a value for filter |
ListBox.Footer
| Prop | Type | required | default | Description | | ----------------- | ----------------------------------------------------------------------------- | -------- | ------------------------- | ----------------------------------------------------------------------------------- | | isAcceptVisible | bool | false | true | If true it makes the accept button visible | | isCancelVisible | bool | false | true | If true it makes the cancel button visible | | isClearVisible | bool | false | true | If true it makes the clear button visible | | isDisabled | bool | false | false | If true it makes the footer disabled | | kindAccept | [ Button.types.kind.PRIMARY, Button.types.kind.MINOR] | false | Button.types.kind.PRIMARY | Sets what kind the accept button will be | | kindCancel | [ Button.types.kind.PRIMARY, Button.types.kind.MINOR] | false | Button.types.kind.MINOR | Sets what kind the cancel button will be | | kindClear | [ Button.types.kind.PRIMARY, Button.types.kind.MINOR] | false | Button.types.kind.MINOR | Sets what kind the cancel button will be | | labelAccept | string | false | null | Sets the label for the accept button | | labelCancel | string | false | null | Sets the label for the cancel button | | labelClear | string | false | null | Sets the label for the clear button | | onClickAccept | func | false | null | Callback to be executed when the accept button is clicked or activated by keyboard. | | onClickCancel | func | false | null | Callback to be executed when the cancel button is clicked or activated by keyboard. | | onClickClear | func | false | null | Callback to be executed when the clear button is clicked or activated by keyboard. | | renderExtraButton | func | false | () => {} | Render an extra button beside the clear button | | size | [ Button.types.size.SMALL, Button.types.size.MEDIUM, Button.types.size.LARGE] | false | Button.types.size.MEDIUM | Determines the size of the footer |
ListBox.Option
| Prop | Type | required | default | Description | | ---------------------- | ----------- | -------- | ---------- | -------------------------------------------------------------------------------------- | | children | [node,func] | true | - | String, number or JSX content | | isSelected | bool | false | null | | | defaultIsSelected | bool | false | null | Describe if the option started as selected or not | | hasNoIcon | bool | false | false | When no PlusIcon or CheckBox are needed | | isDisabled | bool | false | false | Describe if the option is enable or not | | isHidden | bool | false | false | Describe if the option is hidden or not | | label | string | false | null | When the children are not a String, label should need to be add so the filter can work | | onClick | func | false | null | Callback for the clicking event | | value | any | false | null | Value of your option this can be any data structure | | internalHandleOnClick | func | false | () => null | Internal prop, which shouldn't be documented | | id | string | false | "" | Internal prop, which shouldn't be documented | | preventDefaultOnSelect | bool | false | false | Internal prop, which shouldn't be documented |
ListBox.Popover
| Prop | Type | required | default | Description | | -------- | ------ | -------- | ------- | ------------------------------------- | | children | node | false | - | Body content of the PopOver. | | zIndex | number | false | 100 | Sets the z-index value of the PopOver |
ListBox.RawItem
| Prop | Type | required | default | Description | | ---------------------- | ---- | -------- | ------- | ----------- | | preventDefaultOnSelect | bool | false | true | |
ListBox.Trigger
| Prop | Type | required | default | Description | | ------------------- | ----------- | -------- | ------- | ----------------------------------------------------------------------------------- | | clearIcon | node | false | null | Custom clear icon | | children | [node,func] | false | <></> | Body content of the trigger. | | hasClearButton | bool | false | true | If true it adds a clear button | | hasImplicitAll | bool | false | false | Has implicit "All items selected" value when no item is selected | | label | string | false | null | Override the label with a custom one. | | onClickClear | func | false | null | Callback to be executed when the clear button is clicked or activated by keyboard. | | onClickFooterAccept | func | false | null | Callback to be executed when the accept button is clicked or activated by keyboard. | | placeholder | string | false | null | Sets a placeholder for the trigger | | isHidden | bool | false | false | If true the trigger will be hidden |
For a basic ListBox
import ListBox from "@paprika/list-box";
function Component() {
return (
<ListBox onChange={changeHandler}>
<ListBox.Option>Option 1</ListBox.Option>
<ListBox.Option>Option 2</ListBox.Option>
</ListBox>
);
}
With Filter
import ListBox from "@paprika/list-box";
function Component() {
return (
<ListBox onChange={changeHandler}>
<ListBox.Filter />
<ListBox.Option>Option 1</ListBox.Option>
<ListBox.Option>Option 2</ListBox.Option>
</ListBox>
);
}