import { useObjectRef } from "@react-aria/utils"; import React, { useEffect } from "react"; import { useCallback } from "react"; import { useState } from "react"; import { forwardRef } from "react"; import { Avatar } from "../Avatar"; import { Button } from "../button"; import classNames from "classnames"; import { ReactComponent as EditIcon } from "../icons/Edit.svg"; import styles from "./AvatarInputField.module.css"; export const AvatarInputField = forwardRef( ( { id, label, className, avatarUrl, displayName, onRemoveAvatar, ...rest }, ref ) => { const [removed, setRemoved] = useState(false); const [objUrl, setObjUrl] = useState(null); const fileInputRef = useObjectRef(ref); useEffect(() => { const onChange = (e) => { if (e.target.files.length > 0) { setObjUrl(URL.createObjectURL(e.target.files[0])); setRemoved(false); } else { setObjUrl(null); } }; fileInputRef.current.addEventListener("change", onChange); return () => { if (fileInputRef.current) { fileInputRef.current.removeEventListener("change", onChange); } }; }); const onPressRemoveAvatar = useCallback(() => { setRemoved(true); onRemoveAvatar(); }, [onRemoveAvatar]); return (
); } );