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));