/**
 * DO NOT EDIT
 *
 * This file was automatically generated by
 *   https://github.com/Polymer/tools/tree/master/packages/gen-typescript-declarations
 *
 * To modify these typings, edit the source file(s):
 *   src/vaadin-grid-sorter.js
 */


// tslint:disable:variable-name Describing an API that's defined elsewhere.

import {ThemableMixin} from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';

import {DirMixin} from '@vaadin/vaadin-element-mixin/vaadin-dir-mixin.js';

import {html} from '@polymer/polymer/lib/utils/html-tag.js';

import {PolymerElement} from '@polymer/polymer/polymer-element.js';

/**
 * `<vaadin-grid-sorter>` is a helper element for the `<vaadin-grid>` that provides out-of-the-box UI controls,
 * visual feedback, and handlers for sorting the grid data.
 *
 * #### Example:
 * ```html
 * <vaadin-grid-column>
 *   <template class="header">
 *     <vaadin-grid-sorter path="name.first">First name</vaadin-grid-sorter>
 *   </template>
 *   <template>[[item.name.first]]</template>
 * </vaadin-grid-column>
 * ```
 *
 * ### Styling
 *
 * The following shadow DOM parts are available for styling:
 *
 * Part name | Description
 * ----------------|----------------
 * `content` | The slotted content wrapper
 * `indicators` | The internal sorter indicators.
 * `order` | The internal sorter order
 *
 * The following state attributes are available for styling:
 *
 * Attribute    | Description | Part name
 * -------------|-------------|------------
 * `direction` | Sort direction of a sorter | :host
 */
declare class GridSorterElement extends PolymerElement {

  /**
   * JS Path of the property in the item used for sorting the data.
   */
  path: string|null|undefined;

  /**
   * How to sort the data.
   * Possible values are `asc` to use an ascending algorithm, `desc` to sort the data in
   * descending direction, or `null` for not sorting the data.
   */
  direction: GridSorterDirection|null|undefined;
  _order: number|null;
  ready(): void;
  connectedCallback(): void;
  disconnectedCallback(): void;
}

declare global {

  interface HTMLElementTagNameMap {
    "vaadin-grid-sorter": GridSorterElement;
  }
}

export {GridSorterElement};

import {GridSorterDirection} from '../@types/interfaces';
