1
0
mirror of https://gitlab.com/bramw/baserow.git synced 2024-11-21 15:27:53 +00:00
bramw_baserow/web-frontend/stories/Dropdown.stories.mdx
2024-10-14 08:47:26 +00:00

161 lines
4.1 KiB
Plaintext

import { Meta, Story, Props, Canvas } from '@storybook/addon-docs/blocks'
import { config, withDesign } from 'storybook-addon-designs'
import { action } from '@storybook/addon-actions'
import { useArgs } from '@storybook/client-api'
import Dropdown from '@baserow/modules/core/components/Dropdown'
import DropdownItem from '@baserow/modules/core/components/DropdownItem'
<Meta
title="Baserow/Form Elements/Dropdown"
component={Dropdown}
parameters={{
backgrounds: {
default: 'white',
values: [
{ name: 'white', value: '#ffffff' },
{ name: 'light', value: '#eeeeee' },
{ name: 'dark', value: '#222222' },
],
},
}}
decorators={[
withDesign,
(story, context) => {
const [_, updateArgs] = useArgs()
return story({ ...context, updateArgs })
},
]}
argTypes={{
searchText: {
control: {
type: 'text',
},
defaultValue: '',
},
placeholder: {
control: {
type: 'text',
},
defaultValue: '',
},
showSearch: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: false,
},
showInput: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: true,
},
showFooter: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: false,
},
disabled: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: false,
},
size: {
control: {
type: 'select',
options: ['regular', 'large'],
},
defaultValue: 'regular',
},
tabindex: {
control: {
type: 'number',
},
defaultValue: 0,
},
fixedItems: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: false,
},
maxWidth: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: false,
},
multiple: {
control: { type: null },
},
error: {
control: {
type: 'boolean',
options: [true, false],
},
defaultValue: false,
},
}}
/>
# Dropdown
The dropdown component is a basic native select input. It can be used to select a single or multiple options from a list.
export const Template = (args, { argTypes, updateArgs }) => ({
methods: {
action,
handleInput(value) {
updateArgs({ ...args, value })
action('handleInput')(value)
},
},
components: { Dropdown, DropdownItem },
props: Object.keys(argTypes),
template: `
<Dropdown @input="handleInput" v-bind="$props">
<DropdownItem name="France" value="france"></DropdownItem>
<DropdownItem name="Italy" value="italy"></DropdownItem>
<DropdownItem name="Netherlands" value="netherlands"></DropdownItem>
<DropdownItem name="Belgium" value="belgium"></DropdownItem>
</Dropdown>
`,
})
<Canvas>
<Story name="Default">{Template.bind({})}</Story>
<Story
name="Multiple selection"
args={{
multiple: true,
value: [],
}}
>
{Template.bind({})}
</Story>
</Canvas>
## Example
```javascript
<Dropdown>
<DropdownItem name="France" value="france"></DropdownItem>
<DropdownItem name="Italy" value="italy"></DropdownItem>
<DropdownItem name="Netherlands" value="netherlands"></DropdownItem>
<DropdownItem name="Belgium" value="belgium"></DropdownItem>
</Dropdown>
```
## Props
<Props of={Dropdown} />