@carbon/react
Version:
React components for the Carbon Design System
76 lines (68 loc) • 2.74 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
var React = require('react');
var PropTypes = require('prop-types');
var cx = require('classnames');
var useId = require('../../../internal/useId.js');
var Select = require('../../Select/Select.js');
require('../../Select/Select.Skeleton.js');
var SelectItem = require('../../SelectItem/SelectItem.js');
var usePrefix = require('../../../internal/usePrefix.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
function PageSelector({
className = null,
currentPage,
id = 1,
labelText = 'Current page number',
totalPages,
...other
}) {
const prefix = usePrefix.usePrefix();
const namespace = `${prefix}--unstable-pagination__page-selector`;
const instanceId = `${namespace}__select-${useId.useId()}`;
const renderPages = total => {
const pages = [];
for (let counter = 1; counter <= total; counter += 1) {
pages.push(/*#__PURE__*/React__default["default"].createElement(SelectItem["default"], {
key: counter,
value: counter,
text: String(counter)
}));
}
return pages;
};
return /*#__PURE__*/React__default["default"].createElement(Select["default"], _rollupPluginBabelHelpers["extends"]({
className: cx__default["default"](namespace, className),
hideLabel: true,
id: instanceId || id,
inline: true,
labelText: labelText,
value: currentPage
}, other), renderPages(totalPages));
}
PageSelector.propTypes = {
/** Extra class names to add. */
className: PropTypes__default["default"].string,
/** The current page. */
currentPage: PropTypes__default["default"].number.isRequired,
/** The unique ID of this component instance. */
id: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
/** Translatable string to label the page selector element. */
labelText: PropTypes__default["default"].string,
/**
* Total number of pages.
* This value is calculated using a valid `totalItems` prop passed to the parent `Unstable_Pagination`.
*/
totalPages: PropTypes__default["default"].number.isRequired
};
exports["default"] = PageSelector;