import React, { ReactNode } from 'react';
import { FormInstance } from 'antd/es/form';
import { SizeType } from "antd/es/config-provider/SizeContext";
import './index.css';
import { RadioButtonType } from "../../table";
import { IConfigParams } from "../../../columns/inter/common";
export declare const EditableContext: any;
export interface IOperatorCell {
    title: string;
    dataIndex: string;
    align: string;
    width: number;
    fixed?: string;
    render: (text: string, record: any) => ReactNode;
}
declare type AddRowPositionType = 'top' | 'bottom';
export interface IBasicFormOperatorTableProps {
    /** 控制子组件的暴露给父组件的方法 */
    cRef?: any;
    /** 表格上的工具组件渲染方法，返回的是一个数组，可以返回一个按钮数组，两个参数：handleAdd: 新增一行， handleBatchAdd: 新增批量数据  form： 表单 updateLoadDataSource: 修改表格内数据, dataSource： 表格内数据*/
    toolBarRender: (handleAdd: (selfRow?: any, callback?: (dataSource: any[]) => void, type?: AddRowPositionType) => void, handleBatchAdd: (addDataSource: any[], callback?: (dataSource: any[]) => void, type?: AddRowPositionType) => void, form: any, updateLoadDataSource: (changeDataSource: any[], callback?: (dataSource: any[]) => void) => void, dataSource: any[]) => any[];
    /** 表单的初始化值 */
    initFormValues: any;
    /** Form表单相应的一些属性配置 */
    formProps: {
        layout: {
            labelCol: {
                span: number;
            };
            wrapperCol: {
                span: number;
            };
        };
        labelAlign: 'left' | 'right';
        form: FormInstance;
    };
    /** 表单列的列表*/
    formColumns: any[];
    /** 表格列的选择列表*/
    tableColumns: any[];
    /** 初始化数据*/
    initDataSource: any[];
    /** 点击右下角的 提交 按钮 会把对表格操作的一些数据返回，form: 表单的值，addItems: 新增的行，editItems：编辑的行，delItems: 删除的行， dataSource: 新增修改删除之后的数据，oldDataSource： 原始的数据*/
    callbackCommitData?: ({ form, addItems, editItems, delItems, dataSource, oldDataSource }: {
        form: any;
        addItems: any;
        editItems: any;
        delItems: any;
        dataSource: any;
        oldDataSource: any;
    }) => void | undefined;
    form?: any;
    /** 自定义表格内的操作列 用于表格数据 */
    renderSelfOperatorTableCell?: (dataSource: any[], updateLoadDataSource: (changeDataSource: any, callback?: (dataSource: any[]) => void) => void) => IOperatorCell | boolean;
    /** 自定义操作列的内容 操作列存在 用于表格数据 */
    renderOperator?: (record: any, handleSave: (deepCopyRecord: any) => void, dataSource: any[], updateLoadDataSource: (changeDataSource: any, callback?: (dataSource: any[]) => void) => void, form: any) => void | undefined;
    /** 设置粘性头部和滚动条 */
    sticky?: boolean | {
        offsetHeader?: number;
        offsetScroll?: number;
        getContainer?: () => HTMLElement;
    };
    /** 表格是否可滚动，也可以指定滚动区域的宽、高 */
    scroll?: object | undefined;
    /** 表格的分页 参考Pagination 组件 */
    pagination?: any;
    /** 通过传入uploading控制loading效果时该组件不渲染 */
    uploading?: boolean;
    /** 是否配置 列配置 默认 false */
    noSettingIcon?: boolean;
    /** 拖拽后停止拿到改变的列 */
    onResizeStop?: (type: RadioButtonType, { tableSize, changeColumns, }: {
        tableSize: any;
        changeColumns: any;
    }) => void;
    /** 列配置面板重置的事件 */
    onResetSettingColumnsChange?: (type: RadioButtonType, { tableSize, }: {
        tableSize: any;
    }, getConfigCols: (arr: any[]) => void) => void;
    /** 列配置面板修改后的事件 */
    onSettingColumnsChange?: (type: RadioButtonType, { tableSize, changeColumns, }: {
        tableSize: any;
        changeColumns: any;
    }) => void;
    dynamicHeaderConfig?: IConfigParams | null;
}
interface IBasicFormOperatorTableState {
    dataSource?: any[];
    count?: number;
    oldDataSource?: any[];
    tableFilter?: object;
    pagination?: object;
    open?: boolean;
    tableSize?: SizeType;
}
/**
 * 利用AntTable 配置的一个 表格可编辑新增页面
 */
declare class BasicFormOperatorTable extends React.Component<IBasicFormOperatorTableProps, IBasicFormOperatorTableState> {
    private formRef;
    constructor(props: any);
    shouldComponentUpdate(nextProps: Readonly<IBasicFormOperatorTableProps>, nextState: Readonly<IBasicFormOperatorTableState>, nextContext: any): boolean;
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: any, nextContext: any): void;
    handleDelete: (key: any) => void;
    /**
     * 初始化数据
     */
    getInitColumnsMapValues: () => {};
    /**
     * 新增一行的操作
     * @param selfRow 是否可以传自定义的行
     * @param callback
     * @param type
     */
    handleAdd: (selfRow?: any, callback?: (dataSource: any[]) => void, type?: AddRowPositionType) => Promise<void>;
    /**
     * 新增多行的数据
     * @param addDataSource
     * @param callback
     * @param type
     */
    handleAddDataSource: (addDataSource: any, callback?: (dataSource: any[]) => void, type?: AddRowPositionType) => Promise<void>;
    /**
     * 保存一列
     * @param row
     */
    handleSave: (row: any) => void;
    /**
     * 每一个单元格 发生改变时 去改变其他行的数据 保存（当前行和其他行的）事件
     * 比如： 第一行的第三列数据发生改变，需要同步第5，6行乃至更多行 就在当这个单元格的数据发生改变时，
     * 将第5，6行的数据处理完毕后，将本行和第5，6行构成一个新的数组，来替换dataSource里的原来第1，5，6行的数据
     * @param saveSource
     */
    handleSaveDataSource: (saveSource: any) => void;
    /**
     * 新增的行
     * 只要是新增的行，并且没有被删除，计入是新增的行
     */
    getAddItems(): any[];
    /**
     * 编辑的行
     * 不是新增的编辑，不是删除的编辑，都计入可编辑的行
     */
    getEditItems(): any[];
    /**
     * 删除的行
     * 不是新增的删除的行 都计入删除的行
     */
    getDelItems(): any[];
    isHaveEmptyRuleProps: (dataSource: any) => Promise<number>;
    /**
     * 提交单据
     */
    commitFormAndTable: () => Promise<{
        form: any;
        addItems: any[];
        editItems: any[];
        delItems: any[];
        dataSource: any[];
        oldDataSource: any[];
    }>;
    /**
     * 将表格内的数据更新为最新数据
     * @param changeDataSource
     * @param callback
     */
    updateLoadDataSource: (changeDataSource: any, callback: any) => Promise<void>;
    /**
     * Form表格的类型配置
     * @param col
     */
    getCellValueType: (col: any) => any;
    /**
     * 批量修改配置的回调
     * @param saveSource
     */
    callbackBatchConfig: (saveSource: any) => void;
    /**
     * 表头上的自定义图标，这里是 批量修改的功能
     * @param col
     * @param index
     */
    renderColumnFilterDropDown: (col: any, index: number) => any;
    getFields: () => any[];
    renderToolBarRender(): React.JSX.Element[];
    /**
     * 判断rules校验规则里 是不是有需要校验的规则
     * @param arr
     */
    isExistRequiredIsTrue: (arr: any) => any;
    renderFilterPanel(col: any): void;
    filterDataSourceItem(item: any): boolean;
    /**
     * 展示过滤后的dataSource
     */
    showDataSource(): any[];
    /**
     * 获取筛选标题
     * @param arr
     * @param key
     */
    getFilterTitle(arr: any, key: any): any;
    getColumns(cols: any): any;
    /**
     * 一位数组分组 只支持两级
     * @param data
     * @param pId
     * @param cId
     * @param cIdDataIndex
     */
    private funcArrToTree;
    render(): React.JSX.Element;
}
export default BasicFormOperatorTable;
