flatpickr
Version:
A lightweight, powerful javascript datetime picker
119 lines (118 loc) • 4.39 kB
TypeScript
import { DateOption, Options, ParsedOptions } from "./options";
import { Locale, CustomLocale, key as LocaleKey } from "./locale";
import { RevFormat, Formats, TokenRegex } from "../utils/formatting";
export interface Elements {
element: HTMLElement;
input: HTMLInputElement;
altInput?: HTMLInputElement;
_input: HTMLInputElement;
mobileInput?: HTMLInputElement;
mobileFormatStr?: string;
selectedDateElem?: DayElement;
todayDateElem?: DayElement;
_positionElement: HTMLElement;
weekdayContainer: HTMLDivElement;
calendarContainer: HTMLDivElement;
innerContainer?: HTMLDivElement;
rContainer?: HTMLDivElement;
daysContainer?: HTMLDivElement;
days: HTMLDivElement;
weekWrapper?: HTMLDivElement;
weekNumbers?: HTMLDivElement;
monthNav: HTMLDivElement;
monthsDropdownContainer: HTMLSelectElement;
yearElements: HTMLInputElement[];
monthElements: HTMLSpanElement[];
currentYearElement: HTMLInputElement;
currentMonthElement: HTMLSpanElement;
_hidePrevMonthArrow: boolean;
_hideNextMonthArrow: boolean;
prevMonthNav: HTMLElement;
nextMonthNav: HTMLElement;
timeContainer?: HTMLDivElement;
hourElement?: HTMLInputElement;
minuteElement?: HTMLInputElement;
secondElement?: HTMLInputElement;
amPM?: HTMLSpanElement;
pluginElements: Node[];
}
export interface Formatting {
revFormat: RevFormat;
formats: Formats;
tokenRegex: TokenRegex;
}
export declare type Instance = Elements & Formatting & {
minRangeDate?: Date;
maxRangeDate?: Date;
now: Date;
latestSelectedDateObj?: Date;
_selectedDateObj?: Date;
selectedDates: Date[];
_initialDate: Date;
config: ParsedOptions;
loadedPlugins: string[];
l10n: Locale;
currentYear: number;
currentMonth: number;
isOpen: boolean;
isMobile: boolean;
minDateHasTime: boolean;
maxDateHasTime: boolean;
showTimeInput: boolean;
_showTimeInput: boolean;
changeMonth: (value: number, isOffset?: boolean, fromKeyboard?: boolean) => void;
changeYear: (year: number) => void;
clear: (emitChangeEvent?: boolean, toInitial?: boolean) => void;
close: () => void;
destroy: () => void;
isEnabled: (date: DateOption, timeless?: boolean) => boolean;
jumpToDate: (date?: DateOption, triggerChange?: boolean) => void;
open: (e?: FocusEvent | MouseEvent, positionElement?: HTMLElement) => void;
redraw: () => void;
set: (option: keyof Options | {
[k in keyof Options]?: Options[k];
}, value?: any) => void;
setDate: (date: DateOption | DateOption[], triggerChange?: boolean, format?: string) => void;
toggle: () => void;
pad: (num: string | number) => string;
parseDate: (date: Date | string | number, givenFormat?: string, timeless?: boolean) => Date | undefined;
formatDate: (dateObj: Date, frmt: string) => string;
_handlers: {
event: string;
element: Element;
handler: (e?: Event) => void;
options?: {
capture?: boolean;
};
}[];
_bind: <E extends Element>(element: E | E[], event: string | string[], handler: (e?: any) => void) => void;
_createElement: <E extends HTMLElement>(tag: keyof HTMLElementTagNameMap, className: string, content?: string) => E;
_setHoursFromDate: (date: Date) => void;
_debouncedChange: () => void;
__hideNextMonthArrow: boolean;
__hidePrevMonthArrow: boolean;
_positionCalendar: (customPositionElement?: HTMLElement) => void;
utils: {
getDaysInMonth: (month?: number, year?: number) => number;
};
};
export interface FlatpickrFn {
(selector: Node, config?: Options): Instance;
(selector: ArrayLike<Node>, config?: Options): Instance[];
(selector: string, config?: Options): Instance | Instance[];
defaultConfig: Partial<ParsedOptions>;
l10ns: {
[k in LocaleKey]?: CustomLocale;
} & {
default: Locale;
};
localize: (l10n: CustomLocale) => void;
setDefaults: (config: Options) => void;
parseDate: (date: DateOption, format?: string, timeless?: boolean) => Date | undefined;
formatDate: (date: Date, format: string) => string;
compareDates: (date1: Date, date2: Date, timeless?: boolean) => number;
}
export declare type DayElement = HTMLSpanElement & {
dateObj: Date;
$i: number;
};