"use client"; import { useMemo } from "react"; import { observer } from "mobx-react"; import { Disclosure } from "@headlessui/react"; // ui import { Row } from "@plane/ui"; // components import { ActiveCycleProductivity, ActiveCycleProgress, ActiveCycleStats, CycleListGroupHeader, CyclesListItem, } from "@/components/cycles"; import useCyclesDetails from "@/components/cycles/active-cycle/use-cycles-details"; import { EmptyState } from "@/components/empty-state"; // constants import { EmptyStateType } from "@/constants/empty-state"; import { useCycle } from "@/hooks/store"; import { ActiveCycleIssueDetails } from "@/store/issue/cycle"; interface IActiveCycleDetails { workspaceSlug: string; projectId: string; cycleId?: string; showHeader?: boolean; } export const ActiveCycleRoot: React.FC = observer((props) => { const { workspaceSlug, projectId, cycleId: propsCycleId, showHeader = true } = props; const { currentProjectActiveCycleId } = useCycle(); // derived values const cycleId = propsCycleId ?? currentProjectActiveCycleId; // fetch cycle details const { handleFiltersUpdate, cycle: activeCycle, cycleIssueDetails, } = useCyclesDetails({ workspaceSlug, projectId, cycleId }); const ActiveCyclesComponent = useMemo( () => ( <> {!cycleId || !activeCycle ? ( ) : (
{cycleId && ( )}
)} ), [cycleId, activeCycle, workspaceSlug, projectId, handleFiltersUpdate, cycleIssueDetails] ); return ( <> {showHeader ? ( {({ open }) => ( <> {ActiveCyclesComponent} )} ) : ( <>{ActiveCyclesComponent} )} ); });