| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- <template>
 
-   <li :class="{ completed: todo.done, editing: editing }" class="todo">
 
-     <div class="view">
 
-       <input
 
-         :checked="todo.done"
 
-         class="toggle"
 
-         type="checkbox"
 
-         @change="toggleTodo( todo)"
 
-       >
 
-       <label @dblclick="editing = true" v-text="todo.text" />
 
-       <button class="destroy" @click="deleteTodo( todo )" />
 
-     </div>
 
-     <input
 
-       v-show="editing"
 
-       v-focus="editing"
 
-       :value="todo.text"
 
-       class="edit"
 
-       @keyup.enter="doneEdit"
 
-       @keyup.esc="cancelEdit"
 
-       @blur="doneEdit"
 
-     >
 
-   </li>
 
- </template>
 
- <script>
 
- export default {
 
-   name: 'Todo',
 
-   directives: {
 
-     focus(el, { value }, { context }) {
 
-       if (value) {
 
-         context.$nextTick(() => {
 
-           el.focus()
 
-         })
 
-       }
 
-     }
 
-   },
 
-   props: {
 
-     todo: {
 
-       type: Object,
 
-       default: function() {
 
-         return {}
 
-       }
 
-     }
 
-   },
 
-   data() {
 
-     return {
 
-       editing: false
 
-     }
 
-   },
 
-   methods: {
 
-     deleteTodo(todo) {
 
-       this.$emit('deleteTodo', todo)
 
-     },
 
-     editTodo({ todo, value }) {
 
-       this.$emit('editTodo', { todo, value })
 
-     },
 
-     toggleTodo(todo) {
 
-       this.$emit('toggleTodo', todo)
 
-     },
 
-     doneEdit(e) {
 
-       const value = e.target.value.trim()
 
-       const { todo } = this
 
-       if (!value) {
 
-         this.deleteTodo({
 
-           todo
 
-         })
 
-       } else if (this.editing) {
 
-         this.editTodo({
 
-           todo,
 
-           value
 
-         })
 
-         this.editing = false
 
-       }
 
-     },
 
-     cancelEdit(e) {
 
-       e.target.value = this.todo.text
 
-       this.editing = false
 
-     }
 
-   }
 
- }
 
- </script>
 
 
  |