import { DateTimePickerMethods } from '@/core/interfaces'; import { useAppTranslation, useTailwind } from '@/hooks'; import { useCommonStore } from '@/stores'; import { ForwardedRef, forwardRef, useImperativeHandle, useState } from 'react'; import { Platform } from 'react-native'; import DateTimePickerModal, { ReactNativeModalDateTimePickerProps, } from 'react-native-modal-datetime-picker'; type PlatformDisplayKey = NonNullable; type PlatformDisplayValue = NonNullable; function platformSelect(android: PlatformDisplayValue, ios: PlatformDisplayValue) { return Platform.select({ android, ios })!; } const platformDisplay: Record = { date: platformSelect('calendar', 'inline'), datetime: platformSelect('default', 'spinner'), time: platformSelect('clock', 'spinner'), }; function DateTimePicker( { mode = 'date', onConfirm, ...props }: Partial, ref: ForwardedRef, ) { const tw = useTailwind(); const { t } = useAppTranslation('common'); const [isVisible, setIsVisible] = useState(false); const language = useCommonStore(state => state.language); useImperativeHandle( ref, () => ({ show: () => { setIsVisible(true); }, }), [], ); const handleCancel = () => setIsVisible(false); const handleConfirm: typeof onConfirm = date => { handleCancel(); onConfirm?.(date); }; return ( ); } export default forwardRef(DateTimePicker);