import { DoCheck, ElementRef, InjectionToken, Injector, OnInit } from '@angular/core'; import { FormGroupDirective, NgControl, NgForm, ValidatorFn } from '@angular/forms'; import { CanUpdateErrorStateCtor, ErrorStateMatcher } from '@ngx-simple/core/common-behaviors'; import { SimDateAdapter } from '@ngx-simple/core/datetime'; import { DateRange, DateSelectionModelChange, SimDateSelectionModel } from './date-selection-model'; import { SimDatepickerInputBase } from './datepicker-input-base'; /** 可用于过滤日历中日期的功能 */ export declare type DateFilterFn = (date: D | null) => boolean; /** 用于包裹`simStartDate`和`simEndDate`的父组件。 */ export interface DateRangeInputParent { id: string; format: string; picker: string; min: D | null; max: D | null; focusedInput: DateRangeInputPartBase; dateFilter: DateFilterFn; _startInput: DateRangeInputPartBase; _endInput: DateRangeInputPartBase; _groupDisabled: boolean; _handleChildValueChange: () => void; _openDatePicker: () => void; } /** 用于为`simStartDate`和`simEndDate`提供sim-date-range-input组件,没有循环依赖性。 */ export declare const SIM_DATE_RANGE_INPUT_PARENT: InjectionToken>; /** 可以在sim-date-range-input内部投影的各个`simStartDate`和`simEndDate`的基类 */ declare abstract class DateRangeInputPartBase extends SimDatepickerInputBase> implements OnInit, DoCheck { _rangeInput: DateRangeInputParent; private _injector; _defaultErrorStateMatcher: ErrorStateMatcher; parentForm: NgForm; parentFormGroup: FormGroupDirective; ngControl: NgControl; protected abstract _validator: ValidatorFn | null; format: string; picker: string; constructor(_rangeInput: DateRangeInputParent, elementRef: ElementRef, _injector: Injector, _defaultErrorStateMatcher: ErrorStateMatcher, dateAdapter: SimDateAdapter, parentForm: NgForm, parentFormGroup: FormGroupDirective); abstract updateErrorState(): void; ngOnInit(): void; ngDoCheck(): void; /** 获取输入是否为空 */ isEmpty(): boolean; /** 聚焦输入框 */ focus(): void; /** 处理输入上的focus事件 */ _onFocus(): void; _registerModel(model: SimDateSelectionModel, D>): void; _removeValue(): void; /** 从date-range-input获取最小日期 */ _getMinDate(): D; /** 从date-range-input获取最大日期 */ _getMaxDate(): D; /** 从date-range-input获取过滤方法 */ _getDateFilter(): DateFilterFn; protected abstract _assignValueToModel(value: D | null): void; protected abstract _getValueFromModel(modelValue: DateRange): D | null; protected _openPopup(): void; protected _outsideValueChanged: () => void; } declare const _DateRangeInputBase: CanUpdateErrorStateCtor & typeof DateRangeInputPartBase; export declare class SimStartDateDirective extends _DateRangeInputBase { protected _validator: ValidatorFn | null; constructor(_rangeInput: DateRangeInputParent, elementRef: ElementRef, injector: Injector, defaultErrorStateMatcher: ErrorStateMatcher, dateAdapter: SimDateAdapter, parentForm: NgForm, parentFormGroup: FormGroupDirective); protected _getValueFromModel(modelValue: DateRange): D; protected _assignValueToModel(value: D | null): void; protected _formatValue(value: D | null): void; protected _canEmitChangeEvent: (event: DateSelectionModelChange>) => boolean; private _startValidator; } export declare class SimEndDateDirective extends _DateRangeInputBase { protected _validator: ValidatorFn | null; constructor(_rangeInput: DateRangeInputParent, elementRef: ElementRef, injector: Injector, defaultErrorStateMatcher: ErrorStateMatcher, dateAdapter: SimDateAdapter, parentForm: NgForm, parentFormGroup: FormGroupDirective); protected _getValueFromModel(modelValue: DateRange): D; protected _assignValueToModel(value: D | null): void; protected _canEmitChangeEvent: (event: DateSelectionModelChange>) => boolean; _onKeydown(event: KeyboardEvent): void; private _endValidator; } export {};