Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3287 stevensc 1
import React, { lazy, Suspense, useState } from 'react'
2909 stevensc 2
import { Badge, IconButton, Avatar as MuiAvatar } from '@mui/material'
3
import { Edit } from '@mui/icons-material'
3288 stevensc 4
import colors from '@styles/colors'
2910 stevensc 5
 
3287 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
}) {
18
  const [showModal, setShowModal] = useState(false)
19
  const [image, setImage] = useState(src)
20
 
2910 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={
3288 stevensc 31
            <IconButton
32
              sx={{
3289 stevensc 33
                backgroundColor: colors.button.background.primary,
34
                color: colors.button.text.primary
3288 stevensc 35
              }}
36
              onClick={toggleModal}
37
            >
2909 stevensc 38
              <Edit />
39
            </IconButton>
3287 stevensc 40
          }
41
        >
42
          <MuiAvatar src={image} alt={alt} sx={styles} {...props} icon />
43
        </Badge>
44
        <Suspense fallback={null}>
45
          <ImageModal
46
            show={showModal}
47
            url={url}
48
            message={`Imágenes recomendadas de ${size ?? '200px'} `}
49
            onClose={toggleModal}
50
            onComplete={(newImage) => setImage(newImage)}
51
          />
52
        </Suspense>
53
      </>
54
    )
55
  }
56
 
57
  return <MuiAvatar src={image} alt={alt} sx={styles} {...props} icon />
2909 stevensc 58
}