Параметр bound определяет способ привязки календаря к целевому элементу и управляет тем, как компонент взаимодействует с полем ввода и жизненным циклом отображения интерфейса.
В стандартной конфигурации календарь работает в связке с
HTML-элементом <input>, автоматически открываясь при
фокусе и закрываясь при выборе даты или потере фокуса. Именно этот
сценарий реализуется, когда значение bound не
переопределено и остаётся в состоянии по умолчанию.
При значении bound: true экземпляр календаря жёстко связан с переданным input-элементом. Это означает, что:
Связанное состояние делает компонент интуитивным для форм ввода дат, где календарь является вспомогательным интерфейсом, а не самостоятельным виджетом.
const picker = new Pikaday({
field: document.getElementById('date'),
bound: true
});
При таком подходе библиотека автоматически управляет жизненным циклом отображения, минимизируя необходимость ручного контроля со стороны разработчика.
Значение bound: false разрывает автоматическую связь календаря с input-элементом. В этом режиме календарь перестаёт быть зависимым от фокуса поля и требует явного управления.
Поведение изменяется следующим образом:
const picker = new Pikaday({
field: document.getElementById('date'),
bound: false
});
В этом режиме компонент становится более универсальным и может использоваться как самостоятельный элемент интерфейса, например в модальных окнах, кастомных панелях или сложных формах, где управление состоянием централизовано.
При отключённой привязке ответственность за открытие и закрытие календаря переносится на разработчика. Для этого используется программный API экземпляра:
picker.show() — отображение календаря;picker.hide() — скрытие календаря.Такой подход позволяет интегрировать календарь в нестандартные сценарии взаимодействия, где стандартное поведение через input нежелательно или конфликтует с общей логикой интерфейса.
const picker = new Pikaday({
field: document.getElementById('date'),
bound: false
});
document.getElementById('openBtn').addEventListener('click', function () {
picker.show();
});
При включённой привязке календарь рассчитывает своё положение относительно input-элемента, используя координаты DOM и учитывая прокрутку страницы.
При bound: false этот механизм может быть отключён или теряет смысл, поскольку календарь больше не обязан следовать за конкретным полем. В таких случаях часто применяется альтернативное поведение:
Это позволяет интегрировать календарь в интерфейсы с нестандартной версткой, где автоматическое позиционирование мешает контролю над макетом.
Параметр bound часто рассматривается вместе с опцией container, которая определяет DOM-узел, в который будет рендериться календарь.
Комбинация bound: false и явно заданного контейнера позволяет полностью отделить календарь от input-элемента и встроить его как самостоятельный UI-блок.
const picker = new Pikaday({
field: document.getElementById('date'),
bound: false,
container: document.getElementById('calendar-wrapper')
});
В таком случае input-элемент может использоваться только для хранения значения, а визуальный календарь становится частью интерфейсной панели.
В сложных интерфейсах, где создаётся несколько экземпляров календаря, параметр bound влияет на модель взаимодействия между компонентами. При включённой привязке каждый календарь строго ассоциирован со своим input, что упрощает изоляцию состояния.
При отключённой привязке требуется учитывать:
Режим с включённой привязкой используется в типовых формах, где календарь является вспомогательным компонентом:
В этих случаях автоматическое поведение снижает сложность интеграции и уменьшает количество управляющего кода.
Отключённая привязка применяется в интерфейсах, где требуется полный контроль над отображением:
В таких сценариях календарь перестаёт быть реактивным к input-фокусу и становится управляемым компонентом с явным жизненным циклом.