Метод close в экземпляре Flatpickr предназначен для
программного закрытия календаря. Он управляет состоянием интерфейса
компонента и переводит календарное окно в скрытое состояние, независимо
от того, каким способом оно было открыто — через пользовательское
взаимодействие или программно.
Метод вызывается на экземпляре календаря:
fp.close();
где fp — экземпляр Flatpickr, возвращаемый после
инициализации:
const fp = flatpickr("#dateInput", {
// настройки
});
При вызове close() происходит несколько внутренних
действий:
isOpen = false)Метод работает синхронно и не требует callback-функций.
Flatpickr связывает открытие календаря с состоянием поля ввода. При
закрытии через close():
.active) удаляетсяПри этом значение input не изменяется, если не происходило выбора даты.
Метод используется для сценариев, где требуется внешнее управление календарём:
const fp = flatpickr("#date", {});
document.querySelector("#btnClose").addEventListener("click", () => {
fp.close();
});
Такой подход часто применяется в кастомных интерфейсах, где календарь является частью сложной формы.
openМетоды open и close образуют пару
управления состоянием:
fp.open();
fp.close();
Повторный вызов close() при уже закрытом календаре не
вызывает ошибок и не изменяет состояние.
В режиме inline: true календарь всегда отображается в
DOM, поэтому:
flatpickr("#date", {
inline: true
});
вызов close():
Таким образом, метод теряет основную функцию, так как интерфейс всегда закреплён в разметке.
Если включены опции вроде closeOnSelect, календарь
закрывается автоматически после выбора значения. В этом случае:
close() вызывается внутреннеПри наличии нескольких календарей каждый экземпляр управляется отдельно:
const fp1 = flatpickr("#date1");
const fp2 = flatpickr("#date2");
fp1.close();
Закрытие одного экземпляра не влияет на другие, даже если они используют общие настройки или находятся в одной форме.
Метод close() триггерит соответствующие события
жизненного цикла:
onClose — основной callback закрытияПример:
flatpickr("#date", {
onClose: function(selectedDates, dateStr, instance) {
console.log("Календарь закрыт");
}
});
Важно учитывать, что onClose срабатывает как при
пользовательском закрытии, так и при вызове close()
программно.
Повторные вызовы метода безопасны:
fp.close();
fp.close();
Состояние не ломается, DOM не перерисовывается повторно, обработчики не дублируются. Flatpickr проверяет текущее состояние перед выполнением операций.
Некоторые настройки влияют на результат закрытия:
clickOpensЕсли отключено, открытие/закрытие контролируется только программно, и
close() становится основным способом управления.
staticПри использовании статического режима позиционирование календаря не влияет на поведение закрытия, но может изменять визуальный эффект.
appendToЕсли календарь перенесён в другой контейнер, close() всё
равно корректно скрывает его, так как управление идёт через внутренние
ссылки на DOM.
form.addEventListener("focusout", () => {
fp.close();
});
form.addEventListener("submit", () => {
fp.close();
});
document.addEventListener("click", (e) => {
if (!e.target.closest(".flatpickr-calendar")) {
fp.close();
}
});
На мобильных устройствах close():
При вызове метода выполняется логика, аналогичная:
isOpenaria-expanded)close() без сохранённого экземпляра
Flatpickrinline: trueonCloseПосле вызова:
fp.destroy();
метод close() становится недоступным, так как экземпляр
полностью уничтожается, включая DOM-ссылки и обработчики.