diff --git a/components/form/shared/file-uploader.tsx b/components/form/shared/file-uploader.tsx index e5fd8875..64d2e1a5 100644 --- a/components/form/shared/file-uploader.tsx +++ b/components/form/shared/file-uploader.tsx @@ -11,118 +11,121 @@ interface FileWithPreview extends File { } interface FileUploaderProps { - onDrop: (files: FileWithPreview[]) => void; - accept: Accept; - maxSize: number; - label: string; - className?: string; - isMultiple?: boolean; + onDrop: (files: FileWithPreview[]) => void; + accept: Accept; + maxSize: number; + label: string; + className?: string; + isMultiple?: boolean; } -const FileUploader = ({ onDrop, accept, maxSize, label, className = "", isMultiple = true }: FileUploaderProps) => { - const [files, setFiles] = useState([]); +const FileUploader = ({ + onDrop, + accept, + maxSize, + label, + className = "", + isMultiple = true, +}: FileUploaderProps) => { + const [files, setFiles] = useState([]); - const { getRootProps, getInputProps } = useDropzone({ - accept, - maxSize: maxSize * 1024 * 1024, - onDrop: (acceptedFiles) => { - const mappedFiles = acceptedFiles.map((file) => Object.assign(file)); - setFiles((prevFiles) => [...prevFiles, ...mappedFiles]); - onDrop(mappedFiles); - }, - }); + const { getRootProps, getInputProps } = useDropzone({ + accept: accept, + maxSize: maxSize * 1024 * 1024, + onDrop: (acceptedFiles) => { + const mappedFiles = acceptedFiles.map((file) => Object.assign(file)); + setFiles((prevFiles) => [...prevFiles, ...mappedFiles]); + onDrop(mappedFiles); + }, + }); - const renderFilePreview = (file: FileWithPreview) => { - if (file.type.startsWith("image")) { - return ( - {file.name} - ); - } else { - return ; - } - }; - - const handleRemoveFile = (file: FileWithPreview) => { - const uploadedFiles = files; - const filtered = uploadedFiles.filter((i) => i.name !== file.name); - setFiles([...filtered]); - }; + const renderFilePreview = (file: FileWithPreview) => { + if (file.type.startsWith("image")) { + return ( + {file.name} + ); + } else { + return ; + } + }; - const handleRemoveAllFiles = () => { - setFiles([]); - onDrop([]); - }; - - const fileList = files.map((file) => ( -
-
-
{renderFilePreview(file)}
-
-
{file.name}
-
- {Math.round(file.size / 100) / 10 > 1000 ? ( - <>{(Math.round(file.size / 100) / 10000).toFixed(1)} - ) : ( - <>{(Math.round(file.size / 100) / 10).toFixed(1)} - )} - {" kb"} -
+ const handleRemoveFile = (file: FileWithPreview) => { + const uploadedFiles = files; + const filtered = uploadedFiles.filter((i) => i.name !== file.name); + setFiles([...filtered]); + }; + + const handleRemoveAllFiles = () => { + setFiles([]); + onDrop([]); + }; + + const fileList = files.map((file) => ( +
+
+
{renderFilePreview(file)}
+
+
{file.name}
+
+ {Math.round(file.size / 100) / 10 > 1000 ? ( + <>{(Math.round(file.size / 100) / 10000).toFixed(1)} + ) : ( + <>{(Math.round(file.size / 100) / 10).toFixed(1)} + )} + {" kb"}
- -
- )); - - return ( + + +
+ )); + + return ( + +
+ +
+ +

+ {/* Drop files here or click to upload. */} + Tarik file disini atau klik untuk upload. +

+
+ ( {label} + Ukuran maksimal {maxSize} MB.) +
+
+
+ {files.length ? ( -
- -
- -

- {/* Drop files here or click to upload. */} - Tarik file disini atau klik untuk upload. -

-
- ( {label} - Ukuran maksimal {maxSize} MB.) -
-
-
- {files.length ? ( - -
{fileList}
-
- -
-
- ) : null} +
{fileList}
+
+ +
- ); -} + ) : null} +
+ ); +}; - -export default FileUploader; \ No newline at end of file +export default FileUploader; diff --git a/components/form/task/task-form.tsx b/components/form/task/task-form.tsx index 3a3af009..4ba06f5b 100644 --- a/components/form/task/task-form.tsx +++ b/components/form/task/task-form.tsx @@ -805,8 +805,7 @@ export default function FormTask() { {t("text")}