Browse Source

add visible$ property to nav items

pull/15596/head
Barış Can Yılmaz 4 years ago
parent
commit
366ad6da92
  1. 12
      npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.html
  2. 8
      npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts

12
npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.html

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

8
npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts

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

Loading…
Cancel
Save