import React, { memo, useMemo } from 'react'; import classNames from 'classnames'; import Button from '@material-ui/core/Button'; import Typography from '@material-ui/core/Typography'; import useLang from '@Hooks/useLang'; import useMessage from '@Hooks/useMessage'; import useMappedState from '@Hooks/useMappedState'; import Modal from '@Components/Base/Modal'; import { ConfirmItemObject } from './types'; import Styles from './index.module.css'; /* Confirm Item */ function ConfirmItem(props: ConfirmItemObject): React.ReactElement { /* Global & Local States */ const { i18n } = useLang(); const { confirm, requestRemoveConfirm } = props; /* Functions */ const onConfirmClick = (): void => { if (confirm.onConfirm) confirm.onConfirm(); requestRemoveConfirm(); }; const onCancelClick = (): void => { if (confirm.onCancel) confirm.onCancel(); requestRemoveConfirm(); }; /* Main */ return (
{confirm.typeTitle}
{confirm.typeContent && confirm.typeContent}
); } function ModalConfirm(): React.ReactElement { /* Global & Local States */ const reduxMessage = useMessage(); const storeMessage = useMappedState((state) => state.message); /* Functions */ const requestRemoveConfirm = (): void => { reduxMessage.removeConfirm(); }; /* Views */ const RenderMessages = useMemo(() => { if (storeMessage.messageConfirmList.list.length > 0) { return ( ); } return ; }, [storeMessage.messageConfirmList]); const RenderIsMessageOpen = useMemo(() => { if (storeMessage.messageConfirmList.list.length > 0) { return true; } return false; }, [storeMessage.messageConfirmList]); /* Main */ return ( {RenderMessages} ); } export default memo(ModalConfirm);