2 комонента на React Native.
1. Список "колесо"
--------------------------
Ноябрь
Декабрь
Январь
Февраль
Март
--------------------------
Props:
- items: string[] | {value,label}[]
["Январь", ..., "Декабрь"] | [{value: "0" label: "Январь"}, ..., {value: "11" label: "Декабрь"}] - loop: boolean
- strings: number – всегда приводится к нечётному числу (например, 4 → 5), чтобы выбранная строка находилась посередине
- selected: string | value
- disable: string[] | value[] – Я могу ссылаться на элементы либо по метке, либо по значению, поэтому оба варианта должны работать.
Events:
- onChange отдает выбранный string | value
Без 3d эффекта, плоский. С инерцией, если свайпнул. Хороший пример - выбор времени на будильнике в Андроиде.
Дизайн, конечно, настраиваемый. Изменение шрифтов, отступов и т.д. не должно ломать комопнент
2. Два календаря, построенные на основе этого колеса
1. Обычный календарь, который вводит/выводит даты в формате «дд-мм-гггг».
2. Еврейский календарь с идентичным внешним интерфейсом «дд-мм-гггг», но внутри использующий еврейскую систему дат. Чтобы узнать количество дней в месяце в году, используйте библиотеку «hebcal».
Что ожидаю получить
• Повторно используемые, хорошо типизированные компоненты React Native (предпочтительно TypeScript)
• Чистый, прокомментированный исходный код без внешних нативных модулей, кроме стандартных библиотек React Native и библиотек даты от сообщества (например, moment-hijri, date-fns и подобных)
• Быстрый демонстрационный экран, демонстрирующий колесо отдельно и каждый календарь в действии
• Базовый файл README с описанием свойств, ожидаемых форматов и примером импорта
Я интегрирую компоненты в существующее приложение, поэтому ясность и удобство поддержки играют ключевую роль.
Вот примеры внешнего вида:


