@collectionspace/cspace-public-browser
Version:
CollectionSpace public browser
87 lines (86 loc) • 3.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = DetailNavBar;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactIntl = require("react-intl");
var _reactRouterDom = require("react-router-dom");
var _immutable = _interopRequireDefault(require("immutable"));
var _get = _interopRequireDefault(require("lodash/get"));
var _config = _interopRequireDefault(require("../../config"));
var _urlHelpers = require("../../helpers/urlHelpers");
var _DetailNavBar = _interopRequireDefault(require("../../../styles/cspace/DetailNavBar.css"));
var _Link = _interopRequireDefault(require("../../../styles/cspace/Link.css"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const propTypes = {
params: _propTypes.default.instanceOf(_immutable.default.Map),
prev: _propTypes.default.shape({
'ecm:name': _propTypes.default.string
}),
next: _propTypes.default.shape({
'ecm:name': _propTypes.default.string
})
};
const defaultProps = {
params: _immutable.default.Map(),
prev: undefined,
next: undefined
};
const messages = (0, _reactIntl.defineMessages)({
search: {
"id": "detailNavBar.search",
"defaultMessage": "Return to search"
},
prev: {
"id": "detailNavBar.prev",
"defaultMessage": "Previous"
},
next: {
"id": "detailNavBar.next",
"defaultMessage": "Next"
}
});
function DetailNavBar({
params,
prev,
next
}) {
function renderLink(searchParams, index, adjacent, className, message) {
const detailPath = _config.default.get('detailPath');
const csid = (0, _get.default)(adjacent, 'ecm:name');
return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Link, {
className: className,
to: {
pathname: `/${detailPath}/${csid}`,
state: {
index,
searchParams
}
}
}, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, message)));
}
let prevLink;
let nextLink;
let queryString = '';
const index = params.get('index');
const searchParams = params.get('searchParams');
if (searchParams && index !== undefined) {
const searchParamsObj = searchParams.toJS();
prevLink = prev && renderLink(searchParamsObj, index - 1, prev, _Link.default.prev, messages.prev);
nextLink = next && renderLink(searchParamsObj, index + 1, next, _Link.default.next, messages.next);
queryString = (0, _urlHelpers.searchParamsToQueryString)(searchParams);
}
return /*#__PURE__*/_react.default.createElement("nav", {
className: _DetailNavBar.default.common
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Link, {
className: _Link.default.back,
to: {
pathname: '/search',
search: `?${queryString}`
}
}, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.search))), /*#__PURE__*/_react.default.createElement("div", null, prevLink, nextLink));
}
DetailNavBar.propTypes = propTypes;
DetailNavBar.defaultProps = defaultProps;