ngx-modialog-11
Version:
Modal / Dialog for Angular
47 lines • 5.74 kB
JavaScript
import { ApplicationRef, Injector, Injectable } from '@angular/core';
import { createComponent } from '../framework/createComponent';
import { DialogRef } from '../models/dialog-ref';
import { ModalOverlay } from '../overlay/index';
export class DOMOverlayRenderer {
constructor(appRef, injector) {
this.appRef = appRef;
this.injector = injector;
this.isDoc = !(typeof document === 'undefined' || !document);
}
render(dialog, vcRef, injector) {
if (!injector) {
injector = this.injector;
}
const cmpRef = createComponent({
component: ModalOverlay,
vcRef,
injector: Injector.create({
providers: [
{ provide: DialogRef, useValue: dialog }
],
parent: injector
})
});
if (!vcRef) {
this.appRef.attachView(cmpRef.hostView);
// TODO: doesn't look like this is needed, explore. leaving now to be on the safe side.
dialog.onDestroy.subscribe(() => this.appRef.detachView(cmpRef.hostView));
}
if (vcRef && dialog.inElement) {
vcRef.element.nativeElement.appendChild(cmpRef.location.nativeElement);
}
else if (this.isDoc) {
document.body.appendChild(cmpRef.location.nativeElement);
}
return cmpRef;
}
}
DOMOverlayRenderer.decorators = [
{ type: Injectable }
];
/** @nocollapse */
DOMOverlayRenderer.ctorParameters = () => [
{ type: ApplicationRef },
{ type: Injector }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLW1vZGFsLXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1vZGlhbG9nLTExL3NyYy9saWIvcHJvdmlkZXJzL2RvbS1tb2RhbC1yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUdkLFFBQVEsRUFDUixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUFvQixNQUFzQixFQUFVLFFBQWtCO1FBQWxELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUY5RCxVQUFLLEdBQVksQ0FBQyxDQUFDLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBR3pFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBc0IsRUFBRSxLQUF1QixFQUFFLFFBQW1CO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMxQjtRQUVELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQztZQUM3QixTQUFTLEVBQUUsWUFBWTtZQUN2QixLQUFLO1lBQ0wsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQztpQkFDdkM7Z0JBQ0QsTUFBTSxFQUFFLFFBQVE7YUFDakIsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFeEMsdUZBQXVGO1lBQ3ZGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RTthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7O1lBdENGLFVBQVU7Ozs7WUFaVCxjQUFjO1lBR2QsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5qZWN0YWJsZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZnJhbWV3b3JrL2NyZWF0ZUNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4uL21vZGVscy9kaWFsb2ctcmVmJztcclxuaW1wb3J0IHsgT3ZlcmxheVJlbmRlcmVyIH0gZnJvbSAnLi4vbW9kZWxzL3Rva2Vucyc7XHJcbmltcG9ydCB7IE1vZGFsT3ZlcmxheSB9IGZyb20gJy4uL292ZXJsYXkvaW5kZXgnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRE9NT3ZlcmxheVJlbmRlcmVyIGltcGxlbWVudHMgT3ZlcmxheVJlbmRlcmVyIHtcclxuXHJcbiAgcHJpdmF0ZSBpc0RvYzogYm9vbGVhbiA9ICEodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhZG9jdW1lbnQpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoZGlhbG9nOiBEaWFsb2dSZWY8YW55PiwgdmNSZWY6IFZpZXdDb250YWluZXJSZWYsIGluamVjdG9yPzogSW5qZWN0b3IpOiBDb21wb25lbnRSZWY8TW9kYWxPdmVybGF5PiB7XHJcbiAgICBpZiAoIWluamVjdG9yKSB7XHJcbiAgICAgIGluamVjdG9yID0gdGhpcy5pbmplY3RvcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjbXBSZWYgPSBjcmVhdGVDb21wb25lbnQoe1xyXG4gICAgICBjb21wb25lbnQ6IE1vZGFsT3ZlcmxheSxcclxuICAgICAgdmNSZWYsXHJcbiAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAge3Byb3ZpZGU6IERpYWxvZ1JlZiwgdXNlVmFsdWU6IGRpYWxvZ31cclxuICAgICAgICBdLFxyXG4gICAgICAgIHBhcmVudDogaW5qZWN0b3JcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdmNSZWYpIHtcclxuICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjbXBSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgICAgLy8gVE9ETzogZG9lc24ndCBsb29rIGxpa2UgdGhpcyBpcyBuZWVkZWQsIGV4cGxvcmUuIGxlYXZpbmcgbm93IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuXHJcbiAgICAgIGRpYWxvZy5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY21wUmVmLmhvc3RWaWV3KSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZjUmVmICYmIGRpYWxvZy5pbkVsZW1lbnQpIHtcclxuICAgICAgdmNSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGNtcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RvYykge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNtcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY21wUmVmO1xyXG4gIH1cclxufVxyXG5cclxuIl19