all repos — h3 @ a10856afd1e8a04af2a7f9914b657984a56787a5

A tiny, extremely minimalist JavaScript microframework.

docs/example/assets/js/components/Todo.js

 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
import { h3, h } from "../h3.js";

export default function Todo(data) {
    const todoStateClass = data.done ? ".done" : ".todo";
    const toggleTodo = (key) => {
        h3.dispatch("todos/toggle", key);
        h3.redraw();
    };
    const removeTodo = (key) => {
        h3.dispatch("todos/remove", key);
        h3.redraw();
    };
    return h(`div.todo-item`, { data: { key: data.key } }, [
        h(`div.todo-content${todoStateClass}`, [
            h(
                "span.todo-text",
                {
                    onclick: (e) =>
                        toggleTodo(
                            e.currentTarget.parentNode.parentNode.dataset.key
                        ),
                },
                data.text
            ),
        ]),
        h(
            "span.delete-todo",
            {
                onclick: (e) =>
                    removeTodo(e.currentTarget.parentNode.dataset.key),
            },
            "✘"
        ),
    ]);
}