chromium/third_party/polymer/v3_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold.d.ts

/**
 * 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):
 *   iron-scroll-threshold.js
 */

import {IronScrollTargetBehavior} from '../iron-scroll-target-behavior/iron-scroll-target-behavior.js';

import {Polymer} from '../polymer/lib/legacy/polymer-fn.js';

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

import {LegacyElementMixin} from '../polymer/lib/legacy/legacy-element-mixin.js';

/**
 * `iron-scroll-threshold` is a utility element that listens for `scroll` events
 * from a scrollable region and fires events to indicate when the scroller has
 * reached a pre-defined limit, specified in pixels from the upper and lower bounds
 * of the scrollable region. This element may wrap a scrollable region and will
 * listen for `scroll` events bubbling through it from its children.  In this case,
 * care should be taken that only one scrollable region with the same orientation
 * as this element is contained within. Alternatively, the `scrollTarget` property
 * can be set/bound to a non-child scrollable region, from which it will listen for
 * events.
 *
 * Once a threshold has been reached, a `lower-threshold` or `upper-threshold`
 * event will be fired, at which point the user may perform actions such as
 * lazily-loading more data to be displayed. After any work is done, the user must
 * then clear the threshold by calling the `clearTriggers` method on this element,
 * after which it will begin listening again for the scroll position to reach the
 * threshold again assuming the content in the scrollable region has grown. If the
 * user no longer wishes to receive events (e.g. all data has been exhausted), the
 * threshold property in question (e.g. `lowerThreshold`) may be set to a falsy
 * value to disable events and clear the associated triggered property.
 *
 * ### Example
 *
 * ```html
 * <iron-scroll-threshold on-lower-threshold="loadMoreData">
 *   <div>content</div>
 * </iron-scroll-threshold>
 * ```
 *
 * ```js
 *   loadMoreData: function() {
 *     // load async stuff. e.g. XHR
 *     asyncStuff(function done() {
 *       ironScrollTheshold.clearTriggers();
 *     });
 *   }
 * ```
 *
 * ### Using dom-repeat
 *
 * ```html
 * <iron-scroll-threshold on-lower-threshold="loadMoreData">
 *   <template is="dom-repeat" items="[[items]]">
 *     <div>[[index]]</div>
 *   </template>
 * </iron-scroll-threshold>
 * ```
 *
 * ### Using iron-list
 *
 * ```html
 * <iron-scroll-threshold on-lower-threshold="loadMoreData" id="threshold">
 *   <iron-list scroll-target="threshold" items="[[items]]">
 *     <template>
 *       <div>[[index]]</div>
 *     </template>
 *   </iron-list>
 * </iron-scroll-threshold>
 * ```
 */
interface IronScrollThresholdElement extends IronScrollTargetBehavior, LegacyElementMixin, HTMLElement {
  readonly _defaultScrollTarget: any;

  /**
   * Distance from the top (or left, for horizontal) bound of the scroller
   * where the "upper trigger" will fire.
   */
  upperThreshold: number|null|undefined;

  /**
   * Distance from the bottom (or right, for horizontal) bound of the scroller
   * where the "lower trigger" will fire.
   */
  lowerThreshold: number|null|undefined;

  /**
   * Read-only value that tracks the triggered state of the upper threshold.
   */
  readonly upperTriggered: boolean|null|undefined;

  /**
   * Read-only value that tracks the triggered state of the lower threshold.
   */
  readonly lowerTriggered: boolean|null|undefined;

  /**
   * True if the orientation of the scroller is horizontal.
   */
  horizontal: boolean|null|undefined;
  _scrollHandler(): void;
  _setOverflow(scrollTarget: any): void;
  _initCheck(horizontal: any, isAttached: any): void;

  /**
   * Checks the scroll thresholds.
   * This method is automatically called by iron-scroll-threshold.
   */
  checkScrollThresholds(): void;
  checkScrollThesholds(): void;

  /**
   * Clear the upper and lower threshold states.
   */
  clearTriggers(): void;
}

export {IronScrollThresholdElement};

declare global {

  interface HTMLElementTagNameMap {
    "iron-scroll-threshold": IronScrollThresholdElement;
  }
}