@tchesa/react-native-modern-datepicker
Version:
A customizable calendar, time & month picker for React Native (including Persian Jalaali calendar & locale)
133 lines • 5.22 kB
TypeScript
import React, { Dispatch } from 'react';
import { StyleProp, ViewStyle } from 'react-native';
import PropTypes from 'prop-types';
import { Utils } from './Utils';
import { Configs, Mode } from './types';
type ActionType = 'set' | 'toggleMonth' | 'toggleTime';
type Action = {
type: ActionType;
selectedDate?: string;
activeDate?: string;
};
type CalendarContextType = {
mode: Mode;
reverse: boolean;
options: Options;
utils: Utils;
state: [CalendarState, Dispatch<Action>];
onSelectedChange?: (selectedDate: string) => void;
onDateChange?: (formattedDate: string) => void;
disableDateChange: boolean;
isGregorian: boolean;
minimumDate: string;
maximumDate: string;
selectorStartingYear: number;
selectorEndingYear: number;
onMonthYearChange?: (formattedDate: string) => void;
minuteInterval: MinuteInterval;
onTimeChange?: (time: string) => void;
};
declare const CalendarContext: React.Context<CalendarContextType>;
declare const useCalendar: () => CalendarContextType;
export type Options = {
backgroundColor: string;
textHeaderColor: string;
textDefaultColor: string;
selectedTextColor: string;
mainColor: string;
textSecondaryColor: string;
borderColor: string;
defaultFont: string;
headerFont: string;
textFontSize: number;
textHeaderFontSize: number;
headerAnimationDistance: number;
daysAnimationDistance: number;
};
type Props = {
onSelectedChange?: (selectedDate: string) => void;
onMonthYearChange?: (formattedDate: string) => void;
onTimeChange?: (time: string) => void;
onDateChange?: (formattedDate: string) => void;
current?: string;
selected?: string;
minimumDate?: string;
maximumDate?: string;
selectorStartingYear?: number;
selectorEndingYear?: number;
disableDateChange?: boolean;
isGregorian?: boolean;
configs?: Configs;
reverse?: true | false | 'unset';
options?: Options;
mode?: Mode;
minuteInterval?: MinuteInterval;
style?: StyleProp<ViewStyle>;
};
type CalendarState = {
activeDate: string;
selectedDate: string;
monthOpen: boolean;
timeOpen: boolean;
};
declare const DatePicker: {
({ onSelectedChange, onMonthYearChange, onTimeChange, onDateChange, current, selected, minimumDate, maximumDate, selectorStartingYear, selectorEndingYear, disableDateChange, isGregorian, configs, reverse, options, mode, minuteInterval, style, }: Props): import("react/jsx-runtime").JSX.Element;
defaultProps: {
onSelectedChange: () => null;
onMonthYearChange: () => null;
onTimeChange: () => null;
onDateChange: () => null;
current: string;
selected: string;
minimumDate: string;
maximumDate: string;
selectorStartingYear: number;
selectorEndingYear: number;
disableDateChange: boolean;
isGregorian: boolean;
configs: {};
reverse: string;
options: {};
mode: string;
minuteInterval: number;
style: {};
};
propTypes: {
onSelectedChange: PropTypes.Requireable<(...args: any[]) => any>;
onMonthYearChange: PropTypes.Requireable<(...args: any[]) => any>;
onTimeChange: PropTypes.Requireable<(...args: any[]) => any>;
onDateChange: PropTypes.Requireable<(...args: any[]) => any>;
current: PropTypes.Requireable<string>;
selected: PropTypes.Requireable<string>;
minimumDate: PropTypes.Requireable<string>;
maximumDate: PropTypes.Requireable<string>;
selectorStartingYear: PropTypes.Requireable<number>;
selectorEndingYear: PropTypes.Requireable<number>;
disableDateChange: PropTypes.Requireable<boolean>;
isGregorian: PropTypes.Requireable<boolean>;
configs: PropTypes.Requireable<object>;
reverse: PropTypes.Requireable<string | boolean>;
options: PropTypes.Requireable<PropTypes.InferProps<{
backgroundColor: PropTypes.Requireable<string>;
textHeaderColor: PropTypes.Requireable<string>;
textDefaultColor: PropTypes.Requireable<string>;
selectedTextColor: PropTypes.Requireable<string>;
mainColor: PropTypes.Requireable<string>;
textSecondaryColor: PropTypes.Requireable<string>;
borderColor: PropTypes.Requireable<string>;
defaultFont: PropTypes.Requireable<string>;
headerFont: PropTypes.Requireable<string>;
textFontSize: PropTypes.Requireable<number>;
textHeaderFontSize: PropTypes.Requireable<number>;
headerAnimationDistance: PropTypes.Requireable<number>;
daysAnimationDistance: PropTypes.Requireable<number>;
}>>;
mode: PropTypes.Requireable<Mode>;
minuteInterval: PropTypes.Requireable<2 | 5 | 1 | 3 | 4 | 6 | 10 | 12 | 15 | 20 | 30 | 60>;
style: PropTypes.Requireable<object>;
};
};
declare const minuteIntervalArray: readonly [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60];
type MinuteInterval = typeof minuteIntervalArray[number];
export { DatePicker, CalendarContext, useCalendar };
//# sourceMappingURL=DatePicker.d.ts.map