mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2025-03-22 19:05:56 -04:00
Merge pull request #932 from TheGrits/patch-3
Fix gh-678: Retain Search Term
This commit is contained in:
commit
cbd983baf8
4 changed files with 44 additions and 4 deletions
src
|
@ -36,7 +36,8 @@ var Navigation = React.createClass({
|
|||
},
|
||||
getDefaultProps: function () {
|
||||
return {
|
||||
session: {}
|
||||
session: {},
|
||||
searchTerm: ''
|
||||
};
|
||||
},
|
||||
componentDidMount: function () {
|
||||
|
@ -221,6 +222,7 @@ var Navigation = React.createClass({
|
|||
<Form onSubmit={this.onSearchSubmit}>
|
||||
<Button type="submit" className="btn-search" />
|
||||
<Input type="text"
|
||||
value={this.props.searchTerm}
|
||||
aria-label={formatMessage({id: 'general.search'})}
|
||||
placeholder={formatMessage({id: 'general.search'})}
|
||||
name="q" />
|
||||
|
@ -345,7 +347,8 @@ var Navigation = React.createClass({
|
|||
var mapStateToProps = function (state) {
|
||||
return {
|
||||
session: state.session,
|
||||
permissions: state.permissions
|
||||
permissions: state.permissions,
|
||||
searchTerm: state.navigation
|
||||
};
|
||||
};
|
||||
|
||||
|
|
24
src/redux/navigation.js
Normal file
24
src/redux/navigation.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
var keyMirror = require('keymirror');
|
||||
|
||||
var Types = keyMirror({
|
||||
SET_SEARCH_TERM: null
|
||||
});
|
||||
|
||||
module.exports.navigationReducer = function (state, action) {
|
||||
if(typeof state === 'undefined') {
|
||||
state = '';
|
||||
}
|
||||
switch (action.type) {
|
||||
case Types.SET_SEARCH_TERM:
|
||||
return action.searchTerm;
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports.setSearchTerm = function (searchTerm) {
|
||||
return {
|
||||
type: Types.SET_SEARCH_TERM,
|
||||
searchTerm: searchTerm
|
||||
};
|
||||
};
|
|
@ -4,12 +4,14 @@ var scheduleReducer = require('./conference-schedule.js').scheduleReducer;
|
|||
var detailsReducer = require('./conference-details.js').detailsReducer;
|
||||
var permissionsReducer = require('./permissions.js').permissionsReducer;
|
||||
var sessionReducer = require('./session.js').sessionReducer;
|
||||
var navigationReducer = require('./navigation.js').navigationReducer;
|
||||
|
||||
var appReducer = combineReducers({
|
||||
session: sessionReducer,
|
||||
permissions: permissionsReducer,
|
||||
conferenceSchedule: scheduleReducer,
|
||||
conferenceDetails: detailsReducer
|
||||
conferenceDetails: detailsReducer,
|
||||
navigation: navigationReducer
|
||||
});
|
||||
|
||||
module.exports = appReducer;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
var injectIntl = require('react-intl').injectIntl;
|
||||
var FormattedMessage = require('react-intl').FormattedMessage;
|
||||
var React = require('react');
|
||||
var connect = require('react-redux').connect;
|
||||
var render = require('../../lib/render.jsx');
|
||||
|
||||
var api = require('../../lib/api');
|
||||
|
@ -12,6 +13,7 @@ var Input = require('../../components/forms/input.jsx');
|
|||
var Button = require('../../components/forms/button.jsx');
|
||||
var Tabs = require('../../components/tabs/tabs.jsx');
|
||||
var Grid = require('../../components/grid/grid.jsx');
|
||||
var navigationActions = require('../../redux/navigation.js');
|
||||
|
||||
require('./search.scss');
|
||||
|
||||
|
@ -53,6 +55,7 @@ var Search = injectIntl(React.createClass({
|
|||
},
|
||||
componentDidMount: function () {
|
||||
this.getSearchMore();
|
||||
this.props.dispatch(navigationActions.setSearchTerm(this.props.searchTerm));
|
||||
},
|
||||
getSearchMore: function () {
|
||||
var termText = '';
|
||||
|
@ -138,4 +141,12 @@ var Search = injectIntl(React.createClass({
|
|||
}
|
||||
}));
|
||||
|
||||
render(<Page><Search /></Page>, document.getElementById('app'));
|
||||
var mapStateToProps = function (state) {
|
||||
return {
|
||||
navigation: state.searchTerm
|
||||
};
|
||||
};
|
||||
|
||||
var ConnectedSearch = connect(mapStateToProps)(Search);
|
||||
|
||||
render(<Page><ConnectedSearch /></Page>, document.getElementById('app'));
|
||||
|
|
Loading…
Reference in a new issue