@rdkmaster/jigsaw-labs
Version:
Jigsaw, the next generation component set for RDK
175 lines (174 loc) • 4.94 kB
TypeScript
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;
}