rsuite
Version:
A suite of react components
222 lines (187 loc) • 7.29 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var React = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _compose = _interopRequireDefault(require("recompose/compose"));
var _Pagination = _interopRequireDefault(require("../Pagination"));
var _SelectPicker = _interopRequireDefault(require("../SelectPicker"));
var _Divider = _interopRequireDefault(require("../Divider"));
var _utils = require("../utils");
var _withLocale = _interopRequireDefault(require("../IntlProvider/withLocale"));
var TablePagination =
/*#__PURE__*/
function (_React$Component) {
(0, _inheritsLoose2.default)(TablePagination, _React$Component);
function TablePagination() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
_this.handleChangeLength = function (eventKey) {
var onChangeLength = _this.props.onChangeLength;
onChangeLength && onChangeLength(eventKey);
};
_this.handleChangePage = function (eventKey) {
var onChangePage = _this.props.onChangePage;
onChangePage && onChangePage(eventKey);
};
_this.addPrefix = function (name) {
return (0, _utils.prefix)(_this.props.classPrefix)(name);
};
return _this;
}
var _proto = TablePagination.prototype;
_proto.renderLengthMenu = function renderLengthMenu() {
var _this$props = this.props,
_this$props$lengthMen = _this$props.lengthMenu,
lengthMenu = _this$props$lengthMen === void 0 ? [] : _this$props$lengthMen,
renderLengthMenu = _this$props.renderLengthMenu,
showLengthMenu = _this$props.showLengthMenu,
locale = _this$props.locale,
displayLength = _this$props.displayLength,
disabled = _this$props.disabled;
if (!showLengthMenu) {
return null;
}
var disabledPicker = typeof disabled === 'function' ? disabled('picker') : disabled;
var picker = React.createElement(_SelectPicker.default, {
appearance: "subtle",
cleanable: false,
searchable: false,
placement: "topStart",
data: lengthMenu,
value: displayLength,
onChange: this.handleChangeLength,
menuStyle: {
minWidth: 'auto'
},
disabled: disabledPicker
});
return React.createElement("div", {
className: this.addPrefix('length-menu')
}, renderLengthMenu ? renderLengthMenu(picker) : (0, _utils.tplTransform)(locale.lengthMenuInfo, picker));
};
_proto.renderInfo = function renderInfo() {
var _this$props2 = this.props,
renderTotal = _this$props2.renderTotal,
total = _this$props2.total,
showInfo = _this$props2.showInfo,
locale = _this$props2.locale,
activePage = _this$props2.activePage;
if (!showInfo) {
return null;
}
return React.createElement("div", {
className: this.addPrefix('page-info')
}, renderTotal ? renderTotal(total, activePage) : (0, _utils.tplTransform)(locale.totalInfo, total));
};
_proto.render = function render() {
var _this$props3 = this.props,
total = _this$props3.total,
prev = _this$props3.prev,
next = _this$props3.next,
first = _this$props3.first,
last = _this$props3.last,
maxButtons = _this$props3.maxButtons,
className = _this$props3.className,
displayLength = _this$props3.displayLength,
activePage = _this$props3.activePage,
disabled = _this$props3.disabled,
style = _this$props3.style,
reverse = _this$props3.reverse,
rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props3, ["total", "prev", "next", "first", "last", "maxButtons", "className", "displayLength", "activePage", "disabled", "style", "reverse"]);
var pages = Math.floor(total / displayLength) + (total % displayLength ? 1 : 0);
var classes = (0, _classnames.default)(this.addPrefix('toolbar'), className);
var unhandled = (0, _utils.getUnhandledProps)(TablePagination, rest);
var pagers = [React.createElement("div", {
className: (0, _classnames.default)(this.addPrefix('start')),
key: 1
}, this.renderLengthMenu(), React.createElement(_Divider.default, {
vertical: true
}), this.renderInfo()), React.createElement("div", {
className: (0, _classnames.default)(this.addPrefix('end')),
key: 2
}, React.createElement(_Pagination.default, (0, _extends2.default)({
size: "xs",
prev: prev,
next: next,
first: first,
last: last,
maxButtons: maxButtons,
pages: pages,
disabled: disabled,
onSelect: this.handleChangePage,
activePage: activePage
}, unhandled)))];
return React.createElement("div", {
className: classes,
style: style
}, reverse ? pagers.reverse() : pagers);
};
return TablePagination;
}(React.Component);
TablePagination.propTypes = {
lengthMenu: _propTypes.default.arrayOf(_propTypes.default.shape({
value: _propTypes.default.number,
label: _propTypes.default.node
})),
showLengthMenu: _propTypes.default.bool,
showInfo: _propTypes.default.bool,
total: _propTypes.default.number,
displayLength: _propTypes.default.number,
prev: _propTypes.default.bool,
next: _propTypes.default.bool,
first: _propTypes.default.bool,
last: _propTypes.default.bool,
maxButtons: _propTypes.default.number,
activePage: _propTypes.default.number,
className: _propTypes.default.string,
locale: _propTypes.default.object,
classPrefix: _propTypes.default.string,
disabled: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.func]),
style: _propTypes.default.object,
// reverse start and end position
reverse: _propTypes.default.bool,
renderLengthMenu: _propTypes.default.func,
renderTotal: _propTypes.default.func,
onChangePage: _propTypes.default.func,
onChangeLength: _propTypes.default.func
};
TablePagination.defaultProps = {
showLengthMenu: true,
showInfo: true,
lengthMenu: [{
value: 30,
label: 30
}, {
value: 50,
label: 50
}, {
value: 100,
label: 100
}],
displayLength: 30,
prev: true,
next: true,
first: true,
last: true,
activePage: 1,
maxButtons: 5,
locale: {
lengthMenuInfo: 'Show {0} data',
totalInfo: 'Total: {0}'
}
};
var _default = (0, _compose.default)((0, _withLocale.default)(['TablePagination']), (0, _utils.defaultProps)({
classPrefix: 'table-pagination'
}))(TablePagination);
exports.default = _default;
module.exports = exports.default;