@talend/react-components
Version:
Set of react components.
145 lines (142 loc) • 3.93 kB
JavaScript
;
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