import React from 'react';
import { connect } from 'react-redux';
import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup';
import Notif from './Notif';
import PropTypes from 'prop-types';
// This checks to see if object is immutable and properly access it
const getter = (obj, propName) => (obj.get ? obj.get(propName) : obj[propName]);
const Notifs = (props) => {
const {
notifications,
className,
componentClassName,
CustomComponent,
transitionEnterTimeout,
transitionLeaveTimeout,
} = props;
const renderedNotifications = notifications.map((notification) => {
if (CustomComponent) {
return (
);
}
return (
);
});
const classes = [
`${componentClassName}__container`,
className,
].join(' ').split();
return (
{renderedNotifications}
);
};
Notifs.defaultProps = {
className: null,
componentClassName: 'notif',
CustomComponent: null,
transitionEnterTimeout: 600,
transitionLeaveTimeout: 600,
};
Notifs.propTypes = {
notifications: PropTypes.array.isRequired,
className: PropTypes.string,
CustomComponent: PropTypes.oneOfType([
PropTypes.func,
PropTypes.node,
PropTypes.element,
]),
componentClassName: PropTypes.string,
transitionEnterTimeout: PropTypes.number,
transitionLeaveTimeout: PropTypes.number,
};
function mapStateToProps(state) {
return { notifications: state.get ? state.get('notifs') : state.notifs };
}
export default connect(mapStateToProps)(Notifs);