feat(form): formList添加泛型推导name
parent
1b3d5d08c4
commit
77f6113013
|
|
@ -58,7 +58,7 @@ export interface FormListUniqueProps {
|
|||
/** 删除按钮的文本,默认 '删除' */
|
||||
removeButtonText?: string;
|
||||
/** 表单配置项 */
|
||||
options: (field: FormListFieldData, fieldIndex: number, operations: FormListOperations) => FormOption[];
|
||||
options: (field: FormListFieldData, fieldIndex: number, operations: FormListOperations) => FormListOption[];
|
||||
/** 点击新增按钮时的默认值 */
|
||||
addDefaultValue?: Store;
|
||||
/** 点击新增按钮时插入的索引位置 */
|
||||
|
|
@ -78,11 +78,11 @@ type FormOptionProperty<IsOnlyForLabel extends boolean, IsCustomizeRender extend
|
|||
/**
|
||||
* 表单配置项公共字段
|
||||
*/
|
||||
export interface FormOptionBase<Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false> {
|
||||
export interface FormOptionBase<Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false, Name = NamePath<Values>> {
|
||||
/** React 需要的 key,如果传递了唯一的 name,则不需要 */
|
||||
key?: string;
|
||||
/** 表单项字段名 */
|
||||
name?: NamePath<Values>;
|
||||
name?: Name;
|
||||
/** 表单项标签 */
|
||||
label?: ReactNode;
|
||||
/** 占据栅格列数,默认 12 */
|
||||
|
|
@ -110,7 +110,7 @@ export interface FormOptionBase<Values = any, IsOnlyForLabel extends boolean = f
|
|||
/** 是否应该更新(用于表单联动) */
|
||||
shouldUpdate?: FormOptionProperty<IsOnlyForLabel, IsCustomizeRender, boolean | ((prevValues: Values, nextValues: Values, info: { source?: string }) => boolean)>;
|
||||
/** 依赖字段(用于表单联动) */
|
||||
dependencies?: FormOptionProperty<IsOnlyForLabel, IsCustomizeRender, NamePath<Values>[]>;
|
||||
dependencies?: FormOptionProperty<IsOnlyForLabel, IsCustomizeRender, Name[]>;
|
||||
/** 是否仅用于保存标签,不渲染到页面上,只在表单中保存数据,默认 false */
|
||||
onlyForLabel?: IsOnlyForLabel;
|
||||
}
|
||||
|
|
@ -118,7 +118,7 @@ export interface FormOptionBase<Values = any, IsOnlyForLabel extends boolean = f
|
|||
/**
|
||||
* 按 render 类型区分的表单项
|
||||
*/
|
||||
export type FormOptionByRender<RenderType extends keyof FORM_ITEM_RENDER_TYPE_MAP, Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false> = FormOptionBase<Values, IsOnlyForLabel, IsCustomizeRender> & {
|
||||
export type FormOptionByRender<RenderType extends keyof FORM_ITEM_RENDER_TYPE_MAP, Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false, Name = NamePath<Values>> = FormOptionBase<Values, IsOnlyForLabel, IsCustomizeRender, Name> & {
|
||||
/** 渲染类型(写字面量时 componentProps 会按该类型推导) */
|
||||
render: RenderType;
|
||||
/** 传递给表单控件的属性,类型由 render 决定 */
|
||||
|
|
@ -136,7 +136,7 @@ export type FormOptionByRender<RenderType extends keyof FORM_ITEM_RENDER_TYPE_MA
|
|||
/**
|
||||
* 不写 render 或 render 为 input 时的表单项(默认按输入框)
|
||||
*/
|
||||
export type FormOptionDefault<Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false> = FormOptionBase<Values, IsOnlyForLabel, IsCustomizeRender> & {
|
||||
export type FormOptionDefault<Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false, Name = NamePath<Values>> = FormOptionBase<Values, IsOnlyForLabel, IsCustomizeRender, Name> & {
|
||||
/** 渲染类型,默认 input */
|
||||
render?: "input" | undefined;
|
||||
/** 传递给 Input 的属性 */
|
||||
|
|
@ -154,7 +154,7 @@ export type FormOptionDefault<Values = any, IsOnlyForLabel extends boolean = fal
|
|||
/**
|
||||
* 自定义渲染时的表单项(render 为 ReactNode 时使用)
|
||||
*/
|
||||
export type FormOptionCustomRender<Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false> = FormOptionBase<Values, IsOnlyForLabel, IsCustomizeRender> & {
|
||||
export type FormOptionCustomRender<Values = any, IsOnlyForLabel extends boolean = false, IsCustomizeRender extends boolean = false, Name = NamePath<Values>> = FormOptionBase<Values, IsOnlyForLabel, IsCustomizeRender, Name> & {
|
||||
/** 渲染类型,默认 ReactNode */
|
||||
render: ReactNode;
|
||||
/** 传递给表单控件的属性,自定义渲染时不需要 */
|
||||
|
|
@ -170,7 +170,7 @@ export type FormOptionCustomRender<Values = any, IsOnlyForLabel extends boolean
|
|||
};
|
||||
|
||||
/**
|
||||
* 表单配置项
|
||||
* 表单配置项(普通表单项)
|
||||
*/
|
||||
export type FormOption<Values = any>
|
||||
= | FormOptionDefault<Values, false, false>
|
||||
|
|
@ -183,6 +183,20 @@ export type FormOption<Values = any>
|
|||
| FormOptionCustomRender<Values, false, true>
|
||||
| FormOptionCustomRender<Values, true, false>;
|
||||
|
||||
/**
|
||||
* Form.List 子项表单配置项(使用 [number, NamePath] 作为 name 类型)
|
||||
*/
|
||||
export type FormListOption<Values = any>
|
||||
= | FormOptionDefault<Values, false, false, [number, NamePath<Values>]>
|
||||
| FormOptionDefault<Values, false, true, [number, NamePath<Values>]>
|
||||
| FormOptionDefault<Values, true, false, [number, NamePath<Values>]>
|
||||
| { [K in keyof FORM_ITEM_RENDER_TYPE_MAP]: FormOptionByRender<K, Values, false, false, [number, NamePath<Values>]> }[keyof FORM_ITEM_RENDER_TYPE_MAP]
|
||||
| { [K in keyof FORM_ITEM_RENDER_TYPE_MAP]: FormOptionByRender<K, Values, false, true, [number, NamePath<Values>]> }[keyof FORM_ITEM_RENDER_TYPE_MAP]
|
||||
| { [K in keyof FORM_ITEM_RENDER_TYPE_MAP]: FormOptionByRender<K, Values, true, false, [number, NamePath<Values>]> }[keyof FORM_ITEM_RENDER_TYPE_MAP]
|
||||
| FormOptionCustomRender<Values, false, false, [number, NamePath<Values>]>
|
||||
| FormOptionCustomRender<Values, false, true, [number, NamePath<Values>]>
|
||||
| FormOptionCustomRender<Values, true, false, [number, NamePath<Values>]>;
|
||||
|
||||
/**
|
||||
* FormItemsRenderer 组件属性
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue