diff --git a/angular-idle/angular-idle-tests.ts b/angular-idle/angular-idle-tests.ts new file mode 100644 index 0000000000..fc39bf72a8 --- /dev/null +++ b/angular-idle/angular-idle-tests.ts @@ -0,0 +1,23 @@ +/// + +angular.module('app', ['ngIdle']) + .config(['$keepaliveProvider', '$idleProvider', + ($keepaliveProvider: ng.idle.IKeepAliveProvider, $idleProvider: ng.idle.IIdleProvider) => { + $idleProvider.activeOn('mousemove keydown DOMMouseScroll mousewheel mousedown'); + $idleProvider.idleDuration(5); + $idleProvider.warningDuration(5); + $idleProvider.keepalive(true) + $idleProvider.autoResume(true); + $keepaliveProvider.interval(10); + }]) + .run(['$keepalive', '$idle', ($keepalive: ng.idle.IKeepAliveService, $idle: ng.idle.IIdleService) => { + $idle.watch(); + + if ($idle.running() || $idle.idling()) { + $idle.unwatch(); + } + + $keepalive.start(); + $keepalive.ping(); + $keepalive.stop(); + }]); \ No newline at end of file diff --git a/angular-idle/angular-idle.d.ts b/angular-idle/angular-idle.d.ts new file mode 100644 index 0000000000..57ef2380b6 --- /dev/null +++ b/angular-idle/angular-idle.d.ts @@ -0,0 +1,134 @@ +// Type definitions for ng-idle v0.3.5 +// Project: http://hackedbychinese.github.io/ng-idle/ +// Definitions by: mthamil +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module ng.idle { + + /** + * Used to configure the $keepalive service. + */ + interface IKeepAliveProvider extends IServiceProvider { + + /** + * If configured, options will be used to issue a request using $http. + * If the value is null, no HTTP request will be issued. + * You can specify a string, which it will assume to be a URL to a simple GET request. + * Otherwise, you can use the same options $http takes. However, cache will always be false. + * + * @param value May be string or object, default is null. + */ + http(value: any): void; + + /** + * This specifies how often the keepalive event is triggered and the + * HTTP request is issued. + * + * @param seconds Integer, default is 5 minutes. Must be greater than 0. + */ + interval(seconds: number): void; + } + + /** + * $keepalive will use a timeout to periodically wake, broadcast a $keepalive event on the root scope, + * and optionally make an $http request. By default, the $idle service will stop and start $keepalive + * when a user becomes idle or returns from idle, respectively. It is also started automatically when + * $idle.watch() is called. This can be disabled by configuring the $idleProvider. + */ + interface IKeepAliveService { + + /** + * Starts pinging periodically until stop() is called. + */ + start(): void; + + /** + * Stops pinging. + */ + stop(): void; + + /** + * Performs one ping only. + */ + ping(): void; + } + + /** + * Used to configure the $idle service. + */ + interface IIdleProvider extends IServiceProvider { + + /** + * Specifies the DOM events the service will watch to reset the idle timeout. + * Multiple events should be separated by a space. + * + * @param events string, default 'mousemove keydown DOMMouseScroll mousewheel mousedown' + */ + activeOn(events: string): void; + + /** + * The idle timeout duration in seconds. After this amount of time passes without the user + * performing an action that triggers one of the watched DOM events, the user is considered + * idle. + * + * @param seconds integer, default is 20min + */ + idleDuration(seconds: number): void; + + /** + * The amount of time the user has to respond (in seconds) before they have been considered + * timed out. + * + * @param seconds integer, default is 30s + */ + warningDuration(seconds: number): void; + + /** + * When true, user activity will automatically interrupt the warning countdown and reset the + * idle state. If false, you will need to manually call watch() when you want to start + * watching for idleness again. + * + * @param enabled boolean, default is true + */ + autoResume(enabled: boolean): void; + + /** + * When true, the $keepalive service is automatically stopped and started as needed. + * + * @param enabled boolean, default is true + */ + keepalive(enabled: boolean): void; + } + + /** + * $idle, once watch() is called, will start a timeout which if expires, will enter a warning state + * countdown. Once the countdown reaches zero, idle will broadcast a timeout event indicating the + * user has timed out (where your app should log them out or whatever you like). If the user performs + * an action that triggers a watched DOM event that bubbles up to document.body, this will reset the + * idle/warning state and start the process over again. + */ + interface IIdleService { + + /** + * Whether or not the watch() has been called and it is watching for idleness. + */ + running(): boolean; + + /** + * Whether or not the user appears to be idle. + */ + idling(): boolean; + + /** + * Starts watching for idleness, or resets the idle/warning state and continues watching. + */ + watch(): void; + + /** + * Stops watching for idleness, and resets the idle/warning state. + */ + unwatch(): void; + } +} \ No newline at end of file