#forms #html #structs #macro-derive #rooting #generate #password

rooting-forms

从结构体生成 HTML(rooting)表单

3 个版本

0.0.4 2024年2月22日
0.0.3 2024年2月19日
0.0.1 2023年10月24日

#507 in 数据结构

Download history 4/week @ 2024-03-14 15/week @ 2024-03-28 6/week @ 2024-04-04

每月 61 次下载

ISC 许可证

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