diff --git a/angular-toasty/angular-toasty-tests.ts b/angular-toasty/angular-toasty-tests.ts new file mode 100644 index 000000000..0ba1f9c1c --- /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 000000000..0b5297b0c --- /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; + } +}