diff --git a/susconecta/components/features/general/event-manager.tsx b/susconecta/components/features/general/event-manager.tsx index e8e0bf3..e493641 100644 --- a/susconecta/components/features/general/event-manager.tsx +++ b/susconecta/components/features/general/event-manager.tsx @@ -72,11 +72,6 @@ export function EventManager({ availableTags = ["Important", "Urgent", "Work", "Personal", "Team", "Client"], }: EventManagerProps) { const [events, setEvents] = useState(initialEvents) - // controla dias expandidos no MonthView (key = YYYY-MM-DD) - const [expandedDays, setExpandedDays] = useState>({}) - const toggleExpandedDay = useCallback((dayKey: string) => { - setExpandedDays((prev) => ({ ...prev, [dayKey]: !prev[dayKey] })) - }, []) const [currentDate, setCurrentDate] = useState(new Date()) const [view, setView] = useState<"month" | "week" | "day" | "list">(defaultView) const [selectedEvent, setSelectedEvent] = useState(null) @@ -96,6 +91,16 @@ export function EventManager({ const [selectedTags, setSelectedTags] = useState([]) const [selectedCategories, setSelectedCategories] = useState([]) + // Dialog: lista completa de pacientes do dia + const [dayDialogEvents, setDayDialogEvents] = useState(null) + const [isDayDialogOpen, setIsDayDialogOpen] = useState(false) + const openDayDialog = useCallback((eventsForDay: Event[]) => { + // ordena por horário antes de abrir + const ordered = [...eventsForDay].sort((a, b) => a.startTime.getTime() - b.startTime.getTime()) + setDayDialogEvents(ordered) + setIsDayDialogOpen(true) + }, []) + const filteredEvents = useMemo(() => { return events.filter((event) => { // Search filter @@ -707,11 +712,49 @@ export function EventManager({ onDragEnd={() => handleDragEnd()} onDrop={handleDrop} getColorClasses={getColorClasses} - expandedDays={expandedDays} - toggleExpandedDay={toggleExpandedDay} + openDayDialog={openDayDialog} /> )} + {/* Dialog com todos os pacientes do dia */} + + + + Pacientes do dia + Todos os agendamentos do dia selecionado. + +
+ {dayDialogEvents?.map((ev) => ( +
+
+
+
+
{ev.title}
+
+ {ev.startTime.toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"})} + {" - "} + {ev.endTime.toLocaleTimeString("pt-BR",{hour:"2-digit",minute:"2-digit"})} +
+
+ {ev.description && ( +
{ev.description}
+ )} +
+ {ev.category && {ev.category}} + {ev.tags?.map((t) => ( + {t} + ))} +
+
+
+ ))} + {!dayDialogEvents?.length && ( +
Nenhum evento
+ )} +
+ +
+ {view === "week" && ( void onDrop: (date: Date) => void getColorClasses: (color: string) => { bg: string; text: string } - expandedDays: Record - toggleExpandedDay: (dayKey: string) => void + openDayDialog: (eventsForDay: Event[]) => void }) { const firstDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1) const lastDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0) @@ -1188,9 +1229,6 @@ function MonthView({ }) } - const formatTime = (date: Date) => - date.toLocaleTimeString("pt-BR", { hour: "2-digit", minute: "2-digit" }) - return (
@@ -1204,6 +1242,15 @@ function MonthView({
{days.map((day, index) => { const dayEvents = getEventsForDay(day) + // dedup por título para evitar repetidos + const uniqueMap = new Map() + dayEvents.forEach((ev) => { + const k = (ev.title || "").trim().toLowerCase() + if (!uniqueMap.has(k)) uniqueMap.set(k, ev) + }) + const uniqueEvents = Array.from(uniqueMap.values()) + const eventsToShow = uniqueEvents.slice(0, 3) + const moreCount = Math.max(0, uniqueEvents.length - 3) const isCurrentMonth = day.getMonth() === currentDate.getMonth() const isToday = day.toDateString() === new Date().toDateString() @@ -1218,16 +1265,11 @@ function MonthView({ onDragOver={(e) => e.preventDefault()} onDrop={() => onDrop(day)} > -
- {day.getDate()} -
+ {/* Número do dia padronizado (sem destaque azul no 'hoje') */} +
{day.getDate()}
+
- {dayEvents.slice(0, 3).map((event) => ( + {eventsToShow.map((event) => ( ))} - {dayEvents.length > 3 && ( -
+{dayEvents.length - 3} mais
+ {moreCount > 0 && ( +
+ +
)} - {(() => { - const dayKey = day.toISOString().slice(0, 10) - const isExpanded = !!expandedDays?.[dayKey] - const eventsToShow = isExpanded ? dayEvents : dayEvents.slice(0, 3) - return ( - <> - {eventsToShow.map((event) => ( - - ))} - - {dayEvents.length > 3 && ( -
- -
- )} - - ) - })()} -
-
- ) - })} -
-
- ) + + + ) + })} + + + ) } // Week View Component @@ -1343,7 +1361,7 @@ function WeekView({
{hours.map((hour) => ( - <> +
) })} - + ))}