ScheduleFilter: constrain Calendar to ±1/+330 day window (Angular scheduleMin/MaxDate parity)

This commit is contained in:
2026-04-20 12:24:57 +03:00
parent 001b3f993d
commit 6d87521634
@@ -8,7 +8,7 @@
* search is route-only.
*/
import { type FC, useState, useCallback, type FormEvent } from "react";
import { type FC, useState, useCallback, useRef, type FormEvent } from "react";
import { useNavigate } from "@modern-js/runtime/router";
import { Calendar } from "primereact/calendar";
import { Slider, type SliderChangeEvent } from "primereact/slider";
@@ -66,6 +66,23 @@ function hhmmToMinutes(value: string | undefined, fallback: number): number {
return h * 60 + m;
}
// Mirrors Angular AppSettings.scheduleSearchFrom (1 day back) and
// scheduleSearchTo (330 days forward). Keeps the schedule-filter calendar
// to the same range Angular uses via `settings.scheduleMinDate`/`Max`.
function getScheduleMinDate(): Date {
const d = new Date();
d.setHours(0, 0, 0, 0);
d.setDate(d.getDate() - 1);
return d;
}
function getScheduleMaxDate(): Date {
const d = new Date();
d.setHours(0, 0, 0, 0);
d.setDate(d.getDate() + 330);
return d;
}
export const ScheduleFilter: FC<ScheduleFilterProps> = ({
initialDeparture,
initialArrival,
@@ -95,6 +112,9 @@ export const ScheduleFilter: FC<ScheduleFilterProps> = ({
const [directOnly, setDirectOnly] = useState(initialDirectOnly);
const [returnFlights, setReturnFlights] = useState(initialReturnFlights);
const scheduleMinDate = useRef(getScheduleMinDate()).current;
const scheduleMaxDate = useRef(getScheduleMaxDate()).current;
const handleSwap = useCallback(() => {
setDeparture(arrival);
setArrival(departure);
@@ -191,6 +211,8 @@ export const ScheduleFilter: FC<ScheduleFilterProps> = ({
value={dateRange}
onChange={(e) => setDateRange((e.value as (Date | null)[]) ?? [null, null])}
selectionMode="range"
minDate={scheduleMinDate}
maxDate={scheduleMaxDate}
dateFormat="dd.mm.yy"
placeholder={`${t("SHARED.DATE_FORMAT")} - ${t("SHARED.DATE_FORMAT")}`}
showIcon