@6thquake/react-material
Version:
React components that implement Google's Material Design.
186 lines (145 loc) • 6.58 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _withStyles = _interopRequireDefault(require("../../styles/withStyles"));
var _TablePagination = _interopRequireDefault(require("../../TablePagination"));
var _IconButton = _interopRequireDefault(require("../../IconButton"));
var _FirstPage = _interopRequireDefault(require("@material-ui/icons/FirstPage"));
var _KeyboardArrowLeft = _interopRequireDefault(require("@material-ui/icons/KeyboardArrowLeft"));
var _KeyboardArrowRight = _interopRequireDefault(require("@material-ui/icons/KeyboardArrowRight"));
var _LastPage = _interopRequireDefault(require("@material-ui/icons/LastPage"));
var actionsStyles = function actionsStyles(theme) {
return {
root: {
flexShrink: 0,
color: theme.palette.text.secondary,
marginLeft: theme.spacing(2.5)
}
};
};
/**
* @ignore - internal component.
*/
var TablePaginationActions =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(TablePaginationActions, _React$Component);
function TablePaginationActions() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, TablePaginationActions);
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)(TablePaginationActions)).call.apply(_getPrototypeOf2, [this].concat(args)));
_this.handleFirstPageButtonClick = function (event) {
_this.props.onChangePage(event, 0);
};
_this.handleBackButtonClick = function (event) {
_this.props.onChangePage(event, _this.props.page - 1);
};
_this.handleNextButtonClick = function (event) {
_this.props.onChangePage(event, _this.props.page + 1);
};
_this.handleLastPageButtonClick = function (event) {
_this.props.onChangePage(event, Math.max(0, Math.ceil(_this.props.count / _this.props.rowsPerPage) - 1));
};
return _this;
}
(0, _createClass2.default)(TablePaginationActions, [{
key: "render",
value: function render() {
var _this$props = this.props,
classes = _this$props.classes,
count = _this$props.count,
page = _this$props.page,
rowsPerPage = _this$props.rowsPerPage,
theme = _this$props.theme;
return _react.default.createElement("div", {
className: classes.root
}, _react.default.createElement(_IconButton.default, {
onClick: this.handleFirstPageButtonClick,
disabled: page === 0,
"aria-label": "First Page"
}, theme.direction === 'rtl' ? _react.default.createElement(_LastPage.default, null) : _react.default.createElement(_FirstPage.default, null)), _react.default.createElement(_IconButton.default, {
onClick: this.handleBackButtonClick,
disabled: page === 0,
"aria-label": "Previous Page"
}, theme.direction === 'rtl' ? _react.default.createElement(_KeyboardArrowRight.default, null) : _react.default.createElement(_KeyboardArrowLeft.default, null)), _react.default.createElement(_IconButton.default, {
onClick: this.handleNextButtonClick,
disabled: page >= Math.ceil(count / rowsPerPage) - 1,
"aria-label": "Next Page"
}, theme.direction === 'rtl' ? _react.default.createElement(_KeyboardArrowLeft.default, null) : _react.default.createElement(_KeyboardArrowRight.default, null)), _react.default.createElement(_IconButton.default, {
onClick: this.handleLastPageButtonClick,
disabled: page >= Math.ceil(count / rowsPerPage) - 1,
"aria-label": "Last Page"
}, theme.direction === 'rtl' ? _react.default.createElement(_FirstPage.default, null) : _react.default.createElement(_LastPage.default, null)));
}
}]);
return TablePaginationActions;
}(_react.default.Component);
TablePaginationActions.propTypes = {
classes: _propTypes.default.object.isRequired,
count: _propTypes.default.number.isRequired,
onChangePage: _propTypes.default.func.isRequired,
page: _propTypes.default.number.isRequired,
rowsPerPage: _propTypes.default.number.isRequired,
theme: _propTypes.default.object.isRequired
};
var TablePaginationActionsWrapped = (0, _withStyles.default)(actionsStyles, {
withTheme: true
})(TablePaginationActions);
var style = function style(theme) {
return {
root: {
width: '100%'
}
};
};
var Pagination =
/*#__PURE__*/
function (_React$Component2) {
(0, _inherits2.default)(Pagination, _React$Component2);
function Pagination(props) {
var _this2;
(0, _classCallCheck2.default)(this, Pagination);
_this2 = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf3.default)(Pagination).call(this, props));
_this2.state = {};
return _this2;
}
(0, _createClass2.default)(Pagination, [{
key: "render",
value: function render() {
var _this$props2 = this.props,
count = _this$props2.count,
rowsPerPage = _this$props2.rowsPerPage,
threshold = _this$props2.threshold,
classes = _this$props2.classes;
var pageLength = Math.ceil(count / rowsPerPage);
var C = pageLength > (threshold || 5) ? TablePaginationActionsWrapped : null;
var customProps = {};
if (C) {
customProps.ActionsComponent = C;
}
return _react.default.createElement(_TablePagination.default, (0, _extends2.default)({
classes: {
root: classes.root
}
}, customProps, this.props));
}
}]);
return Pagination;
}(_react.default.Component);
var _default = (0, _withStyles.default)(style)(Pagination);
exports.default = _default;