Multiselect stories added to storybook

This commit is contained in:
NikolaBorislavovHristov 2019-11-13 23:32:06 +02:00
parent da33bfa168
commit 7954e4f261
11 changed files with 137 additions and 3 deletions

View file

@ -0,0 +1,37 @@
const React = require('react');
const { storiesOf } = require('@storybook/react');
const { action } = require('@storybook/addon-actions');
const { Multiselect } = require('stremio/common');
const styles = require('./styles');
storiesOf('Multiselect', module).add('MultiselectMultipleValues', () => {
const [selected, setSelected] = React.useState(['a']);
const onSelect = React.useCallback((event) => {
action('onSelect')(event);
if (selected.includes(event.value)) {
setSelected(selected.filter((value) => value !== event.value));
} else {
setSelected([...selected, event.value]);
}
}, [selected]);
return (
<Multiselect
className={styles['label-container']}
direction={'bottom'}
title={'MultiselectMultipleValues'}
options={[
{ value: 'a', label: 'A' },
{ value: 'b' },
{ value: 'c', label: 'C' },
]}
selected={selected}
disabled={false}
dataset={{ prop: 'value' }}
renderLabelContent={null}
renderLabelText={null}
onOpen={action('onOpen')}
onClose={action('onClose')}
onSelect={onSelect}
/>
);
});

View file

@ -0,0 +1 @@
require('./MultiselectMultipleValues');

View file

@ -0,0 +1,6 @@
.label-container {
flex: none;
width: 17rem;
height: 3.6rem;
margin: 2rem;
}

View file

@ -0,0 +1,39 @@
const React = require('react');
const { storiesOf } = require('@storybook/react');
const { action } = require('@storybook/addon-actions');
const { Multiselect } = require('stremio/common');
const styles = require('./styles');
storiesOf('Multiselect', module).add('MultiselectNotAutoClosing', () => {
const [selected, setSelected] = React.useState(['a']);
const onSelect = React.useCallback((event) => {
action('onSelect')(event);
if (selected.includes(event.value)) {
setSelected(selected.filter((value) => value !== event.value));
} else {
setSelected([...selected, event.value]);
}
event.nativeEvent.closeMenuPrevented = true;
}, [selected]);
return (
<Multiselect
className={styles['label-container']}
direction={'bottom'}
title={'MultiselectNotAutoClosing'}
options={[
{ value: 'a', label: 'A' },
{ value: 'b' },
{ value: 'c', label: 'C' },
]}
selected={selected}
disabled={false}
dataset={{ prop: 'value' }}
renderLabelContent={null}
renderLabelText={null}
onOpen={action('onOpen')}
onClose={action('onClose')}
onSelect={onSelect}
/>
);
});

View file

@ -0,0 +1 @@
require('./MultiselectNotAutoClosing');

View file

@ -0,0 +1,6 @@
.label-container {
flex: none;
width: 17rem;
height: 3.6rem;
margin: 2rem;
}

View file

@ -0,0 +1,33 @@
const React = require('react');
const { storiesOf } = require('@storybook/react');
const { action } = require('@storybook/addon-actions');
const { Multiselect } = require('stremio/common');
const styles = require('./styles');
storiesOf('Multiselect', module).add('MultiselectSingleValue', () => {
const [selected, setSelected] = React.useState(['a']);
const onSelect = React.useCallback((event) => {
action('onSelect')(event);
setSelected([event.value]);
}, []);
return (
<Multiselect
className={styles['label-container']}
direction={'bottom'}
title={'MultiselectSingleValue'}
options={[
{ value: 'a', label: 'A' },
{ value: 'b' },
{ value: 'c', label: 'C' },
]}
selected={selected}
disabled={false}
dataset={{ prop: 'value' }}
renderLabelContent={null}
renderLabelText={null}
onOpen={action('onOpen')}
onClose={action('onClose')}
onSelect={onSelect}
/>
);
});

View file

@ -0,0 +1 @@
require('./MultiselectSingleValue');

View file

@ -0,0 +1,6 @@
.label-container {
flex: none;
width: 17rem;
height: 3.6rem;
margin: 2rem;
}

View file

@ -0,0 +1,3 @@
require('./MultiselectMultipleValues');
require('./MultiselectNotAutoClosing');
require('./MultiselectSingleValue');

View file

@ -1,6 +1,7 @@
require('./Addon');
require('./MetaItem');
require('./ColorPicker');
require('./SharePrompt');
require('./Notification');
require('./MetaItem');
require('./ModalDialog');
require('./Multiselect');
require('./Notification');
require('./SharePrompt');