v2 - suppression et sauvegarde
This commit is contained in:
30
src/App.vue
30
src/App.vue
@ -17,6 +17,7 @@
|
|||||||
<label>
|
<label>
|
||||||
<input type="checkbox" v-model="todo.completed">
|
<input type="checkbox" v-model="todo.completed">
|
||||||
{{ todo.title }}
|
{{ todo.title }}
|
||||||
|
<button class="delete" @click="deleteTodo(todo.id)">Supprimer</button>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
@ -35,7 +36,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
import { ref } from 'vue';
|
import { ref, onMounted } from 'vue';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const hideCompleted = ref(false)
|
const hideCompleted = ref(false)
|
||||||
@ -46,9 +48,11 @@ const addTodo = () => {
|
|||||||
todos.value.push({
|
todos.value.push({
|
||||||
title: newTodo.value,
|
title: newTodo.value,
|
||||||
completed: false,
|
completed: false,
|
||||||
date: Date.now()
|
date: Date.now(),
|
||||||
|
id: Date.now() + Math.random()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
saveTodosToLocalStorage();
|
||||||
newTodo.value = '';
|
newTodo.value = '';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -60,5 +64,27 @@ const sortedTodos = () => {
|
|||||||
return sortedTodo
|
return sortedTodo
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const deleteTodo = (id) => {
|
||||||
|
const index = todos.value.findIndex(todo => todo.id === id);
|
||||||
|
if (index !== -1) {
|
||||||
|
todos.value.splice(index, 1);
|
||||||
|
saveTodosToLocalStorage();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const saveTodosToLocalStorage = () => {
|
||||||
|
localStorage.setItem('todos', JSON.stringify(todos.value));
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
const savedTodos = localStorage.getItem('todos');
|
||||||
|
if (savedTodos) {
|
||||||
|
todos.value = JSON.parse(savedTodos);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,4 +1,14 @@
|
|||||||
.completed {
|
.completed {
|
||||||
opacity: .5;
|
opacity: .5;
|
||||||
text-decoration: line-through;
|
text-decoration: line-through;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 30px;
|
||||||
|
width: auto;
|
||||||
|
color: red;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user