diff --git a/types/ui-select/index.d.ts b/types/ui-select/index.d.ts index 5b69991a3e..0db8ec888d 100644 --- a/types/ui-select/index.d.ts +++ b/types/ui-select/index.d.ts @@ -1,7 +1,8 @@ -// Type definitions for ui-select 0.13.2 +// Type definitions for ui-select 0.19.8 // Project: https://github.com/angular-ui/ui-select // Definitions by: Niko Kovačič -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// Adam Kwiatek +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 /// @@ -9,11 +10,68 @@ import * as angular from 'angular'; declare module 'angular' { - export namespace ui.select { - interface ISelectConfig { - appendToBody: boolean; - resetSearchInput: boolean; - theme: string; - } - } + export namespace ui.select { + interface ISelectConfig { + appendToBody: boolean; + backspaceReset: boolean; + closeOnSelect: boolean; + dropdownPosition: string; + generateId(): number; + paste?: IPasteFn; + placeholder: string; + refreshDelay: number; + removeSelected: boolean; + resetSearchInput: boolean; + searchEnabled: boolean; + skipFocusser: boolean; + sortable: boolean; + spinnerClass: string; + spinnerEnabled: boolean; + theme: string; + } + + interface ISelectController { + activeIndex: number; + clickTriggeredSelect: boolean; + closeOnSelect: boolean; + close(skipFocusser?: boolean): void; + disabled: boolean; + dropdownPosition: string; + focus: boolean; + isEmpty(): boolean; + isGrouped?: boolean; + isLocked(): boolean; + itemProperty?: string; + open: boolean; + parserResult?: IRepeatExpression; + paste?: IPasteFn; + placeholder: string; + refreshDelay: number; + refreshing: boolean; + removeSelected: boolean; + resetSearchInput: boolean; + searchEnabled: boolean; + search: string; + setFocus(): void; + sizeSearchInput(): void; + skipFocusser: boolean; + sortable: boolean; + spinnerClass: string; + spinnerEnabled: boolean; + } + + interface IPasteFn { + (data: string): void; + } + + interface IRepeatExpression { + filters: string; + itemName: string; + keyName: string; + modelMapper: string; + repeatExpression(grouped: boolean): string; + source: string; + trackByExp: string; + } + } } diff --git a/types/ui-select/ui-select-tests.ts b/types/ui-select/ui-select-tests.ts index 12abc31c1e..60d8770c41 100644 --- a/types/ui-select/ui-select-tests.ts +++ b/types/ui-select/ui-select-tests.ts @@ -1,9 +1,72 @@ import * as angular from 'angular'; -angular - .module('main', ['ui-select']) - .config(function(uiSelectConfig: angular.ui.select.ISelectConfig) { - uiSelectConfig.appendToBody = true; - uiSelectConfig.resetSearchInput = true; - uiSelectConfig.theme = "bootstrap"; - }); \ No newline at end of file +angular.module('main', ['ui-select']).config(function(uiSelectConfig: angular.ui.select.ISelectConfig) { + uiSelectConfig.appendToBody = true; + uiSelectConfig.backspaceReset = true; + uiSelectConfig.closeOnSelect = true; + uiSelectConfig.dropdownPosition = 'auto'; + uiSelectConfig.generateId = function() { + return 0; + }; + uiSelectConfig.paste = function(data: string) { + console.log(`Pasted [${data}]`); + }; + uiSelectConfig.paste = undefined; + uiSelectConfig.placeholder = ''; + uiSelectConfig.refreshDelay = 1000; + uiSelectConfig.removeSelected = true; + uiSelectConfig.resetSearchInput = true; + uiSelectConfig.searchEnabled = true; + uiSelectConfig.skipFocusser = false; + uiSelectConfig.sortable = false; + uiSelectConfig.spinnerClass = 'glyphicon glyphicon-refresh ui-select-spin'; + uiSelectConfig.spinnerEnabled = false; + uiSelectConfig.theme = 'bootstrap'; +}); + +angular.module('main', ['ui-select']).directive('myUiSelect', function() { + return { + require: 'uiSelect', + link: function( + $scope: angular.IScope, + element: angular.IAugmentedJQuery, + attrs: angular.IAttributes, + $select: angular.ui.select.ISelectController, + ) { + 1 === $select.activeIndex; + true === $select.clickTriggeredSelect; + true === $select.closeOnSelect; + $select.close(); + $select.close(false); + true === $select.disabled; + 'text' === $select.dropdownPosition; + true === $select.focus; + true === $select.isEmpty(); + true === $select.isGrouped; + true === $select.isLocked(); + 'text' === $select.itemProperty; + true === $select.open; + 'text' === $select.parserResult.filters; + 'text' === $select.parserResult.itemName; + 'text' === $select.parserResult.keyName; + 'text' === $select.parserResult.modelMapper; + 'text' === $select.parserResult.repeatExpression(true); + 'text' === $select.parserResult.source; + 'text' === $select.parserResult.trackByExp; + $select.paste('Pasted text'); + 'text' === $select.placeholder; + 1 === $select.refreshDelay; + true === $select.refreshing; + true === $select.removeSelected; + true === $select.resetSearchInput; + true === $select.searchEnabled; + 'text' === $select.search; + $select.setFocus(); + $select.sizeSearchInput(); + true === $select.skipFocusser; + true === $select.sortable; + 'text' === $select.spinnerClass; + true === $select.spinnerEnabled; + }, + }; +});