import React from 'react';
import { IFieldType } from '@/common/types';
/** key- 函数组件 */
export declare type IComponentFCObject = {
[propsName: string]: React.FC;
};
/** key-类组件 */
export declare type IComponentClassObject = {
[propsName: string]: React.ComponentClass;
};
/** 组件类型 */
export declare type IComponentFCWithClass
= React.FC
| React.ComponentClass
| React.ForwardRefExoticComponent
;
/** key--组件 */
export declare type IComponentFCWithClassObject = {
[propsName: string]: IComponentFCWithClass | any;
};
/** 获取组件props 并分配到组件对应key */
export declare type IComponentFCWithClassObjectProps = {
[P in keyof T]: React.ComponentProps;
};
/** 获取组件props 并分配到对应code */
export declare type ICodeDistributeProps = K extends string ? {
code: K;
fieldType?: IFieldType;
props?: React.ComponentProps;
} : never;
/** 获取组件props 分配到对应fieldType */
export declare type IFieldTypeDistributeProps = K extends IFieldType ? {
code?: string;
fieldType: K;
props?: React.ComponentProps;
} : never;
export declare type IFieldSystemComponentConfig = ICodeDistributeProps;
export declare type IFieldCustomComponentConfig = IFieldTypeDistributeProps;
export declare type IFieldComponentConfig = IFieldSystemComponentConfig | IFieldCustomComponentConfig;
export declare type IFieldConfigOutputType = 'element' | 'config' | 'function';
export interface IFieldRequiredConfig {
outputs: Array;
}
export interface IFieldPartialConfig {
/** 渲染函数 暂时未处理使用 */
render?: ((text: any, props: any, dom: JSX.Element) => JSX.Element);
/** 是否展示字段 @default true */
display?: boolean;
/** 归档后的字段,不可进行操作 用以展示
* 因此在 最终确定配置 `getProcessFieldConfig` 处 会进行处理
* 为兼容过往已保存筛选
*
* @default false */
archive?: boolean;
}
export declare type IFieldSystemConfig = (IFieldRequiredConfig & IFieldPartialConfig & IFieldSystemComponentConfig);
export declare type IFieldCustomConfig = (IFieldRequiredConfig & IFieldPartialConfig & IFieldCustomComponentConfig);
export declare type IFieldConfig = IFieldSystemConfig | IFieldCustomConfig;
declare type IFieldProcessConfig = IFieldRequiredConfig & IFieldPartialConfig & Required> & IFieldComponentConfig;
export declare type IFieldOutputFunction = (config: IFieldProcessConfig, element?: React.ReactElement) => React.ReactElement;
export declare type IFieldOutput = React.ReactElement | IFieldProcessConfig | IFieldOutputFunction;
export declare type ISingleOrArray = T | Array;
interface IClassComponentType extends Function {
new (...args: any[]): T;
}
export type { IFieldProcessConfig, IClassComponentType };