@preeco-privacy/ngx-modal-dialog
Version:
Dynamic modal dialog for Angular
41 lines • 4.31 kB
JavaScript
import { Injectable } from '@angular/core';
export class ModalDialogInstanceService {
constructor() {
/**
* Used to make sure there is exactly one instance of Modal Dialog
*/
this.componentRefs = [];
}
/**
* Closes existing modal dialog
*/
closeAnyExistingModalDialog() {
while (this.componentRefs.length) {
this.componentRefs[this.componentRefs.length - 1].destroy();
}
}
/**
* Save component ref for future comparison
* @param componentRef
*/
saveExistingModalDialog(componentRef) {
// remove overlay from top element
this.setOverlayForTopDialog(false);
// add new component
this.componentRefs = [...this.componentRefs, componentRef];
componentRef.instance.showOverlay = true;
componentRef.onDestroy(() => {
this.componentRefs.pop();
this.setOverlayForTopDialog(true);
});
}
setOverlayForTopDialog(value) {
if (this.componentRefs.length) {
this.componentRefs[this.componentRefs.length - 1].instance.showOverlay = value;
}
}
}
ModalDialogInstanceService.decorators = [
{ type: Injectable }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZGlhbG9nLWluc3RhbmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kYWwtZGlhbG9nLWluc3RhbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJekQsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVFOztXQUVHO1FBQ0ssa0JBQWEsR0FBeUMsRUFBRSxDQUFDO0lBaUNuRSxDQUFDO0lBL0JDOztPQUVHO0lBQ0gsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUIsQ0FBQyxZQUFnRDtRQUN0RSxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNELFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV6QyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFjO1FBQ25DLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUNoRjtJQUNILENBQUM7OztZQXJDRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2RhbERpYWxvZ0luc3RhbmNlU2VydmljZSB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBleGFjdGx5IG9uZSBpbnN0YW5jZSBvZiBNb2RhbCBEaWFsb2dcbiAgICovXG4gIHByaXZhdGUgY29tcG9uZW50UmVmczogQ29tcG9uZW50UmVmPE1vZGFsRGlhbG9nQ29tcG9uZW50PltdID0gW107XG5cbiAgLyoqXG4gICAqIENsb3NlcyBleGlzdGluZyBtb2RhbCBkaWFsb2dcbiAgICovXG4gIGNsb3NlQW55RXhpc3RpbmdNb2RhbERpYWxvZygpIHtcbiAgICB3aGlsZSAodGhpcy5jb21wb25lbnRSZWZzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWZzW3RoaXMuY29tcG9uZW50UmVmcy5sZW5ndGggLSAxXS5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgY29tcG9uZW50IHJlZiBmb3IgZnV0dXJlIGNvbXBhcmlzb25cbiAgICogQHBhcmFtIGNvbXBvbmVudFJlZlxuICAgKi9cbiAgc2F2ZUV4aXN0aW5nTW9kYWxEaWFsb2coY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TW9kYWxEaWFsb2dDb21wb25lbnQ+KSB7XG4gICAgLy8gcmVtb3ZlIG92ZXJsYXkgZnJvbSB0b3AgZWxlbWVudFxuICAgIHRoaXMuc2V0T3ZlcmxheUZvclRvcERpYWxvZyhmYWxzZSk7XG4gICAgLy8gYWRkIG5ldyBjb21wb25lbnRcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMgPSBbLi4udGhpcy5jb21wb25lbnRSZWZzLCBjb21wb25lbnRSZWZdO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaG93T3ZlcmxheSA9IHRydWU7XG5cbiAgICBjb21wb25lbnRSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmcy5wb3AoKTtcbiAgICAgIHRoaXMuc2V0T3ZlcmxheUZvclRvcERpYWxvZyh0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldE92ZXJsYXlGb3JUb3BEaWFsb2codmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWZzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWZzW3RoaXMuY29tcG9uZW50UmVmcy5sZW5ndGggLSAxXS5pbnN0YW5jZS5zaG93T3ZlcmxheSA9IHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIl19