Drawer
Drawer
is a sliding panel that appears from the edge of the screen, used for navigation or to display additional content without navigating away from the current view. It can be opened and closed by any user interaction doe outside.
Demo
Result
Loading...
Live Editor
//import {useToastState, Toast, ButtonGroup, Button} from 'koval-ui'; function Example(props) { const id = 'foo'; const {isOpen, closeDrawer, openDrawer} = useDrawerState(id); const handleClick = useCallback(() => { isOpen ? closeDrawer() : openDrawer(); }, [closeDrawer, isOpen, openDrawer]); return ( <Fragment> <Button onClick={handleClick}>Toggle Drawer</Button> <Drawer id={id}>Drawer content.</Drawer> </Fragment> ); }
Props
id
type: string
Provide unique id for Drawer
placement
type: 'left' | 'right'
Choose a side to attach Drawer
useDrawerState
hook interface
useDrawerState
uses Koval Global Context, so it works anywhere in the application. Developers can put Drawer
in the other component.
openDrawer
Show a Drawer
to the user.
const {openDrawer} = useDrawerState('foo');
const handleClick = useCallback(() => {
openDrawer();
}, [openDrawer]);
closeDrawer
Hide Drawer
.
const {closeDrawer} = useDrawerState('foo');
const handleClick = useCallback(() => {
closeDrawer();
}, [closeToast]);
Multiple Drawers
Result
Loading...
Live Editor
//import {useToastState, Toast, ButtonGroup, Button} from 'koval-ui'; function Example(props) { const { isOpen: isOpenFoo, closeDrawer: closeDrawerFoo, openDrawer: openDrawerFoo, } = useDrawerState('foo'); const { isOpen: isOpenBar, closeDrawer: closeDrawerBar, openDrawer: openDrawerBar, } = useDrawerState('bar'); const handleClickFoo = useCallback(() => { isOpenFoo ? closeDrawerFoo() : openDrawerFoo(); }, [closeDrawerFoo, isOpenFoo, openDrawerFoo]); const handleClickBar = useCallback(() => { isOpenBar ? closeDrawerBar() : openDrawerBar(); }, [closeDrawerBar, isOpenBar, openDrawerBar]); return ( <Fragment> <ButtonGroup> <Button onClick={handleClickFoo}>Toggle Drawer #1</Button> <Button onClick={handleClickBar}>Toggle Drawer #2</Button> </ButtonGroup> <Drawer id="foo" placement="left"> <H2>Foo drawer</H2> </Drawer> <Drawer id="bar" placement="right"> <H2>Bar drawer</H2> </Drawer> </Fragment> ); }