@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
JavaScript
;
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