import { Typography } from '@material-ui/core' import Button, { ButtonProps } from '@material-ui/core/Button' import Dialog, { DialogProps } from '@material-ui/core/Dialog' import DialogActions from '@material-ui/core/DialogActions' import DialogContent from '@material-ui/core/DialogContent' import DialogContentText from '@material-ui/core/DialogContentText' import DialogTitle from '@material-ui/core/DialogTitle' import { createStyles, makeStyles, Theme } from '@material-ui/core/styles' import CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined' import ErrorOutlineOutlinedIcon from '@material-ui/icons/ErrorOutlineOutlined' import InfoOutlinedIcon from '@material-ui/icons/InfoOutlined' import ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined' import { Color } from '@material-ui/lab/Alert' import React, { useCallback } from 'react' import { useTranslation } from 'react-i18next' const useStyles = makeStyles((theme: Theme) => createStyles({ icon: { position: 'relative', top: '0.11em', width: theme.typography.h5.fontSize, height: theme.typography.h5.fontSize, }, }), ) export interface CustomAlertPrpps extends DialogProps { title?: string severity?: Color contentText?: string | string[] handleAlert: () => void buttonText?: string buttonProps?: ButtonProps } const CustomAlert = (props: CustomAlertPrpps) => { const { open, handleAlert, title, severity, contentText, buttonText, buttonProps, ...rest } = props const classes = useStyles() const { t } = useTranslation() const icon = useCallback(() => { return severity === 'error' ? ( ) : severity === 'success' ? ( ) : severity === 'warning' ? ( ) : ( ) }, [severity]) return ( {icon()} {title || t('common.noti')} {contentText && ( {Array.isArray(contentText) ? ( contentText.map((value, index) => ( - {value} )) ) : ( {contentText} )} )} ) } export default CustomAlert