UNPKG

@collectionspace/cspace-public-browser

Version:
181 lines (180 loc) 7.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactHelmet = _interopRequireDefault(require("react-helmet")); var _immutable = _interopRequireDefault(require("immutable")); var _FieldList = _interopRequireDefault(require("./FieldList")); var _DetailNavBar = _interopRequireDefault(require("./DetailNavBar")); var _ImageGalleryContainer = _interopRequireDefault(require("./ImageGalleryContainer")); var _InstitutionIndexContainer = _interopRequireDefault(require("./InstitutionIndexContainer")); var _InstitutionSectionContainer = _interopRequireDefault(require("./InstitutionSectionContainer")); var _ExhibitionSection = _interopRequireDefault(require("./ExhibitionSection")); var _config = _interopRequireDefault(require("../../config")); var _DetailPanel = _interopRequireDefault(require("../../../styles/cspace/DetailPanel.css")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const propTypes = { adjacents: _propTypes.default.shape({ prev: _propTypes.default.object, next: _propTypes.default.object }), data: _propTypes.default.shape({ 'collectionspace_core:refName': _propTypes.default.string, 'collectionspace_denorm:title': _propTypes.default.string, 'collectionspace_denorm:exhibition': _propTypes.default.array, 'collectionobjects_common:objectHistoryNote': _propTypes.default.string, 'collectionobjects_common:ownersContributionNote': _propTypes.default.string, 'collectionobjects_common:viewersContributionNote': _propTypes.default.string }), params: _propTypes.default.instanceOf(_immutable.default.Map).isRequired, readDetail: _propTypes.default.func }; const defaultProps = { adjacents: {}, data: undefined, readDetail: () => undefined }; class DetailPanel extends _react.Component { componentDidMount() { this.readDetail(); } componentDidUpdate(prevProps) { const { params } = this.props; const { params: prevParams } = prevProps; if (params.get('csid') !== prevParams.get('csid')) { this.readDetail(); } } readDetail() { const { readDetail } = this.props; readDetail(); } renderDescription() { const { data } = this.props; const descFormatter = _config.default.get('detailDescription'); const descriptionData = descFormatter && descFormatter(data); if (descriptionData) { const descriptions = Array.isArray(descriptionData) // eslint-disable-next-line react/no-array-index-key ? descriptionData.map((desc, idx) => /*#__PURE__*/_react.default.createElement("p", { key: idx }, desc)) : /*#__PURE__*/_react.default.createElement("p", null, descriptionData); return /*#__PURE__*/_react.default.createElement("div", { className: _DetailPanel.default.description }, descriptions); } return undefined; } renderFieldList() { const { data } = this.props; return /*#__PURE__*/_react.default.createElement(_FieldList.default, { config: _config.default.get('detailFields'), data: data }); } renderHeader() { const { adjacents, data, params } = this.props; const titleFormatter = _config.default.get('detailTitle'); const title = titleFormatter && titleFormatter(data); const subtitleFormatter = _config.default.get('detailSubtitle'); const subtitle = subtitleFormatter && subtitleFormatter(data); const { 'collectionspace_core:refName': refName } = data; return /*#__PURE__*/_react.default.createElement("header", null, /*#__PURE__*/_react.default.createElement(_DetailNavBar.default, { params: params, prev: adjacents.prev, next: adjacents.next }), title && /*#__PURE__*/_react.default.createElement("h1", null, title), subtitle && /*#__PURE__*/_react.default.createElement("h2", null, subtitle), /*#__PURE__*/_react.default.createElement(_InstitutionIndexContainer.default, { refName: refName })); } renderImageGallery() { const { data } = this.props; const referenceField = _config.default.get('referenceField'); const referenceValue = data[referenceField]; return /*#__PURE__*/_react.default.createElement(_ImageGalleryContainer.default, { referenceValue: referenceValue }); } renderPageTitle() { const { data } = this.props; const { 'collectionspace_denorm:title': title } = data; return /*#__PURE__*/_react.default.createElement(_reactHelmet.default, null, /*#__PURE__*/_react.default.createElement("title", null, title)); } renderInstitutions() { const { data, params } = this.props; const institutionsConfig = _config.default.get('institutions'); if (!institutionsConfig) { return null; } const selectedInstitutionId = params.get('#'); const referenceField = _config.default.get('referenceField'); const referenceValue = data[referenceField]; return /*#__PURE__*/_react.default.createElement(_InstitutionSectionContainer.default, { config: institutionsConfig, selectedInstitutionId: selectedInstitutionId, referenceValue: referenceValue }); } renderExhibition() { const { data } = this.props; const exhibition = data['collectionspace_denorm:exhibition']; if (exhibition && exhibition.length > 0) { const historyNote = data['collectionobjects_common:objectHistoryNote']; const ownerConrtibutionNote = data['collectionobjects_common:ownersContributionNote']; const viewerContributionNote = data['collectionobjects_common:viewersContributionNote']; return /*#__PURE__*/_react.default.createElement(_ExhibitionSection.default, { exhibition: exhibition[0], historyNote: historyNote, ownerConrtibutionNote: ownerConrtibutionNote, viewerContributionNote: viewerContributionNote }); } return null; } render() { const { data } = this.props; if (!data) { return null; } return /*#__PURE__*/_react.default.createElement("div", { className: _DetailPanel.default.common }, this.renderPageTitle(), this.renderHeader(), this.renderDescription(), this.renderImageGallery(), this.renderFieldList(), this.renderInstitutions(), this.renderExhibition()); } } exports.default = DetailPanel; DetailPanel.propTypes = propTypes; DetailPanel.defaultProps = defaultProps;