cspace-ui
Version:
CollectionSpace user interface for browsers
57 lines (55 loc) • 2.52 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = SearchDetailList;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _immutable = _interopRequireDefault(require("immutable"));
var _reactRedux = require("react-redux");
var _get = _interopRequireDefault(require("lodash/get"));
var _DetailItem = _interopRequireDefault(require("./DetailItem"));
var _searchResultHelpers = require("../searchResultHelpers");
var _reducers = require("../../../reducers");
var _searchNames = require("../../../constants/searchNames");
var _ConfigProvider = require("../../config/ConfigProvider");
var _SearchList = _interopRequireDefault(require("../../../../styles/cspace-ui/SearchList.css"));
var _searchHelpers = require("../../../helpers/searchHelpers");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const propTypes = {
searchDescriptor: _propTypes.default.instanceOf(_immutable.default.Map)
};
const getDetailConfig = (config, searchDescriptor) => {
const recordType = searchDescriptor.get('recordType');
const subresource = searchDescriptor.get('subresource');
const configurer = subresource ? config.subresources[subresource] : config.recordTypes[recordType];
return (0, _get.default)(configurer, ['detailList']);
};
function SearchDetailList({
searchDescriptor
}) {
const results = (0, _reactRedux.useSelector)(state => (0, _reducers.getSearchResult)(state, _searchNames.SEARCH_RESULT_PAGE_SEARCH_NAME, searchDescriptor));
const selectedItems = (0, _reactRedux.useSelector)(state => (0, _reducers.getSearchSelectedItems)(state, _searchNames.SEARCH_RESULT_PAGE_SEARCH_NAME));
const config = (0, _ConfigProvider.useConfig)();
const listType = (0, _searchHelpers.getListTypeFromResult)(config, results);
const {
items
} = (0, _searchResultHelpers.readListItems)(config, listType, results);
if (!items) {
return null;
}
// read headers
const detailConfig = getDetailConfig(config, searchDescriptor);
return /*#__PURE__*/_react.default.createElement("div", {
className: _SearchList.default.detail
}, items.map((item, index) => /*#__PURE__*/_react.default.createElement(_DetailItem.default, {
item: item,
key: item.get('csid'),
index: index,
detailConfig: detailConfig,
searchDescriptor: searchDescriptor,
listType: listType,
selectedItems: selectedItems
})));
}
SearchDetailList.propTypes = propTypes;