diff --git a/examples/boids/src/slider.rs b/examples/boids/src/slider.rs index faf29bb8e48..d207fc439b6 100644 --- a/examples/boids/src/slider.rs +++ b/examples/boids/src/slider.rs @@ -1,5 +1,8 @@ use std::cell::Cell; -use yew::{html, Callback, Component, ComponentLink, Html, InputData, Properties, ShouldRender}; +use yew::{ + html, web_sys::HtmlInputElement, Callback, Component, ComponentLink, Html, InputEvent, + Properties, ShouldRender, TargetCast, +}; thread_local! { static SLIDER_ID: Cell = Cell::default(); @@ -78,6 +81,11 @@ impl Component for Slider { 10f64.powi(-(p as i32)) }); + let oninput = onchange.reform(|e: InputEvent| { + let input: HtmlInputElement = e.target_unchecked_into(); + input.value_as_number() + }); + html! {
@@ -85,8 +93,7 @@ impl Component for Slider { {id} class="slider__input" min={min.to_string()} max={max.to_string()} step={step.to_string()} - oninput={onchange.reform(|data: InputData| data.value.parse().unwrap())} - value={value.to_string()} + {oninput} /> { display_value }
diff --git a/examples/crm/src/add_client.rs b/examples/crm/src/add_client.rs index 0b74e4496bd..9fdfc935375 100644 --- a/examples/crm/src/add_client.rs +++ b/examples/crm/src/add_client.rs @@ -1,6 +1,8 @@ use crate::Client; use yew::{ - classes, html, Callback, Component, ComponentLink, Html, InputData, Properties, ShouldRender, + classes, html, + web_sys::{Event, HtmlInputElement, HtmlTextAreaElement}, + Callback, Component, ComponentLink, Html, Properties, ShouldRender, TargetCast, }; #[derive(Debug)] @@ -72,26 +74,36 @@ impl Component for AddClientForm { fn view(&self) -> Html { let Self { link, client, .. } = self; + + let update_name = |f: fn(String) -> Msg| { + link.callback(move |e: Event| { + let input: HtmlInputElement = e.target_unchecked_into(); + f(input.value()) + }) + }; + + let update_desc = link.callback(|e: Event| { + let textarea: HtmlTextAreaElement = e.target_unchecked_into(); + Msg::UpdateDescription(textarea.value()) + }); + html! { <>