diff --git a/README.md b/README.md
index 4613bb106..3e2ff417e 100755
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-DefinitelyTyped [](https://travis-ci.org/borisyankov/DefinitelyTyped)
+DefinitelyTyped [](https://travis-ci.org/borisyankov/DefinitelyTyped)
===============
The repository for *high quality* TypeScript type definitions.
@@ -232,6 +232,7 @@ List of Definitions
* [TweenJS](http://www.createjs.com/#!/TweenJS) (by [Pedro Ferreira](https://bitbucket.org/drk4))
* [tween.js](https://github.com/sole/tween.js/) (by [Adam R. Smith](https://github.com/sunetos))
* [twitter-bootstrap-wizard](https://github.com/VinceG/twitter-bootstrap-wizard) (by [Blake Niemyjski](https://github.com/niemyjski))
+* [Twitter Typeahead](http://twitter.github.io/typeahead.js) (by [Ivaylo Gochkov](https://github.com/igochkov))
* [Ubuntu Unity Web API](https://launchpad.net/libunity-webapps) (by [John Vrbanac](https://github.com/jmvrbanac))
* [Underscore.js](http://underscorejs.org/) (by [Boris Yankov](https://github.com/borisyankov))
* [Underscore.js (Typed)](http://underscorejs.org/) (by [Josh Baldwin](https://github.com/jbaldwin/))
diff --git a/typeahead/typeahead-tests.ts b/typeahead/typeahead-tests.ts
new file mode 100644
index 000000000..dee467e0f
--- /dev/null
+++ b/typeahead/typeahead-tests.ts
@@ -0,0 +1,73 @@
+///
{{language}}
', + '{{name}}
', + '{{description}}
' + ].join(''), + engine: Hogan +}); + +// Arabic Phrases +// Hardcoded list showing Right - To - Left(RTL) support +$('.example-arabic .typeahead').typeahead({ + name: 'arabic', + local: [ + "الإنجليزية", + "نعم", + "لا", + "مرحبا", + "کيف الحال؟", + "أهلا", + "مع السلامة", + "لا أتكلم العربية", + "لا أفهم", + "أنا جائع" + ] +}); + +// NBA and NHL Teams +// Two datasets that are prefetched, stored, and searched on the client +$('.example-sports .typeahead').typeahead([ + { + name: 'nba-teams', + prefetch: '../data/nba.json', + header: '{{value}} – {{year}}
', + engine: Hogan + } +]); diff --git a/typeahead/typeahead.d.ts b/typeahead/typeahead.d.ts new file mode 100644 index 000000000..8d4050c94 --- /dev/null +++ b/typeahead/typeahead.d.ts @@ -0,0 +1,246 @@ +// Type definitions for Twitter's typeahead.js 0.9.3 +// Project: http://twitter.github.io/typeahead.js/ +// Definitions by: Ivaylo Gochkovelement (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[]; + } +}