data-table.component.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import {
  2. ChangeDetectionStrategy,
  3. Component,
  4. ContentChild,
  5. ContentChildren,
  6. EventEmitter,
  7. Input,
  8. Output,
  9. QueryList,
  10. TemplateRef,
  11. } from '@angular/core';
  12. import { PaginationService } from 'ngx-pagination';
  13. import { DataTableColumnComponent } from './data-table-column.component';
  14. @Component({
  15. selector: 'vdr-data-table',
  16. templateUrl: 'data-table.component.html',
  17. styleUrls: ['data-table.component.scss'],
  18. changeDetection: ChangeDetectionStrategy.OnPush,
  19. providers: [PaginationService],
  20. })
  21. export class DataTableComponent<T> {
  22. @Input() items: T[];
  23. @Input() itemsPerPage: number;
  24. @Input() currentPage: number;
  25. @Input() totalItems: number;
  26. @Input() allSelected: boolean;
  27. @Input() isRowSelectedFn: (item: T) => boolean;
  28. @Output() allSelectChange = new EventEmitter<void>();
  29. @Output() rowSelectChange = new EventEmitter<T>();
  30. @Output() pageChange = new EventEmitter<number>();
  31. @Output() itemsPerPageChange = new EventEmitter<number>();
  32. @ContentChildren(DataTableColumnComponent) columns: QueryList<DataTableColumnComponent>;
  33. @ContentChild(TemplateRef) rowTemplate: TemplateRef<any>;
  34. }