@bootstrap-styled/ra-ui
Version:
UI components for react-admin
204 lines (157 loc) • 7 kB
JavaScript
;
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;