/// <reference path="../../pxtlib.d.ts" />
import { FieldCustom, FieldCustomDropdownOptions } from "./field_utils";
import { FieldDropdownGrid } from "./field_dropdowngrid";
export interface FieldGridPickerToolTipConfig {
    yOffset?: number;
    xOffset?: number;
}
export interface FieldGridPickerOptions extends FieldCustomDropdownOptions {
    columns?: string;
    maxRows?: string;
    width?: string;
    tooltips?: string;
    tooltipsXOffset?: string;
    tooltipsYOffset?: string;
    hasSearchBar?: boolean;
    hideRect?: boolean;
}
export declare class FieldGridPicker extends FieldDropdownGrid implements FieldCustom {
    private tooltipConfig_;
    private gridTooltip_;
    private firstItem_;
    private hasSearchBar_;
    private observer;
    private selectedItemDom;
    private closeModal_;
    private selectedBar_;
    private selectedImg_;
    private selectedBarText_;
    private selectedBarValue_;
    protected scrollContainer: HTMLDivElement;
    private static DEFAULT_IMG;
    private firstFocusableElement;
    private lastFocusableElement;
    private tabKeyBind;
    constructor(text: string, options: FieldGridPickerOptions, validator?: Function);
    protected setFocusedItem_(_gridItemContainer: HTMLElement): void;
    /**
     * When disposing the grid picker, make sure the tooltips are disposed too.
     * @public
     */
    dispose(): void;
    private createTooltip_;
    /**
     * Create blocklyGridPickerRows and add them to table container
     * @param options
     * @param tableContainer
     */
    private populateTableContainer;
    /**
     * Populate a single row and add it to table container
     * @param row
     * @param options
     * @param tableContainer
     */
    private populateRow;
    /**
     * Callback for when a button is clicked inside the drop-down.
     * Should be bound to the FieldIconMenu.
     * @param {string | null} value the value to set for the field
     * @private
     */
    protected buttonClick_: (value: string | null) => void;
    protected buttonClickAndClose_: (value: string | null) => void;
    doClassValidation_(newValue: string): string;
    getFieldDescription(): string;
    /**
     * Closes the gridpicker.
     */
    private close;
    /**
     * Highlight first item in menu, de-select and de-highlight all others
     */
    private highlightFirstItem;
    /**
     * Scroll menu to item that equals current value of gridpicker
     */
    private highlightAndScrollSelected;
    /**
     * Create a dropdown menu under the text.
     * @private
     */
    showEditor_(e?: Event): void;
    private positionMenu_;
    private shouldShowTooltips;
    private getAnchorDimensions_;
    private createWidget_;
    private createSearchBar_;
    private createSelectedBar_;
    private updateSelectedBar_;
    private setupIntersectionObserver_;
    private disposeIntersectionObserver;
    /**
     * Disposes the tooltip DOM.
     * @private
     */
    private disposeTooltip;
    private onClose_;
    private handleTabKey;
    private addKeyboardNavigableClass;
}
