diff --git a/__test__/components/MiniCalendarColor.test.tsx b/__test__/components/MiniCalendarColor.test.tsx index 4624c2b..d84a50d 100644 --- a/__test__/components/MiniCalendarColor.test.tsx +++ b/__test__/components/MiniCalendarColor.test.tsx @@ -55,7 +55,6 @@ describe("MiniCalendar", () => { it("renders mini calendar with the week in gray (except for today) when full calendar in week view", async () => { renderCalendar(); - preview.debug(); const today = new Date(); const sunday = new Date(today); @@ -160,7 +159,6 @@ describe("Found Bugs", () => { const previousMonthButton = screen.getByText("<"); fireEvent.click(nextMonthButton); fireEvent.click(previousMonthButton); - preview.debug(); const shownDay = screen.getByText((content, element) => { return ( element?.className.toLowerCase().includes("fc-daygrid-day-number") ?? @@ -198,4 +196,27 @@ describe("Found Bugs", () => { fireEvent.click(nextMonthButton); expect(miniCalMonth.innerHTML).toBe(fullCalMonth.innerHTML); }); + + it("gray day stays when day mode, change day, then change to week view", async () => { + renderCalendar(); + const dayViewButton = await screen.findByTitle(/day view/i); + const weekViewButton = await screen.findByTitle(/week view/i); + fireEvent.click(dayViewButton); + const nextDayButton = screen.getByTitle("Next day"); + fireEvent.click(nextDayButton); + + const dayViewSelectedTiles = screen.getAllByText((content, element) => { + return element?.className.includes("selectedWeek") ?? false; + }); + + expect(dayViewSelectedTiles).toHaveLength(1); + + fireEvent.click(weekViewButton); + + const weekViewSelectedTiles = screen.getAllByText((content, element) => { + return element?.className.includes("selectedWeek") ?? false; + }); + + expect(weekViewSelectedTiles).toHaveLength(7); + }); }); diff --git a/src/components/Calendar/Calendar.tsx b/src/components/Calendar/Calendar.tsx index b6851f2..724a82a 100644 --- a/src/components/Calendar/Calendar.tsx +++ b/src/components/Calendar/Calendar.tsx @@ -242,11 +242,10 @@ export default function CalendarApp() { setSelectedDate(new Date(arg.start)); setSelectedMiniDate(new Date(arg.start)); } else if (arg.view.type === "timeGridWeek") { - // In week view, retain selectedDate if it's in current range, otherwise set to start - if (selectedDate < arg.start || selectedDate > arg.end) { - setSelectedDate(new Date(arg.start)); + if (selectedDate <= arg.start && selectedDate >= arg.end) { setSelectedMiniDate(new Date(arg.start)); } + setSelectedDate(new Date(arg.start)); } else if (arg.view.type === "dayGridMonth") { setSelectedDate(new Date(arg.start)); const midTimestamp =