Вступление #
Для работы календаря можно использовать класс .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 |
Функция обратного вызова при скрытии календаря. Она вызывается в начале анимации скрытия и после её завершения. |