UNPKG

generator-bingo-dig-h5

Version:

Bingo-dig-h5 generator by BINGO.DIG

81 lines (65 loc) 1.82 kB
var React = require('react'); var CssEvent = require('../utils/css-event'); var Classable = require('../mixins/classable'); var ClickAwayable = require('../mixins/click-awayable'); var FlatButton = require('./flat-button'); var Snackbar = React.createClass({ mixins: [Classable, ClickAwayable], manuallyBindClickAway: true, propTypes: { action: React.PropTypes.string, message: React.PropTypes.string.isRequired, openOnMount: React.PropTypes.bool, onActionTouchTap: React.PropTypes.func }, getInitialState: function() { return { open: this.props.openOnMount || false }; }, componentClickAway: function() { this.dismiss(); }, componentDidUpdate: function(prevProps, prevState) { if (prevState.open != this.state.open) { if (this.state.open) { //Only Bind clickaway after transition finishes CssEvent.onTransitionEnd(this.getDOMNode(), function() { this._bindClickAway(); }.bind(this)); } else { this._unbindClickAway(); } } }, render: function() { var classes = this.getClasses('dig-snackbar', { 'dig-is-open': this.state.open }); var action; if (this.props.action) { action = ( <FlatButton className="dig-snackbar-action" label={this.props.action} onTouchTap={this.props.onActionTouchTap} /> ); } return ( <span className={classes}> <span className="dig-snackbar-message">{this.props.message}</span> {action} </span> ); }, show: function() { this.setState({ open: true }); setTimeout(function() { this.setState({ open: false }); }.bind(this), 3000); }, dismiss: function() { this.setState({ open: false }); } }); module.exports = Snackbar;