@js-sugar/angular
Version:
JS-Sugar core package (Angular)
50 lines • 5.83 kB
JavaScript
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