mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
|
import { observer } from "mobx-react-lite";
|
||
|
//types
|
||
|
import { IIssueDisplayFilterOptions, IIssueDisplayProperties, TIssue } from "@plane/types";
|
||
|
import { EIssueActions } from "../types";
|
||
|
//components
|
||
|
import { SpreadsheetIssueRow } from "./issue-row";
|
||
|
import { SpreadsheetHeader } from "./spreadsheet-header";
|
||
|
|
||
|
type Props = {
|
||
|
displayProperties: IIssueDisplayProperties;
|
||
|
displayFilters: IIssueDisplayFilterOptions;
|
||
|
handleDisplayFilterUpdate: (data: Partial<IIssueDisplayFilterOptions>) => void;
|
||
|
issues: TIssue[];
|
||
|
isEstimateEnabled: boolean;
|
||
|
quickActions: (
|
||
|
issue: TIssue,
|
||
|
customActionButton?: React.ReactElement,
|
||
|
portalElement?: HTMLDivElement | null
|
||
|
) => React.ReactNode;
|
||
|
handleIssues: (issue: TIssue, action: EIssueActions) => Promise<void>;
|
||
|
canEditProperties: (projectId: string | undefined) => boolean;
|
||
|
portalElement: React.MutableRefObject<HTMLDivElement | null>;
|
||
|
};
|
||
|
|
||
|
export const SpreadsheetTable = observer((props: Props) => {
|
||
|
const {
|
||
|
displayProperties,
|
||
|
displayFilters,
|
||
|
handleDisplayFilterUpdate,
|
||
|
issues,
|
||
|
isEstimateEnabled,
|
||
|
portalElement,
|
||
|
quickActions,
|
||
|
handleIssues,
|
||
|
canEditProperties,
|
||
|
} = props;
|
||
|
|
||
|
return (
|
||
|
<table className="divide-x-[0.5px] divide-custom-border-200 overflow-y-auto">
|
||
|
<SpreadsheetHeader
|
||
|
displayProperties={displayProperties}
|
||
|
displayFilters={displayFilters}
|
||
|
handleDisplayFilterUpdate={handleDisplayFilterUpdate}
|
||
|
isEstimateEnabled={isEstimateEnabled}
|
||
|
/>
|
||
|
<tbody>
|
||
|
{issues.map(({ id }) => (
|
||
|
<SpreadsheetIssueRow
|
||
|
key={id}
|
||
|
issueId={id}
|
||
|
displayProperties={displayProperties}
|
||
|
quickActions={quickActions}
|
||
|
canEditProperties={canEditProperties}
|
||
|
nestingLevel={0}
|
||
|
isEstimateEnabled={isEstimateEnabled}
|
||
|
handleIssues={handleIssues}
|
||
|
portalElement={portalElement}
|
||
|
/>
|
||
|
))}
|
||
|
</tbody>
|
||
|
</table>
|
||
|
);
|
||
|
});
|