diff --git a/components/CalendarBoard.tsx b/components/CalendarBoard.tsx index 1b87010..7719c74 100644 --- a/components/CalendarBoard.tsx +++ b/components/CalendarBoard.tsx @@ -527,6 +527,27 @@ export default function CalendarBoard() { setFormOpen(true); }; + const applyTruncatedTitles = (root: HTMLElement) => { + const elements = Array.from( + root.querySelectorAll(".event-shell .truncate") + ); + elements.forEach((element) => { + const text = element.textContent?.trim(); + if (!text) { + element.removeAttribute("title"); + return; + } + const isTruncated = + element.scrollWidth > element.clientWidth || + element.scrollHeight > element.clientHeight; + if (isTruncated) { + element.setAttribute("title", text); + } else { + element.removeAttribute("title"); + } + }); + }; + const calendarEvents = useMemo( () => events.map((event) => ({ @@ -1061,6 +1082,10 @@ export default function CalendarBoard() { ); }} + eventDidMount={(info) => { + if (!info.el) return; + requestAnimationFrame(() => applyTruncatedTitles(info.el)); + }} height="auto" datesSet={(arg) => { setActiveRange({ @@ -1467,57 +1492,77 @@ export default function CalendarBoard() { ) : ( - displayedEvents.map((event) => ( - - {isAdmin && ( - - toggleBulkSelection(event.id)} - /> + displayedEvents.map((event) => { + const categoryName = event.category?.name || "Ohne Kategorie"; + const locationLabel = formatLocation(event.location); + return ( + + {isAdmin && ( + + toggleBulkSelection(event.id)} + /> + + )} + + {new Date(event.startAt).toLocaleString("de-DE", { + dateStyle: "medium", + timeStyle: "short" + })} - )} - - {new Date(event.startAt).toLocaleString("de-DE", { - dateStyle: "medium", - timeStyle: "short" - })} - - {event.title} - - {event.category?.name || "Ohne Kategorie"} - - -
- {formatLocation(event.location)} - {event.locationLat && event.locationLng && ( - + + {event.title} + + + + + {categoryName} + + + +
+ - - - )} -
- + {locationLabel} + + {event.locationLat && event.locationLng && ( + + + + )} +
+
{canManageView && ( @@ -1577,8 +1622,9 @@ export default function CalendarBoard() {
- - )) + + ); + }) )}