[#572] removed dot for events (#590)

This commit is contained in:
Camille Moussu
2026-03-02 11:15:46 +01:00
committed by GitHub
parent 7b31064a56
commit 3bd43c9935
4 changed files with 3 additions and 127 deletions
-88
View File
@@ -185,94 +185,6 @@ describe("CalendarSelection", () => {
}); });
expect(sharedAccordionSummary).toHaveAttribute("aria-expanded", "true"); expect(sharedAccordionSummary).toHaveAttribute("aria-expanded", "true");
}); });
it("BUGFIX: remove dots in mini calendar when unselecting personal calendar", async () => {
await act(async () =>
renderWithProviders(<CalendarLayout />, preloadedState)
);
const checkbox = screen.getByLabelText("Calendar personal");
// checkbox checked : events shown
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).toHaveClass("event-dot");
// checkbox unchecked : events hidden
await act(async () => {
fireEvent.click(checkbox);
});
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).not.toHaveClass("event-dot");
// checkbox rechecked : events shown
await act(async () => {
fireEvent.click(checkbox);
});
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).toHaveClass("event-dot");
});
it("BUGFIX: remove dots in mini calendar when unselecting delegated calendar", async () => {
await act(async () =>
renderWithProviders(<CalendarLayout />, preloadedState)
);
// hide personal event first
await act(async () => {
fireEvent.click(screen.getByLabelText("Calendar personal"));
});
const checkbox = screen.getByLabelText("Calendar delegated");
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).not.toHaveClass("event-dot");
// checkbox checked : events shown
await act(async () => {
fireEvent.click(checkbox);
});
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).toHaveClass("event-dot");
});
it("BUGFIX: remove dots in mini calendar when unselecting shared calendar", async () => {
await act(async () =>
renderWithProviders(<CalendarLayout />, preloadedState)
);
// hide personal event first
await act(async () => {
fireEvent.click(screen.getByLabelText("Calendar personal"));
});
const checkbox = screen.getByLabelText("Calendar shared");
// checkbox unchecked : events hidden
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).not.toHaveClass("event-dot");
// checkbox checked : events shown
await act(async () => {
fireEvent.click(checkbox);
});
expect(
screen.getByTestId(
`date-${start.getFullYear()}-${start.getMonth()}-${start.getDate()}`
)
).toHaveClass("event-dot");
});
it("renders calendars with local storage", async () => { it("renders calendars with local storage", async () => {
const mockCalendarRef = { current: null }; const mockCalendarRef = { current: null };
localStorage.setItem( localStorage.setItem(
-9
View File
@@ -127,15 +127,6 @@
transition background-color 0.2s ease transition background-color 0.2s ease
cursor pointer cursor pointer
.event-dot
margin-top 2px
width 6px
height 6px
background-color #1D192B1F
border-radius 50%
margin-left auto
margin-right auto
.weekSelector .weekSelector
display flex display flex
flex-direction column flex-direction column
-7
View File
@@ -109,12 +109,6 @@ export default function CalendarApp({
[calendarIdsString] [calendarIdsString]
); );
const dottedEvents: CalendarEvent[] = selectedCalendars.flatMap((calId) => {
const calendar = calendars[calId];
if (!calendar?.events) return [];
return Object.values(calendar.events);
});
const [currentView, setCurrentView] = useState("timeGridWeek"); const [currentView, setCurrentView] = useState("timeGridWeek");
const timezone = const timezone =
useAppSelector((state) => state.settings.timeZone) ?? useAppSelector((state) => state.settings.timeZone) ??
@@ -644,7 +638,6 @@ export default function CalendarApp({
calendarRef={calendarRef} calendarRef={calendarRef}
selectedDate={selectedMiniDate} selectedDate={selectedMiniDate}
setSelectedMiniDate={setSelectedMiniDate} setSelectedMiniDate={setSelectedMiniDate}
dottedEvents={dottedEvents}
/> />
<Box sx={{ mb: 3, mt: 2 }}> <Box sx={{ mb: 3, mt: 2 }}>
<TempCalendarsInput <TempCalendarsInput
+3 -23
View File
@@ -6,27 +6,23 @@ import {
formatDateToYYYYMMDDTHHMMSS, formatDateToYYYYMMDDTHHMMSS,
getCalendarRange, getCalendarRange,
} from "@/utils/dateUtils"; } from "@/utils/dateUtils";
import type { CalendarApi } from "@fullcalendar/core";
import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
import { DateCalendar } from "@mui/x-date-pickers"; import { DateCalendar } from "@mui/x-date-pickers";
import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment"; import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment";
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
import moment from "moment"; import moment from "moment";
import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { useI18n } from "twake-i18n"; import { useI18n } from "twake-i18n";
import { CalendarEvent } from "@/features/Events/EventsTypes";
import type { CalendarApi } from "@fullcalendar/core";
export function MiniCalendar({ export function MiniCalendar({
calendarRef, calendarRef,
selectedDate, selectedDate,
setSelectedMiniDate, setSelectedMiniDate,
dottedEvents,
}: { }: {
calendarRef: React.MutableRefObject<CalendarApi | null>; calendarRef: React.MutableRefObject<CalendarApi | null>;
selectedDate: Date; selectedDate: Date;
setSelectedMiniDate: (d: Date) => void; setSelectedMiniDate: (d: Date) => void;
dottedEvents: CalendarEvent[];
}) { }) {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const calendars = useAppSelector((state) => state.calendars); const calendars = useAppSelector((state) => state.calendars);
@@ -102,21 +98,10 @@ export function MiniCalendar({
})() })()
: false; : false;
const hasEvents = dottedEvents.some((event) => {
const eventDate = new Date(event.start);
return (
eventDate.getFullYear() === date.getFullYear() &&
eventDate.getMonth() === date.getMonth() &&
eventDate.getDate() === date.getDate() &&
event.status !== "CANCELLED"
);
});
const classNames = [ const classNames = [
isToday ? "today" : "", isToday ? "today" : "",
isSelectedDay ? "selectedDay" : "", isSelectedDay ? "selectedDay" : "",
isInSelectedWeek ? "selectedWeek" : "", isInSelectedWeek ? "selectedWeek" : "",
hasEvents ? "event-dot" : "",
].join(" "); ].join(" ");
return { return {
@@ -144,12 +129,7 @@ export function MiniCalendar({
}, },
}, },
"data-testid": `date-${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`, "data-testid": `date-${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`,
children: ( children: <>{ownerState.day.date()}</>,
<>
{ownerState.day.date()}
{hasEvents && <div className="event-dot" />}
</>
),
}; };
}, },
}} }}