From ab69780b867fd5e6443a52baaef26ce73448c85f Mon Sep 17 00:00:00 2001 From: abiyasa05 Date: Fri, 8 Nov 2024 09:37:37 +0700 Subject: [PATCH] create: add separate component for file upload on assessment --- .../fileUpload/fileUpload.tsx | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 apps/frontend/src/modules/assessmentManagement/fileUpload/fileUpload.tsx diff --git a/apps/frontend/src/modules/assessmentManagement/fileUpload/fileUpload.tsx b/apps/frontend/src/modules/assessmentManagement/fileUpload/fileUpload.tsx new file mode 100644 index 0000000..e2b6cfa --- /dev/null +++ b/apps/frontend/src/modules/assessmentManagement/fileUpload/fileUpload.tsx @@ -0,0 +1,95 @@ +import React, { useRef } from 'react'; +import { TbUpload } from 'react-icons/tb'; +import { Text, Stack, Group, CloseButton, Flex } from '@mantine/core'; +import FileSizeValidationModal from "@/modules/assessmentManagement/modals/FileSizeValidationModal"; + +interface Question { + questionId: string; + needFile: boolean; + // Add any other properties needed for question +} + +interface FileUploadProps { + question: Question; + handleFileChange: (event: React.ChangeEvent, question: Question) => void; + handleRemoveFile: (question: Question) => void; + uploadedFiles: Record; + dragActive: boolean; + handleDragOver: (event: React.DragEvent) => void; + handleDragLeave: (event: React.DragEvent) => void; + handleDrop: (event: React.DragEvent, question: Question) => void; + modalOpenFileSize: boolean; + setModalOpenFileSize: React.Dispatch>; + exceededFileName: string; + handleClick: () => void; +} + +const FileUpload: React.FC = ({ + question, + handleFileChange, + handleRemoveFile, + uploadedFiles, + dragActive, + handleDragOver, + handleDragLeave, + handleDrop, + modalOpenFileSize, + setModalOpenFileSize, + exceededFileName, + handleClick +}) => { + const fileInputRef = useRef(null); + + return ( +
+ {question.needFile && ( +
handleDrop(event, question)} + onClick={() => { + handleClick(); + fileInputRef.current?.click(); + }} + > + + +
+ Klik untuk unggah atau geser file disini + PNG, JPG, PDF + (Max.File size : 64 MB) +
+
+ handleFileChange(event, question)} + style={{ display: "none" }} + accept="image/png, image/jpeg, application/pdf" + /> +
+ )} + +
+ {uploadedFiles[question.questionId] && ( + + File yang diunggah: + + {uploadedFiles[question.questionId]?.name} + + + )} +
+ + {/* File Size Validation Modal */} + setModalOpenFileSize(false)} + fileName={exceededFileName} + /> +
+ ); +}; + +export default FileUpload; \ No newline at end of file