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);