pagination-front-end
Version:
pagination-front-end é uma biblioteca voltada para realização de paginação no front end( pagination-front-end is a front-end paging library)
39 lines (31 loc) • 944 B
text/typescript
import { IndiceCalculationResult } from '../types'
import { normalizePageSize } from './normalize'
const buildPageRange = (startPage: number, endPage: number): number[] => {
if (endPage < startPage) {
return []
}
const pages: number[] = []
pages.length = endPage - startPage + 1
for (let index = 0; index < pages.length; index += 1) {
pages[index] = startPage + index
}
return pages
}
const indiceCalculation = (
pageSize: number,
allItems: number,
currentPage: number,
startPage: number,
endPage: number
): IndiceCalculationResult => {
const safePageSize = normalizePageSize(pageSize)
const startIndex = (currentPage - 1) * safePageSize
const endIndex =
allItems <= 0 ? -1 : Math.min(startIndex + safePageSize - 1, allItems - 1)
return {
pages: buildPageRange(startPage, endPage),
startIndex,
endIndex,
}
}
export default indiceCalculation