UNPKG

@bigfishtv/cockpit

Version:

100 lines (82 loc) 2.67 kB
'use strict'; exports.__esModule = true; exports.paginationNumbers = paginationNumbers; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _range = require('lodash/range'); var _range2 = _interopRequireDefault(_range); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _QueryLink = require('./QueryLink'); var _QueryLink2 = _interopRequireDefault(_QueryLink); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Pagination = function Pagination(_ref) { var count = _ref.count, current_page = _ref.current_page, has_next_page = _ref.has_next_page, has_prev_page = _ref.has_prev_page, limit = _ref.limit, page_count = _ref.page_count, _ref$modulus = _ref.modulus, modulus = _ref$modulus === undefined ? 8 : _ref$modulus; return page_count < 2 ? _react2.default.createElement('nav', null) : _react2.default.createElement( 'nav', { className: 'button-group' }, current_page > modulus / 2 + 1 && _react2.default.createElement( _QueryLink2.default, { query: { page: 1 }, className: 'button button-xsmall' }, _react2.default.createElement( 'span', { 'aria-hidden': true }, '\xAB' ), _react2.default.createElement( 'span', { className: 'screen-reader' }, 'First' ) ), paginationNumbers(current_page, page_count, modulus).map(function (page) { return _react2.default.createElement( _QueryLink2.default, { key: page, query: { page: page }, className: (0, _classnames2.default)('button', 'button-xsmall', { 'button-primary': page === current_page }) }, page ); }), current_page < page_count - modulus / 2 && _react2.default.createElement( _QueryLink2.default, { query: { page: page_count }, className: 'button button-xsmall' }, _react2.default.createElement( 'span', { 'aria-hidden': true }, '\xBB' ), _react2.default.createElement( 'span', { className: 'screen-reader' }, 'Last' ) ) ); }; exports.default = Pagination; function paginationNumbers(current_page, page_count) { var modulus = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8; if (page_count <= modulus + 1) { return (0, _range2.default)(1, page_count + 1); } var half = Math.floor(modulus / 2); var end = current_page + half; if (end > page_count) { end = page_count; } var start = current_page - (modulus - (end - current_page)); if (start <= 1) { start = 1; end = current_page + (modulus - current_page) + 1; } return (0, _range2.default)(start, end + 1); }