sf.field === 'tm_rendered_item').value || this.props.options.showEmptySearchResults) ? 'solr-search-results-container__prompt fs-element-invisible' : 'solr-search-results-container__prompt'}>{this.props.options.searchPrompt || 'Please enter a search term.'}
sf.field === 'tm_rendered_item').value || this.props.options.showEmptySearchResults) ? 'solr-search-results-container__wrapper' : 'solr-search-results-container__wrapper fs-element-invisible'}>
diff --git a/src/components/list-facet/index.js b/src/components/list-facet/index.js
index 28155c0..9a46422 100644
--- a/src/components/list-facet/index.js
+++ b/src/components/list-facet/index.js
@@ -12,7 +12,22 @@ class FederatedListFacet extends React.Component {
this.state = {
filter: '',
truncateFacetListsAt: props.truncateFacetListsAt,
+ sort: 'score',
};
+ this.onSelect = this.onSelect.bind(this);
+ }
+
+ onSelect(event) {
+ this.setState({sort: event.target.value});
+
+ const sortField = event.target.value;
+ const foundIdx = this.props.sortFields.indexOf(sortField);
+
+ if (foundIdx < 0) {
+ this.props.onSortFieldChange(sortField, "desc");
+ } else {
+ this.props.onSortFieldChange(sortField, null);
+ }
}
handleClick(value) {
@@ -99,9 +114,10 @@ class FederatedListFacet extends React.Component {
collapse,
hierarchy,
options,
+ sortFields,
+ sortFilterInAccordion,
} = this.props;
const { truncateFacetListsAt } = this.state;
-
const siteList = options.siteList;
const facetCounts = facets.filter((facet, i) => i % 2 === 1);
const facetValues = facets.filter((facet, i) => i % 2 === 0);
@@ -224,7 +240,37 @@ class FederatedListFacet extends React.Component {
);
+
});
+ listFacetHierarchyLis.push(
+ sortFilterInAccordion
+ ? (
+
+ {if (event.keyCode === 13) {this.toggleExpand()}}}
+ >Sort
+
+
+ -
+
+
+
+
+
+ )
+ : '',
+ );
// Render the group of accordion lis with their facet value checkbox lists.
return listFacetHierarchyLis;
}
@@ -300,6 +346,8 @@ FederatedListFacet.propTypes = {
onChange: PropTypes.func,
onFacetSortChange: PropTypes.func,
onSetCollapse: PropTypes.func,
+ sortFields: PropTypes.array,
+ sortFilterInAccordion: PropTypes.bool,
query: PropTypes.object,
truncateFacetListsAt: PropTypes.number,
value: PropTypes.array,
diff --git a/src/components/search-field-container.js b/src/components/search-field-container.js
index 46f6496..59c3f15 100644
--- a/src/components/search-field-container.js
+++ b/src/components/search-field-container.js
@@ -3,7 +3,6 @@ import React from 'react';
import cx from 'classnames';
import AnimateHeight from 'react-animate-height';
-
class FederatedSearchFieldContainer extends React.Component {
constructor(props) {
super(props);
@@ -41,7 +40,12 @@ class FederatedSearchFieldContainer extends React.Component {
}
render() {
- const { onNewSearch } = this.props;
+ const { onNewSearch, sortFilterComponent } = this.props;
+ // Grab env vars.
+ const {
+ sortFilterInAccordion = false,
+ } = this.props.options.layoutAndClasses || {};
+
const height = this.state.expanded ? 'auto' : 0;
return (
@@ -64,7 +68,12 @@ class FederatedSearchFieldContainer extends React.Component {
Filter Results
{ this.props.resultsCount > 0
- ? (There are no results to filter.
}
@@ -78,10 +87,12 @@ class FederatedSearchFieldContainer extends React.Component {
}
}
+
FederatedSearchFieldContainer.propTypes = {
children: PropTypes.array,
onNewSearch: PropTypes.func,
options: PropTypes.object,
+ sortFilterComponent: PropTypes.object,
};
export default FederatedSearchFieldContainer;
diff --git a/src/components/sort-menu/index.js b/src/components/sort-menu/index.js
index 7f60ace..34f2aab 100644
--- a/src/components/sort-menu/index.js
+++ b/src/components/sort-menu/index.js
@@ -2,50 +2,55 @@ import PropTypes from 'prop-types';
import React from "react";
class FederatedSortMenu extends React.Component {
- constructor(props) {
- super(props);
+ constructor(props) {
+ super(props);
- this.state = {
- sort: 'score'
- };
+ this.state = {
+ sort: 'score',
+ };
this.onSelect = this.onSelect.bind(this);
- }
-
- onSelect(event) {
- this.setState({sort: event.target.value});
-
- const sortField = event.target.value;
- const foundIdx = this.props.sortFields.indexOf(sortField);
- if (foundIdx < 0) {
- this.props.onChange(sortField, "desc");
- } else {
- this.props.onChange(sortField, null);
- }
- }
-
- render() {
- const { sortFields } = this.props;
- if (sortFields.length === 0) { return null; }
-
- return (
-
+ this.toggleExpand = this.toggleExpand.bind(this);
+ }
+ toggleExpand() {
+ this.props.onSetCollapse(this.props.field, !(this.props.collapse || false));
+ }
+
+ onSelect(event) {
+ this.setState({sort: event.target.value});
+
+ const sortField = event.target.value;
+ const foundIdx = this.props.sortFields.indexOf(sortField);
+
+ if (foundIdx < 0) {
+ this.props.onChange(sortField, "desc");
+ } else {
+ this.props.onChange(sortField, null);
+ }
+ }
+
+ render() {
+ const { sortFields } = this.props;
+ if (sortFields.length === 0) { return null; }
+
+ return (
+
-
- );
- }
+
+ );
+ }
}
FederatedSortMenu.propTypes = {
- bootstrapCss: PropTypes.bool,
- onChange: PropTypes.func,
- sortFields: PropTypes.array
+ bootstrapCss: PropTypes.bool,
+ onChange: PropTypes.func,
+ sortFields: PropTypes.array,
};
export default FederatedSortMenu;