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