@universis/common
Version:
Universis - common directives and services
1 lines • 68.8 kB
Source Map (JSON)
{"version":3,"file":"universis-common-routing.mjs","sources":["../../routing/src/ButtonTypes.ts","../../routing/src/RouterModal.ts","../../routing/src/RouterModalYesNo.ts","../../routing/src/RouterModalYesNoCancel.ts","../../routing/src/RouterModalOkCancel.ts","../../routing/src/RouterModalAbortRetryIgnore.ts","../../routing/src/RouterModalPreviousNextCancel.ts","../../routing/src/RouterModalComponent.ts","../../routing/src/RouterModalModule.ts","../../routing/src/public_api.ts","../../routing/src/universis-common-routing.ts"],"sourcesContent":["\nexport declare interface ButtonType {\n buttonText: string;\n buttonClass: string;\n buttonDisabled?: boolean;\n}\n\nexport const ButtonTypes = {\n ok: {\n buttonText: 'OK',\n buttonClass: 'btn btn-indigo',\n buttonDisabled: false\n },\n cancel: {\n buttonText: 'Cancel',\n buttonClass: 'btn btn-gray-100',\n buttonDisabled: false\n },\n yes: {\n buttonText: 'Yes',\n buttonClass: 'btn btn-primary',\n buttonDisabled: false\n },\n no: {\n buttonText: 'No',\n buttonClass: 'btn btn-gray-100',\n buttonDisabled: false\n },\n abort: {\n buttonText: 'Abort',\n buttonClass: 'btn btn-danger',\n buttonDisabled: false\n },\n retry: {\n buttonText: 'Retry',\n buttonClass: 'btn btn-primary',\n buttonDisabled: false\n },\n ignore: {\n buttonText: 'Ignore',\n buttonClass: 'btn btn-warning',\n buttonDisabled: false\n },\n previous: {\n buttonText: 'Previous',\n buttonClass: 'btn btn-gray-100',\n buttonDisabled: false\n },\n next: {\n buttonText: 'Next',\n buttonClass: 'btn btn-theme',\n buttonDisabled: false\n }\n };\n","import {Input, EventEmitter, Component} from '@angular/core';\nimport {ActivatedRoute, NavigationExtras, Router} from '@angular/router';\n\n\nexport declare interface ModalChanges {\n modalTitle?: string;\n modalClass?: string;\n}\n@Component({\n template: ''\n })\nexport abstract class RouterModal {\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute) {\n //\n }\n private _modalTitle: string | undefined;\n private _modalClass: string | undefined;\n public readonly modalChanges = new EventEmitter<ModalChanges>();\n\n /**\n * Gets or modal window title\n */\n @Input()\n get modalTitle(): string | undefined {\n return this._modalTitle;\n }\n set modalTitle(value: string | undefined) {\n this._modalTitle = value;\n this.modalChanges.emit({\n modalTitle: this._modalTitle,\n modalClass: this._modalClass,\n });\n }\n\n /**\n * Gets or sets modal window additional class\n */\n @Input()\n get modalClass(): string | undefined {\n return this._modalClass;\n }\n set modalClass(value: string | undefined) {\n this._modalClass = value;\n this.modalChanges.emit({\n modalTitle: this._modalTitle,\n modalClass: this._modalClass,\n });\n }\n /**\n * Closes modal window\n */\n public close(navigationExtras?: NavigationExtras) {\n return this.router.navigate([\n {\n outlets: {\n modal: null\n }\n }\n ], {\n relativeTo: this.activatedRoute.parent,\n }).then( navigationEnd => {\n if (navigationEnd && navigationExtras) {\n if (this.activatedRoute.parent && this.activatedRoute.parent.component) {\n const finalNavigationExtras = Object.assign({\n relativeTo: this.activatedRoute.parent\n }, navigationExtras);\n return this.router.navigate( [ '.' ], finalNavigationExtras);\n }\n }\n return Promise.resolve(navigationEnd);\n });\n }\n}\n","import { Input, EventEmitter, Component } from '@angular/core';\nimport { RouterModal } from './RouterModal';\nimport { ButtonTypes, ButtonType } from './ButtonTypes';\n@Component({\n template: ''\n })\nexport abstract class RouterModalYesNo extends RouterModal {\n public readonly buttonChanges = new EventEmitter<{ [ button: string]: ButtonType }>();\n\n protected get yesButtonState(): { yes: ButtonType } {\n return {\n yes: {\n buttonText: this._yesButtonText,\n buttonClass: this._yesButtonClass,\n buttonDisabled: this._yesButtonDisabled\n }\n };\n }\n\n protected get noButtonState(): { no: ButtonType } {\n return {\n no: {\n buttonText: this._noButtonText,\n buttonClass: this._noButtonClass,\n buttonDisabled: this._noButtonDisabled\n }\n };\n }\n private _yesButtonText = ButtonTypes.yes.buttonText;\n @Input()\n public get yesButtonText() {\n return this._yesButtonText;\n }\n public set yesButtonText(value) {\n this._yesButtonText = value;\n this.buttonChanges.emit(this.yesButtonState);\n }\n private _yesButtonClass = ButtonTypes.yes.buttonClass;\n @Input()\n public get yesButtonClass() {\n return this._yesButtonClass;\n }\n public set yesButtonClass(value) {\n this._yesButtonClass = value;\n this.buttonChanges.emit(this.yesButtonState);\n }\n private _noButtonText = ButtonTypes.no.buttonText;\n @Input()\n public get noButtonText() {\n return this._noButtonText;\n }\n public set noButtonText(value) {\n this._noButtonText = value;\n this.buttonChanges.emit(this.noButtonState);\n }\n private _noButtonClass = ButtonTypes.no.buttonClass;\n @Input()\n public get noButtonClass() {\n return this._noButtonClass;\n }\n public set noButtonClass(value) {\n this._noButtonClass = value;\n this.buttonChanges.emit(this.noButtonState);\n }\n\n private _yesButtonDisabled = ButtonTypes.yes.buttonDisabled;\n @Input()\n public get yesButtonDisabled() {\n return this._yesButtonDisabled;\n }\n public set yesButtonDisabled(value) {\n this._yesButtonDisabled = value;\n this.buttonChanges.emit(this.yesButtonState);\n }\n\n private _noButtonDisabled = ButtonTypes.no.buttonDisabled;\n @Input()\n public get noButtonDisabled() {\n return this._noButtonDisabled;\n }\n public set noButtonDisabled(value) {\n this._noButtonDisabled = value;\n this.buttonChanges.emit(this.noButtonState);\n }\n\n abstract yes(): Promise<any>;\n abstract no(): Promise<any>;\n}\n","import { Component, Input } from '@angular/core';\nimport { ButtonTypes, ButtonType } from './ButtonTypes';\nimport { RouterModalYesNo } from './RouterModalYesNo';\n// noinspection JSUnusedGlobalSymbols\n@Component({\n template: ''\n })\nexport abstract class RouterModalYesNoCancel extends RouterModalYesNo {\n\n protected get cancelButtonState(): { cancel: ButtonType } {\n return {\n cancel: {\n buttonText: this._cancelButtonText,\n buttonClass: this._cancelButtonClass,\n buttonDisabled: this._cancelButtonDisabled\n }\n };\n }\n\n private _cancelButtonText = ButtonTypes.cancel.buttonText;\n @Input()\n public get cancelButtonText() {\n return this._cancelButtonText;\n }\n public set cancelButtonText(value) {\n this._cancelButtonText = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n private _cancelButtonClass = ButtonTypes.cancel.buttonClass;\n @Input()\n public get cancelButtonClass() {\n return this._cancelButtonClass;\n }\n public set cancelButtonClass(value) {\n this._cancelButtonClass = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n private _cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled;\n @Input()\n public get cancelButtonDisabled() {\n return this._cancelButtonDisabled;\n }\n public set cancelButtonDisabled(value) {\n this._cancelButtonDisabled = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n abstract yes(): Promise<any>;\n abstract no(): Promise<any>;\n abstract cancel(): Promise<any>;\n}\n","import { Input, EventEmitter, Component } from '@angular/core';\nimport { RouterModal } from './RouterModal';\nimport { ButtonTypes, ButtonType } from './ButtonTypes';\n@Component({\n template: ''\n })\nexport abstract class RouterModalOkCancel extends RouterModal {\n public readonly buttonChanges = new EventEmitter<{ [ button: string]: ButtonType }>();\n\n protected get okButtonState(): { ok: ButtonType } {\n return {\n ok: {\n buttonText: this._okButtonText,\n buttonClass: this._okButtonClass,\n buttonDisabled: this._okButtonDisabled\n }\n };\n }\n\n protected get cancelButtonState(): { cancel: ButtonType } {\n return {\n cancel: {\n buttonText: this._cancelButtonText,\n buttonClass: this._cancelButtonClass,\n buttonDisabled: this._cancelButtonDisabled\n }\n };\n }\n\n private _okButtonText = ButtonTypes.ok.buttonText;\n @Input()\n public get okButtonText() {\n return this._okButtonText;\n }\n public set okButtonText(value) {\n this._okButtonText = value;\n this.buttonChanges.emit(this.okButtonState);\n }\n\n private _okButtonClass = ButtonTypes.ok.buttonClass;\n @Input()\n public get okButtonClass() {\n return this._okButtonClass;\n }\n public set okButtonClass(value) {\n this._okButtonClass = value;\n this.buttonChanges.emit(this.okButtonState);\n }\n\n private _cancelButtonText = ButtonTypes.cancel.buttonText;\n @Input()\n public get cancelButtonText() {\n return this._cancelButtonText;\n }\n public set cancelButtonText(value) {\n this._cancelButtonText = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n private _cancelButtonClass = ButtonTypes.cancel.buttonClass;\n @Input()\n public get cancelButtonClass() {\n return this._cancelButtonClass;\n }\n public set cancelButtonClass(value) {\n this._cancelButtonClass = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n private _okButtonDisabled = ButtonTypes.ok.buttonDisabled;\n @Input()\n public get okButtonDisabled() {\n return this._okButtonDisabled;\n }\n public set okButtonDisabled(value) {\n this._okButtonDisabled = value;\n this.buttonChanges.emit(this.okButtonState);\n }\n\n private _cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled;\n @Input()\n public get cancelButtonDisabled() {\n return this._cancelButtonDisabled;\n }\n public set cancelButtonDisabled(value) {\n this._cancelButtonDisabled = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n abstract ok(): Promise<any>;\n abstract cancel(): Promise<any>;\n}\n","import { Input, EventEmitter, Component } from '@angular/core';\nimport { RouterModal } from './RouterModal';\nimport {ButtonType, ButtonTypes} from './ButtonTypes';\n@Component({\n template: ''\n })\nexport abstract class RouterModalAbortRetryIgnore extends RouterModal {\n\n public readonly buttonChanges = new EventEmitter<{ [ button: string]: ButtonType }>();\n\n protected get abortButtonState(): { abort: ButtonType } {\n return {\n abort: {\n buttonText: this._abortButtonText,\n buttonClass: this._abortButtonClass,\n buttonDisabled: this._abortButtonDisabled\n }\n };\n }\n protected get retryButtonState(): { retry: ButtonType } {\n return {\n retry: {\n buttonText: this._retryButtonText,\n buttonClass: this._retryButtonClass,\n buttonDisabled: this._retryButtonDisabled\n }\n };\n }\n protected get ignoreButtonState(): { ignore: ButtonType } {\n return {\n ignore: {\n buttonText: this._ignoreButtonText,\n buttonClass: this._ignoreButtonClass,\n buttonDisabled: this._ignoreButtonDisabled\n }\n };\n }\n\n // abort button (start)\n private _abortButtonText = ButtonTypes.abort.buttonText;\n @Input()\n public get abortButtonText() {\n return this._abortButtonText;\n }\n public set abortButtonText(value) {\n this._abortButtonText = value;\n this.buttonChanges.emit(this.abortButtonState);\n }\n private _abortButtonClass = ButtonTypes.abort.buttonClass;\n @Input()\n public get abortButtonClass() {\n return this._abortButtonClass;\n }\n public set abortButtonClass(value) {\n this._abortButtonClass = value;\n this.buttonChanges.emit(this.abortButtonState);\n }\n private _abortButtonDisabled = ButtonTypes.abort.buttonDisabled;\n @Input()\n public get abortButtonDisabled() {\n return this._abortButtonDisabled;\n }\n public set abortButtonDisabled(value) {\n this._abortButtonDisabled = value;\n this.buttonChanges.emit(this.abortButtonState);\n }\n // abort button (end)\n\n // retry button (start)\n private _retryButtonText = ButtonTypes.retry.buttonText;\n @Input()\n public get retryButtonText() {\n return this._retryButtonText;\n }\n public set retryButtonText(value) {\n this._retryButtonText = value;\n this.buttonChanges.emit(this.retryButtonState);\n }\n private _retryButtonClass = ButtonTypes.retry.buttonClass;\n @Input()\n public get retryButtonClass() {\n return this._retryButtonClass;\n }\n public set retryButtonClass(value) {\n this._retryButtonClass = value;\n this.buttonChanges.emit(this.retryButtonState);\n }\n private _retryButtonDisabled = ButtonTypes.retry.buttonDisabled;\n @Input()\n public get retryButtonDisabled() {\n return this._retryButtonDisabled;\n }\n public set retryButtonDisabled(value) {\n this._retryButtonDisabled = value;\n this.buttonChanges.emit(this.retryButtonState);\n }\n // retry button (end)\n\n // ignore button (start)\n private _ignoreButtonText = ButtonTypes.ignore.buttonText;\n @Input()\n public get ignoreButtonText() {\n return this._ignoreButtonText;\n }\n public set ignoreButtonText(value) {\n this._ignoreButtonText = value;\n this.buttonChanges.emit(this.ignoreButtonState);\n }\n private _ignoreButtonClass = ButtonTypes.ignore.buttonClass;\n @Input()\n public get ignoreButtonClass() {\n return this._ignoreButtonClass;\n }\n public set ignoreButtonClass(value) {\n this._ignoreButtonClass = value;\n this.buttonChanges.emit(this.ignoreButtonState);\n }\n private _ignoreButtonDisabled = ButtonTypes.ignore.buttonDisabled;\n @Input()\n public get ignoreButtonDisabled() {\n return this._ignoreButtonDisabled;\n }\n public set ignoreButtonDisabled(value) {\n this._ignoreButtonDisabled = value;\n this.buttonChanges.emit(this.ignoreButtonState);\n }\n // ignore button (end)\n\n // noinspection JSUnusedGlobalSymbols\n abstract abort(): Promise<any>;\n abstract retry(): Promise<any>;\n abstract ignore(): Promise<any>;\n}\n","import {Component, EventEmitter, Input} from '@angular/core';\nimport { RouterModal } from './RouterModal';\nimport { ButtonTypes, ButtonType } from './ButtonTypes';\n\n// noinspection JSUnusedGlobalSymbols\n@Component({\n template: ''\n })\nexport abstract class RouterModalPreviousNextCancel extends RouterModal {\n\n public readonly buttonChanges = new EventEmitter<{ [ button: string]: ButtonType }>();\n\n protected get previousButtonState(): { previous: ButtonType } {\n return {\n previous: {\n buttonText: this._previousButtonText,\n buttonClass: this._previousButtonClass,\n buttonDisabled: this._previousButtonDisabled\n }\n };\n }\n\n protected get nextButtonState(): { next: ButtonType } {\n return {\n next: {\n buttonText: this._nextButtonText,\n buttonClass: this._nextButtonClass,\n buttonDisabled: this._nextButtonDisabled\n }\n };\n }\n\n protected get cancelButtonState(): { cancel: ButtonType } {\n return {\n cancel: {\n buttonText: this._cancelButtonText,\n buttonClass: this._cancelButtonClass,\n buttonDisabled: this._cancelButtonDisabled\n }\n };\n }\n\n private _previousButtonText = ButtonTypes.previous.buttonText;\n @Input()\n public get previousButtonText() {\n return this._previousButtonText;\n }\n public set previousButtonText(value) {\n this._previousButtonText = value;\n this.buttonChanges.emit(this.previousButtonState);\n }\n\n private _previousButtonClass = ButtonTypes.previous.buttonClass;\n @Input()\n public get previousButtonClass() {\n return this._previousButtonClass;\n }\n public set previousButtonClass(value) {\n this._previousButtonClass = value;\n this.buttonChanges.emit(this.previousButtonState);\n }\n\n private _previousButtonDisabled = ButtonTypes.previous.buttonDisabled;\n @Input()\n public get previousButtonDisabled() {\n return this._previousButtonDisabled;\n }\n public set previousButtonDisabled(value) {\n this._previousButtonDisabled = value;\n this.buttonChanges.emit(this.previousButtonState);\n }\n\n private _nextButtonText = ButtonTypes.next.buttonText;\n @Input()\n public get nextButtonText() {\n return this._nextButtonText;\n }\n public set nextButtonText(value) {\n this._nextButtonText = value;\n this.buttonChanges.emit(this.nextButtonState);\n }\n\n private _nextButtonClass = ButtonTypes.next.buttonClass;\n @Input()\n public get nextButtonClass() {\n return this._nextButtonClass;\n }\n public set nextButtonClass(value) {\n this._nextButtonClass = value;\n this.buttonChanges.emit(this.nextButtonState);\n }\n\n private _nextButtonDisabled = ButtonTypes.next.buttonDisabled;\n @Input()\n public get nextButtonDisabled() {\n return this._nextButtonDisabled;\n }\n public set nextButtonDisabled(value) {\n this._nextButtonDisabled = value;\n this.buttonChanges.emit(this.nextButtonState);\n }\n\n private _cancelButtonText = ButtonTypes.cancel.buttonText;\n @Input()\n public get cancelButtonText() {\n return this._cancelButtonText;\n }\n public set cancelButtonText(value) {\n this._cancelButtonText = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n private _cancelButtonClass = ButtonTypes.cancel.buttonClass;\n @Input()\n public get cancelButtonClass() {\n return this._cancelButtonClass;\n }\n public set cancelButtonClass(value) {\n this._cancelButtonClass = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n\n private _cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled;\n @Input()\n public get cancelButtonDisabled() {\n return this._cancelButtonDisabled;\n }\n public set cancelButtonDisabled(value) {\n this._cancelButtonDisabled = value;\n this.buttonChanges.emit(this.cancelButtonState);\n }\n abstract previous(): Promise<any>;\n abstract next(): Promise<any>;\n abstract cancel(): Promise<any>;\n}\n","import {Component, Input, ElementRef, ViewEncapsulation, EventEmitter, Renderer2} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Subscription} from 'rxjs';\nimport { ButtonTypes, ButtonType } from './ButtonTypes';\nimport { ModalChanges } from './RouterModal';\n\nexport declare interface RouterModalOutletComponent {\n modalTitle: string;\n modalClass: string;\n statusChanges: EventEmitter<any>;\n}\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'router-modal',\n template: `\n <div class=\"bd-modal d-none\">\n <div class=\"modal-backdrop fade d-none\"></div>\n <div class=\"modal\" tabindex=\"-1\" role=\"dialog\" [ngClass]=\"{ 'modal-waiting': waiting }\">\n <div class=\"modal-dialog\" [ngClass]=\"modalInstanceClass\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\" *ngIf=\"modalInstanceTitle\">\n <h5 class=\"modal-title\">{{modalInstanceTitle | translate}}</h5>\n <button *ngIf=\"instanceButtons.cancel\" [disabled]=\"waiting || instanceButtons.cancel.buttonDisabled\" (click)=\"cancel()\"\n type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Cancel\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <router-outlet (activate)=\"onActivate($event)\" (deactivate)=\"onDeactivate($event)\" name=\"modal\"></router-outlet>\n </div>\n <div class=\"modal-footer justify-content-end\">\n <button *ngIf=\"instanceButtons.previous\" [disabled]=\"waiting || instanceButtons.previous.buttonDisabled\" (click)=\"previous()\"\n type=\"button\" [ngClass]=\"instanceButtons.previous.buttonClass\">\n {{instanceButtons.previous.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.ok\" [disabled]=\"waiting || instanceButtons.ok.buttonDisabled\" (click)=\"ok()\"\n type=\"button\" [ngClass]=\"instanceButtons.ok.buttonClass\">\n {{instanceButtons.ok.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.yes\" [disabled]=\"waiting || instanceButtons.yes.buttonDisabled\"\n (click)=\"yes()\" type=\"button\" [ngClass]=\"instanceButtons.yes.buttonClass\">\n {{instanceButtons.yes.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.no\" [disabled]=\"waiting || instanceButtons.no.buttonDisabled\"\n (click)=\"no()\" type=\"button\" [ngClass]=\"instanceButtons.no.buttonClass\">\n {{instanceButtons.no.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.next\" [disabled]=\"waiting || instanceButtons.next.buttonDisabled\" (click)=\"next()\"\n type=\"button\" [ngClass]=\"instanceButtons.next.buttonClass\">\n {{instanceButtons.next.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.cancel\" [disabled]=\"waiting || instanceButtons.cancel.buttonDisabled\"\n (click)=\"cancel()\" type=\"button\" [ngClass]=\"instanceButtons.cancel.buttonClass\" data-dismiss=\"modal\">\n {{instanceButtons.cancel.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.abort\" [disabled]=\"waiting || instanceButtons.abort.buttonDisabled\"\n (click)=\"abort()\" type=\"button\" [ngClass]=\"instanceButtons.abort.buttonClass\">\n {{instanceButtons.abort.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.retry\" [disabled]=\"waiting || instanceButtons.retry.buttonDisabled\"\n (click)=\"retry()\" type=\"button\" [ngClass]=\"instanceButtons.retry.buttonClass\">\n {{instanceButtons.retry.buttonText | translate}}\n </button>\n <button *ngIf=\"instanceButtons.ignore\" [disabled]=\"waiting || instanceButtons.ignore.buttonDisabled\"\n (click)=\"ignore()\" type=\"button\" [ngClass]=\"instanceButtons.ignore.buttonClass\" data-dismiss=\"modal\">\n {{instanceButtons.ignore.buttonText | translate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,\n styles: [`\n .bd-modal .modal {\n position: fixed;\n right: auto;\n bottom: auto;\n z-index: 1045;\n display: block;\n }\n .bd-modal .modal .modal-body {\n margin-top: 0;\n margin-bottom: 0;\n }\n .bd-modal .modal.modal-waiting {\n opacity: 0.6;\n }\n `],\n encapsulation: ViewEncapsulation.None\n})\nexport class RouterModalComponent {\n\n private componentReference: any;\n private componentModalChanges: Subscription | null = null;\n private componentButtonChanges: Subscription | null = null;\n public waiting = false;\n @Input() modalTitle = '';\n @Input() modalClass: string | undefined;\n\n // these properties are here as inputs in order to have a way to customize text and class of each button\n\n @Input() okButtonText = ButtonTypes.ok.buttonText;\n @Input() okButtonClass = ButtonTypes.ok.buttonClass;\n\n @Input() cancelButtonText = ButtonTypes.cancel.buttonText;\n @Input() cancelButtonClass = ButtonTypes.cancel.buttonClass;\n\n @Input() yesButtonText = ButtonTypes.yes.buttonText ;\n @Input() yesButtonClass = ButtonTypes.yes.buttonClass;\n\n @Input() noButtonText = ButtonTypes.no.buttonText ;\n @Input() noButtonClass = ButtonTypes.no.buttonClass;\n\n @Input() abortButtonText = ButtonTypes.abort.buttonText;\n @Input() abortButtonClass = ButtonTypes.abort.buttonClass;\n\n @Input() retryButtonText = ButtonTypes.retry.buttonText;\n @Input() retryButtonClass = ButtonTypes.retry.buttonClass;\n\n @Input() ignoreButtonText = ButtonTypes.ignore.buttonText;\n @Input() ignoreButtonClass = ButtonTypes.ignore.buttonClass;\n\n @Input() previousButtonText = ButtonTypes.previous.buttonText;\n @Input() previousButtonClass = ButtonTypes.previous.buttonClass;\n\n @Input() nextButtonText = ButtonTypes.next.buttonText;\n @Input() nextButtonClass = ButtonTypes.next.buttonClass;\n\n public modalInstanceTitle: string | undefined;\n public modalInstanceClass: string | undefined;\n\n // default instance buttons\n\n public instanceButtons: {\n ok: ButtonType | null,\n cancel: ButtonType | null,\n yes: ButtonType | null,\n no: ButtonType | null,\n abort: ButtonType | null,\n retry: ButtonType | null,\n ignore: ButtonType | null,\n previous: ButtonType | null,\n next: ButtonType | null\n } = {\n ok: null,\n cancel: null,\n yes: null,\n no: null,\n abort: null,\n retry: null,\n ignore: null,\n previous: null,\n next: null\n };\n\n constructor(private _element: ElementRef,\n private _activatedRoute: ActivatedRoute,\n private _router: Router,\n private _renderer: Renderer2) {\n\n }\n\n async cancel() {\n try {\n if (this.componentReference) {\n\n // set waiting\n this.waiting = true;\n // if component has cancel() method\n if (typeof this.componentReference.cancel === 'function') {\n // do cancel\n await this.componentReference.cancel();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async ok() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.ok === 'function') {\n // do submit\n await this.componentReference.ok();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async abort() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.abort === 'function') {\n // do submit\n await this.componentReference.abort();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async retry() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.retry === 'function') {\n // do submit\n await this.componentReference.retry();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async ignore() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.ignore === 'function') {\n // do submit\n await this.componentReference.ignore();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async previous() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.previous === 'function') {\n // do submit\n await this.componentReference.previous();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async next() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.next === 'function') {\n // do submit\n await this.componentReference.next();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async yes() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.yes === 'function') {\n // do submit\n await this.componentReference.yes();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n async no() {\n try {\n if (this.componentReference) {\n // set waiting\n this.waiting = true;\n if (typeof this.componentReference.no === 'function') {\n // do submit\n await this.componentReference.no();\n } else {\n await this._router.navigate(['../'], { relativeTo: this._activatedRoute });\n }\n // unset waiting\n this.waiting = false;\n }\n } catch (err) {\n this.waiting = false;\n }\n }\n\n onActivate(event) {\n this.componentReference = event;\n // get router outlet component\n if (this.componentReference) {\n\n if (this.componentReference.buttonChanges) {\n // subscribe for any button changes\n this.componentButtonChanges = this.componentReference.buttonChanges\n .subscribe( (buttonChange: { [ button: string]: ButtonType }) => {\n if (buttonChange) {\n // assign button changes\n Object.assign(this.instanceButtons, buttonChange);\n }\n });\n }\n\n if (this.componentReference.modalChanges) {\n // get modal changes\n this.componentModalChanges = this.componentReference.modalChanges.subscribe( (modalChanges: ModalChanges) => {\n this.modalInstanceTitle = modalChanges.modalTitle;\n if (modalChanges.modalClass) {\n this.modalInstanceClass = modalChanges.modalClass;\n }\n });\n }\n // get title\n this.modalInstanceTitle = this.componentReference.modalTitle;\n // get class\n this.modalInstanceClass = this.componentReference.modalClass;\n // hold this to validate buttons\n let hasAtLeastOneButton = false;\n this.instanceButtons = {\n ok: null,\n cancel: null,\n yes: null,\n no: null,\n abort: null,\n retry: null,\n ignore: null,\n previous: null,\n next: null\n };\n // enumerate button types\n Object.keys(ButtonTypes).forEach( key => {\n // search if component has a method with the same name\n if (typeof this.componentReference[key] === 'function') {\n // enable button\n this.instanceButtons[key] = Object.assign({ }, ButtonTypes[key]);\n hasAtLeastOneButton = true;\n const buttonTextProperty = `${key}ButtonText`;\n if (this.componentReference.hasOwnProperty(buttonTextProperty)) {\n this.instanceButtons[key].buttonText = this.componentReference[buttonTextProperty];\n } else {\n // get property from this component\n this.instanceButtons[key].buttonText = this[buttonTextProperty];\n }\n const buttonClassProperty = `${key}ButtonClass`;\n if (this.componentReference.hasOwnProperty(buttonClassProperty)) {\n this.instanceButtons[key].buttonClass = this.componentReference[buttonClassProperty];\n } else {\n // get property from this component\n this.instanceButtons[key].buttonClass = this[buttonClassProperty];\n }\n }\n });\n if (!hasAtLeastOneButton) {\n // there are no buttons, so add only ok\n this.instanceButtons.ok = Object.assign({ }, ButtonTypes.ok);\n }\n }\n const backdropElement = <HTMLDivElement> this._element.nativeElement.querySelector('.modal-backdrop');\n this._element.nativeElement.querySelector('.bd-modal').classList.remove('d-none');\n this._renderer.addClass(document.body, 'overflow-hidden');\n this._renderer.addClass(document.body, 'pr-3');\n // add large modal default styles\n // this operation adds scrolling to modal container\n // in cases where modal overflows the height of the container\n const modalElement = this._element.nativeElement.querySelector('.modal');\n if (modalElement) {\n modalElement.style.setProperty('overflow-x', 'hidden');\n modalElement.style.setProperty('overflow-y', 'auto');\n }\n if (backdropElement) {\n // remove d-none\n backdropElement.classList.remove('d-none');\n // add show\n backdropElement.classList.add('show');\n }\n return false;\n }\n\n // noinspection JSUnusedLocalSymbols\n onDeactivate(event) {\n if (this.componentModalChanges) {\n this.componentModalChanges.unsubscribe();\n this.componentModalChanges = null;\n }\n if (this.componentButtonChanges) {\n this.componentButtonChanges.unsubscribe();\n this.componentButtonChanges = null;\n }\n // restore properties\n this.modalInstanceTitle = this.modalTitle;\n this.modalInstanceClass = this.modalClass;\n\n this.componentReference = null;\n const backdropElement = <HTMLDivElement> this._element.nativeElement.querySelector('.modal-backdrop');\n this._element.nativeElement.querySelector('.bd-modal').classList.add('d-none');\n this._renderer.removeClass(document.body, 'overflow-hidden');\n this._renderer.removeClass(document.body, 'pr-3');\n if (backdropElement) {\n // remove show\n backdropElement.classList.remove('show');\n // add d-none\n backdropElement.classList.add('d-none');\n }\n return false;\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport { RouterModalComponent } from './RouterModalComponent';\nimport {RouterModule} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [RouterModalComponent],\n imports: [\n RouterModule,\n CommonModule,\n TranslateModule\n ],\n providers: [\n ],\n exports: [RouterModalComponent]\n})\nexport class RouterModalModule {\n constructor() {\n //\n }\n}\n","/*\n * Public API Surface of modals\n */\nexport * from './ButtonTypes';\nexport * from './RouterModal';\nexport * from './RouterModalYesNo';\nexport * from './RouterModalYesNoCancel';\nexport * from './RouterModalOkCancel';\nexport * from './RouterModalAbortRetryIgnore';\nexport * from './RouterModalPreviousNextCancel';\nexport * from './RouterModalComponent';\nexport * from './RouterModalModule';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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