import React, { useState } from "react"; import { useRouter } from "next/router"; import { Popover2 } from "@blueprintjs/popover2"; import { MoreHorizontal, Pencil, Trash2, ChevronRight, Link } from "lucide-react"; // hooks import useToast from "hooks/use-toast"; // helpers import { copyTextToClipboard } from "helpers/string.helper"; // types import { IIssue, IIssueDisplayProperties } from "types"; type Props = { issue: IIssue; projectId: string; expanded: boolean; handleToggleExpand: (issueId: string) => void; properties: IIssueDisplayProperties; handleEditIssue: (issue: IIssue) => void; handleDeleteIssue: (issue: IIssue) => void; disableUserActions: boolean; nestingLevel: number; }; export const IssueColumn: React.FC = ({ issue, projectId, expanded, handleToggleExpand, properties, handleEditIssue, handleDeleteIssue, disableUserActions, nestingLevel, }) => { const [isOpen, setIsOpen] = useState(false); const router = useRouter(); const { workspaceSlug } = router.query; const { setToastAlert } = useToast(); const openPeekOverview = () => { const { query } = router; router.push({ pathname: router.pathname, query: { ...query, peekIssue: issue.id }, }); }; const handleCopyText = () => { const originURL = typeof window !== "undefined" && window.location.origin ? window.location.origin : ""; copyTextToClipboard(`${originURL}/${workspaceSlug}/projects/${projectId}/issues/${issue.id}`).then(() => { setToastAlert({ type: "success", title: "Link Copied!", message: "Issue link copied to clipboard.", }); }); }; const paddingLeft = `${nestingLevel * 54}px`; return (
{properties.key && (
{issue.project_detail?.identifier}-{issue.sequence_id} {!disableUserActions && (
setIsOpen(nextOpenState)} content={
} placement="bottom-start" >
)}
{issue.sub_issues_count > 0 && (
)}
)}
); };