UNPKG

cspace-ui

Version:
152 lines (127 loc) 4.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = RecordSidebar; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _get = _interopRequireDefault(require("lodash/get")); var _upperFirst = _interopRequireDefault(require("lodash/upperFirst")); var _MediaSnapshotPanelContainer = _interopRequireDefault(require("../../containers/record/MediaSnapshotPanelContainer")); var _RelatedRecordPanelContainer = _interopRequireDefault(require("../../containers/record/RelatedRecordPanelContainer")); var _RecordBatchPanelContainer = _interopRequireDefault(require("../../containers/record/RecordBatchPanelContainer")); var _RecordReportPanelContainer = _interopRequireDefault(require("../../containers/record/RecordReportPanelContainer")); var _TermsUsedPanelContainer = _interopRequireDefault(require("../../containers/record/TermsUsedPanelContainer")); var _UsedByPanelContainer = _interopRequireDefault(require("../../containers/record/UsedByPanelContainer")); var _RecordSidebar = _interopRequireDefault(require("../../../styles/cspace-ui/RecordSidebar.css")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const propTypes = { config: _propTypes.default.object, csid: _propTypes.default.string, recordType: _propTypes.default.string, vocabulary: _propTypes.default.string, history: _propTypes.default.object, isOpen: _propTypes.default.bool, isRelatable: _propTypes.default.bool }; const defaultProps = { isOpen: true }; function RecordSidebar(props) { const { config, csid, recordType, vocabulary, history, isOpen, isRelatable } = props; if (!isOpen) { return null; } // TODO: Make sidebar components configurable based on service type/record type. const recordTypeConfig = config.recordTypes[recordType]; if (!recordTypeConfig) { return null; } const serviceType = recordTypeConfig.serviceConfig.serviceType; const isAuthority = serviceType === 'authority'; const isUtility = serviceType === 'utility'; const panelColor = isAuthority ? 'purple' : 'blue'; const relatedRecordDescriptors = (0, _get.default)(recordTypeConfig, ['sidebar', 'relatedRecords']) || [{ recordType: 'collectionobject' }, { recordType: 'procedure' }]; let mediaSnapshot = null; let relatedRecords = null; let usedBy = null; let reports = null; let batchJobs = null; if (!isAuthority && !isUtility) { mediaSnapshot = _react.default.createElement(_MediaSnapshotPanelContainer.default, { color: panelColor, csid: csid, config: config, recordType: recordType, sort: config.mediaSnapshotSort }); relatedRecords = relatedRecordDescriptors.map(relatedRecordDescriptor => { const { sort, recordType: relatedRecordType, columnSet = 'narrow' } = relatedRecordDescriptor; return _react.default.createElement(_RelatedRecordPanelContainer.default, { color: panelColor, csid: csid, columnSetName: columnSet, config: config, history: history, initialSort: sort, key: relatedRecordType, name: "related".concat((0, _upperFirst.default)(relatedRecordType), "Panel"), recordType: recordType, relatedRecordType: relatedRecordType, showAddButton: isRelatable }); }); } if (!isUtility) { reports = _react.default.createElement(_RecordReportPanelContainer.default, { color: panelColor, csid: csid, config: config, recordType: recordType }); batchJobs = _react.default.createElement(_RecordBatchPanelContainer.default, { color: panelColor, csid: csid, config: config, history: history, recordType: recordType }); } if (isAuthority) { usedBy = _react.default.createElement(_UsedByPanelContainer.default, { color: panelColor, csid: csid, config: config, history: history, recordType: recordType, vocabulary: vocabulary }); } return _react.default.createElement("div", { className: _RecordSidebar.default[serviceType] }, mediaSnapshot, _react.default.createElement(_TermsUsedPanelContainer.default, { color: panelColor, csid: csid, config: config, history: history, recordType: recordType, vocabulary: vocabulary }), relatedRecords, usedBy, reports, batchJobs); } RecordSidebar.propTypes = propTypes; RecordSidebar.defaultProps = defaultProps;