UNPKG

@carbon/react

Version:

React components for the Carbon Design System

117 lines (109 loc) 4.69 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 PropTypes = require('prop-types'); var React = require('react'); var cx = require('classnames'); var usePrefix = require('../../internal/usePrefix.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx); var _span, _span2; const DataTableSkeleton = ({ headers, rowCount = 5, columnCount = 5, zebra = false, compact = false, className, showHeader = true, showToolbar = true, ...rest }) => { const prefix = usePrefix.usePrefix(); const dataTableSkeletonClasses = cx__default["default"](className, { [`${prefix}--skeleton`]: true, [`${prefix}--data-table`]: true, [`${prefix}--data-table--zebra`]: zebra, [`${prefix}--data-table--compact`]: compact }); 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__*/React__default["default"].createElement("tr", { key: i }, columnsArray.map(j => /*#__PURE__*/React__default["default"].createElement("td", { key: j }, _span || (_span = /*#__PURE__*/React__default["default"].createElement("span", null))))); } return /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--skeleton ${prefix}--data-table-container` }, showHeader ? /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--data-table-header` }, /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--data-table-header__title` }), /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--data-table-header__description` })) : null, showToolbar ? /*#__PURE__*/React__default["default"].createElement("section", { "aria-label": "data table toolbar", className: `${prefix}--table-toolbar` }, /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--toolbar-content` }, /*#__PURE__*/React__default["default"].createElement("span", { className: `${prefix}--skeleton ${prefix}--btn ${prefix}--btn--sm` }))) : null, /*#__PURE__*/React__default["default"].createElement("table", _rollupPluginBabelHelpers["extends"]({ className: dataTableSkeletonClasses }, rest), /*#__PURE__*/React__default["default"].createElement("thead", null, /*#__PURE__*/React__default["default"].createElement("tr", null, columnsArray.map(i => /*#__PURE__*/React__default["default"].createElement("th", { key: i }, headers ? /*#__PURE__*/React__default["default"].createElement("div", { className: "cds--table-header-label" }, headers[i]?.header) : _span2 || (_span2 = /*#__PURE__*/React__default["default"].createElement("span", null)))))), /*#__PURE__*/React__default["default"].createElement("tbody", null, rows))); }; DataTableSkeleton.propTypes = { /** * Specify an optional className to add. */ className: PropTypes__default["default"].string, /** * Specify the number of columns that you want to render in the skeleton state */ columnCount: PropTypes__default["default"].number, /** * Optionally specify whether you want the Skeleton to be rendered as a * compact DataTable */ compact: PropTypes__default["default"].bool, /** * Optionally specify the displayed headers */ headers: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({ header: PropTypes__default["default"].node.isRequired }).isRequired), /** * Specify the number of rows that you want to render in the skeleton state */ rowCount: PropTypes__default["default"].number, /** * Specify if the table header should be rendered as part of the skeleton. */ showHeader: PropTypes__default["default"].bool, /** * Specify if the table toolbar should be rendered as part of the skeleton. */ showToolbar: PropTypes__default["default"].bool, /** * Optionally specify whether you want the DataTable to be zebra striped */ zebra: PropTypes__default["default"].bool }; exports["default"] = DataTableSkeleton;