import { memo, useCallback, useMemo } from 'react'; import { useDatePickerStoreValue } from './DatePickerContext'; import { StyleProp, View, ViewStyle } from 'react-native'; import { Text } from '../Text'; import { IconButton } from '../IconButton'; import { TouchableRipple } from '../TouchableRipple'; import { datePickerHeaderItemStyles } from '../DatePickerDocked/utils'; function HeaderItem({ value, selecting, type, pickerType, onPressDropdown, onNext, onPrev, }: { value: number | string; type?: 'month' | 'year'; selecting?: boolean; pickerType: 'month' | 'year' | undefined; onPressDropdown?: (type: 'month' | 'year') => void; onNext?: (type: 'month' | 'year' | undefined) => void; onPrev?: (type: 'month' | 'year' | undefined) => void; }) { const { startDateYear, endDateYear } = useDatePickerStoreValue(state => ({ startDateYear: state.startDateYear, endDateYear: state.endDateYear, })); const disabled = pickerType && pickerType !== type; const handlePressDropDown = useCallback(() => { type && onPressDropdown && onPressDropdown(type); }, [onPressDropdown, type]); const handleOnPrevious = useCallback(() => { onPrev && onPrev(type); }, [onPrev, type]); const handleOnNext = useCallback(() => { onNext && onNext(type); }, [onNext, type]); const containerStyle = useMemo( () => [ datePickerHeaderItemStyles.buttonContainer, { justifyContent: !onPressDropdown ? 'flex-end' : !onNext ? 'flex-start' : 'center', }, ] as StyleProp, [onPressDropdown, onNext], ); return ( {!selecting && onPrev && ( )} {type && ( {value} )} {!selecting && onNext && ( )} ); } export default memo(HeaderItem);