import { FactoryProvider, OnDestroy } from '@angular/core'; import { SimDateAdapter } from '@ngx-simple/core/datetime'; import { SafeAny } from '@ngx-simple/core/types'; import { Observable } from 'rxjs'; /** 表示日期范围的类 */ export declare class DateRange { /** 范围的开始日期 */ readonly start: D | null; /** 范围的结束日期 */ readonly end: D | null; constructor( /** 范围的开始日期 */ start: D | null, /** 范围的结束日期 */ end: D | null); } /** * 如果传入了 `DateRange`,则有条件地选择日期类型 */ export declare type ExtractDateTypeFromSelection = T extends DateRange ? D : NonNullable; /** 日期选择模型的选择发生更改时发出的事件 */ export interface DateSelectionModelChange { /** 选择的新值 */ selection: S; /** 触发更改的对象 */ source: unknown; } /** 包含日期选择的选择模型 */ export declare abstract class SimDateSelectionModel> implements OnDestroy { /** 当前选择 */ readonly selection: SafeAny; protected _adapter: SimDateAdapter; private _selectionChanged; /** 选择发生变化时发出事件 */ selectionChanged: Observable>; protected constructor( /** 当前选择 */ selection: SafeAny, _adapter: SimDateAdapter); /** * 更新当前选择的模型 * @param value 应该分配的新选择 * @param source 触发选择更改的对象 */ updateSelection(value: S, source: unknown): void; ngOnDestroy(): void; protected _isValidDateInstance(date: D): boolean; /** 向当前选择添加日期 */ abstract add(date: D | null): void; /** 检查当前选择是否有效 */ abstract isValid(): boolean; /** 检查当前选择是否完成 */ abstract isComplete(): boolean; } /** 包含单个日期的选择模型 */ export declare class SimSingleDateSelectionModel extends SimDateSelectionModel { constructor(adapter: SimDateAdapter); /** * 向当前选择添加日期。在单个日期选择的情况下,添加的date简单地覆盖了之前的选择 */ add(date: D | null): void; /** 检查当前选择是否有效 */ isValid(): boolean; /** * 检查当前选择是否完成。在单个日期选择的情况下,如果当前选择不为空,则此为真。 */ isComplete(): boolean; } /** 包含日期范围的选择模型 */ export declare class SimRangeDateSelectionModel extends SimDateSelectionModel, D> { constructor(adapter: SimDateAdapter); /** * 向当前选择添加日期。在选择日期范围时,添加的date将填充范围中的下一个“null”值。 * 如果开始和结束都已经有一个日期,选择被重置,使给定的日期是新的“开始”和“结束”是空的。 */ add(date: D | null): void; /** 检查当前选择是否有效 */ isValid(): boolean; /** * 检查当前选择是否完成。在日期范围选择的情况下,如果当前选择的`start`和`end`是非空的,则此为真。 */ isComplete(): boolean; } export declare function SIM_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent: SimSingleDateSelectionModel, adapter: SimDateAdapter): SimSingleDateSelectionModel; /** 用于为组件提供单个选择模型 */ export declare const SIM_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider; export declare function SIM_RANGE_DATE_SELECTION_MODEL_FACTORY(parent: SimSingleDateSelectionModel, adapter: SimDateAdapter): SimSingleDateSelectionModel | SimRangeDateSelectionModel; /** Used to provide a range selection model to a component. */ export declare const SIM_RANGE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider;