UNPKG

@rdkmaster/jigsaw-labs

Version:

Jigsaw, the next generation component set for RDK

175 lines (174 loc) 4.94 kB
import { EventEmitter, OnInit } from "@angular/core"; import { ControlValueAccessor } from "@angular/forms"; import { AbstractJigsawComponent } from "../common"; import { TimeGr, TimeWeekStart } from "../../service/time.service"; import { GrItem, Shortcut } from "../time/time"; import { WeekTime } from "../../service/time.types"; /** * 用于在界面上提供一个时间范围的选择,支持多种时间粒度切换,支持年月日时分秒及其各种组合,如下是一些常见的场景及其建议: * * - 如果需要选择的是一个时刻,则请使用`JigsawTime`; * - 如果你需要的是一个日历的功能,那请参考[这个demo]($demo=table/calendar),通过表格+渲染器的方式来模拟; * - 时间选择器常常是收纳到下拉框中以解决视图空间,Jigsaw是通过`JigsawComboSelect`来组合使用的, * 参考[这个demo]($demo=time/with-combo-select); * * 时间控件是对表单友好的,你可以给时间控件编写表单校验器,参考[这个demo]($demo=form/template-driven)。 * * $demo = range-time/full * $demo = range-time/basic */ export declare class JigsawRangeTime extends AbstractJigsawComponent implements ControlValueAccessor, OnInit { valid: boolean; private _timeStart; /** * @internal */ _$gr: TimeGr; /** * 参考`JigsawTime.gr` * * $demo = range-time/gr * * @return {TimeGr | string} */ gr: TimeGr | string; /** * 参考`JigsawTime.grChange` * * $demo = range-time/gr * * @type {EventEmitter<TimeGr>} */ grChange: EventEmitter<TimeGr>; /** * @internal */ _$dateChange(key: string, value: WeekTime): void; private _beginDate; /** * 时间段的开始时刻,在双绑模式下,更新这个值可以让时间控件选中对应的时刻。 * * $demo = range-time/basic */ beginDate: WeekTime; private _endDate; /** * 时间段的结束时刻,在双绑模式下,更新这个值可以让时间控件选中对应的时刻。 * * $demo = range-time/basic * * @return {WeekTime} */ endDate: WeekTime; /** * @internal */ _$limitStart: WeekTime; /** * 参考`JigsawTime.limitStart` * * $demo = range-time/limit-start * $demo = range-time/limit-end * * @return {WeekTime} */ limitStart: WeekTime; /** * @internal */ _$limitEnd: WeekTime; /** * 参考`JigsawTime.limitEnd` * * $demo = range-time/limit-start * $demo = range-time/limit-end * * @return {WeekTime} */ limitEnd: WeekTime; /** * 参考`JigsawTime.weekStart` * * $demo = range-time/week-start */ weekStart: TimeWeekStart | string; /** * 参考`JigsawTime.grItems` * * $demo = range-time/gr-items */ grItems: GrItem[]; /** * 参考`JigsawTime.refreshInterval` * * $demo = range-time/refresh-interval */ refreshInterval: number; /** * 参考`JigsawTime.recommendedBegin` * * $demo = range-time/recommended */ recommendedBegin: WeekTime; /** * 参考`JigsawTime.recommendedEnd` * * $demo = range-time/recommended */ recommendedEnd: WeekTime; /** * 参考`JigsawTime.recommendedLabel` * * $demo = range-time/recommended */ recommendedLabel: String; /** * 当用户选择时间时,Jigsaw发出此事件。 * * $demo = time/with-combo-select * * @type {EventEmitter<any>} */ change: EventEmitter<any>; /** * 当开始时间被用户切换之后,Jigsaw会发出此事件。 * * $demo = range-time/basic * * @type {EventEmitter<WeekTime>} */ beginDateChange: EventEmitter<WeekTime>; /** * 当结束时间被用户切换之后,Jigsaw会发出此事件。 * * $demo = range-time/basic * * @type {EventEmitter<WeekTime>} */ endDateChange: EventEmitter<WeekTime>; /** * @internal */ _$shortcuts: Shortcut[]; /** * @internal */ _$endTimeLimitEnd: WeekTime; private _startTimeLimitEnd; private _startTimeLimitStart; ngOnInit(): void; private _init(); private _calculateLimitEnd(); private static _calculateLimitEnd(startDate, span, gr); private _getShortcuts(); /** * @internal */ _$grChange(value: TimeGr): void; private _changeShortcut(selectedShortcut); private _handleWeekSelect(date); private _propagateChange; writeValue(value: any): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; }