reactjs-datetime-range-picker
Version:
ReactJS datetime range picker with daily, weekly, monthly, quarterly & yearly levels
258 lines (224 loc) • 6.77 kB
TypeScript
import { ElementType } from 'react';
import { default as React_2 } from 'react';
export declare interface ActiveItemSide extends DateCharacteristics {
rowItemText?: string;
firstDay?: string;
lastDay?: string;
}
export declare interface AriaLabelsOptions {
inputField?: string;
}
export declare interface BUTTON_AS {
tag?: ElementType;
classNames?: string;
}
export declare type CALENDAR_SIDES = "left" | "right";
export declare type CalendarSides = {
[k in CALENDAR_SIDES]?: DateSide | TimeSide | ActiveItemSide | string | boolean | number;
};
export declare type CalendarType = (typeof CalendarTypes)[number];
export declare const CalendarTypes: ["daily", "weekly", "monthly", "quarterly", "yearly"];
export declare interface Config extends Options, Settings {
selectedTimezone?: TZ_MAP_KEYS;
}
export declare interface DateCharacteristics {
available?: boolean;
inRange?: boolean;
active?: boolean;
today?: boolean;
date?: string;
}
export declare type DateRangeModel = {
[key in CalendarType]?: Options;
};
export declare interface DateRow {
rowNumber: string | null;
rowNumberText: string | null;
items: ActiveItemSide[];
}
export declare interface DateSide {
label: string;
months: string[];
years: string[];
itemRows: DateRow[];
}
export declare type DATETIME_RANGE_TYPE = keyof typeof DatetimeRangeType;
export declare interface DateTimeRangeChangeOutput {
activeRange: string;
startDate: string | number;
endDate: string | number;
startTime?: string;
endTime?: string;
}
export declare type DateTimeRangeModelChangeOutput = {
[key in CalendarType]?: DateTimeRangeChangeOutput;
};
export declare enum DatetimeRangeType {
daily = "daily",
weekly = "weekly",
monthly = "monthly",
quarterly = "quarterly",
yearly = "yearly"
}
export declare interface INPUT_AS {
tag?: ElementType;
classNames?: string;
}
export declare enum InputFocusBlur {
focus = 1,
blur = 2
}
export declare interface Options {
dateArray?: any[];
startDate?: string | number;
endDate?: string | number;
minDate?: string | number;
maxDate?: string | number;
startTime?: string;
endTime?: string;
minTime?: string;
maxTime?: string;
}
export declare const ReactJSDatetimeRangePicker: React_2.FC<ReactJSDatetimeRangePickerProps>;
export declare interface ReactJSDatetimeRangePickerProps {
dateArray?: any[];
startDate?: string | number;
endDate?: string | number;
minDate?: string | number;
maxDate?: string | number;
startTime?: string;
endTime?: string;
minTime?: string;
maxTime?: string;
type?: DATETIME_RANGE_TYPE;
modelKeys?: string[];
useLocalTimezone?: boolean;
showTimezoneSelect?: boolean;
timePicker?: boolean;
timezoneSupport?: boolean;
defaultTimezone?: TZ_MAP_KEYS;
inputClass?: string;
inputDateFormat?: string;
viewDateFormat?: string;
outputDateFormat?: string;
singleDatePicker?: boolean;
componentDisabled?: boolean;
label?: string;
placeholder?: string;
showRowNumber?: boolean;
availableRanges?: Record<string, any>;
showRanges?: boolean;
disableWeekends?: boolean;
disableWeekdays?: boolean;
displayBeginDate?: boolean;
displayEndDate?: boolean;
ariaLabels?: AriaLabelsOptions;
dateRangeModel: DateRangeModel;
canBeEmpty: boolean;
onDateRangeModelChange?: (options: Options | DateRangeModel) => void;
onDateRangeChange?: (options: Options) => void;
onInputBlur?: (options: Record<string, unknown>) => void;
onDateSelect?: (options: Options) => void;
inputAs?: INPUT_AS;
selectAs?: SELECT_AS;
buttonAs?: BUTTON_AS;
}
export declare interface RowItemOptions {
type: string;
monthStartWeekNumber: number;
dateRows: number;
rowNumber: string;
yearStartDate: string;
year: number;
rowItem: number;
columns: number;
}
export declare interface RowItemVariables {
itemCount: number;
currentItemDate: string;
rowItemText: string;
firstDay: string;
lastDay: string;
}
export declare interface RowOptions {
type: string;
monthStartWeekNumber: number;
dateRows: number;
year: string;
itemCount: number | null;
}
export declare interface RowVariables {
rowNumber: string;
columns: number;
}
export declare interface SELECT_AS {
tag?: ElementType;
optionTag?: ElementType;
selectedAttributeName?: string;
selectedAttributeValueType?: "string" | "array" | "number";
classNames?: string;
}
export declare interface Settings {
type: DATETIME_RANGE_TYPE;
modelKeys?: string[];
useLocalTimezone?: boolean;
showTimezoneSelect?: boolean;
timePicker?: boolean;
timezoneSupport?: boolean;
defaultTimezone?: TZ_MAP_KEYS;
inputClass?: string;
inputDateFormat?: string;
viewDateFormat?: string;
outputDateFormat?: string;
singleDatePicker?: boolean;
componentDisabled?: boolean;
label?: string;
placeholder?: string;
showRowNumber?: boolean;
availableRanges?: Record<string, any>;
showRanges?: boolean;
disableWeekends?: boolean;
disableWeekdays?: boolean;
displayBeginDate?: boolean;
displayEndDate?: boolean;
ariaLabels?: AriaLabelsOptions;
}
export declare interface State {
activeEndDate: string;
activeItem: CalendarSides;
activeRange: string;
activeStartDate: string;
calendarAvailable: CalendarSides;
customRange: boolean;
dates: CalendarSides;
dateTitleText: CalendarSides;
frequencyColumnHeader: string;
isCalendarVisible: boolean;
isValidFilter: boolean;
isUserModelChange: boolean;
localTimezone: TZ_MAP_KEYS;
selectedDateText: string;
selectedHour: CalendarSides;
selectedMeridian: CalendarSides;
selectedMinute: CalendarSides;
selectedMonth: CalendarSides;
selectedTimezone: TZ_MAP_KEYS;
selectedYear: CalendarSides;
sides: CALENDAR_SIDES[];
timeItems: TIME_ITEM[];
times: CalendarSides;
timeZones: TZ_MAP_KEYS[];
todayTime: string;
weekDayOptions: string[];
}
export declare type TIME_ITEM = "hour" | "minute" | "meridian";
export declare interface TimeSide {
hour: any[];
minute: any[];
meridian: any[];
}
export declare type TZ_MAP = {
[K in TZ_MAP_KEYS]: string;
};
export declare type TZ_MAP_KEYS = "EST" | "MST" | "PST" | "CET";
export { }