Browse Source

fix(ui): make dataSource a required input

pull/6295/head
KenTandrian 2 days ago
parent
commit
fc96fe6574
  1. 14
      libs/ui/src/lib/activities-table/activities-table.component.html
  2. 23
      libs/ui/src/lib/activities-table/activities-table.component.ts

14
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()"
>
@ -78,7 +78,7 @@
class="gf-table w-100"
mat-table
matSort
[dataSource]="dataSource"
[dataSource]="dataSource()"
[matSortActive]="sortColumn"
[matSortDirection]="sortDirection"
[matSortDisabled]="sortDisabled"
@ -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
) {

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

@ -26,7 +26,8 @@ import {
OnInit,
Output,
ViewChild,
inject
inject,
input
} from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
@ -98,7 +99,6 @@ export class GfActivitiesTableComponent
implements AfterViewInit, OnChanges, OnDestroy, OnInit
{
@Input() baseCurrency: string;
@Input() dataSource: MatTableDataSource<Activity>;
@Input() deviceType: string;
@Input() hasActivities: boolean;
@Input() hasPermissionToCreateActivity: boolean;
@ -143,9 +143,10 @@ export class GfActivitiesTableComponent
public routeQueryParams: Subscription;
public selectedRows = new SelectionModel<Activity>(true, []);
private readonly notificationService = inject(NotificationService);
public readonly dataSource = input.required<MatTableDataSource<Activity>>();
private unsubscribeSubject = new Subject<void>();
private readonly notificationService = inject(NotificationService);
private readonly unsubscribeSubject = new Subject<void>();
public constructor() {
addIcons({
@ -176,9 +177,7 @@ export class GfActivitiesTableComponent
}
public ngAfterViewInit() {
if (this.dataSource) {
this.dataSource.paginator = this.paginator;
}
this.dataSource().paginator = this.paginator;
this.sort.sortChange.subscribe((value: Sort) => {
this.sortChanged.emit(value);
@ -222,14 +221,14 @@ export class GfActivitiesTableComponent
});
}
if (this.dataSource) {
if (this.dataSource()) {
this.isLoading = false;
}
}
public areAllRowsSelected() {
const numSelectedRows = this.selectedRows.selected.length;
const numTotalRows = this.dataSource.data.length;
const numTotalRows = this.dataSource().data.length;
return numSelectedRows === numTotalRows;
}
@ -302,8 +301,8 @@ export class GfActivitiesTableComponent
public onExportDrafts() {
this.exportDrafts.emit(
this.dataSource.filteredData
.filter((activity) => {
this.dataSource()
.filteredData.filter((activity) => {
return activity.isDraft;
})
.map((activity) => {
@ -334,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