@collectionspace/cspace-public-browser
Version:
CollectionSpace public browser
66 lines (65 loc) • 2.67 kB
JavaScript
;
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;