diff --git a/select2/select2-tests.ts b/select2/select2-tests.ts index 9f38782e02..665618daf3 100644 --- a/select2/select2-tests.ts +++ b/select2/select2-tests.ts @@ -71,6 +71,27 @@ $("#e6").select2({ formatSelection: movieFormatSelection, dropdownCssClass: "bigdrop" }); +$("#e6").select2({ + placeholder: "Search for a movie", + minimumInputLength: 1, + ajax: { + url: () => { return "http://api.rottentomatoes.com/api/public/v1.0/movies.json"; }, + dataType: 'jsonp', + data: function (term, page) { + return { + q: term, + page_limit: 10, + apikey: "ju6z9mjyajq2djue3gbvv26t" + }; + }, + results: function (data, page) { + return { results: data.movies }; + } + }, + formatResult: movieFormatResult, + formatSelection: movieFormatSelection, + dropdownCssClass: "bigdrop" +}); $("#e7").select2({ placeholder: "Search for a movie", minimumInputLength: 3, @@ -161,4 +182,16 @@ $("#e17_2").select2({ } }); $("#e18,#e18_2").select2(); -alert("Selected value is: " + $("#e8").select2("val")); $("#e8").select2("val", { id: "CA", text: "Califoria" }); \ No newline at end of file +alert("Selected value is: " + $("#e8").select2("val")); $("#e8").select2("val", { id: "CA", text: "Califoria" }); + +$("#e8").select2("val"); +$("#e8").select2("val", "CA"); +$("#e8").select2("data"); +$("#e8").select2("data", { id: "CA", text: "Califoria" }); +$("#e8").select2("destroy"); +$("#e8").select2("open"); +$("#e8").select2("enable", false); +$("#e8").select2("readonly", false); +$("#e8").select2('container'); +$("#e8").select2('onSortStart'); +$("#e8").select2('onSortEnd'); \ No newline at end of file diff --git a/select2/select2.d.ts b/select2/select2.d.ts index e5fb165711..886ae6d349 100644 --- a/select2/select2.d.ts +++ b/select2/select2.d.ts @@ -20,7 +20,10 @@ interface AjaxFunction { interface Select2AjaxOptions { transport?: AjaxFunction; - url?: string; + /** + * Url to make request to, Can be string or a function returning a string. + */ + url?: any; dataType?: string; quietMillis?: number; data?: (term: string, page: number, context: any) => any; @@ -72,8 +75,60 @@ interface JQuery { select2(): JQuery; select2(it: IdTextPair): JQuery; select2(options: Select2Options): JQuery; - select2(method: string, something: string): JQuery; - select2(method: string, something: string[]): JQuery; - select2(method: string, something: IdTextPair[]): JQuery; - select2(method: string, options: IdTextPair): JQuery; + select2(method: string): any; + select2(method: string, value: any, trigger?: boolean): any; + /** + * Get the id value of the current selection + */ + select2(method: 'val'): any; + /** + * Set the id value of the current selection + * @params value Value to set the id to + * @params triggerChange Should a change event be triggered + */ + select2(method: 'val', value: any, triggerChange?: boolean): any; + /** + * Get the data object of the current selection + */ + select2(method: 'data'): any; + /** + * Set the data of the current selection + * @params value Object to set the data to + * @params triggerChange Should a change event be triggered + */ + select2(method: 'data', value: any, triggerChange?: boolean): any; + /** + * Reverts changes to DOM done by Select2. Any selection done via Select2 will be preserved. + */ + select2(method: 'destroy'): void; + /** + * Opens the dropdown + */ + select2(method: 'open'): void; + /** + * Closes the dropdown + */ + select2(method: 'close'): void; + /** + * Enables or disables Select2 and its underlying form component + * @param value True if it should be enabled false if it should be disabled + */ + select2(method: 'enable', value: boolean): void; + /** + * Toggles readonly mode on Select2 and its underlying form component + * @param value True if it should be readonly false if it should be read write + */ + select2(method: 'readonly', value: boolean): void; + /** + * Retrieves the main container element that wraps all of DOM added by Select2 + */ + select2(method: 'container'): HTMLElement; + /** + * Notifies Select2 that a drag and drop sorting operation has started + */ + select2(method: 'onSortStart'): void; + /** + * Notifies Select2 that a drag and drop sorting operation has finished + */ + select2(method: 'onSortEnd'): void; }