UNPKG

@react-native-community/datetimepicker

Version:
205 lines (172 loc) 4.56 kB
import {FC, Ref, SyntheticEvent} from 'react'; import {NativeMethods, ViewProps} from 'react-native'; type IOSMode = 'date' | 'time' | 'datetime' | 'countdown'; type AndroidMode = 'date' | 'time'; type Display = 'spinner' | 'default' | 'clock' | 'calendar'; type IOSDisplay = 'default' | 'compact' | 'inline' | 'spinner'; type MinuteInterval = 1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 15 | 20 | 30; type DAY_OF_WEEK = 0 | 1 | 2 | 3 | 4 | 5 | 6; export type Event = SyntheticEvent< Readonly<{ timestamp: number; }> >; export type EvtTypes = 'set' | 'neutralButtonPressed' | 'dismissed'; export type DateTimePickerEvent = { type: EvtTypes; nativeEvent: { timestamp?: number; }; }; type BaseOptions = { /** * The currently selected date. */ value: Date; /** * Date change handler. * * This is called when the user changes the date or time in the UI. * The first argument is an Event, the second a selected Date. */ onChange?: (event: DateTimePickerEvent, date?: Date) => void; }; type DateOptions = BaseOptions & { /** * Maximum date. * * Restricts the range of possible date/time values. */ maximumDate?: Date; /** * Minimum date. * * Restricts the range of possible date/time values. */ minimumDate?: Date; }; type TimeOptions = Readonly< BaseOptions & { /** * Display TimePicker in 24 hour. */ is24Hour?: boolean; } >; export type BaseProps = Readonly<ViewProps & DateOptions>; export type IOSNativeProps = Readonly< BaseProps & { date?: Date; /** * The date picker locale. */ locale?: string; /** * The interval at which minutes can be selected. */ minuteInterval?: MinuteInterval; /** * The date picker mode. */ mode?: IOSMode; /** * Timezone offset in minutes. * * By default, the date picker will use the device's timezone. With this * parameter, it is possible to force a certain timezone offset. For * instance, to show times in Pacific Standard Time, pass -7 * 60. */ timeZoneOffsetInMinutes?: number; /** * The date picker text color. */ textColor?: string; /** * The date picker accent color. * * Sets the color of the selected, date and navigation icons. * Has no effect for display 'spinner'. */ accentColor?: string; /** * Override theme variant used by iOS native picker */ themeVariant?: 'dark' | 'light'; /** * Sets the preferredDatePickerStyle for picker */ display?: IOSDisplay; /** * Is this picker disabled? */ disabled?: boolean; } >; export type AndroidNativeProps = Readonly< BaseProps & DateOptions & TimeOptions & { /** * The date picker mode. */ mode?: AndroidMode; /** * The display options. */ display?: Display; /** * The interval at which minutes can be selected. */ minuteInterval?: MinuteInterval; positiveButtonLabel?: string; neutralButtonLabel?: string; negativeButtonLabel?: string; /** * callback when an error occurs inside the date picker native code (such as null activity) */ onError?: (arg: Error) => void; } >; export type DatePickerOptions = DateOptions & { display?: Display; }; export type TimePickerOptions = TimeOptions & { display?: Display; }; export type RCTDateTimePickerNative = NativeMethods; export type NativeRef = { current: Ref<RCTDateTimePickerNative> | null; }; export type WindowsNativeProps = Readonly< BaseProps & DateOptions & TimeOptions & { /** * The display options. */ display?: Display; placeholderText?: string; dateFormat?: | 'day month year' | 'dayofweek day month' | 'longdate' | 'shortdate'; dayOfWeekFormat?: | '{dayofweek.abbreviated(2)}' | '{dayofweek.abbreviated(3)}' | '{dayofweek.full}'; firstDayOfWeek?: DAY_OF_WEEK; timeZoneOffsetInSeconds?: number; is24Hour?: boolean; minuteInterval?: number; } >; declare namespace DateTimePickerAndroidType { const open: (args: AndroidNativeProps) => void; const dismiss: (mode: AndroidNativeProps['mode']) => Promise<boolean>; } declare const RNDateTimePicker: FC< IOSNativeProps | AndroidNativeProps | WindowsNativeProps >; export default RNDateTimePicker; export const DateTimePickerAndroid: typeof DateTimePickerAndroidType;