react-ultimate-pagination
Version:
React.js pagination component based on ultimate-pagination
97 lines (79 loc) • 4.08 kB
JavaScript
;
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;