UNPKG

@carbon/react

Version:

React components for the Carbon Design System

86 lines (78 loc) 3.1 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 cx = require('classnames'); var PropTypes = require('prop-types'); var React = require('react'); var usePrefix = require('../../internal/usePrefix.js'); var useId = require('../../internal/useId.js'); var TableContext = require('./TableContext.js'); var index = require('../Heading/index.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx); var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); var React__default = /*#__PURE__*/_interopDefaultLegacy(React); const TableContainer = ({ className, children, title, description, stickyHeader, useStaticWidth, ...rest }) => { const baseId = useId.useId('tc'); const titleId = `${baseId}-title`; const descriptionId = `${baseId}-description`; const prefix = usePrefix.usePrefix(); const tableContainerClasses = cx__default["default"](className, `${prefix}--data-table-container`, { [`${prefix}--data-table--max-width`]: stickyHeader, [`${prefix}--data-table-container--static`]: useStaticWidth }); const value = React.useMemo(() => { return { titleId: title ? titleId : undefined, descriptionId: description ? descriptionId : undefined }; }, [title, description, titleId, descriptionId]); return /*#__PURE__*/React__default["default"].createElement(TableContext.TableContext.Provider, { value: value }, /*#__PURE__*/React__default["default"].createElement(index.Section, _rollupPluginBabelHelpers["extends"]({}, rest, { className: tableContainerClasses }), (title || description) && /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--data-table-header` }, title && /*#__PURE__*/React__default["default"].createElement(index.Heading, { className: `${prefix}--data-table-header__title`, id: titleId }, title), description && /*#__PURE__*/React__default["default"].createElement("p", { className: `${prefix}--data-table-header__description`, id: descriptionId }, description)), children)); }; TableContainer.propTypes = { children: PropTypes__default["default"].node, className: PropTypes__default["default"].string, /** * Optional description text for the Table */ description: PropTypes__default["default"].node, /** * Specify whether the table should have a sticky header */ stickyHeader: PropTypes__default["default"].bool, /** * Provide a title for the Table */ title: PropTypes__default["default"].node, /** * If true, will use a width of 'fit-content' to match the inner table width */ useStaticWidth: PropTypes__default["default"].bool }; exports["default"] = TableContainer;