UNPKG

@carbon/react

Version:

React components for the Carbon Design System

76 lines (68 loc) 2.74 kB
/** * 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. */ 'use strict'; 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;