43 lines
1.0 KiB
JavaScript
43 lines
1.0 KiB
JavaScript
|
import { connect } from 'react-redux';
|
||
|
import React from 'react';
|
||
|
import PropTypes from 'prop-types';
|
||
|
import { CSSTransition, TransitionGroup } from 'react-transition-group';
|
||
|
import * as actionCreators from '../../actions';
|
||
|
import Toast from './Toast';
|
||
|
|
||
|
import './Toast.css';
|
||
|
|
||
|
const Toasts = props => (
|
||
|
<TransitionGroup className="toasts">
|
||
|
{props.toasts.notices && props.toasts.notices.map((toast) => {
|
||
|
const { id } = toast;
|
||
|
return (
|
||
|
<CSSTransition
|
||
|
key={id}
|
||
|
timeout={500}
|
||
|
classNames="toast"
|
||
|
>
|
||
|
<Toast removeToast={props.removeToast} {...toast} />
|
||
|
</CSSTransition>
|
||
|
);
|
||
|
})}
|
||
|
</TransitionGroup>
|
||
|
);
|
||
|
|
||
|
Toasts.propTypes = {
|
||
|
toasts: PropTypes.object,
|
||
|
removeToast: PropTypes.func,
|
||
|
};
|
||
|
|
||
|
const mapStateToProps = (state) => {
|
||
|
const { toasts } = state;
|
||
|
const props = { toasts };
|
||
|
return props;
|
||
|
};
|
||
|
|
||
|
export default connect(
|
||
|
mapStateToProps,
|
||
|
actionCreators,
|
||
|
)(Toasts);
|
||
|
|