import { NgFor, NgIf } from '@angular/common'; import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { RouterLink } from '@angular/router'; import { HelpCenterService } from 'app/modules/admin/apps/help-center/help-center.service'; import { GuideCategory } from 'app/modules/admin/apps/help-center/help-center.type'; import { Subject, takeUntil } from 'rxjs'; @Component({ selector : 'help-center-guides', templateUrl : './guides.component.html', encapsulation: ViewEncapsulation.None, standalone : true, imports : [MatButtonModule, RouterLink, MatIconModule, NgFor, NgIf], }) export class HelpCenterGuidesComponent implements OnInit, OnDestroy { guideCategories: GuideCategory[]; private _unsubscribeAll: Subject = new Subject(); /** * Constructor */ constructor(private _helpCenterService: HelpCenterService) { } // ----------------------------------------------------------------------------------------------------- // @ Lifecycle hooks // ----------------------------------------------------------------------------------------------------- /** * On init */ ngOnInit(): void { // Get the Guide categories this._helpCenterService.guides$ .pipe(takeUntil(this._unsubscribeAll)) .subscribe((guideCategories) => { this.guideCategories = guideCategories; }); } /** * On destroy */ ngOnDestroy(): void { // Unsubscribe from all subscriptions this._unsubscribeAll.next(null); this._unsubscribeAll.complete(); } // ----------------------------------------------------------------------------------------------------- // @ Public methods // ----------------------------------------------------------------------------------------------------- /** * Track by function for ngFor loops * * @param index * @param item */ trackByFn(index: number, item: any): any { return item.id || index; } }