@qeydar/datepicker
Version:
A comprehensive Date and Time Picker for Angular with Jalali calendar support
152 lines (151 loc) • 8.02 kB
TypeScript
import { ElementRef, OnInit, OnChanges, SimpleChanges, EventEmitter, Renderer2, ChangeDetectorRef, AfterViewInit, QueryList, NgZone, OnDestroy } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormGroup, AbstractControl, ValidationErrors } from '@angular/forms';
import { DateAdapter, JalaliDateAdapter, GregorianDateAdapter } from './date-adapter';
import { CustomLabels, DateRange, Lang_Locale, RangeInputLabels } from './utils/models';
import { DatePickerPopupComponent } from './date-picker-popup/date-picker-popup.component';
import { CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair, HorizontalConnectionPos, VerticalConnectionPos } from '@angular/cdk/overlay';
import { DestroyService, QeydarDatePickerService } from './date-picker.service';
import { CalendarType, DatepickerMode, Placement, RangePartType, ValueFormat } from './utils/types';
import { CustomTemplate } from './utils/template.directive';
import * as i0 from "@angular/core";
export declare class DatePickerComponent implements ControlValueAccessor, OnInit, OnChanges, AfterViewInit, OnDestroy {
fb: FormBuilder;
elementRef: ElementRef;
renderer: Renderer2;
cdref: ChangeDetectorRef;
dpService: QeydarDatePickerService;
destroy$: DestroyService;
ngZone: NgZone;
jalali: JalaliDateAdapter;
gregorian: GregorianDateAdapter;
private injectedDateAdapter;
rtl: boolean;
mode: DatepickerMode;
isRange: boolean;
customLabels: Array<CustomLabels>;
calendarType: CalendarType;
lang: Lang_Locale;
cssClass: string;
footerDescription: string;
rangeInputLabels: RangeInputLabels;
inputLabel: string;
placement: Placement;
disabled: boolean;
isInline: boolean;
showSidebar: boolean;
showToday: boolean;
valueFormat: ValueFormat;
disableInputMask: boolean;
disabledDates: Array<Date | string>;
disabledDatesFilter: (date: Date) => boolean;
disabledTimesFilter: (date: Date) => boolean;
allowEmpty: boolean;
readOnly: boolean;
readOnlyInput: boolean;
dateAdapter: DateAdapter<Date> | null;
set minDate(date: Date | string | null);
get minDate(): Date;
set maxDate(date: Date | string | null);
get maxDate(): Date;
set format(value: string);
get format(): string;
onFocus: EventEmitter<any>;
onBlur: EventEmitter<any>;
onChangeValue: EventEmitter<any>;
onOpenChange: EventEmitter<boolean>;
datePickerInput: ElementRef;
rangePickerInputs?: QueryList<ElementRef<HTMLInputElement>>;
datePickerPopup: DatePickerPopupComponent;
templates: QueryList<CustomTemplate>;
origin: CdkOverlayOrigin;
overlayPositions: ConnectionPositionPair[];
currentPositionX: HorizontalConnectionPos;
currentPositionY: VerticalConnectionPos;
document: Document;
isOpen: boolean;
selectedDate: Date | null;
selectedStartDate: Date | null;
selectedEndDate: Date | null;
form: FormGroup;
currentDateAdapter: DateAdapter<Date>;
activeInput: 'start' | 'end' | '';
hideStateHelper: boolean;
isInternalChange: boolean;
lastEmittedValue: any;
showTimePicker: boolean;
timeDisplayFormat: string;
documentClickListener: (event: MouseEvent) => void;
private _minDate;
private _maxDate;
private _format;
get valueAdapter(): JalaliDateAdapter | GregorianDateAdapter;
constructor(fb: FormBuilder, elementRef: ElementRef, renderer: Renderer2, cdref: ChangeDetectorRef, dpService: QeydarDatePickerService, destroy$: DestroyService, ngZone: NgZone, jalali: JalaliDateAdapter, gregorian: GregorianDateAdapter, doc: Document, injectedDateAdapter: DateAdapter<Date>);
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
initializeComponent(doc: Document): void;
initialize(): void;
setupAfterViewInit(): void;
setDateAdapter(): void;
setupFormControls(): void;
handleChanges(changes: SimpleChanges): void;
handleDocumentClick(event: MouseEvent): void;
onInputChange(value: string, inputType?: 'start' | 'end'): void;
handleRangeInputChange(value: string, inputType?: 'start' | 'end'): void;
handleSingleInputChange(value: string): void;
emitValueIfChanged(): void;
prepareValueForEmission(): any;
onDateSelected(date: Date): void;
handleRangeDateSelection(date: Date): void;
handleSingleDateSelection(date: Date): void;
onDateRangeSelected(dateRange: DateRange): void;
close(): void;
open(): void;
focus(): void;
getInput(partType?: RangePartType): HTMLInputElement | undefined;
getPlaceholder(inputType?: string): string;
clampDate(date: Date): Date;
clampDateTime(adjustedDate: Date, date: Date): Date;
findNearestValidDate(date: Date): Date;
validateAndNormalizeTime(date: Date): {
isValid: boolean;
normalizedDate: Date | null;
};
parseDisabledDates(): Date[];
isDateDisabled(date: Date): boolean;
isTimeDisabled(date: Date): boolean;
dateFormatValidator(control: AbstractControl): ValidationErrors | null;
getFormatForMode(): string;
setPlacement(placement: Placement): void;
onPositionChange(position: ConnectedOverlayPositionChange): void;
onFocusout(event: FocusEvent): void;
onInputBlur(inputType: 'start' | 'end' | null, event: Event): void;
getInputValue(inputType: 'start' | 'end' | null): string | undefined;
validateAndCorrectInput(value: string): string;
handleCorrectedValue(inputType: 'start' | 'end' | null, correctedValue: string): void;
handleRangeCorrectedValue(inputType: 'start' | 'end' | null, correctedValue: string): void;
handleSingleCorrectedValue(correctedValue: string): void;
onFocusInput(inputType: 'start' | 'end' | null, event: Event): void;
toggleDatePicker(inputType: 'start' | 'end' | null, event: Event): void;
onInputKeydown(event: KeyboardEvent): void;
updateInputValue(): void;
updateDatePickerPopup(): void;
convertDateToFormat(date: Date, fromType: CalendarType): any;
onChange: any;
onTouch: any;
writeValue(value: any): void;
resetValues(): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
setupActiveInputSubscription(): void;
setupMouseDownEventHandler(): void;
parseDateValue(value: any): Date | null;
parseValueFromFormat(value: string | Date, targetAdapter: DateAdapter<Date>): Date | null;
parseIncomingValue(value: any): Date | null;
hasTimeComponent(format: string): boolean;
extractTimeFormat(format: string): string;
extractDateFormat(format: string): string;
static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent, [null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "qeydar-date-picker", never, { "rtl": "rtl"; "mode": "mode"; "isRange": "isRange"; "customLabels": "customLabels"; "calendarType": "calendarType"; "lang": "lang"; "cssClass": "cssClass"; "footerDescription": "footerDescription"; "rangeInputLabels": "rangeInputLabels"; "inputLabel": "inputLabel"; "placement": "placement"; "disabled": "disabled"; "isInline": "isInline"; "showSidebar": "showSidebar"; "showToday": "showToday"; "valueFormat": "valueFormat"; "disableInputMask": "disableInputMask"; "disabledDates": "disabledDates"; "disabledDatesFilter": "disabledDatesFilter"; "disabledTimesFilter": "disabledTimesFilter"; "allowEmpty": "allowEmpty"; "readOnly": "readOnly"; "readOnlyInput": "readOnlyInput"; "dateAdapter": "dateAdapter"; "minDate": "minDate"; "maxDate": "maxDate"; "format": "format"; }, { "onFocus": "onFocus"; "onBlur": "onBlur"; "onChangeValue": "onChangeValue"; "onOpenChange": "onOpenChange"; }, ["templates"], never, true>;
}