"use client" import React, { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useForm, Controller } from "react-hook-form"; import { cn, } from "@/lib/utils"; import { format } from "date-fns" import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Calendar } from "@/components/ui/calendar"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { Loader2, CalendarIcon } from "lucide-react"; import DeleteConfirmationDialog from "@/components/delete-confirmation-dialog"; import { CalendarCategory } from "./data"; import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; const schema = z.object({ title: z.string().min(3, { message: "Required" }), }); const EventModal = ({ open, onClose, categories, event, selectedDate }: { open: boolean; onClose: () => void; categories: any; event: any; selectedDate: any }) => { const [startDate, setStartDate] = useState(new Date()); const [endDate, setEndDate] = useState(new Date()); const [isPending, startTransition] = React.useTransition(); const [calendarProps, setCalendarProps] = React.useState(categories[0].value); // delete modal state const [deleteModalOpen, setDeleteModalOpen] = useState(false); const [eventIdToDelete, setEventIdToDelete] = useState(null); const { register, control, reset, setValue, formState: { errors }, handleSubmit, } = useForm({ resolver: zodResolver(schema), mode: "all", }); const onSubmit = (data: any) => { startTransition(async () => { if (!event) { data.start = startDate; data.end = endDate; data.allDay = false; data.extendedProps = { calendar: calendarProps, }; } if (event) { } }); }; useEffect(() => { if (selectedDate) { setStartDate(selectedDate.date); setEndDate(selectedDate.date); } if (event) { setStartDate(event?.event?.start); setEndDate(event?.event?.end); const eventCalendar = event?.event?.extendedProps?.calendar; if (eventCalendar) { setCalendarProps(eventCalendar); } else { setCalendarProps(categories[0].value); } } setValue("title", event?.event?.title || ""); }, [event, selectedDate, open, categories, setValue]); const onDeleteEventAction = async () => { try { } catch (error) { } }; const handleOpenDeleteModal = (eventId: string) => { setEventIdToDelete(eventId); setDeleteModalOpen(true); onClose(); }; return ( <> setDeleteModalOpen(false)} onConfirm={onDeleteEventAction} defaultToast={false} /> {event ? "Edit Event" : "Create Event"} {event?.title}
{errors?.title?.message && (
{typeof errors?.title?.message === 'string' ? errors?.title?.message : JSON.stringify(errors?.title?.message)}
)}
( setStartDate(date as Date)} initialFocus /> )} />
( setEndDate(date as Date)} initialFocus /> )} />
( )} />
{event && ( )}
); }; export default EventModal;