import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import { mapToCssModules } from './utils'; import Fade from './Fade'; const propTypes = { children: PropTypes.node, className: PropTypes.string, closeClassName: PropTypes.string, closeAriaLabel: PropTypes.string, cssModule: PropTypes.object, color: PropTypes.string, isOpen: PropTypes.bool, toggle: PropTypes.func, tag: PropTypes.oneOfType([PropTypes.func, PropTypes.string]), transition: PropTypes.shape(Fade.propTypes), }; const defaultProps = { color: 'success', isOpen: true, tag: 'div', closeAriaLabel: 'Close', transition: { ...Fade.defaultProps, unmountOnExit: true, }, }; function Alert(props) { const { className, closeClassName, closeAriaLabel, cssModule, tag: Tag, color, isOpen, toggle, children, transition, ...attributes } = props; const classes = mapToCssModules(classNames( className, 'alert', `alert-${color}`, { 'alert-dismissible': toggle } ), cssModule); const closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule); return ( {toggle ? : null} {children} ); } Alert.propTypes = propTypes; Alert.defaultProps = defaultProps; export default Alert;