function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /** * * Table * */ import React from 'react'; import PropTypes from 'prop-types'; import { LoadingIndicator, Table as StyledTable, TableRowEmpty } from '@buffetjs/styles'; import TableHeader from '../TableHeader'; import TableRow from '../TableRow'; import ActionCollapse from './ActionCollapse'; function Table(_ref) { var bulkActionProps = _ref.bulkActionProps, className = _ref.className, customRow = _ref.customRow, headers = _ref.headers, isLoading = _ref.isLoading, onChangeSort = _ref.onChangeSort, onClickRow = _ref.onClickRow, _onSelect = _ref.onSelect, onSelectAll = _ref.onSelectAll, rows = _ref.rows, rowLinks = _ref.rowLinks, showActionCollapse = _ref.showActionCollapse, sortBy = _ref.sortBy, sortOrder = _ref.sortOrder, tableEmptyText = _ref.tableEmptyText, withBulkAction = _ref.withBulkAction; var colSpan = withBulkAction ? headers.length + 1 : headers.length; if (rowLinks.length > 0) { colSpan += 1; } var areAllEntriesSelected = rows.length > 0 && rows.some(function (row) { return row._isChecked === true; }); var shouldDisplayEmptyRow = rows.length === 0 && !isLoading; return /*#__PURE__*/React.createElement(StyledTable, { className: className }, /*#__PURE__*/React.createElement("table", { className: "" }, /*#__PURE__*/React.createElement(TableHeader, { headers: headers, onChangeSort: onChangeSort, onSelectAll: onSelectAll, rows: rows, shouldAddCell: rowLinks.length > 0, sortBy: sortBy, sortOrder: sortOrder, withBulkAction: withBulkAction }), /*#__PURE__*/React.createElement("tbody", null, withBulkAction && areAllEntriesSelected && showActionCollapse && /*#__PURE__*/React.createElement(ActionCollapse, _extends({ colSpan: colSpan, numberOfSelectedEntries: rows.filter(function (row) { return row._isChecked === true; }).length }, bulkActionProps)), isLoading && /*#__PURE__*/React.createElement(TableRowEmpty, { isLoading: true }, /*#__PURE__*/React.createElement("td", { colSpan: colSpan }, /*#__PURE__*/React.createElement(LoadingIndicator, null))), shouldDisplayEmptyRow && /*#__PURE__*/React.createElement(TableRowEmpty, null, /*#__PURE__*/React.createElement("td", { colSpan: colSpan }, tableEmptyText)), !shouldDisplayEmptyRow && rows.map(function (row, index) { var key = row.id || "key".concat(index); if (customRow) { var Row = customRow; return /*#__PURE__*/React.createElement(React.Fragment, { key: JSON.stringify(row) }, /*#__PURE__*/React.createElement(Row, { row: row, headers: headers, onSelect: _onSelect })); } return /*#__PURE__*/React.createElement(TableRow, { key: key, headers: headers, onClick: onClickRow, onSelect: function onSelect() { _onSelect(row, index); }, row: row, rowLinks: rowLinks, withBulkAction: withBulkAction }); })))); } Table.defaultProps = { bulkActionProps: { icon: 'trash', onConfirm: function onConfirm() {}, translatedNumberOfEntry: 'entry', translatedNumberOfEntries: 'entries', translatedAction: 'Delete all' }, className: null, customRow: null, headers: [], isLoading: false, onChangeSort: function onChangeSort() {}, onClickRow: function onClickRow() {}, onSelect: function onSelect() {}, onSelectAll: function onSelectAll() {}, rows: [], rowLinks: [], showActionCollapse: false, sortBy: null, sortOrder: 'asc', tableEmptyText: 'There is no data', withBulkAction: false }; Table.propTypes = { bulkActionProps: PropTypes.shape({ icon: PropTypes.string, onConfirm: PropTypes.func, translatedAction: PropTypes.string, translatedNumberOfEntries: PropTypes.string, translatedNumberOfEntry: PropTypes.string }), className: PropTypes.string, customRow: PropTypes.func, headers: PropTypes.arrayOf(PropTypes.shape({ isSortEnabled: PropTypes.bool, name: PropTypes.string, value: PropTypes.string })), isLoading: PropTypes.bool, onChangeSort: PropTypes.func, onClickRow: PropTypes.func, onSelect: PropTypes.func, onSelectAll: PropTypes.func, rowLinks: PropTypes.instanceOf(Array), rows: PropTypes.instanceOf(Array), showActionCollapse: PropTypes.bool, sortBy: PropTypes.string, sortOrder: PropTypes.string, tableEmptyText: PropTypes.string, withBulkAction: PropTypes.bool }; export default Table;