UNPKG

@developer-partners/ngx-modal-dialog

Version:
88 lines 14.4 kB
import { Injectable, createComponent, EnvironmentInjector } from "@angular/core"; import { ModalReference } from "./modal-reference"; import { ModalComponent } from "./modal.component"; import * as i0 from "@angular/core"; export class ModalService { constructor(applicaionRef, injector, envInjector) { this._applicaionRef = applicaionRef; this._injector = injector; this._envInjector = envInjector; } createModalComponent(dependecies, config) { const envInjector = config.viewContainerRef?.injector.get(EnvironmentInjector, null) ?? this._envInjector; const injector = new ModalInjector(config.viewContainerRef?.injector ?? this._injector, dependecies); const component = createComponent(ModalComponent, { environmentInjector: envInjector, elementInjector: injector }); component.instance.envInjector = envInjector; component.instance.elementInjector = injector; return component; } createModalRefernce(map, config) { let modalReference = new InternalModalRef(config); // Create with internal implementation, but inject the public version. map.set(ModalReference, modalReference); modalReference.componentRef = this.createModalComponent(map, config); modalReference .result() .subscribe({ complete: () => this.removeModal(modalReference) }); return modalReference; } show(componentType, config) { let map = new WeakMap(); let modalReference = this.createModalRefernce(map, config); modalReference.componentRef.instance.contentComponentType = componentType; this._applicaionRef.attachView(modalReference.componentRef.hostView); document.body.appendChild(modalReference.getHtmlElement()); // To trigger the animation effect. The modal is added to document at this point, but it's invisible. // We animate the showing part. window.setTimeout(() => { modalReference.getHtmlElement().firstElementChild.classList.add('dp-visible'); }); modalReference.componentRef.changeDetectorRef.detectChanges(); return modalReference; } removeModal(modalReference) { modalReference.getHtmlElement().firstElementChild.classList.remove('dp-visible'); // Wait until the closing animation is done, then remove the component. window.setTimeout(() => { this._applicaionRef.detachView(modalReference.componentRef.hostView); modalReference.componentRef.destroy(); }, 400); } } ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ModalService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); ModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ModalService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ModalService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.EnvironmentInjector }]; } }); class ModalInjector { constructor(injector, extraDependencies) { this._injector = injector; this._extraDependecnies = extraDependencies; } get(token, notFoundValue, flags) { let resolved = this._extraDependecnies.get(token); if (resolved) { return resolved; } return this._injector.get(token, notFoundValue, flags); } } class InternalModalRef extends ModalReference { constructor(config) { super(config); } getHtmlElement() { let viewRef = this.componentRef.hostView; return viewRef.rootNodes[0]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tb2RhbC1kaWFsb2cvc3JjL2xpYi9tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXdKLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2TyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUtuRCxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUNFLGFBQTZCLEVBQzdCLFFBQWtCLEVBQ2xCLFdBQWdDO1FBRWhDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUE4QixFQUFFLE1BQXdCO1FBQ25GLE1BQU0sV0FBVyxHQUNmLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQztZQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXBCLE1BQU0sUUFBUSxHQUFHLElBQUksYUFBYSxDQUNoQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQ25ELFdBQVcsQ0FDWixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLGNBQWMsRUFBRTtZQUNoRCxtQkFBbUIsRUFBRSxXQUFXO1lBQ2hDLGVBQWUsRUFBRSxRQUFRO1NBQzFCLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUM3QyxTQUFTLENBQUMsUUFB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Z0JBQW1DLFNBQVEsY0FBZ0M7SUFHL0UsWUFBWSxNQUE0QjtRQUN0QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUEyQyxDQUFDO1FBQzVFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEFwcGxpY2F0aW9uUmVmLCBJbmplY3RvciwgVHlwZSwgQ29tcG9uZW50UmVmLCBJbmplY3Rpb25Ub2tlbiwgQWJzdHJhY3RUeXBlLCBJbmplY3RGbGFncywgRW1iZWRkZWRWaWV3UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBjcmVhdGVDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNb2RhbENvbmZpZyB9IGZyb20gXCIuL21vZGFsLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBNb2RhbFJlZmVyZW5jZSB9IGZyb20gXCIuL21vZGFsLXJlZmVyZW5jZVwiO1xyXG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL21vZGFsLmNvbXBvbmVudFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9hcHBsaWNhaW9uUmVmOiBBcHBsaWNhdGlvblJlZjtcclxuICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3I7XHJcbiAgcHJpdmF0ZSBfZW52SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3I7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgYXBwbGljYWlvblJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBlbnZJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxyXG4gICkge1xyXG4gICAgdGhpcy5fYXBwbGljYWlvblJlZiA9IGFwcGxpY2Fpb25SZWY7XHJcbiAgICB0aGlzLl9pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgdGhpcy5fZW52SW5qZWN0b3IgPSBlbnZJbmplY3RvcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTW9kYWxDb21wb25lbnQoZGVwZW5kZWNpZXM6IFdlYWtNYXA8YW55LCBhbnk+LCBjb25maWc6IE1vZGFsQ29uZmlnPGFueT4pOiBDb21wb25lbnRSZWY8TW9kYWxDb21wb25lbnQ+IHtcclxuICAgIGNvbnN0IGVudkluamVjdG9yID1cclxuICAgICAgY29uZmlnLnZpZXdDb250YWluZXJSZWY/LmluamVjdG9yLmdldChFbnZpcm9ubWVudEluamVjdG9yLCBudWxsKSA/P1xyXG4gICAgICB0aGlzLl9lbnZJbmplY3RvcjtcclxuXHJcbiAgICBjb25zdCBpbmplY3RvciA9IG5ldyBNb2RhbEluamVjdG9yKFxyXG4gICAgICBjb25maWcudmlld0NvbnRhaW5lclJlZj8uaW5qZWN0b3IgPz8gdGhpcy5faW5qZWN0b3IsXHJcbiAgICAgIGRlcGVuZGVjaWVzXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudChNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBlbnZJbmplY3RvcixcclxuICAgICAgZWxlbWVudEluamVjdG9yOiBpbmplY3RvclxyXG4gICAgfSk7XHJcblxyXG4gICAgY29tcG9uZW50Lmluc3RhbmNlLmVudkluamVjdG9yID0gZW52SW5qZWN0b3I7XHJcbiAgICBjb21wb25lbnQuaW5zdGFuY2UuZWxlbWVudEluamVjdG9yID0gaW5qZWN0b3I7XHJcblxyXG4gICAgcmV0dXJuIGNvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTW9kYWxSZWZlcm5jZTxUQ29uZmlnLCBUUmVzdWx0PihtYXA6IFdlYWtNYXA8YW55LCBhbnk+LCBjb25maWc6IE1vZGFsQ29uZmlnPFRDb25maWc+KTogSW50ZXJuYWxNb2RhbFJlZjxUQ29uZmlnLCBUUmVzdWx0PiB7XHJcbiAgICBsZXQgbW9kYWxSZWZlcmVuY2UgPSBuZXcgSW50ZXJuYWxNb2RhbFJlZjxUQ29uZmlnLCBUUmVzdWx0Pihjb25maWcpO1xyXG5cclxuICAgIC8vIENyZWF0ZSB3aXRoIGludGVybmFsIGltcGxlbWVudGF0aW9uLCBidXQgaW5qZWN0IHRoZSBwdWJsaWMgdmVyc2lvbi5cclxuICAgIG1hcC5zZXQoTW9kYWxSZWZlcmVuY2UsIG1vZGFsUmVmZXJlbmNlKTtcclxuXHJcbiAgICBtb2RhbFJlZmVyZW5jZS5jb21wb25lbnRSZWYgPSB0aGlzLmNyZWF0ZU1vZGFsQ29tcG9uZW50KG1hcCwgY29uZmlnKTtcclxuXHJcbiAgICBtb2RhbFJlZmVyZW5jZVxyXG4gICAgICAucmVzdWx0KClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMucmVtb3ZlTW9kYWwobW9kYWxSZWZlcmVuY2UpXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBtb2RhbFJlZmVyZW5jZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93PFRDb25maWcsIFRSZXN1bHQgPSBUQ29uZmlnPihjb21wb25lbnRUeXBlOiBUeXBlPGFueT4sIGNvbmZpZzogTW9kYWxDb25maWc8VENvbmZpZz4pOiBNb2RhbFJlZmVyZW5jZTxUQ29uZmlnLCBUUmVzdWx0PiB7XHJcbiAgICBsZXQgbWFwID0gbmV3IFdlYWtNYXA8YW55LCBhbnk+KCk7XHJcbiAgICBsZXQgbW9kYWxSZWZlcmVuY2UgPSB0aGlzLmNyZWF0ZU1vZGFsUmVmZXJuY2U8VENvbmZpZywgVFJlc3VsdD4obWFwLCBjb25maWcpO1xyXG5cclxuICAgIG1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250ZW50Q29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGU7XHJcblxyXG4gICAgdGhpcy5fYXBwbGljYWlvblJlZi5hdHRhY2hWaWV3KG1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsUmVmZXJlbmNlLmdldEh0bWxFbGVtZW50KCkpO1xyXG5cclxuICAgIC8vIFRvIHRyaWdnZXIgdGhlIGFuaW1hdGlvbiBlZmZlY3QuIFRoZSBtb2RhbCBpcyBhZGRlZCB0byBkb2N1bWVudCBhdCB0aGlzIHBvaW50LCBidXQgaXQncyBpbnZpc2libGUuXHJcbiAgICAvLyBXZSBhbmltYXRlIHRoZSBzaG93aW5nIHBhcnQuXHJcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIG1vZGFsUmVmZXJlbmNlLmdldEh0bWxFbGVtZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmFkZCgnZHAtdmlzaWJsZScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbW9kYWxSZWZlcmVuY2UuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICByZXR1cm4gbW9kYWxSZWZlcmVuY2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZU1vZGFsPFRDb25maWcsIFRSZXN1bHQ+KG1vZGFsUmVmZXJlbmNlOiBJbnRlcm5hbE1vZGFsUmVmPFRDb25maWcsIFRSZXN1bHQ+KTogdm9pZCB7XHJcbiAgICBtb2RhbFJlZmVyZW5jZS5nZXRIdG1sRWxlbWVudCgpLmZpcnN0RWxlbWVudENoaWxkLmNsYXNzTGlzdC5yZW1vdmUoJ2RwLXZpc2libGUnKTtcclxuXHJcbiAgICAvLyBXYWl0IHVudGlsIHRoZSBjbG9zaW5nIGFuaW1hdGlvbiBpcyBkb25lLCB0aGVuIHJlbW92ZSB0aGUgY29tcG9uZW50LlxyXG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9hcHBsaWNhaW9uUmVmLmRldGFjaFZpZXcobW9kYWxSZWZlcmVuY2UuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgICAgbW9kYWxSZWZlcmVuY2UuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgIH0sIDQwMCk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBNb2RhbEluamVjdG9yIGltcGxlbWVudHMgSW5qZWN0b3Ige1xyXG4gIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcjtcclxuICBwcml2YXRlIF9leHRyYURlcGVuZGVjbmllczogV2Vha01hcDxhbnksIGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgZXh0cmFEZXBlbmRlbmNpZXM6IFdlYWtNYXA8YW55LCBhbnk+XHJcbiAgKSB7XHJcbiAgICB0aGlzLl9pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgdGhpcy5fZXh0cmFEZXBlbmRlY25pZXMgPSBleHRyYURlcGVuZGVuY2llcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQ8VD4odG9rZW46IFR5cGU8VD4gfCBJbmplY3Rpb25Ub2tlbjxUPiB8IEFic3RyYWN0VHlwZTxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUO1xyXG4gIHB1YmxpYyBnZXQodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSk7XHJcbiAgcHVibGljIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55LCBmbGFncz86IGFueSkge1xyXG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5fZXh0cmFEZXBlbmRlY25pZXMuZ2V0KHRva2VuKTtcclxuXHJcbiAgICBpZiAocmVzb2x2ZWQpIHtcclxuICAgICAgcmV0dXJuIHJlc29sdmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9pbmplY3Rvci5nZXQodG9rZW4sIG5vdEZvdW5kVmFsdWUsIGZsYWdzKTtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEludGVybmFsTW9kYWxSZWY8VENvbmZpZywgVFJlc3VsdD4gZXh0ZW5kcyBNb2RhbFJlZmVyZW5jZTxUQ29uZmlnLCBUUmVzdWx0PiB7XHJcbiAgcHVibGljIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE1vZGFsQ29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBNb2RhbENvbmZpZzxUQ29uZmlnPikge1xyXG4gICAgc3VwZXIoY29uZmlnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRIdG1sRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBsZXQgdmlld1JlZiA9IHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxNb2RhbENvbXBvbmVudD47XHJcbiAgICByZXR1cm4gdmlld1JlZi5yb290Tm9kZXNbMF07XHJcbiAgfVxyXG59Il19