Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2721 | Rev 3156 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
2722 stevensc 1
import React from 'react'
1426 stevensc 2
import { useSelector } from 'react-redux'
2722 stevensc 3
import { Box } from '@mui/material'
1426 stevensc 4
import BootstrapModal from 'react-bootstrap/Modal'
5
 
1567 stevensc 6
import Button from '../buttons/Buttons'
2722 stevensc 7
import Spinner from '../Spinner'
1426 stevensc 8
 
9
import styles from './Modal.module.scss'
10
 
11
const Modal = ({
12
  show = false,
13
  title = '',
1916 stevensc 14
  onAccept = () => null,
1426 stevensc 15
  onClose = () => {},
16
  onShow = () => {},
17
  onReject = null,
18
  labelAccept = '',
19
  labelReject = '',
20
  size = 'md',
21
  centered = true,
22
  animation = true,
23
  showFooter = true,
1960 stevensc 24
  dialogClassName,
2722 stevensc 25
  loading = false,
1426 stevensc 26
  children
27
}) => {
28
  const labels = useSelector(({ intl }) => intl.labels)
29
 
30
  return (
31
    <BootstrapModal
32
      animation={animation}
1960 stevensc 33
      className={dialogClassName}
1426 stevensc 34
      centered={centered}
35
      show={show}
36
      size={size}
37
      onHide={onClose}
38
      onShow={onShow}
2556 stevensc 39
      autoFocus={false}
40
      enforceFocus={false}
1426 stevensc 41
    >
42
      <BootstrapModal.Header className={styles['modal-header']} closeButton>
43
        <BootstrapModal.Title>{title}</BootstrapModal.Title>
44
      </BootstrapModal.Header>
45
 
46
      <BootstrapModal.Body className={styles['modal-content']}>
47
        {children}
2722 stevensc 48
 
49
        {loading ? (
50
          <Box
51
            sx={{
52
              position: 'absolute',
53
              zIndex: 1250,
54
              width: '100%',
55
              height: '100%',
56
              top: 0,
57
              left: 0,
58
              display: 'grid',
59
              placeItems: 'center'
60
            }}
61
          >
62
            <Spinner />
63
          </Box>
64
        ) : null}
1426 stevensc 65
      </BootstrapModal.Body>
66
 
67
      {showFooter ? (
68
        <BootstrapModal.Footer className={styles['modal-footer']}>
2722 stevensc 69
          <Button variant='primary' onClick={onAccept} disabled={loading}>
1567 stevensc 70
            {labelAccept || labels.accept}
71
          </Button>
72
          <Button variant='secondary' onClick={onReject || onClose}>
73
            {labelReject || labels.cancel}
74
          </Button>
1426 stevensc 75
        </BootstrapModal.Footer>
76
      ) : null}
77
    </BootstrapModal>
78
  )
79
}
80
 
81
export default Modal