Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3289 | Rev 3291 | 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'
2910 stevensc 4
 
3287 stevensc 5
const ImageModal = lazy(() => import('@components/modals/ImageModal'))
2909 stevensc 6
 
7
export default function Avatar({
8
  src = '',
9
  alt = '',
10
  styles = {},
11
  url = '',
12
  edit = false,
3047 stevensc 13
  size,
3059 stevensc 14
  badgeStyles,
2909 stevensc 15
  ...props
16
}) {
17
  const [showModal, setShowModal] = useState(false)
18
  const [image, setImage] = useState(src)
19
 
2910 stevensc 20
  const toggleModal = () => setShowModal(!showModal)
2909 stevensc 21
 
3287 stevensc 22
  if (edit) {
23
    return (
24
      <>
25
        <Badge
26
          overlap='circular'
27
          anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
28
          sx={badgeStyles}
29
          badgeContent={
3290 stevensc 30
            <IconButton color='primary' onClick={toggleModal}>
2909 stevensc 31
              <Edit />
32
            </IconButton>
3287 stevensc 33
          }
34
        >
35
          <MuiAvatar src={image} alt={alt} sx={styles} {...props} icon />
36
        </Badge>
37
        <Suspense fallback={null}>
38
          <ImageModal
39
            show={showModal}
40
            url={url}
41
            message={`Imágenes recomendadas de ${size ?? '200px'} `}
42
            onClose={toggleModal}
43
            onComplete={(newImage) => setImage(newImage)}
44
          />
45
        </Suspense>
46
      </>
47
    )
48
  }
49
 
50
  return <MuiAvatar src={image} alt={alt} sx={styles} {...props} icon />
2909 stevensc 51
}