@coreui/react-pro
Version:
UI Components Library for React.js
89 lines (85 loc) • 5.65 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');
var CSmartTableBody = React.forwardRef(function (_a, ref) {
var clickableRows = _a.clickableRows, columnNames = _a.columnNames, columns = _a.columns, currentItems = _a.currentItems, firstItemOnActivePageIndex = _a.firstItemOnActivePageIndex, noItemsLabel = _a.noItemsLabel, onRowChecked = _a.onRowChecked, onRowClick = _a.onRowClick, scopedColumns = _a.scopedColumns, selectable = _a.selectable, selected = _a.selected, rest = tslib_es6.__rest(_a, ["clickableRows", "columnNames", "columns", "currentItems", "firstItemOnActivePageIndex", "noItemsLabel", "onRowChecked", "onRowClick", "scopedColumns", "selectable", "selected"]);
var colspan = selectable ? columns.length + 1 : columns.length;
var _columns = React.useMemo(function () { return utils.getColumns(columns); }, [columns]);
return (React.createElement(CTableBody.CTableBody, tslib_es6.__assign({}, (clickableRows && {
style: { cursor: 'pointer' },
}), rest, { ref: ref }), currentItems.length > 0 ? (currentItems.map(function (item, trIndex) {
return (React.createElement(React.Fragment, { key: trIndex },
React.createElement(CTableRow.CTableRow, tslib_es6.__assign({}, (item._props && tslib_es6.__assign({}, item._props)), (clickableRows && { tabIndex: 0 }), { onClick: function (event) {
return 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: function (event) {
var _item = tslib_es6.__assign({}, item);
for (var _i = 0, ITEM_INTERNAL_KEYS_1 = consts.ITEM_INTERNAL_KEYS; _i < ITEM_INTERNAL_KEYS_1.length; _i++) {
var key = ITEM_INTERNAL_KEYS_1[_i];
delete _item[key];
}
onRowChecked && onRowChecked(_item, event.target.checked);
} }))),
_columns.map(function (column, index) {
var colName = utils.getColumnName(column);
return ((scopedColumns &&
scopedColumns[colName] &&
React.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
key: index,
})) ||
(item[colName] !== undefined && (React.createElement(CTableDataCell.CTableDataCell, tslib_es6.__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".concat(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