@alifd/next
Version:
A configurable component library for web built on React.
476 lines (383 loc) • 8.47 kB
TypeScript
/// <reference types="react" />
import * as React from "react";
export interface ItemProps extends React.HTMLAttributes<HTMLElement> {
/**
* 样式前缀
*/
prefix?: string;
/**
* label 标签的文本
*/
label?: React.ReactNode;
/**
* label 标签布局,通 `<Col>` 组件,设置 span offset 值,如 {span: 8, offset: 16},该项仅在垂直表单有效
*/
labelCol?: {};
/**
* 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol
*/
wrapperCol?: {};
/**
* 自定义提示信息,如不设置,则会根据校验规则自动生成.
*/
help?: React.ReactNode;
/**
* 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 位于错误信息后面
*/
extra?: React.ReactNode;
/**
* 校验状态,如不设置,则会根据校验规则自动生成
*/
validateState?: "error" | "success" | "loading";
/**
* 配合 validateState 属性使用,是否展示 success/loading 的校验状态图标, 目前只有Input支持
*/
hasFeedback?: boolean;
/**
* 自定义内联样式
*/
style?: React.CSSProperties;
/**
* node 或者 function(values)
*/
children?: React.ReactNode | (() => void);
/**
* 单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。
*/
size?: "large" | "small" | "medium";
/**
* 标签的位置
*/
labelAlign?: "top" | "left" | "inset";
/**
* 标签的左右对齐方式
*/
labelTextAlign?: "left" | "right";
/**
* 扩展class
*/
className?: string;
/**
* [表单校验] 不能为空
*/
required?: boolean;
/**
* required 的星号是否显示
*/
asterisk?: boolean;
/**
* required 自定义错误信息
*/
requiredMessage?: string;
/**
* required 自定义触发方式
*/
requiredTrigger?: string | Array<any>;
/**
* [表单校验] 最小值
*/
min?: number;
/**
* [表单校验] 最大值
*/
max?: number;
/**
* min/max 自定义错误信息
*/
minmaxMessage?: string;
/**
* min/max 自定义触发方式
*/
minmaxTrigger?: string | Array<any>;
/**
* [表单校验] 字符串最小长度 / 数组最小个数
*/
minLength?: number;
/**
* [表单校验] 字符串最大长度 / 数组最大个数
*/
maxLength?: number;
/**
* minLength/maxLength 自定义错误信息
*/
minmaxLengthMessage?: string;
/**
* minLength/maxLength 自定义触发方式
*/
minmaxLengthTrigger?: string | Array<any>;
/**
* [表单校验] 字符串精确长度 / 数组精确个数
*/
length?: number;
/**
* length 自定义错误信息
*/
lengthMessage?: string;
/**
* length 自定义触发方式
*/
lengthTrigger?: string | Array<any>;
/**
* 正则校验
*/
pattern?: any;
/**
* pattern 自定义错误信息
*/
patternMessage?: string;
/**
* pattern 自定义触发方式
*/
patternTrigger?: string | Array<any>;
/**
* [表单校验] 四种常用的 pattern
*/
format?: "number" | "email" | "url" | "tel";
/**
* format 自定义错误信息
*/
formatMessage?: string;
/**
* format 自定义触发方式
*/
formatTrigger?: string | Array<any>;
/**
* [表单校验] 自定义校验函数
*/
validator?: () => void;
/**
* validator 自定义触发方式
*/
validatorTrigger?: string | Array<any>;
/**
* 是否修改数据时自动触发校验
*/
autoValidate?: boolean;
}
export class Item extends React.Component<ItemProps, any> {}
interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
onClick?: any;
}
export interface SubmitProps extends HTMLAttributesWeak {
/**
* 按钮的类型
*/
type?: "primary" | "secondary" | "normal";
/**
* 按钮的尺寸
*/
size?: "small" | "medium" | "large";
/**
* 按钮中 Icon 的尺寸,用于替代 Icon 的默认大小
*/
iconSize?:
| "xxs"
| "xs"
| "small"
| "medium"
| "large"
| "xl"
| "xxl"
| "xxxl";
/**
* 当 component = 'button' 时,设置 button 标签的 type 值
*/
htmlType?: "submit" | "reset" | "button";
/**
* 设置标签类型
*/
component?: "button" | "a";
/**
* 设置按钮的载入状态
*/
loading?: boolean;
/**
* 是否为幽灵按钮
*/
ghost?: true | false | "light" | "dark";
/**
* 是否为文本按钮
*/
text?: boolean;
/**
* 是否为警告按钮
*/
warning?: boolean;
/**
* 是否禁用
*/
disabled?: boolean;
/**
* 点击提交后触发
*/
onClick?: (value: {}, errors: {}, field: any) => void;
/**
* 是否校验/需要校验的 name 数组
*/
validate?: boolean | Array<any>;
/**
* 自定义 field (在 Form 内不需要设置)
*/
field?: {};
}
export class Submit extends React.Component<SubmitProps, any> {}
interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
onClick?: any;
}
export interface ResetProps extends HTMLAttributesWeak {
/**
* 按钮的类型
*/
type?: "primary" | "secondary" | "normal";
/**
* 按钮的尺寸
*/
size?: "small" | "medium" | "large";
/**
* 按钮中 Icon 的尺寸,用于替代 Icon 的默认大小
*/
iconSize?:
| "xxs"
| "xs"
| "small"
| "medium"
| "large"
| "xl"
| "xxl"
| "xxxl";
/**
* 当 component = 'button' 时,设置 button 标签的 type 值
*/
htmlType?: "submit" | "reset" | "button";
/**
* 设置标签类型
*/
component?: "button" | "a";
/**
* 设置按钮的载入状态
*/
loading?: boolean;
/**
* 是否为幽灵按钮
*/
ghost?: true | false | "light" | "dark";
/**
* 是否为文本按钮
*/
text?: boolean;
/**
* 是否为警告按钮
*/
warning?: boolean;
/**
* 是否禁用
*/
disabled?: boolean;
/**
* 点击提交后触发
*/
onClick?: () => void;
/**
* 自定义重置的字段
*/
names?: Array<any>;
/**
* 返回默认值
*/
toDefault?: boolean;
/**
* 自定义 field (在 Form 内不需要设置)
*/
field?: {};
}
export class Reset extends React.Component<ResetProps, any> {}
export interface ErrorProps extends React.HTMLAttributes<HTMLElement> {
/**
* 表单名
*/
name?: string | Array<any>;
/**
* 自定义 field (在 Form 内不需要设置)
*/
field?: {};
/**
* 自定义错误渲染, 可以是 node 或者 function(errors, state)
*/
children?: React.ReactNode | (() => void);
}
export class Error extends React.Component<ErrorProps, any> {}
interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
onChange?: any;
}
export interface FormProps extends HTMLAttributesWeak {
/**
* 样式前缀
*/
prefix?: string;
/**
* 内联表单
*/
inline?: boolean;
/**
* 单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。
*/
size?: "large" | "medium" | "small";
/**
* 标签的位置
*/
labelAlign?: "top" | "left" | "inset";
/**
* 标签的左右对齐方式
*/
labelTextAlign?: "left" | "right";
/**
* 经 `new Field(this)` 初始化后,直接传给 Form 即可 用到表单校验则不可忽略此项
*/
field?: any;
/**
* 保存 Form 自动生成的 field 对象
*/
saveField?: () => void;
/**
* 控制第一级 Item 的 labelCol
*/
labelCol?: {};
/**
* 控制第一级 Item 的 wrapperCol
*/
wrapperCol?: {};
/**
* form内有 `htmlType="submit"` 的元素的时候会触发
*/
onSubmit?: () => void;
/**
* 子元素
*/
children?: any;
/**
* 扩展class
*/
className?: string;
/**
* 自定义内联样式
*/
style?: React.CSSProperties;
/**
* 表单数值
*/
value?: {};
/**
* 表单变化回调
*/
onChange?: (values: {}, item: {}) => void;
/**
* 设置标签类型
*/
component?: string | (() => void);
}
export default class Form extends React.Component<FormProps, any> {
static Item: typeof Item;
static Submit: typeof Submit;
static Reset: typeof Reset;
static Error: typeof Error;
}