UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

74 lines (73 loc) 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDotsAriaLabel = exports.calculatePagination = void 0; var _push = _interopRequireDefault(require("core-js-pure/stable/instance/push.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const calculatePagination = (pageCount, currentPage, isSmallScreen) => { if (pageCount === 1) return [[1]]; const MIDDLE_WIDTH = isSmallScreen ? 1 : 3; const EDGE_WIDTH = isSmallScreen ? 4 : 9; const FIRST_BUTTON = 1; const LAST_BUTTON = pageCount; const currentAtStart = currentPage - EDGE_WIDTH + 1 < FIRST_BUTTON; const currentAtEnd = currentPage + EDGE_WIDTH > LAST_BUTTON; let middleStart; let middleEnd; if (currentAtStart) { middleStart = 2; middleEnd = EDGE_WIDTH; } else if (currentAtEnd) { middleStart = LAST_BUTTON + 1 - EDGE_WIDTH; middleEnd = LAST_BUTTON - 1; } else { middleStart = isSmallScreen ? currentPage : currentPage - MIDDLE_WIDTH; middleEnd = currentPage + MIDDLE_WIDTH; } if (middleEnd > LAST_BUTTON - 1) { middleEnd = LAST_BUTTON - 1; } if (middleStart < FIRST_BUTTON + 1) { middleStart = FIRST_BUTTON + 1; } const middleArray = []; if (middleStart === 2) { (0, _push.default)(middleArray).call(middleArray, FIRST_BUTTON); } for (let i = middleStart; i <= middleEnd; i++) { (0, _push.default)(middleArray).call(middleArray, i); } if (middleEnd === LAST_BUTTON - 1) { (0, _push.default)(middleArray).call(middleArray, LAST_BUTTON); } const pages = []; if (middleStart !== 2) { (0, _push.default)(pages).call(pages, [FIRST_BUTTON]); } if (typeof LAST_BUTTON !== 'undefined') { (0, _push.default)(pages).call(pages, middleArray); if (middleEnd !== LAST_BUTTON - 1) { (0, _push.default)(pages).call(pages, [LAST_BUTTON]); } } return pages; }; exports.calculatePagination = calculatePagination; const getDotsAriaLabel = ({ more_pages, numbersList: nList, pageNumberGroups: pGroups }) => { let count = 0; try { if (nList.length === 1) { count = nList[0] - (pGroups.length === 2 ? pGroups[0][pGroups[0].length - 1] : pGroups[1][pGroups[1].length - 1]); } else if (nList.length > 1) { count = nList[0] - pGroups[0][0] - 1; } } catch (e) {} return count > 0 ? more_pages.replace('%s', count.toString()) : null; }; exports.getDotsAriaLabel = getDotsAriaLabel; //# sourceMappingURL=PaginationCalculation.js.map