// Type definitions for typeahead.js 0.9.3
// Project: http://twitter.github.io/typeahead.js/
// Definitions by: Ivaylo Gochkov
element (i.e.
value
). */ 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; } }