feat: generic modal
This commit is contained in:
44
src/components/atoms/GenericModal.tsx
Normal file
44
src/components/atoms/GenericModal.tsx
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import React, { FC } from 'react';
|
||||||
|
import { Modal, IconButton, Box } from '@mui/material';
|
||||||
|
import { Clear } from "@mui/icons-material";
|
||||||
|
|
||||||
|
interface ModalProps {
|
||||||
|
isOpen: boolean;
|
||||||
|
onClose: () => void;
|
||||||
|
children?: JSX.Element;
|
||||||
|
modalStyle?: React.CSSProperties;
|
||||||
|
canBeClosed?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const GenericModal: FC<ModalProps> = (
|
||||||
|
{ isOpen, onClose, children, modalStyle , canBeClosed= true}) => {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal open={isOpen} onClose={canBeClosed ? onClose : ()=>{}} >
|
||||||
|
<Box sx={modalStyle ? {...modalStyle, boxShadow: 24, position: 'absolute',} : defaultModalStyle}>
|
||||||
|
{canBeClosed ?
|
||||||
|
<IconButton onClick={onClose} sx={{ float: "right" }}>
|
||||||
|
<Clear sx={{ fontSize: 20 }}/>
|
||||||
|
</IconButton>
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
{children}
|
||||||
|
</Box>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultModalStyle = {
|
||||||
|
position: 'absolute',
|
||||||
|
top: '50%',
|
||||||
|
left: '50%',
|
||||||
|
transform: 'translate(-50%, -50%)',
|
||||||
|
width: 500,
|
||||||
|
bgcolor: 'background.paper',
|
||||||
|
boxShadow: 24,
|
||||||
|
p: 4,
|
||||||
|
height:'60%',
|
||||||
|
display:'block',
|
||||||
|
overflow:'scroll',
|
||||||
|
padding: '5px 25px 10px 25px',
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user