import { Box, Button, Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerFooter, DrawerHeader, DrawerOverlay, FormControl, FormLabel, Input, Text, } from "@chakra-ui/react"; import * as yup from "yup"; import React, { useContext, useState } from "react"; import { useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import CustomAlertDialog from "../../Components/CustomAlertDialog"; import { v4 as uuidv4 } from 'uuid'; import { useNavigate } from 'react-router-dom'; import { GrDocumentPdf } from "react-icons/gr"; import { FaRegFileAlt } from "react-icons/fa"; import { TbFileTypeDocx } from "react-icons/tb"; import { AiOutlineFileGif } from "react-icons/ai"; import GlobalStateContext from "../../Contexts/GlobalStateContext"; import InvestmentDocument from "./CreateIO/InvestmentDocument"; export const bytesToMB = (bytes) => { if (bytes === 0) return "0 MB"; const bytesInMB = 1024 * 1024; return (bytes / bytesInMB).toFixed(2) + " MB"; }; export const investmentDocSchema = yup.object().shape({ document: yup.mixed().required("Document is required"), fileName: yup.string().required("File name is required"), }); const InvestmentDocuments = ({ id, isOpen, onClose, firstField, create, setCreate }) => { const [file, setFile] = useState(null); const [alert, setAlert] = useState(false); const navigate = useNavigate(); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: yupResolver(investmentDocSchema), }); // const onSubmit = (data) => { // console.log(data); // setFile(data.document[0]); // // Additional code for handling form submission // }; const onSubmit = (data) => { console.log(data); setFile(data.document[0]); const newDocument = { ...data, document: data.document[0].name, // Store the document name status: true, id: uuidv4(), createdAt: new Date().toISOString(), Type:getFileIcon(file.type) }; setCreate((prevCreate) => [...prevCreate, newDocument]); navigate(" "); }; const handleFileChange = (event) => { const selectedFile = event.target.files[0]; setFile(selectedFile); }; const getFileIcon = (type) => { switch (type) { case 'application/pdf': return ; case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': case 'application/msword': return ; case 'image/jpeg': case 'image/png': case 'image/gif': return ; default: return ; } }; const getFileTitle = (type) => { switch (type) { case 'application/pdf': return "PDF"; case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': case 'application/msword': return "DOCX"; case 'image/jpeg': case 'image/png': case 'image/gif': return "JPG"; default: return "HH"; } }; return ( <> Add Details File Name {errors.fileName && ( {errors.fileName.message} )} Document {errors.document && ( {errors.document.message} )} {file && ( {getFileIcon(file.type)} {file.name} {bytesToMB(file.size)} )} setAlert(false)} message="Are you sure you want to add this document?" /> ); }; export default InvestmentDocuments;