<div id="app">
<input v-model="newTodo" @keyup.enter="addTodo" placeholder="Add todo" />
<button @click="addTodo">Add</button>
<ul>
<li v-for="(todo, index) in todos" :key="todo.id">
<input type="checkbox"
:checked="todo.done"
@change="toggleTodo(todo.id)" />
<span :class="{ done: todo.done }">
{{ index + 1 }}. {{ todo.text }}
</span>
<button @click="removeTodo(todo.id)">×</button>
</li>
</ul>
<p v-show="todos.length === 0">No todos yet!</p>
<p>{{ remaining }} of {{ todos.length }} remaining</p>
</div>
<script type="module">
import { createApp, ref, reactive, computed } from '@wrium/wrium';
createApp(() => {
const newTodo = ref('');
const todos = reactive([]);
let nextId = 1;
const remaining = computed(() => todos.filter(t => !t.done).length);
function addTodo() {
if (!newTodo.value.trim()) return;
todos.push({ id: nextId++, text: newTodo.value, done: false });
newTodo.value = '';
}
function removeTodo(id) {
const idx = todos.findIndex(t => t.id === id);
if (idx > -1) todos.splice(idx, 1);
}
function toggleTodo(id) {
const todo = todos.find(t => t.id === id);
if (todo) todo.done = !todo.done;
}
return { newTodo, todos, remaining, addTodo, removeTodo, toggleTodo };
}).mount('#app');
</script>
Continue with the API Reference.