Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3444 stevensc 1
import React, { lazy, Suspense, useState } from 'react';
2
import { Badge, IconButton, Avatar as MuiAvatar } from '@mui/material';
3
import { Edit } from '@mui/icons-material';
4
import colors from '@styles/colors';
2910 stevensc 5
 
3444 stevensc 6
const ImageModal = lazy(() => import('@components/modals/ImageModal'));
2909 stevensc 7
 
8
export default function Avatar({
9
  src = '',
10
  alt = '',
11
  styles = {},
12
  url = '',
13
  edit = false,
3047 stevensc 14
  size,
3059 stevensc 15
  badgeStyles,
2909 stevensc 16
  ...props
17
}) {
3444 stevensc 18
  const [showModal, setShowModal] = useState(false);
19
  const [image, setImage] = useState(src);
2909 stevensc 20
 
3444 stevensc 21
  const toggleModal = () => setShowModal(!showModal);
2909 stevensc 22
 
3287 stevensc 23
  if (edit) {
24
    return (
25
      <>
26
        <Badge
27
          overlap='circular'
28
          anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
29
          sx={badgeStyles}
30
          badgeContent={
3291 stevensc 31
            <IconButton
32
              sx={{
33
                backgroundColor: colors.button.background.primary,
34
                color: colors.button.text.primary,
35
                ':hover': {
36
                  backgroundColor: colors.button.background.primary,
37
                  color: colors.button.text.primary,
38
                  opacity: 0.9
39
                }
40
              }}
41
              color='primary'
42
              onClick={toggleModal}
43
            >
2909 stevensc 44
              <Edit />
45
            </IconButton>
3287 stevensc 46
          }
47
        >
48
          <MuiAvatar src={image} alt={alt} sx={styles} {...props} icon />
49
        </Badge>
50
        <Suspense fallback={null}>
51
          <ImageModal
52
            show={showModal}
53
            url={url}
54
            message={`Imágenes recomendadas de ${size ?? '200px'} `}
55
            onClose={toggleModal}
56
            onComplete={(newImage) => setImage(newImage)}
57
          />
58
        </Suspense>
59
      </>
3444 stevensc 60
    );
3287 stevensc 61
  }
62
 
3444 stevensc 63
  return <MuiAvatar src={image} alt={alt} sx={styles} {...props} icon />;
2909 stevensc 64
}