Параметр yearRange в библиотеке Pikaday управляет
диапазоном лет, доступных в выпадающем списке выбора года. Он напрямую
влияет на UX календаря, ограничивая или расширяя навигацию пользователя
по годам и определяя границы, внутри которых можно выбрать дату.
Основная задача параметра — контроль диапазона отображаемых лет в селекторе года, который появляется в заголовке календаря при использовании режима с переключением года.
yearRange определяет:
При этом важно понимать, что параметр влияет только на UI-выбор года,
а не на фактическую валидацию дат. Ограничение выбора дат в целом
задаётся через minDate и maxDate.
В зависимости от конфигурации Pikaday параметр может принимать несколько форм.
yearRange: 10
В этом случае диапазон формируется автоматически:
Такой формат удобен для динамических интерфейсов, где важна относительная гибкость.
yearRange: "1900:2030"
Или вариант с относительными значениями:
yearRange: "-10:+10"
Особенности:
Относительный формат интерпретируется относительно текущего года.
yearRange: [1990, 2025]
Наиболее строгий и предсказуемый вариант:
Используется в системах, где диапазон фиксирован бизнес-логикой (например, формы регистрации с ограничениями по возрасту).
Внутри компонента Pikaday yearRange влияет на следующие
элементы UI:
При этом:
minDate/maxDateminDate: new Date(2000, 0, 1),
maxDate: new Date(2030, 11, 31),
yearRange: "1990:2040"
Логика взаимодействия:
yearRange управляет только UI-диапазоном летminDate и maxDate реально блокируют выбор
датminDate/maxDateЕсли defaultDate находится вне диапазона
yearRange, календарь может:
yearRange: [1920, 2008]
Используется в формах, где требуется ограничение по возрасту (например, регистрация с минимальным возрастом 18+).
yearRange: "2000:2035"
Применяется в интерфейсах:
yearRange: 5
Подходит для:
Внутри Pikaday значение yearRange преобразуется в:
minYear)maxYear)Далее эти значения используются для построения списка опций:
<select> элементаyearRange: "1990:2000",
minDate: new Date(2010, 0, 1)
Результат:
yearRange: "1000:3000"
Последствия:
yearRange: "-50:+50"
Проблема:
При использовании Pikaday важно учитывать:
Оптимальные диапазоны:
Если yearRange не задан:
Логика можно описать так:
yearRangeminYear и maxYearminDate/maxDate при выбореЭтот механизм делает yearRange ключевым параметром
управления навигацией по годам в календаре Pikaday, особенно в формах с
ограниченным или контролируемым диапазоном дат.