UNPKG

@carbon/react

Version:

React components for the Carbon Design System

80 lines (78 loc) 3.8 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"); 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/DataTableSkeleton/DataTableSkeleton.tsx /** * 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 DataTableSkeleton = ({ headers, rowCount = 5, columnCount = 5, zebra = false, className, showHeader = true, showToolbar = true, size = "lg", ...rest }) => { const prefix = require_usePrefix.usePrefix(); const dataTableSkeletonClasses = (0, classnames.default)(className, { [`${prefix}--skeleton`]: true, [`${prefix}--data-table`]: true, [`${prefix}--data-table--${size}`]: size, [`${prefix}--data-table--zebra`]: zebra }); const rowRepeat = rowCount; const rows = Array(rowRepeat); const columnsArray = Array.from({ length: columnCount }, (_, index) => index); for (let i = 0; i < rowRepeat; i++) rows[i] = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", { children: columnsArray.map((j) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {}) }, j)) }, i); return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { className: `${prefix}--skeleton ${prefix}--data-table-container`, children: [ showHeader ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { className: `${prefix}--data-table-header`, children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: `${prefix}--data-table-header__title` }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: `${prefix}--data-table-header__description` })] }) : null, showToolbar ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("section", { "aria-label": "data table toolbar", className: `${prefix}--table-toolbar`, children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: `${prefix}--toolbar-content`, children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: `${prefix}--skeleton ${prefix}--btn ${prefix}--btn--sm` }) }) }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", { className: dataTableSkeletonClasses, ...rest, children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", { children: columnsArray.map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", { children: headers ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: `${prefix}--table-header-label`, children: headers[i]?.header }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {}) }, i)) }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: rows })] }) ] }); }; DataTableSkeleton.propTypes = { className: prop_types.default.string, columnCount: prop_types.default.number, headers: prop_types.default.arrayOf(prop_types.default.shape({ header: prop_types.default.node.isRequired }).isRequired), rowCount: prop_types.default.number, showHeader: prop_types.default.bool, showToolbar: prop_types.default.bool, size: prop_types.default.oneOf([ "xs", "sm", "md", "lg", "xl" ]), zebra: prop_types.default.bool }; //#endregion exports.default = DataTableSkeleton;