UNPKG

@talend/react-components

Version:
145 lines (142 loc) 3.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _react = require("react"); var _constants = require("./utils/constants"); var _dictionary = require("./utils/dictionary"); var _NoRows = _interopRequireDefault(require("./NoRows")); var _ListTable = _interopRequireDefault(require("./ListTable")); var _ListGrid = _interopRequireDefault(require("./ListGrid")); var _PropTypes = _interopRequireDefault(require("./PropTypes")); var _Loader = _interopRequireDefault(require("../Loader")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const { TABLE } = _constants.listTypes; /** * Select the ListGrid row renderer to use * @param type The row renderer type */ function getRowRenderer(type, renderers = {}) { const safeRenderer = { ..._dictionary.rowDictionary, ...renderers }; const rowRenderer = safeRenderer[type]; if (!rowRenderer) { const rowRendererTypes = [TABLE].concat(Object.keys(safeRenderer)); throw new Error(`Unknown row renderer in Virtualized List : ${type}. ` + `Possible values are [${rowRendererTypes}].`); } return rowRenderer; } /** * Component that maps list types to the corresponding component */ class RendererSelector extends _react.Component { constructor(props) { super(props); this.noRowsRenderer = this.noRowsRenderer.bind(this); } noRowsRenderer() { if (this.props.inProgress) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Loader.default, { className: "tc-virtualizedlist-no-result" }); } const NoRowsRenderer = this.props.noRowsRenderer; return /*#__PURE__*/(0, _jsxRuntime.jsx)(NoRowsRenderer, {}); } render() { const { children, height, id, isSelected, isActive, getRowState, onRowClick, onRowDoubleClick, onScroll, rowHeight, sort, sortBy, sortDirection, type, width, disableHeader, inProgress, rowRenderers, rowCount, onRowsRendered, registerChild, scrollToIndex, scrollToAlignment, headerAction, headerHeight } = this.props; const collection = inProgress ? [] : this.props.collection; const commonProps = { children, collection, height, id, isActive, getRowState, isSelected, noRowsRenderer: this.noRowsRenderer, onRowClick, onRowDoubleClick, onScroll, rowCount, rowHeight, width, onRowsRendered, registerChild, scrollToIndex, scrollToAlignment }; let ListRenderer; let customProps; if (type === TABLE) { ListRenderer = _ListTable.default; customProps = { disableHeader, sort, sortBy, sortDirection, headerAction, headerHeight }; } else { ListRenderer = _ListGrid.default; const rowRenderer = getRowRenderer(type, rowRenderers); const options = rowRenderer.options || {}; customProps = { rowRenderer, ...options }; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(ListRenderer, { ...commonProps, ...customProps }); } } RendererSelector.displayName = 'VirtualizedList(RendererSelector)'; RendererSelector.propTypes = { ..._PropTypes.default, height: _propTypes.default.number, width: _propTypes.default.number, rowRenderers: _propTypes.default.object }; RendererSelector.defaultProps = { noRowsRenderer: _NoRows.default, // eslint-disable-line react/default-props-match-prop-types type: TABLE // eslint-disable-line react/default-props-match-prop-types }; var _default = exports.default = RendererSelector; //# sourceMappingURL=RendererSelector.component.js.map