diff --git a/types/angular-block-ui/angular-block-ui-tests.ts b/types/angular-block-ui/angular-block-ui-tests.ts new file mode 100644 index 0000000000..4b3903f9cc --- /dev/null +++ b/types/angular-block-ui/angular-block-ui-tests.ts @@ -0,0 +1,41 @@ +let app: angular.IModule = angular.module('at', ['blockUI']); + +app.config((blockUIConfig: angular.blockUI.BlockUIConfig) => { + blockUIConfig.message = 'Please stop clicking!'; + blockUIConfig.delay = 100; + blockUIConfig.template = '
{{ state | json }}
'; + blockUIConfig.templateUrl = 'my-templates/block-ui-overlay.html'; + blockUIConfig.autoBlock = false; + blockUIConfig.resetOnException = false; + blockUIConfig.autoInjectBodyBlock = false; + blockUIConfig.cssClass = 'block-ui my-custom-class'; + blockUIConfig.blockBrowserNavigation = true; + + blockUIConfig.requestFilter = (config) => { + if (config.url.match(/^\/api\/quote($|\/).*/)) { + return false; + } + return true; + }; + + blockUIConfig.requestFilter = (config) => { + if (config.url.match(/^\/api\/quote($|\/).*/)) { + return 'Hello World'; + } + return 'Loading...'; + }; +}); + +app.controller('Ctrl', ($scope: ng.IScope, blockUI: angular.blockUI.BlockUIService) => { + blockUI.start(); + blockUI.start('Hello'); + blockUI.start({}); + blockUI.start({message: 'World'}); + blockUI.start({delay: 100}); + + blockUI.stop(); + blockUI.reset(); + blockUI.message("Hello Types"); + blockUI.done(); + let b: boolean = blockUI.isBlocking(); +}); diff --git a/types/angular-block-ui/index.d.ts b/types/angular-block-ui/index.d.ts new file mode 100644 index 0000000000..bf311b04a1 --- /dev/null +++ b/types/angular-block-ui/index.d.ts @@ -0,0 +1,168 @@ +// Type definitions for angular-block-ui 0.2 +// Project: https://github.com/McNull/angular-block-ui +// Definitions by: Lasse Nørregaard , Stephan Classen +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as angular from "angular"; + +declare module 'angular' { + namespace blockUI { + interface BlockUIConfig { + /** + * Changes the default message to be used when no message + * has been provided to the start method of the service. + * + * Default value is 'Loading ...'. + */ + message?: string; + + /** + * Specifies the amount in milliseconds before the block + * is visible to the user. By delaying a visible block your + * application will appear more responsive. + * + * The default value is 250. + */ + delay?: number; + + /** + * Specifies a custom template to use as the overlay. + */ + template?: string; + + /** + * Specifies a url to retrieve the template from. + * The current release only works with pre-cached templates, + * which means that this url should be known in the + * $templateCache service of Angular. + * + * If you're using the grunt with html2js or angular-templates, + * which I highly recommend, you're already set. + */ + templateUrl?: string; + + /** + * By default the BlockUI module will start a block whenever + * the Angular $http service has an pending request. + * + * If you don't want this behaviour and want to do all the + * blocking manually you can change this value to false. + */ + autoBlock?: boolean; + + /** + * By default the BlockUI module will reset the block count and + * hide the overlay whenever an exception has occurred. + * + * You can set this value to false if you don't want this behaviour. + */ + resetOnException?: boolean; + + /** + * Allows you to specify a filter function to exclude certain ajax + * requests from blocking the user interface. + * The blockUI service will ignore requests when the function returns `false`. + * + * If the filter function returns a string it will be passed as the message + * argument to the start method of the service. + * + * @param {angular.IRequestConfig} config - the Angular request config object. + * + */ + requestFilter?(config: angular.IRequestConfig): (string | boolean); + + /** + * When the module is started it will inject the main block element + * by adding the block-ui directive to the body element. + */ + autoInjectBodyBlock?: boolean; + + /** + * A string containing the default css classes, separated by spaces, + * that should be applied to each block-ui element. + * + * The default value is `block-ui block-ui-anim-fade` + */ + cssClass?: string; + + /** + * Whenever a user interface block is active, because the single page + * application is still waiting for a response from the backend server, + * the user can still navigate away using the back and forward buttons + * of the browser. + * + * Callbacks registered to handle the responses from the server will + * be executed even if a different view/controller is currently active. + * By setting the blockBrowserNavigation property to true the + * angular-block-ui module will prevent navigation while a fullscreen + * block is active. + * + * Programatic location changes via the $location service are still + * allowed however. + * The navigation block is disabled by default. + */ + blockBrowserNavigation?: boolean; + } + + interface BlockUIService { + /** + * The start method will start the user interface block. + * Because multiple user interface elements can request + * a user interface block at the same time, the service + * keeps track of the number of start calls. + * + * Each call to start() will increase the count and every + * call to stop() will decrease the value. + * Whenever the count reaches 0 the block will end. + * + * Note: By default the block is immediately active after + * calling this method, but to prevent trashing the user + * interface each time a button is pressed, the block is + * visible after a short delay. + * + * This behaviour can be modified in the configuration. + * + * @param {string|IBlockUIConfig} messageOrOptions - + * Either supply the message (string) to be show in the + * overlay or specify an IBlockUIConfig object that will be + * merged/extended into the block ui instance state. + * If no argument is specified the default text message + * from the configuration is used. + */ + start(messageOrOptions?: (string | BlockUIConfig)): void; + + /** + * This will decrease the block count. + * + * The block will end if the count is 0. + */ + stop(): void; + + /** + * The reset will force an unblock by setting the block count to 0. + */ + reset(): void; + + /** + * Queues a callback function to be called when the block has finished. + * + * This can be useful whenever you wish to redirect the user + * to a different location while there are still pending AJAX requests. + */ + done(): void; + + /** + * Allows the message shown in the overlay to be updated + * while to block is active. + * + * @param {string} message - The message to show in the overlay. + */ + message(message: string): void; + + /** + * Returns whether currently a block is shown for the instance or not. + */ + isBlocking(): boolean; + } + } +} diff --git a/types/angular-block-ui/tsconfig.json b/types/angular-block-ui/tsconfig.json new file mode 100644 index 0000000000..b1b705a6e5 --- /dev/null +++ b/types/angular-block-ui/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "angular-block-ui-tests.ts" + ] +} diff --git a/types/angular-block-ui/tslint.json b/types/angular-block-ui/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/angular-block-ui/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }