UNPKG

@heycar-uikit/core

Version:
117 lines (114 loc) 5.07 kB
var tslib_es6 = require('../tslib.es6-dc6abeaa.js'); var Pagination_types = require('../Pagination.types-254e1d66.js'); var utils_getSiblingsToRender = require('../utils/getSiblingsToRender.js'); var utils_parseOnClick = require('../utils/parseOnClick.js'); var hooks_useBreakpoint_hook = require('./useBreakpoint.hook.js'); require('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 = hooks_useBreakpoint_hook["default"]().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 = utils_getSiblingsToRender.getSiblingsToRender(totalPages, currentPage); var items = tslib_es6.__spreadArray(tslib_es6.__spreadArray([ // Previous button { itemType: Pagination_types.PaginationItemType.Previous, page: currentPage - 1, isDisabled: currentPage === 1, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: currentPage - 1, isDisabled: currentPage === 1, }), 'aria-label': locale.prevPage, } ], (isDesktop ? tslib_es6.__spreadArray(tslib_es6.__spreadArray(tslib_es6.__spreadArray(tslib_es6.__spreadArray([ // First page { itemType: Pagination_types.PaginationItemType.PageNumber, page: 1, isCurrentPage: currentPage === 1, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: 1, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(1, currentPage === 1, locale), } ], shouldReturnObjInArray(shouldShowPreDots, { itemType: Pagination_types.PaginationItemType.Ellipsis, }), true), siblingsToRender.map(function (page) { return ({ itemType: Pagination_types.PaginationItemType.PageNumber, page: page, isCurrentPage: currentPage === page, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: page, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(page, currentPage === page, locale), }); }), true), shouldReturnObjInArray(shouldShowPostDots, { itemType: Pagination_types.PaginationItemType.Ellipsis, }), true), shouldReturnObjInArray(totalPages > 1, { itemType: Pagination_types.PaginationItemType.PageNumber, page: totalPages, isCurrentPage: currentPage === totalPages, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: totalPages, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(totalPages, currentPage === totalPages, locale), }), true) : tslib_es6.__spreadArray(tslib_es6.__spreadArray(tslib_es6.__spreadArray([], shouldReturnObjInArray(currentPage !== totalPages || totalPages === 1, { itemType: Pagination_types.PaginationItemType.PageNumber, page: currentPage, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: currentPage, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(currentPage, true, locale), }), true), shouldReturnObjInArray(currentPage !== totalPages, { itemType: Pagination_types.PaginationItemType.Slash, }), true), shouldReturnObjInArray(totalPages > 1, { itemType: Pagination_types.PaginationItemType.PageNumber, page: totalPages, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: totalPages, isDisabled: false, }), 'aria-label': getLabelForPageNumbers(totalPages, currentPage === totalPages, locale), }), true)), true), [ // Next button { itemType: Pagination_types.PaginationItemType.Next, page: currentPage + 1, isDisabled: currentPage === totalPages, onClick: utils_parseOnClick({ onClick: onClick, pageNumber: currentPage + 1, isDisabled: currentPage === totalPages, }), 'aria-label': locale.nextPage, }, ], false); return { items: items }; }; module.exports = usePagination;