@zenweb/form
Version:
Zenweb Form module
75 lines (74 loc) • 2.13 kB
TypeScript
import { Field } from '../field.js';
import { TypeKeys } from 'typecasts';
export type ChoiceValueType = number | string;
export interface ChoiceType {
/**
* 显示名
*/
label: string;
/**
* 值
*/
value: ChoiceValueType;
/**
* 禁止选择
*/
disabled?: boolean;
}
declare class BaseSelect<T extends TypeKeys> extends Field<T> {
protected _choices: ChoiceType[];
/**
* 设置选择项
*/
choices(choices: (ChoiceValueType | ChoiceType)[]): this;
/**
* 设置选择项,使用指定的 value 和 label
*/
choicesMap(choices: any[], valueKey: string, labelKey: string): this;
/**
* 设置选项,使用对象的 key 和 value
*/
choicesObject(obj: object): this;
/**
* 使用 ts 的 enum 类型作为选择项
*/
choicesEnum<T extends Record<Extract<keyof T, string>, ChoiceValueType>>(enumObj: T): this;
/**
* 是否没有设置选择项
*/
isEmpty(): boolean;
/**
* 检查选择项是否已经设置
*/
assertEmpty(): void;
extra(): {
choices: ChoiceType[];
};
}
export declare class Select<T extends TypeKeys> extends BaseSelect<T> {
clean(data: any): any;
}
export declare class Radio<T extends TypeKeys> extends Select<T> {
}
export declare class Multiple<T extends TypeKeys> extends BaseSelect<T> {
protected _max?: number;
protected _min?: number;
/** 最多可以选择数量 */
max(v: number): this;
/** 最少选择数量 */
min(v: number): this;
extra(): {
choices: ChoiceType[];
} & {
max: number | undefined;
min: number | undefined;
};
clean(data: any): any;
}
export declare class Checkbox<T extends TypeKeys> extends Multiple<T> {
}
export declare const select: <T extends TypeKeys>(valueType: T) => Select<T>;
export declare const radio: <T extends TypeKeys>(valueType: T) => Radio<T>;
export declare const multiple: <T extends TypeKeys>(valueType: T) => Multiple<T>;
export declare const checkbox: <T extends TypeKeys>(valueType: T) => Checkbox<T>;
export {};