В Flatpickr параметр inline управляет способом
отображения календаря: вместо всплывающего попапа календарь встраивается
непосредственно в DOM и всегда остаётся видимым. Это фундаментально
меняет поведение компонента, превращая его из «выпадающего датапикера» в
стационарный UI-элемент.
При значении inline: true календарь не привязывается к
событию фокуса или клика по полю ввода. Он сразу рендерится в контейнере
и отображается постоянно.
Ключевые изменения поведения:
flatpickr("#calendar", {
inline: true
});
В этом режиме элемент #calendar обычно выступает
контейнером, а не классическим input. Однако Flatpickr допускает
использование inline даже с input, просто меняется логика
отображения.
Обычное поведение:
Inline-режим:
Фактически, inline переводит компонент в категорию встроенных календарных виджетов, аналогичных UI-компонентам дата-панелей в dashboard-интерфейсах.
При активации inline: true Flatpickr создаёт структуру,
в которой календарь вставляется непосредственно в родительский
контейнер:
Это важно для layout-систем, особенно при использовании flexbox или grid, поскольку календарь начинает участвовать в потоковой вёрстке.
Inline-режим не отменяет возможность использования input, но меняет его роль:
allowInput: false;Пример:
flatpickr("#dateInput", {
inline: true,
allowInput: false
});
В этом случае пользователь взаимодействует исключительно с календарём.
Inline применяется в интерфейсах, где календарь является постоянной частью экрана:
Особенность inline в том, что он не требует действия для отображения, что делает его более «информационно плотным» элементом интерфейса.
Inline-режим сильно зависит от CSS, поскольку календарь становится частью потока документа.
Типичные моменты:
display родителя;overflow: hidden;Пример стилизации:
#calendar {
max-width: 320px;
margin: 0 auto;
}
При этом внутренние классы Flatpickr остаются теми же
(.flatpickr-calendar, .flatpickr-days), но их
поведение становится более предсказуемым из-за отсутствия
позиционирования поверх страницы.
Inline часто используется вместе с предустановленной датой:
flatpickr("#calendar", {
inline: true,
defaultDate: "2026-01-01"
});
Это позволяет сразу отобразить выбранный день без взаимодействия пользователя.
Комбинация с режимами выбора дат:
flatpickr("#calendar", {
inline: true,
mode: "range"
});
В inline-режиме диапазоны визуально воспринимаются легче, поскольку весь календарь всегда на экране.
Ограничения диапазона особенно наглядны:
flatpickr("#calendar", {
inline: true,
minDate: "2026-01-01",
maxDate: "2026-12-31"
});
Заблокированные даты отображаются сразу, без необходимости открытия календаря.
Несмотря на изменение UI, события остаются прежними:
onChangeonSelectonReadyonMonthChangeПример:
flatpickr("#calendar", {
inline: true,
onChange: function(selectedDates, dateStr, instance) {
console.log(dateStr);
}
});
Особенность заключается в том, что события могут срабатывать чаще, поскольку пользователь постоянно взаимодействует с уже открытым интерфейсом.
Inline-режим создаёт более стабильную DOM-структуру, но:
Однако дальнейшие переключения месяца становятся быстрее, так как не требуется пересоздание попапа.
Inline-календарь может изменять высоту родителя, что влияет на соседние элементы.
Если родитель имеет overflow: hidden, части календаря
могут обрезаться.
Без явного CSS календарь может растягивать контейнер до ширины внутренних элементов.
При удалении или скрытии родительского элемента:
При использовании SPA-подходов это важно учитывать, так как inline-инстанс не «переносится» автоматически.
Inline часто путают с полностью статической версткой, но:
Если несколько inline-календарей инициализируются на странице:
flatpickr(".calendar", {
inline: true
});
Каждый элемент с классом .calendar становится отдельным
виджетом.
Inline меняет принцип взаимодействия:
Это особенно важно для интерфейсов, где дата является основным фильтром, а не вспомогательным элементом.