"use clent" import { LayoutDrawer, TEMA } from '@/module/_global'; import { ActionIcon, Box, Button, Center, Divider, Flex, Grid, Modal, Progress, rem, SimpleGrid, Stack, Text, TextInput } from '@mantine/core'; import { useParams, useRouter, useSearchParams } from 'next/navigation'; import React, { useRef, useState } from 'react'; import toast from 'react-hot-toast'; import { FaFolderClosed, FaRegImage } from 'react-icons/fa6'; import { HiDocumentText } from 'react-icons/hi2'; import { IoAddCircle, IoDocumentText } from 'react-icons/io5'; import { funCreateFolder, funUploadFileDocument } from '../lib/api_document'; import { useHookstate } from '@hookstate/core'; import { globalRefreshDocument } from '../lib/val_document'; import { Dropzone } from '@mantine/dropzone'; import _ from 'lodash'; export default function DrawerMenuDocumentDivision() { const [openDrawerDocument, setOpenDrawerDocument] = useState(false) const [openModal, setOpenModal] = useState(false) const router = useRouter() const param = useParams<{ id: string }>() const searchParams = useSearchParams() const path = searchParams.get('path') const refresh = useHookstate(globalRefreshDocument) const openRef = useRef<() => void>(null) const [fileForm, setFileForm] = useState() const tema = useHookstate(TEMA) const [loading, setLoading] = useState(false) const [bodyFolder, setBodyFolder] = useState({ name: '', path: (path == undefined || path == '' || path == null) ? 'home' : path, idDivision: param.id }) async function onCreateFolder() { try { const res = await funCreateFolder(bodyFolder) if (!res.success) { toast.error(res.message) } } catch (error) { console.error(error); toast.error("Gagal membuat folder baru, coba lagi nanti"); } refresh.set(true) setOpenModal(false) setOpenDrawerDocument(false) } async function onUploadFile(data: any) { try { setLoading(true) const fd = new FormData() fd.append(`file`, data) fd.append("data", JSON.stringify({ idPath: (path == undefined || path == '' || path == null) ? 'home' : path, idDivision: param.id })) setOpenModal(false) // setOpenDrawerDocument(false) const res = await funUploadFileDocument(fd) if (!res.success) { toast.error(res.message) } setLoading(false) } catch (error) { console.error(error); toast.error("Gagal upload file, coba lagi nanti"); setLoading(false) } refresh.set(true) setOpenDrawerDocument(false) } return ( {loading ? ( Loading... ) : ( setOpenDrawerDocument(true)} > Tambah Dokumen ) } setOpenDrawerDocument(false)} title={''}> {loading ? ( Loading... ) : ( setOpenDrawerDocument(true)} > setOpenModal(true)} justify={'center'} align={'center'} direction={'column'} mb={20} > Membuat Folder { if (!files || _.isEmpty(files)) return toast.error('Tidak ada file yang dipilih') onUploadFile(files[0]) }} activateOnClick={false} maxSize={3 * 1024 ** 2} accept={['text/csv', 'image/png', 'image/jpeg', 'image/heic', 'application/pdf']} onReject={(files) => { refresh.set(true) setOpenModal(false) setOpenDrawerDocument(false) toast.error('File yang diizinkan: .csv, .png, .jpg, .heic, .pdf dengan ukuran maksimal 3 MB') }} > openRef.current?.()}> Upload File ) } setOpenModal(false)} centered withCloseButton={false}> Buat Folder Baru setBodyFolder({ ...bodyFolder, name: e.target.value })} /> ); }