UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

75 lines (71 loc) 5.34 kB
'use strict'; var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js'); var React = require('react'); var PropTypes = require('prop-types'); var index = require('../../node_modules/classnames/index.js'); var CTableHead = require('./CTableHead.js'); var CTableHeaderCell = require('./CTableHeaderCell.js'); var CTableBody = require('./CTableBody.js'); var CTableDataCell = require('./CTableDataCell.js'); var CTableRow = require('./CTableRow.js'); var CTableFoot = require('./CTableFoot.js'); var CTableCaption = require('./CTableCaption.js'); var CTableResponsiveWrapper = require('./CTableResponsiveWrapper.js'); var props = require('../../props.js'); var utils = require('./utils.js'); var CTable = React.forwardRef(function (_a, ref) { var _b; var children = _a.children, align = _a.align, borderColor = _a.borderColor, bordered = _a.bordered, borderless = _a.borderless, caption = _a.caption, captionTop = _a.captionTop, className = _a.className, color = _a.color, columns = _a.columns, footer = _a.footer, hover = _a.hover, items = _a.items, responsive = _a.responsive, small = _a.small, striped = _a.striped, stripedColumns = _a.stripedColumns, tableFootProps = _a.tableFootProps, tableHeadProps = _a.tableHeadProps, rest = tslib_es6.__rest(_a, ["children", "align", "borderColor", "bordered", "borderless", "caption", "captionTop", "className", "color", "columns", "footer", "hover", "items", "responsive", "small", "striped", "stripedColumns", "tableFootProps", "tableHeadProps"]); var columnNames = React.useMemo(function () { return utils.getColumnNames(columns, items); }, [columns, items]); return (React.createElement(CTableResponsiveWrapper.CTableResponsiveWrapper, { responsive: responsive }, React.createElement("table", tslib_es6.__assign({ className: index.default('table', (_b = {}, _b["align-".concat(align)] = align, _b["border-".concat(borderColor)] = borderColor, _b["caption-top"] = captionTop || caption === 'top', _b['table-bordered'] = bordered, _b['table-borderless'] = borderless, _b["table-".concat(color)] = color, _b['table-hover'] = hover, _b['table-sm'] = small, _b['table-striped'] = striped, _b['table-striped-columns'] = stripedColumns, _b), className) }, rest, { ref: ref }), ((caption && caption !== 'top') || captionTop) && (React.createElement(CTableCaption.CTableCaption, null, caption || captionTop)), columns && (React.createElement(CTableHead.CTableHead, tslib_es6.__assign({}, tableHeadProps), React.createElement(CTableRow.CTableRow, null, columns.map(function (column, index) { return (React.createElement(CTableHeaderCell.CTableHeaderCell, tslib_es6.__assign({}, (column._props && tslib_es6.__assign({}, column._props)), (column._style && { style: tslib_es6.__assign({}, column._style) }), { key: index }), utils.getColumnLabel(column))); })))), items && (React.createElement(CTableBody.CTableBody, null, items.map(function (item, index) { return (React.createElement(CTableRow.CTableRow, tslib_es6.__assign({}, (item._props && tslib_es6.__assign({}, item._props)), { key: index }), columnNames && columnNames.map(function (colName, index) { // eslint-disable-next-line unicorn/no-negated-condition return item[colName] !== undefined ? (React.createElement(CTableDataCell.CTableDataCell, tslib_es6.__assign({}, (item._cellProps && tslib_es6.__assign(tslib_es6.__assign({}, (item._cellProps['all'] && tslib_es6.__assign({}, item._cellProps['all']))), (item._cellProps[colName] && tslib_es6.__assign({}, item._cellProps[colName])))), { key: index }), item[colName])) : null; }))); }))), children, footer && (React.createElement(CTableFoot.CTableFoot, tslib_es6.__assign({}, tableFootProps), React.createElement(CTableRow.CTableRow, null, footer.map(function (item, index) { return (React.createElement(CTableDataCell.CTableDataCell, tslib_es6.__assign({}, (typeof item === 'object' && item._props && tslib_es6.__assign({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); }))))))); }); CTable.propTypes = { align: PropTypes.oneOf(['bottom', 'middle', 'top']), borderColor: PropTypes.string, bordered: PropTypes.bool, borderless: PropTypes.bool, caption: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf(['top'])]), captionTop: PropTypes.string, children: PropTypes.node, className: PropTypes.string, color: props.colorPropType, columns: PropTypes.array, footer: PropTypes.array, hover: PropTypes.bool, items: PropTypes.array, responsive: PropTypes.oneOfType([ PropTypes.bool, PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']), ]), small: PropTypes.bool, striped: PropTypes.bool, stripedColumns: PropTypes.bool, tableFootProps: PropTypes.shape(tslib_es6.__assign({}, CTableFoot.CTableFoot.propTypes)), tableHeadProps: PropTypes.shape(tslib_es6.__assign({}, CTableHead.CTableHead.propTypes)), }; CTable.displayName = 'CTable'; exports.CTable = CTable; //# sourceMappingURL=CTable.js.map