import React, { useEffect, useState } from "react"; import Parse from "parse"; import CreateFolder from "./CreateFolder"; import ModalUi from './ModalUi' const SelectFolder = ({ required, onSuccess, folderCls }) => { const [isOpen, SetIsOpen] = useState(false); const [clickFolder, setClickFolder] = useState(""); const [selectFolder, setSelectedFolder] = useState({}); const [folderList, setFolderList] = useState([]); const [tabList, setTabList] = useState([]); const [isLoader, setIsLoader] = useState(false); const [folderPath, setFolderPath] = useState(""); const [isAdd, setIsAdd] = useState(false); useEffect(() => { if (isOpen) { setIsAdd(false); setClickFolder({}); setFolderList([]); setTabList([]); fetchFolder(); } }, [isOpen]); const fetchFolder = async (folderPtr) => { setIsLoader(true); try { const FolderQuery = new Parse.Query(folderCls); if (folderPtr) { FolderQuery.equalTo("Folder", folderPtr); FolderQuery.equalTo("Type", "Folder"); } else { FolderQuery.doesNotExist("Folder"); FolderQuery.equalTo("Type", "Folder"); } const res = await FolderQuery.find(); if (res) { const result = JSON.parse(JSON.stringify(res)); if (result) { setFolderList(result); setIsLoader(false); } setIsLoader(false); } } catch (error) { setIsLoader(false); } }; const handleSelect = (item) => { setFolderList([]); setClickFolder({ ObjectId: item.objectId, Name: item.Name }); if (tabList.length > 0) { const tab = tabList.some((x) => x.objectId === item.objectId); if (!tab) { setTabList((tabs) => [...tabs, item]); const folderPtr = { __type: "Pointer", className: folderCls, objectId: item.objectId }; fetchFolder(folderPtr); } } else { setTabList((tabs) => [...tabs, item]); const folderPtr = { __type: "Pointer", className: folderCls, objectId: item.objectId }; fetchFolder(folderPtr); } }; const handleSubmit = () => { let url = "Root"; tabList.forEach((t) => { url = url + " / " + t.Name; }); setFolderPath(url); setSelectedFolder(clickFolder); if (onSuccess) { onSuccess(clickFolder); } SetIsOpen(false); }; const handleCancel = () => { SetIsOpen(false); setClickFolder({}); setFolderList([]); setTabList([]); }; const removeTabListItem = async (e, i) => { e.preventDefault(); // setEditable(false); if (!isAdd) { setIsLoader(true); let folderPtr; if (i) { setFolderList([]); let list = tabList.filter((itm, j) => { if (j <= i) { return itm; } }); let _len = list.length - 1; folderPtr = { __type: "Pointer", className: folderCls, objectId: list[_len].objectId }; setTabList(list); } else { setClickFolder({}); setSelectedFolder({}); setFolderList([]); setTabList([]); } fetchFolder(folderPtr); } }; const handleCreate = () => { setIsAdd(!isAdd); }; const handleAddFolder = () => { setFolderList([]); if (clickFolder && clickFolder.ObjectId) { fetchFolder({ __type: "Pointer", className: folderCls, objectId: clickFolder.ObjectId }); } else { fetchFolder(); } }; return (
{selectFolder && selectFolder.Name ? selectFolder.Name : "Root"}
{selectFolder && selectFolder.Name ? `(${folderPath})` : ""}