Release 1.5.13
This commit is contained in:
+52
-11
@@ -17,26 +17,61 @@ function buildQueryString(query) {
|
||||
return queryString ? `?${queryString}` : '';
|
||||
}
|
||||
|
||||
function createPageEntry(pageNumber, currentPage, pageParam, queryState) {
|
||||
const nextQuery = Object.assign({}, queryState, { [pageParam]: pageNumber });
|
||||
|
||||
return {
|
||||
number: pageNumber,
|
||||
active: pageNumber === currentPage,
|
||||
url: buildQueryString(nextQuery)
|
||||
};
|
||||
}
|
||||
|
||||
function createEllipsisEntry() {
|
||||
return {
|
||||
ellipsis: true
|
||||
};
|
||||
}
|
||||
|
||||
function buildPaginationPages(totalPages, currentPage, pageParam, queryState, maxVisiblePages) {
|
||||
const pages = [];
|
||||
const visiblePageCount = Math.max(1, Math.min(Number(maxVisiblePages) || 7, totalPages));
|
||||
let startPage = Math.max(1, currentPage - Math.floor(visiblePageCount / 2));
|
||||
let endPage = startPage + visiblePageCount - 1;
|
||||
const firstPage = 1;
|
||||
const lastPage = totalPages;
|
||||
|
||||
if (endPage > totalPages) {
|
||||
endPage = totalPages;
|
||||
startPage = Math.max(1, endPage - visiblePageCount + 1);
|
||||
if (totalPages <= visiblePageCount) {
|
||||
for (let pageNumber = firstPage; pageNumber <= lastPage; pageNumber += 1) {
|
||||
pages.push(createPageEntry(pageNumber, currentPage, pageParam, queryState));
|
||||
}
|
||||
|
||||
return pages;
|
||||
}
|
||||
|
||||
const innerPageCount = Math.max(1, visiblePageCount - 2);
|
||||
let startPage = Math.max(2, currentPage - Math.floor(innerPageCount / 2));
|
||||
let endPage = startPage + innerPageCount - 1;
|
||||
|
||||
if (endPage > lastPage - 1) {
|
||||
endPage = lastPage - 1;
|
||||
startPage = Math.max(2, endPage - innerPageCount + 1);
|
||||
}
|
||||
|
||||
pages.push(createPageEntry(firstPage, currentPage, pageParam, queryState));
|
||||
|
||||
if (startPage > 2) {
|
||||
pages.push(createEllipsisEntry());
|
||||
}
|
||||
|
||||
for (let pageNumber = startPage; pageNumber <= endPage; pageNumber += 1) {
|
||||
const nextQuery = Object.assign({}, queryState, { [pageParam]: pageNumber });
|
||||
pages.push({
|
||||
number: pageNumber,
|
||||
active: pageNumber === currentPage,
|
||||
url: buildQueryString(nextQuery)
|
||||
});
|
||||
pages.push(createPageEntry(pageNumber, currentPage, pageParam, queryState));
|
||||
}
|
||||
|
||||
if (endPage < lastPage - 1) {
|
||||
pages.push(createEllipsisEntry());
|
||||
}
|
||||
|
||||
pages.push(createPageEntry(lastPage, currentPage, pageParam, queryState));
|
||||
|
||||
return pages;
|
||||
}
|
||||
|
||||
@@ -51,6 +86,8 @@ function buildPagination(totalItems, currentPage, pageParam, queryState, pageSiz
|
||||
|
||||
const previousQuery = Object.assign({}, queryState, { [normalizedPageParam]: safeCurrentPage - 1 });
|
||||
const nextQuery = Object.assign({}, queryState, { [normalizedPageParam]: safeCurrentPage + 1 });
|
||||
const firstQuery = Object.assign({}, queryState, { [normalizedPageParam]: 1 });
|
||||
const lastQuery = Object.assign({}, queryState, { [normalizedPageParam]: totalPages });
|
||||
|
||||
return {
|
||||
currentPage: safeCurrentPage,
|
||||
@@ -59,8 +96,12 @@ function buildPagination(totalItems, currentPage, pageParam, queryState, pageSiz
|
||||
hasMultiplePages: totalPages > 1,
|
||||
startItem: startIndex + 1,
|
||||
endItem: endIndex,
|
||||
hasFirst: safeCurrentPage > 1,
|
||||
hasPrevious: safeCurrentPage > 1,
|
||||
hasNext: safeCurrentPage < totalPages,
|
||||
hasLast: safeCurrentPage < totalPages,
|
||||
firstUrl: buildQueryString(firstQuery),
|
||||
lastUrl: buildQueryString(lastQuery),
|
||||
previousUrl: buildQueryString(previousQuery),
|
||||
nextUrl: buildQueryString(nextQuery),
|
||||
pages: pages,
|
||||
|
||||
Reference in New Issue
Block a user