use leptos::*; use leptos_dom::ev::SubmitEvent; #[component] pub fn ItemForm( on_submit: Box, String) + 'static> ) -> impl IntoView { let (name, set_name) = create_signal(String::new()); let (description, set_description) = create_signal(String::new()); let (tags, set_tags) = create_signal(Vec::<(String, String)>::new()); let (tag_key, set_tag_key) = create_signal(String::new()); let (tag_value, set_tag_value) = create_signal(String::new()); let (review, set_review) = create_signal(String::new()); // Handle adding a new tag let add_tag = move |_| { if !tag_key.get().is_empty() && !tag_value.get().is_empty() { set_tags.update(|t| t.push((tag_key.get(), tag_value.get()))); set_tag_key.set(String::new()); set_tag_value.set(String::new()); } }; // Handle form submission. let handle_submit = move |ev: SubmitEvent| { ev.prevent_default(); on_submit( name.get(), // Item name description.get(), // Item description tags.get().clone(), // Tags review.get(), // Review ); // Reset values after submission set_name.set(String::new()); set_description.set(String::new()); set_tags.set(vec![]); set_review.set(String::new()); }; view! {
// Item Name Input // Item Description Input