@paprika/list-box
v8.0.0
Published
The ListBox component allows users to select one or more options from a list contained within the component
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-boxor with npm:
npm install @paprika/list-boxProps
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>
);
}