vertigo_forms/input/
list_input.rs

1use vertigo::{AttrGroup, Value, bind, component, dom};
2
3/// Input connected to provided `Value<Vec<String>>`.
4///
5/// It parsed a comma-separated input string and sets value as a vector.
6#[component]
7pub fn ListInput(value: Value<Vec<String>>, input: AttrGroup) {
8    let value_str = value.map(|v| v.join(","));
9
10    let on_input = bind!(value, |new_value: String| {
11        value.set(
12            new_value
13                .split(',')
14                .filter_map(|v| {
15                    let v = v.trim();
16                    if v.is_empty() {
17                        None
18                    } else {
19                        Some(v.to_string())
20                    }
21                })
22                .collect(),
23        );
24    });
25
26    dom! {
27        <input value={value_str} on_input={on_input} {..input} />
28    }
29}