diff --git a/src/components/Search/Search.js b/src/components/Search/Search.js
index 0021c8c03..9b53eac16 100644
--- a/src/components/Search/Search.js
+++ b/src/components/Search/Search.js
@@ -1,56 +1,62 @@
-import React, { PropTypes } from 'react';
+import React, { PropTypes, Component } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { FormattedMessage } from 'react-intl';
-import { FormGroup, ControlLabel, FormControl, InputGroup } from 'react-bootstrap';
-import { Debounce } from 'react-throttle';
+import { Button, FormGroup, ControlLabel, FormControl, InputGroup } from 'react-bootstrap';
import { LoadingIcon, SearchIcon, WarningIcon } from '../Icons';
// some additional styling for a scrolable vertical box
import styles from './search.less';
-const Search = ({
- id = '',
- type = 'general',
- onChange,
- isLoading,
- hasFailed,
- isReady,
- query,
- foundItems,
- renderList
-}) => (
-
-
-
-
-
-
-
- {isLoading && }
- {hasFailed && }
- {!isLoading && !hasFailed && }
-
-
- onChange(id, e.target.value)} />
-
-
-
- {query && query.length > 0 && (
+class Search extends Component {
+
+ render() {
+ const {
+ id = '',
+ onChange,
+ isLoading,
+ hasFailed,
+ query,
+ foundItems,
+ renderList
+ } = this.props;
+
+ return (
-
- {' '}
- "{query}"
-
+
+
+
+
+
+ { this.query = e.target.value; }} />
+
+
+
+
+
+ {query && query.length > 0 && (
+
+
+ {' '}
+ "{query}"
+
- {(!isLoading || foundItems.size > 0) && (
-
- {renderList(foundItems.toJS())}
+ {(!isLoading || foundItems.size > 0) && (
+
+ {renderList(foundItems.toJS())}
+
+ )}
)}
- )}
-
-);
+ );
+ }
+}
Search.propTypes = {
id: PropTypes.string,
diff --git a/src/containers/AddUserContainer/AddUserContainer.js b/src/containers/AddUserContainer/AddUserContainer.js
index f31974cd5..61a4b9e63 100644
--- a/src/containers/AddUserContainer/AddUserContainer.js
+++ b/src/containers/AddUserContainer/AddUserContainer.js
@@ -22,13 +22,14 @@ const AddUserContainer = ({
AddUserContainer.propTypes = {
id: PropTypes.string.isRequired,
+ instanceId: PropTypes.string.isRequired,
groupId: PropTypes.string.isRequired,
search: PropTypes.func.isRequired,
createActions: PropTypes.func
};
-const mapDispatchToProps = (dispatch, { instanceId }) => ({
- search: (id, query) => dispatch(searchPeople(instanceId)(id, query))
+const mapDispatchToProps = (dispatch, props) => ({
+ search: (query) => dispatch(searchPeople(props.instanceId)(props.id, query))
});
export default connect(undefined, mapDispatchToProps)(AddUserContainer);
diff --git a/src/containers/SearchContainer/SearchContainer.js b/src/containers/SearchContainer/SearchContainer.js
index 8a3d1996a..8841927a3 100644
--- a/src/containers/SearchContainer/SearchContainer.js
+++ b/src/containers/SearchContainer/SearchContainer.js
@@ -9,16 +9,17 @@ import { getSearchStatus, getSearchResults, getSearchQuery } from '../../redux/s
const SearchContainer = ({
id,
+ type = 'search',
query,
search,
status,
- exercises,
+ foundItems,
renderList
}) => (
({
- status: getSearchStatus(id)(state),
- query: getSearchQuery(id)(state),
- exercises: getSearchResults(id)(state)
-});
+const mapStateToProps = (state, { id }) => {
+ return {
+ status: getSearchStatus(id)(state),
+ query: getSearchQuery(id)(state),
+ foundItems: getSearchResults(id)(state)
+ };
+};
export default connect(mapStateToProps)(SearchContainer);
diff --git a/src/containers/SelectExerciseContainer/SelectExerciseContainer.js b/src/containers/SelectExerciseContainer/SelectExerciseContainer.js
index ca512b4c4..be763d804 100644
--- a/src/containers/SelectExerciseContainer/SelectExerciseContainer.js
+++ b/src/containers/SelectExerciseContainer/SelectExerciseContainer.js
@@ -6,7 +6,7 @@ import SearchContainer from '../SearchContainer';
import ExercisesList from '../../components/Exercises/ExercisesList';
const SelectExerciseContainer = ({
- groupId: id,
+ id,
search,
createActions
}) => (
@@ -20,13 +20,13 @@ const SelectExerciseContainer = ({
);
SelectExerciseContainer.propTypes = {
- groupId: PropTypes.string.isRequired,
+ id: PropTypes.string.isRequired,
search: PropTypes.func.isRequired,
createActions: PropTypes.func
};
-const mapDispatchToProps = (dispatch) => ({
- search: (id, query) => dispatch(searchExercises()(id, query))
+const mapDispatchToProps = (dispatch, { id }) => ({
+ search: (query) => dispatch(searchExercises()(id, query))
});
export default connect(undefined, mapDispatchToProps)(SelectExerciseContainer);
diff --git a/src/redux/modules/search.js b/src/redux/modules/search.js
index 3b91576af..5aee89fd7 100644
--- a/src/redux/modules/search.js
+++ b/src/redux/modules/search.js
@@ -31,8 +31,9 @@ export default handleActions({
[actionTypes.SEARCH_REJECTED]: (state, { meta: { id } }) =>
state.update(id, search => search.set('status', searchStatus.FAILED)),
- [actionTypes.SEARCH_FULFILLED]: (state, { payload: results, meta: { id } }) =>
- state.update(id, search => search.set('status', searchStatus.READY).set('results', fromJS(results)))
+ [actionTypes.SEARCH_FULFILLED]: (state, { payload: results, meta: { id } }) => {
+ return state.update(id, search => search.set('status', searchStatus.READY).set('results', fromJS(results)));
+ }
}, initialState);