import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker'
import React from 'react'
import { Modal, Platform, StyleSheet, View } from 'react-native'
import { Text } from '../../../components/display/text'
import FormSheet from '../../../components/primitive/form_sheet'
import { useTheme } from '../../../hooks'
export type AgeCheckSelectBirthdateProps = {
onChange: (date: Date) => void
onDismiss?: () => void
onRequestClose: () => void
onSubmit: (date: Date) => void
value?: Date | null
visible?: boolean
}
export function AgeCheckSelectBirthdateModal(props: AgeCheckSelectBirthdateProps) {
if (Platform.OS === 'ios') return
if (Platform.OS === 'android') return
return Birthdate selection is not supported on this platform.
}
const MINIMUM_BIRTHDATE = new Date(1900, 0, 1)
function IOSBirthdateModal({
onChange,
onDismiss,
onRequestClose,
onSubmit,
value,
visible,
}: AgeCheckSelectBirthdateProps) {
const styles = useStyles()
const today = React.useMemo(() => new Date(), [])
const selected = value || today
const handleChange = (_event: DateTimePickerEvent, date?: Date) => {
if (date) onChange(date)
}
const handleSave = () => {
onSubmit(selected)
onRequestClose()
}
return (
Your birthdate
Cancel
Birthdate
)
}
function AndroidBirthdatePicker({
onRequestClose,
onSubmit,
value,
visible,
}: AgeCheckSelectBirthdateProps) {
if (!visible) return null
const today = new Date()
const selected = value || today
const handleAndroidDateChange = (event: DateTimePickerEvent, selectedDate?: Date) => {
if (event.type === 'set' && selectedDate) {
onSubmit(selectedDate)
}
onRequestClose()
}
return (
)
}
const useStyles = () => {
const { colors } = useTheme()
return StyleSheet.create({
formSheet: {
backgroundColor: colors.surfaceColor080,
},
formSheetContent: {
flex: 1,
},
content: {
flex: 1,
backgroundColor: colors.surfaceColor080,
padding: 16,
justifyContent: 'flex-start',
},
card: {
backgroundColor: colors.surfaceColor100,
borderRadius: 8,
padding: 16,
},
label: {
marginBottom: 8,
textTransform: 'uppercase',
},
pickerContainer: {
backgroundColor: colors.surfaceColor100,
borderRadius: 8,
},
})
}