UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

235 lines (195 loc) 7.16 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.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;