fathom/assets/js/components/Notification.js

46 lines
882 B
JavaScript
Raw Normal View History

'use strict'
import { h, Component } from 'preact';
import { bind } from 'decko';
class Notification extends Component {
constructor(props) {
super(props)
this.state = {
message: props.message,
kind: props.kind || 'error'
}
this.timeout = 0
}
2018-05-03 08:54:22 +00:00
componentWillReceiveProps(newProps, prevState) {
if(newProps.message === this.state.message) {
return;
}
2018-05-03 08:54:22 +00:00
this.setState({
message: newProps.message,
kind: newProps.kind || 'error'
})
window.clearTimeout(this.timeout)
2018-05-11 12:15:58 +00:00
this.timeout = window.setTimeout(this.props.onDismiss, 5000)
}
render(props, state) {
if(state.message === '') {
return ''
}
return (
<div class={`notification`}>
<div class={`notification-${state.kind}`}>
{state.message}
</div>
</div>
)}
}
export default Notification