Плагин confirmDate в экосистеме Flatpickr добавляет
механизм подтверждения выбора даты или диапазона дат перед окончательной
фиксацией значения в инпуте. Основная идея заключается в разрыве между
моментом выбора пользователем даты в календаре и моментом записи этого
значения в поле ввода. Это особенно важно в интерфейсах, где требуется
предотвращение случайных изменений, либо где выбор даты должен быть явно
подтверждён действием.
Поведение плагина проявляется в появлении дополнительных элементов управления внутри календаря, чаще всего кнопок подтверждения и отмены. Пока подтверждение не выполнено, значение инпута остаётся прежним.
Flatpickr позволяет подключать плагины через массив
plugins при инициализации.
import flatpickr from "flatpickr";
import confirmDatePlugin from "flatpickr/dist/plugins/confirmDate/confirmDate";
flatpickr("#dateInput", {
enableTime: true,
plugins: [
confirmDatePlugin({})
]
});
В данном случае подключается базовая версия confirmDate без дополнительных параметров. Плагин активирует панель подтверждения в нижней части календаря.
Плагин принимает объект настроек, позволяющий управлять поведением кнопок и форматом отображения времени.
confirmDatePlugin({
confirmText: "OK",
cancelText: "Cancel",
showAlways: false,
theme: "light"
});
light или dark)При активации календаря Flatpickr начинает отслеживать изменения
выбора даты. Однако обновление input.value блокируется до
момента подтверждения.
Внутренний цикл поведения можно описать следующим образом:
selectedDates)При включённой опции enableTime подтверждение
распространяется также на изменения времени.
flatpickr("#datetime", {
enableTime: true,
dateFormat: "Y-m-d H:i",
plugins: [
confirmDatePlugin({
confirmText: "Применить",
cancelText: "Сброс"
})
]
});
В этом режиме изменения часов и минут считаются частью единого состояния, которое фиксируется только после подтверждения.
При использовании режима mode: "range" плагин работает с
двумя точками выбора — началом и концом диапазона. Подтверждение
применяется ко всему диапазону как к единому объекту.
flatpickr("#range", {
mode: "range",
plugins: [
confirmDatePlugin({
confirmText: "Выбрать период",
cancelText: "Очистить"
})
]
});
Особенность заключается в том, что промежуточные изменения диапазона не влияют на значение инпута до завершения подтверждения.
Кнопка отмены в confirmDate не просто закрывает
календарь, но и откатывает состояние выбора к последнему подтверждённому
значению.
Механизм включает:
selectedDates к предыдущему состояниюПараметр showAlways изменяет модель взаимодействия
интерфейса. При значении true панель подтверждения
отображается постоянно, даже если пользователь не изменяет значение.
confirmDatePlugin({
showAlways: true
});
Такой режим используется в интерфейсах, где требуется явная фиксация каждого выбора, даже если он совпадает с текущим значением.
Плагин добавляет собственные CSS-классы, которые позволяют изменять внешний вид панели управления.
Основные классы:
.flatpickr-confirm — контейнер панели.flatpickr-confirm-button — кнопки подтверждения.flatpickr-cancel-button — кнопки отменыПример стилизации:
.flatpickr-confirm {
display: flex;
justify-content: space-between;
padding: 8px;
border-top: 1px solid #e6e6e6;
}
.flatpickr-confirm-button {
background-color: #4caf50;
color: white;
}
.flatpickr-cancel-button {
background-color: #f44336;
color: white;
}
Flatpickr предоставляет события жизненного цикла, которые можно использовать совместно с confirmDate для расширенного управления поведением.
onChange — вызывается при изменении выбораonOpen — при открытии календаряonClose — при закрытииonValueUpdate — при обновлении значенияПри использовании confirmDate важно учитывать, что
onChange может срабатывать до подтверждения, но значение в
input остаётся неизменным.
В системах бронирования подтверждение предотвращает случайный выбор даты и уменьшает количество ошибочных отправок формы.
При выборе отчётных периодов подтверждение обеспечивает контроль над изменением фильтров данных.
В интерфейсах с фильтрацией данных подтверждение предотвращает лишние перерисовки таблиц при каждом клике по календарю.
Плагин работает через расширение механизма Flatpickr instance. При инициализации создаётся дополнительный слой UI, который синхронизируется с внутренним состоянием календаря.
Основные элементы реализации:
setDateselectedDatesconfigПри использовании confirmDate проявляются особенности, которые связаны с отложенной фиксацией состояния:
setDate могут требовать
дополнительной синхронизации