UNPKG

@collectionspace/cspace-public-browser

Version:
66 lines (65 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = RemoveSearchParamLink; 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 _SearchQueryInput = require("../entry/SearchQueryInput"); var _config = _interopRequireDefault(require("../../../config")); var _ids = require("../../../constants/ids"); var _urlHelpers = require("../../../helpers/urlHelpers"); var _RemoveSearchParamLink = _interopRequireDefault(require("../../../../styles/cspace/RemoveSearchParamLink.css")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const propTypes = { id: _propTypes.default.string.isRequired, params: _propTypes.default.instanceOf(_immutable.default.Map).isRequired }; const VALUE_DELIMITER = ', '; const getLabelMessage = (id, filterFieldConfig) => { if (id === _ids.SEARCH_QUERY_ID) { return _SearchQueryInput.messages.shortLabel; } if (filterFieldConfig) { const { messages: filterFieldMessages } = filterFieldConfig; return filterFieldMessages.shortLabel || filterFieldMessages.label; } return undefined; }; const renderLabel = (id, filterFieldConfig) => { const labelMessage = getLabelMessage(id, filterFieldConfig); return labelMessage // eslint-disable-next-line react/jsx-props-no-spreading ? /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, labelMessage) : id; }; const renderValue = (id, filterFieldConfig, params) => { const value = params.get(id); const formatValue = (0, _get.default)(filterFieldConfig, 'formatValue'); if (_immutable.default.List.isList(value)) { return formatValue ? value.map(v => formatValue(v)).join(VALUE_DELIMITER) : value.join(VALUE_DELIMITER); } return formatValue ? formatValue(value) : value; }; function RemoveSearchParamLink(props) { const { id, params } = props; const filterFieldConfig = _config.default.getFilterFieldConfig(id); const queryString = (0, _urlHelpers.searchParamsToQueryString)(params.delete(id)); const label = renderLabel(id, filterFieldConfig); const value = renderValue(id, filterFieldConfig, params); return /*#__PURE__*/_react.default.createElement(_reactRouterDom.Link, { className: _RemoveSearchParamLink.default.common, to: { search: `?${queryString}` } }, label, ":", ' ', value); } RemoveSearchParamLink.propTypes = propTypes;