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
use crate::{input::text_input, Todo};
use mox::mox;
use moxie_dom::{
elements::sectioning::{h1, header, Header},
prelude::*,
};
use tracing::info;
#[topo::nested]
#[illicit::from_env(todos: &Key<Vec<Todo>>)]
pub fn input_header() -> Header {
let todos = todos.clone();
mox! {
<header class="header">
<h1>"todos"</h1>
{ text_input(
"What needs to be done?",
false,
move |value: String| {
todos.update(|prev| {
let mut todos: Vec<Todo> = prev.to_vec();
todos.push(Todo::new(value));
info!({ ?todos }, "added new todo");
Some(todos)
});
},
)}
</header>
}
}