UNPKG

@bootstrap-styled/ra-ui

Version:
204 lines (157 loc) 7 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.PaginationActions = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _pure = _interopRequireDefault(require("recompose/pure")); var _ChevronLeft = _interopRequireDefault(require("@material-ui/icons/ChevronLeft")); var _ChevronRight = _interopRequireDefault(require("@material-ui/icons/ChevronRight")); var _Pagination = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Pagination")); var _PaginationItem = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Pagination/PaginationItem")); var _PaginationLink = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Pagination/PaginationLink")); var _compose = _interopRequireDefault(require("recompose/compose")); var _raCore = require("ra-core"); var PaginationActions = function (_Component) { (0, _inherits2.default)(PaginationActions, _Component); function PaginationActions() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, PaginationActions); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(PaginationActions)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getNbPages", function () { return Math.ceil(_this.props.count / _this.props.rowsPerPage) || 1; }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "prevPage", function (event) { if (_this.props.page === 0) { throw new Error(_this.props.translate('ra.navigation.page_out_from_begin')); } _this.props.onChangePage(event, _this.props.page - 1); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "nextPage", function (event) { if (_this.props.page > _this.getNbPages() - 1) { throw new Error(_this.props.translate('ra.navigation.page_out_from_end')); } _this.props.onChangePage(event, _this.props.page + 1); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "gotoPage", function (event) { var page = parseInt(event.currentTarget.dataset.page, 10); if (page < 0 || page > _this.getNbPages() - 1) { throw new Error(_this.props.translate('ra.navigation.page_out_of_boundaries', { page: page + 1 })); } _this.props.onChangePage(event, page); }); return _this; } (0, _createClass2.default)(PaginationActions, [{ key: "range", value: function range() { var _this$props = this.props, page = _this$props.page, rowsPerPage = _this$props.rowsPerPage, count = _this$props.count; var nbPages = Math.ceil(count / rowsPerPage) || 1; if (isNaN(page) || nbPages === 1) { return []; } var input = []; if (page > 1) { input.push(1); } if (page === 3) { input.push(2); } if (page > 3) { input.push('.'); } if (page > 0) { input.push(page); } input.push(page + 1); if (page < nbPages - 1) { input.push(page + 2); } if (page === nbPages - 4) { input.push(nbPages - 1); } if (page < nbPages - 4) { input.push('.'); } if (page < nbPages - 2) { input.push(nbPages); } return input; } }, { key: "renderPageNums", value: function renderPageNums() { var _this2 = this; return this.range().map(function (pageNum) { return pageNum === '.' ? _react.default.createElement(_PaginationItem.default, { key: "hyphen_".concat(pageNum) }, _react.default.createElement(_PaginationLink.default, { className: "page-number my-1 cursor-default" }, "\u2026")) : _react.default.createElement(_PaginationItem.default, { key: pageNum }, _react.default.createElement(_PaginationLink.default, { className: "page-number my-1", "data-page": pageNum, onClick: _this2.gotoPage, key: pageNum }, pageNum)); }); } }, { key: "render", value: function render() { var _this$props2 = this.props, page = _this$props2.page, translate = _this$props2.translate; var nbPages = this.getNbPages(); if (nbPages === 1) return _react.default.createElement("div", null); return _react.default.createElement(_Pagination.default, { className: "m-0 ml-3 cursor-pointer" }, page > 0 && _react.default.createElement(_PaginationItem.default, { key: "prev" }, _react.default.createElement(_PaginationLink.default, { className: "previous-page my-1", color: "primary", onClick: this.prevPage, previous: true }, _react.default.createElement(_ChevronLeft.default, null), translate('ra.navigation.prev'))), this.renderPageNums(), page !== nbPages - 1 && _react.default.createElement(_PaginationItem.default, { key: "next" }, _react.default.createElement(_PaginationLink.default, { className: "next my-1", color: "primary", onClick: this.nextPage, next: true }, _react.default.createElement(_ChevronRight.default, null), translate('ra.navigation.next')))); } }]); return PaginationActions; }(_react.Component); exports.PaginationActions = PaginationActions; PaginationActions.propTypes = { count: _propTypes.default.number.isRequired, onChangePage: _propTypes.default.func.isRequired, page: _propTypes.default.number.isRequired, rowsPerPage: _propTypes.default.number.isRequired }; var enhance = (0, _compose.default)(_pure.default, _raCore.translate); var _default = enhance(PaginationActions); exports.default = _default;