[MNT-23648] Clicking on Load More button no longer causes scroll position to reset to top (#8951)

* [MNT-23648] Resolved issue where clicking on load more button would reset the scroll position to top when copying/moving a folder

* [MNT-23648] Revert fix

* [MNT-23648] Resolved issue where clicking on load more button would reset the scroll position to top when copying/moving a folder

* [MNT-23648] Added test case to cover new functionality

* [MNT-23648] Fixed unit tests
This commit is contained in:
swapnil-verma-gl
2023-10-03 13:21:36 +05:30
committed by GitHub
parent 0b1fc4faa4
commit e638b54fcd
4 changed files with 37 additions and 13 deletions

View File

@@ -1427,6 +1427,31 @@ describe('DocumentList', () => {
expect(documentList.reload).toHaveBeenCalled(); expect(documentList.reload).toHaveBeenCalled();
}); });
it('should not show loading state if pagination is updated with merge setting as true', fakeAsync (() => {
spyFolderNode = spyOn(documentListService, 'loadFolderByNodeId').and.callFake(() =>
of(new DocumentLoaderNode(null, {
list: {
pagination: {},
entries: mockPreselectedNodes
}
}))
);
fixture.detectChanges();
const fakeDatatableRows = [
new ShareDataRow(mockPreselectedNodes[0], contentService, null),
new ShareDataRow(mockPreselectedNodes[1], contentService, null)
];
documentList.data.setRows(fakeDatatableRows);
documentList.updatePagination({
maxItems: 10,
skipCount: 0,
merge: true
});
fixture.detectChanges();
expect(element.querySelector('#adf-document-list-loading')).toBe(null);
}));
it('should NOT reload data on first call of ngOnChanges', () => { it('should NOT reload data on first call of ngOnChanges', () => {
spyOn(documentList, 'reload').and.stub(); spyOn(documentList, 'reload').and.stub();

View File

@@ -550,12 +550,12 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
} }
} }
reload() { reload(hideLoadingSpinner = false) {
this.resetSelection(); this.resetSelection();
this.reloadWithoutResettingSelection(); this.reloadWithoutResettingSelection(hideLoadingSpinner);
} }
reloadWithoutResettingSelection() { reloadWithoutResettingSelection(hideLoadingSpinner = false) {
if (this.node) { if (this.node) {
if (this.data) { if (this.data) {
this.data.loadPage(this.node, this._pagination.merge, null); this.data.loadPage(this.node, this._pagination.merge, null);
@@ -565,7 +565,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
this.syncPagination(); this.syncPagination();
this.onDataReady(this.node); this.onDataReady(this.node);
} else { } else {
this.loadFolder(); this.loadFolder(hideLoadingSpinner);
} }
} }
@@ -713,8 +713,8 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
} }
} }
loadFolder() { loadFolder(hideLoadingSpinner = false) {
if (!this._pagination.merge) { if (!hideLoadingSpinner) {
this.setLoadingState(true); this.setLoadingState(true);
} }
@@ -944,9 +944,8 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
updatePagination(requestPaginationModel: RequestPaginationModel) { updatePagination(requestPaginationModel: RequestPaginationModel) {
this._pagination.maxItems = requestPaginationModel.maxItems; this._pagination.maxItems = requestPaginationModel.maxItems;
this._pagination.merge = requestPaginationModel.merge;
this._pagination.skipCount = requestPaginationModel.skipCount; this._pagination.skipCount = requestPaginationModel.skipCount;
this.reload(); this.reload(requestPaginationModel.merge);
} }
private syncPagination() { private syncPagination() {

View File

@@ -174,7 +174,7 @@ describe('InfinitePaginationComponent', () => {
loadMoreButton.triggerEventHandler('click', {}); loadMoreButton.triggerEventHandler('click', {});
}); });
it('should trigger the loadMore event with merge false to reload all the elements', (done) => { it('should trigger the loadMore event with merge true to reload all the elements', (done) => {
pagination = {maxItems: 444, skipCount: 25, totalItems: 55, hasMoreItems: true}; pagination = {maxItems: 444, skipCount: 25, totalItems: 55, hasMoreItems: true};
component.target.pagination.next(pagination); component.target.pagination.next(pagination);
@@ -184,7 +184,7 @@ describe('InfinitePaginationComponent', () => {
changeDetectorRef.detectChanges(); changeDetectorRef.detectChanges();
component.loadMore.subscribe((newPagination: RequestPaginationModel) => { component.loadMore.subscribe((newPagination: RequestPaginationModel) => {
expect(newPagination.merge).toBe(false); expect(newPagination.merge).toBe(true);
done(); done();
}); });
@@ -222,7 +222,7 @@ describe('InfinitePaginationComponent', () => {
skipCount: 0, skipCount: 0,
maxItems: 50, maxItems: 50,
hasMoreItems: false, hasMoreItems: false,
merge: false merge: true
}); });
}); });
@@ -237,7 +237,7 @@ describe('InfinitePaginationComponent', () => {
maxItems: 14, maxItems: 14,
skipCount: 0, skipCount: 0,
hasMoreItems: false, hasMoreItems: false,
merge: false merge: true
}); });
}); });

View File

@@ -109,7 +109,7 @@ export class InfinitePaginationComponent implements OnInit, OnDestroy, Paginatio
onLoadMore() { onLoadMore() {
this.requestPaginationModel.skipCount = 0; this.requestPaginationModel.skipCount = 0;
this.requestPaginationModel.merge = false; this.requestPaginationModel.merge = true;
this.requestPaginationModel.maxItems += this.pageSize; this.requestPaginationModel.maxItems += this.pageSize;