Skip to content

Commit

Permalink
Added support for Redux Form
Browse files Browse the repository at this point in the history
  • Loading branch information
jwbennet authored and athill committed May 24, 2017
1 parent 6a6aa02 commit 950dcdf
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 8 deletions.
52 changes: 52 additions & 0 deletions packages/react-scripts/template/forms/DemoForm.js.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import React from 'react';
{% if bootstrap -%}
import { Button, ControlLabel, Col, FormControl, FormGroup, Grid, Row } from 'react-bootstrap';
{%- endif %}
import { Field, reduxForm } from 'redux-form';

{% if bootstrap -%}
const Input = ({ input, label, meta, ...other }) => (
<FormGroup controlId={input.name}>
<ControlLabel>{label}</ControlLabel>
<FormControl {...input} {...other} />
</FormGroup>
);

const DemoForm = ({ handleSubmit }) => (
<form onSubmit={handleSubmit}>
<Grid>
<h4>Demo Form</h4>
<Row className="text-left">
<Col md={4} mdOffset={4}>
<Field name="message" type="text" label="Message" placeholder="Message text" component={Input} />
</Col>
</Row>
<Row>
<Col xs={12}>
<Button bsStyle="primary" type="submit">Submit</Button>
</Col>
</Row>
</Grid>
</form>
);
{%- else -%}
const Input = ({ input, label, meta, ...other }) => (
<div>
<label htmlFor={input.name}>{label}</label>{' '}
<input {...input} {...other} />
</div>
);

const DemoForm = ({ handleSubmit }) => (
<form onSubmit={handleSubmit}>
<h4>Demo Form</h4>
<Field name="message" type="text" label="Message" placeholder="Message text" component={Input} />
<input type="submit" />
</form>
);
{%- endif %}


export default reduxForm({
form: 'demo'
})(DemoForm);
16 changes: 10 additions & 6 deletions packages/react-scripts/template/modules/index.js.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@ import { combineReducers } from 'redux';
{% if router -%}
import { routerReducer } from 'react-router-redux';
{%- endif %}
{% if form -%}
import { reducer as formReducer } from 'redux-form';
{%- endif %}

import demo from './demo';

export default combineReducers({
{% if router -%}
demo,
router: routerReducer
{%- else -%}
demo
{%- endif %}
demo
{%- if form %},
form: formReducer
{%- endif %}
{%- if router %},
router: routerReducer
{%- endif %}
});
9 changes: 8 additions & 1 deletion packages/react-scripts/template/src/App.js.j2
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ import './App.css';
{% if redux -%}
import IncrementButton from './containers/IncrementButton';
{%- endif %}
{% if form -%}
import DemoForm from './forms/DemoForm';
{%- endif %}
{% if router and redux -%}
import { history } from './';
{%- endif %}
Expand All @@ -30,6 +33,10 @@ const Home = () => (
<h3>Home</h3>
{% if redux -%}
<IncrementButton />
{% if form -%}
<br /><br /><br /><br />
<DemoForm onSubmit={values => { console.log(values); return false; }} />
{%- endif %}
{%- endif %}
</div>
);
Expand Down Expand Up @@ -61,7 +68,7 @@ class App extends Component {
<Navbar>
<Navbar.Header>
<Navbar.Brand>
<Link to="/" exact replace>Home</Link>
<Link to="/" replace>Home</Link>
</Navbar.Brand>
</Navbar.Header>
<Nav>
Expand Down
4 changes: 3 additions & 1 deletion packages/react-scripts/utils/addDependencies.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
'use strict';

module.exports = (currentDependencies, { bootstrap, fontawesome, redux, router }) => {
module.exports = (currentDependencies, { bootstrap, fontawesome, form, redux, router }) => {
const boostrapDependencies = bootstrap ? { "bootstrap": "3.3.7", "react-bootstrap": "0.31.0" } : {};
const fontawesomeDependencies = fontawesome ? { "font-awesome": "4.7.0", "react-fontawesome": "1.6.1" } : {};
const reduxDependencies = redux ? { "redux": "3.6.0", "redux-thunk": "2.2.0", "redux-promise": "0.5.3", "redux-logger": "3.0.1", "redux-actions": "2.0.2", "react-redux": "5.0.4" } : {};
const reduxFormDependencies = form ? { "redux-form": "6.6.3" } : {};
const routerDependencies = router ? { "react-router-dom": "4.1.1" } : {};
const routerBoostrapDependencies = router && bootstrap ? { "react-router-bootstrap": "0.24.2" } : {};
const routerReduxDependencies = router && redux ? { "react-router-redux": "5.0.0-alpha.6" } : {};
Expand All @@ -13,6 +14,7 @@ module.exports = (currentDependencies, { bootstrap, fontawesome, redux, router }
boostrapDependencies,
fontawesomeDependencies,
reduxDependencies,
reduxFormDependencies,
routerDependencies,
routerBoostrapDependencies,
routerReduxDependencies
Expand Down
3 changes: 3 additions & 0 deletions packages/react-scripts/utils/copyTemplates.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ module.exports = (appName, appPath, templatePath, activeModules) => {
copyTemplateDirectory(path.join(templatePath, 'containers'), path.join(paths.appSrc, 'containers'), templateContext);
copyTemplateDirectory(path.join(templatePath, 'modules'), path.join(paths.appSrc, 'modules'), templateContext);
}
if(activeModules.form) {
copyTemplateDirectory(path.join(templatePath, 'forms'), path.join(paths.appSrc, 'forms'), templateContext);
}
} else {
console.error('Could not locate supplied template: ' + chalk.green(templatePath));
return;
Expand Down

0 comments on commit 950dcdf

Please sign in to comment.