3 个版本
0.0.4 | 2024年2月22日 |
---|---|
0.0.3 | 2024年2月19日 |
0.0.1 | 2023年10月24日 |
#507 in 数据结构
每月 61 次下载
37KB
922 代码行
这提供了从结构体和枚举生成 rooting HTML 表单的特性和 derive 宏。
示例
#[derive(rooting_forms::Form)]
struct Creds {
#[title("Your username")]
username: String,
#[title("Your password")]
password: rooting_forms::Password,
}
...
let ok_button = el("button").text("Ok");
let (creds_form, creds_form_state) = Creds::new_form("", None);
ok_button.ref_on("click", move |_| {
let Ok(creds) = creds_form_state.parse() else {
return;
};
do_login(creds);
});
let modal =
el(
"div",
).extend(vec![el("div").classes(&["form_grid"]).extend(creds_form.elements), ok_button]);
...
创建表单
在您的表单类型上调用 ::new_form
。第一个参数可以是空的(它用于嵌套字段的 aria 提示,但不用于顶级结构体)。第二个参数是 Some
,如果您想从现有数据预先填充表单,例如在编辑某物时。
new_form
返回表单 rooting::El
元素和状态对象。
对状态对象调用 parse()
任意次数。它将返回解析的对象或空的错误。任何错误消息都将自动放置在相关表单字段附近的错误元素中。错误消息将在下一个 parse()
中清除。
依赖关系
~7–9MB
~180K SLoC