UNPKG

@carbon/react

Version:

React components for the Carbon Design System

89 lines (87 loc) 3.53 kB
/** * Copyright IBM Corp. 2016, 2026 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ const require_runtime = require("../../_virtual/_rolldown/runtime.js"); const require_usePrefix = require("../../internal/usePrefix.js"); const require_useId = require("../../internal/useId.js"); const require_TableContext = require("./TableContext.js"); const require_index = require("../Heading/index.js"); let classnames = require("classnames"); classnames = require_runtime.__toESM(classnames); let react = require("react"); react = require_runtime.__toESM(react); let prop_types = require("prop-types"); prop_types = require_runtime.__toESM(prop_types); let react_jsx_runtime = require("react/jsx-runtime"); //#region src/components/DataTable/TableContainer.tsx /** * Copyright IBM Corp. 2016, 2025 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ const TableContainer = ({ aiEnabled, className, children, decorator, title, description, stickyHeader, useStaticWidth, ...rest }) => { const baseId = require_useId.useId("tc"); const titleId = `${baseId}-title`; const descriptionId = `${baseId}-description`; const prefix = require_usePrefix.usePrefix(); const tableContainerClasses = (0, classnames.default)(className, `${prefix}--data-table-container`, { [`${prefix}--data-table--max-width`]: stickyHeader, [`${prefix}--data-table-container--static`]: useStaticWidth, [`${prefix}--data-table-container--ai-enabled`]: aiEnabled }); const value = (0, react.useMemo)(() => { return { titleId: title ? titleId : void 0, descriptionId: description ? descriptionId : void 0 }; }, [ title, description, titleId, descriptionId ]); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_TableContext.TableContext.Provider, { value, children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_index.Section, { ...rest, className: tableContainerClasses, children: [(title || description || decorator) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { className: (0, classnames.default)(`${prefix}--data-table-header`, { [`${prefix}--data-table-header__with-decorator`]: decorator, [`${prefix}--data-table-header__with-decorator--standalone`]: decorator && !title && !description }), children: [(title || description) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { className: `${prefix}--data-table-header__content`, children: [title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.Heading, { className: `${prefix}--data-table-header__title`, id: titleId, children: title }), description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { className: `${prefix}--data-table-header__description`, id: descriptionId, children: description })] }), decorator && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: `${prefix}--data-table-header__decorator`, children: decorator })] }), children] }) }); }; TableContainer.propTypes = { aiEnabled: prop_types.default.bool, children: prop_types.default.node, className: prop_types.default.string, decorator: prop_types.default.node, description: prop_types.default.node, stickyHeader: prop_types.default.bool, title: prop_types.default.node, useStaticWidth: prop_types.default.bool }; //#endregion exports.default = TableContainer;