DocSpace-client/packages/components/combobox/combobox-docs..mdx

147 lines
3.1 KiB
Plaintext
Raw Normal View History

import { Meta, Story, ArgsTable, Canvas, Controls } from "@storybook/blocks";
import CatalogEmployeeReactSvg from "PUBLIC_DIR/images/catalog.employee.react.svg?url";
import ComboBox from "./";
import * as stories from "./combobox.stories.js";
<Meta
title="Components/ComboBox"
component={ComboBox}
argTypes={{
onSelect: {
action: "onSelect",
},
selectedOption: { required: true },
options: { required: true },
}}
/>
# ComboBox
Custom combo box input
<Canvas>
<div
style={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<Story story={stories.basic} />
<Story story={stories.baseOption} name="Base Option" />
<Story story={stories.advancedOption} />
<Story story={stories.badgeType} />
</div>
</Canvas>
### Properties
<Controls />
```js
import ComboBox from "@docspace/components/combobox";
import NavLogoReactSvg from "PUBLIC_DIR/images/nav.logo.react.svg";
```
```js
const options = [
{
key: 1,
icon: CatalogEmployeeReactSvg, // optional item
label: "Option 1",
disabled: false, // optional item
onClick: clickFunction, // optional item
},
];
```
```jsx
<ComboBox
options={options}
isDisabled={false}
selectedOption={{
key: 0,
label: "Select",
}}
dropDownMaxHeight={200}
noBorder={false}
scale={true}
scaledOptions={true}
size="content"
onSelect={(option) => console.log("selected", option)}
/>
```
Options have options:
- key - Item key, may be a string or a number
- label - Display text
- icon - Optional name of icon that will be displayed before label
- disabled - Make option disabled
- onClick - On click function
ComboBox perceives all property`s for positioning from DropDown!
If you need to display a custom list of options, you must use advancedOptions property. Like this:
```js
const advancedOptions = (
<>
<DropDownItem>
<RadioButton value="asc" name="first" label="A-Z" isChecked={true} />
</DropDownItem>
<DropDownItem>
<RadioButton value="desc" name="first" label="Z-A" />
</DropDownItem>
<DropDownItem isSeparator />
<DropDownItem>
<RadioButton value="first" name="second" label="First name" />
</DropDownItem>
<DropDownItem>
<RadioButton
value="last"
name="second"
label="Last name"
isChecked={true}
/>
</DropDownItem>
</>
);
```
```jsx
<ComboBox
options={[]} // An empty array will enable advancedOptions
advancedOptions={advancedOptions}
onSelect={(option) => console.log("Selected option", option)}
selectedOption={{
key: 0,
label: "Select",
}}
isDisabled={false}
scaled={false}
size="content"
directionX="right"
>
<NavLogoReactSvg size="medium" key="comboIcon" />
</ComboBox>
```
To use Combobox as a toggle button, you must declare it according to the parameters:
```jsx
<ComboBox
options={[]} // Required to display correctly
selectedOption={{
key: 0,
label: "Selected option",
}}
scaled={false}
size="content"
displayType="toggle"
2023-05-16 11:38:53 +00:00
onToggle={alert("action")}
>
<NavLogoReactSvg size="medium" key="comboIcon" />
</ComboBox>
```