import { FC, useEffect, useMemo, useState } from "react"; import cloneDeep from "lodash/cloneDeep"; import { observer } from "mobx-react"; import { ChevronLeft } from "lucide-react"; import { IEstimate } from "@plane/types"; import { Button } from "@plane/ui"; // components import { EModalPosition, EModalWidth, ModalCore } from "@/components/core"; import { EstimateCreateStageOne, EstimateCreateStageTwo } from "@/components/estimates"; import { TEstimateSystemKeys, EEstimateSystem, TEstimateSystemKeyObject } from "@/components/estimates/types"; // constants import { ESTIMATE_SYSTEMS } from "@/constants/estimates"; // ee components type Props = { isOpen: boolean; handleClose: () => void; data?: IEstimate; }; export const CreateEstimateModal: FC = observer((props) => { // props const { handleClose, isOpen } = props; // states const [estimateSystem, setEstimateSystem] = useState(EEstimateSystem.POINTS); const [estimatePoints, setEstimatePoints] = useState( undefined ); const handleUpdatePoints = (newPoints: TEstimateSystemKeyObject[TEstimateSystemKeys] | undefined) => { const points = cloneDeep(newPoints); setEstimatePoints(points); }; useEffect(() => { if (!isOpen) { setEstimateSystem(EEstimateSystem.POINTS); setEstimatePoints(undefined); } }, [isOpen]); // derived values const renderEstimateStepsCount = useMemo(() => (estimatePoints ? "2" : "1"), [estimatePoints]); return (
{/* heading */}
{estimatePoints && (
{ setEstimateSystem(EEstimateSystem.POINTS); handleUpdatePoints(undefined); }} className="flex-shrink-0 cursor-pointer w-5 h-5 flex justify-center items-center" >
)}
New Estimate System
Step {renderEstimateStepsCount}/2
{/* estimate steps */}
{!estimatePoints && ( handleUpdatePoints(ESTIMATE_SYSTEMS[estimateSystem].templates[templateType].values) } /> )} {estimatePoints && ( )}
{estimatePoints && ( )}
); });