UNPKG

@talend/react-components

Version:
141 lines (139 loc) 4.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _reactVirtualized = require("react-virtualized"); var _RowSelection = _interopRequireDefault(require("../RowSelection")); var _ActionDropdown = require("../../Actions/ActionDropdown"); var _Skeleton = _interopRequireDefault(require("../../Skeleton")); var _rowclick = require("../event/rowclick"); var _theme = require("../../theme"); var _ListTableModule = _interopRequireDefault(require("./ListTable.module.scss")); var _RowThemes = _interopRequireDefault(require("./RowThemes")); var _lodash = require("lodash"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const css = (0, _theme.getTheme)(_ListTableModule.default); function SkeletonRow({ columns }) { return columns.map(column => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { ...column.props, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, { type: "text", size: "xlarge" }) }, column.key)); } function ListTableRowRenderer(props) { return (0, _lodash.isEmpty)(props.rowData) ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactVirtualized.defaultTableRowRenderer, { ...props, columns: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonRow, { ...props })] }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactVirtualized.defaultTableRowRenderer, { ...props }); } ListTableRowRenderer.propTypes = { rowData: _propTypes.default.object }; /** * List renderer that renders a react-virtualized Table */ function ListTable(props) { const { collection, id, isActive, isSelected, getRowState, onRowClick, onRowDoubleClick, rowCount, headerAction, headerHeight = 40, ...restProps } = props; let RowTableRenderer = ListTableRowRenderer; if (isActive || isSelected || getRowState) { RowTableRenderer = (0, _RowSelection.default)(RowTableRenderer, { isSelected, isActive, getRowState, getRowData: rowProps => rowProps.rowData }); } const onRowClickCallback = (0, _rowclick.decorateRowClick)(onRowClick); const onRowDoubleClickCallback = (0, _rowclick.decorateRowDoubleClick)(onRowDoubleClick); const headerRowRenderer = ({ className, columns, style }) => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: css('tc-list-headerRow', className), role: "row", style: style, children: columns }); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [headerAction && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: css('tc-list-table-right-action'), children: headerAction }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactVirtualized.Table, { className: css('tc-list-table', { 'right-action': !!headerAction }), gridClassName: `${_ListTableModule.default.grid} ${_ActionDropdown.DROPDOWN_CONTAINER_CN}`, headerHeight: headerHeight, id: id, onRowClick: onRowClickCallback, onRowDoubleClick: onRowDoubleClickCallback, rowClassName: ({ index }) => { var _collection$index; return css('tc-list-item', _RowThemes.default, { [(_collection$index = collection[index]) === null || _collection$index === void 0 ? void 0 : _collection$index.className]: collection[index] }); }, rowCount: rowCount || collection.length, rowGetter: ({ index }) => collection[index] || {}, rowRenderer: RowTableRenderer, headerRowRenderer: headerRowRenderer, ...restProps })] }); } ListTable.displayName = 'VirtualizedList(ListTable)'; ListTable.propTypes = { children: _propTypes.default.arrayOf(_propTypes.default.element), collection: _propTypes.default.arrayOf(_propTypes.default.object), disableHeader: _propTypes.default.bool, height: _propTypes.default.number, id: _propTypes.default.string, isActive: _propTypes.default.func, isSelected: _propTypes.default.func, getRowState: _propTypes.default.func, noRowsRenderer: _propTypes.default.func, onRowClick: _propTypes.default.func, onRowDoubleClick: _propTypes.default.func, rowHeight: _propTypes.default.number, sort: _propTypes.default.func, sortBy: _propTypes.default.string, sortDirection: _propTypes.default.string, width: _propTypes.default.number, rowCount: _propTypes.default.number, headerAction: _propTypes.default.element, headerHeight: _propTypes.default.number }; ListTable.defaultProps = { disableHeader: false, rowHeight: 50 }; var _default = exports.default = ListTable; //# sourceMappingURL=ListTable.component.js.map