mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[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:
@@ -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();
|
||||||
|
|
||||||
|
@@ -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() {
|
||||||
|
@@ -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
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user