moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
133 lines • 10.1 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 { AbstractPageGuardService } from './abstract-page-guard.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "./abstract-page-guard.service";
/**
* Use this service to implement Load Page 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 `AbstractPageGuardService`
* 2. Setup AbstractPageGuardService in NgModule providers, to `useExisting` the service from previous step.
* 3. Add this LoadPageGuardService to same providers from previous step.
* 4. Configure routes to use LoadPageGuardService - `canActivate` or `canActivateChild`
* 5. Have each "page" in the form call `setPageIncomplete()` or `setPageComplete()` (from the "PageStateService")
*
*
* You must make sure to setup AbstractPageGuardService in NgModules correctly.
*
* \@example
* //STEP 2 + STEP 3
* //registration.module.ts
* providers: [
* ...
* { provide: AbstractPageGuardService, useExisting: DefaultPageGuardService },
* LoadPageGuardService
* ]
*
*
* //STEP 4
* //registration-routing.modle.ts
* const routes: Routes = [{
* path: '',
* canActivateChild: [LoadPageGuardService] //or canActivate
* }
* ...
* ]
*
*
* //STEP 5
* //example.component.ts
* ngOnInit() { this.pageService.setPageIncomplete(); }
* continue() { this.pageService.setPageComplete(); }
*
*
*/
var LoadPageGuardService = /** @class */ (function () {
function LoadPageGuardService(router, service) {
this.router = router;
this.service = service;
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
LoadPageGuardService.prototype.canActivate = /**
* @param {?} route
* @param {?} state
* @return {?}
*/
function (route, state) {
return this._continue(state.url);
};
/**
* @param {?} next
* @param {?} state
* @return {?}
*/
LoadPageGuardService.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 {?}
*/
LoadPageGuardService.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;
}
/**
* Logic within method is specific to application
*/
return this.service.canNavigateToUrl(pageUrl);
};
LoadPageGuardService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
LoadPageGuardService.ctorParameters = function () { return [
{ type: Router },
{ type: AbstractPageGuardService }
]; };
/** @nocollapse */ LoadPageGuardService.ngInjectableDef = i0.defineInjectable({ factory: function LoadPageGuardService_Factory() { return new LoadPageGuardService(i0.inject(i1.Router), i0.inject(i2.AbstractPageGuardService)); }, token: LoadPageGuardService, providedIn: "root" });
return LoadPageGuardService;
}());
export { LoadPageGuardService };
if (false) {
/**
* @type {?}
* @private
*/
LoadPageGuardService.prototype.router;
/**
* @type {?}
* @private
*/
LoadPageGuardService.prototype.service;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1wYWdlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9sb2FkLXBhZ2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLE1BQU0sRUFBcUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4Q3pFO0lBS0UsOEJBQW9CLE1BQWMsRUFBVSxPQUFpQztRQUF6RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7SUFDN0UsQ0FBQzs7Ozs7O0lBRUQsMENBQVc7Ozs7O0lBQVgsVUFDRSxLQUE2QixFQUM3QixLQUEwQjtRQUcxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7OztJQUVELCtDQUFnQjs7Ozs7SUFBaEIsVUFDRSxJQUE0QixFQUM1QixLQUEwQjtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCx1RUFBdUU7Ozs7Ozs7SUFDL0Qsd0NBQVM7Ozs7OztJQUFqQixVQUFrQixPQUFlO1FBRS9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQ7O1dBRUc7UUFDSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7Z0JBakNGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBbEQwQixNQUFNO2dCQUV4Qix3QkFBd0I7OzsrQkFIakM7Q0FtRkMsQUFsQ0QsSUFrQ0M7U0EvQlksb0JBQW9COzs7Ozs7SUFFbkIsc0NBQXNCOzs7OztJQUFFLHVDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlLCBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdC1wYWdlLWd1YXJkLnNlcnZpY2UnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGltcGxlbWVudCBMb2FkIFBhZ2UgUm91dGUgR3VhcmRzIGluIHlvdXIgYXBwbGljYXRpb24uIFRoaXMgaXMgZm9yIGFcclxuICogdHlwaWNhbCBmb3JtIGZsb3csIHdoZXJlIHRoZSB1c2VyIG11c3QgcHJvY2VlZCBzZXF1ZW50aWFsbHkgZnJvbSBvbmUgcGFnZSB0b1xyXG4gKiB0aGUgbmV4dC5cclxuICpcclxuICogVG8gc2V0dXAsIHlvdSBtdXN0OlxyXG4gKlxyXG4gKiAxLiBDcmVhdGUgYSBzZXJ2aWNlIGltcGxlbWVudGluZyB0aGUgYWJzdHJhY3QgbWV0aG9kcyBpbiBgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlYFxyXG4gKiAyLiBTZXR1cCBBYnN0cmFjdFBhZ2VHdWFyZFNlcnZpY2UgaW4gTmdNb2R1bGUgcHJvdmlkZXJzLCB0byBgdXNlRXhpc3RpbmdgIHRoZSBzZXJ2aWNlIGZyb20gcHJldmlvdXMgc3RlcC5cclxuICogMy4gQWRkIHRoaXMgTG9hZFBhZ2VHdWFyZFNlcnZpY2UgdG8gc2FtZSBwcm92aWRlcnMgZnJvbSBwcmV2aW91cyBzdGVwLlxyXG4gKiA0LiBDb25maWd1cmUgcm91dGVzIHRvIHVzZSBMb2FkUGFnZUd1YXJkU2VydmljZSAtIGBjYW5BY3RpdmF0ZWAgb3IgYGNhbkFjdGl2YXRlQ2hpbGRgXHJcbiAqIDUuIEhhdmUgZWFjaCBcInBhZ2VcIiBpbiB0aGUgZm9ybSBjYWxsIGBzZXRQYWdlSW5jb21wbGV0ZSgpYCBvciBgc2V0UGFnZUNvbXBsZXRlKClgIChmcm9tIHRoZSBcIlBhZ2VTdGF0ZVNlcnZpY2VcIilcclxuICpcclxuICpcclxuICogWW91IG11c3QgbWFrZSBzdXJlIHRvIHNldHVwIEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSBpbiBOZ01vZHVsZXMgY29ycmVjdGx5LlxyXG4gKlxyXG4gKiAgQGV4YW1wbGVcclxuICogICAgICAgICAgICAgICAgLy9TVEVQIDIgKyBTVEVQIDNcclxuICogICAgICAgICAgICAgICAgLy9yZWdpc3RyYXRpb24ubW9kdWxlLnRzXHJcbiAqICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlLCB1c2VFeGlzdGluZzogRGVmYXVsdFBhZ2VHdWFyZFNlcnZpY2UgfSxcclxuICogICAgICAgICAgICAgICAgICAgICAgICBMb2FkUGFnZUd1YXJkU2VydmljZVxyXG4gKiAgICAgICAgICAgICAgICBdXHJcbiAqXHJcbiAqXHJcbiAqICAgICAgICAgICAgICAgIC8vU1RFUCA0XHJcbiAqICAgICAgICAgICAgICAgIC8vcmVnaXN0cmF0aW9uLXJvdXRpbmcubW9kbGUudHNcclxuICogICAgICAgICAgICAgICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbe1xyXG4gKiAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICogICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogW0xvYWRQYWdlR3VhcmRTZXJ2aWNlXSAvL29yIGNhbkFjdGl2YXRlXHJcbiAqICAgICAgICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgICAgICAgICAgICAuLi5cclxuICogICAgICAgICAgICAgICAgXVxyXG4gKlxyXG4gKlxyXG4gKiAgICAgICAgICAgICAgICAvL1NURVAgNVxyXG4gKiAgICAgICAgICAgICAgICAvL2V4YW1wbGUuY29tcG9uZW50LnRzXHJcbiAqICAgICAgICAgICAgICAgIG5nT25Jbml0KCkgeyB0aGlzLnBhZ2VTZXJ2aWNlLnNldFBhZ2VJbmNvbXBsZXRlKCk7IH1cclxuICogICAgICAgICAgICAgICAgY29udGludWUoKSB7IHRoaXMucGFnZVNlcnZpY2Uuc2V0UGFnZUNvbXBsZXRlKCk7IH1cclxuICpcclxuICpcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRQYWdlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHNlcnZpY2U6IEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGUoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludWUoc3RhdGUudXJsKTtcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlQ2hpbGQoXHJcbiAgICBuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRpbnVlKHN0YXRlLnVybCk7XHJcbiAgfVxyXG5cclxuICAvKiogTG9naWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFsbG93IHRvIGNvbnRpbnVlIHRvIG5leHQgcGFnZSAqL1xyXG4gIHByaXZhdGUgX2NvbnRpbnVlKHBhZ2VVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY2FuQnlwYXNzR3VhcmRzKCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dpYyB3aXRoaW4gbWV0aG9kIGlzIHNwZWNpZmljIHRvIGFwcGxpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuY2FuTmF2aWdhdGVUb1VybChwYWdlVXJsKTtcclxuICB9XHJcbn1cclxuIl19