import { memo } from "react"; import { Draggable } from "@hello-pangea/dnd"; // components import { IssueProperties } from "../properties/all-properties"; // ui import { Tooltip } from "@plane/ui"; // types import { IIssue } from "types"; import { EIssueActions } from "../types"; import { useRouter } from "next/router"; import { ICycleIssuesFilterStore, IModuleIssuesFilterStore, IProfileIssuesFilterStore, IProjectIssuesFilterStore, IViewIssuesFilterStore, } from "store_legacy/issues"; import { WithDisplayPropertiesHOC } from "../properties/with-display-properties-HOC"; interface IssueBlockProps { sub_group_id: string; columnId: string; index: number; issue: IIssue; issuesFilter: | IProjectIssuesFilterStore | IModuleIssuesFilterStore | ICycleIssuesFilterStore | IViewIssuesFilterStore | IProfileIssuesFilterStore; isDragDisabled: boolean; showEmptyGroup: boolean; handleIssues: (issue: IIssue, action: EIssueActions) => void; quickActions: (issue: IIssue) => React.ReactNode; canEditProperties: (projectId: string | undefined) => boolean; } interface IssueDetailsBlockProps { issue: IIssue; showEmptyGroup: boolean; issuesFilter: | IProjectIssuesFilterStore | IModuleIssuesFilterStore | ICycleIssuesFilterStore | IViewIssuesFilterStore | IProfileIssuesFilterStore; handleIssues: (issue: IIssue, action: EIssueActions) => void; quickActions: (issue: IIssue) => React.ReactNode; isReadOnly: boolean; } const KanbanIssueDetailsBlock: React.FC = (props) => { const { issue, showEmptyGroup, handleIssues, quickActions, isReadOnly, issuesFilter } = props; const router = useRouter(); const updateIssue = (issueToUpdate: IIssue) => { if (issueToUpdate) handleIssues(issueToUpdate, EIssueActions.UPDATE); }; const handleIssuePeekOverview = () => { const { query } = router; router.push({ pathname: router.pathname, query: { ...query, peekIssueId: issue?.id, peekProjectId: issue?.project }, }); }; return ( <>
{issue.project_detail.identifier}-{issue.sequence_id}
{quickActions(issue)}
{issue.name}
); }; const KanbanIssueMemoBlock = memo(KanbanIssueDetailsBlock); export const KanbanIssueBlock: React.FC = (props) => { const { sub_group_id, columnId, index, issue, issuesFilter, isDragDisabled, showEmptyGroup, handleIssues, quickActions, canEditProperties, } = props; let draggableId = issue.id; if (columnId) draggableId = `${draggableId}__${columnId}`; if (sub_group_id) draggableId = `${draggableId}__${sub_group_id}`; const canEditIssueProperties = canEditProperties(issue.project); return ( <> {(provided, snapshot) => (
{issue.tempId !== undefined && (
)}
)} ); };