From 01fdcd2ca5f02782d489812529d92559dafc8ec8 Mon Sep 17 00:00:00 2001 From: youluna Date: Sun, 29 Sep 2019 18:00:58 +0800 Subject: [PATCH] fix(Typescript): add field --- scripts/build/export-api-schema.js | 6 +- types/checkbox/index.d.ts | 2 +- types/field/index.d.ts | 260 +---------------------------- types/index.d.ts | 2 +- 4 files changed, 15 insertions(+), 255 deletions(-) diff --git a/scripts/build/export-api-schema.js b/scripts/build/export-api-schema.js index c7be893dec..4a369fe756 100644 --- a/scripts/build/export-api-schema.js +++ b/scripts/build/export-api-schema.js @@ -83,8 +83,10 @@ export default ${apiInfo.name}; ); }); - // hack Field - entries.push('export const Field: any;'); + // hack Field / Shell / Typography + entries.push(`export { default as Field } from './field';`); + entries.push(`export { default as Shell } from './shell';`); + entries.push(`export { default as Typography } from './typography';`); fs.writeFileSync(entriesPath, entries.join('')); }; diff --git a/types/checkbox/index.d.ts b/types/checkbox/index.d.ts index 5f37b426a1..ab6baca2a0 100644 --- a/types/checkbox/index.d.ts +++ b/types/checkbox/index.d.ts @@ -54,7 +54,7 @@ export interface GroupProps extends HTMLAttributesWeak, CommonProps { /** * 选中值改变时的事件 */ - onChange?: (value: Array | Array, e: any) => void; + onChange?: (value: Array, e: any) => void; /** * 子项目的排列方式 diff --git a/types/field/index.d.ts b/types/field/index.d.ts index d3e0397d4b..6b56f28d01 100644 --- a/types/field/index.d.ts +++ b/types/field/index.d.ts @@ -1,272 +1,30 @@ /// -import * as React from 'react'; +import { ValidateResults, FieldOption } from '@alifd/field'; +import innerField from '@alifd/field'; -type FieldOption = { - /** - * 所有组件的change都会到达这里[setValue不会触发该函数] - */ - onChange?: (name: string, value: any) => void; - - /** - * 是否翻译init(name)中的name(getValues会把带.的字符串转换成对象) - * @default false - */ - parseName?: boolean; - - /** - * 仅建议PureComponent的组件打开此强制刷新功能,会带来性能问题(500个组件为例:打开的时候render花费700ms, 关闭时候render花费400ms) - * @default false - */ - forceUpdate?: boolean; - - /** - * field.validate的时候滚动到第一个出错的组件 (默认false, 1.0版本会改成true) - * @default false - */ - scrollToFirstError?: boolean; - - /** - * 自动删除(remove) Unmout 元素, getValues不会出现冗余数据 - * @default false - */ - autoUnmount?: boolean; - - /** - * 强制重置数据(设置所有数据为undefined,业务组件需要自己支持value=undefined情况清空数据)(版本要求>next@0.15) (1.0版本会改成true) - * @default false - */ - deepReset?: boolean; -}; - -type InitResult = { - id: string; - value: T; - onChange(value: T): void; -}; - -type InitResult2 = { - id: string; - value: T; - onChange(value: T, extra: T2): void; -}; - -type Rule = { - /** - * 不能为空 (不能和pattern同时使用) - * @default true - */ - required?: boolean; - - /** - * 出错时候信息 - */ - message?: string; - - /** - * 被校验数据类型(注意 type:'number' 表示数据类型为Number,而不是字符串形式的数字,字符串形式的数字请用pattern:/^[0-9]*$/) String/Array/url/email/... - */ - type?: - | 'string' - | 'number' - | 'boolean' - | 'method' - | 'regexp' - | 'integer' - | 'float' - | 'array' - | 'object' - | 'enum' - | 'date' - | 'url' - | 'hex' - | 'email' - | string; - - /** - * 校验正则表达式 - */ - pattern?: RegExp; - - /** - * 长度校验,如果max、mix混合配置,len的优先级最高 - */ - len?: number; - - /** - * 字符最小长度 - */ - min?: number; - - /** - * 字符最大长度 - */ - max?: number; - - /** - * 是否进行空白字符校验(true进行校验) - */ - whitespace: boolean; - - /** - * 自定义校验,(校验成功的时候不要忘记执行 callback(),否则会校验不返回) - */ - validator: ( - rule: Rule, - value: string | number | object | boolean | Date | null, - callback: (error?: string) => void - ) => void; - - /** - * 触发校验的事件名称 - */ - trigger: 'onChange' | 'onBlur' | string; -}; - -type InitOption = { - /** - * 组件值的属性名称,如 Checkbox 的是 checked,Input是 value - */ - valueName?: string; - - /** - * 组件初始值(组件第一次render的时候才会读取,后面再修改此值无效),类似defaultValue - */ - initValue?: T; - - /** - * 触发数据变化的事件名称 - */ - trigger?: string | 'onChange' | 'onBlur'; - - /** - * 校验规则 - */ - rules?: Rule[] | Rule; - - /** - * 组件自定义的事件可以写在这里,其他会透传(小包版本^0.3.0支持,大包^0.7.0支持) - */ - props?: object; - - /** - * 自定义从onChange事件中获取value的方式,一般不需要设置. 详细用法查看demo 自定义数据获取 参数顺序和组件是完全一致的 - */ - getValueFromEvent?: (eventArgs: object) => T; -}; - -export default class Field { +export * from '@alifd/field'; +export default class Field extends innerField{ /** * * @param contextComp 传入调用class的this * @param options 一些事件配置 */ - constructor(contextComp: T, options?: FieldOption); - - /** - * 初始化每个组件 - */ - init(name: string, option?: InitOption): InitResult; - - /** - * 初始化每个组件 - */ - init(name: string, option?: InitOption): InitResult2; - - /** - * - * 重置一组输入控件的值、清空校验, 第二个参数控制是否回到defaultValue - * @param names 重置的字段名 - * @param backToDefault - */ - reset(names?: String[], backToDefault?: InitOption): void; - - /** - * 删除某一个或者一组控件的数据,删除后与之相关的validate/value都会被清空 - * @param name 字段名称 - */ - remove(name: string | string[]): void; + constructor(contextComp: any, options?: FieldOption); /** * 校验 - * @param names - * @param options * @param callback */ - validate(callback?: (errors: object[], values: T) => void): void; + validate(callback?: (errors: object[], values: ValidateResults) => void): void; /** * 校验 * @param names - * @param options * @param callback */ - validate( - names?: string[], - options?: object, - callback?: (errors: object[], values: T) => void + validate( + names?: string[] | string, + callback?: (errors: object[], values: ValidateResults) => void ): void; - - /** - * 校验并获取一组输入域的值与Error对象 - */ - /** - * 获取所有组件的key - */ - getNames(): string[]; - - /** - * 获取单个输入控件的值 - * @param 字段名 - */ - getValue(name: string): T; - - /** - * 获取一组输入控件的值,如不传入参数,则获取全部组件的值 - * @param names - */ - getValues(names?: string[]): T; - - /** - * 设置单个输入控件的值 (会触发render,请遵循react时机使用) - */ - setValue(name: string, value: T): void; - - /** - * 设置一组输入控件的值(会触发render,请遵循react时机使用) - */ - setValues(obj: object): void; - - /** - * 设置一组输入控件的值(会触发render,请遵循react时机使用) - */ - setValues(obj: T): void; - - /** - * 判断校验状态 - */ - getState(name: String): 'error' | 'success' | 'validating'; - - /** - * 获取单个输入控件的 Error - */ - getError(name: String): Error; - - /** - * 获取一组输入控件的 Error - * @param names 字段名 - */ - getErrors(names: string[]): Error; - - /** - * 设置单个输入控件的 Error - * @param name - * @param errors - */ - setError(name: string, errors?: null | string[]): void; - - /** - * 设置一组输入控件的 Error - */ - setErrors(obj: object): void; } diff --git a/types/index.d.ts b/types/index.d.ts index 5ca9078759..c24bf6bbfa 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -51,4 +51,4 @@ export { default as TreeSelect } from './tree-select'; export { default as Upload } from './upload'; export { default as VirtualList } from './virtual-list'; export { default as Typography } from './typography'; -export const Field: any; +export { default as Field } from './field';