UNPKG

@talend/react-components

Version:
149 lines (146 loc) 4.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _reactVirtualized = require("react-virtualized"); var _constants = require("./utils/constants"); var _Loader = _interopRequireDefault(require("../Loader")); var _RendererSelector = _interopRequireDefault(require("./RendererSelector.component")); var _PropTypes = _interopRequireDefault(require("./PropTypes")); var _tablerow = require("./utils/tablerow"); var _resizable = require("./utils/resizable"); var _VirtualizedListModule = _interopRequireDefault(require("./VirtualizedList.module.scss")); var _ListTableModule = _interopRequireDefault(require("./ListTable/ListTable.module.scss")); var _virtualizedListContext = require("./virtualizedListContext"); var _lodash = require("lodash"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const { LARGE } = _constants.listTypes; /** * Composable List based on react-virtualized */ function VirtualizedList(props) { const { children, collection, defaultHeight, disableHeader, noRowsRenderer, id, isActive, isSelected, getRowState, inProgress, isToggleAllDisabled, onRowClick, onRowDoubleClick, onRowsRendered, onScroll, onToggleAll, registerChild, rowHeight, rowRenderers, scrollToIndex, scrollToAlignment, selectionToggle, selectionMode, sort, sortBy, sortDirection, rowCount, type, widthsOfColumns, setWidthsOfColumns, headerAction, headerHeight, disableHeight = false } = props; const columnDefinitionsWithSelection = (0, _tablerow.insertSelectionConfiguration)({ children, collection, isSelected, isToggleAllDisabled, onToggleAll, selectionToggle, getRowState, selectionMode }); const [widthsOfColumnsState, setWidthsOfColumnsState] = (0, _react.useState)(); const rendererSelectorRef = (0, _react.useRef)(); const setWidths = setWidthsOfColumns || setWidthsOfColumnsState; const columnsWidths = widthsOfColumns || widthsOfColumnsState; // Settings the data for resizable columns only at mount. (0, _react.useEffect)(() => { setWidths((0, _resizable.extractResizableProps)(_react.Children.toArray(children))); }, []); const resizeColumn = (dataKey, deltaX) => { const listWidth = (0, _lodash.get)(rendererSelectorRef, 'current.props.width', 0); setWidths((0, _resizable.resizeColumns)(deltaX, columnsWidths, listWidth, dataKey)); }; const columnDefinitions = (0, _tablerow.toColumns)({ id, theme: _ListTableModule.default, children: columnDefinitionsWithSelection, columnsWidths, getRowState }); if (type === LARGE && inProgress) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Loader.default, { id: id && `${id}-loader`, className: _VirtualizedListModule.default['tc-list-progress'] }); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_virtualizedListContext.virtualizedListContext.Provider, { value: { resizeColumn }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactVirtualized.AutoSizer, { disableHeight: disableHeight, children: ({ height, width }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_RendererSelector.default, { ref: rendererSelectorRef, collection: collection, noRowsRenderer: noRowsRenderer, height: height || defaultHeight, id: id, isActive: isActive, isSelected: isSelected, getRowState: getRowState, onRowClick: onRowClick, onRowDoubleClick: onRowDoubleClick, onScroll: onScroll, rowHeight: rowHeight, sort: sort, sortBy: sortBy, sortDirection: sortDirection, type: type, width: width, disableHeader: disableHeader, inProgress: inProgress, rowRenderers: rowRenderers, rowCount: rowCount, onRowsRendered: onRowsRendered, registerChild: registerChild, scrollToIndex: scrollToIndex, scrollToAlignment: scrollToAlignment, headerAction: headerAction, headerHeight: headerHeight, children: columnDefinitions }) }) }); } VirtualizedList.displayName = 'VirtualizedList'; VirtualizedList.propTypes = _PropTypes.default; VirtualizedList.defaultProps = { defaultHeight: 250, selectionMode: _constants.SELECTION_MODE.MULTI }; var _default = exports.default = VirtualizedList; //# sourceMappingURL=VirtualizedList.component.js.map