UNPKG

@talend/react-components

Version:
177 lines (174 loc) 6.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HiddenHeader = HiddenHeader; exports.ListToVirtualizedList = ListToVirtualizedList; exports.compareOrder = compareOrder; var _propTypes = _interopRequireDefault(require("prop-types")); var _VirtualizedList = _interopRequireDefault(require("../../VirtualizedList")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function adaptOnSort(onChange) { if (!onChange) { return null; } return function onSortChange({ sortBy, sortDirection }) { return onChange(null, { field: sortBy, isDescending: sortDirection === _VirtualizedList.default.SORT_BY.DESC }); }; } function HiddenHeader(props) { return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", { className: "sr-only", children: props.label }); } function compareOrder(a, b) { if (!Number.isInteger(a.order) && !Number.isInteger(b.order)) { return 0; } if (Number.isInteger(a.order) && !Number.isInteger(b.order)) { return -1; } if (!Number.isInteger(a.order) && Number.isInteger(b.order)) { return 1; } return a.order - b.order; } function ListToVirtualizedList(props) { const { itemProps, sort, titleProps } = props; if (titleProps) { if (!titleProps.actionsKey) { titleProps.actionsKey = 'actions'; } if (!titleProps.persistentActionsKey) { titleProps.persistentActionsKey = 'persistentActions'; } } // Backward compatibility: find array in object attr: const supposedActions = {}; if (props.items.length > 0) { const item = props.items[0]; Object.keys(item).filter(key => Array.isArray(item[key])).forEach(key => { supposedActions[key] = true; }); } // Allow to override or add new cell renderer from outside const listCellDictionary = { ..._VirtualizedList.default.cellDictionary, ...props.cellDictionary }; const listHeaderDictionary = { ..._VirtualizedList.default.headerDictionary, ...props.headerDictionary }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualizedList.default, { collection: props.items, defaultHeight: props.defaultHeight, id: props.id, inProgress: props.inProgress, isActive: itemProps && itemProps.isActive, isSelected: itemProps && itemProps.isSelected, noRowsRenderer: props.noRowsRenderer, onRowClick: itemProps && itemProps.onRowClick, onRowDoubleClick: titleProps && titleProps.onClick, onToggleAll: itemProps && itemProps.onToggleAll, rowHeight: props.rowHeight, rowRenderers: props.rowRenderers, selectionToggle: itemProps && itemProps.onToggle, sort: adaptOnSort(sort && sort.onChange), sortBy: sort && sort.field, sortDirection: sort && sort.isDescending ? _VirtualizedList.default.SORT_BY.DESC : _VirtualizedList.default.SORT_BY.ASC, type: props.displayMode.toUpperCase(), children: props.columns.filter(item => !item.hidden).sort(compareOrder).map((column, index) => { const cProps = { label: column.label, dataKey: column.key, disableSort: column.disableSort, width: -1, // valid propType but disable inline style ...column }; if (titleProps && column.key === titleProps.key) { _extends(cProps, listCellDictionary.title, { columnData: { ...titleProps, 'data-feature': column['data-feature'] } }); } else if (supposedActions[column.key]) { _extends(cProps, _VirtualizedList.default.cellDictionary.actions); } else if (column.type && listCellDictionary[column.type]) { _extends(cProps, listCellDictionary[column.type], { columnData: column.data }); } if (column.hideHeader) { cProps.disableSort = true; cProps.headerRenderer = HiddenHeader; } else if (column.header && listHeaderDictionary[column.header]) { let header = listHeaderDictionary[column.header]; if (typeof header === 'function') { header = { headerRenderer: header }; } _extends(cProps, header, { columnData: column.data }); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualizedList.default.Content, { ...cProps }, index); }) }); } ListToVirtualizedList.propTypes = { id: _propTypes.default.string, columns: _propTypes.default.arrayOf(_propTypes.default.object), displayMode: _propTypes.default.oneOf(['large', 'table']), defaultHeight: _propTypes.default.number, cellDictionary: _propTypes.default.object, headerDictionary: _propTypes.default.object, itemProps: _propTypes.default.shape({ isActive: _propTypes.default.func, isSelected: _propTypes.default.func, onRowClick: _propTypes.default.func, onToggle: _propTypes.default.func, onToggleAll: _propTypes.default.func }), items: _propTypes.default.arrayOf(_propTypes.default.object), inProgress: _propTypes.default.bool, noRowsRenderer: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]), rowHeight: _propTypes.default.number, sort: _propTypes.default.shape({ onChange: _propTypes.default.func, field: _propTypes.default.string, isDescending: _propTypes.default.bool }), titleProps: _propTypes.default.shape({ actionsKey: _propTypes.default.string, key: _propTypes.default.string, onClick: _propTypes.default.func, persistentActionsKey: _propTypes.default.string }), rowRenderers: _propTypes.default.object }; ListToVirtualizedList.defaultProps = { displayMode: 'table' }; HiddenHeader.propTypes = { label: _propTypes.default.string }; //# sourceMappingURL=ListToVirtualizedList.component.js.map