UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

89 lines (85 loc) 5.65 kB
'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