add visible$ property to nav items

pull/15596/head
Barış Can Yılmaz 3 years ago
parent 34c136e041
commit 366ad6da92

@ -1,17 +1,13 @@
<ul class="navbar-nav">
<ng-container *ngFor="let item of navItems.items$ | async; trackBy: trackByFn">
<ng-container *ngIf="item.visible && item.visible()">
<ng-container *ngIf="item.visible && item.visible() && (item.visible$ | async)">
<li class="nav-item d-flex align-items-center" *abpPermission="item.requiredPolicy">
<ng-container
*ngIf="item.component; else htmlTemplate"
[ngComponentOutlet]="item.component"
[ngComponentOutletInjector]="item | toInjector"
></ng-container>
<ng-container *ngIf="item.component; else htmlTemplate" [ngComponentOutlet]="item.component"
[ngComponentOutletInjector]="item | toInjector"></ng-container>
<ng-template #htmlTemplate>
<div [innerHTML]="item.html" (click)="item.action ? item.action() : null"></div>
</ng-template>
</li>
</ng-container>
</ng-container>
</ul>
</ul>

@ -1,4 +1,5 @@
import { Type } from '@angular/core';
import { Observable, of } from 'rxjs';
export class NavItem {
id?: string | number;
@ -8,8 +9,13 @@ export class NavItem {
order?: number;
requiredPolicy?: string;
visible?: () => boolean;
visible$?: Observable<boolean>;
constructor(props: Partial<NavItem>) {
props = { ...props, visible: props.visible || (() => true) };
props = {
...props,
visible: props.visible || (() => true),
visible$: props.visible$ || of(true),
};
Object.assign(this, props);
}
}

Loading…
Cancel
Save