@s-ui/react-molecule-pagination
Version:
`MoleculePagination` is a component that displays a range of pages with the current page highlighted and the proper buttons to navigate across the available pages in the entire range of total pages
35 lines (34 loc) • 1.31 kB
JavaScript
import highRange from './highRange.js';
import lowRange from './lowRange.js';
/**
* Gets the proper range for the page number according to the number of pages to display
* @param {object} params - parameters pagination
* @param {number} params.page - Original page number
* @param {number} params.totalPages - Total number of pages
* @param {number} params.showPages - Number of pages to display in the range of pages displayed
* @return {number[]} range of page numbers
*/
var range = function range(_ref) {
var page = _ref.page,
totalPagesParam = _ref.totalPages,
showEdges = _ref.showEdges,
showPages = _ref.showPages;
var totalPages = showEdges ? totalPagesParam - 1 : totalPagesParam;
var _lowRange = lowRange({
page: page,
showEdges: showEdges,
showPages: showPages,
totalPages: totalPages
});
var _highRangeFixer = showPages > totalPages ? totalPages - 1 : showPages;
var _highRange = showEdges ? _lowRange + _highRangeFixer : highRange({
page: page,
totalPages: totalPages,
showPages: showPages
});
var rangeNumItems = _highRange === totalPages ? totalPages - _lowRange : showPages;
return rangeNumItems > 0 ? [].concat(Array.from(new Array(rangeNumItems), function (_, i) {
return _lowRange + i + 1;
})) : [];
};
export default range;