import Accordion from "@mui/material/Accordion"; import AccordionDetails from "@mui/material/AccordionDetails"; import AccordionSummary from "@mui/material/AccordionSummary"; import Typography from "@mui/material/Typography"; import { useAppSelector } from "../../app/hooks"; import AddIcon from "@mui/icons-material/Add"; import { useState } from "react"; import CalendarPopover from "../../features/Calendars/CalendarModal"; import { Calendars } from "../../features/Calendars/CalendarTypes"; import MoreVertIcon from "@mui/icons-material/MoreVert"; import IconButton from "@mui/material/IconButton"; import Checkbox from "@mui/material/Checkbox"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; function CalendarAccordion({ title, calendars, selectedCalendars, handleToggle, showAddButton = false, onAddClick, defaultExpanded = false, setOpen, }: { title: string; calendars: string[]; selectedCalendars: string[]; handleToggle: (id: string) => void; showAddButton?: boolean; onAddClick?: Function; defaultExpanded?: boolean; setOpen: Function; }) { const allCalendars = useAppSelector((state) => state.calendars.list); const [expended, setExpended] = useState(defaultExpanded); if (calendars.length === 0) return null; return ( } aria-controls={`${title}-content`} id={`${title}-header`} className="calendarListHeader" onClick={() => setExpended(!expended)} > {title} {showAddButton && ( { expended && e.stopPropagation(); onAddClick && onAddClick(); }} > )} {calendars.map((id) => CalendarSelector( allCalendars, id, selectedCalendars, handleToggle, () => setOpen(id) ) )} ); } export default function CalendarSelection({ selectedCalendars, setSelectedCalendars, }: { selectedCalendars: string[]; setSelectedCalendars: Function; }) { const userId = useAppSelector((state) => state.user.userData?.openpaasId) ?? ""; const calendars = useAppSelector((state) => state.calendars.list); const personnalCalendars = Object.keys(calendars).filter( (id) => id.split("/")[0] === userId ); const delegatedCalendars = Object.keys(calendars).filter( (id) => id.split("/")[0] !== userId && calendars[id].delegated ); const sharedCalendars = Object.keys(calendars).filter( (id) => id.split("/")[0] !== userId && !calendars[id].delegated ); const handleCalendarToggle = (name: string) => { setSelectedCalendars((prev: string[]) => prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name] ); }; const [selectedCalId, setSelectedCalId] = useState(""); const [anchorElCal, setAnchorElCal] = useState(null); return ( <>
setAnchorElCal(document.body)} setOpen={(id: string) => { setAnchorElCal(document.body); setSelectedCalId(id); }} defaultExpanded /> { setAnchorElCal(document.body); setSelectedCalId(id); }} /> { setAnchorElCal(document.body); }} handleToggle={handleCalendarToggle} setOpen={(id: string) => { setAnchorElCal(document.body); setSelectedCalId(id); }} />
{ setSelectedCalId(""); setAnchorElCal(null); }} calendar={calendars[selectedCalId] ?? undefined} /> ); } function CalendarSelector( calendars: Record, id: string, selectedCalendars: string[], handleCalendarToggle: (name: string) => void, setOpen: Function ) { return (
setOpen()}>
); }