From 8e390a37a4916c506532132135a2d0f703af368c Mon Sep 17 00:00:00 2001 From: Ajmal Basha <ajmal.basha@krds.fr> Date: Wed, 23 Feb 2022 16:50:44 +0530 Subject: [PATCH] changes --- src/App.js | 21 +++++++++++++++------ src/components/CompletedTodos.js | 35 +++++++++++++++-------------------- src/components/TodoForm.js | 2 -- src/components/TodoItem.js | 50 ++++++++++++++++++++++++++++++++++++++------------ src/components/Todos.js | 14 ++++++++++++++ src/index.css | 12 ++++++------ 6 files changed, 88 insertions(+), 46 deletions(-) create mode 100644 src/components/Todos.js diff --git a/src/App.js b/src/App.js index 9f7bd13..3519258 100644 --- a/src/App.js +++ b/src/App.js @@ -1,9 +1,9 @@ import React, { useState, useCallback, useEffect } from "react"; import "./App.css"; import TodoForm from "./components/TodoForm"; -import TodoItem from "./components/TodoItem"; import Header from "./components/Header"; import CompletedTodos from "./components/CompletedTodos"; +import Todos from './components/Todos' function App() { const [todos, setTodos] = useState([]); @@ -71,14 +71,23 @@ function App() { <Header todos={todos} /> - <TodoItem /> + <Todos todos={todos} + completeTodo={completeTodo} + removeTodo={removeTodo} + editTodo={editTodo} + handleEditChange={handleEditChange} + editId={editId} + inputValue={inputValue} + setInputValue={setInputValue} + escFunction={escFunction} /> <TodoForm onSubmit={addTodo} /> - <CompletedTodos todos={todos} - completeTodo={completeTodo} - removeTodo={removeTodo} /> - + + <h4 style={{ textAlign: 'center', marginBottom: '10px' }}>{todos.filter(todoLen => todoLen.status === true).length > 0 ? 'Completed Todos(' + todos.filter(todoLen => todoLen.status === true).length + ')' : ''}</h4> + + <CompletedTodos todos={todos} completeTodo={completeTodo} removeTodo={removeTodo} /> + </div> </> diff --git a/src/components/CompletedTodos.js b/src/components/CompletedTodos.js index 09f018a..3d598e4 100644 --- a/src/components/CompletedTodos.js +++ b/src/components/CompletedTodos.js @@ -1,31 +1,26 @@ import React from "react"; import { CgCloseO } from "react-icons/cg"; -const CompletedTodos = ({ - todos, - completeTodo, - removeTodo, -}) => { - +const CompletedTodos = ({ todos, completeTodo, removeTodo, lengthCheck }) => { return todos.map((todo) => ( <> {todo.status === true ? ( - <div className="task-body-content"> - <div style={{ display: 'flex' }}> - <div style={{ margin: '2px 4px 0px 0px' }}> - <input type='checkbox' - key={todo.id} - checked={todo.status} - onClick={() => completeTodo(todo.id)} - ></input> + <div className="task-body-content"> + <div style={{ display: 'flex' }}> + <div style={{ margin: '2px 4px 0px 0px', lineHeight: '1px' }}> + <input type='checkbox' + key={todo.id} + checked={todo.status} + onClick={() => completeTodo(todo.id)} + ></input> + </div> + <div className={`todo ${todo.status ? 't-complete' : ''}`} onClick={() => lengthCheck()}>{todo.text}</div> + </div> + <div> + <CgCloseO onClick={() => removeTodo(todo.id)} style={{ fontSize: '18px', cursor: 'pointer', color: '#ccc' }} /> </div> - <div>{todo.text}</div> - </div> - <div> - <CgCloseO onClick={() => removeTodo(todo.id)} style={{ fontSize: '18px', cursor: 'pointer', color: '#ccc' }} /> </div> - </div> - ) : '' } + ) : ''} </> )); }; diff --git a/src/components/TodoForm.js b/src/components/TodoForm.js index 49063eb..cda78f3 100644 --- a/src/components/TodoForm.js +++ b/src/components/TodoForm.js @@ -32,8 +32,6 @@ function TodoForm(props) { <button className="btn" onClick={Submit}>Submit</button> </div> </form> - - <h4 style={{ textAlign: 'center', marginBottom: '10px' }}>Completed Todos</h4> </> ); diff --git a/src/components/TodoItem.js b/src/components/TodoItem.js index 2fda21c..d238da1 100644 --- a/src/components/TodoItem.js +++ b/src/components/TodoItem.js @@ -1,21 +1,47 @@ import React from 'react' import { CgCloseO } from "react-icons/cg"; -const TodoItem = () => { +const TodoItem = ({ todos, completeTodo, removeTodo, editTodo, handleEditChange, editId, inputValue, setInputValue, escFunction }) => { return ( <div className="task"> - <div className="task-body-content"> - <div style={{ display: 'flex' }}> - <div style={{ margin: '2px 4px 0px 0px' }}> - <input type='checkbox' defaultChecked={false}></input> + + {/*** List Todos ***/} + + {editId !== todos.id ? ( + todos.status === false ? ( + <div className="task-body-content"> + <div style={{ display: 'flex' }}> + <div style={{ margin: '2px 4px 0px 0px', lineHeight: '1px' }}> + <input type='checkbox' + checked={todos.status} + onChange={() => completeTodo(todos.id)} + ></input> + </div> + <div onClick={() => handleEditChange(todos.id, todos.text)} style={{ cursor: 'pointer' }}>{todos.text}</div> + </div> + <div> + <CgCloseO onClick={() => removeTodo(todos.id)} style={{ fontSize: '18px', cursor: 'pointer', color: '#ccc' }} /> + </div> + </div> + ) : '' + ) : ( + <> + {/*** Edit Todos ***/} + + <div className="add-form"> + <div className='form-control'> + <input + type="text" + value={inputValue} + onChange={(e) => setInputValue(e.target.value)} + escFunction={(e) => escFunction(e.key)} + /> + </div> + <button className="btn" onClick={() => editTodo(todos.id, inputValue)}>Save</button> </div> - <div>Item 1</div> - </div> - <div> - <CgCloseO style={{ fontSize: '18px', cursor: 'pointer', color: '#ccc' }} /> - </div> - </div> - </div> + </> + )} + </div > ) } diff --git a/src/components/Todos.js b/src/components/Todos.js new file mode 100644 index 0000000..9a0ac09 --- /dev/null +++ b/src/components/Todos.js @@ -0,0 +1,14 @@ +import React from 'react' +import TodoItem from './TodoItem' + +const Todos = ({ todos, removeTodo, completeTodo, editTodo, handleEditChange, inputValue, setInputValue, escFunction, editId }) => { + return ( + <div> + {todos.map((todos) => ( + <TodoItem key={todos.id} todos={todos} removeTodo={removeTodo} completeTodo={completeTodo} editTodo={editTodo} handleEditChange={handleEditChange} inputValue={inputValue} setInputValue={setInputValue} escFunction={escFunction} editId={editId} /> + ))} + </div> + ) +} + +export default Todos diff --git a/src/index.css b/src/index.css index 8362dda..0ffd5e5 100644 --- a/src/index.css +++ b/src/index.css @@ -7,7 +7,7 @@ body { font-family: sans-serif; background-color: #cccccc24; - font-size: 14px; + font-size: 16px; } .btn { @@ -29,12 +29,12 @@ body { .add-form { display: flex; - justify-content: space-around; - margin: 10px 0px; + justify-content: space-between; + margin: 10px 10px 10px 5px; } .form-control input { - width: 100%; + width: 20rem; height: 35px; margin: 5px 2px 3px 3px; padding: 3px 7px; @@ -48,7 +48,7 @@ footer { } .task-main { - width: 25em; + width: 26rem; margin: 15rem auto; border-bottom: 1px solid rgba(0, 0, 0, .125); border-radius: 4px; @@ -78,5 +78,5 @@ footer { } .t-complete { - background-color: green; + text-decoration: line-through; } \ No newline at end of file -- libgit2 0.27.0