Blocks for building forms in vertigo.
See Changelog for recent features.
Dependencies:
vertigo = "0.6"
vertigo-forms = { git = "https://github.com/vertigo-web/vertigo-forms" }
Example:
use vertigo::{computed_tuple, main, prelude::*};
use vertigo_forms::{Input, Select};
#[derive(Default)]
struct FormData {
brand: Value<String>,
model: Value<String>,
year: Value<String>,
engine: Value<String>,
}
#[main]
fn render() -> DomNode {
let form_data = FormData::default();
let engine_types = Value::new(vec![
"petrol".to_string(),
"diesel".to_string(),
"electric".to_string(),
]);
let data_formatted = computed_tuple!(
brand => form_data.brand,
model => form_data.model,
engine => form_data.engine,
year => form_data.year
)
.map(|(brand, model, engine, year)|
format!("{} {}, {} ({})", brand, model, engine, year)
);
dom! {
<html>
<head />
<body>
<form>
<p>"Brand: " <Input value={form_data.brand} /></p>
<p>"Model: " <Input value={form_data.model} /></p>
<p>"Year: " <Input value={form_data.year} /></p>
<p>"engine: " <Select value={form_data.engine} options={engine_types} /></p>
</form>
<p>
"Form data: " {data_formatted}
</p>
</body>
</html>
}
}
Make sure you're using nightly version of rust:
rustup default nightly
Install vertigo-cli:
cargo install vertigo-cli
Build and run storybook in watch mode:
vertigo watch vertigo-forms-storybook
Eventually terminal will let you know that app is available under http://localhost:4444/
If you want to play around with the code, the browser will automatically refresh after the project has been recompiled.
To run the example in watch mode (it will run also on localhost:4444):
vertigo watch vertigo-forms-example-form