<!DOCTYPE html>
<html>

  <head>
    <script data-require="react@*" data-semver="0.14.0" src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.js"></script>
    <script data-require="react@*" data-semver="0.14.0" src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.js"></script>
    <link rel="stylesheet" href="style.css" />
  </head>

  <body>
    <div id="example"></div>
    <script src="script.js"></script>
  </body>

</html>
class Input extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      curValue: ''
    }
  }
  
  onSubmit(e) {
    e.preventDefault()
    this.props.onAddTodo(this.state.curValue)
    this.setState({curValue: ''})
  }
  
  onChange(e) {
    this.setState({
      curValue: e.target.value
    })
  }
  
  render() {
    return (
      <div>
        <form method="post" onSubmit={this.onSubmit.bind(this)}>
          <input  type="text"
                  onChange={this.onChange.bind(this)}
                  value={this.state.curValue}
          />
          <button type="submit">Ajouter</button>
        </form>
      </div> 
    )
  }
}

class Todolist extends React.Component {
  render() {
    return (
      <ul>
        {this.props.todolist.map((todo, idx) =>
              <li key={idx}>{todo}</li>
        )}
      </ul>
    )
  }
}

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      todolist: []
    }
  }
  
  newTodo(txt) {
    this.setState({
      todolist: [txt, ...this.state.todolist]
    })
  }
  
  render() {
    return (
      <div>
        <h1>TODOLIST</h1>
        <Todolist todolist={this.state.todolist} />
        <br />
        <Input onAddTodo={this.newTodo.bind(this)} />
      </div>
    )
  }
}

ReactDOM.render(
  <App />,
  document.getElementById('example')
);
/* Styles go here */