UNPKG

typescript-closure-tools

Version:

Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files

279 lines (251 loc) 9.38 kB
// Type definitions for typeahead.js 0.9.3 // Project: http://twitter.github.io/typeahead.js/ // Definitions by: Ivaylo Gochkov <https://github.com/igochkov/> // Definitions: https://github.com/borisyankov/DefinitelyTyped /// <reference path="../jquery/jquery.d.ts"/> interface JQuery { /** * Turns an input[type="text"] element into a typeahead. * * @constructor * @param dataset Single dataset */ typeahead(dataset: Twitter.Typeahead.Dataset): JQuery; /** * Turns an input[type="text"] element into a typeahead. * * @constructor * @param dataset Array of datasets */ typeahead(datasets: Twitter.Typeahead.Dataset[]): JQuery; /** * Destroys previously initialized typeaheads. This entails reverting * DOM modifications and removing event handlers. * * @constructor * @param methodName Method 'destroy' */ typeahead(methodName: 'destroy'): JQuery; /** * Sets the current query of the typeahead. This is always preferable to * using $("input.typeahead").val(query), which will result in unexpected * behavior. To clear the query, simply set it to an empty string. * * @constructor * @param methodName Method 'setQuery' * @param query The query to be set */ typeahead(methodName: 'setQuery', query: string): JQuery; /** * Accommodates the destroy and setQuery overloads. * * @constructor * @param methodName Method name ('destroy' or 'setQuery') * @param query The query to be set in case method 'setQuery' is used. */ typeahead(methodName: string, query: string): JQuery; /** * Accomodates specifying options such as hint and highlight. * This is in correspondence to the examples mentioned in http://twitter.github.io/typeahead.js/examples/ * * @constructor * @param options ('hint' or 'highlight' or 'minLength' all of which are optional) * @param dataset Array of datasets */ typeahead(options: Twitter.Typeahead.Options, dataset: Twitter.Typeahead.Dataset): JQuery; } declare module Twitter.Typeahead { /** * A dataset is an object that defines a set of data that hydrates * suggestions. Typeaheads can be backed by multiple datasets. * Given a query, a typeahead instance will inspect its backing * datasets and display relevant suggestions to the end-user. */ interface Dataset { /** * The string used to identify the dataset. Used by typeahead.js * to cache intelligently. */ name: string; /** * The key used to access the value of the datum in the datum object. * Defaults to value. */ valueKey?: string; /** * The max number of suggestions from the dataset to display * for a given query. Defaults to 5. */ limit?: number; /** * The template used to render suggestions. Can be a string or * a precompiled template. If not provided, suggestions will render * as their value contained in a <p> element (i.e. <p>value</p>). */ template?: any; /** * The template engine used to compile/render template if it is a * string. Any engine can use used as long as it adheres to the * expected API. Required if template is a string. */ engine?: string; /** * The header rendered before suggestions in the dropdown menu. * Can be either a DOM element or HTML. */ header?: any; /** * The footer rendered after suggestions in the dropdown menu. * Can be either a DOM element or HTML. */ footer?: any; /** * An array of datums or strings. */ local?: any[]; /** * Can be a URL to a JSON file containing an array of datums or, * if more configurability is needed, a prefetch options object. */ prefetch?: any; /** * Can be a URL to fetch suggestions from when the data provided by * local and prefetch is insufficient or, if more configurability is * needed, a remote options object. */ remote?: any; } /** * Prefetched data is fetched and processed on initialization. * If the browser supports localStorage, the processed data will be cached * there to prevent additional network requests on subsequent page loads. */ interface PrefetchOptions { /** * A URL to a JSON file containing an array of datums. Required. */ url: string; /** * The time (in milliseconds) the prefetched data should be cached * in localStorage. Defaults to 86400000 (1 day). */ ttl?: number; /** * A function that transforms the response body into an array of datums. * * @param parsedResponse Response body */ filter?: (parsedResponse: any) => Datum[]; } /** * Remote data is only used when the data provided by local and prefetch * is insufficient. In order to prevent an obscene number of requests * being made to remote endpoint, typeahead.js rate-limits remote requests. */ interface RemoteOptions { /** * A URL to make requests to when the data provided by local and * prefetch is insufficient. Required. */ url: string; /** * The type of data you're expecting from the server. Defaults to json. * @see http://api.jquery.com/jQuery.ajax/ for more info. */ dataType?: string; /** * Determines whether or not the browser will cache responses. * @see http://api.jquery.com/jQuery.ajax/ for more info. */ cache?: boolean; /** * Sets a timeout for requests. * @see http://api.jquery.com/jQuery.ajax/ for more info. */ timeout?: number; /** * The pattern in url that will be replaced with the user's query * when a request is made. Defaults to %QUERY. */ wildcard?: string; /** * Overrides the request URL. If set, no wildcard substitution will * be performed on url. * * @param url Replacement URL * @param uriEncodedQuery Encoded query * @returns A valid URL */ replace?: (url: string, uriEncodedQuery: string) => string; /** * The function used for rate-limiting network requests. * Can be either 'debounce' or 'throttle'. Defaults to 'debounce'. */ rateLimitFn?: string; /** * The time interval in milliseconds that will be used by rateLimitFn. * Defaults to 300. */ rateLimitWait?: number; /** * The max number of parallel requests typeahead.js can have pending. * Defaults to 6. */ maxParallelRequests?: number; /** * A pre-request callback. Can be used to set custom headers. * @see http://api.jquery.com/jQuery.ajax/ for more info. */ beforeSend?: (jqXhr: JQueryXHR, settings: JQueryAjaxSettings) => void; /** * Transforms the response body into an array of datums. * * @param parsedResponse Response body */ filter?: (parsedResponse: any) => Datum[]; } /** * The individual units that compose datasets are called datums. * The canonical form of a datum is an object with a value property and * a tokens property. * * For ease of use, datums can also be represented as a string. * Strings found in place of datum objects are implicitly converted * to a datum object. * * When datums are rendered as suggestions, the datum object is the * context passed to the template engine. This means if you include any * arbitrary properties in datum objects, those properties will be * available to the template used to render suggestions. */ interface Datum { /** * The string that represents the underlying value of the datum */ value: string; /** * A collection of single-word strings that aid typeahead.js in * matching datums with a given query. */ tokens: string[]; } /** * When initializing a typeahead, there are a number of options you can configure. */ interface Options { /** * highlight: If true, when suggestions are rendered, * pattern matches for the current query in text nodes will be wrapped in a strong element. * Defaults to false. */ highlight?: boolean; /** * If false, the typeahead will not show a hint. Defaults to true. */ hint?: boolean; /** * The minimum character length needed before suggestions start getting rendered. Defaults to 1. */ minLength?: number; } }