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
JSX
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 };