import { Box, Button, FormHelperText, TextField, Typography } from "@mui/material"; import { useTranslations } from "next-intl"; import Image from "next/image"; import DeleteForeverIcon from "@mui/icons-material/DeleteForever"; import { useRef, useState } from "react"; const UploadSystem = ({ fieldName, default_image, helperText, error, setFieldValue, imageAlt, label, enableDelete, }) => { const t = useTranslations(); const fileInputRef = useRef(null); const [selectedImage, setSelectedImage] = useState(default_image || "/images/upload-image.svg"); const [fileType, setFileType] = useState(null); const [fileName, setFileName] = useState(""); // upload files const handleUploadChange = (event) => { const uploadedFile = event.target?.files?.[0]; if (uploadedFile) { setSelectedImage(URL.createObjectURL(uploadedFile)); setFileType(uploadedFile.type); setFileName(uploadedFile.name); setFieldValue(fieldName, uploadedFile); } }; // end upload files const uploadBoxStyle = error ? { cursor: "pointer", objectFit: "contain", border: "1px dashed #d32f2f", borderRadius: "5px", padding: "5px", } : { cursor: "pointer", objectFit: "contain", border: "1px dashed #e1e1e1", borderRadius: "5px", padding: "5px", }; const handleClick = () => { fileInputRef.current.click(); }; const handleDeleteImage = () => { setselectedImage("/images/upload-image.svg"); setFieldValue(fieldname, null); }; return ( {label} {selectedImage === "/images/upload-image.svg" || selectedImage === default_image ? ( {imageAlt} ) : fileType && fileType.startsWith("image/") ? ( {imageAlt} ) : ( {fileName} )} handleUploadChange(e)} inputRef={fileInputRef} /> {enableDelete ? ( ) : ( "" )} {helperText} ); }; export default UploadSystem;