import type { Plan } from "@/features/plans/lib/data"; import { createPlanFormData } from "@/features/plans/lib/form"; import { FakeUserList } from "@/features/users/lib/data"; import { Button } from "@/shared/ui/button"; import { Form, FormControl, FormField, FormItem, FormMessage, } from "@/shared/ui/form"; import { Input } from "@/shared/ui/input"; import { Label } from "@/shared/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/shared/ui/select"; import { Textarea } from "@/shared/ui/textarea"; import { zodResolver } from "@hookform/resolvers/zod"; import { Loader2 } from "lucide-react"; import React, { useState } from "react"; import { useForm } from "react-hook-form"; import z from "zod"; interface Props { initialValues?: Plan | null; setDialogOpen: (open: boolean) => void; setPlans: React.Dispatch>; } const AddedPlan = ({ initialValues, setDialogOpen, setPlans }: Props) => { const [load, setLoad] = useState(false); const form = useForm>({ resolver: zodResolver(createPlanFormData), defaultValues: { name: initialValues?.name || "", description: initialValues?.description || "", user: initialValues ? String(initialValues.user.id) : "", }, }); function onSubmit(data: z.infer) { setLoad(true); if (initialValues) { setTimeout(() => { setPlans((prev) => prev.map((plan) => plan.id === initialValues.id ? { ...plan, ...data, user: FakeUserList.find((u) => u.id === Number(data.user))!, // user obyekt } : plan, ), ); setLoad(false); setDialogOpen(false); }, 2000); } else { setTimeout(() => { setPlans((prev) => [ ...prev, { id: prev.length ? prev[prev.length - 1].id + 1 : 1, name: data.name, description: data.description, user: FakeUserList.find((u) => u.id === Number(data.user))!, // user obyekt status: "Bajarilmagan", createdAt: new Date(), }, ]); setLoad(false); setDialogOpen(false); }, 2000); } } return (
( )} /> ( )} /> (