@qeydar/datepicker
Version:
A comprehensive Date and Time Picker for Angular with Jalali calendar support
124 lines (123 loc) • 5.47 kB
TypeScript
/**
* Time Picker Component
* A customizable time picker that supports 12/24 hour formats, seconds, and multiple locales.
*
* Features:
* - 12/24 hour format
* - Optional seconds
* - Localization support
* - String or Date value types
* - Min/Max time validation
* - Custom styling
*/
import { ElementRef, OnInit, EventEmitter, OnDestroy, ChangeDetectorRef, OnChanges, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormGroup } from '@angular/forms';
import { CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { Lang_Locale } from '../utils/models';
import { QeydarDatePickerService } from '../date-picker.service';
import { DateAdapter, GregorianDateAdapter, JalaliDateAdapter } from '../date-adapter';
import { TimeConfig, TimeFormat, TimeValueType } from '../utils/types';
import * as i0 from "@angular/core";
export declare class TimePickerComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {
fb: FormBuilder;
elementRef: ElementRef;
cdref: ChangeDetectorRef;
datePickerService: QeydarDatePickerService;
jalaliAdapter: JalaliDateAdapter;
gregorianAdapter: GregorianDateAdapter;
placeholder?: string;
rtl: boolean;
placement: 'left' | 'right';
minTime?: string;
maxTime?: string;
lang: Lang_Locale;
valueType: TimeValueType;
cssClass: string;
showIcon: boolean;
dateAdapter: DateAdapter<Date>;
inline: boolean;
disableInputMask: boolean;
disabled: boolean;
disabledTimesFilter: (date: Date) => boolean;
allowEmpty: boolean;
readOnly: boolean;
readOnlyInput: boolean;
set displayFormat(value: string);
get displayFormat(): string;
set selectedDate(date: Date);
get selectedDate(): Date;
timeChange: EventEmitter<string | Date>;
openChange: EventEmitter<boolean>;
timePickerInput: ElementRef<HTMLInputElement>;
popupWrapper: ElementRef<HTMLDivElement>;
timeFormat: TimeFormat;
private _displayFormat;
private _value;
private _selectedDate;
private onChange;
private onTouched;
private timeoutId;
showSeconds: boolean;
hours: number[];
minutes: number[];
seconds: number[];
periods: string[];
selectedTime: TimeConfig;
isOpen: boolean;
form: FormGroup;
origin: CdkOverlayOrigin;
overlayPositions: import("@angular/cdk/overlay").ConnectionPositionPair[];
constructor(fb: FormBuilder, elementRef: ElementRef, cdref: ChangeDetectorRef, datePickerService: QeydarDatePickerService, jalaliAdapter: JalaliDateAdapter, gregorianAdapter: GregorianDateAdapter);
ngOnInit(): void;
ngOnDestroy(): void;
ngOnChanges(changes: SimpleChanges): void;
initializeForm(): void;
initializeLocale(): void;
updateLocale(): void;
setupInputSubscription(): void;
updateHourRange(): void;
formatTime(date?: Date): string;
parseTimeString(value: string | Date): void;
get value(): Date | string | null;
set value(val: Date | string | null);
updateFromValue(value: Date | string | null): void;
updateFromDate(date: Date | null): void;
resetSelection(): void;
writeValue(value: Date | string | null): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
handleKeydown(event: KeyboardEvent): void;
handleTimeInput(): void;
handleDocumentClick: (event: MouseEvent) => void;
onFocusInput(): void;
toggleTimePicker(event: Event): void;
open(): void;
close(): void;
selectHour(hour: number): void;
selectMinute(minute: number): void;
selectSecond(second: number): void;
selectPeriod(period: string): void;
selectNow(): void;
save(close?: boolean): void;
validateAndUpdateTime(value: string): void;
isHourDisabled(hour: number): boolean;
isMinuteDisabled(minute: number): boolean;
isSecondDisabled(second: number): boolean;
isTimeDisabled(testDate: Date): boolean;
validateAndNormalizeTime(date: Date): {
isValid: boolean;
normalizedDate: Date | null;
};
private isFullHourDisabled;
private isFullMinuteDisabled;
createDateWithTime(config: TimeConfig): Date;
updateDateFromSelection(): Date;
updateTimeDisplay(): void;
getTimeFormatFromDisplayFormat(format: string): '12' | '24';
scrollToTime(): Promise<void>;
scrollToSelectedItem(id: string, behavior?: ScrollBehavior): Promise<boolean>;
cleanupTimeouts(): void;
onPositionChange(position: ConnectedOverlayPositionChange): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerComponent, "qeydar-time-picker", never, { "placeholder": "placeholder"; "rtl": "rtl"; "placement": "placement"; "minTime": "minTime"; "maxTime": "maxTime"; "lang": "lang"; "valueType": "valueType"; "cssClass": "cssClass"; "showIcon": "showIcon"; "dateAdapter": "dateAdapter"; "inline": "inline"; "disableInputMask": "disableInputMask"; "disabled": "disabled"; "disabledTimesFilter": "disabledTimesFilter"; "allowEmpty": "allowEmpty"; "readOnly": "readOnly"; "readOnlyInput": "readOnlyInput"; "displayFormat": "displayFormat"; "selectedDate": "selectedDate"; }, { "timeChange": "timeChange"; "openChange": "openChange"; }, never, never, true>;
}