From d67798bd603dc6fe8100729385ceff68f6902f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 18 Mar 2024 17:22:45 +0200 Subject: [PATCH] Pagination updates --- src/lib/listing/services/paginated-entities.service.ts | 8 ++++++++ src/lib/pagination/index.ts | 2 ++ src/lib/pagination/pagination-settings.ts | 4 ++++ src/lib/pagination/pagination.component.html | 2 +- src/lib/pagination/pagination.component.ts | 3 ++- 5 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/lib/pagination/index.ts create mode 100644 src/lib/pagination/pagination-settings.ts diff --git a/src/lib/listing/services/paginated-entities.service.ts b/src/lib/listing/services/paginated-entities.service.ts index 43da78d..c9f6011 100644 --- a/src/lib/listing/services/paginated-entities.service.ts +++ b/src/lib/listing/services/paginated-entities.service.ts @@ -4,6 +4,7 @@ import { EntitiesService } from './entities.service'; import { Observable } from 'rxjs'; import { map, tap } from 'rxjs/operators'; import { mapEach } from '../../utils'; +import { PaginationSettings } from '../../pagination'; interface PaginatedResponse { data: Interface[]; @@ -48,6 +49,13 @@ export abstract class PaginatedEntitiesService< return this._currentConfig; } + get paginationSettings(): PaginationSettings { + return { + currentPage: this.config.page || 0, + totalPages: Math.ceil(this._currentConfig.totalHits / this._currentConfig.pageSize), + }; + } + updateSearchQueryAndReload(value: string): Observable { return this.loadPage(0, this._currentConfig.pageSize, { [this._searchKey]: value } as SearchOptions); } diff --git a/src/lib/pagination/index.ts b/src/lib/pagination/index.ts new file mode 100644 index 0000000..bb97fd9 --- /dev/null +++ b/src/lib/pagination/index.ts @@ -0,0 +1,2 @@ +export * from './pagination-settings'; +export * from './pagination.component'; diff --git a/src/lib/pagination/pagination-settings.ts b/src/lib/pagination/pagination-settings.ts new file mode 100644 index 0000000..6f8453c --- /dev/null +++ b/src/lib/pagination/pagination-settings.ts @@ -0,0 +1,4 @@ +export interface PaginationSettings { + currentPage: number; + totalPages: number; +} diff --git a/src/lib/pagination/pagination.component.html b/src/lib/pagination/pagination.component.html index 8a0db3f..1012cbb 100644 --- a/src/lib/pagination/pagination.component.html +++ b/src/lib/pagination/pagination.component.html @@ -20,7 +20,7 @@
diff --git a/src/lib/pagination/pagination.component.ts b/src/lib/pagination/pagination.component.ts index 82ac382..d4a4288 100644 --- a/src/lib/pagination/pagination.component.ts +++ b/src/lib/pagination/pagination.component.ts @@ -1,6 +1,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { NgForOf } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; +import { PaginationSettings } from './pagination-settings'; @Component({ selector: 'iqser-pagination', @@ -27,7 +28,7 @@ export class PaginationComponent { } @Input() - set settings(value: { currentPage: number; totalPages: number }) { + set settings(value: PaginationSettings) { this._currentPage = value.currentPage; this._totalPages = value.totalPages; this._updatePagesArray();