diff --git a/storybook/stories/Multiselect/MultiselectMultipleValues/MultiselectMultipleValues.js b/storybook/stories/Multiselect/MultiselectMultipleValues/MultiselectMultipleValues.js new file mode 100644 index 000000000..af613c04b --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectMultipleValues/MultiselectMultipleValues.js @@ -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 ( + + ); +}); \ No newline at end of file diff --git a/storybook/stories/Multiselect/MultiselectMultipleValues/index.js b/storybook/stories/Multiselect/MultiselectMultipleValues/index.js new file mode 100644 index 000000000..f7c2216f8 --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectMultipleValues/index.js @@ -0,0 +1 @@ +require('./MultiselectMultipleValues'); diff --git a/storybook/stories/Multiselect/MultiselectMultipleValues/styles.less b/storybook/stories/Multiselect/MultiselectMultipleValues/styles.less new file mode 100644 index 000000000..83da3846f --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectMultipleValues/styles.less @@ -0,0 +1,6 @@ +.label-container { + flex: none; + width: 17rem; + height: 3.6rem; + margin: 2rem; +} \ No newline at end of file diff --git a/storybook/stories/Multiselect/MultiselectNotAutoClosing/MultiselectNotAutoClosing.js b/storybook/stories/Multiselect/MultiselectNotAutoClosing/MultiselectNotAutoClosing.js new file mode 100644 index 000000000..5074694dc --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectNotAutoClosing/MultiselectNotAutoClosing.js @@ -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 ( + + ); +}); \ No newline at end of file diff --git a/storybook/stories/Multiselect/MultiselectNotAutoClosing/index.js b/storybook/stories/Multiselect/MultiselectNotAutoClosing/index.js new file mode 100644 index 000000000..666210910 --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectNotAutoClosing/index.js @@ -0,0 +1 @@ +require('./MultiselectNotAutoClosing'); diff --git a/storybook/stories/Multiselect/MultiselectNotAutoClosing/styles.less b/storybook/stories/Multiselect/MultiselectNotAutoClosing/styles.less new file mode 100644 index 000000000..83da3846f --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectNotAutoClosing/styles.less @@ -0,0 +1,6 @@ +.label-container { + flex: none; + width: 17rem; + height: 3.6rem; + margin: 2rem; +} \ No newline at end of file diff --git a/storybook/stories/Multiselect/MultiselectSingleValue/MultiselectSingleValue.js b/storybook/stories/Multiselect/MultiselectSingleValue/MultiselectSingleValue.js new file mode 100644 index 000000000..f143e5f8b --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectSingleValue/MultiselectSingleValue.js @@ -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 ( + + ); +}); \ No newline at end of file diff --git a/storybook/stories/Multiselect/MultiselectSingleValue/index.js b/storybook/stories/Multiselect/MultiselectSingleValue/index.js new file mode 100644 index 000000000..3d9f8a316 --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectSingleValue/index.js @@ -0,0 +1 @@ +require('./MultiselectSingleValue'); diff --git a/storybook/stories/Multiselect/MultiselectSingleValue/styles.less b/storybook/stories/Multiselect/MultiselectSingleValue/styles.less new file mode 100644 index 000000000..83da3846f --- /dev/null +++ b/storybook/stories/Multiselect/MultiselectSingleValue/styles.less @@ -0,0 +1,6 @@ +.label-container { + flex: none; + width: 17rem; + height: 3.6rem; + margin: 2rem; +} \ No newline at end of file diff --git a/storybook/stories/Multiselect/index.js b/storybook/stories/Multiselect/index.js new file mode 100644 index 000000000..b9003647a --- /dev/null +++ b/storybook/stories/Multiselect/index.js @@ -0,0 +1,3 @@ +require('./MultiselectMultipleValues'); +require('./MultiselectNotAutoClosing'); +require('./MultiselectSingleValue'); diff --git a/storybook/stories/index.js b/storybook/stories/index.js index a3b450370..cf5c2b933 100644 --- a/storybook/stories/index.js +++ b/storybook/stories/index.js @@ -1,6 +1,7 @@ require('./Addon'); -require('./MetaItem'); require('./ColorPicker'); -require('./SharePrompt'); -require('./Notification'); +require('./MetaItem'); require('./ModalDialog'); +require('./Multiselect'); +require('./Notification'); +require('./SharePrompt');