UNPKG

@universis/common

Version:

Universis - common directives and services

1,242 lines (1,234 loc) 54.7 kB
import { __extends, __awaiter, __generator } from 'tslib'; import { Input, EventEmitter, Component, ElementRef, ViewEncapsulation, Renderer2, NgModule } from '@angular/core'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { CommonModule } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; var ButtonTypes = { ok: { buttonText: 'OK', buttonClass: 'btn btn-indigo', buttonDisabled: false }, cancel: { buttonText: 'Cancel', buttonClass: 'btn btn-gray-100', buttonDisabled: false }, yes: { buttonText: 'Yes', buttonClass: 'btn btn-primary', buttonDisabled: false }, no: { buttonText: 'No', buttonClass: 'btn btn-gray-100', buttonDisabled: false }, abort: { buttonText: 'Abort', buttonClass: 'btn btn-danger', buttonDisabled: false }, retry: { buttonText: 'Retry', buttonClass: 'btn btn-primary', buttonDisabled: false }, ignore: { buttonText: 'Ignore', buttonClass: 'btn btn-warning', buttonDisabled: false }, previous: { buttonText: 'Previous', buttonClass: 'btn btn-gray-100', buttonDisabled: false }, next: { buttonText: 'Next', buttonClass: 'btn btn-theme', buttonDisabled: false } }; var RouterModal = /** @class */ (function () { function RouterModal(router, activatedRoute) { this.router = router; this.activatedRoute = activatedRoute; this.modalChanges = new EventEmitter(); // } Object.defineProperty(RouterModal.prototype, "modalTitle", { /** * Gets or modal window title */ get: function () { return this._modalTitle; }, set: function (value) { this._modalTitle = value; this.modalChanges.emit({ modalTitle: this._modalTitle, modalClass: this._modalClass, }); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModal.prototype, "modalClass", { /** * Gets or sets modal window additional class */ get: function () { return this._modalClass; }, set: function (value) { this._modalClass = value; this.modalChanges.emit({ modalTitle: this._modalTitle, modalClass: this._modalClass, }); }, enumerable: true, configurable: true }); /** * Closes modal window */ RouterModal.prototype.close = function (navigationExtras) { var _this = this; return this.router.navigate([ { outlets: { modal: null } } ], { relativeTo: this.activatedRoute.parent, }).then(function (navigationEnd) { if (navigationEnd && navigationExtras) { if (_this.activatedRoute.parent && _this.activatedRoute.parent.component) { var finalNavigationExtras = Object.assign({ relativeTo: _this.activatedRoute.parent }, navigationExtras); return _this.router.navigate(['.'], finalNavigationExtras); } } return Promise.resolve(navigationEnd); }); }; RouterModal.propDecorators = { modalTitle: [{ type: Input }], modalClass: [{ type: Input }] }; return RouterModal; }()); var RouterModalYesNo = /** @class */ (function (_super) { __extends(RouterModalYesNo, _super); function RouterModalYesNo() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.buttonChanges = new EventEmitter(); _this._yesButtonText = ButtonTypes.yes.buttonText; _this._yesButtonClass = ButtonTypes.yes.buttonClass; _this._noButtonText = ButtonTypes.no.buttonText; _this._noButtonClass = ButtonTypes.no.buttonClass; _this._yesButtonDisabled = ButtonTypes.yes.buttonDisabled; _this._noButtonDisabled = ButtonTypes.no.buttonDisabled; return _this; } Object.defineProperty(RouterModalYesNo.prototype, "yesButtonState", { get: function () { return { yes: { buttonText: this._yesButtonText, buttonClass: this._yesButtonClass, buttonDisabled: this._yesButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "noButtonState", { get: function () { return { no: { buttonText: this._noButtonText, buttonClass: this._noButtonClass, buttonDisabled: this._noButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "yesButtonText", { get: function () { return this._yesButtonText; }, set: function (value) { this._yesButtonText = value; this.buttonChanges.emit(this.yesButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "yesButtonClass", { get: function () { return this._yesButtonClass; }, set: function (value) { this._yesButtonClass = value; this.buttonChanges.emit(this.yesButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "noButtonText", { get: function () { return this._noButtonText; }, set: function (value) { this._noButtonText = value; this.buttonChanges.emit(this.noButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "noButtonClass", { get: function () { return this._noButtonClass; }, set: function (value) { this._noButtonClass = value; this.buttonChanges.emit(this.noButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "yesButtonDisabled", { get: function () { return this._yesButtonDisabled; }, set: function (value) { this._yesButtonDisabled = value; this.buttonChanges.emit(this.yesButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNo.prototype, "noButtonDisabled", { get: function () { return this._noButtonDisabled; }, set: function (value) { this._noButtonDisabled = value; this.buttonChanges.emit(this.noButtonState); }, enumerable: true, configurable: true }); RouterModalYesNo.propDecorators = { yesButtonText: [{ type: Input }], yesButtonClass: [{ type: Input }], noButtonText: [{ type: Input }], noButtonClass: [{ type: Input }], yesButtonDisabled: [{ type: Input }], noButtonDisabled: [{ type: Input }] }; return RouterModalYesNo; }(RouterModal)); // noinspection JSUnusedGlobalSymbols var RouterModalYesNoCancel = /** @class */ (function (_super) { __extends(RouterModalYesNoCancel, _super); function RouterModalYesNoCancel() { var _this = _super !== null && _super.apply(this, arguments) || this; _this._cancelButtonText = ButtonTypes.cancel.buttonText; _this._cancelButtonClass = ButtonTypes.cancel.buttonClass; _this._cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled; return _this; } Object.defineProperty(RouterModalYesNoCancel.prototype, "cancelButtonState", { get: function () { return { cancel: { buttonText: this._cancelButtonText, buttonClass: this._cancelButtonClass, buttonDisabled: this._cancelButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNoCancel.prototype, "cancelButtonText", { get: function () { return this._cancelButtonText; }, set: function (value) { this._cancelButtonText = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNoCancel.prototype, "cancelButtonClass", { get: function () { return this._cancelButtonClass; }, set: function (value) { this._cancelButtonClass = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalYesNoCancel.prototype, "cancelButtonDisabled", { get: function () { return this._cancelButtonDisabled; }, set: function (value) { this._cancelButtonDisabled = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); RouterModalYesNoCancel.propDecorators = { cancelButtonText: [{ type: Input }], cancelButtonClass: [{ type: Input }], cancelButtonDisabled: [{ type: Input }] }; return RouterModalYesNoCancel; }(RouterModalYesNo)); var RouterModalOkCancel = /** @class */ (function (_super) { __extends(RouterModalOkCancel, _super); function RouterModalOkCancel() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.buttonChanges = new EventEmitter(); _this._okButtonText = ButtonTypes.ok.buttonText; _this._okButtonClass = ButtonTypes.ok.buttonClass; _this._cancelButtonText = ButtonTypes.cancel.buttonText; _this._cancelButtonClass = ButtonTypes.cancel.buttonClass; _this._okButtonDisabled = ButtonTypes.ok.buttonDisabled; _this._cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled; return _this; } Object.defineProperty(RouterModalOkCancel.prototype, "okButtonState", { get: function () { return { ok: { buttonText: this._okButtonText, buttonClass: this._okButtonClass, buttonDisabled: this._okButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "cancelButtonState", { get: function () { return { cancel: { buttonText: this._cancelButtonText, buttonClass: this._cancelButtonClass, buttonDisabled: this._cancelButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "okButtonText", { get: function () { return this._okButtonText; }, set: function (value) { this._okButtonText = value; this.buttonChanges.emit(this.okButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "okButtonClass", { get: function () { return this._okButtonClass; }, set: function (value) { this._okButtonClass = value; this.buttonChanges.emit(this.okButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "cancelButtonText", { get: function () { return this._cancelButtonText; }, set: function (value) { this._cancelButtonText = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "cancelButtonClass", { get: function () { return this._cancelButtonClass; }, set: function (value) { this._cancelButtonClass = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "okButtonDisabled", { get: function () { return this._okButtonDisabled; }, set: function (value) { this._okButtonDisabled = value; this.buttonChanges.emit(this.okButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalOkCancel.prototype, "cancelButtonDisabled", { get: function () { return this._cancelButtonDisabled; }, set: function (value) { this._cancelButtonDisabled = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); RouterModalOkCancel.propDecorators = { okButtonText: [{ type: Input }], okButtonClass: [{ type: Input }], cancelButtonText: [{ type: Input }], cancelButtonClass: [{ type: Input }], okButtonDisabled: [{ type: Input }], cancelButtonDisabled: [{ type: Input }] }; return RouterModalOkCancel; }(RouterModal)); var RouterModalAbortRetryIgnore = /** @class */ (function (_super) { __extends(RouterModalAbortRetryIgnore, _super); function RouterModalAbortRetryIgnore() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.buttonChanges = new EventEmitter(); // abort button (start) _this._abortButtonText = ButtonTypes.abort.buttonText; _this._abortButtonClass = ButtonTypes.abort.buttonClass; _this._abortButtonDisabled = ButtonTypes.abort.buttonDisabled; // abort button (end) // retry button (start) _this._retryButtonText = ButtonTypes.retry.buttonText; _this._retryButtonClass = ButtonTypes.retry.buttonClass; _this._retryButtonDisabled = ButtonTypes.retry.buttonDisabled; // retry button (end) // ignore button (start) _this._ignoreButtonText = ButtonTypes.ignore.buttonText; _this._ignoreButtonClass = ButtonTypes.ignore.buttonClass; _this._ignoreButtonDisabled = ButtonTypes.ignore.buttonDisabled; return _this; } Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "abortButtonState", { get: function () { return { abort: { buttonText: this._abortButtonText, buttonClass: this._abortButtonClass, buttonDisabled: this._abortButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "retryButtonState", { get: function () { return { retry: { buttonText: this._retryButtonText, buttonClass: this._retryButtonClass, buttonDisabled: this._retryButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "ignoreButtonState", { get: function () { return { ignore: { buttonText: this._ignoreButtonText, buttonClass: this._ignoreButtonClass, buttonDisabled: this._ignoreButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "abortButtonText", { get: function () { return this._abortButtonText; }, set: function (value) { this._abortButtonText = value; this.buttonChanges.emit(this.abortButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "abortButtonClass", { get: function () { return this._abortButtonClass; }, set: function (value) { this._abortButtonClass = value; this.buttonChanges.emit(this.abortButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "abortButtonDisabled", { get: function () { return this._abortButtonDisabled; }, set: function (value) { this._abortButtonDisabled = value; this.buttonChanges.emit(this.abortButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "retryButtonText", { get: function () { return this._retryButtonText; }, set: function (value) { this._retryButtonText = value; this.buttonChanges.emit(this.retryButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "retryButtonClass", { get: function () { return this._retryButtonClass; }, set: function (value) { this._retryButtonClass = value; this.buttonChanges.emit(this.retryButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "retryButtonDisabled", { get: function () { return this._retryButtonDisabled; }, set: function (value) { this._retryButtonDisabled = value; this.buttonChanges.emit(this.retryButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "ignoreButtonText", { get: function () { return this._ignoreButtonText; }, set: function (value) { this._ignoreButtonText = value; this.buttonChanges.emit(this.ignoreButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "ignoreButtonClass", { get: function () { return this._ignoreButtonClass; }, set: function (value) { this._ignoreButtonClass = value; this.buttonChanges.emit(this.ignoreButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalAbortRetryIgnore.prototype, "ignoreButtonDisabled", { get: function () { return this._ignoreButtonDisabled; }, set: function (value) { this._ignoreButtonDisabled = value; this.buttonChanges.emit(this.ignoreButtonState); }, enumerable: true, configurable: true }); RouterModalAbortRetryIgnore.propDecorators = { abortButtonText: [{ type: Input }], abortButtonClass: [{ type: Input }], abortButtonDisabled: [{ type: Input }], retryButtonText: [{ type: Input }], retryButtonClass: [{ type: Input }], retryButtonDisabled: [{ type: Input }], ignoreButtonText: [{ type: Input }], ignoreButtonClass: [{ type: Input }], ignoreButtonDisabled: [{ type: Input }] }; return RouterModalAbortRetryIgnore; }(RouterModal)); // noinspection JSUnusedGlobalSymbols var RouterModalPreviousNextCancel = /** @class */ (function (_super) { __extends(RouterModalPreviousNextCancel, _super); function RouterModalPreviousNextCancel() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.buttonChanges = new EventEmitter(); _this._previousButtonText = ButtonTypes.previous.buttonText; _this._previousButtonClass = ButtonTypes.previous.buttonClass; _this._previousButtonDisabled = ButtonTypes.previous.buttonDisabled; _this._nextButtonText = ButtonTypes.next.buttonText; _this._nextButtonClass = ButtonTypes.next.buttonClass; _this._nextButtonDisabled = ButtonTypes.next.buttonDisabled; _this._cancelButtonText = ButtonTypes.cancel.buttonText; _this._cancelButtonClass = ButtonTypes.cancel.buttonClass; _this._cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled; return _this; } Object.defineProperty(RouterModalPreviousNextCancel.prototype, "previousButtonState", { get: function () { return { previous: { buttonText: this._previousButtonText, buttonClass: this._previousButtonClass, buttonDisabled: this._previousButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "nextButtonState", { get: function () { return { next: { buttonText: this._nextButtonText, buttonClass: this._nextButtonClass, buttonDisabled: this._nextButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "cancelButtonState", { get: function () { return { cancel: { buttonText: this._cancelButtonText, buttonClass: this._cancelButtonClass, buttonDisabled: this._cancelButtonDisabled } }; }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "previousButtonText", { get: function () { return this._previousButtonText; }, set: function (value) { this._previousButtonText = value; this.buttonChanges.emit(this.previousButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "previousButtonClass", { get: function () { return this._previousButtonClass; }, set: function (value) { this._previousButtonClass = value; this.buttonChanges.emit(this.previousButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "previousButtonDisabled", { get: function () { return this._previousButtonDisabled; }, set: function (value) { this._previousButtonDisabled = value; this.buttonChanges.emit(this.previousButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "nextButtonText", { get: function () { return this._nextButtonText; }, set: function (value) { this._nextButtonText = value; this.buttonChanges.emit(this.nextButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "nextButtonClass", { get: function () { return this._nextButtonClass; }, set: function (value) { this._nextButtonClass = value; this.buttonChanges.emit(this.nextButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "nextButtonDisabled", { get: function () { return this._nextButtonDisabled; }, set: function (value) { this._nextButtonDisabled = value; this.buttonChanges.emit(this.nextButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "cancelButtonText", { get: function () { return this._cancelButtonText; }, set: function (value) { this._cancelButtonText = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "cancelButtonClass", { get: function () { return this._cancelButtonClass; }, set: function (value) { this._cancelButtonClass = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); Object.defineProperty(RouterModalPreviousNextCancel.prototype, "cancelButtonDisabled", { get: function () { return this._cancelButtonDisabled; }, set: function (value) { this._cancelButtonDisabled = value; this.buttonChanges.emit(this.cancelButtonState); }, enumerable: true, configurable: true }); RouterModalPreviousNextCancel.propDecorators = { previousButtonText: [{ type: Input }], previousButtonClass: [{ type: Input }], previousButtonDisabled: [{ type: Input }], nextButtonText: [{ type: Input }], nextButtonClass: [{ type: Input }], nextButtonDisabled: [{ type: Input }], cancelButtonText: [{ type: Input }], cancelButtonClass: [{ type: Input }], cancelButtonDisabled: [{ type: Input }] }; return RouterModalPreviousNextCancel; }(RouterModal)); var RouterModalComponent = /** @class */ (function () { function RouterModalComponent(_element, _activatedRoute, _router, _renderer) { this._element = _element; this._activatedRoute = _activatedRoute; this._router = _router; this._renderer = _renderer; this.waiting = false; this.modalTitle = ''; // this properties are here as inputs in order to have a way to customize text and class of each button this.okButtonText = ButtonTypes.ok.buttonText; this.okButtonClass = ButtonTypes.ok.buttonClass; this.cancelButtonText = ButtonTypes.cancel.buttonText; this.cancelButtonClass = ButtonTypes.cancel.buttonClass; this.yesButtonText = ButtonTypes.yes.buttonText; this.yesButtonClass = ButtonTypes.yes.buttonClass; this.noButtonText = ButtonTypes.no.buttonText; this.noButtonClass = ButtonTypes.no.buttonClass; this.abortButtonText = ButtonTypes.abort.buttonText; this.abortButtonClass = ButtonTypes.abort.buttonClass; this.retryButtonText = ButtonTypes.retry.buttonText; this.retryButtonClass = ButtonTypes.retry.buttonClass; this.ignoreButtonText = ButtonTypes.ignore.buttonText; this.ignoreButtonClass = ButtonTypes.ignore.buttonClass; this.previousButtonText = ButtonTypes.previous.buttonText; this.previousButtonClass = ButtonTypes.previous.buttonClass; this.nextButtonText = ButtonTypes.next.buttonText; this.nextButtonClass = ButtonTypes.next.buttonClass; // default instance buttons this.instanceButtons = { ok: null, cancel: null, yes: null, no: null, abort: null, retry: null, ignore: null, previous: null, next: null }; } RouterModalComponent.prototype.cancel = function () { return __awaiter(this, void 0, void 0, function () { var err_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.cancel === 'function')) return [3 /*break*/, 2]; // do cancel return [4 /*yield*/, this.componentReference.cancel()]; case 1: // do cancel _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_1 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.ok = function () { return __awaiter(this, void 0, void 0, function () { var err_2; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.ok === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.ok()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_2 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.abort = function () { return __awaiter(this, void 0, void 0, function () { var err_3; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.abort === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.abort()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_3 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.retry = function () { return __awaiter(this, void 0, void 0, function () { var err_4; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.retry === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.retry()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_4 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.ignore = function () { return __awaiter(this, void 0, void 0, function () { var err_5; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.ignore === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.ignore()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_5 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.previous = function () { return __awaiter(this, void 0, void 0, function () { var err_6; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.previous === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.previous()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_6 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.next = function () { return __awaiter(this, void 0, void 0, function () { var err_7; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.next === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.next()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_7 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.yes = function () { return __awaiter(this, void 0, void 0, function () { var err_8; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.yes === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.yes()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_8 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.no = function () { return __awaiter(this, void 0, void 0, function () { var err_9; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 6, , 7]); if (!this.componentReference) return [3 /*break*/, 5]; // set waiting this.waiting = true; if (!(typeof this.componentReference.no === 'function')) return [3 /*break*/, 2]; // do submit return [4 /*yield*/, this.componentReference.no()]; case 1: // do submit _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this._router.navigate(['../'], { relativeTo: this._activatedRoute })]; case 3: _a.sent(); _a.label = 4; case 4: // unset waiting this.waiting = false; _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: err_9 = _a.sent(); this.waiting = false; return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; RouterModalComponent.prototype.onActivate = function (event) { var _this = this; this.componentReference = event; // get router outlet component if (this.componentReference) { if (this.componentReference.buttonChanges) { // subscribe for any button changes this.componentButtonChanges = this.componentReference.buttonChanges .subscribe(function (buttonChange) { if (buttonChange) { // assign button changes Object.assign(_this.instanceButtons, buttonChange); } }); } if (this.componentReference.modalChanges) { // get modal changes this.componentModalChanges = this.componentReference.modalChanges.subscribe(function (modalChanges) { _this.modalInstanceTitle = modalChanges.modalTitle; if (modalChanges.modalClass) { _this.modalInstanceClass = modalChanges.modalClass; } }); } // get title this.modalInstanceTitle = this.componentReference.modalTitle; // get class this.modalInstanceClass = this.componentReference.modalClass; // hold this to validate buttons var hasAtLeastOneButton_1 = false; this.instanceButtons = { ok: null, cancel: null, yes: null, no: null, abort: null, retry: null, ignore: null, previous: null, next: null }; // enumerate button types Object.keys(ButtonTypes).forEach(function (key) { // search if component has a method with the same name if (typeof _this.componentReference[key] === 'function') { // enable button _this.instanceButtons[key] = Object.assign({}, ButtonTypes[key]); hasAtLeastOneButton_1 = true; var buttonTextProperty = key + "ButtonText"; if (_this.componentReference.hasOwnProperty(buttonTextProperty)) { _this.instanceButtons[key].buttonText = _this.componentReference[buttonTextProperty]; } else { // get property from this component _this.instanceButtons[key].buttonText = _this[buttonTextProperty]; } var buttonClassProperty = key + "ButtonClass"; if (_this.componentReference.hasOwnProperty(buttonClassProperty)) { _this.instanceButtons[key].buttonClass = _this.componentReference[buttonClassProperty]; } else { // get property from this component _this.instanceButtons[key].buttonClass = _this[buttonClassProperty]; } } }); if (!hasAtLeastOneButton_1) { // there are no buttons, so add only ok this.instanceButtons.ok = Object.assign({}, ButtonTypes.ok); } } var backdropElement = this._element.nativeElement.querySelector('.modal-backdrop'); this._element.nativeElement.querySelector('.bd-modal').classList.remove('d-none'); this._renderer.addClass(document.body, 'overflow-hidden'); this._renderer.addClass(document.body, 'pr-3'); // add large modal default styles // this operation adds scrolling to modal container // in cases where modal overflows the height of the container var modalElement = this._element.nativeElement.querySelector('.modal'); if (modalElement) { modalElement.style.setProperty('overflow-x', 'hidden'); modalElement.style.setProperty('overflow-y', 'auto'); } if (backdropElement) { // remove d-none backdropElement.classList.remove('d-none'); // add show backdropElement.classList.add('show'); } return false; }; // noinspection JSUnusedLocalSymbols RouterModalComponent.prototype.onDeactivate = function (event) { if (this.componentModalChanges) { this.componentModalChanges.unsubscribe(); this.componentModalChanges = null; } if (this.componentButtonChanges) { this.componentButtonChanges.unsubscribe(); this.componentButtonChanges = null; } // restore properties this.modalInstanceTitle = this.modalTitle; this.modalInstanceClass = this.modalClass; this.componentReference = null; var backdropElement = this._element.nativeElement.querySelector('.modal-backdrop'); this._element.nativeElement.querySelector('.bd-modal').classList.add('d-none'); this._renderer.removeClass(document.body, 'overflow-hidden'); this._renderer.removeClass(document.body, 'pr-3'); if (backdropElement) { // remove show backdropElement.classList.remove('show'); // add d-none backdropElement.classList.add('d-none'); } return false; }; RouterModalComponent.decorators = [ { type: Component, args: [{ // tslint:disable-next-line:component-selector selector: 'router-modal', 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\">&times;</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]=\"instanceBut