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 }));
  }
}