#forms #html #rooting #generate #macro #structs #title

rooting_forms_proc_macros

从结构体(辅助工具包)生成 HTML(根)表单

3 个版本

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

#78#title

Download history 1/week @ 2024-05-23 4/week @ 2024-05-30

每月 77 次下载
rooting-forms 中使用

ISC 许可证

22KB
405 代码行

此工具提供了特性和一个 derive 宏,用于从结构体和枚举生成根 HTML 表单。

示例

#[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() 调用中清除。

依赖项

~1.5MB
~39K SLoC