UNPKG

@rnwonder/react-date-picker

Version:

A simple and reusable Datepicker component for ReactJS ([Demo](https://stackblitz.com/edit/solidjs-templates-dof6jl?file=src%2FApp.tsx))

369 lines (319 loc) 13.2 kB
import { default as default_2 } from 'react'; import { JSX as JSX_2 } from 'react/jsx-runtime'; import { SetStateAction } from 'react'; export declare interface ApplyDateRange { dayRangeEnd: boolean; dayRangeStartEnd: undefined | boolean; dayRangeStart: boolean; dayRangeBetween: boolean; daysCurrent: boolean; daysNotCurrentMonth: boolean; isWeekend: boolean; isSaturday: boolean; isSunday: boolean; customDayClass?: string; isMultipleSelected: boolean; hidden: boolean; disabled: boolean; dayRangeEndHover: boolean; date: string; dateValue: string; } export declare interface CalendarDaysClassNamesAndColors extends DatePickerDayColors, DatePickerDayClassNames, Pick<RnClassName, "daysRowClass" | "datePickerCalendarDaysArea"> { } export declare interface CustomDaysClassName extends MakeOptionalRequired<DateObjectUnits> { className: string; } export declare type DateArray = MakeOptionalRequired<DateObjectUnits> | { start: MakeOptionalRequired<DateObjectUnits>; end: MakeOptionalRequired<DateObjectUnits>; }; export declare interface DateMathDiff extends Partial<Record<DateMathDiffUnit, number>> { } export declare type DateMathDiffUnit = "milliseconds" | "seconds" | "minutes" | "hours" | "days" | "weeks" | "months" | "quarters" | "years"; export declare interface DateObjectUnits { year?: number; month?: number; day?: number; } export declare type DateOption = Date | DateObjectUnits | string | number; export declare interface DatePickerDayClassNames extends Pick<RnClassName, "weekNamesClass" | "daysWrapperClass" | "daysActivePrimaryWrapperClass" | "datePickerBodyAreaClass" | "daysActivePrimaryBtnClass" | "daysActiveRangeBetweenBtnClass" | "daysActiveRangeEndBtnClass" | "daysActiveRangeStartBtnClass" | "daysActiveRangeStartWrapperClass" | "daysActiveRangeEndWrapperClass" | "daysActiveRangeBetweenWrapperClass" | "daysBtnClass" | "currentDayBtnClass" | "weekEndDaysBtnClass" | "sundaysBtnClass" | "saturdaysBtnClass" | "daysNotInCurrentMonthBtnClass"> { } export declare interface DatePickerDayClassNamesAndColors extends DatePickerDayColors, DatePickerDayClassNames { } export declare interface DatePickerDayColors extends Omit<RnColor, "arrowsColor" | "backgroundColor"> { } declare const DatePickerGroup: (props: DatePickerInputSJProps) => JSX_2.Element; export default DatePickerGroup; declare interface DatePickerInputSJProps extends Omit<DatePickerProps, "type" | "value" | "setAllowedComponents" | "close" | "handleOnChange" | "showSelectorTwo" | "setShowSelectorTwo" | "setSelectorTwoProps" | "selectorTwoProps" | "yearSelectorCount">, Pick<RnClassName, "inputWrapperClass" | "inputClass"> { type?: DatePickerType; value?: PickerValue; setValue?: default_2.Dispatch<SetStateAction<PickerValue>>; onChange?: (data: DatePickerOnChange) => void; componentsToAllowOutsideClick?: Array<HTMLElement>; renderInput?: PickerInputJSX; pickerPositionX?: IPopOverPositionX; pickerPositionY?: IPopOverPositionY; placeholder?: string; onClose?: () => void; onOpen?: () => void; inputProps?: default_2.InputHTMLAttributes<HTMLInputElement>; inputLabel?: string; inputWrapperWidth?: default_2.CSSProperties["width"]; multipleDatesSeparator?: string; rangeDatesSeparator?: string; alwaysShowRangeStartYear?: boolean; formatInputLabel?: string; formatInputLabelRangeStart?: string; formatInputLabelRangeEnd?: string; yearSelectorCount?: number; } export declare type DatePickerOnChange = { selectedDate?: DateObjectUnits; type: "single"; } | { startDate?: DateObjectUnits; endDate?: DateObjectUnits; type: "range"; } | { multipleDates?: DateObjectUnits[]; type: "multiple"; }; declare interface DatePickerProps extends RnColor, Omit<RnClassName, "inputClass" | "inputWrapperClass"> { type: DatePickerType; close?: () => void; handleOnChange: (data: DatePickerOnChange) => void; onDisabledDayError?: () => void; minDate?: MakeOptionalRequired<DateObjectUnits>; maxDate?: MakeOptionalRequired<DateObjectUnits>; onChange?: (data: DatePickerOnChange) => void; onYearChange?: (year: number) => void; onMonthChange?: (month: number) => void; onValueChange?: (value: DatePickerOnChange) => void; value?: PickerAloneValue; setAllowedComponents?: default_2.Dispatch<SetStateAction<HTMLElement[]>>; month?: number; setMonth?: default_2.Dispatch<SetStateAction<number>>; year?: number; setYear?: default_2.Dispatch<SetStateAction<number>>; monthSelectorJSX?: PickerRenderJSX; yearSelectorJSX?: PickerRenderJSX; calendarAboveTopAreaJSX?: PickerRenderJSX; calendarTopAreaJSX?: PickerRenderJSX; calendarBottomAreaJSX?: PickerRenderJSX; calendarLeftAreaJSX?: PickerRenderJSX; calendarRightAreaJSX?: PickerRenderJSX; calendarJSX?: PickerRenderJSX; afterNextButtonAreaJSX?: PickerRenderJSX; beforePrevButtonAreaJSX?: PickerRenderJSX; weekDaysJSX?: PickerRenderJSX; monthSelectorFormat?: IMonthSelectorType; monthSelectorTopLabel?: string; yearSelectorCount: number; monthYearSelectorFlexDirection?: IMonthYearSelectorFlexDirection; yearRange?: YearRange; locale?: Locale; localeOptions?: LocaleOptions; nextIcon?: default_2.ReactNode; prevIcon?: default_2.ReactNode; hideTopArea?: boolean; removeNavButtons?: boolean; shouldCloseOnSelect?: boolean; shouldHighlightWeekends?: boolean; disallowSameDayRange?: boolean; hideCalendar?: boolean; hideOutSideDays?: boolean; twoMonthsDisplay?: boolean; showEndOfRange?: boolean; disableRangeHoverEffect?: boolean; zIndex?: number; startingMonth?: number; startingYear?: number; weekStartDay?: number; disabledDays?: DateArray[]; enabledDays?: DateArray[]; customDaysClassName?: CustomDaysClassName[]; weekDaysType?: WeekDaysType; yearSelectorType?: SelectorType; monthSelectorType?: SelectorType; showSelectorTwo?: boolean; setShowSelectorTwo?: default_2.Dispatch<SetStateAction<boolean>>; setSelectorTwoProps?: default_2.Dispatch<SetStateAction<SelectorProps>>; selectorTwoProps?: SelectorProps; noButtonAnimation?: boolean; } export declare type DatePickerType = "single" | "range" | "multiple"; export declare interface DateTimeObject extends DateObjectUnits, ITimePickerFormat { } export declare type HandleDayClick = (day: MonthDaysObject<number>, month: number, year: number, nextMonth: boolean) => void; export declare interface HoverRangeValue { start?: DateObjectUnits; end?: DateObjectUnits; } export declare type IMonthSelectorType = "short" | "long"; export declare type IMonthYearSelectorFlexDirection = "row" | "column"; declare type IPopOverPositionX = "left" | "right" | "center"; declare type IPopOverPositionY = "top" | "bottom" | "auto"; export declare interface ITimePickerFormat { hour?: number; minute?: number; second?: number; } export declare type Locale = Intl.LocalesArgument; export declare type LocaleOptions = Intl.DateTimeFormatOptions; export declare type MakeOptionalRequired<T> = { [K in keyof T]-?: T[K]; }; export declare interface MonthDaysObject<T = string> { value: T; month: MonthStatus; } export declare type MonthStatus = "prev" | "current" | "next"; export declare interface PickerAloneValue { start?: string; startDateObject?: DateObjectUnits; end?: string; endDateObject?: DateObjectUnits; selected?: string; selectedDateObject?: DateObjectUnits; multiple?: string[]; multipleDateObject?: DateObjectUnits[]; } export declare type PickerInputJSX = JSX.Element | ((props: PickerInputJSXProps) => JSX.Element); export declare interface PickerInputJSXProps { value: PickerValue; showDate: () => void; } export declare type PickerRenderJSX = JSX.Element | ((props: PickerRenderJSXProps) => JSX.Element); export declare interface PickerRenderJSXProps { month: number; setMonth: default_2.Dispatch<SetStateAction<number>>; year: number; setYear: default_2.Dispatch<SetStateAction<number>>; selectedDate: DateObjectUnits | undefined; endDate: DateObjectUnits | undefined; multipleDates: DateObjectUnits[] | undefined; handleNextMonth: () => void; handlePrevMonth: () => void; close: () => void; handleDayClick: HandleDayClick; setRefToAllowOutsideClick: default_2.MutableRefObject<HTMLDivElement | undefined>; } export declare interface PickerValue { value: PickerAloneValue; label: string; } export declare interface RnClassName { inputClass?: string; inputWrapperClass?: string; datePickerWrapperClass?: string; datePickerTopAreaClass?: string; prevNextMonthBtnClass?: string; prevMonthBtnClass?: string; nextMonthBtnClass?: string; datePickerTopMonthYearAreaClass?: string; monthYearTriggerBtnClass?: string; monthYearTriggerBtnWrapperClass?: string; monthYearSelectorWrapperClass?: string; monthYearOptionBtnClass?: string; monthYearOptionBtnActiveClass?: string; datePickerBodyAreaClass?: string; calendarWrapperClass?: string; calendarOneAreaClass?: string; calendarTwoAreaClass?: string; calendarDividerClass?: string; weekNamesRowClass?: string; weekNamesClass?: string; daysRowClass?: string; daysWrapperClass?: string; daysBtnClass?: string; daysActiveRangeBetweenBtnClass?: string; daysActivePrimaryBtnClass?: string; currentDayBtnClass?: string; weekEndDaysBtnClass?: string; sundaysBtnClass?: string; saturdaysBtnClass?: string; daysNotInCurrentMonthBtnClass?: string; daysActiveRangeStartBtnClass?: string; daysActiveRangeEndBtnClass?: string; daysActiveRangeStartWrapperClass?: string; daysActiveRangeEndWrapperClass?: string; daysActivePrimaryWrapperClass?: string; daysActiveRangeBetweenWrapperClass?: string; datePickerCalendarDaysArea?: string; } export declare interface RnColor { primaryColor?: string; primaryTextColor?: string; secondaryColor?: string; secondaryTextColor?: string; textColor?: string; arrowsColor?: string; weekEndDayBgColor?: string; weekEndDayTextColor?: string; weekDaysNameColor?: string; backgroundColor?: string; } export declare interface SelectorColorsAndClassNames extends Pick<RnColor, "primaryColor" | "primaryTextColor" | "textColor" | "backgroundColor" | "arrowsColor">, Pick<RnClassName, "monthYearTriggerBtnClass" | "monthYearTriggerBtnWrapperClass" | "monthYearSelectorWrapperClass" | "monthYearOptionBtnClass" | "monthYearOptionBtnActiveClass"> { } declare interface SelectorProps extends SelectorColorsAndClassNames { option: number; setOption: default_2.Dispatch<SetStateAction<number>>; optionsArray?: string[]; useValueAsName?: boolean; gridTemplateColumnsNo?: string; attributes?: Record<string, string>; className?: string; zIndex?: number; year?: number; minDate?: MakeOptionalRequired<DateObjectUnits>; maxDate?: MakeOptionalRequired<DateObjectUnits>; enabledDays?: DateArray[]; onYearChange?: (year: number) => void; onMonthChange?: (month: number) => void; onChange?: (data: DatePickerOnChange) => void; type?: DatePickerType; startDay?: DateObjectUnits; twoMonthsDisplay?: boolean; yearRange?: YearRange; yearArray?: string[][]; handleNext?: () => void; handlePrev?: () => void; range?: string; startYear?: number | undefined; endYear?: number | undefined; count?: number; noButtonAnimation?: boolean; locale?: Locale; } export declare type SelectorType = "full-size" | "compact-dropdown"; export declare interface TimeClassName { prevTimeViewBtnClass?: string; nextTimeViewBtnClass?: string; prevNextTimeViewBtnClass?: string; timeAnalogNumberClass?: string; timeAnalogWrapperClass?: string; timeAnalogClockHandClass?: string; timeAnalogClockCenterDotClass?: string; timePickerWrapperClass?: string; timePickerTopAreaClass?: string; timePickerBottomAreaClass?: string; timePickerMeridiemBtnClass?: string; } export declare type TimeInputJSX = JSX.Element | ((props: TimeInputJSXProps) => JSX.Element); export declare interface TimeInputJSXProps { value: TimeValue; showTime: () => void; } export declare type TimeMeridiem = "AM" | "PM"; export declare interface TimeValue { value: ITimePickerFormat; label: string; } export declare type TimeView = "hour" | "minute" | "second"; export declare type WeekDaysType = "short" | "single" | "double"; export declare interface YearRange { start: number; end: number; } export { }