Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3719 stevensc 1
import { Button, Modal, IconButton } from '@mui/material';
2
import { Close } from '@mui/icons-material';
3
import React from 'react';
4
import Widget from '../Widget';
5
import Spinner from '../Spinner';
6
 
7
const GlobalModal = ({
8
  title = '',
9
  size = 'md',
10
  onAccept,
11
  onClose,
12
  onReject = null,
13
  labelAccept = 'Aceptar',
14
  labelReject = 'Cancelar',
15
  showFooter = true,
16
  dialogClassName,
17
  loading = false,
18
  formId,
19
  children
20
}) => {
21
  const labels = {
22
    accept: 'Aceptar',
23
    cancel: 'Cancelar'
24
  };
25
 
26
  return (
27
    <Modal open onClose={onClose}>
28
      <Widget
29
        styles={{
30
          position: 'absolute',
31
          top: '50%',
32
          left: '50%',
33
          transform: 'translate(-50%, -50%)',
34
          maxWidth: size === 'sm' ? '300px' : size === 'md' ? '500px' : '700px',
35
          width: '100%',
36
          maxHeight: '90vh',
37
          overflowY: 'auto'
38
        }}
39
        className={dialogClassName}
40
      >
41
        <Widget.Header
42
          title={title}
43
          renderAction={() => (
44
            <IconButton onClick={onClose}>
45
              <Close />
46
            </IconButton>
47
          )}
48
        />
49
 
50
        <Widget.Body styles={{ position: 'relative' }}>
51
          {loading && <Spinner absolute />}
52
          {children}
53
        </Widget.Body>
54
 
55
        {showFooter && (
56
          <Widget.Footer styles={{ display: 'flex', justifyContent: 'flex-start', gap: 1 }}>
57
            <Button
58
              color='primary'
59
              onClick={onAccept}
60
              disabled={loading}
61
              form={formId}
62
              type={formId ? 'submit' : 'button'}
63
            >
64
              {labelAccept || labels.accept}
65
            </Button>
66
            <Button color='secondary' onClick={onReject || onClose}>
67
              {labelReject || labels.cancel}
68
            </Button>
69
          </Widget.Footer>
70
        )}
71
      </Widget>
72
    </Modal>
73
  );
74
};
75
 
76
export default GlobalModal;