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