UNPKG

@universis/common

Version:

Universis - common directives and services

1,178 lines (1,165 loc) 49.7 kB
import * as i0 from '@angular/core'; import { EventEmitter, Component, Input, ViewEncapsulation, NgModule } from '@angular/core'; import * as i1 from '@angular/router'; import { RouterModule } from '@angular/router'; import * as i2 from '@angular/common'; import { CommonModule } from '@angular/common'; import * as i3 from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core'; const 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 } }; class RouterModal { constructor(router, activatedRoute) { this.router = router; this.activatedRoute = activatedRoute; this.modalChanges = new EventEmitter(); // } /** * Gets or modal window title */ get modalTitle() { return this._modalTitle; } set modalTitle(value) { this._modalTitle = value; this.modalChanges.emit({ modalTitle: this._modalTitle, modalClass: this._modalClass, }); } /** * Gets or sets modal window additional class */ get modalClass() { return this._modalClass; } set modalClass(value) { this._modalClass = value; this.modalChanges.emit({ modalTitle: this._modalTitle, modalClass: this._modalClass, }); } /** * Closes modal window */ close(navigationExtras) { return this.router.navigate([ { outlets: { modal: null } } ], { relativeTo: this.activatedRoute.parent, }).then(navigationEnd => { if (navigationEnd && navigationExtras) { if (this.activatedRoute.parent && this.activatedRoute.parent.component) { const finalNavigationExtras = Object.assign({ relativeTo: this.activatedRoute.parent }, navigationExtras); return this.router.navigate(['.'], finalNavigationExtras); } } return Promise.resolve(navigationEnd); }); } } RouterModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModal, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); RouterModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModal, selector: "ng-component", inputs: { modalTitle: "modalTitle", modalClass: "modalClass" }, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModal, decorators: [{ type: Component, args: [{ template: '' }] }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }]; }, propDecorators: { modalTitle: [{ type: Input }], modalClass: [{ type: Input }] } }); class RouterModalYesNo extends RouterModal { constructor() { super(...arguments); 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; } get yesButtonState() { return { yes: { buttonText: this._yesButtonText, buttonClass: this._yesButtonClass, buttonDisabled: this._yesButtonDisabled } }; } get noButtonState() { return { no: { buttonText: this._noButtonText, buttonClass: this._noButtonClass, buttonDisabled: this._noButtonDisabled } }; } get yesButtonText() { return this._yesButtonText; } set yesButtonText(value) { this._yesButtonText = value; this.buttonChanges.emit(this.yesButtonState); } get yesButtonClass() { return this._yesButtonClass; } set yesButtonClass(value) { this._yesButtonClass = value; this.buttonChanges.emit(this.yesButtonState); } get noButtonText() { return this._noButtonText; } set noButtonText(value) { this._noButtonText = value; this.buttonChanges.emit(this.noButtonState); } get noButtonClass() { return this._noButtonClass; } set noButtonClass(value) { this._noButtonClass = value; this.buttonChanges.emit(this.noButtonState); } get yesButtonDisabled() { return this._yesButtonDisabled; } set yesButtonDisabled(value) { this._yesButtonDisabled = value; this.buttonChanges.emit(this.yesButtonState); } get noButtonDisabled() { return this._noButtonDisabled; } set noButtonDisabled(value) { this._noButtonDisabled = value; this.buttonChanges.emit(this.noButtonState); } } RouterModalYesNo.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalYesNo, deps: null, target: i0.ɵɵFactoryTarget.Component }); RouterModalYesNo.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModalYesNo, selector: "ng-component", inputs: { yesButtonText: "yesButtonText", yesButtonClass: "yesButtonClass", noButtonText: "noButtonText", noButtonClass: "noButtonClass", yesButtonDisabled: "yesButtonDisabled", noButtonDisabled: "noButtonDisabled" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalYesNo, decorators: [{ type: Component, args: [{ template: '' }] }], propDecorators: { yesButtonText: [{ type: Input }], yesButtonClass: [{ type: Input }], noButtonText: [{ type: Input }], noButtonClass: [{ type: Input }], yesButtonDisabled: [{ type: Input }], noButtonDisabled: [{ type: Input }] } }); // noinspection JSUnusedGlobalSymbols class RouterModalYesNoCancel extends RouterModalYesNo { constructor() { super(...arguments); this._cancelButtonText = ButtonTypes.cancel.buttonText; this._cancelButtonClass = ButtonTypes.cancel.buttonClass; this._cancelButtonDisabled = ButtonTypes.cancel.buttonDisabled; } get cancelButtonState() { return { cancel: { buttonText: this._cancelButtonText, buttonClass: this._cancelButtonClass, buttonDisabled: this._cancelButtonDisabled } }; } get cancelButtonText() { return this._cancelButtonText; } set cancelButtonText(value) { this._cancelButtonText = value; this.buttonChanges.emit(this.cancelButtonState); } get cancelButtonClass() { return this._cancelButtonClass; } set cancelButtonClass(value) { this._cancelButtonClass = value; this.buttonChanges.emit(this.cancelButtonState); } get cancelButtonDisabled() { return this._cancelButtonDisabled; } set cancelButtonDisabled(value) { this._cancelButtonDisabled = value; this.buttonChanges.emit(this.cancelButtonState); } } RouterModalYesNoCancel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalYesNoCancel, deps: null, target: i0.ɵɵFactoryTarget.Component }); RouterModalYesNoCancel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModalYesNoCancel, selector: "ng-component", inputs: { cancelButtonText: "cancelButtonText", cancelButtonClass: "cancelButtonClass", cancelButtonDisabled: "cancelButtonDisabled" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalYesNoCancel, decorators: [{ type: Component, args: [{ template: '' }] }], propDecorators: { cancelButtonText: [{ type: Input }], cancelButtonClass: [{ type: Input }], cancelButtonDisabled: [{ type: Input }] } }); class RouterModalOkCancel extends RouterModal { constructor() { super(...arguments); 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; } get okButtonState() { return { ok: { buttonText: this._okButtonText, buttonClass: this._okButtonClass, buttonDisabled: this._okButtonDisabled } }; } get cancelButtonState() { return { cancel: { buttonText: this._cancelButtonText, buttonClass: this._cancelButtonClass, buttonDisabled: this._cancelButtonDisabled } }; } get okButtonText() { return this._okButtonText; } set okButtonText(value) { this._okButtonText = value; this.buttonChanges.emit(this.okButtonState); } get okButtonClass() { return this._okButtonClass; } set okButtonClass(value) { this._okButtonClass = value; this.buttonChanges.emit(this.okButtonState); } get cancelButtonText() { return this._cancelButtonText; } set cancelButtonText(value) { this._cancelButtonText = value; this.buttonChanges.emit(this.cancelButtonState); } get cancelButtonClass() { return this._cancelButtonClass; } set cancelButtonClass(value) { this._cancelButtonClass = value; this.buttonChanges.emit(this.cancelButtonState); } get okButtonDisabled() { return this._okButtonDisabled; } set okButtonDisabled(value) { this._okButtonDisabled = value; this.buttonChanges.emit(this.okButtonState); } get cancelButtonDisabled() { return this._cancelButtonDisabled; } set cancelButtonDisabled(value) { this._cancelButtonDisabled = value; this.buttonChanges.emit(this.cancelButtonState); } } RouterModalOkCancel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalOkCancel, deps: null, target: i0.ɵɵFactoryTarget.Component }); RouterModalOkCancel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModalOkCancel, selector: "ng-component", inputs: { okButtonText: "okButtonText", okButtonClass: "okButtonClass", cancelButtonText: "cancelButtonText", cancelButtonClass: "cancelButtonClass", okButtonDisabled: "okButtonDisabled", cancelButtonDisabled: "cancelButtonDisabled" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalOkCancel, decorators: [{ type: Component, args: [{ template: '' }] }], propDecorators: { okButtonText: [{ type: Input }], okButtonClass: [{ type: Input }], cancelButtonText: [{ type: Input }], cancelButtonClass: [{ type: Input }], okButtonDisabled: [{ type: Input }], cancelButtonDisabled: [{ type: Input }] } }); class RouterModalAbortRetryIgnore extends RouterModal { constructor() { super(...arguments); 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; } get abortButtonState() { return { abort: { buttonText: this._abortButtonText, buttonClass: this._abortButtonClass, buttonDisabled: this._abortButtonDisabled } }; } get retryButtonState() { return { retry: { buttonText: this._retryButtonText, buttonClass: this._retryButtonClass, buttonDisabled: this._retryButtonDisabled } }; } get ignoreButtonState() { return { ignore: { buttonText: this._ignoreButtonText, buttonClass: this._ignoreButtonClass, buttonDisabled: this._ignoreButtonDisabled } }; } get abortButtonText() { return this._abortButtonText; } set abortButtonText(value) { this._abortButtonText = value; this.buttonChanges.emit(this.abortButtonState); } get abortButtonClass() { return this._abortButtonClass; } set abortButtonClass(value) { this._abortButtonClass = value; this.buttonChanges.emit(this.abortButtonState); } get abortButtonDisabled() { return this._abortButtonDisabled; } set abortButtonDisabled(value) { this._abortButtonDisabled = value; this.buttonChanges.emit(this.abortButtonState); } get retryButtonText() { return this._retryButtonText; } set retryButtonText(value) { this._retryButtonText = value; this.buttonChanges.emit(this.retryButtonState); } get retryButtonClass() { return this._retryButtonClass; } set retryButtonClass(value) { this._retryButtonClass = value; this.buttonChanges.emit(this.retryButtonState); } get retryButtonDisabled() { return this._retryButtonDisabled; } set retryButtonDisabled(value) { this._retryButtonDisabled = value; this.buttonChanges.emit(this.retryButtonState); } get ignoreButtonText() { return this._ignoreButtonText; } set ignoreButtonText(value) { this._ignoreButtonText = value; this.buttonChanges.emit(this.ignoreButtonState); } get ignoreButtonClass() { return this._ignoreButtonClass; } set ignoreButtonClass(value) { this._ignoreButtonClass = value; this.buttonChanges.emit(this.ignoreButtonState); } get ignoreButtonDisabled() { return this._ignoreButtonDisabled; } set ignoreButtonDisabled(value) { this._ignoreButtonDisabled = value; this.buttonChanges.emit(this.ignoreButtonState); } } RouterModalAbortRetryIgnore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalAbortRetryIgnore, deps: null, target: i0.ɵɵFactoryTarget.Component }); RouterModalAbortRetryIgnore.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModalAbortRetryIgnore, selector: "ng-component", inputs: { abortButtonText: "abortButtonText", abortButtonClass: "abortButtonClass", abortButtonDisabled: "abortButtonDisabled", retryButtonText: "retryButtonText", retryButtonClass: "retryButtonClass", retryButtonDisabled: "retryButtonDisabled", ignoreButtonText: "ignoreButtonText", ignoreButtonClass: "ignoreButtonClass", ignoreButtonDisabled: "ignoreButtonDisabled" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalAbortRetryIgnore, decorators: [{ type: Component, args: [{ template: '' }] }], 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 }] } }); // noinspection JSUnusedGlobalSymbols class RouterModalPreviousNextCancel extends RouterModal { constructor() { super(...arguments); 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; } get previousButtonState() { return { previous: { buttonText: this._previousButtonText, buttonClass: this._previousButtonClass, buttonDisabled: this._previousButtonDisabled } }; } get nextButtonState() { return { next: { buttonText: this._nextButtonText, buttonClass: this._nextButtonClass, buttonDisabled: this._nextButtonDisabled } }; } get cancelButtonState() { return { cancel: { buttonText: this._cancelButtonText, buttonClass: this._cancelButtonClass, buttonDisabled: this._cancelButtonDisabled } }; } get previousButtonText() { return this._previousButtonText; } set previousButtonText(value) { this._previousButtonText = value; this.buttonChanges.emit(this.previousButtonState); } get previousButtonClass() { return this._previousButtonClass; } set previousButtonClass(value) { this._previousButtonClass = value; this.buttonChanges.emit(this.previousButtonState); } get previousButtonDisabled() { return this._previousButtonDisabled; } set previousButtonDisabled(value) { this._previousButtonDisabled = value; this.buttonChanges.emit(this.previousButtonState); } get nextButtonText() { return this._nextButtonText; } set nextButtonText(value) { this._nextButtonText = value; this.buttonChanges.emit(this.nextButtonState); } get nextButtonClass() { return this._nextButtonClass; } set nextButtonClass(value) { this._nextButtonClass = value; this.buttonChanges.emit(this.nextButtonState); } get nextButtonDisabled() { return this._nextButtonDisabled; } set nextButtonDisabled(value) { this._nextButtonDisabled = value; this.buttonChanges.emit(this.nextButtonState); } get cancelButtonText() { return this._cancelButtonText; } set cancelButtonText(value) { this._cancelButtonText = value; this.buttonChanges.emit(this.cancelButtonState); } get cancelButtonClass() { return this._cancelButtonClass; } set cancelButtonClass(value) { this._cancelButtonClass = value; this.buttonChanges.emit(this.cancelButtonState); } get cancelButtonDisabled() { return this._cancelButtonDisabled; } set cancelButtonDisabled(value) { this._cancelButtonDisabled = value; this.buttonChanges.emit(this.cancelButtonState); } } RouterModalPreviousNextCancel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalPreviousNextCancel, deps: null, target: i0.ɵɵFactoryTarget.Component }); RouterModalPreviousNextCancel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModalPreviousNextCancel, selector: "ng-component", inputs: { previousButtonText: "previousButtonText", previousButtonClass: "previousButtonClass", previousButtonDisabled: "previousButtonDisabled", nextButtonText: "nextButtonText", nextButtonClass: "nextButtonClass", nextButtonDisabled: "nextButtonDisabled", cancelButtonText: "cancelButtonText", cancelButtonClass: "cancelButtonClass", cancelButtonDisabled: "cancelButtonDisabled" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalPreviousNextCancel, decorators: [{ type: Component, args: [{ template: '' }] }], 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 }] } }); class RouterModalComponent { constructor(_element, _activatedRoute, _router, _renderer) { this._element = _element; this._activatedRoute = _activatedRoute; this._router = _router; this._renderer = _renderer; this.componentModalChanges = null; this.componentButtonChanges = null; this.waiting = false; this.modalTitle = ''; // these 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 }; } async cancel() { try { if (this.componentReference) { // set waiting this.waiting = true; // if component has cancel() method if (typeof this.componentReference.cancel === 'function') { // do cancel await this.componentReference.cancel(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async ok() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.ok === 'function') { // do submit await this.componentReference.ok(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async abort() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.abort === 'function') { // do submit await this.componentReference.abort(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async retry() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.retry === 'function') { // do submit await this.componentReference.retry(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async ignore() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.ignore === 'function') { // do submit await this.componentReference.ignore(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async previous() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.previous === 'function') { // do submit await this.componentReference.previous(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async next() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.next === 'function') { // do submit await this.componentReference.next(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async yes() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.yes === 'function') { // do submit await this.componentReference.yes(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } async no() { try { if (this.componentReference) { // set waiting this.waiting = true; if (typeof this.componentReference.no === 'function') { // do submit await this.componentReference.no(); } else { await this._router.navigate(['../'], { relativeTo: this._activatedRoute }); } // unset waiting this.waiting = false; } } catch (err) { this.waiting = false; } } onActivate(event) { 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((buttonChange) => { if (buttonChange) { // assign button changes Object.assign(this.instanceButtons, buttonChange); } }); } if (this.componentReference.modalChanges) { // get modal changes this.componentModalChanges = this.componentReference.modalChanges.subscribe((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 let hasAtLeastOneButton = 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(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 = true; const 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]; } const 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) { // there are no buttons, so add only ok this.instanceButtons.ok = Object.assign({}, ButtonTypes.ok); } } const 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 const 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 onDeactivate(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; const 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.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalComponent, deps: [{ token: i0.ElementRef }, { token: i1.ActivatedRoute }, { token: i1.Router }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); RouterModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RouterModalComponent, selector: "router-modal", inputs: { modalTitle: "modalTitle", modalClass: "modalClass", okButtonText: "okButtonText", okButtonClass: "okButtonClass", cancelButtonText: "cancelButtonText", cancelButtonClass: "cancelButtonClass", yesButtonText: "yesButtonText", yesButtonClass: "yesButtonClass", noButtonText: "noButtonText", noButtonClass: "noButtonClass", abortButtonText: "abortButtonText", abortButtonClass: "abortButtonClass", retryButtonText: "retryButtonText", retryButtonClass: "retryButtonClass", ignoreButtonText: "ignoreButtonText", ignoreButtonClass: "ignoreButtonClass", previousButtonText: "previousButtonText", previousButtonClass: "previousButtonClass", nextButtonText: "nextButtonText", nextButtonClass: "nextButtonClass" }, ngImport: i0, template: ` <div class="bd-modal d-none"> <div class="modal-backdrop fade d-none"></div> <div class="modal" tabindex="-1" role="dialog" [ngClass]="{ 'modal-waiting': waiting }"> <div class="modal-dialog" [ngClass]="modalInstanceClass" role="document"> <div class="modal-content"> <div class="modal-header" *ngIf="modalInstanceTitle"> <h5 class="modal-title">{{modalInstanceTitle | translate}}</h5> <button *ngIf="instanceButtons.cancel" [disabled]="waiting || instanceButtons.cancel.buttonDisabled" (click)="cancel()" type="button" class="close" data-dismiss="modal" aria-label="Cancel"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <router-outlet (activate)="onActivate($event)" (deactivate)="onDeactivate($event)" name="modal"></router-outlet> </div> <div class="modal-footer justify-content-end"> <button *ngIf="instanceButtons.previous" [disabled]="waiting || instanceButtons.previous.buttonDisabled" (click)="previous()" type="button" [ngClass]="instanceButtons.previous.buttonClass"> {{instanceButtons.previous.buttonText | translate}} </button> <button *ngIf="instanceButtons.ok" [disabled]="waiting || instanceButtons.ok.buttonDisabled" (click)="ok()" type="button" [ngClass]="instanceButtons.ok.buttonClass"> {{instanceButtons.ok.buttonText | translate}} </button> <button *ngIf="instanceButtons.yes" [disabled]="waiting || instanceButtons.yes.buttonDisabled" (click)="yes()" type="button" [ngClass]="instanceButtons.yes.buttonClass"> {{instanceButtons.yes.buttonText | translate}} </button> <button *ngIf="instanceButtons.no" [disabled]="waiting || instanceButtons.no.buttonDisabled" (click)="no()" type="button" [ngClass]="instanceButtons.no.buttonClass"> {{instanceButtons.no.buttonText | translate}} </button> <button *ngIf="instanceButtons.next" [disabled]="waiting || instanceButtons.next.buttonDisabled" (click)="next()" type="button" [ngClass]="instanceButtons.next.buttonClass"> {{instanceButtons.next.buttonText | translate}} </button> <button *ngIf="instanceButtons.cancel" [disabled]="waiting || instanceButtons.cancel.buttonDisabled" (click)="cancel()" type="button" [ngClass]="instanceButtons.cancel.buttonClass" data-dismiss="modal"> {{instanceButtons.cancel.buttonText | translate}} </button> <button *ngIf="instanceButtons.abort" [disabled]="waiting || instanceButtons.abort.buttonDisabled" (click)="abort()" type="button" [ngClass]="instanceButtons.abort.buttonClass"> {{instanceButtons.abort.buttonText | translate}} </button> <button *ngIf="instanceButtons.retry" [disabled]="waiting || instanceButtons.retry.buttonDisabled" (click)="retry()" type="button" [ngClass]="instanceButtons.retry.buttonClass"> {{instanceButtons.retry.buttonText | translate}} </button> <button *ngIf="instanceButtons.ignore" [disabled]="waiting || instanceButtons.ignore.buttonDisabled" (click)="ignore()" type="button" [ngClass]="instanceButtons.ignore.buttonClass" data-dismiss="modal"> {{instanceButtons.ignore.buttonText | translate}} </button> </div> </div> </div> </div> </div> `, isInline: true, styles: [".bd-modal .modal{position:fixed;right:auto;bottom:auto;z-index:1045;display:block}.bd-modal .modal .modal-body{margin-top:0;margin-bottom:0}.bd-modal .modal.modal-waiting{opacity:.6}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalComponent, decorators: [{ type: Component, args: [{ selector: 'router-modal', template: ` <div class="bd-modal d-none"> <div class="modal-backdrop fade d-none"></div> <div class="modal" tabindex="-1" role="dialog" [ngClass]="{ 'modal-waiting': waiting }"> <div class="modal-dialog" [ngClass]="modalInstanceClass" role="document"> <div class="modal-content"> <div class="modal-header" *ngIf="modalInstanceTitle"> <h5 class="modal-title">{{modalInstanceTitle | translate}}</h5> <button *ngIf="instanceButtons.cancel" [disabled]="waiting || instanceButtons.cancel.buttonDisabled" (click)="cancel()" type="button" class="close" data-dismiss="modal" aria-label="Cancel"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <router-outlet (activate)="onActivate($event)" (deactivate)="onDeactivate($event)" name="modal"></router-outlet> </div> <div class="modal-footer justify-content-end"> <button *ngIf="instanceButtons.previous" [disabled]="waiting || instanceButtons.previous.buttonDisabled" (click)="previous()" type="button" [ngClass]="instanceButtons.previous.buttonClass"> {{instanceButtons.previous.buttonText | translate}} </button> <button *ngIf="instanceButtons.ok" [disabled]="waiting || instanceButtons.ok.buttonDisabled" (click)="ok()" type="button" [ngClass]="instanceButtons.ok.buttonClass"> {{instanceButtons.ok.buttonText | translate}} </button> <button *ngIf="instanceButtons.yes" [disabled]="waiting || instanceButtons.yes.buttonDisabled" (click)="yes()" type="button" [ngClass]="instanceButtons.yes.buttonClass"> {{instanceButtons.yes.buttonText | translate}} </button> <button *ngIf="instanceButtons.no" [disabled]="waiting || instanceButtons.no.buttonDisabled" (click)="no()" type="button" [ngClass]="instanceButtons.no.buttonClass"> {{instanceButtons.no.buttonText | translate}} </button> <button *ngIf="instanceButtons.next" [disabled]="waiting || instanceButtons.next.buttonDisabled" (click)="next()" type="button" [ngClass]="instanceButtons.next.buttonClass"> {{instanceButtons.next.buttonText | translate}} </button> <button *ngIf="instanceButtons.cancel" [disabled]="waiting || instanceButtons.cancel.buttonDisabled" (click)="cancel()" type="button" [ngClass]="instanceButtons.cancel.buttonClass" data-dismiss="modal"> {{instanceButtons.cancel.buttonText | translate}} </button> <button *ngIf="instanceButtons.abort" [disabled]="waiting || instanceButtons.abort.buttonDisabled" (click)="abort()" type="button" [ngClass]="instanceButtons.abort.buttonClass"> {{instanceButtons.abort.buttonText | translate}} </button> <button *ngIf="instanceButtons.retry" [disabled]="waiting || instanceButtons.retry.buttonDisabled" (click)="retry()" type="button" [ngClass]="instanceButtons.retry.buttonClass"> {{instanceButtons.retry.buttonText | translate}} </button> <button *ngIf="instanceButtons.ignore" [disabled]="waiting || instanceButtons.ignore.buttonDisabled" (click)="ignore()" type="button" [ngClass]="instanceButtons.ignore.buttonClass" data-dismiss="modal"> {{instanceButtons.ignore.buttonText | translate}} </button> </div> </div> </div> </div> </div> `, encapsulation: ViewEncapsulation.None, styles: [".bd-modal .modal{position:fixed;right:auto;bottom:auto;z-index:1045;display:block}.bd-modal .modal .modal-body{margin-top:0;margin-bottom:0}.bd-modal .modal.modal-waiting{opacity:.6}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ActivatedRoute }, { type: i1.Router }, { type: i0.Renderer2 }]; }, propDecorators: { modalTitle: [{ type: Input }], modalClass: [{ type: Input }], okButtonText: [{ type: Input }], okButtonClass: [{ type: Input }], cancelButtonText: [{ type: Input }], cancelButtonClass: [{ type: Input }], yesButtonText: [{ type: Input }], yesButtonClass: [{ type: Input }], noButtonText: [{ type: Input }], noButtonClass: [{ type: Input }], abortButtonText: [{ type: Input }], abortButtonClass: [{ type: Input }], retryButtonText: [{ type: Input }], retryButtonClass: [{ type: Input }], ignoreButtonText: [{ type: Input }], ignoreButtonClass: [{ type: Input }], previousButtonText: [{ type: Input }], previousButtonClass: [{ type: Input }], nextButtonText: [{ type: Input }], nextButtonClass: [{ type: Input }] } }); class RouterModalModule { constructor() { // } } RouterModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); RouterModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: RouterModalModule, declarations: [RouterModalComponent], imports: [RouterModule, CommonModule, TranslateModule], exports: [RouterModalComponent] }); RouterModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalModule, imports: [RouterModule, CommonModule, TranslateModule] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RouterModalModule, decorators: [{ type: NgModule, args: [{ declarations: [RouterModalComponent], imports: [ RouterModule, CommonModule, TranslateModule ], providers: [], exports: [RouterModalComponent] }] }], ctorParameters: function () { return []; } }); /* * Public API Surface of modals */ /** * Generated bundle index. Do not edit. */ export { ButtonTypes, RouterModal, RouterModalAbortRetryIgnore, RouterModalComponent, RouterModalModule, RouterModalOkCancel, RouterModalPreviousNextCancel, RouterModalYesNo, RouterModalYesNoCancel }; //# sourceMappingURL=universis-common-routing.mjs.map