UNPKG

@bixi/ac

Version:
180 lines 10.7 kB
/** * @fileoverview added by tsickle * Generated from: src/ac.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectorRef, Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core'; import { combineLatest, Subscription } from 'rxjs'; import { BixiACService } from './ac.service'; export class BixiACDirective { /** * @param {?} viewContainer * @param {?} templateRef * @param {?} acService * @param {?} changeDetector */ constructor(viewContainer, templateRef, acService, changeDetector) { this.viewContainer = viewContainer; this.templateRef = templateRef; this.acService = acService; this.changeDetector = changeDetector; this.subscription = Subscription.EMPTY; this._isRole = false; this.subscription = combineLatest([this.acService.permissions$, this.acService.roles$]) .subscribe((/** * @return {?} */ () => { this.checkView(); })); } /** * @param {?} isRole * @return {?} */ set isRole(isRole) { this._isRole = isRole; this.checkView(); } /** * @param {?} value * @return {?} */ set ac(value) { this._ac = value; this.checkView(); } /** * @param {?} value * @return {?} */ set acAny(value) { this._acAny = value; this.checkView(); } /** * @param {?} value * @return {?} */ set ace(value) { this._ace = value; this.checkView(); } /** * @param {?} value * @return {?} */ set aceAny(value) { this._aceAny = value; this.checkView(); } /** * @private * @return {?} */ checkView() { this.viewContainer.clear(); if (this.hasPermissions()) { if (this.templateRef) { this.viewContainer.createEmbeddedView(this.templateRef); this.changeDetector.markForCheck(); } } } /** * @private * @return {?} */ hasPermissions() { /** @type {?} */ const isRole = this._isRole; if (this._ac) { return this.acService.ac(this._ac, { isRole }); } if (this._acAny) { return this.acService.acAny(this._acAny, { isRole }); } if (this._ace) { return this.acService.ace(this._ace, { isRole }); } if (this._aceAny) { return this.acService.aceAny(this._aceAny, { isRole }); } return false; } /** * @return {?} */ ngOnDestroy() { this.subscription.unsubscribe(); } } BixiACDirective.decorators = [ { type: Directive, args: [{ selector: '[ac],[acAny],[ace],[aceAny]' },] } ]; /** @nocollapse */ BixiACDirective.ctorParameters = () => [ { type: ViewContainerRef }, { type: TemplateRef }, { type: BixiACService }, { type: ChangeDetectorRef } ]; BixiACDirective.propDecorators = { isRole: [{ type: Input }], ac: [{ type: Input }], acAny: [{ type: Input }], ace: [{ type: Input }], aceAny: [{ type: Input }] }; if (false) { /** @type {?} */ BixiACDirective.prototype.subscription; /** * @type {?} * @private */ BixiACDirective.prototype._isRole; /** * @type {?} * @private */ BixiACDirective.prototype._ac; /** * @type {?} * @private */ BixiACDirective.prototype._acAny; /** * @type {?} * @private */ BixiACDirective.prototype._ace; /** * @type {?} * @private */ BixiACDirective.prototype._aceAny; /** * @type {?} * @private */ BixiACDirective.prototype.viewContainer; /** * @type {?} * @private */ BixiACDirective.prototype.templateRef; /** * @type {?} * @private */ BixiACDirective.prototype.acService; /** * @type {?} * @private */ BixiACDirective.prototype.changeDetector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9zdGV2ZW56aG9uZy9Db2RlL3dvcmtDb2RlL2JpeGlfYW5ndWxhci9wYWNrYWdlcy9hYy8iLCJzb3VyY2VzIjpbInNyYy9hYy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU83QyxNQUFNLE9BQU8sZUFBZTs7Ozs7OztJQUcxQixZQUNVLGFBQStCLEVBRS9CLFdBQTZCLEVBQzdCLFNBQXdCLEVBQ3hCLGNBQWlDO1FBSmpDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUUvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFQM0MsaUJBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBNkMxQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBcEN0QixJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDcEYsU0FBUzs7O1FBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7SUFFRCxJQUNJLE1BQU0sQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELElBQ0ksRUFBRSxDQUFDLEtBQW9CO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELElBQ0ksS0FBSyxDQUFDLEtBQW9CO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELElBQ0ksR0FBRyxDQUFDLEtBQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELElBQ0ksTUFBTSxDQUFDLEtBQW9CO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQVFPLFNBQVM7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDcEM7U0FDRjtJQUNILENBQUM7Ozs7O0lBRU8sY0FBYzs7Y0FDZCxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU87UUFDM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzs7WUFwRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7YUFDeEM7Ozs7WUFScUUsZ0JBQWdCO1lBQTdCLFdBQVc7WUFFM0QsYUFBYTtZQUZiLGlCQUFpQjs7O3FCQXlCdkIsS0FBSztpQkFNTCxLQUFLO29CQU1MLEtBQUs7a0JBTUwsS0FBSztxQkFNTCxLQUFLOzs7O0lBdkNOLHVDQUFrQzs7Ozs7SUE2Q2xDLGtDQUF3Qjs7Ozs7SUFDeEIsOEJBQTJCOzs7OztJQUMzQixpQ0FBOEI7Ozs7O0lBQzlCLCtCQUE0Qjs7Ozs7SUFDNUIsa0NBQStCOzs7OztJQTlDN0Isd0NBQXVDOzs7OztJQUV2QyxzQ0FBcUM7Ozs7O0lBQ3JDLG9DQUFnQzs7Ozs7SUFDaEMseUNBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQml4aUFDU2VydmljZSB9IGZyb20gJy4vYWMuc2VydmljZSc7XG5cbnR5cGUgU3RyT3JTdHJBcnJheSA9IHN0cmluZyB8IHN0cmluZ1tdO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNdLFthY0FueV0sW2FjZV0sW2FjZUFueV0nXG59KVxuZXhwb3J0IGNsYXNzIEJpeGlBQ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSBhY1NlcnZpY2U6IEJpeGlBQ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjU2VydmljZS5wZXJtaXNzaW9ucyQsIHRoaXMuYWNTZXJ2aWNlLnJvbGVzJF0pXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja1ZpZXcoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGlzUm9sZShpc1JvbGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1JvbGUgPSBpc1JvbGU7XG4gICAgdGhpcy5jaGVja1ZpZXcoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBhYyh2YWx1ZTogU3RyT3JTdHJBcnJheSkge1xuICAgIHRoaXMuX2FjID0gdmFsdWU7XG4gICAgdGhpcy5jaGVja1ZpZXcoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBhY0FueSh2YWx1ZTogU3RyT3JTdHJBcnJheSkge1xuICAgIHRoaXMuX2FjQW55ID0gdmFsdWU7XG4gICAgdGhpcy5jaGVja1ZpZXcoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBhY2UodmFsdWU6IFN0ck9yU3RyQXJyYXkpIHtcbiAgICB0aGlzLl9hY2UgPSB2YWx1ZTtcbiAgICB0aGlzLmNoZWNrVmlldygpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGFjZUFueSh2YWx1ZTogU3RyT3JTdHJBcnJheSkge1xuICAgIHRoaXMuX2FjZUFueSA9IHZhbHVlO1xuICAgIHRoaXMuY2hlY2tWaWV3KCk7XG4gIH1cblxuICBwcml2YXRlIF9pc1JvbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYWM6IFN0ck9yU3RyQXJyYXk7XG4gIHByaXZhdGUgX2FjQW55OiBTdHJPclN0ckFycmF5O1xuICBwcml2YXRlIF9hY2U6IFN0ck9yU3RyQXJyYXk7XG4gIHByaXZhdGUgX2FjZUFueTogU3RyT3JTdHJBcnJheTtcblxuICBwcml2YXRlIGNoZWNrVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICBpZiAodGhpcy5oYXNQZXJtaXNzaW9ucygpKSB7XG4gICAgICBpZiAodGhpcy50ZW1wbGF0ZVJlZikge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzUGVybWlzc2lvbnMoKSB7XG4gICAgY29uc3QgaXNSb2xlID0gdGhpcy5faXNSb2xlO1xuICAgIGlmICh0aGlzLl9hYykge1xuICAgICAgcmV0dXJuIHRoaXMuYWNTZXJ2aWNlLmFjKHRoaXMuX2FjLCB7IGlzUm9sZSB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2FjQW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5hY1NlcnZpY2UuYWNBbnkodGhpcy5fYWNBbnksIHsgaXNSb2xlIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5fYWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY1NlcnZpY2UuYWNlKHRoaXMuX2FjZSwgeyBpc1JvbGUgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9hY2VBbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjU2VydmljZS5hY2VBbnkodGhpcy5fYWNlQW55LCB7IGlzUm9sZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19