import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, Input, Output, QueryList, TemplateRef, } from '@angular/core'; import { PaginationService } from 'ngx-pagination'; import { DataTableColumnComponent } from './data-table-column.component'; @Component({ selector: 'vdr-data-table', templateUrl: 'data-table.component.html', styleUrls: ['data-table.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, providers: [PaginationService], }) export class DataTableComponent { @Input() items: T[]; @Input() itemsPerPage: number; @Input() currentPage: number; @Input() totalItems: number; @Input() allSelected: boolean; @Input() isRowSelectedFn: (item: T) => boolean; @Output() allSelectChange = new EventEmitter(); @Output() rowSelectChange = new EventEmitter(); @Output() pageChange = new EventEmitter(); @Output() itemsPerPageChange = new EventEmitter(); @ContentChildren(DataTableColumnComponent) columns: QueryList; @ContentChild(TemplateRef) rowTemplate: TemplateRef; }