@flatbiz/antd
Version:
147 lines (144 loc) • 4.99 kB
TypeScript
import { TAny, TPlainObject } from '@flatbiz/utils';
import { FormItemProps } from 'antd';
import { CSSProperties, ReactElement, ReactNode } from 'react';
export type TFormItemLayoutPreClassNameProps = {
/**
* label宽度,Form内部所有FormItem label都生效
* ```
* 1. 可设置数值
* 2. 可设置`auto`自适应
* ```
*/
labelWidth?: "auto" | "70" | "80" | "90" | "100" | "110" | "120" | "130" | "140" | "150" | "160" | "170" | "180" | "190" | "200";
/** labelItem 竖直布局 */
labelItemVertical?: boolean;
/** label 对齐方式 */
labelAlign?: "left" | "right";
/**
* className 中可能会包含 preDefinedClassName.formItem.xx,优先级大于 labelWidth、labelItemVertical、labelAlign
*/
className?: string;
};
export type FormItemWrapperProps = Omit<FormItemProps, "hidden" | "children" | "noStyle"> & TFormItemLayoutPreClassNameProps & {
wrapper?: (children: ReactNode) => ReactElement;
/** 设置wrapper后,before、after失效 */
before?: ReactNode;
/** 设置wrapper后,before、after失效 */
after?: ReactNode;
/** 设置 before、after 属性的包装结构style */
beforeAfterStyle?: CSSProperties;
/** value 序列化处理 */
inputNormalize?: (value?: TAny) => TAny;
/**
* onChange 参数序列化处理
* 如果设置 normalize 属性,outputNormalize将失效
*/
outputNormalize?: (value?: TAny) => TAny;
/**
* 隐藏 Form.Item,同时清除 Form.Item 值
* ```
* 1.与 dependencies 属性配合使用,可实现当前FormItemWrapper的显示隐藏
* 2.提交不校验rules
* ```
*/
isClear?: boolean | ((formValues: TPlainObject) => boolean);
/**
* 隐藏 Form.Item,不会清除 Form.Item 值
* ```
* 1.与 dependencies 属性配合使用,可实现当前FormItemWrapper的显示隐藏
* 2.提交会校验rules
* ```
*/
hidden?: boolean | ((formValues: TPlainObject) => boolean);
/**
* 栅格占位格数,最大值:24
* ```
* 1. 当前FormItemWrapper处在 EasyForm 直接子节点中有效,即FormItemWrapper在EasyForm栅格中的占位格数;
* 2. 父节点使用属性值,当前节点不使用属性值
* ```
*/
span?: number;
/** 不支持函数式写法,如果需要使用dependencies获取表单值,可使用FormItemWrapperDependencies 组件 */
children?: ReactNode;
/**
* ```
* 1. 设置noStyle后,可能会导致 FromItemWrapper 在 EasyFrom 内部渲染网格布局时出现异常
* 2. 在FormItemWrapper中使用 dependencies 逻辑不需要设置 noStyle
* ```
*/
noStyle?: boolean;
};
export type FormItemTextServiceConfig = {
onRequest: (params?: TAny) => Promise<TAny>;
/** 接口参数,当params发生变化后,会主动发送查询请求 */
params?: TPlainObject;
/** 标记serviceConfig.params中无效参数,被设置的params key 不传入服务接口入参 */
invalidParamKey?: string[];
/** 如果没有配置 render,返回结果会直接进行dom渲染,如果非string类型会进行JSON.stringify处理 */
onResponseAdapter?: (respData?: TAny, value?: TAny) => TAny;
/** 必须参数key列表,与params配合使用 */
requiredParamsKeys?: string[];
};
export type FormItemTextProps = Omit<FormItemWrapperProps, "onChange"> & {
/** 是否换行,默认不换行,超出省略(鼠标悬浮可显示) */
wrap?: boolean;
/** 自定义数据显示 */
render?: (value?: TAny) => ReactNode;
/** 占位值,当 value 为 ''、undefined、null时显示 */
placeholderValue?: string;
/**
* 发起服务调用显示数据,例如:数据为key,通过key查询text显示
* ```
* 1. 当serviceConfig.params发生变化后,会主动发送查询请求
* ```
*/
serviceConfig?: FormItemTextServiceConfig;
};
/**
* FormItem 文本显示,默认不换行,超出省略(鼠标悬浮可显示)
* ```
* 可通过配置 serviceConfig 通过接口获取数据,一般用于 Select 数据显示
*
* 例如:
* 1. 基本数据渲染
* <FormItemText name="xxx" label="xxx" />
* 2. 对象数据渲染
* <FormItemText
* name="xxx"
* label="xxx"
* render={(value) => {
* const target = [].find(
* (item) => item.value === value,
* );
* return target ? (
* <Tag color={target['color']}>{target.label}</Tag>
* ) : null;
* }}
* />
* 3. 接口数据渲染
* <FormItemText
* name="xxx"
* label="xxx"
* serviceConfig={{
* onRequest: () => {
* return serviceHandle.request('/random/api9468', {}, 'post');
* },
* onResponseAdapter: (dataList: TPlainObject[], value) => {
* return dataList?.find((item) => item.value === value);
* },
* }}
* render={(dataItem) => {
* return dataItem ? (
* <Tag style={{ margin: 0 }} color={dataItem['color']}>
* {dataItem.label}
* </Tag>
* ) : null;
* }}
* />
* ```
*/
export declare const FormItemText: {
(props: FormItemTextProps): import("react").JSX.Element;
domTypeName: string;
};
export {};