DataTable2Component
DataTable2Component
A table for displaying PaginatedList results. It is designed to be used inside components which extend the BaseListComponent or TypedBaseListComponent class.
Example
<vdr-data-table-2
id="product-review-list"
[items]="items$ | async"
[itemsPerPage]="itemsPerPage$ | async"
[totalItems]="totalItems$ | async"
[currentPage]="currentPage$ | async"
[filters]="filters"
(pageChange)="setPageNumber($event)"
(itemsPerPageChange)="setItemsPerPage($event)"
>
<vdr-bulk-action-menu
locationId="product-review-list"
[hostComponent]="this"
[selectionManager]="selectionManager"
/>
<vdr-dt2-search
[searchTermControl]="searchTermControl"
searchTermPlaceholder="Filter by title"
/>
<vdr-dt2-column [heading]="'common.id' | translate" [hiddenByDefault]="true">
<ng-template let-review="item">
{{ review.id }}
</ng-template>
</vdr-dt2-column>
<vdr-dt2-column
[heading]="'common.created-at' | translate"
[hiddenByDefault]="true"
[sort]="sorts.get('createdAt')"
>
<ng-template let-review="item">
{{ review.createdAt | localeDate : 'short' }}
</ng-template>
</vdr-dt2-column>
<vdr-dt2-column
[heading]="'common.updated-at' | translate"
[hiddenByDefault]="true"
[sort]="sorts.get('updatedAt')"
>
<ng-template let-review="item">
{{ review.updatedAt | localeDate : 'short' }}
</ng-template>
</vdr-dt2-column>
<vdr-dt2-column [heading]="'common.name' | translate" [optional]="false" [sort]="sorts.get('name')">
<ng-template let-review="item">
<a class="button-ghost" [routerLink]="['./', review.id]"
><span>{{ review.name }}</span>
<clr-icon shape="arrow right"></clr-icon>
</a>
</ng-template>
</vdr-dt2-column>
</vdr-data-table-2>
Signature
class DataTable2Component<T> implements AfterContentInit, OnChanges, OnDestroy {
@Input() id: DataTableLocationId;
@Input() items: T[];
@Input() itemsPerPage: number;
@Input() currentPage: number;
@Input() totalItems: number;
@Input() emptyStateLabel: string;
@Input() filters: DataTableFilterCollection;
@Input() activeIndex = -1;
@Output() pageChange = new EventEmitter<number>();
@Output() itemsPerPageChange = new EventEmitter<number>();
@ContentChildren(DataTable2ColumnComponent) columns: QueryList<DataTable2ColumnComponent<T>>;
@ContentChildren(DataTableCustomFieldColumnComponent)
customFieldColumns: QueryList<DataTableCustomFieldColumnComponent<T>>;
@ContentChild(DataTable2SearchComponent) searchComponent: DataTable2SearchComponent;
@ContentChild(BulkActionMenuComponent) bulkActionMenuComponent: BulkActionMenuComponent;
@ContentChild('vdrDt2CustomSearch') customSearchTemplate: TemplateRef<any>;
@ContentChildren(TemplateRef) templateRefs: QueryList<TemplateRef<any>>;
injector = inject(Injector);
route = inject(ActivatedRoute);
filterPresetService = inject(FilterPresetService);
dataTableCustomComponentService = inject(DataTableCustomComponentService);
protected customComponents = new Map<string, { config: DataTableComponentConfig; injector: Injector }>();
rowTemplate: TemplateRef<any>;
currentStart: number;
currentEnd: number;
disableSelect = false;
showSearchFilterRow = false;
protected uiLanguage$: Observable<LanguageCode>;
protected destroy$ = new Subject<void>();
constructor(changeDetectorRef: ChangeDetectorRef, localStorageService: LocalStorageService, dataService: DataService)
selectionManager: void
allColumns: void
visibleSortedColumns: void
sortedColumns: void
ngOnChanges(changes: SimpleChanges) => ;
ngOnDestroy() => ;
ngAfterContentInit() => void;
onColumnReorder(event: { column: DataTable2ColumnComponent<any>; newIndex: number }) => ;
onColumnsReset() => ;
toggleSearchFilterRow() => ;
trackByFn(index: number, item: any) => ;
onToggleAllClick() => ;
onRowClick(item: T, event: MouseEvent) => ;
getDataTableConfig() => DataTableConfig;
}
- Implements:
AfterContentInit,OnChanges,OnDestroy
id
property
DataTableLocationIditems
property
T[]itemsPerPage
property
numbercurrentPage
property
numbertotalItems
property
numberemptyStateLabel
property
stringfilters
property
DataTableFilterCollectionactiveIndex
property
pageChange
property
itemsPerPageChange
property
columns
property
QueryList<DataTable2ColumnComponent<T>>customFieldColumns
property
QueryList<DataTableCustomFieldColumnComponent<T>>searchComponent
property
DataTable2SearchComponentbulkActionMenuComponent
property
BulkActionMenuComponentcustomSearchTemplate
property
TemplateRef<any>templateRefs
property
QueryList<TemplateRef<any>>injector
property
route
property
filterPresetService
property
dataTableCustomComponentService
property
customComponents
property
rowTemplate
property
TemplateRef<any>currentStart
property
numbercurrentEnd
property
numberdisableSelect
property
showSearchFilterRow
property
uiLanguage$
property
Observable<LanguageCode>destroy$
property
constructor
method
(changeDetectorRef: ChangeDetectorRef, localStorageService: LocalStorageService, dataService: DataService) => DataTable2ComponentselectionManager
property
allColumns
property
visibleSortedColumns
property
sortedColumns
property
ngOnChanges
method
(changes: SimpleChanges) => ngOnDestroy
method
() => ngAfterContentInit
method
() => voidonColumnReorder
method
(event: { column: DataTable2ColumnComponent<any>; newIndex: number }) => onColumnsReset
method
() => toggleSearchFilterRow
method
() => trackByFn
method
(index: number, item: any) => onToggleAllClick
method
() => onRowClick
method
(item: T, event: MouseEvent) => getDataTableConfig
method
() => DataTableConfig