import { Component, inject, OnInit, ViewChild } from '@angular/core'; import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { ActivatedRoute, RouterModule } from '@angular/router'; import { LocalTimePipe } from '../../shared/local-time.pipe'; import { Client } from '../client'; import { ClientListDataSource } from './client-list-datasource'; @Component({ selector: 'app-client-list', templateUrl: './client-list.component.html', styleUrls: ['./client-list.component.css'], imports: [MatTableModule, MatSortModule, RouterModule, MatPaginatorModule, LocalTimePipe], }) export class ClientListComponent implements OnInit { private route = inject(ActivatedRoute); @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator; @ViewChild(MatSort, { static: true }) sort!: MatSort; list: Client[] = []; dataSource: ClientListDataSource = new ClientListDataSource(this.list, this.paginator, this.sort); /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */ displayedColumns = ['code', 'name', 'enabled', 'otp', 'created', 'last']; ngOnInit() { this.route.data.subscribe((value) => { const data = value as { list: Client[] }; this.list = data.list; }); this.dataSource = new ClientListDataSource(this.list, this.paginator, this.sort); } }