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