From 3a00a2ba9f3bbe77aef6c6b2ec0c59bf69140b3a Mon Sep 17 00:00:00 2001 From: Lemarais Date: Thu, 17 Sep 2020 20:01:24 +0900 Subject: [PATCH 1/2] create todolist page and add todo page --- package.json | 2 + src/App.js | 20 +++- src/components/NewTodo/NewTodo.css | 41 +++++++ src/components/NewTodo/NewTodo.js | 37 +++++++ src/components/Todo/Todo.css | 31 ++++++ src/components/Todo/Todo.js | 14 +++ src/components/TodoDetail/TodoDetail.css | 15 +++ src/components/TodoDetail/TodoDetail.js | 23 ++++ src/containers/TodoList/TodoList.css | 16 +++ src/containers/TodoList/TodoList.js | 46 ++++++++ yarn.lock | 133 ++++++++++++++++++++--- 11 files changed, 359 insertions(+), 19 deletions(-) create mode 100644 src/components/NewTodo/NewTodo.css create mode 100644 src/components/NewTodo/NewTodo.js create mode 100644 src/components/Todo/Todo.css create mode 100644 src/components/Todo/Todo.js create mode 100644 src/components/TodoDetail/TodoDetail.css create mode 100644 src/components/TodoDetail/TodoDetail.js create mode 100644 src/containers/TodoList/TodoList.css create mode 100644 src/containers/TodoList/TodoList.js diff --git a/package.json b/package.json index 6c050f8..47ab41c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,8 @@ "dependencies": { "react": "^16.9.0", "react-dom": "^16.9.0", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", "react-scripts": "3.1.1" }, "scripts": { diff --git a/src/App.js b/src/App.js index e358583..466369c 100644 --- a/src/App.js +++ b/src/App.js @@ -1,12 +1,22 @@ import React from 'react'; -import logo from './logo.svg'; +import TodoList from './containers/TodoList/TodoList'; +import NewTodo from './components/NewTodo/NewTodo' +import {BrowserRouter, Route, Redirect, Switch} from 'react-router-dom' import './App.css'; function App() { - return ( -
-
- ); + return ( + +
+ + }/> + + +

Not Found

} /> +
+
+
+ ); } export default App; diff --git a/src/components/NewTodo/NewTodo.css b/src/components/NewTodo/NewTodo.css new file mode 100644 index 0000000..9b81330 --- /dev/null +++ b/src/components/NewTodo/NewTodo.css @@ -0,0 +1,41 @@ +.NewTodo { + width: 80%; + margin: 20px auto; + border: 1px solid #eee; + box-shadow: 0 2px 3px #ccc; + text-align: center; +} + +.NewTodo label { + display: block; + margin: 10px auto; + text-align: center; + font-weight: bold; +} + +.NewTodo input, +.NewTodo textarea { + display: block; + width: 80%; + box-sizing: border-box; + border: 1px solid black; + outline: none; + font: inherit; + margin: auto; +} + +.NewTodo button { + margin: 5px 0; + padding: 10px; + font: inherit; + border: 1px solid #fa923f; + background-color: transparent; + color: #fa923f; + cursor: pointer; +} + +.NewTodo button:hover, +.NewTodo button:active { + color: white; + background-color: #fa923f; +} \ No newline at end of file diff --git a/src/components/NewTodo/NewTodo.js b/src/components/NewTodo/NewTodo.js new file mode 100644 index 0000000..b47b20e --- /dev/null +++ b/src/components/NewTodo/NewTodo.js @@ -0,0 +1,37 @@ +import React, {Component} from 'react'; +import {Redirect} from 'react-router-dom' +import './NewTodo.css' + +class NewTodo extends Component { + state = { + title: '', + content: '', + submitted: false, + } + + postTodoHandler = () => { + const data = + {title: this.state.title, content: this.state.content }; + alert('Submitted\n' + data.title + '\n' + data.content); + this.setState({submitted: true}); + this.props.history.push('/todos'); + } + render() { + if (this.state.submitted) { + return + } + return ( +
+

Add a Todo

+ + this.setState({title: event.target.value})}/> + +