import { observer } from "mobx-react-lite"; // mobx store import { useMobxStore } from "lib/mobx/store-provider"; // components import { CalendarHeader, CalendarWeekDays, CalendarWeekHeader } from "components/issues"; // ui import { Spinner } from "@plane/ui"; // types import { ICalendarWeek } from "./types"; import { IIssue } from "types"; import { IGroupedIssues, IIssueResponse } from "store/issues/types"; import { ICycleIssuesFilterStore, IModuleIssuesFilterStore, IProjectIssuesFilterStore, IViewIssuesFilterStore, } from "store/issues"; type Props = { issuesFilterStore: | IProjectIssuesFilterStore | IModuleIssuesFilterStore | ICycleIssuesFilterStore | IViewIssuesFilterStore; issues: IIssueResponse | undefined; groupedIssueIds: IGroupedIssues; layout: "month" | "week" | undefined; showWeekends: boolean; quickActions: (issue: IIssue, customActionButton?: React.ReactElement) => React.ReactNode; quickAddCallback?: ( workspaceSlug: string, projectId: string, data: IIssue, viewId?: string ) => Promise; viewId?: string; }; export const CalendarChart: React.FC = observer((props) => { const { issuesFilterStore, issues, groupedIssueIds, layout, showWeekends, quickActions, quickAddCallback, viewId } = props; const { calendar: calendarStore } = useMobxStore(); const calendarPayload = calendarStore.calendarPayload; const allWeeksOfActiveMonth = calendarStore.allWeeksOfActiveMonth; if (!calendarPayload) return (
); return ( <>
{layout === "month" && (
{allWeeksOfActiveMonth && Object.values(allWeeksOfActiveMonth).map((week: ICalendarWeek, weekIndex) => ( ))}
)} {layout === "week" && ( )}
); });