UNPKG

hbm-react-components

Version:
60 lines (54 loc) 1.49 kB
import React from 'react' import {Motion, spring} from 'react-motion' /** * Snackbar component */ // 1. 'Snackbar' makes sure all children are centered on page // 2. 'Snackbar-background' creates dark background // 3. 'Snackbar-content' wraps content so it can animate opacity independently from background var Snackbar = ({text, action, onAction, visible}) => ( <Motion style={{ transform: spring(visible ? 0 : 48), opacity: spring(visible ? 1 : 0) }}> {style => { if (style.opacity === 0) { return <span /> } return ( <div className='Snackbar' style={{ transform: `translate3d(0, ${style.transform}px, 0)` }}> <div className='Snackbar-background'> <div className='Snackbar-content' style={{ opacity: style.opacity }}> <span className='Snackbar-text'> {text} </span> {action && <input type='button' className='Snackbar-action' onClick={onAction} value={action} /> } </div> </div> </div> ) }} </Motion> ) /** * Snackbar property types */ Snackbar.propTypes = { text: React.PropTypes.string, action: React.PropTypes.string, onAction: React.PropTypes.func, visible: React.PropTypes.bool } /** * Export Snackbar component */ export default Snackbar