@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
TypeScript
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 { }