import React, { useState } from 'react'; import { storiesOf } from '@storybook/react'; import { Dropdown } from '../src'; import _ from 'lodash'; import iconToasterInfo from '../src/images/icon-trash-black.svg'; const data = [ { id: 1, value: 'Value 1', }, { id: 2, value: 'Value 2', }, { id: 3, value: 'Value 3', }, { id: 4, value: 'Value 4', }, { id: 5, value: 'Value 5', isDisabled: true, }, { id: 6, value: 'Value 6', }, { id: 8, value: 'Value 8', }, { id: 7, value: 'Value 7', }, { id: 9, value: "Ceci est la valeur numéro neuf qui a pour but d'overflow. Si ce n'est pas le cas c'est que j'ai fais de la merde", }, { id: 10, value: 'Value 10', }, { id: 11, value: 'Value 11', }, { id: 12, value: 'AAA', }, { id: -1, value: 'Aucune', }, ]; storiesOf('Dropdown', module).add('Single selection', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add( 'Single selection with label sort by id', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( { return _.sortBy(itemsList, 'id'); }} /> )} ); } ); storiesOf('Dropdown', module).add( 'Single selection with required label', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add( 'Single selection with required label disabled without values', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add('Single selection with icon', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add('Single selection with icon disabled', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add('Single selection without search bar', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add( 'Single selection with value disabled', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([ { id: 4, value: 'Value 4', }, ]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add('Single selection with button', () => { const button = { id: 1, text: 'Create category', handleClick: () => { console.log('Coucou'); }, iconSrc: iconToasterInfo, }; function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add( 'Single selection with disabled button', () => { const button = { id: 1, text: 'Create category', handleClick: () => { console.log('Coucou'); }, iconSrc: iconToasterInfo, isDisabled: true, }; function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add('Single selection with custom render', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } const data = [ { id: 1, value: 'value 1', renderValue: () => (
{'value 1'}
{'little hint'}
{'I AM THE BEST'}
), }, { id: 2, value: 'value 2', renderValue: () => (
{'value 2'}
{'little hint'}
), }, { id: 3, value: 'value 3', renderValue: () => (
{'value 3'}
{'little hint'}
), }, { id: 4, value: 'value 4', renderValue: () => (
{'value 4'}
{'little hint'}
), }, { id: 5, value: 'value 5', renderValue: () => (
{'value 5'}
{'little hint'}
), }, ]; return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add('Multiple selection', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add('Multiple selection with icon', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add( 'Multiple selection without search bar', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add('Multiple selection with button', () => { const button = { id: 1, text: 'Create category', handleClick: () => { console.log('Coucou'); }, iconSrc: iconToasterInfo, }; function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); }); storiesOf('Dropdown', module).add( 'Multiple selection with disabled button', () => { const button = { id: 1, text: 'Create category', handleClick: () => { console.log('Coucou'); }, iconSrc: iconToasterInfo, isDisabled: true, }; function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add( 'Multiple selection with custom render', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } const data = [ { id: 1, value: 'value 1', renderValue: () => (
{'value 1'}
{'little hint'}
), }, { id: 2, value: 'value 2', renderValue: () => (
{'value 2'}
{'little hint'}
), }, { id: 3, value: 'value 3', renderValue: () => (
{'value 3'}
{'little hint'}
), }, { id: 4, value: 'value 4', renderValue: () => (
{'value 4'}
{'little hint'}
), }, { id: 5, value: 'value 5', renderValue: () => (
{'value 5'}
{'little hint'}
), }, ]; return ( {(selectedItems, onSelectionChange) => ( )} ); } ); storiesOf('Dropdown', module).add( 'Multiple selection with custom render and without search bar', () => { function Parent({ children }) { const [selectedItems, setSelectedItems] = useState([]); const onSelectionChange = (items) => { setSelectedItems(items); }; return
{children(selectedItems, onSelectionChange)}
; } const data = [ { id: 1, value: 'value 1', renderValue: () => (
{'value 1'}
{'little hint'}
), }, { id: 2, value: 'value 2', renderValue: () => (
{'value 2'}
{'little hint'}
), }, { id: 3, value: 'value 3', renderValue: () => (
{'value 3'}
{'little hint'}
), }, { id: 4, value: 'value 4', renderValue: () => (
{'value 4'}
{'little hint'}
), }, { id: 5, value: 'value 5', renderValue: () => (
{'value 5'}
{'little hint'}
), }, ]; return ( {(selectedItems, onSelectionChange) => ( )} ); } );