@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
123 lines (115 loc) • 4.7 kB
JavaScript
/**
* MSKCC 2021, 2024
*/
;
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 = _ref => {
let {
headers,
rowCount,
columnCount,
zebra,
compact,
className,
showHeader,
showToolbar,
...rest
} = _ref;
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: "bx--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"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].shape({
key: PropTypes__default["default"].string
})]),
/**
* 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
};
DataTableSkeleton.defaultProps = {
rowCount: 5,
columnCount: 5,
zebra: false,
compact: false,
showHeader: true,
showToolbar: true
};
exports["default"] = DataTableSkeleton;