UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

105 lines (101 loc) 3.7 kB
/** * MSKCC 2021, 2024 */ import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js'; import PropTypes from 'prop-types'; import React__default from 'react'; import cx from 'classnames'; import { usePrefix } from '../../internal/usePrefix.js'; var _span, _span2; const DataTableSkeleton = _ref => { let { headers, rowCount, columnCount, zebra, compact, className, showHeader, showToolbar, ...rest } = _ref; const prefix = usePrefix(); const dataTableSkeletonClasses = cx(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.createElement("tr", { key: i }, columnsArray.map(j => /*#__PURE__*/React__default.createElement("td", { key: j }, _span || (_span = /*#__PURE__*/React__default.createElement("span", null))))); } return /*#__PURE__*/React__default.createElement("div", { className: `${prefix}--skeleton ${prefix}--data-table-container` }, showHeader ? /*#__PURE__*/React__default.createElement("div", { className: `${prefix}--data-table-header` }, /*#__PURE__*/React__default.createElement("div", { className: `${prefix}--data-table-header__title` }), /*#__PURE__*/React__default.createElement("div", { className: `${prefix}--data-table-header__description` })) : null, showToolbar ? /*#__PURE__*/React__default.createElement("section", { "aria-label": "data table toolbar", className: `${prefix}--table-toolbar` }, /*#__PURE__*/React__default.createElement("div", { className: `${prefix}--toolbar-content` }, /*#__PURE__*/React__default.createElement("span", { className: `${prefix}--skeleton ${prefix}--btn ${prefix}--btn--sm` }))) : null, /*#__PURE__*/React__default.createElement("table", _extends({ className: dataTableSkeletonClasses }, rest), /*#__PURE__*/React__default.createElement("thead", null, /*#__PURE__*/React__default.createElement("tr", null, columnsArray.map(i => /*#__PURE__*/React__default.createElement("th", { key: i }, headers ? /*#__PURE__*/React__default.createElement("div", { className: "bx--table-header-label" }, headers[i]?.header) : _span2 || (_span2 = /*#__PURE__*/React__default.createElement("span", null)))))), /*#__PURE__*/React__default.createElement("tbody", null, rows))); }; DataTableSkeleton.propTypes = { /** * Specify an optional className to add. */ className: PropTypes.string, /** * Specify the number of columns that you want to render in the skeleton state */ columnCount: PropTypes.number, /** * Optionally specify whether you want the Skeleton to be rendered as a * compact DataTable */ compact: PropTypes.bool, /** * Optionally specify the displayed headers */ headers: PropTypes.oneOfType([PropTypes.array, PropTypes.shape({ key: PropTypes.string })]), /** * Specify the number of rows that you want to render in the skeleton state */ rowCount: PropTypes.number, /** * Specify if the table header should be rendered as part of the skeleton. */ showHeader: PropTypes.bool, /** * Specify if the table toolbar should be rendered as part of the skeleton. */ showToolbar: PropTypes.bool, /** * Optionally specify whether you want the DataTable to be zebra striped */ zebra: PropTypes.bool }; export { DataTableSkeleton as default };