Repository: lorenseanstewart/react-controlled-form-components Branch: master Commit: 181e65d4262b Files: 14 Total size: 12.2 KB Directory structure: gitextract_rlcvmnka/ ├── .gitignore ├── .nvmrc ├── README.md ├── package.json ├── public/ │ ├── fake_db.json │ └── index.html └── src/ ├── App.js ├── components/ │ ├── CheckboxOrRadioGroup.js │ ├── Select.js │ ├── SingleInput.js │ └── TextArea.js ├── containers/ │ └── FormContainer.js ├── index.js └── styles.css ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # See http://help.github.com/ignore-files/ for more about ignoring files. # dependencies node_modules # testing coverage # production build # misc .DS_Store .idea/ .env npm-debug.log ================================================ FILE: .nvmrc ================================================ 6.2.1 ================================================ FILE: README.md ================================================ ### Tutorial: React.js Controlled Form Components This repo is the companion to my blog post, [React.js Controlled Form Components](http://lorenstewart.me/2016/10/31/react-js-forms-controlled-components/). [DEMO](http://lorenstewart.me/react-controlled-form-components/) To get started: 1. Make sure you're using Node 6 or higher (4 and higher will work, though) 2. `npm install create-react-app -g` (if you don't have it installed already) 3. `npm install` 4. `npm run start` 5. Open [http://localhost:3000/](http://localhost:3000/) in your browser ================================================ FILE: package.json ================================================ { "name": "react-form-components", "version": "0.1.0", "private": true, "devDependencies": { "react-scripts": "0.6.1" }, "dependencies": { "react": "^15.3.2", "react-dom": "^15.3.2", "spectre.css": "^0.1.27" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" } } ================================================ FILE: public/fake_db.json ================================================ { "ownerName": "", "petSelections": ["dog", "cat", "rabbit", "iguana", "pony", "ferret", "fish", "bird"], "selectedPets": ["dog", "cat", "ferret"], "ageOptions": ["18 - 25", "26 - 59", "60 or older"], "ownerAgeRangeSelection": "", "siblingOptions": ["yes", "no"], "siblingSelection": ["yes"], "currentPetCount": 0, "description": "" } ================================================ FILE: public/index.html ================================================ React App
================================================ FILE: src/App.js ================================================ import React, { Component } from 'react'; import '../node_modules/spectre.css/dist/spectre.min.css'; import './styles.css'; import FormContainer from './containers/FormContainer'; class App extends Component { render() { return (

React.js Controlled Form Components

); } } export default App; ================================================ FILE: src/components/CheckboxOrRadioGroup.js ================================================ import React from 'react'; const CheckboxOrRadioGroup = (props) => (
{props.options.map(option => { return ( ); })}
); CheckboxOrRadioGroup.propTypes = { title: React.PropTypes.string.isRequired, type: React.PropTypes.oneOf(['checkbox', 'radio']).isRequired, setName: React.PropTypes.string.isRequired, options: React.PropTypes.array.isRequired, selectedOptions: React.PropTypes.array, controlFunc: React.PropTypes.func.isRequired }; export default CheckboxOrRadioGroup; ================================================ FILE: src/components/Select.js ================================================ import React from 'react'; const Select = (props) => (
); Select.propTypes = { name: React.PropTypes.string.isRequired, options: React.PropTypes.array.isRequired, selectedOption: React.PropTypes.string, controlFunc: React.PropTypes.func.isRequired, placeholder: React.PropTypes.string }; export default Select; ================================================ FILE: src/components/SingleInput.js ================================================ import React from 'react'; const SingleInput = (props) => (
); SingleInput.propTypes = { inputType: React.PropTypes.oneOf(['text', 'number']).isRequired, title: React.PropTypes.string.isRequired, name: React.PropTypes.string.isRequired, controlFunc: React.PropTypes.func.isRequired, content: React.PropTypes.oneOfType([ React.PropTypes.string, React.PropTypes.number, ]).isRequired, placeholder: React.PropTypes.string, }; export default SingleInput; ================================================ FILE: src/components/TextArea.js ================================================ import React from 'react'; const TextArea = (props) => (