@bixi/ac
Version:
180 lines • 10.7 kB
JavaScript
/**
* @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