Skip to content

Commit d35aa68

Browse files
committed
feat: enhance pagination logic to display all pages for 7 or fewer total pages
1 parent f340188 commit d35aa68

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

src/components/PaginatedNavigation.tsx

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,36 @@ export const PaginatedNavigation = ({
2222
const generatePages = () => {
2323
const pages: (number | 'ellipsis')[] = [];
2424

25-
if (totalPages <= 5) {
25+
if (totalPages <= 7) {
26+
// Show all pages if 7 or fewer
2627
for (let i = 1; i <= totalPages; i++) {
2728
pages.push(i);
2829
}
29-
} else if (currentPage <= 3) {
30-
for (let i = 1; i <= Math.min(currentPage + 2, totalPages); i++) {
31-
pages.push(i);
32-
}
3330
} else {
31+
// Always show first page
3432
pages.push(1);
35-
pages.push('ellipsis');
3633

37-
const maxPage = Math.min(currentPage + 2, totalPages);
38-
for (let i = currentPage; i <= maxPage; i++) {
39-
pages.push(i);
34+
if (currentPage <= 3) {
35+
// Near beginning: 1 2 3 4 ... last
36+
for (let i = 2; i <= 4; i++) {
37+
pages.push(i);
38+
}
39+
pages.push('ellipsis');
40+
pages.push(totalPages);
41+
} else if (currentPage >= totalPages - 2) {
42+
// Near end: 1 ... (last-3) (last-2) (last-1) last
43+
pages.push('ellipsis');
44+
for (let i = totalPages - 3; i <= totalPages; i++) {
45+
pages.push(i);
46+
}
47+
} else {
48+
// In middle: 1 ... (current-1) current (current+1) ... last
49+
pages.push('ellipsis');
50+
for (let i = currentPage - 1; i <= currentPage + 1; i++) {
51+
pages.push(i);
52+
}
53+
pages.push('ellipsis');
54+
pages.push(totalPages);
4055
}
4156
}
4257

0 commit comments

Comments
 (0)