UNPKG

@js-sugar/angular

Version:

JS-Sugar core package (Angular)

50 lines 5.83 kB
import { Directive, Input, Optional } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./user/user-store"; export class ShowPermissionDirective { constructor(templateRef, viewContainer, userStore) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.userStore = userStore; this._viewCreated = false; } set showPermission(value) { let granted; const user = this.userStore?.user; if (value == null) { granted = true; } else if (user == undefined) { granted = false; } else { granted = user.hasPermission(value); } this._show(granted); } _show(show) { if (show && !this._viewCreated) { this.viewContainer.createEmbeddedView(this.templateRef); this._viewCreated = true; } else if (!show && this._viewCreated) { this.viewContainer.clear(); this._viewCreated = false; } } } ShowPermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ShowPermissionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.UserStore, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); ShowPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: ShowPermissionDirective, selector: "[jssShowPermission]", inputs: { showPermission: ["jssShowPermission", "showPermission"] }, exportAs: ["jssShowPermission"], ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: ShowPermissionDirective, decorators: [{ type: Directive, args: [{ selector: '[jssShowPermission]', exportAs: 'jssShowPermission', }] }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.UserStore, decorators: [{ type: Optional }] }]; }, propDecorators: { showPermission: [{ type: Input, args: ['jssShowPermission'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1wZXJtaXNzaW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9zZWN1cml0eS9zaG93LXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVNsRyxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0IsRUFDbkIsU0FBMkI7UUFGdkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUx6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQU83QixDQUFDO0lBRUQsSUFBZ0MsY0FBYyxDQUFDLEtBQXlCO1FBQ3RFLElBQUksT0FBZ0IsQ0FBQztRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztRQUVsQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjthQUFNLElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUM1QixPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ2pCO2FBQU07WUFDTCxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFhO1FBQ3pCLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUMxQjthQUFNLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7b0hBakNVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7OzBCQU9JLFFBQVE7NENBSXFCLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgSW5wdXQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGVybWlzc2lvbkNyaXRlcmlhIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL3VzZXIvdXNlcic7XHJcbmltcG9ydCB7IFVzZXJTdG9yZSB9IGZyb20gJy4vdXNlci91c2VyLXN0b3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2pzc1Nob3dQZXJtaXNzaW9uXScsXHJcbiAgZXhwb3J0QXM6ICdqc3NTaG93UGVybWlzc2lvbicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaG93UGVybWlzc2lvbkRpcmVjdGl2ZSB7XHJcbiAgcHJpdmF0ZSBfdmlld0NyZWF0ZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB1c2VyU3RvcmU/OiBVc2VyU3RvcmU8VXNlcj4sXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2pzc1Nob3dQZXJtaXNzaW9uJykgc2V0IHNob3dQZXJtaXNzaW9uKHZhbHVlOiBQZXJtaXNzaW9uQ3JpdGVyaWEpIHtcclxuICAgIGxldCBncmFudGVkOiBib29sZWFuO1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMudXNlclN0b3JlPy51c2VyO1xyXG5cclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIGdyYW50ZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICh1c2VyID09IHVuZGVmaW5lZCkge1xyXG4gICAgICBncmFudGVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncmFudGVkID0gdXNlci5oYXNQZXJtaXNzaW9uKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zaG93KGdyYW50ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvdyhzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoc2hvdyAmJiAhdGhpcy5fdmlld0NyZWF0ZWQpIHtcclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgdGhpcy5fdmlld0NyZWF0ZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICghc2hvdyAmJiB0aGlzLl92aWV3Q3JlYXRlZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgdGhpcy5fdmlld0NyZWF0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19