///
import { ParsedUrlQuery } from 'querystring';
import * as React from 'react';
import { CSSProperties } from 'react';
import { Store } from 'redux';
import { UrlWithStringQuery } from 'url';
import { DataCustomer } from './core/DataCustomer/index';
import { DataProviderEvent } from './core/Events/dataProviderEvent';
import { Events } from './core/Events/index';
import moment from 'moment';
import { RCREFormState } from './core/Form/Form';
import { RCREFormItem } from './core/Form/FormItem';
import { gridPositionItems } from './core/Layout/Row/Row';
import { ContainerNode } from './core/Service/ContainerDepGraph';
import { TriggerEventItem } from './core/Trigger/Trigger';
export declare type Omit = Pick>;
export declare type Overwrite = Omit> & U;
export declare type ExtendType = {
[P in keyof T1]: T1[P] | extendType;
};
export declare enum CoreKind {
container = "container",
text = "text",
row = "row",
div = "div",
form = "form",
formItem = "formItem"
}
export declare type runTimeType = RunTimeType;
declare type $itemType = {
$parentItem?: $itemType;
$parentIndex?: number;
[key: string]: any;
};
export interface RunTimeType {
$data: any;
$query?: any;
$value?: any;
$name?: any;
$global?: any;
$item?: $itemType;
$location: any;
$trigger?: any;
$index?: number;
$now?: moment.Moment;
$moment?: typeof moment;
$args?: any;
$output?: any;
$iterator?: any;
$parent?: any;
$form?: any;
$formItem?: {
valid: boolean;
errmsg: string;
};
$prev?: any;
}
export interface PropsRunTimeType extends RunTimeType {
$parent: any;
}
export interface TriggerRunTimeType extends RunTimeType {
$trigger: any;
}
export interface InteratorRunTimeType extends RunTimeType {
$item: any;
$index: number;
}
export declare type ExpressionStringType = string;
export declare class BasicConfig {
/**
* 组件类型
*/
type: string;
/**
* 是否隐藏
*/
hidden?: boolean | ExpressionStringType;
/**
* 字级数据Key
*/
name?: string;
/**
* 默认数据
*/
defaultValue?: any;
/**
* 延迟同步数据
*/
debounce?: number | ExpressionStringType;
/**
* 关闭组件数据自清空的功能
*/
disabledAutoClear?: boolean;
/**
* 是否禁用
*/
disabled?: boolean | ExpressionStringType;
/**
* 不作为表单提交侦测的表单元素
*/
notFormItem?: boolean;
/**
* 停止使用name进行数据同步
*/
disableSync?: boolean;
/**
* 如果设置了disableSync,直接使用value传值
*/
value?: any;
/**
* 是否显示
*/
show?: boolean | ExpressionStringType;
/**
* 组件从container传值和组件向组件传值中的过滤器
* @deprecated
*/
transform?: {
in: string;
out: string;
};
/**
* 父级属性映射
*/
parentMapping?: Object;
/**
* CSS class
*/
className?: string;
/**
* HTML ID 属性
*/
id?: string;
/**
* 内联CSS属性
*/
style?: CSSProperties;
/**
* 事件触发
*/
trigger?: TriggerEventItem[];
/**
* 关闭当组件被销毁时,就自动清除在container中的值
*/
disableClearWhenDestroy?: boolean;
/**
* 当组件被销毁是,清除container中的值
*/
clearWhenDestroy?: boolean;
/**
* 只清除表单数据不清楚container中的数据
*/
clearFormStatusOnlyWhenDestroy?: boolean;
/**
* 是否作为表单输入元素
*/
formItem?: boolean;
__TEST_NAME__?: string;
}
export declare type ContainerSetDataOption = {
/**
* 强制触发刷新
*/
forceUpdate?: boolean;
/**
* 是否是分页
*/
pagination?: {
paginationQueryParams: string[];
};
/**
* 自定义同步的Key值
*/
name?: string;
/**
* 跳过debounce缓存,直接设置container的值
*/
skipDebounce?: boolean;
};
export declare type rawJSONType = string | number | null | boolean | Object;
export declare type originJSONType = rawJSONType | rawJSONType[];
export declare type defaultData = {
[s: string]: ESFunc | any;
};
export declare type BindItem = {
child: string;
parent: string;
transform?: string;
};
export interface ContainerNodeOptions {
/**
* 同步删除无状态数据到父级
*/
syncDelete?: boolean;
/**
* 使用字符串的export属性,并强制清除当前container和父级container相关的Key
*/
forceSyncDelete?: boolean;
/**
* 当前container组件被销毁的时候,同步清除父级和当前container所有相关的key
*/
clearDataToParentsWhenDestroy?: boolean;
/**
* 不允许同步undefined或者null到父级的container上
*/
noNilToParent?: boolean;
}
export declare type ESFunc = (runTime: runTimeType) => any;
export declare class BasicContainerPropsInterface {
debug?: boolean;
info: any;
/**
* 当前Container的数据模型对象
*/
$data?: Object;
/**
* 父级Container组件的数据模型对象
*/
$parent?: Object;
/**
* RCRE 渲染配置
*/
options?: RCREOptions;
/**
* Trigger组件的数据模型对象
*/
$trigger?: Object;
/**
* 通过表格组件, 渲染之后, 获取到的每一行的数据
*/
$item?: Object;
/**
* 通过表格组件, 渲染之后, 获取到的第几行
*/
$index?: number;
/**
* 表单状态变量
*/
$form?: {
layout?: string;
name?: string;
control?: any;
};
/**
* React组件Key
*/
key?: string | number;
/**
* 底层组件设置数据模型值使用
*/
$setData?: (name: string, value: any, options?: ContainerSetDataOption) => void;
/**
* 底层组件获取数据模型值使用
*/
$getData?: (name: string | number, props: BasicContainerPropsInterface, isTmp?: boolean) => any | null;
/**
* 底层组件清除某个字段的数据
*/
$deleteData?: (name: string, isTmp?: boolean) => void;
/**
* 清除Form的数据
*/
$deleteFormItem?: (name: string) => void;
/**
* 底层组件设置多组数据模型值
*/
$setMultiData?: (items: {
name: string;
value: any;
isTmp?: boolean;
}[]) => void;
/**
* Trigger注入的通用事件处理函数, 所有事件处理都走这里
*/
eventHandle?: (eventName: string, args: Object, options?: object) => void;
/**
* 来自Container的数据消耗者实例
*/
dataCustomer?: DataCustomer;
/**
* 父级的数据模型Key
*/
model?: string;
/**
* Trigger组件自动生成的回调函数
*/
injectEvents: {
[fc: string]: Function;
};
}
export interface BasicProps {
/**
* 来自RCRE的context对象
*/
rcreContext: RCREContextType;
/**
* 来自Foreach组件的context对象
*/
iteratorContext: IteratorContextType;
/**
* 来自Form组件的context对象
*/
formContext?: FormContextType;
/**
* 来自FormItem组件的context对象
*/
formItemContext?: FormItemContextType;
/**
* 来自父级Container的context对象
*/
containerContext: ContainerContextType;
/**
* 来自Trigger组件的context对象
*/
triggerContext?: TriggerContextType;
gridCount?: number;
gridPosition?: gridPositionItems;
gridPaddingLeft?: number;
gridPaddingRight?: number;
gridLeft?: number;
gridTop?: number;
gridWidth?: number | string;
gridHeight?: number | string;
}
/**
* Provider 对象数据源配置
*/
export interface ProviderSourceConfig {
/**
* provider模式
*/
mode: string;
/**
* Provider配置
*/
config?: any;
/**
* 请求发起所依赖的参数
*/
requiredParams?: string[] | string;
/**
* 不仅判断参数的key,同样如果每个参数的value转义之后都是true
*/
strictRequired?: boolean | string;
/**
* 使用ExpressionString来决定是否请起数据
*/
condition?: string | boolean;
/**
* Provider命名空间
*/
namespace: string;
/**
* Provider返回值映射[弃用]
*/
retMapping?: Object;
/**
* Provider返回值映射
*/
responseRewrite?: Object;
/**
* 返回值检查Expression String
*/
retCheckPattern?: string;
/**
* 错误弹出的错误提示
*/
retErrMsg?: string;
/**
* 自动触发
*/
autoInterval?: number;
/**
* 调试默认
*/
debug?: boolean;
}
export interface CustomerItem {
/**
* customer名称
*/
name: string;
/**
* customer执行模式
*/
mode?: string;
/**
* customer配置
*/
config?: any;
/**
* customer 函数
*/
func?: string;
}
export interface CustomerGroup {
/**
* 组合名称
*/
name: string;
/**
* 执行顺序
*/
steps: string[];
/**
* 当发生错误的时候,继续执行
*/
keepWhenError?: boolean;
}
export interface TaskConfig {
/**
* 单个customer配置
*/
customers?: CustomerItem[];
tasks?: CustomerItem[];
/**
* 业务组合
*/
groups?: CustomerGroup[];
taskMap?: CustomerGroup[];
}
export declare type RCREOptions = {
/**
* 启动0.15.0版本之前的container数据合并策略
*/
oldNestContainerCompatible?: boolean;
/**
* 兼容Safari10的兼容代码
*/
safari10Layout?: boolean;
};
/**
* 内部基础组件的context变量
*/
export interface RCREContextType {
$global: object;
$location: UrlWithStringQuery;
$query: ParsedUrlQuery;
debug: boolean;
loadMode: string;
lang: string;
events: Events;
dataProviderEvent: DataProviderEvent;
options?: RCREOptions;
store: Store;
containerGraph: Map;
mode: 'React' | 'json';
}
/**
* Container为底层组件提供的Context
*/
export interface ContainerContextType {
model: string;
$data: any;
$parent?: any;
dataCustomer: DataCustomer;
$setData: (name: string, value: any, options?: ContainerSetDataOption) => void;
$getData: (name: string) => any;
$deleteData: (name: string) => void;
$setMultiData: (items: {
name: string;
value: any;
}[]) => void;
}
declare type TriggerContextOptions = {
index?: number;
preventSubmit?: boolean;
};
export declare type ExecTaskOptions = {
wait?: number;
};
export interface TriggerContextType {
$trigger: any;
eventHandle: (eventName: string, args: Object, options?: TriggerContextOptions) => Promise;
execTask: (targetTask: string, args: any, options?: ExecTaskOptions) => Promise;
}
export interface IteratorContextType {
$item: any;
$index: number;
$parentIndex?: number;
$parentItem?: any;
}
export interface FormItemState {
valid: boolean;
formItemName: string;
rules?: any[];
status?: string;
errorMsg?: string;
$validate?: boolean;
validating?: boolean;
required?: boolean;
}
export interface FormContextType {
$form: RCREFormState;
isSubmitting?: boolean;
$setFormItem: (payload: FormItemState) => void;
$getFormItem: (formItemName: string) => FormItemState;
$setFormItems: (payload: FormItemState[]) => void;
$deleteFormItem: (itemName: string) => void;
$registerFormItem: (name: string, component: RCREFormItem) => void;
$runValidations: () => Promise;
$resetForm: () => void;
$handleSubmit: (e: React.FormEvent | undefined) => Promise;
}
export declare type ElementsInfo = {
disabled?: boolean;
type?: string;
value: any;
};
export interface FormItemContextType {
$validateFormItem: (name: string, value: any) => void;
$deleteFormItem: (name: string) => void;
$setFormItem: (payload: FormItemState) => void;
deleteControlElements: (name: string) => void;
initControlElements: (name: string, info: ElementsInfo) => void;
updateControlElements: (name: string, info: ElementsInfo) => void;
$handleBlur: () => void;
$formItem: {
valid: boolean;
errmsg: string;
validating: boolean;
};
isUnderFormItem: boolean;
}
export interface PageConfig {
title?: string;
body: T[];
}
export interface PageProps extends PageConfig {
global?: Object;
debug?: boolean;
lang?: string;
loadMode?: string;
options?: RCREOptions;
events?: Events;
store: Store;
containerGraph: Map;
}
export {};