@zenweb/form
Version:
Zenweb Form module
71 lines (70 loc) • 2.29 kB
TypeScript
import dayjs from 'dayjs';
import { OpUnitType } from 'dayjs';
import { Field } from '../field.js';
type StringKeys = 'string' | '!string' | '?string' | '~string';
export type DatetimeKeys = 'date' | '~date' | '!date' | '?date' | StringKeys;
/**
* 日期类型 - 默认返回全部日期+时间,可以使用 startOf 控制输出
*/
export declare class Datetime<T extends DatetimeKeys> extends Field<T> {
protected _of?: OpUnitType;
/**
* 设置保留的精度
*/
of(unitOfTime: OpUnitType): this;
extra(): {
of: dayjs.OpUnitType | undefined;
};
protected _clean(data: any): dayjs.Dayjs | undefined;
clean(data: any): Date | undefined;
}
/**
* 日期类型 - 只保留 年月日
*/
export declare class _Date<T extends DatetimeKeys> extends Datetime<T> {
_of: OpUnitType;
option: {
type: string;
};
}
export declare class DateRange<T extends DatetimeKeys> extends Field<`${T}[]`> {
protected _of?: OpUnitType;
private _start?;
private _end?;
protected _format: string;
/**
* 设置输出格式,在使用 `string` 类型有效
* - 默认: `YYYY-MM-DD`
*/
format(fmt: string): this;
/**
* 设置保留精度
* - 默认: `day`
*/
of(unitOfTime: OpUnitType): this;
/**
* 设置开始日期,如果不设置则不限制
*/
start(date: Date): this;
/**
* 设置结束日期,如果不设置则不限制
*/
end(date: Date): this;
extra(): {
of: dayjs.OpUnitType | undefined;
start: Date | undefined;
end: Date | undefined;
};
protected _clean(data: any): dayjs.Dayjs | undefined;
clean(data: any): (string | undefined)[] | (Date | undefined)[] | undefined;
}
export declare class Time<T extends StringKeys> extends Field<T> {
protected _format: string;
format(fmt: string): this;
clean(data: any): string | undefined;
}
export declare const datetime: <T extends DatetimeKeys>(valueType: T) => Datetime<T>;
export declare const date: <T extends DatetimeKeys>(valueType: T) => _Date<T>;
export declare const dateRange: <T extends DatetimeKeys>(valueType: `${T}[]`) => DateRange<T>;
export declare const time: <T extends StringKeys>(valueType: T) => Time<T>;
export {};