UNPKG

@wizdm/teleport

Version:
36 lines 3.93 kB
import { Directive, Input, TemplateRef } from '@angular/core'; import { TeleportService } from './teleport.service'; export class TeleportDirective { constructor(teleport, template) { this.teleport = teleport; this.template = template; } ngOnChanges(changes) { const target = changes.target; if (!target) { return; } // Clears the previous target, if any target.previousValue && this.teleport.clear(target.previousValue, this.template); // Teleports the template to the new target portal target.currentValue && this.teleport.activate(target.currentValue, this.template, this.data); } ngOnDestroy() { // Clears the portal on destroy this.target && this.teleport.clear(this.target, this.template); } } TeleportDirective.decorators = [ { type: Directive, args: [{ selector: 'ng-template[wmTeleport]' },] } ]; TeleportDirective.ctorParameters = () => [ { type: TeleportService }, { type: TemplateRef } ]; TeleportDirective.propDecorators = { target: [{ type: Input, args: ['wmTeleport',] }], data: [{ type: Input, args: ['wmTeleportData',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZXBvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVsZXBvcnQvc3JjL2xpYi90ZWxlcG9ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBdUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLckQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUFvQixRQUF5QixFQUFVLFFBQTBCO1FBQTdELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBRyxDQUFDO0lBTXJGLFdBQVcsQ0FBQyxPQUFzQjtRQUVoQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUcsQ0FBQyxNQUFNLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFdkIscUNBQXFDO1FBQ3JDLE1BQU0sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakYsa0RBQWtEO1FBQ2xELE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsV0FBVztRQUNULCtCQUErQjtRQUMvQixJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OztZQTFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjthQUNwQzs7O1lBSlEsZUFBZTtZQUR3QyxXQUFXOzs7cUJBVXhFLEtBQUssU0FBQyxZQUFZO21CQUVsQixLQUFLLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZWxlcG9ydFNlcnZpY2UgfSBmcm9tICcuL3RlbGVwb3J0LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVt3bVRlbGVwb3J0XSdcbn0pXG5leHBvcnQgY2xhc3MgVGVsZXBvcnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZWxlcG9ydDogVGVsZXBvcnRTZXJ2aWNlLCBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxuXG4gIEBJbnB1dCgnd21UZWxlcG9ydCcpIHRhcmdldDogc3RyaW5nO1xuXG4gIEBJbnB1dCgnd21UZWxlcG9ydERhdGEnKSBkYXRhOiBhbnlcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBjaGFuZ2VzLnRhcmdldDtcbiAgICBpZighdGFyZ2V0KSB7IHJldHVybjsgfVxuXG4gICAgLy8gQ2xlYXJzIHRoZSBwcmV2aW91cyB0YXJnZXQsIGlmIGFueVxuICAgIHRhcmdldC5wcmV2aW91c1ZhbHVlICYmIHRoaXMudGVsZXBvcnQuY2xlYXIodGFyZ2V0LnByZXZpb3VzVmFsdWUsIHRoaXMudGVtcGxhdGUpO1xuXG4gICAgLy8gVGVsZXBvcnRzIHRoZSB0ZW1wbGF0ZSB0byB0aGUgbmV3IHRhcmdldCBwb3J0YWxcbiAgICB0YXJnZXQuY3VycmVudFZhbHVlICYmIHRoaXMudGVsZXBvcnQuYWN0aXZhdGUodGFyZ2V0LmN1cnJlbnRWYWx1ZSwgdGhpcy50ZW1wbGF0ZSwgdGhpcy5kYXRhKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFycyB0aGUgcG9ydGFsIG9uIGRlc3Ryb3lcbiAgICB0aGlzLnRhcmdldCAmJiB0aGlzLnRlbGVwb3J0LmNsZWFyKHRoaXMudGFyZ2V0LCB0aGlzLnRlbXBsYXRlKTtcbiAgfVxufSJdfQ==