diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.html b/libs/ui/src/lib/accounts-table/accounts-table.component.html
index 68ae78474..63a7a89b6 100644
--- a/libs/ui/src/lib/accounts-table/accounts-table.component.html
+++ b/libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -1,9 +1,9 @@
-@if (showActions) {
+@if (showActions()) {
-@if (isLoading) {
+@if (isLoading()) {
();
@Output() transferBalance = new EventEmitter();
- @ViewChild(MatSort) sort: MatSort;
-
- public dataSource = new MatTableDataSource();
- public displayedColumns: string[] = [];
- public isLoading = true;
- public routeQueryParams: Subscription;
-
- private unsubscribeSubject = new Subject();
-
- public constructor(
- private notificationService: NotificationService,
- private router: Router
- ) {
- addIcons({
- arrowRedoOutline,
- createOutline,
- documentTextOutline,
- ellipsisHorizontal,
- eyeOffOutline,
- trashOutline,
- walletOutline
- });
- }
-
- public ngOnChanges() {
- this.displayedColumns = ['status', 'account', 'platform'];
-
- if (this.showActivitiesCount) {
- this.displayedColumns.push('activitiesCount');
+ public readonly accounts = input.required();
+ public readonly showActions = input();
+ public readonly showActivitiesCount = input(true);
+ public readonly showAllocationInPercentage = input();
+ public readonly showBalance = input(true);
+ public readonly showValue = input(true);
+ public readonly showValueInBaseCurrency = input(false);
+ public readonly sort = viewChild.required(MatSort);
+
+ protected readonly dataSource = computed(() => {
+ const dataSource = new MatTableDataSource(this.accounts());
+ dataSource.sortingDataAccessor = getLowercase;
+ dataSource.sort = this.sort();
+ return dataSource;
+ });
+
+ protected readonly displayedColumns = computed(() => {
+ const columns = ['status', 'account', 'platform'];
+
+ if (this.showActivitiesCount()) {
+ columns.push('activitiesCount');
}
- if (this.showBalance) {
- this.displayedColumns.push('balance');
+ if (this.showBalance()) {
+ columns.push('balance');
}
- if (this.showValue) {
- this.displayedColumns.push('value');
+ if (this.showValue()) {
+ columns.push('value');
}
- this.displayedColumns.push('currency');
+ columns.push('currency');
- if (this.showValueInBaseCurrency) {
- this.displayedColumns.push('valueInBaseCurrency');
+ if (this.showValueInBaseCurrency()) {
+ columns.push('valueInBaseCurrency');
}
- if (this.showAllocationInPercentage) {
- this.displayedColumns.push('allocation');
+ if (this.showAllocationInPercentage()) {
+ columns.push('allocation');
}
- this.displayedColumns.push('comment');
+ columns.push('comment');
- if (this.showActions) {
- this.displayedColumns.push('actions');
+ if (this.showActions()) {
+ columns.push('actions');
}
- this.isLoading = true;
+ return columns;
+ });
- this.dataSource = new MatTableDataSource(this.accounts);
- this.dataSource.sortingDataAccessor = getLowercase;
+ protected readonly isLoading = computed(() => !this.accounts());
- this.dataSource.sort = this.sort;
+ private readonly notificationService = inject(NotificationService);
+ private readonly router = inject(Router);
+ private readonly unsubscribeSubject = new Subject();
- if (this.accounts) {
- this.isLoading = false;
- }
+ public constructor() {
+ addIcons({
+ arrowRedoOutline,
+ createOutline,
+ documentTextOutline,
+ ellipsisHorizontal,
+ eyeOffOutline,
+ trashOutline,
+ walletOutline
+ });
}
public onDeleteAccount(aId: string) {