UNPKG

@heycar-uikit/core

Version:
117 lines (114 loc) 4.72 kB
import { b as __spreadArray } from '../tslib.es6-56356891.js'; import { P as PaginationItemType } from '../Pagination.types-db9615e7.js'; import { getSiblingsToRender } from '../utils/getSiblingsToRender.js'; import parseOnClick from '../utils/parseOnClick.js'; import useBreakpoint from './useBreakpoint.hook.js'; import 'react'; var shouldReturnObjInArray = function (condition, obj) { if (condition) { return [obj]; } return []; }; var getLabelForPageNumbers = function (page, isCurrentPage, locale) { if (isCurrentPage) { return locale.page.replace('#{page}', page.toString()); } return locale.goto.replace('#{page}', page.toString()); }; var usePagination = function (_a) { var onClick = _a.onClick, currentPage = _a.currentPage, totalPages = _a.totalPages, locale = _a.locale; var breakpoints = useBreakpoint().breakpoints; var isDesktop = breakpoints.isDesktop; var shouldShowPreDots = (currentPage > 3 && totalPages !== 4) || currentPage > 4; var shouldShowPostDots = (currentPage < totalPages - 2 && totalPages !== 4) || currentPage < totalPages - 3; var siblingsToRender = getSiblingsToRender(totalPages, currentPage); var items = __spreadArray(__spreadArray([ // Previous button { itemType: PaginationItemType.Previous, page: currentPage - 1, isDisabled: currentPage === 1, onClick: parseOnClick({ onClick: onClick, pageNumber: currentPage - 1, isDisabled: currentPage === 1, }), 'aria-label': locale.prevPage, } ], (isDesktop ? __spreadArray(__spreadArray(__spreadArray(__spreadArray([ // First page { itemType: PaginationItemType.PageNumber, page: 1, isCurrentPage: currentPage === 1, onClick: parseOnClick({ onClick: onClick, pageNumber: 1, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(1, currentPage === 1, locale), } ], shouldReturnObjInArray(shouldShowPreDots, { itemType: PaginationItemType.Ellipsis, }), true), siblingsToRender.map(function (page) { return ({ itemType: PaginationItemType.PageNumber, page: page, isCurrentPage: currentPage === page, onClick: parseOnClick({ onClick: onClick, pageNumber: page, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(page, currentPage === page, locale), }); }), true), shouldReturnObjInArray(shouldShowPostDots, { itemType: PaginationItemType.Ellipsis, }), true), shouldReturnObjInArray(totalPages > 1, { itemType: PaginationItemType.PageNumber, page: totalPages, isCurrentPage: currentPage === totalPages, onClick: parseOnClick({ onClick: onClick, pageNumber: totalPages, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(totalPages, currentPage === totalPages, locale), }), true) : __spreadArray(__spreadArray(__spreadArray([], shouldReturnObjInArray(currentPage !== totalPages || totalPages === 1, { itemType: PaginationItemType.PageNumber, page: currentPage, onClick: parseOnClick({ onClick: onClick, pageNumber: currentPage, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(currentPage, true, locale), }), true), shouldReturnObjInArray(currentPage !== totalPages, { itemType: PaginationItemType.Slash, }), true), shouldReturnObjInArray(totalPages > 1, { itemType: PaginationItemType.PageNumber, page: totalPages, onClick: parseOnClick({ onClick: onClick, pageNumber: totalPages, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(totalPages, currentPage === totalPages, locale), }), true)), true), [ // Next button { itemType: PaginationItemType.Next, page: currentPage + 1, isDisabled: currentPage === totalPages, onClick: parseOnClick({ onClick: onClick, pageNumber: currentPage + 1, isDisabled: currentPage === totalPages, }), 'aria-label': locale.nextPage, }, ], false); return { items: items }; }; export { usePagination as default };