From 6962f200293bfdc4f78c798d91a3d13b8aa8d146 Mon Sep 17 00:00:00 2001
From: Matt Marcha <matt@marcha.pro>
Date: Sat, 10 Aug 2024 12:47:53 -1000
Subject: [PATCH] section 9

---
 awesome_owl/static/src/todo_list/todo_list.js  | 17 ++++++++++++-----
 awesome_owl/static/src/todo_list/todo_list.xml |  1 +
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/awesome_owl/static/src/todo_list/todo_list.js b/awesome_owl/static/src/todo_list/todo_list.js
index 7cfcd08..1f24099 100644
--- a/awesome_owl/static/src/todo_list/todo_list.js
+++ b/awesome_owl/static/src/todo_list/todo_list.js
@@ -8,10 +8,17 @@ export class TodoList extends Component {
     static components = { TodoItem };
 
     setup() {
-        this.todos = useState([
-            {id: 3, description: "buy milk", isCompleted: false },
-            { id: 1, description: "have a shower", isCompleted: true },
-            { id: 2, description: "sing loudly", isCompleted: false }
-        ]);
+        this.todos = useState([]);
+    }
+
+    addTodo(ev) {
+        // If the key was enter and input isn't empty
+        if(ev.keyCode === 13) {
+            if(ev.target.value !== '') {
+                // Let's create a todo
+                this.todos.push({ id: this.todos.length+1, description: ev.target.value, isCompleted: false });
+                ev.target.value = '';
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/awesome_owl/static/src/todo_list/todo_list.xml b/awesome_owl/static/src/todo_list/todo_list.xml
index 83537a0..0ff8792 100644
--- a/awesome_owl/static/src/todo_list/todo_list.xml
+++ b/awesome_owl/static/src/todo_list/todo_list.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <templates xml:space="preserve">
     <t t-name="awesome_owl.todo_list">
+       <p><input type="text" name="new-todo" placeholder="Add new todo" t-on-keyup="addTodo" /></p>
        <div class="d-inline-block border p-2 m-2">
             <t t-foreach="todos" t-as="todo" t-key="todo.id">
                 <TodoItem todo="todo" />