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() @Input() id: string;
  @Input() @Input() items: T[];
  @Input() @Input() itemsPerPage: number;
  @Input() @Input() currentPage: number;
  @Input() @Input() totalItems: number;
  @Input() @Input() emptyStateLabel: string;
  @Input() @Input() filters: DataTableFilterCollection;
  @Input() @Input() activeIndex = -1;
  @Output() @Output() pageChange = new EventEmitter<number>();
  @Output() @Output() itemsPerPageChange = new EventEmitter<number>();
  @ContentChildren(DataTable2ColumnComponent) @ContentChildren(DataTable2ColumnComponent) columns: QueryList<DataTable2ColumnComponent<T>>;
  @ContentChildren(DataTableCustomFieldColumnComponent) @ContentChildren(DataTableCustomFieldColumnComponent)
    customFieldColumns: QueryList<DataTableCustomFieldColumnComponent<T>>;
  @ContentChild(DataTable2SearchComponent) @ContentChild(DataTable2SearchComponent) searchComponent: DataTable2SearchComponent;
  @ContentChild(BulkActionMenuComponent) @ContentChild(BulkActionMenuComponent) bulkActionMenuComponent: BulkActionMenuComponent;
  @ContentChild('vdrDt2CustomSearch') @ContentChild('vdrDt2CustomSearch') customSearchTemplate: TemplateRef<any>;
  @ContentChildren(TemplateRef) @ContentChildren(TemplateRef) templateRefs: QueryList<TemplateRef<any>>;
  rowTemplate: TemplateRef<any>;
  currentStart: number;
  currentEnd: number;
  disableSelect = false;
  showSearchFilterRow = false;
  protected protected uiLanguage$: Observable<LanguageCode>;
  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) => ;
  protected getDataTableConfig() => DataTableConfig;
}

Implements

  • AfterContentInit
  • OnChanges
  • OnDestroy

Members

id

property
type:
string

items

property
type:
T[]

itemsPerPage

property
type:
number

currentPage

property
type:
number

totalItems

property
type:
number

emptyStateLabel

property
type:
string

filters

property
type:
DataTableFilterCollection

activeIndex

property
type:

pageChange

property
type:

itemsPerPageChange

property
type:

columns

property
type:
QueryList<DataTable2ColumnComponent<T>>

customFieldColumns

property
type:
QueryList<DataTableCustomFieldColumnComponent<T>>

searchComponent

property
type:
DataTable2SearchComponent

bulkActionMenuComponent

property
type:
BulkActionMenuComponent

customSearchTemplate

property
type:
TemplateRef<any>

templateRefs

property
type:
QueryList<TemplateRef<any>>

rowTemplate

property
type:
TemplateRef<any>

currentStart

property
type:
number

currentEnd

property
type:
number

disableSelect

property
type:

showSearchFilterRow

property
type:

uiLanguage$

property
type:
Observable<LanguageCode>

constructor

method
type:
(changeDetectorRef: ChangeDetectorRef, localStorageService: LocalStorageService, dataService: DataService) => DataTable2Component

selectionManager

property
type:

allColumns

property
type:

visibleSortedColumns

property
type:

sortedColumns

property
type:

ngOnChanges

method
type:
(changes: SimpleChanges) =>

ngOnDestroy

method
type:
() =>

ngAfterContentInit

method
type:
() => void

onColumnReorder

method
type:
(event: { column: DataTable2ColumnComponent<any>; newIndex: number }) =>

onColumnsReset

method
type:
() =>

toggleSearchFilterRow

method
type:
() =>

trackByFn

method
type:
(index: number, item: any) =>

onToggleAllClick

method
type:
() =>

onRowClick

method
type:
(item: T, event: MouseEvent) =>

getDataTableConfig

method
type:
() => DataTableConfig