Base menu (pry-base-menu)
Le composant Base menu
permet d’afficher une barre de menu
verticale. C’est une classe template, c’est-à-dire qu’il faut créer son
propre menu qui héritera de ce composant. Il sera ainsi possible de
surcharger les méthodes init
et select
avec le comportement
souhaité.
-
La méthode
init
permet de charger les données du menu. -
La méthode
select
permet de faire une action au clic sur un lien du menu.
export class AdminMenuComponent extends BaseMenuComponent {
constructor(
store: Store<any>,
private router: Router,
private route: ActivatedRoute
) {
super(store);
this.baseMenuTranslation = '@pry.admin.menus.';
this.subscriptions.add(this.route.data.subscribe((data) => this.limit$?.next(data['limitMenu'])));
}
override init(undefined,undefined,undefined,this.subscriptions,this.widgetSize$,this.displayHeader$) {
this.menus$ = this.store.select(AdminSelectors.menus);
this.highlightedMenu$ = this.store.select(AdminSelectors.highlightedMenu);
this.limit$ = new BehaviorSubject<string | undefined>(undefined);
this.subMenu$ = combineLatest([this.store.select(AdminSelectors.subMenus), this.limit$]).pipe(
map(([menus, limit]) => (limit ? menus.filter((menu) => menu.name === limit) : menus))
);
}
override select(menu: string): void {
const path = this.router.createUrlTree([menu], { relativeTo: this.route });
this.store.dispatch(AdminActions.routeTo({ path: path.toString(), params: undefined }));
this.store.dispatch(AdminActions.highlightMenu({ menu }));
}
}