UNPKG

@collectionspace/cspace-public-browser

Version:
72 lines (70 loc) 2.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = FilterGroup; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactIntl = require("react-intl"); var _immutable = _interopRequireDefault(require("immutable")); var _FilterContainer = _interopRequireDefault(require("./FilterContainer")); var _FilterGroup = _interopRequireDefault(require("../../../../styles/cspace/FilterGroup.css")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const propTypes = { config: _propTypes.default.shape({ fields: _propTypes.default.arrayOf(_propTypes.default.string).isRequired, label: _propTypes.default.string, messages: _propTypes.default.object }).isRequired, fieldsConfig: _propTypes.default.objectOf(_propTypes.default.object).isRequired, id: _propTypes.default.string.isRequired, isPending: _propTypes.default.bool, aggregations: _propTypes.default.instanceOf(_immutable.default.Map) }; const defaultProps = { isPending: false, aggregations: _immutable.default.Map() }; function FilterGroup(props) { const { aggregations, config, fieldsConfig } = props; const { fields, label, messages } = config; const isEmpty = aggregations.isEmpty() || !fields.find(fieldId => { const buckets = aggregations.getIn([fieldId, 'buckets']); return buckets && buckets.size > 0; }); if (isEmpty) { return null; } const labelMessage = messages && messages.label; // eslint-disable-next-line react/jsx-props-no-spreading const headerContent = labelMessage ? /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, labelMessage) : label; return /*#__PURE__*/_react.default.createElement("div", { className: _FilterGroup.default.common }, headerContent && /*#__PURE__*/_react.default.createElement("h1", null, headerContent), fields.map(fieldId => { const { field, formatValue, messages: fieldMessages, showSearch } = fieldsConfig[fieldId]; return /*#__PURE__*/_react.default.createElement(_FilterContainer.default, { aggregation: aggregations.get(fieldId), id: fieldId, field: field, formatValue: formatValue, key: fieldId, messages: fieldMessages, showSearch: showSearch }); })); } FilterGroup.propTypes = propTypes; FilterGroup.defaultProps = defaultProps;