import React, { useRef } from "react"; import { observer } from "mobx-react-lite"; import { TIssue, IIssueDisplayFilterOptions, IIssueDisplayProperties } from "@plane/types"; // components import { Spinner } from "@plane/ui"; import { SpreadsheetQuickAddIssueForm } from "@/components/issues"; import { SPREADSHEET_PROPERTY_LIST } from "@/constants/spreadsheet"; import { useProject } from "@/hooks/store"; import { SpreadsheetTable } from "./spreadsheet-table"; // types //hooks type Props = { displayProperties: IIssueDisplayProperties; displayFilters: IIssueDisplayFilterOptions; handleDisplayFilterUpdate: (data: Partial) => void; issueIds: string[] | undefined; quickActions: ( issue: TIssue, customActionButton?: React.ReactElement, portalElement?: HTMLDivElement | null ) => React.ReactNode; updateIssue: ((projectId: string, issueId: string, data: Partial) => Promise) | undefined; openIssuesListModal?: (() => void) | null; quickAddCallback?: ( workspaceSlug: string, projectId: string, data: TIssue, viewId?: string ) => Promise; viewId?: string; canEditProperties: (projectId: string | undefined) => boolean; enableQuickCreateIssue?: boolean; disableIssueCreation?: boolean; isWorkspaceLevel?: boolean; }; export const SpreadsheetView: React.FC = observer((props) => { const { displayProperties, displayFilters, handleDisplayFilterUpdate, issueIds, quickActions, updateIssue, quickAddCallback, viewId, canEditProperties, enableQuickCreateIssue, disableIssueCreation, isWorkspaceLevel = false, } = props; // refs const containerRef = useRef(null); const portalRef = useRef(null); const { currentProjectDetails } = useProject(); const isEstimateEnabled: boolean = currentProjectDetails?.estimate !== null; const spreadsheetColumnsList = isWorkspaceLevel ? SPREADSHEET_PROPERTY_LIST : SPREADSHEET_PROPERTY_LIST.filter((property) => { if (property === "cycle" && !currentProjectDetails?.cycle_view) return false; if (property === "modules" && !currentProjectDetails?.module_view) return false; return true; }); if (!issueIds || issueIds.length === 0) return (
); return (
{enableQuickCreateIssue && !disableIssueCreation && ( )}
); });