dioxus-field 0.1.0

A form-library-agnostic field convention for Dioxus
Documentation
use std::rc::Rc;

use dioxus::prelude::*;
use dioxus_core::VirtualDom;
use dioxus_field::{
    Binding, Field, FieldContext, FieldDescription, FieldError, FieldMetaValues, Label,
    use_field_meta_state,
};

fn app() -> Element {
    let mut name = use_signal(String::new);
    let binding: Binding<String> = name.into();
    let meta = use_field_meta_state(FieldMetaValues {
        id: Some(Rc::from("profile-name")),
        name: Some(Rc::from("name")),
        required: true,
        errors: vec![Rc::from("Enter a name")],
        ..FieldMetaValues::default()
    });

    rsx! {
        Field { context: FieldContext::new(binding).with_meta(meta),
            Label { "Name" }
            input {
                value: name,
                oninput: move |event| name.set(event.value()),
                ..meta.attributes(),
            }
            FieldDescription { id: "profile-name-help", "Shown on your profile" }
            FieldError { id: "profile-name-error" }
        }
    }
}

fn main() {
    let mut dom = VirtualDom::new(app);
    dom.rebuild_in_place();

    println!("{}", dioxus_ssr::render(&dom));
}