@coreui/react-pro
Version:
UI Components Library for React.js
86 lines (82 loc) • 5.21 kB
JavaScript
'use strict';
var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
var React = require('react');
var PropTypes = require('prop-types');
var CTableBody = require('../table/CTableBody.js');
require('../form/CForm.js');
var CFormCheck = require('../form/CFormCheck.js');
require('../form/CFormControlValidation.js');
require('../form/CFormControlWrapper.js');
require('../form/CFormFeedback.js');
require('../form/CFormFloating.js');
require('../form/CFormInput.js');
require('../form/CFormLabel.js');
require('../form/CFormRange.js');
require('../form/CFormSelect.js');
require('../form/CFormSwitch.js');
require('../form/CFormText.js');
require('../form/CFormTextarea.js');
require('../form/CInputGroup.js');
require('../form/CInputGroupText.js');
require('../table/CTable.js');
require('../table/CTableCaption.js');
var CTableDataCell = require('../table/CTableDataCell.js');
require('../table/CTableFoot.js');
require('../table/CTableHead.js');
require('../table/CTableHeaderCell.js');
var CTableRow = require('../table/CTableRow.js');
var isObjectInArray = require('../../utils/isObjectInArray.js');
var consts = require('./consts.js');
var utils = require('./utils.js');
const CSmartTableBody = React.forwardRef((_a, ref) => {
var { clickableRows, columnNames, columns, currentItems, firstItemOnActivePageIndex, noItemsLabel, onRowChecked, onRowClick, scopedColumns, selectable, selected } = _a, rest = tslib_es6.__rest(_a, ["clickableRows", "columnNames", "columns", "currentItems", "firstItemOnActivePageIndex", "noItemsLabel", "onRowChecked", "onRowClick", "scopedColumns", "selectable", "selected"]);
const colspan = selectable ? columns.length + 1 : columns.length;
const _columns = React.useMemo(() => utils.getColumns(columns), [columns]);
return (React.createElement(CTableBody.CTableBody, Object.assign({}, (clickableRows && {
style: { cursor: 'pointer' },
}), rest, { ref: ref }), currentItems.length > 0 ? (currentItems.map((item, trIndex) => {
return (React.createElement(React.Fragment, { key: trIndex },
React.createElement(CTableRow.CTableRow, Object.assign({}, (item._props && Object.assign({}, item._props)), (clickableRows && { tabIndex: 0 }), { onClick: (event) => onRowClick &&
onRowClick(item, trIndex + firstItemOnActivePageIndex, utils.getClickedColumnName(event.target, columnNames, selectable), event) }),
selectable && (React.createElement(CTableDataCell.CTableDataCell, null,
React.createElement(CFormCheck.CFormCheck, { checked: selected &&
isObjectInArray.default(selected, item, consts.ITEM_INTERNAL_KEYS), disabled: item._selectable === false, onChange: (event) => {
const _item = Object.assign({}, item);
for (const key of consts.ITEM_INTERNAL_KEYS) {
delete _item[key];
}
onRowChecked && onRowChecked(_item, event.target.checked);
} }))),
_columns.map((column, index) => {
const colName = utils.getColumnName(column);
return ((scopedColumns &&
scopedColumns[colName] &&
React.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
key: index,
})) ||
(item[colName] !== undefined && (React.createElement(CTableDataCell.CTableDataCell, Object.assign({}, utils.getTableDataCellProps(column, item, colName), { style: utils.getTableDataCellStyles(column, item, colName), key: index }), item[colName]))));
})),
scopedColumns && scopedColumns.details && (React.createElement(React.Fragment, null,
React.createElement(CTableRow.CTableRow, null,
React.createElement(CTableDataCell.CTableDataCell, { colSpan: colspan, className: "p-0", style: { borderBottomWidth: 0 }, tabIndex: -1 })),
React.createElement(CTableRow.CTableRow, { className: "p-0", key: `details${trIndex}` },
React.createElement(CTableDataCell.CTableDataCell, { colSpan: colspan, className: "p-0", style: { border: 0 } }, scopedColumns.details(item, trIndex + firstItemOnActivePageIndex)))))));
})) : (React.createElement(CTableRow.CTableRow, null,
React.createElement(CTableDataCell.CTableDataCell, { colSpan: colspan }, noItemsLabel)))));
});
CSmartTableBody.propTypes = {
clickableRows: PropTypes.bool,
columns: PropTypes.array.isRequired,
currentItems: PropTypes.array.isRequired,
firstItemOnActivePageIndex: PropTypes.number.isRequired,
noItemsLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
onRowChecked: PropTypes.func,
onRowClick: PropTypes.func,
columnNames: PropTypes.array.isRequired,
scopedColumns: PropTypes.object,
selectable: PropTypes.bool,
selected: PropTypes.array,
};
CSmartTableBody.displayName = 'CSmartTableBody';
exports.CSmartTableBody = CSmartTableBody;
//# sourceMappingURL=CSmartTableBody.js.map