UNPKG

@collectionspace/cspace-public-browser

Version:
87 lines (86 loc) 3.22 kB
"use strict"; 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;