All files / components/organisms/PaginationBar usePaginationBar.ts

100% Statements 30/30
100% Branches 9/9
100% Functions 3/3
100% Lines 30/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 331x 2x 29x 28x 28x 29x 29x   2x 11x 11x 11x 11x 11x 11x 11x 11x 4x 4x 11x 43x 18x 18x 43x 11x 6x 6x 11x 11x   2x 2x  
export function usePaginationBar() {
  const pushNumberItem = (array: string[], numberItem: string) => {
    if (array.indexOf(numberItem) === -1) {
      array.push(numberItem);
    }
    return true;
  };
 
  const setPaginationItems = (
    paginationItems: string[],
    currentPageNum: number,
    maxPageNum: number,
    padding: number,
  ) => {
    paginationItems.length = 0;
    paginationItems.push("1");
    if (currentPageNum - padding > 2) {
      paginationItems.push("...");
    }
    for (let idx = -1 * padding; idx <= padding; idx++) {
      if (currentPageNum + idx > 1 && currentPageNum + idx < maxPageNum) {
        pushNumberItem(paginationItems, String(currentPageNum + idx));
      }
    }
    if (currentPageNum + padding < maxPageNum - 1) {
      paginationItems.push("...");
    }
    pushNumberItem(paginationItems, String(maxPageNum));
  };
 
  return { setPaginationItems };
}