import React, { useState, useRef } from "react"; import img from "../../assets/image/image.png"; import { useNavigate } from "react-router-dom"; import { getUserData } from "./functions/getUserData"; import { useProjectName } from "../../store/builder/store"; import { viewProject } from "../../services/dashboard/viewProject"; import OuterClick from "../../utils/outerClick"; import { KebabIcon } from "../icons/ExportCommonIcons"; interface DashBoardCardProps { projectName: string; thumbnail: any; projectId: string; handleDeleteProject?: (projectId: string) => Promise; handleRestoreProject?: (projectId: string) => Promise; active?: string; } const DashboardCard: React.FC = ({ projectName, handleDeleteProject, thumbnail, projectId, handleRestoreProject, active }) => { const navigate = useNavigate(); const { setProjectName } = useProjectName(); const { userId, organization, userName } = getUserData(); const [isKebabOpen, setIsKebabOpen] = useState(false); const kebabRef = useRef(null); const navigateToProject = async () => { try { const viewedProject = await viewProject(organization, projectId, userId); console.log("Viewed project:", viewedProject); } catch (error) { console.error("Error opening project:", error); } setProjectName(projectName); navigate(`/${projectId}`); }; const handleOptionClick = async (option: string) => { switch (option) { case "delete": if (handleDeleteProject) { await handleDeleteProject(projectId); } break; case "restore": if (handleRestoreProject) { await handleRestoreProject(projectId); } break; case "open in new tab": try { await viewProject(organization, projectId, userId); setProjectName(projectName); // optional depending on scope } catch (error) { console.error("Error opening project in new tab:", error); } window.open(`/${projectId}`, "_blank"); break; case "rename": // Add rename logic here break; case "duplicate": // Add duplication logic here break; default: break; } setIsKebabOpen(false); }; OuterClick({ contextClassName: ["kebab-wrapper", "kebab-options-wrapper"], setMenuVisible: () => setIsKebabOpen(false), }); return ( {isKebabOpen && active !== "trash" && (
{["rename", "delete", "duplicate", "open in new tab"].map((option) => ( ))}
)} {isKebabOpen && active && active == "trash" && ( < div className="kebab-options-wrapper"> {["restore", "delete"].map((option) => ( ))} ) } ); }; export default DashboardCard;