Документация
AirDatepicker обладает большим количеством опций, что позволяет его настроить под свои нужды. В данном разделе представлены все параметры с подробным описанием, которые принимает календарь.
Опции
string
Добавляет дополнительные классы календарю.
boolean
false
Делает календарь постоянно видимым.
object
locale/ru
Язык отображения календаря. Доступные локали находятся в директории air-datepicker/locale/
.
Подробнее со структурой локализации можно ознакомиться в соответствующем разделе.
import AirDatepicker from 'air-datepicker';
import localeEn from 'air-datepicker/locale/en';
new AirDatepicker('#el', {
locale: localeEn
})
Date | string | number
new Date()
Устанавливает начальную дату отображения календаря.
number
Индекс дня, с которого начинается неделя. Возможные значение от 0 (воскресенье) до 6 (суббота). По умолчанию берется из локализации, если значение передать сюда, то оно будет иметь больший приоритет.
array
[6, 0]
Индексы дней, которые будут считаться выходными. Им будет добавлен класс .-weekend-
. По умолчанию это суббота и воскресенье.
boolean
false
Если true
, то календарь будет появляться в виде модального окна с немного увеличенными размерами.
boolean
false
Показывает календарь сразу же после инициализации.
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}) => boolean
true
Если 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()
. Но в таком случае все анимации отключаются и вам придется добавлять их вручную, если они требуются. Функция принимает объект из следующих полей
HTMLDivElement
HTMLInputElement
HTMLElement
boolean
() => 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
boolean
true
Если true
, то в представлении дней будут отображаться даты из других месяцев.
boolean
true
Если true
, то можно будет выбрать даты из других месяцев.
boolean
true
Если true
, то при выборе дат из другого месяца будет осуществлен переход к этому месяцу.
Date | string | number
""
Минимально возможная дата для выбора.
Date | string | number
""
Максимально возможная дата для выбора.
Нужно ли запрещать переходить на следующий или предыдущий месяц/год/декаду если они выходят за рамки минимальной или максимальной дат.
Если true
, то при наступлении такого сценария будут деактивироваться кнопки навигации календаря
boolean | number
false
Если true
, то можно будет выбрать неограниченное количество дат. Если передать число, то количество выбираемых дат будет ограничено этим числом.
string
", "
Разделитель между датами - используется в режиме множественного выбора дат и в режиме выбора диапазона.
boolean
false
Предоставляет возможность выбора диапазона дат. В качестве разделителя будет использовано значение из multipleDatesSeparator
boolean
true
Если true
, то после выбора дат в режиме диапазона, их можно будет изменить путем перетаскивания курсором мыши.
string | string[] | object | object[] | false
false
Эта опция позволяет добавить кнопки в интерфейс календаря. Можно добавить как две готовые кнопки, так и создать произвольную кнопку.
Изначально доступны два варианта:
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'
}
})
boolean
false
Задает фиксированную высоту календаря. Если true
, то в каждом месяце будет отрисовываться по 6 недель.
boolean
false
Включает возможность выбрать время.
boolean
false
Если нужно выбрать только время без конкретной даты.
string
" "
Разделитель между датой и временем.
string
Формат времени. Так же как и dateFormat
опирается на Unicode Technical Standard #35. Если передать 12-часовой формат отображения часов, то ползунки времени будут автоматически подстроены под соответствующий режим.
Возможные символы:
h
— часы в 12-часовом форматеhh
— часы в 12-часовом формате с лидирующим нулемH
— часы в 24-часовом форматеHH
— часы в 24-часовом формате с лидирующим нулемm
— минутыmm
— минуты с лидирующим нулемaa
— период дня маленькими буквамAA
— период дня заглавными буквамиnumber
0
Минимально допустимое к выбору значение часов.
number
24
Максимально допустимое к выбору значение часов.
number
0
Минимально допустимое к выбору значение минут.
number
59
Максимально допустимое к выбору значение минут.
number
1
Шаг выбора часов.
number
1
Шаг выбора минут.
Локализация
Начиная с версии 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
({date, datepicker}) => boolean
Срабатывает до выбора даты. Если возвращает true
, то дата будет выбрана, если false
- нет. Полезно когда нужно запретить выбирать дату, но при этом сохранить обычный вид ячейки.
Date
AirDatepicker
({month, year, decade}) => void
Срабатывает при перелистывании календаря вперед или назад. Получает в качестве аргумента объект с актуальными значениям месяца, года и декады.
number
number
number[]
("days | months | years") => void
При смене представления, например, с дней на месяцы, будет вызываться эта функция обратной связи. В качестве аргумента будет передано название текущего представления.
({date, cellType, datepicker}) => {html, classes, disabled, attrs}
Функция, которая будет вызываться каждый раз, когда будет отрисовываться ячейка календаря. Используется, в случае если нужно каким-то образом кастомизировать ячейку, изменить содержимое или сделать недоступным к выбору.
В качестве аргумента принимает объект, описывающий текущую ячейку:
Date
"day | month | year"
AirDatepicker
Функция должна возвращать объект, состоящий из следующих полей:
string
string
boolean
Record<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-`
index
AirDatepicker
({date, datepicker}) => void
Событие, срабатывающее при фокусировании на ячейке
Date
AirDatepicker