UNPKG

@js-sugar/angular

Version:

JS-Sugar core package (Angular)

64 lines 7.32 kB
import { Directive, Input, Optional } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./user/user-store"; export class ShowDirective { constructor(templateRef, viewContainer, userStore) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.userStore = userStore; this._viewCreated = false; this._subscription = userStore?.change.subscribe(x => this._decide()); } set show(value) { this._condition = value; this._decide(); } _decide() { let show; const user = this.userStore?.user; const { user: userCondition, permission } = this._condition; if (userCondition === 'any') { show = true; } else if (userCondition === 'set') { if (user == undefined) { show = false; } else if (permission == undefined) { show = true; } else { show = user.hasPermission(permission); } } else { show = user == undefined; } if (show && !this._viewCreated) { this.viewContainer.createEmbeddedView(this.templateRef); this._viewCreated = true; } else if (!show && this._viewCreated) { this.viewContainer.clear(); this._viewCreated = false; } } ngOnDestroy() { this._subscription?.unsubscribe(); } } ShowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ShowDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.UserStore, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); ShowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: ShowDirective, selector: "[jssShow]", inputs: { show: ["jssShow", "show"] }, exportAs: ["jssShow"], ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ShowDirective, decorators: [{ type: Directive, args: [{ selector: '[jssShow]', exportAs: 'jssShow', }] }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.UserStore, decorators: [{ type: Optional }] }]; }, propDecorators: { show: [{ type: Input, args: ['jssShow'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvc2VjdXJpdHkvc2hvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUMsS0FBSyxFQUFhLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBVTdHLE1BQU0sT0FBTyxhQUFhO0lBS3hCLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0IsRUFDbkIsU0FBMkI7UUFGdkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVB6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQVMzQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQXNCLElBQUksQ0FBQyxLQUFvQjtRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLElBQWEsQ0FBQztRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztRQUNsQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRTVELElBQUksYUFBYSxLQUFLLEtBQUssRUFBRTtZQUMzQixJQUFJLEdBQUcsSUFBSSxDQUFBO1NBQ1o7YUFBTSxJQUFJLGFBQWEsS0FBSyxLQUFLLEVBQUU7WUFDbEMsSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFO2dCQUNyQixJQUFJLEdBQUcsS0FBSyxDQUFDO2FBQ2Q7aUJBQU0sSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFO2dCQUNsQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkM7U0FDRjthQUFNO1lBQ0wsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDMUI7YUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzswR0FoRFUsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBSnpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxTQUFTO2lCQUNwQjs7MEJBU0ksUUFBUTs0Q0FLVyxJQUFJO3NCQUF6QixLQUFLO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL3VzZXIvdXNlcic7XHJcbmltcG9ydCB7IFVzZXJTdG9yZSB9IGZyb20gJy4vdXNlci91c2VyLXN0b3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2pzc1Nob3ddJyxcclxuICBleHBvcnRBczogJ2pzc1Nob3cnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfdmlld0NyZWF0ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jb25kaXRpb24hOiBTaG93Q29uZGl0aW9uO1xyXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB1c2VyU3RvcmU/OiBVc2VyU3RvcmU8VXNlcj4sXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB1c2VyU3RvcmU/LmNoYW5nZS5zdWJzY3JpYmUoeCA9PiB0aGlzLl9kZWNpZGUoKSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2pzc1Nob3cnKSBzZXQgc2hvdyh2YWx1ZTogU2hvd0NvbmRpdGlvbikge1xyXG4gICAgdGhpcy5fY29uZGl0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLl9kZWNpZGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlY2lkZSgpIHtcclxuICAgIGxldCBzaG93OiBib29sZWFuO1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMudXNlclN0b3JlPy51c2VyO1xyXG4gICAgY29uc3QgeyB1c2VyOiB1c2VyQ29uZGl0aW9uLCBwZXJtaXNzaW9uIH0gPSB0aGlzLl9jb25kaXRpb247XHJcblxyXG4gICAgaWYgKHVzZXJDb25kaXRpb24gPT09ICdhbnknKSB7XHJcbiAgICAgIHNob3cgPSB0cnVlXHJcbiAgICB9IGVsc2UgaWYgKHVzZXJDb25kaXRpb24gPT09ICdzZXQnKSB7XHJcbiAgICAgIGlmICh1c2VyID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHNob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIGlmIChwZXJtaXNzaW9uID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNob3cgPSB1c2VyLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNob3cgPSB1c2VyID09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvdyAmJiAhdGhpcy5fdmlld0NyZWF0ZWQpIHtcclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgdGhpcy5fdmlld0NyZWF0ZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICghc2hvdyAmJiB0aGlzLl92aWV3Q3JlYXRlZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgdGhpcy5fdmlld0NyZWF0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=