UNPKG

react-ultimate-pagination

Version:
97 lines (79 loc) 4.08 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ITEM_TYPES = exports.createUltimatePagination = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _ultimatePagination = require('ultimate-pagination'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var renderItemComponentFunctionFactory = function renderItemComponentFunctionFactory(itemTypeToComponent, currentPage, onChange) { var onItemClickFunctionFactory = function onItemClickFunctionFactory(_ref) { var value = _ref.value, isDisabled = _ref.isDisabled; return function () { if (!isDisabled && onChange && currentPage !== value) { onChange(value); } }; }; return function (props) { var ItemComponent = itemTypeToComponent[props.type]; var onItemClick = onItemClickFunctionFactory(props); return _react2.default.createElement(ItemComponent, _extends({ onClick: onItemClick }, props)); }; }; var createUltimatePagination = function createUltimatePagination(_ref2) { var itemTypeToComponent = _ref2.itemTypeToComponent, _ref2$WrapperComponen = _ref2.WrapperComponent, WrapperComponent = _ref2$WrapperComponen === undefined ? 'div' : _ref2$WrapperComponen; var UltimatePaginationComponent = function UltimatePaginationComponent(props) { var currentPage = props.currentPage, totalPages = props.totalPages, boundaryPagesRange = props.boundaryPagesRange, siblingPagesRange = props.siblingPagesRange, hideEllipsis = props.hideEllipsis, hidePreviousAndNextPageLinks = props.hidePreviousAndNextPageLinks, hideFirstAndLastPageLinks = props.hideFirstAndLastPageLinks, onChange = props.onChange, disabled = props.disabled, restProps = _objectWithoutProperties(props, ['currentPage', 'totalPages', 'boundaryPagesRange', 'siblingPagesRange', 'hideEllipsis', 'hidePreviousAndNextPageLinks', 'hideFirstAndLastPageLinks', 'onChange', 'disabled']); var paginationModel = (0, _ultimatePagination.getPaginationModel)({ currentPage: currentPage, totalPages: totalPages, boundaryPagesRange: boundaryPagesRange, siblingPagesRange: siblingPagesRange, hideEllipsis: hideEllipsis, hidePreviousAndNextPageLinks: hidePreviousAndNextPageLinks, hideFirstAndLastPageLinks: hideFirstAndLastPageLinks }); var renderItemComponent = renderItemComponentFunctionFactory(itemTypeToComponent, currentPage, onChange); return _react2.default.createElement( WrapperComponent, restProps, paginationModel.map(function (itemModel) { return renderItemComponent(_extends({}, itemModel, { isDisabled: !!disabled })); }) ); }; UltimatePaginationComponent.propTypes = { currentPage: _propTypes2.default.number.isRequired, totalPages: _propTypes2.default.number.isRequired, boundaryPagesRange: _propTypes2.default.number, siblingPagesRange: _propTypes2.default.number, hideEllipsis: _propTypes2.default.bool, hidePreviousAndNextPageLinks: _propTypes2.default.bool, hideFirstAndLastPageLinks: _propTypes2.default.bool, onChange: _propTypes2.default.func, disabled: _propTypes2.default.bool }; return UltimatePaginationComponent; }; exports.createUltimatePagination = createUltimatePagination; exports.ITEM_TYPES = _ultimatePagination.ITEM_TYPES;