UNPKG

@dabapps/roe

Version:

A collection of React components, styles, mixins, and atomic CSS classes to aid with the development of web applications.

62 lines 2.54 kB
"use strict"; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPaginationSeries = exports.getPageToGoTo = exports.getButtonType = exports.getIsDots = void 0; var constants_1 = require("./constants"); exports.getIsDots = function (totalPages, index, page) { var hasMorePagesThanButtons = totalPages > constants_1.MAX_BUTTONS; return (hasMorePagesThanButtons && ((index === 1 && page > 2) || (index === constants_1.MAX_BUTTONS - 2 && page < totalPages - 1))); }; exports.getButtonType = function (totalPages, page, index, currentPage) { if (currentPage === page) { return 'selected'; } if (exports.getIsDots(totalPages, index, page)) { return 'dots'; } return undefined; }; exports.getPageToGoTo = function (totalPages, page, index) { if (totalPages > constants_1.MAX_BUTTONS && index === 0 && page > 1) { return 1; } else if (totalPages > constants_1.MAX_BUTTONS && index === constants_1.MAX_BUTTONS - 1 && page < totalPages) { return totalPages; } return page; }; var getStart = function (totalPages, currentPage) { return Math.max(Math.min(currentPage - constants_1.LEFT_BUTTONS, totalPages - constants_1.LEFT_BUTTONS - constants_1.RIGHT_BUTTONS), 1); }; var getEnd = function (totalPages, start) { return Math.min(start + constants_1.MAX_BUTTONS, totalPages + 1); }; var getRange = function (itemCount, pageSize, pageCount) { var remainder = itemCount % pageSize; if (remainder === 0 && pageCount < constants_1.MAX_BUTTONS) { return Math.floor(pageCount); } if (remainder !== 0 && pageCount < constants_1.MAX_BUTTONS) { return Math.floor(pageCount) + 1; } return constants_1.MAX_BUTTONS; }; exports.getPaginationSeries = function (totalPages, pageCount, itemCount, pageSize, currentPage) { var start = getStart(totalPages, currentPage); var end = getEnd(totalPages, start); var range = getRange(itemCount, pageSize, pageCount); return __spreadArrays(Array(range)).map(function (_item, index) { return Math.floor(start + index * ((end - start) / range)); }); }; //# sourceMappingURL=utils.js.map