UNPKG

@bootstrap-styled/ra-ui

Version:
170 lines (133 loc) 6.61 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.Pagination = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); 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 _styledComponents = _interopRequireDefault(require("styled-components")); var _CardFooter = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Cards/CardFooter")); var _compose = _interopRequireDefault(require("recompose/compose")); var _raCore = require("ra-core"); var _PaginationActions = _interopRequireDefault(require("./PaginationActions")); var _PaginationLimit = _interopRequireDefault(require("./PaginationLimit")); var _Responsive = _interopRequireDefault(require("../layout/Responsive")); var PaginationText = _styledComponents.default.span.withConfig({ displayName: "Pagination__PaginationText", componentId: "tg8qj4-0" })(["color:rgba(0,0,0,0.54);font-size:0.75rem;font-weight:400;line-height:1.375em;flex-shrink:0;margin:0;display:block;"]); var Pagination = function (_Component) { (0, _inherits2.default)(Pagination, _Component); function Pagination() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, Pagination); 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)(Pagination)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getNbPages", function () { return Math.ceil(_this.props.total / _this.props.perPage) || 1; }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handlePageChange", function (event, page) { event && event.stopPropagation(); if (page < 0 || page > _this.getNbPages() - 1) { throw new Error(_this.props.translate('ra.navigation.page_out_of_boundaries', { page: page + 1 })); } _this.props.setPage(page + 1); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handlePerPageChange", function (event) { _this.props.setPerPage(event.target.value); }); return _this; } (0, _createClass2.default)(Pagination, [{ key: "componentDidUpdate", value: function componentDidUpdate() { if (this.props.page < 1 || isNaN(this.props.page)) { this.props.setPage(1); } } }, { key: "render", value: function render() { var _this$props = this.props, isLoading = _this$props.isLoading, page = _this$props.page, perPage = _this$props.perPage, rowsPerPageOptions = _this$props.rowsPerPageOptions, total = _this$props.total, translate = _this$props.translate, rest = (0, _objectWithoutProperties2.default)(_this$props, ["isLoading", "page", "perPage", "rowsPerPageOptions", "total", "translate"]); if (!isLoading && total === 0) { return _react.default.createElement(_PaginationLimit.default, null); } var offsetEnd = Math.min(page * perPage, total); var offsetBegin = Math.min((page - 1) * perPage + 1, offsetEnd); return _react.default.createElement(_Responsive.default, { small: _react.default.createElement(_CardFooter.default, (0, _extends2.default)({ className: "d-flex align-items-center justify-content-end" }, (0, _raCore.sanitizeListRestProps)(rest)), _react.default.createElement(PaginationText, { className: "displayed-records p-3" }, translate('ra.navigation.page_range_info', { offsetBegin: offsetBegin, offsetEnd: offsetEnd, total: total })), _react.default.createElement(_PaginationActions.default, { count: total, rowsPerPage: perPage, page: page - 1, onChangePage: this.handlePageChange })), medium: _react.default.createElement(_CardFooter.default, (0, _extends2.default)({ className: "d-flex align-items-center justify-content-end" }, (0, _raCore.sanitizeListRestProps)(rest)), _react.default.createElement(PaginationText, { className: "displayed-records" }, translate('ra.navigation.page_range_info', { offsetBegin: offsetBegin, offsetEnd: offsetEnd, total: total })), _react.default.createElement(_PaginationActions.default, { count: total, rowsPerPage: perPage, page: page - 1, onChangePage: this.handlePageChange })) }); } }]); return Pagination; }(_react.Component); exports.Pagination = Pagination; Pagination.propTypes = { className: _propTypes.default.string, ids: _propTypes.default.array, isLoading: _propTypes.default.bool, page: _propTypes.default.number, perPage: _propTypes.default.number, rowsPerPageOptions: _propTypes.default.arrayOf(_propTypes.default.number), setPage: _propTypes.default.func, setPerPage: _propTypes.default.func, translate: _propTypes.default.func.isRequired, total: _propTypes.default.number }; Pagination.defaultProps = { rowsPerPageOptions: [5, 10, 25] }; var enhance = (0, _compose.default)(_pure.default, _raCore.translate); var _default = enhance(Pagination); exports.default = _default;