diff --git a/examples/text_box.rs b/examples/text_box.rs index 6c1b71b3e4c03ae83c4f3a4c64730f3b40f6397e..3c24ec7ab84af8ccae643b5f99c08459092a48ea 100644 --- a/examples/text_box.rs +++ b/examples/text_box.rs @@ -4,6 +4,7 @@ use bevy::{ DefaultPlugins, }; use kayak_core::Color; +use kayak_render_macros::use_state; use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle}; use kayak_ui::core::{ render, rsx, @@ -14,13 +15,9 @@ use kayak_ui::widgets::{App, OnChange, TextBox, Window}; #[widget] fn TextBoxExample(context: &mut KayakContext) { - let value = context - .create_state("I started with a value!".to_string()) - .unwrap(); - let red_value = context - .create_state("This text is red".to_string()) - .unwrap(); - let empty_value = context.create_state("".to_string()).unwrap(); + let (value, set_value, _) = use_state!("I started with a value!".to_string()); + let (empty_value, set_empty_value, _) = use_state!("".to_string()); + let (red_value, set_red_value, _) = use_state!("This text is red".to_string()); let input_styles = Style { top: StyleProp::Value(Units::Pixels(10.0)), @@ -32,34 +29,28 @@ fn TextBoxExample(context: &mut KayakContext) { ..input_styles.clone() }; - let cloned_value = value.clone(); let on_change = OnChange::new(move |event| { - cloned_value.set(event.value); + set_value(event.value); }); - let cloned_value2 = empty_value.clone(); - let on_change2 = OnChange::new(move |event| { - cloned_value2.set(event.value); + let on_change_empty = OnChange::new(move |event| { + set_empty_value(event.value); }); - let cloned_red_value = red_value.clone(); let on_change_red = OnChange::new(move |event| { - cloned_red_value.set(event.value); + set_red_value(event.value); }); - let current_value = value.get(); - let current_value2 = empty_value.get(); - let current_red_value = red_value.get(); rsx! { <Window position={(50.0, 50.0)} size={(300.0, 300.0)} title={"TextBox Example".to_string()}> - <TextBox styles={Some(input_styles)} value={current_value} on_change={Some(on_change)} /> + <TextBox styles={Some(input_styles)} value={value} on_change={Some(on_change)} /> <TextBox styles={Some(input_styles)} - value={current_value2} - on_change={Some(on_change2)} + value={empty_value} + on_change={Some(on_change_empty)} placeholder={Some("This is a placeholder".to_string())} /> - <TextBox styles={Some(red_text_styles)} value={current_red_value} on_change={Some(on_change_red)} /> + <TextBox styles={Some(red_text_styles)} value={red_value} on_change={Some(on_change_red)} /> </Window> } }