import { memo, useCallback, useMemo } from 'react'; import { StyleProp, View, type ViewStyle } from 'react-native'; import { Text } from '../Text'; import DayRange from './DayRange'; import { resolveStateVariant } from '../../utils'; import { datePickerDayEmptyStyles, datePickerDayStyles } from './utils'; import { TouchableRipple } from '../TouchableRipple'; function EmptyDayPure() { return ; } export const EmptyDay = memo(EmptyDayPure); // TODO hover state function Day(props: { day: number; month: number; year: number; selected: boolean; inRange: boolean; leftCrop: boolean; rightCrop: boolean; isToday: boolean; disabled: boolean; onPressDate: (date: Date) => any; }) { const { day, month, year, selected, inRange, leftCrop, rightCrop, onPressDate, isToday, disabled, } = props; const state = resolveStateVariant({ disabled, selected, inRange, today: isToday, }); datePickerDayStyles.useVariants({ state: state as any, }); const onPress = useCallback(() => { onPressDate(new Date(year, month, day)); }, [onPressDate, year, month, day]); const { containerStyle, buttonStyle, dayStyle, textStyle } = useMemo(() => { return { containerStyle: datePickerDayStyles.containerStyle, buttonStyle: datePickerDayStyles.button, dayStyle: [ datePickerDayStyles.day, isToday ? datePickerDayStyles.today : null, ] as StyleProp, textStyle: datePickerDayStyles.text, }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [isToday, state]); return ( {day} ); } export default memo(Day);