File size: 1,606 Bytes
ef3df75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// App Data
const todos = [
    { title: 'Todo 1', completed: false },
    { title: 'Todo 2', completed: false },
    { title: 'Todo 3', completed: false },
    { title: 'Todo 4', completed: false },
    { title: 'Todo 5', completed: false }
]

// AlpineJS App
const app = document.getElementById('app')

app.innerHTML = `
    <div class="container">
        <h1>Todo List</h1>
        <ol>
            <li v-for="todo in todos" x-transition>
                <Checkbox v-model="todo.completed" @toggle="completeTodo(todo)" />
                {{ todo.title }}
                {{ todo.completed ? 'done' : 'to-do' }}
            </li>
        </ol>
        <div class="footer">
            <p>{{ countdown }} seconds left</p>
        </div>
        <button x-data="{ show: true }" x-show="show" x-on:click="show = false">Stop Timer</button>
    </div>
`

// Completed Todo List
const completedTodos = todos.filter((todo) => todo.completed)
const completedTodosList = document.getElementById('completedTodos')

completedTodosList.innerHTML = `
    <div class="container">
        <h1>Completed Todos</h1>
        <ol>
            <li v-for="todo in completedTodos" x-transition>
                <Checkbox v-model="todo.completed" @toggle="completeTodo(todo)" />
                {{ todo.title }}
                {{ todo.completed ? 'done' : 'to-do' }}
            </li>
        </ol>
    </div>
`

// Start Timer
const timer = 10
const countdown = document.getElementById('countdown')

countdown.innerHTML = `
    <div class="container">
        <h1>Timer</h1>
        <p>${timer} seconds left</p>
    </div>
`