@developer-partners/ngx-modal-dialog
Version:
1. Install the libary
88 lines • 14.4 kB
JavaScript
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