import { Field, FieldConfig, FieldConfigs, FieldError, FieldProps, IField } from '../common'; import React from 'react'; export declare type TabsFieldConfig = TabsFieldConfig_Same | TabsFieldConfig_Diff; export interface TabsFieldConfig_Basic extends FieldConfig { type: 'tabs'; } export interface TabsFieldConfig_Same extends TabsFieldConfig_Basic { mode: 'same'; fields: FieldConfigs[]; tabs: { field: string; label: string; }[]; } export interface TabsFieldConfig_Diff extends TabsFieldConfig_Basic { mode: 'diff'; tabs: { field: string; label: string; fields: FieldConfigs[]; }[]; } export interface ITabsField { children: React.ReactNode[]; } export interface ITabsFieldItem { key: string; label: string; children: React.ReactNode[]; } export interface ITabsFieldItemField { index: number; label: string; subLabel?: React.ReactNode; required: boolean; status: 'normal' | 'error' | 'loading'; description?: string; message?: string; extra?: string; layout: 'horizontal' | 'vertical' | 'inline'; fieldType: string; children: React.ReactNode; } export interface TabsFieldState { didMount: boolean; formDataList: { status: 'normal' | 'error' | 'loading'; message?: string; }[][]; extra?: S; } export default class TabsField extends Field> implements IField<{ [key: string]: any; }> { getALLComponents: (type: any) => typeof Field; formFieldsList: Array | null>>; formFieldsMountedList: Array>; constructor(props: FieldProps); didMount: () => Promise; get: () => Promise; validate: (value: { [key: string]: any; }) => Promise; handleMount: (index: number, formFieldIndex: number) => Promise; handleChange: (index: number, formFieldIndex: number, value: any) => Promise; /** * 处理set、unset、append、splice、sort后的操作 */ handleValueCallback: (index: number, formFieldIndex: number, validation: true | FieldError[]) => Promise; handleValueSet: (index: number, formFieldIndex: number, path: string, value: any, validation: true | FieldError[], options?: { noPathCombination?: boolean; }) => Promise; handleValueUnset: (index: number, formFieldIndex: number, path: string, validation: true | FieldError[], options?: { noPathCombination?: boolean; }) => Promise; handleValueListAppend: (index: number, formFieldIndex: number, path: string, value: any, validation: true | FieldError[], options?: { noPathCombination?: boolean; }) => Promise; handleValueListSplice: (index: number, formFieldIndex: number, path: string, _index: number, count: number, validation: true | FieldError[], options?: { noPathCombination?: boolean; }) => Promise; handleValueListSort: (index: number, formFieldIndex: number, path: string, _index: number, sortType: 'up' | 'down', validation: true | FieldError[], options?: { noPathCombination?: boolean; }) => Promise; /** * 用于展示子表单组件 * @param _props * @returns */ renderComponent: (_props: ITabsField) => JSX.Element; /** * 用于展示子表单组件中的每一个子项 * @param props * @returns */ renderItemComponent: (props: ITabsFieldItem) => JSX.Element; /** * 用于展示子表单组件中的每一子项中的每一个子表单项组件 * @param props * @returns */ renderItemFieldComponent: (props: ITabsFieldItemField) => JSX.Element; render: () => JSX.Element; }