UNPKG

ngx-modialog-11

Version:
47 lines 5.74 kB
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