From b41162d7fc2dc4b55e07c8047cdf30a6f729eddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20M=C3=BCnch?= Date: Wed, 12 Aug 2015 12:37:15 +0200 Subject: [PATCH 1/2] Add definitions for angular-toasty --- angular-toasty/angular-toasty-tests.ts | 121 ++++++++++++ angular-toasty/angular-toasty.d.ts | 255 +++++++++++++++++++++++++ 2 files changed, 376 insertions(+) create mode 100644 angular-toasty/angular-toasty-tests.ts create mode 100644 angular-toasty/angular-toasty.d.ts diff --git a/angular-toasty/angular-toasty-tests.ts b/angular-toasty/angular-toasty-tests.ts new file mode 100644 index 0000000000..0ba1f9c1ce --- /dev/null +++ b/angular-toasty/angular-toasty-tests.ts @@ -0,0 +1,121 @@ +/// + +interface AngularToastyTestControllerScope extends ng.IScope { + options:toasty.IToastyConfig; + newToast(): void; + clearToasties(): void; +} + +class AngularToastyTestController { + + static $inject = ['$rootScope', '$scope', 'toasty']; + + constructor($rootScope:ng.IRootScopeService, $scope:AngularToastyTestControllerScope, toasty:toasty.IToastyService) { + + // When a new toast is added + $rootScope.$on('toasty-added', function (event, toast) { + console.log(toast) + }); + // When a toast is clicked + $rootScope.$on('toasty-clicked', function (event, toast) { + console.log(toast) + }); + // When a toast is cleared/removed + $rootScope.$on('toasty-cleared', function (event, toast) { + console.log(toast) + }); + + var options: toasty.IToastyConfig = { + title: 'Toast It!', + msg: 'Mmmm, tasties...', + showClose: true, + clickToClose: false, + timeout: 5000, + sound: true, + html: false, + shake: false, + theme: 'bootstrap' + }; + + toasty(options); + toasty.default(options); + toasty.info(options); + toasty.success(options); + toasty.wait(options); + toasty.error(options); + toasty.warning(options); + + $scope.newToast = function () { + + toasty.clear(); // Clear all + toasty.clear(1); // Remove a single toast by it's ID + + toasty('Quick Toast!'); + toasty.success('Quick Success Toast!'); + + toasty({ + title: 'New Toast!', + onAdd: function () { + console.log('Toasty ' + this.id + ' has been added!', this); + }, + onRemove: function () { + console.log('Toasty ' + this.id + ' has been removed!', this); + }, + onClick: function () { + console.log('Toasty ' + this.id + ' has been clicked!', this); + } + }); + + toasty({ + title: 'Ping!', + msg: 'Take me to Google!', + showClose: false, + clickToClose: true, + timeout: 10000, + sound: false, + html: true, + shake: true, + theme: 'bootstrap' + }); + + toasty(1); + + toasty[$scope.options.type]({ + title: $scope.options.title, + msg: $scope.options.msg, + showClose: $scope.options.showClose, + clickToClose: $scope.options.clickToClose, + sound: $scope.options.sound, + shake: $scope.options.shake, + timeout: $scope.options.timeout || false, + html: $scope.options.html, + theme: $scope.options.theme, + onAdd: function () { + console.log('Toasty ' + this.id + ' has been added!'); + }, + onRemove: function () { + console.log('Toasty ' + this.id + ' has been removed!'); + }, + onClick: function () { + console.log('Toasty ' + this.id + ' has been clicked!'); + } + }); + }; + + $scope.clearToasties = function () { + toasty.clear(); + }; + + } +}; + +angular + .module('main', ['angular-toasty']) + .config(['toastyConfigProvider', (toastyConfigProvider:toasty.IToastyConfigProvider) => { + toastyConfigProvider.setConfig({ + title: 'global', + sound: false, + shake: true + }); + }]) + .controller('MainController', AngularToastyTestController); diff --git a/angular-toasty/angular-toasty.d.ts b/angular-toasty/angular-toasty.d.ts new file mode 100644 index 0000000000..0b5297b0c9 --- /dev/null +++ b/angular-toasty/angular-toasty.d.ts @@ -0,0 +1,255 @@ +// Type definitions for Angular Toasty v1.0.2 +// Project: https://github.com/invertase/angular-toasty +// Definitions by: Dominik Muench +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module toasty { + + interface IToastyService { + /** + * Create a toast with the given options and type. + * @param options + * @param type + */ + (options: IToastyConfig, type?: string): void; + + /** + * Create a default "quick toast" with the given title. + * @param title + */ + (title: string|number): void; + + /** + * Create a default toast with the given options. + * @param options + */ + default(options: IToastyConfig): void; + + /** + * Create a default "quick toast" with the given title. + * @param title + */ + default(title: string|number): void; + + /** + * Create an info toast with the given options. + * @param options + */ + info(options: IToastyConfig): void; + + /** + * Create an info "quick toast" with the given title. + * @param title + */ + info(title: string|number): void; + + /** + * Create a wait toast with the given options. + * @param options + */ + wait(options: IToastyConfig): void; + + /** + * Create a wait "quick toast" with the given title. + * @param title + */ + wait(title: string|number): void; + + /** + * Create a success toast with the given options. + * @param options + */ + success(options: IToastyConfig): void; + + /** + * Create a success "quick toast" with the given title. + * @param title + */ + success(title: string|number): void; + + /** + * Create an error toast with the given options. + * @param options + */ + error(options: IToastyConfig): void; + + /** + * Create an error "quick toast" with the given title. + * @param title + */ + error(title: string|number): void; + + /** + * Create a warning toast with the given options. + * @param options + */ + warning(options: IToastyConfig): void; + + /** + * Create a warning "quick toast" with the given title. + * @param title + */ + warning(title: string|number): void; + + /** + * Clear toast(s). + * @param id Optional ID to clear a specific toast. + */ + clear(id?): void; + + /** + * Get the global config. + */ + getGlobalConfig(): IGlobalConfig; + + } + + interface IToastyConfig { + /** + * The toast's title. + */ + title: string; + + /** + * The toast's message. + */ + msg?: string; + + /** + * Whether to show the 'X' icon to close the toast. + */ + showClose?: boolean; + + /** + * Whether clicking the toast closes it. + */ + clickToClose?: boolean; + + /** + * How long (in milliseconds) the toast shows before it's removed. Set to false to disable. + */ + timeout?: number; + + /** + * Whether to play a sound when a toast is added. + */ + sound?: boolean; + + /** + * Whether HTML is allowed in toasts. + */ + html?: boolean; + + /** + * Whether to shake the toasts. + */ + shake?: boolean; + + /** + * What theme to use. + * - 'default' + * - 'material' + * - 'bootstrap' + */ + theme?: string; + + /** + * The toast's type: + * - 'default' + * - 'info' + * - 'success' + * - 'wait' + * - 'error' + * - 'warning' + */ + type?: string; + + /** + * Add event handler. + */ + onAdd?: Function; + + /** + * Remove event handler. + */ + onRemove?: Function; + + /** + * Click event handler. + */ + onClick?: Function; + } + + interface IGlobalConfig { + + /** + * Maximum number of toasts to show at once. + */ + limit?: number; + + /** + * The toast's title. + */ + title?: string; + + /** + * The toast's message. + */ + msg?: string; + + /** + * Whether to show the 'X' icon to close the toast. + */ + showClose?: boolean; + + /** + * Whether clicking the toast closes it. + */ + clickToClose?: boolean; + + /** + * The window position where the toast pops up. + * + */ + position?: string; + + /** + * How long (in miliseconds) the toast shows before it's removed. Set to false to disable. + */ + timeout?: number|boolean; + + /** + * Whether to play a sound when a toast is added. + */ + sound?: boolean; + + /** + * Whether HTML is allowed in toast. + */ + html?: boolean; + + /** + * Whether to shake the toast. + */ + shake?: boolean; + + /** + * What theme to use. + * - 'default' + * - 'material' + * - 'bootstrap' + */ + theme?: string; + } + + interface IToastyConfigProvider { + /** + * + * @param override + */ + setConfig(override: IGlobalConfig); + $get(): IGlobalConfig; + } +} From 0832fc8bcd0c8ec773942ab4b47e6289419478cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20M=C3=BCnch?= Date: Wed, 12 Aug 2015 12:47:14 +0200 Subject: [PATCH 2/2] Fix compile errors --- angular-toasty/angular-toasty-tests.ts | 119 ++++++++----------------- angular-toasty/angular-toasty.d.ts | 8 +- 2 files changed, 39 insertions(+), 88 deletions(-) diff --git a/angular-toasty/angular-toasty-tests.ts b/angular-toasty/angular-toasty-tests.ts index 0ba1f9c1ce..017d821720 100644 --- a/angular-toasty/angular-toasty-tests.ts +++ b/angular-toasty/angular-toasty-tests.ts @@ -1,29 +1,19 @@ /// interface AngularToastyTestControllerScope extends ng.IScope { + button:string; options:toasty.IToastyConfig; + runToasts(): void; + runQuickToasts(): void; newToast(): void; - clearToasties(): void; + clearToasts(): void; } class AngularToastyTestController { - static $inject = ['$rootScope', '$scope', 'toasty']; + static $inject = ['$scope', 'toasty']; - constructor($rootScope:ng.IRootScopeService, $scope:AngularToastyTestControllerScope, toasty:toasty.IToastyService) { - - // When a new toast is added - $rootScope.$on('toasty-added', function (event, toast) { - console.log(toast) - }); - // When a toast is clicked - $rootScope.$on('toasty-clicked', function (event, toast) { - console.log(toast) - }); - // When a toast is cleared/removed - $rootScope.$on('toasty-cleared', function (event, toast) { - console.log(toast) - }); + constructor($scope:AngularToastyTestControllerScope, toasty:toasty.IToastyService) { var options: toasty.IToastyConfig = { title: 'Toast It!', @@ -34,78 +24,42 @@ class AngularToastyTestController { sound: true, html: false, shake: false, - theme: 'bootstrap' + theme: 'bootstrap', + onAdd: function () { + console.log('Toasty ' + this.id + ' has been added!', this); + }, + onRemove: function () { + console.log('Toasty ' + this.id + ' has been removed!', this); + }, + onClick: function () { + console.log('Toasty ' + this.id + ' has been clicked!', this); + } }; - toasty(options); - toasty.default(options); - toasty.info(options); - toasty.success(options); - toasty.wait(options); - toasty.error(options); - toasty.warning(options); - - $scope.newToast = function () { - - toasty.clear(); // Clear all - toasty.clear(1); // Remove a single toast by it's ID - - toasty('Quick Toast!'); - toasty.success('Quick Success Toast!'); - - toasty({ - title: 'New Toast!', - onAdd: function () { - console.log('Toasty ' + this.id + ' has been added!', this); - }, - onRemove: function () { - console.log('Toasty ' + this.id + ' has been removed!', this); - }, - onClick: function () { - console.log('Toasty ' + this.id + ' has been clicked!', this); - } - }); - - toasty({ - title: 'Ping!', - msg: 'Take me to Google!', - showClose: false, - clickToClose: true, - timeout: 10000, - sound: false, - html: true, - shake: true, - theme: 'bootstrap' - }); - - toasty(1); - - toasty[$scope.options.type]({ - title: $scope.options.title, - msg: $scope.options.msg, - showClose: $scope.options.showClose, - clickToClose: $scope.options.clickToClose, - sound: $scope.options.sound, - shake: $scope.options.shake, - timeout: $scope.options.timeout || false, - html: $scope.options.html, - theme: $scope.options.theme, - onAdd: function () { - console.log('Toasty ' + this.id + ' has been added!'); - }, - onRemove: function () { - console.log('Toasty ' + this.id + ' has been removed!'); - }, - onClick: function () { - console.log('Toasty ' + this.id + ' has been clicked!'); - } - }); + $scope.runToasts = function () { + toasty(options); + toasty.default(options); + toasty.info(options); + toasty.success(options); + toasty.wait(options); + toasty.error(options); + toasty.warning(options); }; - $scope.clearToasties = function () { + $scope.runQuickToasts = function () { + var title = 'Toast it!' + toasty(title); + toasty.default(title); + toasty.info(title); + toasty.success(title); + toasty.wait(title); + toasty.error(title); + toasty.warning(title); + }; + + $scope.clearToasts = function () { toasty.clear(); }; - } }; @@ -114,6 +68,7 @@ angular .config(['toastyConfigProvider', (toastyConfigProvider:toasty.IToastyConfigProvider) => { toastyConfigProvider.setConfig({ title: 'global', + limit: 10, sound: false, shake: true }); diff --git a/angular-toasty/angular-toasty.d.ts b/angular-toasty/angular-toasty.d.ts index 0b5297b0c9..c4e3923898 100644 --- a/angular-toasty/angular-toasty.d.ts +++ b/angular-toasty/angular-toasty.d.ts @@ -97,7 +97,7 @@ declare module toasty { * Clear toast(s). * @param id Optional ID to clear a specific toast. */ - clear(id?): void; + clear(id?: number): void; /** * Get the global config. @@ -245,11 +245,7 @@ declare module toasty { } interface IToastyConfigProvider { - /** - * - * @param override - */ - setConfig(override: IGlobalConfig); + setConfig(override: IGlobalConfig): void; $get(): IGlobalConfig; } }