В Flatpickr контроль доступных для выбора дат реализуется через два базовых параметра конфигурации — minDate и maxDate. Эти свойства задают нижнюю и верхнюю границу календарного диапазона, формируя строгие или гибкие ограничения выбора.
Параметр minDate определяет самую раннюю дату, которую пользователь может выбрать в календаре. Все даты, предшествующие указанной, становятся недоступными для взаимодействия.
flatpickr("#datepicker", {
minDate: "2026-01-01"
});
В этом примере календарь блокирует все даты до 1 января 2026 года включительно. Пользователь может выбирать только даты начиная с указанной границы.
Flatpickr принимает несколько типов значений для minDate:
minDate: "2026-05-01"
Строка интерпретируется согласно формату ISO или формату, заданному в конфигурации dateFormat.
minDate: new Date(2026, 4, 1)
Использование нативного объекта Date позволяет более гибко формировать дату динамически, например:
const today = new Date();
flatpickr("#datepicker", {
minDate: today
});
Flatpickr поддерживает смещения относительно текущей даты:
minDate: "today"
Также доступны выражения с добавлением дней:
minDate: new Date().fp_incr(7)
Метод fp_incr является расширением Flatpickr и позволяет прибавлять или вычитать дни.
flatpickr("#booking", {
minDate: "today"
});
Такой подход используется в формах бронирования, где выбор даты в прошлом невозможен.
flatpickr("#vacation", {
minDate: "2026-06-01"
});
Применяется для планирования событий, которые возможны только начиная с определённого момента.
const registrationStart = new Date();
registrationStart.setDate(registrationStart.getDate() + 3);
flatpickr("#form", {
minDate: registrationStart
});
Здесь минимальная дата зависит от текущего момента и вычисляется программно.
Параметр maxDate задаёт верхнюю границу выбора. Все даты, которые превышают указанное значение, становятся недоступными.
flatpickr("#datepicker", {
maxDate: "2026-12-31"
});
В этом случае выбор ограничен датами не позднее 31 декабря 2026 года.
Как и minDate, maxDate принимает несколько типов данных.
maxDate: "2026-12-31"
maxDate: new Date(2026, 11, 31)
maxDate: "today"
Используется, когда необходимо ограничить выбор текущей датой.
maxDate: new Date().fp_incr(30)
Ограничение выбора диапазоном в 30 дней от текущего момента.
Наиболее распространённый сценарий — определение диапазона доступных дат.
flatpickr("#event", {
minDate: "2026-06-01",
maxDate: "2026-06-30"
});
Выбор ограничен одним календарным месяцем.
flatpickr("#promo", {
minDate: "today",
maxDate: new Date().fp_incr(14)
});
Пользователь может выбрать дату только в пределах двух недель.
const now = new Date();
const inOneWeek = new Date();
inOneWeek.setDate(now.getDate() + 7);
const inOneMonth = new Date();
inOneMonth.setMonth(now.getMonth() + 1);
flatpickr("#dynamic", {
minDate: inOneWeek,
maxDate: inOneMonth
});
Такой подход используется в системах, где допустимый диапазон зависит от бизнес-логики.
Если одновременно используется параметр disable, он применяется после вычисления minDate и maxDate. Это означает, что даже внутри допустимого диапазона можно дополнительно исключить конкретные даты.
flatpickr("#calendar", {
minDate: "today",
maxDate: "2026-12-31",
disable: ["2026-07-10", "2026-07-15"]
});
В режиме выбора диапазона дат ограничения применяются к обеим точкам выбора — начальной и конечной.
flatpickr("#range", {
mode: "range",
minDate: "2026-01-01",
maxDate: "2026-12-31"
});
Попытка выбрать диапазон за пределами ограничений блокируется интерфейсом.
Если defaultDate выходит за пределы minDate/maxDate, Flatpickr автоматически корректирует поведение:
flatpickr("#input", {
minDate: "2026-01-01",
maxDate: "2026-12-31",
defaultDate: "2027-01-10"
});
В этом случае значение вне диапазона не будет установлено как выбранное.
Flatpickr поддерживает строковые выражения для удобного задания диапазонов.
minDate: "today"
Используется как базовая точка отсчёта.
minDate: "today",
maxDate: "today".fp_incr(10)
Корректное использование требует вызова метода у объекта Date:
maxDate: new Date().fp_incr(10)
flatpickr("#workdays", {
minDate: "today",
maxDate: new Date().fp_incr(60),
disable: [
function(date) {
return (date.getDay() === 0 || date.getDay() === 6);
}
]
});
Диапазон задаёт общие границы, а дополнительная логика исключает конкретные дни.
flatpickr("#booking", {
minDate: "today",
maxDate: new Date().fp_incr(180)
});
Используется в системах бронирования гостиниц и услуг.
flatpickr("#report", {
minDate: "2026-01-01",
maxDate: "2026-12-31"
});
Применяется для отчётных периодов и бухгалтерских форм.
Flatpickr интерпретирует границы следующим образом:
Это означает, что:
minDate: "2026-01-01"
включает сам день 1 января, а не исключает его.
При динамическом обновлении настроек через set():
const fp = flatpickr("#input", {});
fp.set("minDate", "today");
fp.set("maxDate", "2026-12-31");
ограничения пересчитываются немедленно, а интерфейс календаря перестраивается без перезагрузки компонента.
minDate: "2026-13-40"
Такие значения приводят к игнорированию ограничения или его некорректной интерпретации.
minDate: "2026-12-31",
maxDate: "2026-01-01"
Если минимальная дата больше максимальной, календарь становится некорректным с точки зрения логики выбора, и пользовательский интерфейс может блокировать все значения.
При передаче объектов Date важно учитывать локальное время выполнения, поскольку Flatpickr работает в контексте браузера и не выполняет автоматическую нормализацию часовых поясов.
Комбинация minDate и maxDate формирует базовую систему фильтрации дат, которая:
Эта модель используется как фундамент для построения любых календарных интерфейсов, где требуется контроль допустимого временного интервала.