import React from 'react'; import Component from '../component'; export default class Notification extends Component { constructor () { super(); this.state = { dismissing: false }; this.dismiss = this.dismiss.bind(this); this.onElement = this.onElement.bind(this); } componentDidMount () { if (this.props.dismissAfter) { this.setDismissTimer(); } } componentWillReceiveProps (next) { // if we have a timer going and the notification text // changed we rest the timer if (next.text !== this.props.text) { if (this.props.dismissAfter) { this.resetDismissTimer(); } if (this.state.dismissing) { this.setState({ dismissing: false }); } } } dismiss () { this.setState({ dismissing: true }); } onElement (el) { if (el) { el.addEventListener('webkitTransitionEnd', () => { if (this.state.dismissing) { this.props.onDismiss(); } }); // aprhodie !important override :( const { backgroundColor } = this.props; if (backgroundColor) { el.style.setProperty( 'background-color', backgroundColor, 'important' ); } } } setDismissTimer (after) { this.dismissTimer = setTimeout(() => { this.dismiss(); }, this.props.dismissAfter); } resetDismissTimer (after) { clearTimeout(this.dismissTimer); this.setDismissTimer(); } componentWillUnmount () { clearTimeout(this.dismissTimer); } template (css) { const { backgroundColor } = this.props; const opacity = this.state.dismissing ? 0 : 1; return