import React, { useEffect, useState } from "react"; import { addEvent } from "../Calendars/CalendarSlice"; import { CalendarEvent } from "./EventsTypes"; import { DateSelectArg } from "@fullcalendar/core"; import { useAppDispatch, useAppSelector } from "../../app/hooks"; import { Popover, TextField, Button, Box, Typography, Select, MenuItem, SelectChangeEvent, } from "@mui/material"; function EventPopover({ anchorEl, open, onClose, selectedRange, }: { anchorEl: HTMLElement | null; open: boolean; onClose: (event: {}, reason: "backdropClick" | "escapeKeyDown") => void; selectedRange: DateSelectArg | null; }) { const dispatch = useAppDispatch(); const organizer = useAppSelector((state) => state.user.organiserData); const calendars = useAppSelector((state) => state.calendars.list); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [location, setLocation] = useState(""); const [start, setStart] = useState(""); const [end, setEnd] = useState(""); const [calendarid, setCalendarid] = useState(""); useEffect(() => { if (selectedRange) { setStart(selectedRange.startStr); setEnd(selectedRange.endStr ?? ""); } }, [selectedRange]); const handleSave = () => { const newEvent: CalendarEvent = { title, start: new Date(start ?? ""), end: new Date(end ?? ""), uid: Date.now().toString(36), description, location, organizer, attendee: [ { cn: organizer.cn, cal_address: organizer.cal_address, partstat: "ACCEPTED", rsvp: "FALSE", role: "CHAIR", cutype: "INDIVIDUAL", }, ], transp: "OPAQUE", color: calendars[calendarid].color, }; dispatch(addEvent({ calendarUid: calendarid, event: newEvent })); onClose({}, "backdropClick"); // Reset setTitle(""); setDescription(""); setLocation(""); }; return ( Create Event setTitle(e.target.value)} size="small" margin="dense" /> setStart(e.target.value)} size="small" margin="dense" InputLabelProps={{ shrink: true }} /> setEnd(e.target.value)} size="small" margin="dense" InputLabelProps={{ shrink: true }} /> setDescription(e.target.value)} size="small" margin="dense" multiline rows={2} /> setLocation(e.target.value)} size="small" margin="dense" /> ); } export default EventPopover;