import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core'; import { SimDateAdapter } from '@ngx-simple/core/datetime'; import { NgClassInterface, SafeAny } from '@ngx-simple/core/types'; /** Function that can generate the extra classes that should be added to a calendar cell. */ export declare type SimCalendarCellClassFunction = (date: D, view: 'month' | 'year' | 'multi-year') => NgClassInterface; /** 表示与单个日历单元格对应的数据的内部类 */ export declare class CalendarCell { value: number; displayValue: string; ariaLabel: string; enabled: boolean; cssClasses: NgClassInterface; compareValue: number; rawValue?: D; constructor(value: number, displayValue: string, ariaLabel: string, enabled: boolean, cssClasses?: NgClassInterface, compareValue?: number, rawValue?: D); } /** 当用户操作触发日历中的日期时触发的事件 */ export interface CalendarUserEvent { value: D; event: Event; cell?: CalendarCell; } export declare class SimCalendarBodyComponent implements OnChanges, OnDestroy { private _elementRef; private _changeDetectorRef; private _renderer; private _ngZone; private _dateAdapter; activeMonth: number; /** 要在表格中显示的单元格 */ rows: CalendarCell[][]; /** 表中的列数 */ numCols: number; /** 所选日期范围的起始值 */ startValue: number; /** 选定日期范围的结束值 */ endValue: number; /** 表中活动单元格的单元格编号 */ activeCell: number; /** 比较范围的开始 */ comparisonStart: number | null; /** 比较范围的结尾 */ comparisonEnd: number | null; /** 预览范围的开始 */ previewStart: number | null; /** 预览范围的结尾 */ previewEnd: number | null; /** 表中对应于今天的值 */ todayValue: number; /** 是否选择范围 */ isRange: boolean; /** 表格中单元格所使用的宽高比(宽度/高度)。 即使在表调整大小时,也将保持该长宽比。 */ cellAspectRatio: number; /** 选择新值时发出 */ readonly selectedValueChange: EventEmitter>; /** 当预览由于用户操作而更改时发出 */ previewChange: EventEmitter>>; /** 单个单元格的宽度 */ _cellWidth: string; /** 单个日期单元格的填充 */ _cellPadding: string; /** * 用于在渲染预览范围时跳过下一个焦点事件。 * 我们需要这样的标记,因为某些浏览器会异步触发焦点事件。 */ private _skipNextFocus; constructor(_elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _renderer: Renderer2, _ngZone: NgZone, _dateAdapter: SimDateAdapter); ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; /** 在微任务队列为空之后,对活动单元进行聚焦 */ _focusActiveCell(movePreview?: boolean): void; /** 本月 */ _isCurrentMonth(cell: CalendarCell): boolean; /** 上一个月 */ _isPreviousMonth(cell: CalendarCell): boolean; /** 下一个月 */ _isNextMonth(cell: CalendarCell): boolean; _isSelected(cell: CalendarCell): boolean; _isActiveCell(rowIndex: number, colIndex: number): boolean; _cellClicked(cell: CalendarCell, event: MouseEvent): void; _isRangeStart(value: number): boolean; /** 获取值是否是主范围的结束 */ _isRangeEnd(value: number): boolean; /** 获取值是否在当前选择的范围内 */ _isInRange(value: number): boolean; /** 获取值是否是比较范围的开始 */ _isComparisonStart(value: number): boolean; /** 获取值是否是比较范围的结束 */ _isComparisonEnd(value: number): boolean; /** 获取值是否在当前比较范围内 */ _isInComparisonRange(value: number): boolean; _isComparisonIdentical(value: number): boolean; /** 获取值是否是预览范围的开始 */ _isPreviewStart(value: number): boolean; /** 获取值是否是预览范围的结束 */ _isPreviewEnd(value: number): boolean; /** 获取值是否在预览范围内 */ _isInPreview(value: number): boolean; /** 该单元格是否是主范围和比较范围之间的起始桥单元 */ _isComparisonBridgeStart(value: number, rowIndex: number, colIndex: number): boolean; /** 单元格是否是主范围和比较范围之间的末端桥单元 */ _isComparisonBridgeEnd(value: number, rowIndex: number, colIndex: number): boolean; /** * 当用户在日历正文中输入一个元素时的事件处理程序(例如,通过将鼠标悬停或聚焦)。 */ private _enterHandler; /** * 事件处理程序,当用户的指针在日历正文中留下一个元素时(例如,悬停或失焦)。 */ private _leaveHandler; /** 查找与DOM节点相对应的CalendarCell */ private _getCellFromElement; }