UNPKG

terra-paginator

Version:

Paginator to be used for data sets of known and unknown size. Provides first, last, previous, next, and paged functionality.

44 lines (36 loc) 1.21 kB
const calculatePages = (totalCount, itemCountPerPage) => Math.ceil(totalCount / itemCountPerPage); const pageSet = (index, totalPages) => { const sequence = []; const numberShiftPoint = 7; const maxPagesDisplayed = 10; const previousSequenceCount = 5; const nextSequenceCount = 4; let mutableIndex = index; if (mutableIndex < 1) { mutableIndex = 1; } else if (mutableIndex > totalPages) { mutableIndex = totalPages; } if (mutableIndex < numberShiftPoint) { for (let i = 1; i <= maxPagesDisplayed; i += 1) { sequence.push(i); } } else if (mutableIndex <= totalPages && mutableIndex > totalPages - maxPagesDisplayed && mutableIndex > totalPages - previousSequenceCount) { for (let i = totalPages; i > totalPages - maxPagesDisplayed; i -= 1) { sequence.push(i); } } else { for (let i = mutableIndex; i >= mutableIndex - previousSequenceCount; i -= 1) { sequence.push(i); } for (let i = mutableIndex + 1; i <= mutableIndex + nextSequenceCount; i += 1) { sequence.push(i); } } return sequence.sort((a, b) => a - b); }; const KEYCODES = { ENTER: 13, SPACE: 32, }; export { calculatePages, pageSet, KEYCODES };