ui-lib/lib/ui/date.d.ts

134 lines
4.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 创建或转换日期选择框
* @param min 最小可选日期
* @param max 最大可选日期
* @param element 转换该元素为日期选择框
* @returns 返回创建或转换的日期选择框
*/
export function createDateInput(min?: string, max?: string, element?: HTMLInputElement): HTMLInputElement;
/**
* 将日期转换成 yyyy-MM-dd 格式的字符串
* @param dt 日期值
* @param local 是否视日期为本地时间
*/
export function toDateValue(dt: Date, local?: boolean): string;
/**
* 格式化日期字符串
* @param date 要格式化的日期值<br/><br/>
* 支持以下几种数据类型<br/><br/>
* `"2024-01-26"`<br/>
* `"1/26/2024"`<br/>
* `"638418240000000000"`<br/>
* `new Date('2024-01-26')`<br/>
* @returns 格式化为 M/d/yyyy 的日期字符串
*/
export function formatDate(date: Date | number | string, formatter?: string): string;
/**
* 设置显示日期
* @param element 要设置显示日期的元素
* @param val 日期值,支持格式参见 {@linkcode formatDate}
* @param formatter 日期格式化字符串(仅设置显示元素时调用)
*/
export function setDateValue(element: HTMLElement, val: Date | number | string, formatter?: string): void;
/**
* 从日期选择框获取日期值
* @param element 要获取的日期选择框
* @param formatter 自定义格式化函数,传入参数为 `Date` 类型
* @returns 默认返回日期 `ticks` 的字符串
*/
export function getDateValue(element: HTMLInputElement, formatter?: string | ((date: Date) => string)): string;
/** 日期选择框类 */
export class DateSelector {
/**
* 把父容器下所有匹配 `input[data-type="date"]` 的元素修改为统一的日期选择框<br/><br/>
* 解析的属性为 `id`, `class`, `data-min`, `data-max`, `disabled`
* @param dom 父元素
* @param trigger 日期设置事件触发函数(上下文为触发设置日期的 `DateSelector` 实例)
* @example
* HTML:
* ```html
* <input id="dateFrom" data-type="date" data-min="1980-01-01"/>
* ```
* js:
* ```js
* const libUI = window['lib-ui'];
* const DateSelector = libUI.DateSelector;
* const formatDate = libUI.formatDate;
*
*
* // 解析 document.body 下所有符合条件的元素,转换为日期选择框,第二个参数可选
* DateSelector.resolve(document.body, function (date) {
* console.log(`element(#${this.element.id}), date changed to: ${formatDate(date)}`);
* // 当日期选择改变时控制台将会输出element(#dateFrom), date changed to: 1/30/2024
* });
*
*
* // 在其他地方调用时
* const value = document.querySelector('#dateFrom').value;
* console.log(`dateFrom.value = '${value}', formatted: '${formatDate(value)}'`);
* // 控制台会输出dateFrom.value = '2024-01-30', formatted: '1/30/2024'
* ```
*/
static resolve(dom?: HTMLElement, trigger?: (this: DateSelector, date: Date) => void): HTMLElement;
/**
* 日期选择框构造函数
* @param opts 日期选项参数
*/
constructor(opts: {
/** 最小可选择日期 */
minDate?: string,
/** 最大可选择日期 */
maxDate?: string,
/** 是否启用 */
enabled?: boolean,
/**
* 自定义格式化函数,用于获取日期值时调用
* @param date 日期值
* @returns 返回格式化的值
*/
valueFormatter?: (date: Date) => any
});
/**
* 创建或转换日期选择框元素
* @param element 转换该元素为日期选择框
* @returns 返回创建或转换的日期选择元素
*/
create(element?: HTMLInputElement): HTMLInputElement;
/** 获取日期选择框元素 */
get element(): HTMLInputElement;
/** 获取日期选择框是否启用 */
get enabled(): boolean;
/** 设置日期选择框启用状态 */
set enabled(flag: boolean);
/** 获取设置的日期值,或经过格式化函数返回的值 */
get value(): Date | any;
/** 设置日期值,支持的格式参见 {@linkcode formatDate} */
set value(val: Date | number | string);
/** 获取最小可选择日期 */
get minDate(): string;
/** 设置最小可选择日期 */
set minDate(date: string);
/** 获取最大可选择日期 */
get maxDate(): string;
/** 设置最大可选择日期 */
set maxDate(date: string);
/**
* 日期发生变化时触发的事件
* @param date 日期值,或者经自定义参数中格式化函数格式后的值
* @eventProperty
*/
onDateChanged?: (this: DateSelector, date: Date | any) => void;
}