From 36633299f3d18e72f67f59fcceec5e2ef6343fde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sinan=20=C3=96zt=C3=BCrk?= Date: Tue, 5 Mar 2024 11:18:22 +0300 Subject: [PATCH] Fix pagination issue in extensible table component --- .../extensible-table.component.html | 2 ++ .../extensible-table.component.ts | 20 ++++++++++++------- .../ngx-datatable-list.directive.ts | 9 --------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html index 0ba4b22d45..ff44690076 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html @@ -3,6 +3,8 @@ [rows]="data" [count]="recordsTotal" [list]="list" + [offset]="list?.page" + (page)="setPage($event)" (activate)="tableActivate.emit($event)" > @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) { diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts index b400b09628..ef9af1631d 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts @@ -1,7 +1,6 @@ import { ABP, - ConfigStateService, - CoreModule, + ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, @@ -13,9 +12,7 @@ import { import { AsyncPipe, formatDate, - NgComponentOutlet, - NgFor, - NgIf, + NgComponentOutlet, NgTemplateOutlet, } from '@angular/common'; import { @@ -175,14 +172,23 @@ export class ExtensibleTableComponent implements OnChanges { ); } + setPage({ offset }) { + this.list.page = offset; + } + ngOnChanges({ data, recordsTotal }: SimpleChanges) { - if (data?.currentValue.length === 0 && recordsTotal?.currentValue) { + if (data?.currentValue.length < 1 && recordsTotal?.currentValue > 0) { let maxPage = Number(Number(recordsTotal?.currentValue / this.list.maxResultCount).toFixed()); - if(recordsTotal?.currentValue % this.list.maxResultCount === 0){ + if (recordsTotal?.currentValue % this.list.maxResultCount === 0) { maxPage -= 1; } + if (this.list.page < maxPage) { + this.list.page = this.list.page; + return; + } + this.list.page = maxPage; return; } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts index 9ce5d1d860..3769a3aa3d 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts @@ -53,14 +53,6 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { }; } - private subscribeToPage() { - const sub = this.table.page.subscribe(({ offset }) => { - this.list.page = offset; - this.table.offset = offset; - }); - this.subscription.add(sub); - } - private subscribeToSort() { const sub = this.table.sort.subscribe(({ sorts: [{ prop, dir }] }) => { if (prop === this.list.sortKey && this.list.sortOrder === 'desc') { @@ -101,7 +93,6 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { } ngOnInit() { - this.subscribeToPage(); this.subscribeToSort(); } }