import React, { ImgHTMLAttributes, useState } from "react"; import "./Avatar.css"; import { renderProps, onLoad, getCN, getClassName, get_typeName, } from "../utils"; export interface IAvatar extends React.HTMLAttributes { children?: React.ReactNode, badge?: React.ReactNode, src?: string | undefined | [string, string], mode?: "default" | "app", size?: 16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 56 | 64 | 72 | 80 | 88 | 96 | number, filter?: number, after?: React.ReactNode, shadow?: boolean, sizeShadow?: number, loading?: ImgHTMLAttributes["loading"], } export const BorderRadiusAuto = (size: number) => { var new_size = size / 3.71428571429; if (new_size > 20) return 20; return new_size //3,71428571429 } const Avatar = ({ children, src, mode = `default`, size = 48, filter = 10, after, shadow = false, sizeShadow = size, loading, badge, ...props }: IAvatar) => { const [status_image, setStatusImage] = useState([true, true]); const __src = Array.isArray(src) ? src : [src]; React.useEffect(() => { for (var i = 0; i < __src.length; i++) { onLoad(src, (data: any) => { if (data == `error`) status_image[i] = false; if (data == `success`) status_image[i] = true; setStatusImage([status_image[0], status_image[1]]); }); } }, [src]) return ( {__src[0] && } {__src[1] && } {badge && {badge}} {after && {after}} {__src[0] && shadow && ( )} {children} ); } /* {after && ( , after) && `MYUI-Avatar__after--avatar`, ])} > {after} )} {shadow && ( )} {children} */ export default Avatar;