import { useContext, useState } from "react"; import { DateTime } from "luxon"; import classNames from "classnames"; import { useTranslation } from "next-i18next"; import { IoMdCheckmarkCircleOutline } from "react-icons/io"; import { EventContext } from "../../utils/contexts/calendar"; export function Event({ event, colorVariants, showDate = false }) { const [hover, setHover] = useState(false); const { i18n } = useTranslation(); return (
setHover(!hover)} onMouseLeave={() => setHover(!hover)} > {showDate && event.date.setLocale(i18n.language).startOf("day").toLocaleString({ month: "short", day: "numeric" })}
{hover && event.additional ? event.additional : event.title}
{event.isCompleted && ( )}
); } export default function Agenda({ service, colorVariants, showDate }) { const { widget } = service; const { events } = useContext(EventContext); const { t } = useTranslation(); if (!showDate) { return
; } const eventsArray = Object.keys(events) .filter( (eventKey) => showDate.startOf("day").toUnixInteger() <= events[eventKey].date?.startOf("day").toUnixInteger(), ) .map((eventKey) => events[eventKey]) .sort((a, b) => a.date - b.date) .slice(0, widget?.maxEvents ?? 10); if (!eventsArray.length) { return (
); } const days = Array.from(new Set(eventsArray.map((e) => e.date.startOf("day").ts))); const eventsByDay = days.map((d) => eventsArray.filter((e) => e.date.startOf("day").ts === d)); return (
{eventsByDay.map((eventsDay, i) => (
{eventsDay.map((event, j) => ( ))}
))}
); }