Navigation drawer built with the awesome react-motion and react-hammerjs
react-motion-drawer
Navigation drawer built with the awesome react-motion by @chenglou and react-hammerjs by @JedWatson
Example
To run the example locally, run:
$ yarn
$ yarn serve
Installation
Via npm:
npm install react-motion-drawer
Usage
import Drawer from 'react-motion-drawer';
<Drawer open={false} onChange={onChange}>
<ul>
<li>Home</li>
<li>About</li>
<li>Settings</li>
</ul>
</Drawer>
If you want the drawer on the right side of the screen you need the following css.
body {
overflow: hidden;
}
Hooking into the animation
You can hook into the animation by passing a function as the child component.
<Drawer open={false} width={300} onChange={onChange}>
{ val =>
<ul style={{ opacity: 300 / val }}>
<li>Home</li>
<li>About</li>
<li>Settings</li>
</ul>
}
</Drawer>
API
Props
zIndex: number
- z-index of the drawer (default10000
)noTouchOpen: bool
- can a user pan to open (defaultfalse
)noTouchClose: bool
- can a user pan to close(defaultfalse
)onChange: func
- called when the drawer is open (default() => {}
)drawerStyle: object
- additional drawer stylesclassName: object
- additional drawer classNameoverlayClassName: object
- additional overlay classNameconfig: object
- configuration of the react-motion animation (default{stiffness: 350, damping: 40}
)open: bool
- states if the drawer is open (defaultfalse
)width: number
- width of the drawer (default300
)height: number
- height of the drawer (default'100%'
)handleWidth: number
- width of the handle (default20
)peakingWidth: number
- width that the drawer peaks on press (default50
)panTolerance: number
- tolerance until the drawer starts to move (default50
)right: bool
- drawer on the right side of the screen (defaultfalse
)overlayColor: string
- color of the overlay (defaultrgba(0, 0, 0, 0.4)
)fadeOut: bool
- fade out (defaultfalse
)offset: number
- offset of the drawer (default0
)