UNPKG

cspace-ui

Version:
98 lines (93 loc) 3.25 kB
import React from 'react'; import PropTypes from 'prop-types'; import { Panel } from 'cspace-layout'; import { components as inputComponents } from 'cspace-input'; import AdvancedSearchBuilderContainer from '../../containers/search/AdvancedSearchBuilderContainer'; import { ConnectedPanel } from '../../containers/layout/PanelContainer'; import styles from '../../../styles/cspace-ui/SearchForm.css'; import recordTypeStyles from '../../../styles/cspace-ui/SearchFormRecordType.css'; const { LineInput, RecordTypeInput } = inputComponents; const SearchFormContent = ({ header, footer, recordTypes, recordTypeInputRootType, recordTypeInputServiceTypes, recordTypeValue, intl, messages, formatRecordTypeLabel, handleRecordTypeDropdownCommit, renderVocabularyInput, fullTextPanelHeader, keywordValue, handleKeywordInputCommit, advancedSearchCondition, config, preferredAdvancedSearchBooleanOp, onAdvancedSearchConditionCommit, handleFormSubmit, recordTypeInputReadOnly, }) => ( <form autoComplete="off" className={styles.common} onSubmit={handleFormSubmit}> {header} <Panel> <div className={recordTypeStyles.common}> <RecordTypeInput label={intl.formatMessage(messages.recordType)} recordTypes={recordTypes} rootType={recordTypeInputRootType} serviceTypes={recordTypeInputServiceTypes} value={recordTypeValue} formatRecordTypeLabel={formatRecordTypeLabel} onCommit={handleRecordTypeDropdownCommit} readOnly={recordTypeInputReadOnly} /> {renderVocabularyInput(recordTypes)} </div> <ConnectedPanel collapsible header={fullTextPanelHeader} name="fullTextSearch" recordType={recordTypeValue} > <LineInput label={intl.formatMessage(messages.keyword)} value={keywordValue} onCommit={handleKeywordInputCommit} /> </ConnectedPanel> <AdvancedSearchBuilderContainer condition={advancedSearchCondition} config={config} preferredBooleanOp={preferredAdvancedSearchBooleanOp} recordType={recordTypeValue} onConditionCommit={onAdvancedSearchConditionCommit} /> </Panel> {footer} </form> ); SearchFormContent.propTypes = { header: PropTypes.node, footer: PropTypes.node, recordTypes: PropTypes.object, recordTypeInputRootType: PropTypes.string, recordTypeInputServiceTypes: PropTypes.array, recordTypeValue: PropTypes.string, intl: PropTypes.object.isRequired, messages: PropTypes.object.isRequired, formatRecordTypeLabel: PropTypes.func.isRequired, handleRecordTypeDropdownCommit: PropTypes.func.isRequired, renderVocabularyInput: PropTypes.func.isRequired, fullTextPanelHeader: PropTypes.node.isRequired, keywordValue: PropTypes.string, handleKeywordInputCommit: PropTypes.func.isRequired, advancedSearchCondition: PropTypes.object, config: PropTypes.object, preferredAdvancedSearchBooleanOp: PropTypes.string, onAdvancedSearchConditionCommit: PropTypes.func.isRequired, handleFormSubmit: PropTypes.func.isRequired, recordTypeInputReadOnly: PropTypes.bool, }; export default SearchFormContent;