Месяц листается стрелками или горизонтальным свайпом по сетке: заголовок и сетка уезжают в сторону листания. Маркер выбранного дня — одна «таблетка», которая переезжает между днями на пружине; в режиме диапазона таких маркеров два, а между ними рисуется заливка. Нажатие на заголовок превращает сетку в два барабана — месяц и год, которые крутятся жестом и защёлкиваются на ближайшем значении. Работает одинаково на iOS, Android и вебе; тактильный отклик — только на iOS и Android.
Поставьте зависимости:
npm install expo-status-bar expo-haptics react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletspnpm add expo-status-bar expo-haptics react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletsyarn add expo-status-bar expo-haptics react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletsbun add expo-status-bar expo-haptics react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletsСкопируйте эти файлы в src/shared/components/molecules/date-picker/:
Код доступен по подпискеPro
Исходник «Выбор даты» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Выбор даты» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
value?Тип Date | null
defaultValue?Тип Date | null
onChange?Тип (date: Date) => void
range?Тип IDateRange
defaultRange?Тип IDateRange
onRangeChange?Тип (range: IDateRange) => void
mode?Тип TDatePickerMode
month?Тип Date
onMonthChange?Тип (month: Date) => void
view?Тип TDatePickerView
onViewChange?Тип (view: TDatePickerView) => void
minDate?Тип Date
maxDate?Тип Date
accentColor?Тип string
theme?Тип TDatePickerTheme
width?Тип number
style?Тип StyleProp<ViewStyle>
testID?Тип string