UNPKG

ng-devui

Version:

DevUI components based on Angular

55 lines 6.5 kB
import { DOCUMENT } from '@angular/common'; import { ApplicationRef, Component, Inject, TemplateRef, ViewChild } from '@angular/core'; import { forEach } from 'lodash-es'; import * as i0 from "@angular/core"; export class PortalComponent { constructor(appRef, doc) { this.appRef = appRef; this.doc = doc; this.document = this.doc; } addContent() { this.portalContainer = this.document.createElement('div'); this.viewRef = this.templateRef.createEmbeddedView(this); forEach(this.viewRef.rootNodes, (node) => { this.portalContainer.appendChild(node); }); this.appRef.attachView(this.viewRef); this.document.body.appendChild(this.portalContainer); } open() { this.close(); this.addContent(); } close() { if (this.viewRef && this.portalContainer) { this.document.body.removeChild(this.portalContainer); this.viewRef.destroy(); this.viewRef = null; this.portalContainer = null; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PortalComponent, deps: [{ token: i0.ApplicationRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PortalComponent, selector: "d-portal", viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, static: true }], ngImport: i0, template: ` <ng-template #templateRef> <ng-content></ng-content> </ng-template>`, isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PortalComponent, decorators: [{ type: Component, args: [{ selector: 'd-portal', template: ` <ng-template #templateRef> <ng-content></ng-content> </ng-template>`, preserveWhitespaces: false, }] }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }], propDecorators: { templateRef: [{ type: ViewChild, args: ['templateRef', { static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL3BvcnRhbC9wb3J0YWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLFNBQVMsRUFFVCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVVwQyxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUFvQixNQUFzQixFQUE0QixHQUFRO1FBQTFELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQTRCLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDOytHQWhDVSxlQUFlLGdEQU0wQixRQUFRO21HQU5qRCxlQUFlLDBLQU5oQjs7O21DQUd1Qjs7NEZBR3RCLGVBQWU7a0JBUjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFFBQVEsRUFBRTs7O21DQUd1QjtvQkFDakMsbUJBQW1CLEVBQUUsS0FBSztpQkFDM0I7OzBCQU84QyxNQUFNOzJCQUFDLFFBQVE7eUNBSGhCLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSW5qZWN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtcG9ydGFsJyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlUmVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPmAsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBQb3J0YWxDb21wb25lbnQge1xuICB2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcbiAgcG9ydGFsQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgZG9jdW1lbnQ6IERvY3VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueSkge1xuICAgIHRoaXMuZG9jdW1lbnQgPSB0aGlzLmRvYztcbiAgfVxuXG4gIGFkZENvbnRlbnQoKSB7XG4gICAgdGhpcy5wb3J0YWxDb250YWluZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMudmlld1JlZiA9IHRoaXMudGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMpO1xuICAgIGZvckVhY2godGhpcy52aWV3UmVmLnJvb3ROb2RlcywgKG5vZGUpID0+IHtcbiAgICAgIHRoaXMucG9ydGFsQ29udGFpbmVyLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIH0pO1xuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy52aWV3UmVmKTtcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5wb3J0YWxDb250YWluZXIpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5hZGRDb250ZW50KCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy52aWV3UmVmICYmIHRoaXMucG9ydGFsQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5wb3J0YWxDb250YWluZXIpO1xuICAgICAgdGhpcy52aWV3UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMudmlld1JlZiA9IG51bGw7XG4gICAgICB0aGlzLnBvcnRhbENvbnRhaW5lciA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=