Snackbar update
This commit is contained in:
parent
9f91c0490c
commit
7623455cb6
@ -27,6 +27,7 @@
|
|||||||
background-color: rgba(0, 0, 0, 0.75);
|
background-color: rgba(0, 0, 0, 0.75);
|
||||||
z-index: 3000;
|
z-index: 3000;
|
||||||
transition: transform 0.75s;
|
transition: transform 0.75s;
|
||||||
|
transform: translateX(-50%) translateY(0px);
|
||||||
}
|
}
|
||||||
|
|
||||||
#action {
|
#action {
|
||||||
|
@ -21,9 +21,7 @@ import styles from './snackbar.css';
|
|||||||
|
|
||||||
export default class Snackbar extends Component {
|
export default class Snackbar extends Component {
|
||||||
state = {
|
state = {
|
||||||
snackStyle: {
|
opened: false
|
||||||
transform: 'translateX(-50%) translateY(40px)'
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
@ -32,7 +30,7 @@ export default class Snackbar extends Component {
|
|||||||
message: PropTypes.string,
|
message: PropTypes.string,
|
||||||
autoHideDuration: PropTypes.number,
|
autoHideDuration: PropTypes.number,
|
||||||
bodyStyle: PropTypes.object,
|
bodyStyle: PropTypes.object,
|
||||||
onRequestClose: PropTypes.Func
|
onRequestClose: PropTypes.func
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultProps = {
|
defaultProps = {
|
||||||
@ -40,46 +38,26 @@ export default class Snackbar extends Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
componentWillUpdate (nextProps) {
|
componentWillUpdate (nextProps) {
|
||||||
const self = this;
|
if (this.state.opened) {
|
||||||
|
|
||||||
if (this.openStatus) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nextProps.open === true) {
|
if (nextProps.open === true) {
|
||||||
this.openStatus = true;
|
this.show();
|
||||||
|
|
||||||
self.autoShow();
|
setTimeout(this.hide, nextProps.autoHideDuration);
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
self.autoHide();
|
|
||||||
}, nextProps.autoHideDuration);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
autoShow () {
|
|
||||||
this.setState({
|
|
||||||
snackStyle: {
|
|
||||||
transform: 'translateX(-50%) translateY(0px)'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
autoHide () {
|
|
||||||
this.props.onRequestClose();
|
|
||||||
this.openStatus = false;
|
|
||||||
this.setState({
|
|
||||||
snackStyle: {
|
|
||||||
transform: 'translateX(-50%) translateY(40px)'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { bodyStyle, message } = this.props;
|
const { bodyStyle, message } = this.props;
|
||||||
const { snackStyle } = this.state;
|
const { opened } = this.state;
|
||||||
let { action } = this.props;
|
let { action } = this.props;
|
||||||
|
|
||||||
|
if (!opened) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (action === null || action === 'undefined') {
|
if (action === null || action === 'undefined') {
|
||||||
action = (
|
action = (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
@ -90,7 +68,7 @@ export default class Snackbar extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={ styles.snacks } style={ snackStyle }>
|
<div className={ styles.snacks }>
|
||||||
<div style={ bodyStyle }>
|
<div style={ bodyStyle }>
|
||||||
<span>{ message }</span>
|
<span>{ message }</span>
|
||||||
<span id={ styles.action } onClick={ this.autoHide }>{ action }</span>
|
<span id={ styles.action } onClick={ this.autoHide }>{ action }</span>
|
||||||
@ -98,4 +76,17 @@ export default class Snackbar extends Component {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show = () => {
|
||||||
|
this.setState({
|
||||||
|
opened: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
hide = () => {
|
||||||
|
this.props.onRequestClose();
|
||||||
|
this.setState({
|
||||||
|
opened: false
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user