@e-group/material-lab
Version:
EGroup Team Lab - Incubator for EGroup Team experimental React components.
75 lines (72 loc) • 2.4 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import React from 'react';
import clsx from 'clsx';
import { makeStyles } from '@material-ui/core/styles';
import { amber, green } from '@material-ui/core/colors';
import { SnackbarContent as MuiSnackbarContent, IconButton } from '@material-ui/core';
import CheckCircleIcon from '@material-ui/icons/CheckCircle';
import ErrorIcon from '@material-ui/icons/Error';
import InfoIcon from '@material-ui/icons/Info';
import WarningIcon from '@material-ui/icons/Warning';
import CloseIcon from '@material-ui/icons/Close';
const variantIcon = {
default: undefined,
success: CheckCircleIcon,
warning: WarningIcon,
error: ErrorIcon,
info: InfoIcon
};
const useStyles = makeStyles(theme => ({
success: {
backgroundColor: green[600]
},
error: {
backgroundColor: theme.palette.error.dark
},
info: {
backgroundColor: theme.palette.primary.main
},
warning: {
backgroundColor: amber[700]
},
icon: {
fontSize: 20
},
iconVariant: {
opacity: 0.9,
marginRight: theme.spacing(1)
},
messageContainer: {
display: 'flex',
alignItems: 'center'
}
}));
const SnackbarContent = props => {
const className = props.className,
messageProp = props.message,
onCloseClick = props.onCloseClick,
_props$variant = props.variant,
variant = _props$variant === void 0 ? 'default' : _props$variant,
other = _objectWithoutProperties(props, ["className", "message", "onCloseClick", "variant"]);
const classes = useStyles(props);
const Icon = variantIcon[variant];
const message = typeof messageProp === 'string' ? /*#__PURE__*/React.createElement("span", {
className: classes.messageContainer
}, Icon && /*#__PURE__*/React.createElement(Icon, {
className: clsx(classes.icon, classes.iconVariant)
}), messageProp) : messageProp;
const action = [/*#__PURE__*/React.createElement(IconButton, {
key: "close",
color: "inherit",
onClick: onCloseClick
}, /*#__PURE__*/React.createElement(CloseIcon, {
className: classes.icon
}))];
return /*#__PURE__*/React.createElement(MuiSnackbarContent, _extends({
className: clsx(classes[variant], className),
message: message,
action: action
}, other));
};
export default SnackbarContent;