import React, { Component, Key } from 'react';
import ConfigContext from '../../../es/config-provider/ConfigContext';
import DataSet from '../data-set/DataSet';
import Record from '../data-set/Record';
import { onColumnResizeProps, TableProps } from '../table/Table';
import { SelectionMode } from '../table/enum';
import { DataSetSelection } from '../data-set/enum';
import { ColumnProps } from '../table/Column';
import { ModalChildrenProps } from '../modal/interface';
import { LovConfig, ViewRenderer, SelectionProps } from './Lov';
import { FormContextValue } from '../form/FormContext';
import { TriggerViewMode } from '../trigger-field/TriggerField';
export interface LovViewProps {
    dataSet: DataSet;
    config: LovConfig;
    context: FormContextValue;
    tableProps?: Partial<TableProps>;
    multiple: boolean;
    values: any[];
    viewMode?: TriggerViewMode;
    onSelect: (records: Record | Record[]) => void;
    onBeforeSelect?: (records: Record | Record[]) => boolean | Promise<boolean | undefined> | undefined;
    modal?: ModalChildrenProps;
    popupHidden?: boolean;
    valueField?: string;
    textField?: string;
    viewRenderer?: ViewRenderer;
    showSelectedInView?: boolean;
    getSelectionProps?: () => SelectionProps;
}
export default class LovView extends Component<LovViewProps> {
    static get contextType(): typeof ConfigContext;
    selection: DataSetSelection | false;
    selectionMode: SelectionMode | undefined;
    resizedColumns: Map<Key, number>;
    componentWillMount(): void;
    componentWillUnmount(): void;
    shouldComponentUpdate(nextProps: Readonly<LovViewProps>): boolean;
    getColumns(): ColumnProps[] | undefined;
    closeModal(record: Record | Record[] | undefined): void;
    handleSelect(event?: React.MouseEvent): false | PromiseLike<void>;
    handleKeyDown(e: any): void;
    /**
     * 单选 onRow 处理
     * @param props
     */
    handleRow(props: any): {
        onDoubleClick: (event?: React.MouseEvent<Element, MouseEvent> | undefined) => false | PromiseLike<void>;
    };
    handleSingleRow(props: any): {
        onClick: (event?: React.MouseEvent<Element, MouseEvent> | undefined) => false | PromiseLike<void>;
    };
    handleColumnResize(props: onColumnResizeProps): void;
    renderTable(): JSX.Element;
    renderSelectionList(): JSX.Element | null;
    render(): JSX.Element;
}
