UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

83 lines (75 loc) 2.88 kB
/** * MSKCC 2021, 2024 */ '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'); 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 = _ref => { let { className, children, title, description, stickyHeader, useStaticWidth, ...rest } = _ref; 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("div", _rollupPluginBabelHelpers["extends"]({}, rest, { className: tableContainerClasses }), title && /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--data-table-header` }, /*#__PURE__*/React__default["default"].createElement("h4", { className: `${prefix}--data-table-header__title`, id: titleId }, title), /*#__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;