import { FC, memo, useCallback, useMemo } from "react"; import { Button, ControlGroup } from "@blueprintjs/core"; import { pluralize } from "../../utils"; import { CustomClasses } from "../../constants"; import { AsBoolean } from "Types/helpers"; import "./_index.sass"; type ListItemProps = { className?: string }; const ListItem: FC = ({ className = null, children, ...rest }) => (
  • {children}
  • ); const ListWrapper: FC = ({ children }) => ; type PaginationProps = { arrows?: "first" | "last", currentPage: number, itemsPerPage?: number, nbItems: number, setCurrentPage: (value: number) => void }; const Pagination = memo(function Pagination({ arrows = "last", currentPage, itemsPerPage = 30, nbItems, setCurrentPage }){ const nbPages = useMemo(() => nbItems == 0 ? 0 : Math.ceil(nbItems / itemsPerPage), [itemsPerPage, nbItems]); const goToNext = useCallback(() => { if(currentPage < nbPages){ setCurrentPage(currentPage + 1); } }, [currentPage, nbPages, setCurrentPage]); const goToPrevious = useCallback(() => { if(currentPage > 1){ setCurrentPage(currentPage - 1); } }, [currentPage, setCurrentPage]); const itemsCount = ( {(currentPage - 1)*itemsPerPage + 1}-{Math.min(currentPage*itemsPerPage, nbItems)} / {pluralize(nbItems, "item")} ); const controls = (