import { useMemo } from "react"; import { useRouter } from "next/navigation"; import { isToday, startOfDay } from "date-fns"; import { useCalendar } from "@/features/crm/calendar/upstream-big-calendar/contexts/calendar-context"; import { EventBullet } from "@/features/crm/calendar/upstream-big-calendar/components/month-view/event-bullet"; import { DroppableDayCell } from "@/features/crm/calendar/upstream-big-calendar/components/dnd/droppable-day-cell"; import { MonthEventBadge } from "@/features/crm/calendar/upstream-big-calendar/components/month-view/month-event-badge"; import { cn } from "@/lib/utils"; import { getMonthCellEvents } from "@/features/crm/calendar/upstream-big-calendar/helpers"; import type { ICalendarCell, IEvent } from "@/features/crm/calendar/upstream-big-calendar/interfaces"; interface IProps { cell: ICalendarCell; events: IEvent[]; eventPositions: Record; } const MAX_VISIBLE_EVENTS = 3; export function DayCell({ cell, events, eventPositions }: IProps) { const { push } = useRouter(); const { setSelectedDate } = useCalendar(); const { day, currentMonth, date } = cell; const cellEvents = useMemo(() => getMonthCellEvents(date, events, eventPositions), [date, events, eventPositions]); const isSunday = date.getDay() === 0; const handleClick = () => { setSelectedDate(date); push("/day-view"); }; return (
{[0, 1, 2].map(position => { const event = cellEvents.find(e => e.position === position); const eventKey = event ? `event-${event.id}-${position}` : `empty-${position}`; return (
{event && ( <> )}
); })}
{cellEvents.length > MAX_VISIBLE_EVENTS && (

+{cellEvents.length - MAX_VISIBLE_EVENTS} {cellEvents.length - MAX_VISIBLE_EVENTS} more...

)}
); }