Rev 3694 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { lazy, Suspense, useState } from 'react';import { Badge, IconButton, Avatar as MuiAvatar } from '@mui/material';import Edit from '@mui/icons-material/Edit';import colors from '@styles/config/colors';const ImageModal = lazy(() => import('@components/modals/ImageModal'));const Avatar = ({src = '',alt = 'Avatar',styles = {},uploadUrl = '',edit = false,size,badgeStyles,badgeContent,onImageChange,onClick,...props}) => {const [showModal, setShowModal] = useState(false);const [image, setImage] = useState('');const toggleModal = () => setShowModal(!showModal);const defaultBadgeContent = edit ? (<IconButtonsx={{backgroundColor: colors.button.background.primary,color: colors.button.text.primary,':hover': {backgroundColor: colors.button.background.primary,color: colors.button.text.primary,opacity: 0.9}}}color='primary'onClick={toggleModal}><Edit /></IconButton>) : null;const avatarContent = (<MuiAvatar src={image || src} alt={alt} sx={styles} {...props} onClick={onClick} />);return (<>{edit || badgeContent ? (<Badgeoverlap='circular'anchorOrigin={{ vertical: 'top', horizontal: 'right' }}sx={badgeStyles}badgeContent={badgeContent || defaultBadgeContent}>{avatarContent}</Badge>) : (avatarContent)}{edit && (<Suspense fallback={null}><ImageModalshow={showModal}url={uploadUrl}message={`Imágenes recomendadas: ${size ?? '200px'} x ${size ?? '200px'}`}onClose={toggleModal}onComplete={(newImage) => {setImage(newImage);if (onImageChange) {onImageChange(newImage);}}}/></Suspense>)}</>);};export default Avatar;