UNPKG

@talend/react-components

Version:
90 lines (87 loc) 3.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _propTypes = _interopRequireDefault(require("prop-types")); var _designSystem = require("@talend/design-system"); var _context = require("../context"); var _VirtualizedList = _interopRequireDefault(require("../../../VirtualizedList")); var _constants = require("../constants"); var _ColumnChooser = _interopRequireDefault(require("../ColumnChooser")); var _ListModule = _interopRequireDefault(require("../List.module.scss")); var _lodash = require("lodash"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const columnsFromChildrens = children => { return Array.isArray(children) ? children.filter(column => { var _column$props; return !!((_column$props = column.props) !== null && _column$props !== void 0 && _column$props.dataKey); }).map(column => column.props) : null; }; function VList({ children, columnChooser, ...rest }) { const { displayMode = _constants.DISPLAY_MODE.TABLE, collection, visibleColumns, setSortParams, sortParams, setColumns, columns, setVisibleColumns } = (0, _context.useListContext)(); // initialize visible columns if (!!setVisibleColumns && !visibleColumns) { const foundColumns = columnsFromChildrens(children); setVisibleColumns((0, _lodash.map)(foundColumns, 'dataKey')); } (0, _react.useEffect)(() => { const nextColumns = columnsFromChildrens(children); if (nextColumns && !(0, _lodash.isEqual)((0, _lodash.map)(nextColumns, 'dataKey'), (0, _lodash.map)(columns, 'dataKey'))) { setColumns(nextColumns); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [children, setColumns]); const headerAction = !!columnChooser && displayMode === _constants.DISPLAY_MODE.TABLE && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColumnChooser.default, { ...columnChooser, buttonRenderer: _designSystem.ButtonIconFloating }); return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: _ListModule.default.vlist, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualizedList.default, { collection: collection, type: displayMode.toUpperCase(), sortBy: (0, _lodash.get)(sortParams, 'sortBy'), sortDirection: (0, _lodash.get)(sortParams, 'isDescending') ? _constants.SORT.DESC : _constants.SORT.ASC, sort: ({ sortBy, sortDirection }) => setSortParams({ sortBy, isDescending: sortDirection === _constants.SORT.DESC }), headerAction: headerAction, ...rest, children: visibleColumns && Array.isArray(children) ? children.filter(column => { var _column$props2; return visibleColumns.includes((_column$props2 = column.props) === null || _column$props2 === void 0 ? void 0 : _column$props2.dataKey); }) : children }) }); } VList.propTypes = { children: _propTypes.default.arrayOf(_propTypes.default.node), columnChooser: _propTypes.default.oneOfType([_propTypes.default.bool, ...Object.values(_ColumnChooser.default.propTypes)]) }; // we port the VirtualizedList columns to VList to allow VList.Title/Badge/... Object.entries(_VirtualizedList.default).forEach(([key, value]) => { VList[key] = value; }); VList.displayName = 'VList'; var _default = exports.default = VList; //# sourceMappingURL=VList.component.js.map