Browse Source

fix(ui): handle undefined dataSource

pull/6295/head
KenTandrian 2 days ago
parent
commit
06a8b96044
  1. 12
      libs/ui/src/lib/activities-table/activities-table.component.html
  2. 15
      libs/ui/src/lib/activities-table/activities-table.component.ts

12
libs/ui/src/lib/activities-table/activities-table.component.html

@ -21,7 +21,7 @@
<mat-menu #activitiesMenu="matMenu" class="no-max-width" xPosition="before">
<button
mat-menu-item
[disabled]="dataSource().data.length === 0"
[disabled]="dataSource()?.data.length === 0"
(click)="onImportDividends()"
>
<span class="align-items-center d-flex">
@ -33,7 +33,7 @@
<button
class="align-items-center d-flex"
mat-menu-item
[disabled]="dataSource().data.length === 0"
[disabled]="dataSource()?.data.length === 0"
(click)="onExport()"
>
<span class="align-items-center d-flex">
@ -60,7 +60,7 @@
class="align-items-center d-flex"
mat-menu-item
[disabled]="
dataSource().data.length === 0 || !hasPermissionToDeleteActivity
dataSource()?.data.length === 0 || !hasPermissionToDeleteActivity
"
(click)="onDeleteActivities()"
>
@ -388,7 +388,7 @@
@if (hasPermissionToCreateActivity) {
<button
mat-menu-item
[disabled]="dataSource().data.length === 0"
[disabled]="dataSource()?.data.length === 0"
(click)="onImportDividends()"
>
<span class="align-items-center d-flex">
@ -403,7 +403,7 @@
<button
class="align-items-center d-flex"
mat-menu-item
[disabled]="dataSource().data.length === 0"
[disabled]="dataSource()?.data.length === 0"
(click)="onExport()"
>
<span class="align-items-center d-flex">
@ -524,7 +524,7 @@
@if (
!hasActivities &&
dataSource().data.length === 0 &&
dataSource()?.data.length === 0 &&
hasPermissionToCreateActivity &&
!isLoading()
) {

15
libs/ui/src/lib/activities-table/activities-table.component.ts

@ -134,7 +134,9 @@ export class GfActivitiesTableComponent
public isUUID = isUUID;
public selectedRows = new SelectionModel<Activity>(true, []);
public readonly dataSource = input.required<MatTableDataSource<Activity>>();
public readonly dataSource = input.required<
MatTableDataSource<Activity> | undefined
>();
public readonly showAccountColumn = input(true);
public readonly showCheckbox = input(false);
public readonly showNameColumn = input(true);
@ -214,7 +216,10 @@ export class GfActivitiesTableComponent
}
public ngAfterViewInit() {
this.dataSource().paginator = this.paginator;
const dataSource = this.dataSource();
if (dataSource) {
dataSource.paginator = this.paginator;
}
this.sort.sortChange.subscribe((value: Sort) => {
this.sortChanged.emit(value);
@ -223,7 +228,7 @@ export class GfActivitiesTableComponent
public areAllRowsSelected() {
const numSelectedRows = this.selectedRows.selected.length;
const numTotalRows = this.dataSource().data.length;
const numTotalRows = this.dataSource()?.data.length;
return numSelectedRows === numTotalRows;
}
@ -297,7 +302,7 @@ export class GfActivitiesTableComponent
public onExportDrafts() {
this.exportDrafts.emit(
this.dataSource()
.filteredData.filter((activity) => {
?.filteredData.filter((activity) => {
return activity.isDraft;
})
.map((activity) => {
@ -328,7 +333,7 @@ export class GfActivitiesTableComponent
if (this.areAllRowsSelected()) {
this.selectedRows.clear();
} else {
this.dataSource().data.forEach((row) => {
this.dataSource()?.data.forEach((row) => {
this.selectedRows.select(row);
});
}

Loading…
Cancel
Save