Proyectos de Subversion LeadersLinked - SPA

Rev

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