UNPKG

ontimize-web-ngx

Version:
50 lines 7.99 kB
import { Injectable } from '@angular/core'; import { combineLatest } from 'rxjs'; import { BooleanConverter } from '../../../decorators/input-converter'; import { Codes } from '../../../util/codes'; import { Util } from '../../../util/util'; import { OFormConfirmExitService } from '../navigation/o-form-confirm-exit.service'; import * as i0 from "@angular/core"; import * as i1 from "../navigation/o-form-confirm-exit.service"; export class CanDeactivateFormGuard { constructor(oFormConfirmExitService) { this.oFormConfirmExitService = oFormConfirmExitService; this.oForms = {}; } canDeactivate(component, curr, state, future) { if (BooleanConverter(future.root.queryParams[Codes.IGNORE_CAN_DEACTIVATE])) { return true; } if (Object.keys(this.oForms).length) { return new Promise((resolve) => { const arr = Object.keys(this.oForms).map((key) => Util.wrapIntoObservable(this.oForms[key].canDeactivate())); combineLatest(arr).subscribe(res => { resolve(res.every(value => value)); }); }); } return true; } addForm(form) { form.deactivateGuardId = this.getFormKey(form); this.oForms[form.deactivateGuardId] = form; } removeForm(form) { delete this.oForms[form.deactivateGuardId]; delete form.deactivateGuardId; } isFormsCacheEmpty() { return Object.keys(this.oForms).length === 0; } getFormKey(form) { const formLayoutManager = form.getFormManager(); return formLayoutManager ? `${formLayoutManager.getIdOfActiveItem()}${form.oattr}` : form.oattr; } } CanDeactivateFormGuard.CLASSNAME = 'CanDeactivateFormGuard'; CanDeactivateFormGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CanDeactivateFormGuard, deps: [{ token: i1.OFormConfirmExitService }], target: i0.ɵɵFactoryTarget.Injectable }); CanDeactivateFormGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CanDeactivateFormGuard }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CanDeactivateFormGuard, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.OFormConfirmExitService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWNhbi1kZWFjdGl2YXRlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9ndWFyZHMvby1mb3JtLWNhbi1kZWFjdGl2YXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7QUFRcEYsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUFzQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUY1RCxXQUFNLEdBQXNDLEVBQUUsQ0FBQztJQUVpQixDQUFDO0lBRTNFLGFBQWEsQ0FBQyxTQUFpQyxFQUFFLElBQTRCLEVBQUUsS0FBMEIsRUFBRSxNQUEyQjtRQUVwSSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUU7WUFDMUUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxHQUFHLEdBQTBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwSSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFvQjtRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBb0I7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEQsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNsRyxDQUFDOztBQXZDYSxnQ0FBUyxHQUFHLHdCQUF3QixDQUFDO29IQUR4QyxzQkFBc0I7d0hBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuRGVhY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5Db252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUNvbmZpcm1FeGl0U2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRpb24vby1mb3JtLWNvbmZpcm0tZXhpdC5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vby1mb3JtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSB7XG4gIGNhbkRlYWN0aXZhdGU6ICgpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbkRlYWN0aXZhdGVGb3JtR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPENhbkNvbXBvbmVudERlYWN0aXZhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBDTEFTU05BTUUgPSAnQ2FuRGVhY3RpdmF0ZUZvcm1HdWFyZCc7XG5cbiAgcHJvdGVjdGVkIG9Gb3JtczogeyBba2V5OiBzdHJpbmddOiBPRm9ybUNvbXBvbmVudCB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9Gb3JtQ29uZmlybUV4aXRTZXJ2aWNlOiBPRm9ybUNvbmZpcm1FeGl0U2VydmljZSkgeyB9XG5cbiAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IENhbkNvbXBvbmVudERlYWN0aXZhdGUsIGN1cnI6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBmdXR1cmU6IFJvdXRlclN0YXRlU25hcHNob3QpXG4gICAgOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuICAgIGlmIChCb29sZWFuQ29udmVydGVyKGZ1dHVyZS5yb290LnF1ZXJ5UGFyYW1zW0NvZGVzLklHTk9SRV9DQU5fREVBQ1RJVkFURV0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMub0Zvcm1zKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBhcnI6IE9ic2VydmFibGU8Ym9vbGVhbj5bXSA9IE9iamVjdC5rZXlzKHRoaXMub0Zvcm1zKS5tYXAoKGtleSkgPT4gVXRpbC53cmFwSW50b09ic2VydmFibGUodGhpcy5vRm9ybXNba2V5XS5jYW5EZWFjdGl2YXRlKCkpKTtcbiAgICAgICAgY29tYmluZUxhdGVzdChhcnIpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHJlc29sdmUocmVzLmV2ZXJ5KHZhbHVlID0+IHZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYWRkRm9ybShmb3JtOiBPRm9ybUNvbXBvbmVudCkge1xuICAgIGZvcm0uZGVhY3RpdmF0ZUd1YXJkSWQgPSB0aGlzLmdldEZvcm1LZXkoZm9ybSlcbiAgICB0aGlzLm9Gb3Jtc1tmb3JtLmRlYWN0aXZhdGVHdWFyZElkXSA9IGZvcm07XG4gIH1cblxuICByZW1vdmVGb3JtKGZvcm06IE9Gb3JtQ29tcG9uZW50KSB7XG4gICAgZGVsZXRlIHRoaXMub0Zvcm1zW2Zvcm0uZGVhY3RpdmF0ZUd1YXJkSWRdO1xuICAgIGRlbGV0ZSBmb3JtLmRlYWN0aXZhdGVHdWFyZElkO1xuICB9XG5cbiAgaXNGb3Jtc0NhY2hlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMub0Zvcm1zKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1LZXkoZm9ybTogT0Zvcm1Db21wb25lbnQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvcm1MYXlvdXRNYW5hZ2VyID0gZm9ybS5nZXRGb3JtTWFuYWdlcigpO1xuICAgIHJldHVybiBmb3JtTGF5b3V0TWFuYWdlciA/IGAke2Zvcm1MYXlvdXRNYW5hZ2VyLmdldElkT2ZBY3RpdmVJdGVtKCl9JHtmb3JtLm9hdHRyfWAgOiBmb3JtLm9hdHRyO1xuICB9XG59XG5cbiJdfQ==