Skip to content

Commit 902fc78

Browse files
authored
Merge pull request #14 from instalution/pagination-fix
Application determines hasNext/hasPrev in Pagination -- Fixes #13
2 parents 4005bc8 + c8d8ef6 commit 902fc78

File tree

4 files changed

+9
-10
lines changed

4 files changed

+9
-10
lines changed

components/Pagination/index.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import { PaginationProps } from '../../types'
33
import { useRouter } from 'next/router'
44

55
const Pagination = ({ meta, pageState, locale, location }: PaginationProps) => {
6-
const { setPage } = pageState
6+
const { page, setPage } = pageState
77
const router = useRouter()
88

99
return <>
10-
{(meta.hasPrevious || meta.hasNext) &&
10+
{meta.total > meta.perPage &&
1111
<div className="previous">
12-
<button onClick={() => setPage(prevState => prevState - 1)} disabled={!meta.hasPrevious} title={t[locale].previous}>
12+
<button onClick={() => setPage(prevState => prevState - 1)} disabled={page === 1} title={t[locale].previous}>
1313
1414
</button>
1515
</div>
@@ -19,9 +19,9 @@ const Pagination = ({ meta, pageState, locale, location }: PaginationProps) => {
1919
{ location === 'header' && '↑' }
2020
</button>
2121
</div>
22-
{(meta.hasPrevious || meta.hasNext) &&
22+
{meta.total > meta.perPage &&
2323
<div className="next">
24-
<button onClick={() => setPage(prevState => prevState + 1)} disabled={!meta.hasNext} title={t[locale].next}>
24+
<button onClick={() => setPage(prevState => prevState + 1)} disabled={page === Math.ceil(meta.total / meta.perPage)} title={t[locale].next}>
2525
2626
</button>
2727
</div>

pages/api/files.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ export default function Handler(
6262
data: files,
6363
meta: {
6464
total: totalFiles,
65-
hasNext: pageNumber * perPage < totalFiles,
66-
hasPrevious: pageNumber > 1,
65+
perPage,
6766
}
6867
})
6968
}

styles/globals.scss

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ label {
4747

4848
button[disabled] {
4949
opacity: .2;
50+
cursor: unset;
5051
}
5152

5253
.app-bar {

types.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ import { Dispatch, SetStateAction } from 'react'
33
export type Breakpoint = 'small' | 'medium' | 'large'
44

55
export interface AppApiResponseMeta {
6-
total?: number
7-
hasPrevious?: boolean
8-
hasNext?: boolean
6+
total: number
7+
perPage: number
98
}
109

1110
export interface AppApiResponse {

0 commit comments

Comments
 (0)