/**
 * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company.
 * @link https://truedirective.com/
 * @license MIT
*/
import { RenderMode, DetectionMode, SelectionMode, EditorShowMode, LazyLoadingMode } from './enums';
import { Column } from './column.class';
import { MenuAction } from './menu-action.class';
import { GridAppearance } from './grid-appearance.class';
/**
 * Grid settings
 */
export declare class GridSettings {
    /**
     * Field's name which allows to identify the specific object.
     * You should set this property to avoid loosing grid's selected ranges
     * after updating the data.
     */
    keyField: string;
    /**
     * Grid's css-class
     */
    readonly appearance: GridAppearance;
    readonly sta: GridAppearance;
    /**
     * Грид запрашивает данные у родительского компонента
     * (у обработчика события state.OnDataQuery)
     */
    requestData: boolean;
    /**
     * Единица измерения ширины колонок
     */
    widthUnit: string;
    /**
     * Change detection mode
     * Режим проверки изменений. При значении MANUAL необходимо вручную вызывать
     * обновление грида после изменения данных.
     */
    changeDetectionMode: DetectionMode;
    /**
     * Режим отрисовки (все данные или только видимые)
     */
    renderMode: RenderMode;
    /**
     * Lazy Loading mode
     */
    lazyLoading: LazyLoadingMode;
    /**
     * Page size
     */
    lazyLoadingPageSize: number;
    /**
     *
     */
    lazyLoadingThreshold: number;
    /**
     * Milliseconds between scrolling and loading
     */
    lazyLoadingPause: number;
    /**
     * Способ выделения ячеек данных
     */
    selectionMode: SelectionMode;
    /**
     * Выделение нескольких ячеек/строк/областей (с удержанием Ctrl key)
     */
    multiSelect: boolean;
    /**
     * Header's word wrap setting
     */
    headerWordWrap: boolean;
    /**
     * Data cell's word wrap setting
     */
    dataWordWrap: boolean;
    /**
    *  Data row height in pixels. Можно задать заведомо меньшую высоту, тогда
     * высота строки будет такой, чтобы уместить контент. Если высота задана,
     * то минимальная высота будет такой.
     */
    rowHeight: number;
    /**
     * Высота строки для грида, который находится в окне фильтров.
     * Если не задан, берется rowHeight
     */
    private _filterItemRowHeight;
    filterItemRowHeight: number;
    /**
     * Максимальная высота выпадающего списка для редактора EditorSelectTrue.
     * Нужно указать с единицей измерения.
     */
    maxDropDownHeight: string;
    /**
     * Внутренний или пользовательский шаблон
     */
    customTemplate: boolean;
    columnResize: boolean;
    columnReorder: boolean;
    bandReorder: boolean;
    allowSorting: boolean;
    allowFilter: boolean;
    allowFixedColumns: boolean;
    rowDrag: boolean;
    /**
     * При обнаружении iOS или Android горизонтальный и вертикальный скролл производится
     * двумя разными скроллбоксами. Для избежания дерганий.
     * Но если скролл по горизонтали не предусмотрен, то лучше отключить эту опцию.
     */
    enableTouchScroll: boolean;
    showGroupArea: boolean;
    showHeader: boolean;
    showBands: boolean;
    showFooter: boolean;
    /**
     * Значение чекбокса меняется по клику всей ячейки
     */
    checkByCellClick: boolean;
    /**
     * Показывать счетчик количества rows в группе
     */
    showGroupCounts: boolean;
    /**
     * Группы сколлапсированы по умолчанию
     */
    groupCollapseByDefault: boolean;
    /**
     * Минимальная ширина колонки, доступная при изменении ширины пользователем
     * В указанных выше единицах измерения
     */
    minColumnWidthOnResize: number;
    /**
     * Автоматическое растягивание колонок
     */
    columnAutoWidth: boolean;
    /**
     * Ширина отступа при формировании уровней группировки или при отображении
     * дочерних items дерева
     */
    levelIndent: number;
    /**
     * Свойство, в которых содержится список дочерних items.
     * Если задано, то считается, что грид отображает дерево.
     */
    treeChildrenProperty: string;
    groupSwitcherIconField: string;
    /**
     * Шаг автоматической прокрутки при drag-n-drop в пикселах
     */
    autoScrollStep: number;
    /**
     * Интервал автоматической прокрутки при drag-n-drop в миллисекундах
     */
    autoScrollInterval: number;
    /**
     * Способ перехода ячейки в режим редактирования. По умолчанию возможность
     * редактирования отключена
     */
    editorShowMode: EditorShowMode;
    /**
     * Активация редактора при нажатии клавиши (не учитываются стрелочные клавиши и RETURN)
     */
    editorByKey: boolean;
    /**
     * Автоматическое принятие изменений, сделанных в редакторе.
     * Если true, то изменения принимаются при потере фокуса, при переходе
     * на другую ячейку.
     * Если false, то изменения принимаются только при нажатии Enter, а в
     * остальных случаях отменяются.
     */
    editorAutoCommit: boolean;
    /**
     * Подсветка найденной подстроки общего текстового фильтра. Для подсветки
     * используется свойство innerHTML ячейки. При наличии колонок с типом HTML
     * могут быть сложности.
     */
    searchHighlight: boolean;
    /**
     * Number of milliseconds between user input of search string and data
     * processing. If value set is too low, refresh will occur too often, which
     * will lead to subjectively worse perceptual performance.
     */
    searchDelay: number;
    dataContextMenuActions: MenuAction[];
    headerContextMenuActions: MenuAction[];
    enableDataContextMenu: boolean;
    enableHeaderContextMenu: boolean;
    autoFocusAfterEditor: boolean;
    /**
     * Is row's height fixed?
     */
    readonly fixedRowHeight: boolean;
    /**
     * Minimal settings for dropdown lists
     */
    static minimal(autoWidth?: boolean): GridSettings;
    /**
     * Можно ли выделять прямоугольные области при заданных настройках
     */
    canSelectRange(): boolean;
    /**
     * Ширина правой пустой колонки в заголовке
     * @return Ширина с единицей измерения
     */
    readonly hdWidth: string;
    /**
     * Класс ячейки данных
     * @return Список классов через пробел
     */
    cellClass(col: Column): string;
    /**
     * Класс ячейки заголовка
     */
    headerCellClass(col: Column): string;
    /**
     * Класс ячейки футера
     */
    footerCellClass(col: Column): string;
    /**
     * Класс ячейки данных с чекбоксом
     * @param  v Значение
     */
    checkboxClass(v?: boolean): string;
    /**
     * Класс ячейки заголовка с чекбоксом
     * @param  v Значение (отмечено / не отмечено)
     * @return Класс
     */
    headerCheckboxClass(v?: boolean): string;
    /**
     * Ширина отступа одного уровня
     * @return Ширина с единицей измерения
     */
    readonly levelWidth: string;
    /**
     * Проверка возможности редактирования ячейки заданной колонки
     * @param  col Колонка
     * @return     Можно ли редактировать
     */
    canEditColumnCell(col: Column): boolean;
    constructor();
}
