Skip to content

Commit cd30489

Browse files
committed
fix
1 parent a1c6afa commit cd30489

File tree

6 files changed

+25
-29
lines changed

6 files changed

+25
-29
lines changed

src/basics/FontAwesomeIcon.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<svg
33
xmlns="http://www.w3.org/2000/svg"
4-
:class="$props.class"
4+
:class="className"
55
:viewBox="`0 0 ${width} ${height}`"
66
>
77
<path fill="currentColor" :d="svgPath" />
@@ -27,7 +27,7 @@ export default defineComponent({
2727
type: String as PropType<"fas" | "fal" | "far">,
2828
default: "fas"
2929
},
30-
class: String
30+
className: String
3131
},
3232
3333
setup(props) {

src/components/CreateTodoForm.vue

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
required
77
class="form-control px-5 py-4"
88
v-model.trim="state.title"
9+
@change="$emit('update:newTodoTitle', $event.target.value)"
910
/>
1011
</form>
1112
</template>
@@ -33,20 +34,14 @@ export default defineComponent({
3334
3435
emits: ["update:newTodoTitle"],
3536
36-
setup(props, context) {
37+
setup(props) {
3738
const state = reactive<State>({ title: props.newTodoTitle });
3839
watch(
3940
() => props.newTodoTitle,
4041
newValue => {
4142
state.title = newValue;
4243
}
4344
);
44-
watch(
45-
() => state.title,
46-
newValue => {
47-
context.emit("update:newTodoTitle", newValue);
48-
}
49-
);
5045
return { state };
5146
}
5247
});

src/components/EditTodoForm.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</template>
1313

1414
<script lang="ts">
15-
import { defineComponent, PropType, Ref, ref, onMounted } from "vue";
15+
import { defineComponent, PropType, ref, onMounted } from "vue";
1616
import type Todo from "@/models/todo";
1717
1818
export type HandleCancelEdit = () => void;
@@ -36,7 +36,7 @@ export default defineComponent({
3636
3737
setup(props) {
3838
const todoBeingEdited: Todo = { ...props.todo };
39-
const input: Ref<HTMLInputElement | null> = ref(null);
39+
const input = ref<HTMLInputElement | null>(null);
4040
onMounted(() => {
4141
input.value?.focus();
4242
});

src/components/TodoItem.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
<span>{{ todo.title }}</span>
1212
</div>
1313
<div class="my-n2">
14-
<button class="btn px-1 mr-1" @click="handleClickEdit(todo)">
15-
<fa icon="edit" class="edit-icon"></fa>
14+
<button class="btn px-1 mr-1" @click="handleClickEdit(todo.id)">
15+
<FontAwesomeIcon icon="edit" className="edit-icon" />
1616
</button>
17-
<button class="btn px-1" @click="handleClickRemove(todo)">
18-
<fa icon="trash" class="trash-icon"></fa>
17+
<button class="btn px-1" @click="handleClickRemove(todo.id)">
18+
<FontAwesomeIcon icon="trash" className="trash-icon" />
1919
</button>
2020
</div>
2121
</li>
@@ -27,11 +27,11 @@ import { FontAwesomeIcon } from "@/plugins/font-awesome";
2727
import Todo from "@/models/todo";
2828
2929
export type HandleToggleCompleted = (todo: Todo) => void;
30-
export type HandleClickEdit = (todo: Todo) => void;
31-
export type HandleClickRemove = (todo: Todo) => void;
30+
export type HandleClickEdit = (todoId: string) => void;
31+
export type HandleClickRemove = (todoId: string) => void;
3232
3333
export default defineComponent({
34-
components: { fa: FontAwesomeIcon },
34+
components: { FontAwesomeIcon },
3535
3636
props: {
3737
todo: {

src/components/TodoList.vue

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ import type {
3535
} from "@/components/EditTodoForm.vue";
3636
3737
export type HandleSubmitEditedTodo = (editedTodo: Todo) => void;
38+
export type { HandleToggleCompleted, HandleClickRemove }
3839
3940
type State = {
40-
todoIdBeingEdited: string | null;
41+
todoIdBeingEdited?: string;
4142
};
4243
4344
export default defineComponent({
@@ -64,7 +65,7 @@ export default defineComponent({
6465
6566
setup(props) {
6667
const state = reactive<State>({
67-
todoIdBeingEdited: null,
68+
todoIdBeingEdited: undefined,
6869
});
6970
const isTodoBeingEdited = (todo: Todo) =>
7071
todo.id === state.todoIdBeingEdited;
@@ -73,16 +74,17 @@ export default defineComponent({
7374
editedTodo
7475
) => {
7576
props.handleSubmitEditedTodo(editedTodo);
76-
state.todoIdBeingEdited = null;
77+
state.todoIdBeingEdited = undefined;
7778
};
78-
const handleClickEdit: HandleClickEdit = (todo) => {
79-
state.todoIdBeingEdited = todo.id;
79+
const handleClickEdit: HandleClickEdit = (todoId) => {
80+
state.todoIdBeingEdited = todoId;
8081
};
8182
const handleCancelEdit: HandleCancelEdit = () => {
82-
state.todoIdBeingEdited = null;
83+
state.todoIdBeingEdited = undefined;
8384
};
8485
8586
return {
87+
state,
8688
isTodoBeingEdited,
8789
handleSubmitEditedTodoAndReset,
8890
handleClickEdit,

src/pages/Index.vue

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ import TodoList from "@/components/TodoList.vue";
2121
import useTodos from "@/composables/use-todos";
2222
2323
import type { HandleSubmitNewTodo } from "@/components/CreateTodoForm.vue";
24-
import type { HandleSubmitEditedTodo } from "@/components/TodoList.vue";
2524
import type {
25+
HandleSubmitEditedTodo,
2626
HandleToggleCompleted,
2727
HandleClickRemove,
28-
} from "@/components/TodoItem.vue";
28+
} from "@/components/TodoList.vue";
2929
3030
type State = {
3131
newTodoTitle: string;
@@ -49,9 +49,8 @@ export default defineComponent({
4949
const { id, title, completed } = todo;
5050
updateTodo({ id, title, completed: !completed });
5151
};
52-
const handleClickRemove: HandleClickRemove = (todo) => {
53-
const { id } = todo;
54-
removeTodo({ id });
52+
const handleClickRemove: HandleClickRemove = (todoId) => {
53+
removeTodo({ id: todoId });
5554
};
5655
const handleSubmitEditedTodo: HandleSubmitEditedTodo = (editedTodo) => {
5756
const { id, title, completed } = editedTodo;

0 commit comments

Comments
 (0)