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;
+ }
+}