Rev 3156 | Rev 3167 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { useSelector } from 'react-redux'
import { Box, Button } from '@mui/material'
import BootstrapModal from 'react-bootstrap/Modal'
import Spinner from '../Spinner'
import styles from './Modal.module.scss'
const Modal = ({
show = false,
title = '',
onAccept = () => null,
onClose = () => {},
onShow = () => {},
onReject = null,
labelAccept = '',
labelReject = '',
size = 'md',
centered = true,
animation = true,
showFooter = true,
dialogClassName,
loading = false,
children
}) => {
const labels = useSelector(({ intl }) => intl.labels)
return (
<BootstrapModal
animation={animation}
className={dialogClassName}
centered={centered}
show={show}
size={size}
onHide={onClose}
onShow={onShow}
autoFocus={false}
enforceFocus={false}
>
<BootstrapModal.Header className={styles['modal-header']} closeButton>
<BootstrapModal.Title>{title}</BootstrapModal.Title>
</BootstrapModal.Header>
<BootstrapModal.Body className={styles['modal-content']}>
{children}
{loading ? (
<Box
sx={{
position: 'absolute',
zIndex: 1250,
width: '100%',
height: '100%',
top: 0,
left: 0,
display: 'grid',
placeItems: 'center'
}}
>
<Spinner />
</Box>
) : null}
</BootstrapModal.Body>
{showFooter ? (
<BootstrapModal.Footer className={styles['modal-footer']}>
<Button color='primary' onClick={onAccept} disabled={loading}>
{labelAccept || labels.accept}
</Button>
<Button color='secondary' onClick={onReject || onClose}>
{labelReject || labels.cancel}
</Button>
</BootstrapModal.Footer>
) : null}
</BootstrapModal>
)
}
export default Modal