UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

66 lines 2 kB
import "core-js/modules/es.string.replace.js"; export 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) { middleArray.push(FIRST_BUTTON); } for (let i = middleStart; i <= middleEnd; i++) { middleArray.push(i); } if (middleEnd === LAST_BUTTON - 1) { middleArray.push(LAST_BUTTON); } const pages = []; if (middleStart !== 2) { pages.push([FIRST_BUTTON]); } if (typeof LAST_BUTTON !== 'undefined') { pages.push(middleArray); if (middleEnd !== LAST_BUTTON - 1) { pages.push([LAST_BUTTON]); } } return pages; }; export const getDotsAriaLabel = _ref => { let { more_pages, numbersList: nList, pageNumberGroups: pGroups } = _ref; 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; }; //# sourceMappingURL=PaginationCalculation.js.map