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);