diff --git a/src/features/online-board/components/OnlineBoardFilter.test.tsx b/src/features/online-board/components/OnlineBoardFilter.test.tsx index abaa980c..8f27379c 100644 --- a/src/features/online-board/components/OnlineBoardFilter.test.tsx +++ b/src/features/online-board/components/OnlineBoardFilter.test.tsx @@ -271,6 +271,33 @@ describe("OnlineBoardFilter – time slider 1h minimum gap per TZ §4.1.9 Tables const value = screen.getByTestId("time-selector").querySelector(".time-selector__value"); expect(value?.textContent).toBe("23:00 — 24:00"); }); + + it("TIRREDESIGN-11: syncs the slider label when URL time params change", () => { + const { rerender } = render( + , + ); + + const value = screen.getByTestId("time-selector").querySelector(".time-selector__value"); + expect(value?.textContent).toBe("09:00 — 21:00"); + + rerender( + , + ); + + expect(value?.textContent).toBe("14:00 — 18:00"); + + rerender(); + + expect(value?.textContent).toBe("00:00 — 24:00"); + }); }); describe("OnlineBoardFilter – submit lock", () => { diff --git a/src/features/online-board/components/OnlineBoardFilter.tsx b/src/features/online-board/components/OnlineBoardFilter.tsx index f29e261b..6aed0160 100644 --- a/src/features/online-board/components/OnlineBoardFilter.tsx +++ b/src/features/online-board/components/OnlineBoardFilter.tsx @@ -344,6 +344,8 @@ export const OnlineBoardFilter: FC = ({ date: initialDate, tab: initialTab, flightNumber: initialFlightNumber, + timeFrom: initialTimeFrom, + timeTo: initialTimeTo, }); useEffect(() => { const prev = lastInitialRef.current; @@ -365,14 +367,30 @@ export const OnlineBoardFilter: FC = ({ if (prev.flightNumber !== initialFlightNumber) { setFlightNumber(initialFlightNumber ?? ""); } + if (prev.timeFrom !== initialTimeFrom || prev.timeTo !== initialTimeTo) { + setTimeRange([ + hhmmToMinutes(initialTimeFrom, 0), + hhmmToMinutes(initialTimeTo, 1440), + ]); + } lastInitialRef.current = { departure: initialDeparture, arrival: initialArrival, date: initialDate, tab: initialTab, flightNumber: initialFlightNumber, + timeFrom: initialTimeFrom, + timeTo: initialTimeTo, }; - }, [initialDeparture, initialArrival, initialDate, initialTab, initialFlightNumber]); + }, [ + initialDeparture, + initialArrival, + initialDate, + initialTab, + initialFlightNumber, + initialTimeFrom, + initialTimeTo, + ]); const handleTabClick = useCallback((tab: AccordionTab) => { setActiveTab((prev) => (prev === tab ? prev : tab));