UNPKG

@lubosczech/react-datepicker

Version:

Flexible, Reusable, Mobile friendly DatePicker Component

100 lines (99 loc) 3.8 kB
import * as React from 'react'; import * as dayjs from 'dayjs'; import { PickerProps, PickerAction } from './Picker'; import { FieldType, InputProps } from './RangePickerInput'; import { Props as ICalendarProps } from './Calendar'; import { Merge, Omit } from '../utils/TypeUtil'; export declare enum TabValue { DATE = 0, TIME = 1 } interface RangeDatePickerProps { /** To display input format (Day.js format) */ dateFormat: string; restrictToDayTime?: boolean | undefined; /** Initial Calendar base date(if start date not set) */ initialDate: dayjs.Dayjs; /** Initial Start Date */ initialStartDate?: dayjs.Dayjs; showTimeOnly?: boolean; includeTime?: boolean; maxPrevMonths?: number | undefined; maxPrevYears?: number | undefined; maxNextMonths?: number | undefined; maxNextYears?: number | undefined; /** Initial End Date */ initialEndDate?: dayjs.Dayjs; /** RangeDatePicker change event */ onChange?: (start?: dayjs.Dayjs, end?: dayjs.Dayjs) => void; /** start day display this prop(optional) */ startText: string; /** end day display this prop(optional) */ endText: string; /** calendar wrapping element */ wrapper?: (calendar: JSX.Element) => JSX.Element; onPropChange?: any; } export interface State { selected: dayjs.Dayjs[]; date?: dayjs.Dayjs; tabValue: TabValue; start?: any; end?: any; hoverDate?: dayjs.Dayjs; startValue: string | undefined | null; endValue: string | undefined | null; startTime: any; endTime: any; mode?: FieldType; inputValue: string; currendate: any; clicked: boolean; isAllowedDays: boolean; isAllowedPrev?: boolean; isAllowedTime: boolean; } declare type CalendarProps = Merge<Omit<ICalendarProps, 'base' | 'onChange' | 'selected'>, { showMonthCnt?: number; }>; export declare type Props = RangeDatePickerProps & CalendarProps & InputProps & PickerProps; declare class RangeDatePicker extends React.Component<Props, State> { static defaultProps: { includeTime: boolean; dateFormat: string; portal: boolean; initialDate: dayjs.Dayjs; showMonthCnt: number; startText: string; endText: string; }; constructor(props: Props); handleTimeChange: (hour: number, minute: number) => void; valueChanged: (startvalue: string | undefined | null, endvalue: string | undefined | null, starttime: number | string | null, endtime: number | string | null) => void; getDateFormat(): string; handleDateChange: (actions: PickerAction) => (date: dayjs.Dayjs) => void; handleInputChange: (fieldType: FieldType, value: string) => void; handleMouseOver: (date: dayjs.Dayjs) => void; handleInputBlur: (fieldType: FieldType, value: string) => void; handleCalendarText: (date: dayjs.Dayjs) => string; handleCalendarClass: (date: dayjs.Dayjs) => "" | "calendar__day--range"; handleTab: (val: TabValue) => () => void; handleInputClear: (fieldType: FieldType) => void; timeClick: (data: string) => void; renderTime: () => JSX.Element | null; renderRangePickerInput: () => JSX.Element; renderContents: (actions: PickerAction) => JSX.Element; ontodayclick: () => void; yesterdayClick: () => void; currentWeekClick: () => void; pastWeekClick: () => void; currentMthClick: () => void; pastMthClick: () => void; pastClick: () => void; onallowedTimeClick: () => void; onallowedPrevClick: () => void; onallowedDaysClick: () => void; renderCalendar: (actions: PickerAction) => JSX.Element | null; render(): JSX.Element; } export default RangeDatePicker;