Components / Wizard

Wizard

A task in steps that can refuse to be left.

Example

The component itself, running in WebAssembly, beside its code in a playground. Try it.

Code

use ravenrs::prelude::*;

fn wizard() -> impl View {
    let step = State::new(0);
    let name = State::new(String::new());
    let filled = name.clone();
    Wizard::new(
        step.binding(),
        vec![
            WizardStep::new("Account", FormField::new("Name", TextField::new(name.binding()))).check(
                move || {
                    if filled.get().trim().is_empty() { Err("Fill in the name".to_owned()) } else { Ok(()) }
                },
            ),
            WizardStep::new("Opening balance", Text::new("How much it holds today")),
            WizardStep::new("Review", Text::new("Everything is ready")),
        ],
    )
    .on_finish(|| {})
}

Open in the playground, with every example →

Full API of Wizard →