UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

86 lines (82 loc) 5.21 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'); 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