Работа параметра isRTL в Pikaday определяет направление
интерфейса календаря и отвечает за поддержку языков с письмом справа
налево. Значение параметра влияет на компоновку всех визуальных
элементов виджета: заголовка месяца, навигационных кнопок, сетки дней и
логики их расположения в DOM-структуре.
isRTL — булевый параметр конфигурации, отвечающий за
включение режима Right-To-Left (RTL):
true — интерфейс календаря отображается справа
налевоfalse — стандартное направление слева направоПо умолчанию значение равно false, что соответствует
большинству европейских и азиатских локалей с LTR-письмом.
Основная задача параметра — адаптация календаря под языки и интерфейсы, где направление текста и визуального потока отличается от привычного LTR. К таким языкам относятся арабский, иврит, персидский и ряд других.
При включении isRTL: true происходит системное
зеркалирование интерфейса:
1. Панель навигации месяцев
2. Сетка календаря
3. Поведение стрелочной навигации
const picker = new Pikaday({
field: document.getElementById('date'),
isRTL: true
});
В этом случае календарь полностью переключается в RTL-режим без дополнительных настроек локализации.
isRTL часто используется совместно с параметром
i18n или локализацией через Moment.js (в старых
конфигурациях Pikaday).
Пример:
const picker = new Pikaday({
field: document.getElementById('date'),
isRTL: true,
i18n: {
previousMonth : 'الشهر السابق',
nextMonth : 'الشهر القادم',
months : ['يناير','فبراير','مارس','أبريل','مايو','يونيو',
'يوليو','أغسطس','سبتمبر','أكتوبر','نوفمبر','ديسمبر'],
weekdays : ['الأحد','الإثنين','الثلاثاء','الأربعاء',
'الخميس','الجمعة','السبت'],
weekdaysShort : ['أحد','إثن','ثلا','أرب','خمي','جمع','سبت']
}
});
В таком сочетании isRTL отвечает только за геометрию
интерфейса, а i18n — за языковое наполнение.
Сам по себе isRTL не переписывает стили глобально, но
добавляет классы и поведенческие особенности, на которые должен
опираться CSS:
direction: rtl (в
зависимости от реализации интеграции)text-align: rightПример кастомизации:
.pika-single.is-rtl {
direction: rtl;
}
.pika-single.is-rtl .pika-prev {
float: right;
}
.pika-single.is-rtl .pika-next {
float: left;
}
В реальных проектах часто требуется дополнительная корректировка, так как стандартные стили Pikaday ориентированы на LTR.
bound: trueПри использовании привязанного календаря (bound: true,
значение по умолчанию), RTL-режим может влиять на позиционирование
всплывающего окна:
left/right координат зависит от контейнераТипичный фикс — переопределение CSS позиционирования:
.pika-single.is-rtl {
right: 0;
left: auto;
}
RTL-режим может затрагивать логику клавиатурной навигации:
В кастомных сборках часто требуется явная нормализация:
onDraw: function(date) {
if (this.isRTL) {
// кастомная логика отображения
}
}
firstDayПри isRTL: true параметр firstDay (день
начала недели) не меняет направление отображения колонок, но влияет
на:
Например:
firstDay: 0 (воскресенье) в RTL будет отображаться
справаfirstDay: 1 (понедельник) сдвигает сетку аналогично, но
в зеркальной системе координат1. Несовпадение CSS и логики Интерфейс может быть зеркальным, но стили остаются LTR, что приводит к «ломаному» UI.
2. Попап выходит за экран Особенно в
bound: true режиме при абсолютном позиционировании.
3. Конфликты с глобальным
direction: rtl Если родительский контейнер уже
имеет RTL, двойное применение может приводить к инверсии поведения.
4. Неполная локализация isRTL не
переводит интерфейс, поэтому без i18n календарь остаётся
визуально RTL, но текст LTR.
isRTL с языковой локалью
интерфейсаdirection на
уровне контейнераВ приложениях, где язык может динамически меняться,
isRTL часто пересоздаёт экземпляр календаря, а не
переключается на лету:
В RTL-режиме:
Это делает календарь естественным для пользователей RTL-языков, сохраняя привычный паттерн чтения интерфейса.