@carbon/react
Version:
React components for the Carbon Design System
70 lines (64 loc) • 2.21 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 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.createElement(SelectItem.default, {
key: counter,
value: counter,
text: String(counter)
}));
}
return pages;
};
return /*#__PURE__*/React.createElement(Select.default, _rollupPluginBabelHelpers.extends({
className: cx(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.string,
/** The current page. */
currentPage: PropTypes.number.isRequired,
/** The unique ID of this component instance. */
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
/** Translatable string to label the page selector element. */
labelText: PropTypes.string,
/**
* Total number of pages.
* This value is calculated using a valid `totalItems` prop passed to the parent `Unstable_Pagination`.
*/
totalPages: PropTypes.number.isRequired
};
exports.default = PageSelector;