Документация
AirDatepicker обладает большим количеством опций, что позволяет его настроить под свои нужды. В данном разделе представлены все параметры с подробным описанием, которые принимает календарь.
Опции
stringДобавляет дополнительные классы календарю.
booleanfalseДелает календарь постоянно видимым.
objectlocale/ruЯзык отображения календаря. Доступные локали находятся в директории air-datepicker/locale/.
Подробнее со структурой локализации можно ознакомиться в соответствующем разделе.
import AirDatepicker from 'air-datepicker';
import localeEn from 'air-datepicker/locale/en';
new AirDatepicker('#el', {
locale: localeEn
})
Date | string | numbernew Date()Устанавливает начальную дату отображения календаря.
numberИндекс дня, с которого начинается неделя. Возможные значение от 0 (воскресенье) до 6 (суббота). По умолчанию берется из локализации, если значение передать сюда, то оно будет иметь больший приоритет.
array[6, 0]Индексы дней, которые будут считаться выходными. Им будет добавлен класс .-weekend-. По умолчанию это суббота и воскресенье.
booleanfalseЕсли true, то календарь будет появляться в виде модального окна с немного увеличенными размерами.
booleanfalseПоказывает календарь сразу же после инициализации.
string | (date) => string""Формат даты. С 3 версии формат даты основывается на стандарте Unicode Technical Standard #35. По умолчанию берется из текущей локали. Значение, переданное сюда, будет иметь больший приоритет.
Доступные символы:
T — время в миллисекундахE — краткое названия дня недели, поле daysShort из локалиEEEE — полное названия дня недели, поле days из локалиd — день месяцаdd — день месяца с ведущим нулемM — номер месяцаMM — номер месяца с ведущим нулемMMM — краткое наименование месяца, поле monthsShort из локалиMMMM — полное наименование месяца, поле months из локалиyy — сокращенный год из двух цифрyyyy — полный номер годаyyyy1 — первый год декады текущего годаyyyy2 — последний год декады текущего годаВы также можете передать сюда функцию, для ручной обработки выбранных дат. Она должна возвратить строку. Если включен режим выбора нескольких дат, то в эту функцию будет передан массив выбранных дат.
new AirDatepicker('#el', {
dateFormat(date) {
return date.toLocaleString('ja', {
year: 'numeric',
day: '2-digit',
month: 'long'
});
}
})string | DOMNode""Дополнительное текстовое поле, куда будет записываться дата с форматом из поля altFieldDateFormat
string | (date) => string"T"Формат даты дополнительного поля
boolean | ({datepicker, date}) => booleantrueЕсли true, то клик на активной ячейке снимет с нее выделение
Так же может быть функцией, в качестве параметров она получает экземпляр календаря и дату, которую пользователь пытается выбрать повторно. Если функция вернет true, то выделение будет снято, в противном случае выделение останется.
Включает навигацию по календарю с помощью клавиатуры. Работает только в случае когда элемент, на котором инициализируется календарь, является текстовым полем.
Сочетания клавиш:
Ctrl + → | ↑ — переход на месяц впередCtrl + ← | ↓ — переход на месяц назадShift + → | ↑ — переход на год впередShift + ← | ↓ — переход на год назадAlt + → | ↑ — переход на 10 лет впередAlt + ← | ↓ — переход на 10 лет назадCtrl + Shift + ↑ — смена представления, от дней до декадEsc — закрытие календаряDate[] | string[] | number[]falseМассив активных дат. Принимает как отдельные типы данных, так и смешанные. Если будет передан невалидный формат даты, то это значение будет проигнорировано
import AirDatepicker from 'air-datepicker';
let startDate = new Date('2021-07-20');
new AirDatepicker('#el', {
startDate,
multipleDates: true,
selectedDates: [startDate, '2021-07-25', 1626307200000]
})
string | HTMLElement""Родительский элемент для календаря. По умолчанию все календари помещаются в элемент с классом .air-datepicker-global-container.
string | function"bottom left"Позиционирование календаря относительно текстового поля.
Если передать строку, то первым значением задается основная ось позиционирования, вторым — положение на этой оси. Например, {position: 'top right'} — установит позицию календаря справа вверху от текстового поля.
Если передать функцию, то можно регулировать позицию самостоятельно — она будет вызвана при срабатывании метода show(). Но в таком случае все анимации отключаются и вам придется добавлять их вручную, если они требуются. Функция принимает объект из следующих полей
HTMLDivElementHTMLInputElementHTMLElementboolean() => voidЕсли требуется ручная обработка скрытия календаря, то вы можете возвратить функцию из position — она будет вызвана при срабатывании hide() — по завершению обработки не забудьте вызвать функцию done для завершения процесса скрытия.
Пример ручной обработки позиционирования:
new AirDatepicker('#el', {
autoClose: true,
position({$datepicker, $target, $pointer}) {
let coords = $target.getBoundingClientRect(),
dpHeight = $datepicker.clientHeight,
dpWidth = $datepicker.clientWidth;
let top = coords.y + coords.height / 2 + window.scrollY - dpHeight / 2;
let left = coords.x + coords.width / 2 - dpWidth / 2;
$datepicker.style.left = `${left}px`;
$datepicker.style.top = `${top}px`;
$pointer.style.display = 'none';
}
})
string"days"Начальное представление календаря. Возможные значения:
days — отображение дней одного месяцаmonths — отображения месяцев одного годаyears — отображение годов одной декадыstring"days"Минимально возможное представление календаря. Используется, например, когда нужно предоставить только выбор месяца. Возможные значения такие же как и у view
booleantrueЕсли true, то в представлении дней будут отображаться даты из других месяцев.
booleantrueЕсли true, то можно будет выбрать даты из других месяцев.
booleantrueЕсли true, то при выборе дат из другого месяца будет осуществлен переход к этому месяцу.
Date | string | number""Минимально возможная дата для выбора.
Date | string | number""Максимально возможная дата для выбора.
Нужно ли запрещать переходить на следующий или предыдущий месяц/год/декаду если они выходят за рамки минимальной или максимальной дат.
Если true, то при наступлении такого сценария будут деактивироваться кнопки навигации календаря
boolean | numberfalseЕсли true, то можно будет выбрать неограниченное количество дат. Если передать число, то количество выбираемых дат будет ограничено этим числом.
string", "Разделитель между датами — используется в режиме множественного выбора дат и в режиме выбора диапазона.
booleanfalseПредоставляет возможность выбора диапазона дат. В качестве разделителя будет использовано значение из multipleDatesSeparator
booleantrueЕсли true, то после выбора дат в режиме диапазона, их можно будет изменить путем перетаскивания курсором мыши.
string | string[] | object | object[] | falsefalseЭта опция позволяет добавить кнопки в интерфейс календаря. Можно добавить как две готовые кнопки, так и создать произвольную кнопку.
Изначально доступны два варианта:
today — кнопка «Сегодня» — при нажатии будет осуществлен переход к сегодняшней датеclear — кнопка «Очистить» — при нажатии все активные даты будут деактивированы.Для того, чтобы создать свою кнопку нужно передать объект следующего вида:
ButtonShape = {
content: string | (dpInstance) => string
tagName?: string
className?: string
attrs?: object
onClick?: (dpInstance) => void
}
Пример произвольной кнопки
import AirDatepicker from 'air-datepicker';
let button = {
content: 'Select 2021-07-26',
className: 'custom-button-classname',
onClick: (dp) => {
let date = new Date('2021-07-26');
dp.selectDate(date);
dp.setViewDate(date);
}
}
new AirDatepicker('#el', {
buttons: [button, 'clear'] // Custom button, and pre-installed 'clear' button
})
string"monthsShort"Поле из объекта локализации, которое будет использовано для отображения названий месяца в представлении months.
string"focus"Событие, которому будет показан календарь.
Если true, то после выбора даты календарь будет скрыт.
string"<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>"Контент кнопки «Назад» в навигации календаря
string"<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>"Контент кнопки «Вперед» в навигации календаря
Шаблоны заголовков в навигации календаря. Можно использовать HTML-теги и символы из dateFormat. Также можно передать функцию в качестве значения — она получит экземпляр календаря в качестве аргумента, и должна будет вернуть строку.
В случае, если передана функция, она будет вызываться каждый раз при смене представления, выбора даты или при переходе на другой месяц.
Значения по умолчанию:
let navTitlesDefaults = {
days: 'MMMM, <i>yyyy</i>',
months: 'yyyy',
years: 'yyyy1 - yyyy2'
}Применение:
new AirDatepicker('#el', {
navTitles: {
days: '<strong>Choose date</strong> MM, yyyy'
}
})booleanfalseЗадает фиксированную высоту календаря. Если true, то в каждом месяце будет отрисовываться по 6 недель.
booleanfalseВключает возможность выбрать время.
booleanfalseЕсли нужно выбрать только время без конкретной даты.
string" "Разделитель между датой и временем.
stringФормат времени. Так же как и dateFormat опирается на Unicode Technical Standard #35. Если передать 12-часовой формат отображения часов, то ползунки времени будут автоматически подстроены под соответствующий режим.
Возможные символы:
h — часы в 12-часовом форматеhh — часы в 12-часовом формате с ведущим нулемH — часы в 24-часовом форматеHH — часы в 24-часовом формате с ведущим нулемm — минутыmm — минуты с ведущим нулемaa — период дня маленькими буквамAA — период дня заглавными буквамиnumber0Минимально допустимое к выбору значение часов.
number24Максимально допустимое к выбору значение часов.
number0Минимально допустимое к выбору значение минут.
number59Максимально допустимое к выбору значение минут.
number1Шаг выбора часов.
number1Шаг выбора минут.
Локализация
Начиная с версии 3.0.0 язык календаря нужно передавать как объект, вместо строки, как было раньше. Вы можете подключить одну из доступных локализаций либо же создать свою собственную. Доступные локализации находится в директории 'locales/'
Пример объекта локализации
export default {
days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
daysShort: ['Вос','Пон','Вто','Сре','Чет','Пят','Суб'],
daysMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
monthsShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
today: 'Сегодня',
clear: 'Очистить',
dateFormat: 'dd.MM.yyyy',
timeFormat: 'HH:mm',
firstDay: 1
};
События
({date, formattedDate, datepicker}) => voidСобытие, которое срабатывает при выборе или снятия выбора с какой-либо даты. В качестве аргумента получает объект, состоящий из следующих полей:
Date | Date[]string | string[]AirDatepickerПри выборе даты или изменении времени в календаре элемент <input /> генерирует событие change.
({date, datepicker}) => booleanСрабатывает до выбора даты. Если возвращает true, то дата будет выбрана, если false — нет. Полезно когда нужно запретить выбирать дату, но при этом сохранить обычный вид ячейки.
DateAirDatepicker({month, year, decade}) => voidСрабатывает при перелистывании календаря вперед или назад. Получает в качестве аргумента объект с актуальными значениям месяца, года и декады.
numbernumbernumber[]("days | months | years") => voidПри смене представления, например, с дней на месяцы, будет вызываться эта функция обратной связи. В качестве аргумента будет передано название текущего представления.
({date, cellType, datepicker}) => {html, classes, disabled, attrs}Функция, которая будет вызываться каждый раз, когда будет отрисовываться ячейка календаря. Используется, в случае если нужно каким-то образом кастомизировать ячейку, изменить содержимое или сделать недоступным к выбору.
В качестве аргумента принимает объект, описывающий текущую ячейку:
Date"day | month | year"AirDatepickerФункция должна возвращать объект, состоящий из следующих полей:
stringstringbooleanRecord<string, string | number | undefined>new AirDatepicker('#el', {
onRenderCell({date, cellType}) {
// Disable all 12th dates in month
if (cellType === 'day') {
if (date.getDate() === 12) {
return {
disabled: true,
classes: 'disabled-class'
attrs: {
title: 'Cell is disabled'
}
}
}
}
}
})
(isFinished) => voidФункция обратного вызова при появлении календаря. Вызывается вначале анимации появления, и когда анимация завершилась.
boolean(isFinished) => voidФункция обратного вызова при скрытии календаря. Вызывается вначале анимации скрытия, и когда анимация завершилась.
boolean({dayIndex, datepicker}) => voidДобавляет возможность кликать по названиям дней в календаре. При этом, этим элементах будет добавлен класс `-clickable-`
indexAirDatepicker({date, datepicker}) => voidСобытие, срабатывающее при фокусировании на ячейке
DateAirDatepicker