moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
141 lines • 10.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { AbstractPgCheckService } from './abstract-pg-check.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "./abstract-pg-check.service";
/**
* @deprecated
* Use this service to implement Route Guards in your application. This is for a
* typical form flow, where the user must proceed sequentially from one page to
* the next.
*
* To setup, you must:
*
* 1. Create a service implementing the abstract methods in `AbstractPgService` ("RegistrationService")
* 2. Setup AbstractPgCheckService in NgModule providers, to `useExisting` the service from previous step.
* 3. Add this RouteGuardService to same providers from previous step.
* 4. Configure routes to use RouteGuardService - `canActivate` or `canActivateChild`
* 5. Have each "page" in the form call `setPageIncomplete()` or `setPageComplete()` (from the "RegistrationService")
*
*
* You must make sure to setup AbstractPgCheckService in NgModules correctly.
*
* \@example
* //STEP 2 + STEP 3
* //registration.module.ts
* providers: [
* ...
* { provide: AbstractPgCheckService, useExisting: RegistrationService },
* RouteGuardService
* ]
*
*
* //STEP 4
* //registration-routing.modle.ts
* const routes: Routes = [{
* path: '',
* canActivateChild: [RouteGuardService] //or canActivate
* }
* ...
* ]
*
*
* //STEP 5
* //example.component.ts
* ngOnInit() { this.setPageIncomplete(); }
* continue() { this.setPageComplete(); }
*
*
*/
var RouteGuardService = /** @class */ (function () {
function RouteGuardService(router, service) {
this.router = router;
this.service = service;
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
RouteGuardService.prototype.canActivate = /**
* @param {?} route
* @param {?} state
* @return {?}
*/
function (route, state) {
return this._continue(state.url);
};
/**
* @param {?} next
* @param {?} state
* @return {?}
*/
RouteGuardService.prototype.canActivateChild = /**
* @param {?} next
* @param {?} state
* @return {?}
*/
function (next, state) {
return this._continue(state.url);
};
/** Logic to determine whether or not allow to continue to next page */
/**
* Logic to determine whether or not allow to continue to next page
* @private
* @param {?} pageUrl
* @return {?}
*/
RouteGuardService.prototype._continue = /**
* Logic to determine whether or not allow to continue to next page
* @private
* @param {?} pageUrl
* @return {?}
*/
function (pageUrl) {
if (this.service.canBypassGuards()) {
return true;
}
/**
* Pre-requisite has not be completed
*/
if (false === this.service.isPrerequisiteComplete()) {
this.router.navigate([this.service.getStartUrl()]);
return false;
}
if (false === this.service.isPageComplete(pageUrl)) {
return false;
}
return true;
};
RouteGuardService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
RouteGuardService.ctorParameters = function () { return [
{ type: Router },
{ type: AbstractPgCheckService }
]; };
/** @nocollapse */ RouteGuardService.ngInjectableDef = i0.defineInjectable({ factory: function RouteGuardService_Factory() { return new RouteGuardService(i0.inject(i1.Router), i0.inject(i2.AbstractPgCheckService)); }, token: RouteGuardService, providedIn: "root" });
return RouteGuardService;
}());
export { RouteGuardService };
if (false) {
/**
* @type {?}
* @private
*/
RouteGuardService.prototype.router;
/**
* @type {?}
* @private
*/
RouteGuardService.prototype.service;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vaC1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3JvdXRlLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFvQixNQUFNLEVBQXFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThDckU7SUFLRSwyQkFBb0IsTUFBYyxFQUN4QixPQUErQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQXdCO0lBQ3pDLENBQUM7Ozs7OztJQUVELHVDQUFXOzs7OztJQUFYLFVBQ0UsS0FBNkIsRUFDN0IsS0FBMEI7UUFHMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOzs7Ozs7SUFFRCw0Q0FBZ0I7Ozs7O0lBQWhCLFVBQ0UsSUFBNEIsRUFDNUIsS0FBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsdUVBQXVFOzs7Ozs7O0lBQy9ELHFDQUFTOzs7Ozs7SUFBakIsVUFBa0IsT0FBZTtRQUUvQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVEOztXQUVHO1FBQ0gsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFO1lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O2dCQTNDRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQWxEMEIsTUFBTTtnQkFFeEIsc0JBQXNCOzs7NEJBSC9CO0NBNkZDLEFBNUNELElBNENDO1NBekNZLGlCQUFpQjs7Ozs7O0lBRWhCLG1DQUFzQjs7Ozs7SUFDaEMsb0NBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUNoaWxkLCBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUsIENhbkFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFBnQ2hlY2tTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdC1wZy1jaGVjay5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZFxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGltcGxlbWVudCBSb3V0ZSBHdWFyZHMgaW4geW91ciBhcHBsaWNhdGlvbi4gVGhpcyBpcyBmb3IgYVxyXG4gKiB0eXBpY2FsIGZvcm0gZmxvdywgd2hlcmUgdGhlIHVzZXIgbXVzdCBwcm9jZWVkIHNlcXVlbnRpYWxseSBmcm9tIG9uZSBwYWdlIHRvXHJcbiAqIHRoZSBuZXh0LlxyXG4gKlxyXG4gKiBUbyBzZXR1cCwgeW91IG11c3Q6XHJcbiAqXHJcbiAqIDEuIENyZWF0ZSBhIHNlcnZpY2UgaW1wbGVtZW50aW5nIHRoZSBhYnN0cmFjdCBtZXRob2RzIGluIGBBYnN0cmFjdFBnU2VydmljZWAgKFwiUmVnaXN0cmF0aW9uU2VydmljZVwiKVxyXG4gKiAyLiBTZXR1cCBBYnN0cmFjdFBnQ2hlY2tTZXJ2aWNlIGluIE5nTW9kdWxlIHByb3ZpZGVycywgdG8gYHVzZUV4aXN0aW5nYCB0aGUgc2VydmljZSBmcm9tIHByZXZpb3VzIHN0ZXAuXHJcbiAqIDMuIEFkZCB0aGlzIFJvdXRlR3VhcmRTZXJ2aWNlIHRvIHNhbWUgcHJvdmlkZXJzIGZyb20gcHJldmlvdXMgc3RlcC5cclxuICogNC4gQ29uZmlndXJlIHJvdXRlcyB0byB1c2UgUm91dGVHdWFyZFNlcnZpY2UgLSBgY2FuQWN0aXZhdGVgIG9yIGBjYW5BY3RpdmF0ZUNoaWxkYFxyXG4gKiA1LiBIYXZlIGVhY2ggXCJwYWdlXCIgaW4gdGhlIGZvcm0gY2FsbCBgc2V0UGFnZUluY29tcGxldGUoKWAgb3IgYHNldFBhZ2VDb21wbGV0ZSgpYCAoZnJvbSB0aGUgXCJSZWdpc3RyYXRpb25TZXJ2aWNlXCIpXHJcbiAqXHJcbiAqXHJcbiAqIFlvdSBtdXN0IG1ha2Ugc3VyZSB0byBzZXR1cCBBYnN0cmFjdFBnQ2hlY2tTZXJ2aWNlIGluIE5nTW9kdWxlcyBjb3JyZWN0bHkuXHJcbiAqXHJcbiAqICBAZXhhbXBsZVxyXG4gKiAgICAgICAgICAgICAgICAvL1NURVAgMiArIFNURVAgM1xyXG4gKiAgICAgICAgICAgICAgICAvL3JlZ2lzdHJhdGlvbi5tb2R1bGUudHNcclxuICogICAgICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgeyBwcm92aWRlOiBBYnN0cmFjdFBnQ2hlY2tTZXJ2aWNlLCB1c2VFeGlzdGluZzogUmVnaXN0cmF0aW9uU2VydmljZSB9LFxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlR3VhcmRTZXJ2aWNlXHJcbiAqICAgICAgICAgICAgICAgIF1cclxuICpcclxuICpcclxuICogICAgICAgICAgICAgICAgLy9TVEVQIDRcclxuICogICAgICAgICAgICAgICAgLy9yZWdpc3RyYXRpb24tcm91dGluZy5tb2RsZS50c1xyXG4gKiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFt7XHJcbiAqICAgICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxyXG4gKiAgICAgICAgICAgICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkOiBbUm91dGVHdWFyZFNlcnZpY2VdIC8vb3IgY2FuQWN0aXZhdGVcclxuICogICAgICAgICAgICAgICAgICB9XHJcbiAqICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gKiAgICAgICAgICAgICAgICBdXHJcbiAqXHJcbiAqXHJcbiAqICAgICAgICAgICAgICAgIC8vU1RFUCA1XHJcbiAqICAgICAgICAgICAgICAgIC8vZXhhbXBsZS5jb21wb25lbnQudHNcclxuICogICAgICAgICAgICAgICAgbmdPbkluaXQoKSB7IHRoaXMuc2V0UGFnZUluY29tcGxldGUoKTsgfVxyXG4gKiAgICAgICAgICAgICAgICBjb250aW51ZSgpIHsgdGhpcy5zZXRQYWdlQ29tcGxldGUoKTsgfVxyXG4gKlxyXG4gKlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUm91dGVHdWFyZFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEFic3RyYWN0UGdDaGVja1NlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRpbnVlKHN0YXRlLnVybCk7XHJcbiAgfVxyXG5cclxuICBjYW5BY3RpdmF0ZUNoaWxkKFxyXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250aW51ZShzdGF0ZS51cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqIExvZ2ljIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbGxvdyB0byBjb250aW51ZSB0byBuZXh0IHBhZ2UgKi9cclxuICBwcml2YXRlIF9jb250aW51ZShwYWdlVXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNhbkJ5cGFzc0d1YXJkcygpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlLXJlcXVpc2l0ZSBoYXMgbm90IGJlIGNvbXBsZXRlZFxyXG4gICAgICovXHJcbiAgICBpZiAoZmFsc2UgPT09IHRoaXMuc2VydmljZS5pc1ByZXJlcXVpc2l0ZUNvbXBsZXRlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuc2VydmljZS5nZXRTdGFydFVybCgpXSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmFsc2UgPT09IHRoaXMuc2VydmljZS5pc1BhZ2VDb21wbGV0ZShwYWdlVXJsKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=