@material-ui/lab
Version:
Material-UI Lab - Incubator for Material-UI React components.
235 lines (195 loc) • 7.16 kB
JavaScript
"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.styles = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var React = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _clsx = _interopRequireDefault(require("clsx"));
var _styles = require("@material-ui/core/styles");
var _usePagination2 = _interopRequireDefault(require("./usePagination"));
var _PaginationItem = _interopRequireDefault(require("../PaginationItem"));
var styles = {
/* Styles applied to the root element. */
root: {},
/* Styles applied to the ul element. */
ul: {
display: 'flex',
flexWrap: 'wrap',
alignItems: 'center',
padding: 0,
margin: 0,
listStyle: 'none'
}
};
exports.styles = styles;
function defaultGetAriaLabel(type, page, selected) {
if (type === 'page') {
return "".concat(selected ? '' : 'Go to ', "page ").concat(page);
}
return "Go to ".concat(type, " page");
}
var Pagination = /*#__PURE__*/React.forwardRef(function Pagination(props, ref) {
var boundaryCount = props.boundaryCount,
classes = props.classes,
className = props.className,
_props$color = props.color,
color = _props$color === void 0 ? 'standard' : _props$color,
count = props.count,
defaultPage = props.defaultPage,
disabled = props.disabled,
_props$getItemAriaLab = props.getItemAriaLabel,
getItemAriaLabel = _props$getItemAriaLab === void 0 ? defaultGetAriaLabel : _props$getItemAriaLab,
hideNextButton = props.hideNextButton,
hidePrevButton = props.hidePrevButton,
onChange = props.onChange,
page = props.page,
_props$renderItem = props.renderItem,
renderItem = _props$renderItem === void 0 ? function (item) {
return /*#__PURE__*/React.createElement(_PaginationItem.default, item);
} : _props$renderItem,
_props$shape = props.shape,
shape = _props$shape === void 0 ? 'round' : _props$shape,
showFirstButton = props.showFirstButton,
showLastButton = props.showLastButton,
siblingCount = props.siblingCount,
_props$size = props.size,
size = _props$size === void 0 ? 'medium' : _props$size,
_props$variant = props.variant,
variant = _props$variant === void 0 ? 'text' : _props$variant,
other = (0, _objectWithoutProperties2.default)(props, ["boundaryCount", "classes", "className", "color", "count", "defaultPage", "disabled", "getItemAriaLabel", "hideNextButton", "hidePrevButton", "onChange", "page", "renderItem", "shape", "showFirstButton", "showLastButton", "siblingCount", "size", "variant"]);
var _usePagination = (0, _usePagination2.default)((0, _extends2.default)({}, props, {
componentName: 'Pagination'
})),
items = _usePagination.items;
return /*#__PURE__*/React.createElement("nav", (0, _extends2.default)({
"aria-label": "pagination navigation",
className: (0, _clsx.default)(classes.root, className),
ref: ref
}, other), /*#__PURE__*/React.createElement("ul", {
className: classes.ul
}, items.map(function (item, index) {
return /*#__PURE__*/React.createElement("li", {
key: index
}, renderItem((0, _extends2.default)({}, item, {
color: color,
'aria-label': getItemAriaLabel(item.type, item.page, item.selected),
shape: shape,
size: size,
variant: variant
})));
})));
}); // @default tags synced with default values from usePagination
process.env.NODE_ENV !== "production" ? Pagination.propTypes = {
// ----------------------------- Warning --------------------------------
// | These PropTypes are generated from the TypeScript type definitions |
// | To update them edit the d.ts file and run "yarn proptypes" |
// ----------------------------------------------------------------------
/**
* Number of always visible pages at the beginning and end.
* @default 1
*/
boundaryCount: _propTypes.default.number,
/**
* Override or extend the styles applied to the component.
* See [CSS API](#css) below for more details.
*/
classes: _propTypes.default.object,
/**
* @ignore
*/
className: _propTypes.default.string,
/**
* The active color.
*/
color: _propTypes.default.oneOf(['primary', 'secondary', 'standard']),
/**
* The total number of pages.
* @default 1
*/
count: _propTypes.default.number,
/**
* The page selected by default when the component is uncontrolled.
* @default 1
*/
defaultPage: _propTypes.default.number,
/**
* If `true`, the pagination component will be disabled.
* @default false
*/
disabled: _propTypes.default.bool,
/**
* Accepts a function which returns a string value that provides a user-friendly name for the current page.
*
* For localization purposes, you can use the provided [translations](/guides/localization/).
*
* @param {string} type The link or button type to format ('page' | 'first' | 'last' | 'next' | 'previous'). Defaults to 'page'.
* @param {number} page The page number to format.
* @param {bool} selected If true, the current page is selected.
* @returns {string}
*/
getItemAriaLabel: _propTypes.default.func,
/**
* If `true`, hide the next-page button.
* @default false
*/
hideNextButton: _propTypes.default.bool,
/**
* If `true`, hide the previous-page button.
* @default false
*/
hidePrevButton: _propTypes.default.bool,
/**
* Callback fired when the page is changed.
*
* @param {object} event The event source of the callback.
* @param {number} page The page selected.
*/
onChange: _propTypes.default.func,
/**
* The current page.
*/
page: _propTypes.default.number,
/**
* Render the item.
*
* @param {PaginationRenderItemParams} params The props to spread on a PaginationItem.
* @returns {ReactNode}
*/
renderItem: _propTypes.default.func,
/**
* The shape of the pagination items.
*/
shape: _propTypes.default.oneOf(['round', 'rounded']),
/**
* If `true`, show the first-page button.
* @default false
*/
showFirstButton: _propTypes.default.bool,
/**
* If `true`, show the last-page button.
* @default false
*/
showLastButton: _propTypes.default.bool,
/**
* Number of always visible pages before and after the current page.
* @default 1
*/
siblingCount: _propTypes.default.number,
/**
* The size of the pagination component.
*/
size: _propTypes.default.oneOf(['large', 'medium', 'small']),
/**
* The variant to use.
*/
variant: _propTypes.default.oneOf(['outlined', 'text'])
} : void 0;
var _default = (0, _styles.withStyles)(styles, {
name: 'MuiPagination'
})(Pagination);
exports.default = _default;