@ucb-cspace/cspace-ui
Version:
CollectionSpace user interface for browsers
145 lines (144 loc) • 7.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _cspaceLayout = require("cspace-layout");
var _cspaceInput = require("cspace-input");
var _reactRedux = require("react-redux");
var _AdvancedSearchBuilderContainer = _interopRequireDefault(require("../../containers/search/AdvancedSearchBuilderContainer"));
var _PanelContainer = require("../../containers/layout/PanelContainer");
var _SearchForm = _interopRequireDefault(require("../../../styles/cspace-ui/SearchForm.css"));
var _SearchFormRecordType = _interopRequireDefault(require("../../../styles/cspace-ui/SearchFormRecordType.css"));
var _notification = require("../../actions/notification");
var _notificationStatusCodes = require("../../constants/notificationStatusCodes");
var _prefs = require("../../actions/prefs");
var _reducers = require("../../reducers");
var _searchNames = require("../../constants/searchNames");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const {
LineInput,
RecordTypeInput
} = _cspaceInput.components;
const SearchFormContentNew = ({
header,
footer,
recordTypes,
recordTypeInputRootType,
recordTypeInputServiceTypes,
recordTypeValue,
intl,
messages,
formatRecordTypeLabel,
handleRecordTypeDropdownCommit,
renderVocabularyInput,
keywordValue,
handleKeywordInputCommit,
advancedSearchConditionSearchTerms,
advancedSearchConditionLimitBy,
onAdvancedSearchConditionSearchTermsCommit,
onAdvancedSearchConditionLimitByCommit,
handleFormSubmit,
config
}) => {
const dispatch = (0, _reactRedux.useDispatch)();
const reduxNewSearchShown = (0, _reactRedux.useSelector)(state => (0, _reducers.getNewSearchShown)(state));
const [newSearchShown] = (0, _react.useState)(reduxNewSearchShown);
const isBroadSearch = ['all', 'procedure', 'authority'].includes(recordTypeValue);
(0, _react.useEffect)(() => {
if (!newSearchShown) {
// TODO: message needs to be specified
dispatch((0, _notification.showNotification)({
items: [{
message: {
id: 'newSearchForm.informative',
defaultMessage: 'Welcome to the new CollectionSpace Advanced Search. Classic Search will remain available in the 8.3 release to ease the transition to the new advanced search. Please share feedback with us and visit the User Manual for more information on the functionality of search.'
}
}],
date: new Date(),
status: _notificationStatusCodes.STATUS_SUCCESS
}));
dispatch((0, _prefs.setNewSearchShown)());
}
}, []);
return /*#__PURE__*/_react.default.createElement("form", {
autoComplete: "off",
className: _SearchForm.default.common,
onSubmit: handleFormSubmit
}, header, /*#__PURE__*/_react.default.createElement(_cspaceLayout.Panel, null, /*#__PURE__*/_react.default.createElement("div", {
className: _SearchFormRecordType.default.common
}, /*#__PURE__*/_react.default.createElement(RecordTypeInput, {
label: intl.formatMessage(messages.recordType),
recordTypes: recordTypes,
rootType: recordTypeInputRootType,
serviceTypes: recordTypeInputServiceTypes,
value: recordTypeValue,
formatRecordTypeLabel: formatRecordTypeLabel,
onCommit: handleRecordTypeDropdownCommit
}), renderVocabularyInput(recordTypes)), /*#__PURE__*/_react.default.createElement(_PanelContainer.ConnectedPanel, {
collapsible: true,
name: "searchTermsPanel",
header: /*#__PURE__*/_react.default.createElement("h3", null, intl.formatMessage(messages.enterSearchTerms))
}, /*#__PURE__*/_react.default.createElement(LineInput, {
label: intl.formatMessage(messages.keyword),
value: keywordValue,
onCommit: handleKeywordInputCommit
}), /*#__PURE__*/_react.default.createElement("div", {
className: _SearchForm.default.mb12
}, /*#__PURE__*/_react.default.createElement("b", null, intl.formatMessage(messages.and))), /*#__PURE__*/_react.default.createElement(_AdvancedSearchBuilderContainer.default, {
condition: advancedSearchConditionSearchTerms,
config: config,
hasChildGroups: true,
name: "advancedSearch",
recordType: recordTypeValue,
showInlineParens: false,
showRemoveButton: false,
onConditionCommit: onAdvancedSearchConditionSearchTermsCommit,
searchTermsGroup: _searchNames.SEARCH_TERMS_GROUP_SEARCH_TERMS,
withoutPanel: true,
isBroadSearch: isBroadSearch
})), !isBroadSearch && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
className: _SearchForm.default.mb12
}, /*#__PURE__*/_react.default.createElement("b", null, intl.formatMessage(messages.and))), /*#__PURE__*/_react.default.createElement(_PanelContainer.ConnectedPanel, {
collapsible: true,
name: "limitByPanel",
header: /*#__PURE__*/_react.default.createElement("h3", null, intl.formatMessage(messages.limitBySpecificFields))
}, /*#__PURE__*/_react.default.createElement(_AdvancedSearchBuilderContainer.default, {
condition: advancedSearchConditionLimitBy,
config: config,
hasChildGroups: true,
name: "advancedSearch",
recordType: recordTypeValue,
showInlineParens: false,
showRemoveButton: false,
onConditionCommit: onAdvancedSearchConditionLimitByCommit,
searchTermsGroup: _searchNames.SEARCH_TERMS_GROUP_LIMIT_BY,
withoutPanel: true
})))), footer);
};
SearchFormContentNew.propTypes = {
header: _propTypes.default.node,
footer: _propTypes.default.node,
recordTypes: _propTypes.default.object,
recordTypeInputRootType: _propTypes.default.string,
recordTypeInputServiceTypes: _propTypes.default.array,
recordTypeValue: _propTypes.default.string,
intl: _propTypes.default.object.isRequired,
messages: _propTypes.default.object.isRequired,
formatRecordTypeLabel: _propTypes.default.func.isRequired,
handleRecordTypeDropdownCommit: _propTypes.default.func.isRequired,
renderVocabularyInput: _propTypes.default.func.isRequired,
keywordValue: _propTypes.default.string,
handleKeywordInputCommit: _propTypes.default.func.isRequired,
advancedSearchConditionSearchTerms: _propTypes.default.object,
advancedSearchConditionLimitBy: _propTypes.default.object,
onAdvancedSearchConditionSearchTermsCommit: _propTypes.default.func.isRequired,
onAdvancedSearchConditionLimitByCommit: _propTypes.default.func.isRequired,
handleFormSubmit: _propTypes.default.func.isRequired,
config: _propTypes.default.object
};
var _default = exports.default = SearchFormContentNew;