Вступление #
Для работы календаря можно использовать класс .js-datepicker по умолчанию.
Календарь реализован на базе Air datepicker.
Установка #
Пример разметки и инициализации календаря.
<input class="js-datepicker" type="text" readonly placeholder="Выберите дату" />
<!-- или -->
<div class="js-datepicker"></div>
// настройки Air datepicker(https://air-datepicker.com/ru/docs)
const options = {
isMobile: true,
dateFormat(date) {
return date.toLocaleString('ja', {
year: 'numeric',
day: '2-digit',
month: 'long',
})
},
}
BasicDatepicker.init('.my-datepicker', options)
BasicDatepicker.init(document.querySelector('.my-datepicker'), options)
BasicDatepicker.init(document.querySelectorAll('.my-datepicker'), options)
// или
BasicDatepicker.init() // по умолчанию инициaлизирует элементы с классом .js-datepicker
Конфигурация #
data-datepicker-options #
В значении указываются параметры для гибкой настройки календаря. С ними можно ознакомиться на странице официальной документации.
<input
class="js-datepicker"
type="text"
readonly
placeholder="Выберите дату"
data-datepicker-options='{ "isMobile": true }'
/>
Методы #
Представляют собой оболочки для методов Air datepicker.
show #
Показывает календарь.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'show',
})
hide #
Скрывает календарь.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'hide',
})
next #
Переход к следующему месяцу/году/декаде.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'next',
})
prev #
Переход к прошлому месяцу/году/декаде.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'prev',
})
selectDate #
Можно выбрать одну дату или несколько, если передать массив.
Где в конфигурациях указывается:
| Название | Тип | Описание |
|---|---|---|
date |
Date/string/number |
Дата в формате Date, строка в ISO формате или же время в миллисекундах. Если строку или число не удастся преобразовать в дату, то это значение будет проигнорировано. |
options.updateTime |
boolean |
Если передать true, то время из переданной даты будет установлено в значение виджета выбора времени. По умолчанию false - при выборе даты устанавливается текущее время. |
options.silent |
boolean |
Если true, то событие onSelect() не будет вызвано. |
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'selectDate',
config: {
date: new Date(),
options: {
updateTime: true,
silent: true,
},
},
})
unselectDate #
Снимает выбор с переданной даты.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'unselectDate',
config: {
date: new Date(),
},
})
clear #
Очищает все выбранные даты.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'clear',
})
destroy #
Уничтожает экземпляр календаря. Удаляет себя из DOM дерева и все события с целевого элемента.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'destroy',
})
update #
Обновляет опции календаря. По средствам этого метода можно установить новые значения минимальной или максимальной дат, изменить язык календаря и т.п.
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'update',
config: {
options: {
isMobile: true,
},
},
})
setCurrentView #
Устанавливает новое значение представления календаря.
| Название | Тип | Описание |
|---|---|---|
view |
string |
Новое представление(days/months/years). |
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'setCurrentView',
config: {
view: 'months',
},
})
setViewDate #
Устанавливает новую дату отображения календаря. Используется, когда, к примеру, нужно показать какой-то другой месяц без необходимости выбора даты.
| Название | Тип | Описание |
|---|---|---|
date |
Date/string/number |
Новая дата. Если не удастся преобразовать строку или число в дату, то вызов игнорируется. |
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'setViewDate',
config: {
date: new Date(),
},
})
setFocusDate #
Устанавливает фокус на ячейку с переданной датой.
| Название | Тип | Описание |
|---|---|---|
date |
Date/string/number |
Новая дата. Если не удастся преобразовать строку или число в дату, то вызов игнорируется. |
viewDateTransition |
boolean |
Если true и новая дата находится за пределами текущего отображения, то будет установлена новая дата отображения. |
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'setFocusDate',
config: {
date: new Date(),
viewDateTransition: true,
},
})
up #
Переход к следующему типу отображению(дни, месяцы, годы). Варианты отображения идут по порядку от days -> months -> years.
| Название | Тип | Описание |
|---|---|---|
date |
Date/string/number |
Если передана дата, то при смене представления будет изменена дата отображения. |
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'up',
config: {
date: new Date(),
},
})
down #
Переход к предыдущему типу отображения(дни, месяцы, годы).
| Название | Тип | Описание |
|---|---|---|
date |
Date/string/number |
Если передана дата, то при смене представления будет изменена дата отображения. |
BasicDatepicker.methods(document.querySelector('.my-datepicker'), {
name: 'down',
config: {
date: new Date(),
},
})
Экземпляр #
У каждого инициализированного элемента есть свой экземпляр.
const myCustomDatepicker = document.querySelector('.my-datepicker')
console.log(myCustomDatepicker.BasicDatepicker) // пример экземпляра
События #
Представляют собой оболочки для событий Air Datepicker.
BasicDatepicker.on(document.querySelector('.my-datepicker'), {
name: 'onSelect',
listener: function ({ date, formattedDate, datepicker }) {
console.log(date)
},
})
Список событий:
| Название | Описание |
|---|---|
onSelect |
Срабатывает при выборе или отмене выбора определенной даты. В качестве аргумента получает объект, содержащий различные поля. |
onChangeViewDate |
Срабатывает при изменении даты в календаре (перелистывании вперёд или назад). В качестве аргумента получает объект с актуальными значениями месяца, года и декады. |
onChangeView |
При изменении формата представления, например, с дней на месяцы, будет активирована данная функция обратной связи. В качестве аргумента будет передан текущий формат представления. |
onRenderCell |
Функция, которая будет выполняться при каждом отображении ячейки календаря. Она используется для изменения внешнего вида ячейки, модификации её содержимого или запрета на выбор. |
onShow |
Функция обратного вызова срабатывает при появлении календаря. Она вызывается в начале анимации появления и после её завершения. |
onHide |
Функция обратного вызова при скрытии календаря. Она вызывается в начале анимации скрытия и после её завершения. |