UNPKG

ngx-nullish

Version:

🔨 Angular Structural Directive which replace *ngIf by Nullish Coalescing operator

51 lines • 5.33 kB
import { __decorate } from "tslib"; import { Directive, TemplateRef, ViewContainerRef, Input } from '@angular/core'; // Inspired by *ngIf: // https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_if.ts var NgxNullishDirective = /** @class */ (function () { function NgxNullishDirective(templateRef, viewContainer) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.hasView = false; this.context = { ngxNullish: undefined, $implicit: undefined, }; } NgxNullishDirective.ngTemplateContextGuard = function (dir, ctx) { return true; }; Object.defineProperty(NgxNullishDirective.prototype, "ngxNullish", { set: function (condition) { this.context.$implicit = this.context.ngxNullish = condition; this._updateView(); }, enumerable: true, configurable: true }); NgxNullishDirective.prototype._updateView = function () { if (this.context.$implicit != null && this.hasView) { this.viewContainer.createEmbeddedView(this.templateRef, this.context); this.hasView = false; } else if (this.context.$implicit == null && !this.hasView) { this.viewContainer.clear(); this.hasView = true; } }; NgxNullishDirective.ctorParameters = function () { return [ { type: TemplateRef }, { type: ViewContainerRef } ]; }; __decorate([ Input() ], NgxNullishDirective.prototype, "ngxNullish", null); NgxNullishDirective = __decorate([ Directive({ selector: '[ngxNullish]', }) ], NgxNullishDirective); return NgxNullishDirective; }()); export { NgxNullishDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW51bGxpc2guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW51bGxpc2gvIiwic291cmNlcyI6WyJsaWIvbmd4LW51bGxpc2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYscUJBQXFCO0FBQ3JCLHlGQUF5RjtBQUt6RjtJQStCRSw2QkFDVSxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBOUJqQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBK0I7WUFDNUMsVUFBVSxFQUFFLFNBQVM7WUFDckIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQztJQTJCQyxDQUFDO0lBekJHLDBDQUFzQixHQUE3QixVQUNFLEdBQTJCLEVBQzNCLEdBQStCO1FBRS9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVRLHNCQUFJLDJDQUFVO2FBQWQsVUFBZSxTQUFZO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUM3RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQzs7O09BQUE7SUFFTyx5Q0FBVyxHQUFuQjtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7Z0JBR3NCLFdBQVc7Z0JBQ1QsZ0JBQWdCOztJQWpCaEM7UUFBUixLQUFLLEVBQUU7eURBR1A7SUFuQlUsbUJBQW1CO1FBSC9CLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxjQUFjO1NBQ3pCLENBQUM7T0FDVyxtQkFBbUIsQ0FtQy9CO0lBQUQsMEJBQUM7Q0FBQSxBQW5DRCxJQW1DQztTQW5DWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBJbnNwaXJlZCBieSAqbmdJZjpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYXN0ZXIvcGFja2FnZXMvY29tbW9uL3NyYy9kaXJlY3RpdmVzL25nX2lmLnRzXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hOdWxsaXNoXScsXG59KVxuZXhwb3J0IGNsYXNzIE5neE51bGxpc2hEaXJlY3RpdmU8VCA9IHVua25vd24+IHtcbiAgc3RhdGljIG5nVGVtcGxhdGVHdWFyZF9uZ3hOdWxsaXNoOiAnYmluZGluZyc7XG5cbiAgcHJpdmF0ZSBoYXNWaWV3ID0gZmFsc2U7XG4gIHByaXZhdGUgY29udGV4dDogTnVsbGlzaERpcmVjdGl2ZUNvbnRleHQ8VD4gPSB7XG4gICAgbmd4TnVsbGlzaDogdW5kZWZpbmVkLFxuICAgICRpbXBsaWNpdDogdW5kZWZpbmVkLFxuICB9O1xuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KFxuICAgIGRpcjogTmd4TnVsbGlzaERpcmVjdGl2ZTxUPixcbiAgICBjdHg6IE51bGxpc2hEaXJlY3RpdmVDb250ZXh0PFQ+XG4gICk6IGN0eCBpcyBOdWxsaXNoRGlyZWN0aXZlQ29udGV4dDxOb25OdWxsYWJsZTxUPj4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IG5neE51bGxpc2goY29uZGl0aW9uOiBUKSB7XG4gICAgdGhpcy5jb250ZXh0LiRpbXBsaWNpdCA9IHRoaXMuY29udGV4dC5uZ3hOdWxsaXNoID0gY29uZGl0aW9uO1xuICAgIHRoaXMuX3VwZGF0ZVZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZpZXcoKSB7XG4gICAgaWYgKHRoaXMuY29udGV4dC4kaW1wbGljaXQgIT0gbnVsbCAmJiB0aGlzLmhhc1ZpZXcpIHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy5jb250ZXh0KTtcbiAgICAgIHRoaXMuaGFzVmlldyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZXh0LiRpbXBsaWNpdCA9PSBudWxsICYmICF0aGlzLmhhc1ZpZXcpIHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgdGhpcy5oYXNWaWV3ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG59XG5cbmV4cG9ydCB0eXBlIE51bGxpc2hEaXJlY3RpdmVDb250ZXh0PFQ+ID0geyBuZ3hOdWxsaXNoOiBUOyAkaW1wbGljaXQ6IFQgfTtcbiJdfQ==