diff --git a/components/AddTodoInput.js b/components/AddTodoInput.js new file mode 100644 index 0000000..83357a0 --- /dev/null +++ b/components/AddTodoInput.js @@ -0,0 +1,32 @@ +class AddTodoInput extends React.Component { + constructor(props) { + super(props); + this.state = { + text: '' + }; + } + + handleInput(e) { + this.setState({ text: e.target.value }); + } + + handleSubmit(e) { + e.preventDefault(); + addTodo(this.state.text); + this.setState({ text: '' }); + } + + render() { + return ( +
+ + +
+ ); + } +} + +ReactDOM.render(, document.querySelector('[data-react-component="AddTodoInput"]')); diff --git a/components/RemoveCompletedButton.js b/components/RemoveCompletedButton.js new file mode 100644 index 0000000..136f305 --- /dev/null +++ b/components/RemoveCompletedButton.js @@ -0,0 +1,25 @@ +class RemoveCompletedButton extends React.Component { + handleClick() { + removeCheckedItems(); + } + + render() { + if(this.props.show) { + return ( + + ); + } + return null; + } +} + +RemoveCompletedButton.defaultProps = { + show: false +}; + +ReactDOM.render( + , + document.querySelector('[data-react-component="RemoveCompletedButton"]') +); diff --git a/index.html b/index.html index c94c32c..920c01d 100644 --- a/index.html +++ b/index.html @@ -11,15 +11,15 @@

To Do List

-
- - -
- + + + + + + + diff --git a/jquery/todo.js b/jquery/todo.js index d5a0322..abb1fa2 100644 --- a/jquery/todo.js +++ b/jquery/todo.js @@ -39,30 +39,17 @@ function toggleComplete(todo) { } } +function removeCheckedItems() { + $('#todos input:checked').closest('li').remove(); + maybeHideDeleteAll(); + +} + function maybeHideDeleteAll() { var completedItems = $('#todos input:checked').length; - if(completedItems > 0) { - $('#clearCompleted').show(); - } else { - $('#clearCompleted').hide(); - } + ReactDOM.render( + React.createElement(RemoveCompletedButton, { show: completedItems > 0 }), + document.querySelector('[data-react-component="RemoveCompletedButton"]') + ); } -// Attach the DOM events once the page has loaded -$(document).ready(function() { - // When the form input is submitted, add the todo item - $("#addForm").on('submit', function(e) { - e.preventDefault(); - var input = $("input#todoInput"); - addTodo(input.val()); - input.val(""); - }); - - // When the form input is submitted, add the todo item - $("#clearCompleted").on('click', function(e) { - e.preventDefault(e); - $('#todos input:checked').closest('li').remove(); - $(this).hide(); - }); -}); -