From df222c121a22f1ab30846f065c9c46425aeb424f Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 1 Sep 2023 15:38:55 -0500 Subject: [PATCH] port examples to new events --- docs/guide/examples/hello_world_tui_no_ctrl_c.rs | 4 ++-- docs/guide/examples/input_controlled.rs | 2 +- docs/guide/examples/meme_editor.rs | 2 +- docs/guide/examples/meme_editor_dark_mode.rs | 4 ++-- docs/guide/examples/rendering_lists.rs | 4 ++-- examples/compose.rs | 2 +- examples/counter.rs | 2 +- examples/crm.rs | 6 +++--- examples/file_upload.rs | 4 ++-- examples/form.rs | 4 ++-- examples/login_form.rs | 4 ++-- examples/shared_state.rs | 2 +- examples/textarea.rs | 2 +- examples/todomvc.rs | 6 +++--- examples/window_zoom.rs | 2 +- examples/xss_safety.rs | 2 +- packages/cli/Cargo.toml | 2 +- packages/core/tests/lifecycle.rs | 9 ++++++++- packages/core/tests/miri_full_app.rs | 9 ++++++++- packages/core/tests/suspense.rs | 2 +- packages/desktop/headless_tests/events.rs | 6 +++--- packages/dioxus-tui/examples/widgets.rs | 10 +++++----- packages/html/src/lib.rs | 2 +- packages/html/src/transit.rs | 2 +- packages/router/examples/simple_routes.rs | 2 +- 25 files changed, 55 insertions(+), 41 deletions(-) diff --git a/docs/guide/examples/hello_world_tui_no_ctrl_c.rs b/docs/guide/examples/hello_world_tui_no_ctrl_c.rs index 6afa21e6c..62131f0a3 100644 --- a/docs/guide/examples/hello_world_tui_no_ctrl_c.rs +++ b/docs/guide/examples/hello_world_tui_no_ctrl_c.rs @@ -1,7 +1,7 @@ // todo remove deprecated #![allow(non_snake_case, deprecated)] -use dioxus::events::{KeyCode, KeyboardEvent}; +use dioxus::events::KeyboardEvent; use dioxus::prelude::*; use dioxus_tui::TuiContext; @@ -26,7 +26,7 @@ fn App(cx: Scope) -> Element { background_color: "red", justify_content: "center", align_items: "center", - onkeydown: move |k: KeyboardEvent| if let KeyCode::Q = k.key_code { + onkeydown: move |k: KeyboardEvent| if let Code::KeyQ = k.code() { tui_ctx.quit(); }, diff --git a/docs/guide/examples/input_controlled.rs b/docs/guide/examples/input_controlled.rs index bf92072a3..e9f33ef53 100644 --- a/docs/guide/examples/input_controlled.rs +++ b/docs/guide/examples/input_controlled.rs @@ -14,7 +14,7 @@ fn App(cx: Scope) -> Element { // we tell the component what to render value: "{name}", // and what to do when the value changes - oninput: move |evt| name.set(evt.value.clone()), + oninput: move |evt| name.set(evt.value()), } }) } diff --git a/docs/guide/examples/meme_editor.rs b/docs/guide/examples/meme_editor.rs index c5a473da9..1bf4df0b4 100644 --- a/docs/guide/examples/meme_editor.rs +++ b/docs/guide/examples/meme_editor.rs @@ -28,7 +28,7 @@ fn MemeEditor(cx: Scope) -> Element { }, CaptionEditor { caption: caption, - on_input: move |event: FormEvent| {caption.set(event.value.clone());}, + on_input: move |event: FormEvent| {caption.set(event.value());}, }, } }) diff --git a/docs/guide/examples/meme_editor_dark_mode.rs b/docs/guide/examples/meme_editor_dark_mode.rs index e62a64eb7..893bc2cc8 100644 --- a/docs/guide/examples/meme_editor_dark_mode.rs +++ b/docs/guide/examples/meme_editor_dark_mode.rs @@ -62,7 +62,7 @@ pub fn DarkModeToggle(cx: Scope) -> Element { input { r#type: "checkbox", oninput: move |event| { - let is_enabled = event.value == "true"; + let is_enabled = event.value() == "true"; dark_mode.write().0 = is_enabled; }, }, @@ -97,7 +97,7 @@ fn MemeEditor(cx: Scope) -> Element { }, CaptionEditor { caption: caption, - on_input: move |event: FormEvent| {caption.set(event.value.clone());}, + on_input: move |event: FormEvent| {caption.set(event.value().clone());}, }, } }) diff --git a/docs/guide/examples/rendering_lists.rs b/docs/guide/examples/rendering_lists.rs index b95e712dc..05df11eb7 100644 --- a/docs/guide/examples/rendering_lists.rs +++ b/docs/guide/examples/rendering_lists.rs @@ -40,7 +40,7 @@ cx.render(rsx!( }, input { value: "{comment_field}", - oninput: |event| comment_field.set(event.value.clone()), + oninput: |event| comment_field.set(event.value()), } input { r#type: "submit", @@ -71,7 +71,7 @@ cx.render(rsx!( }, input { value: "{comment_field}", - oninput: |event| comment_field.set(event.value.clone()), + oninput: |event| comment_field.set(event.value()), } input { r#type: "submit", diff --git a/examples/compose.rs b/examples/compose.rs index 3ee6d36ae..5f5b9ebc1 100644 --- a/examples/compose.rs +++ b/examples/compose.rs @@ -73,7 +73,7 @@ fn compose(cx: Scope) -> Element { input { oninput: move |e| { - user_input.set(e.value.clone()); + user_input.set(e.value()); }, value: "{user_input}" } diff --git a/examples/counter.rs b/examples/counter.rs index f51083a95..1de77dc38 100644 --- a/examples/counter.rs +++ b/examples/counter.rs @@ -22,7 +22,7 @@ fn app(cx: Scope) -> Element { input { value: "{counter}", oninput: move |e| { - if let Ok(value) = e.value.parse::() { + if let Ok(value) = e.value().parse::() { counters.make_mut()[i] = value; } } diff --git a/examples/crm.rs b/examples/crm.rs index f3da8ab7a..7ab0c8ad7 100644 --- a/examples/crm.rs +++ b/examples/crm.rs @@ -119,7 +119,7 @@ fn ClientAdd(cx: Scope) -> Element { placeholder: "First Name…", required: "", value: "{first_name}", - oninput: move |e| first_name.set(e.value.clone()) + oninput: move |e| first_name.set(e.value()) } } @@ -135,7 +135,7 @@ fn ClientAdd(cx: Scope) -> Element { placeholder: "Last Name…", required: "", value: "{last_name}", - oninput: move |e| last_name.set(e.value.clone()) + oninput: move |e| last_name.set(e.value()) } } @@ -149,7 +149,7 @@ fn ClientAdd(cx: Scope) -> Element { id: "description", placeholder: "Description…", value: "{description}", - oninput: move |e| description.set(e.value.clone()) + oninput: move |e| description.set(e.value()) } } diff --git a/examples/file_upload.rs b/examples/file_upload.rs index c7358c685..882285ddf 100644 --- a/examples/file_upload.rs +++ b/examples/file_upload.rs @@ -16,7 +16,7 @@ fn App(cx: Scope) -> Element { r#type: "checkbox", checked: "{enable_directory_upload}", oninput: move |evt| { - enable_directory_upload.set(evt.value.parse().unwrap()); + enable_directory_upload.set(evt.value().parse().unwrap()); }, }, "Enable directory upload" @@ -30,7 +30,7 @@ fn App(cx: Scope) -> Element { onchange: |evt| { to_owned![files_uploaded]; async move { - if let Some(file_engine) = &evt.files { + if let Some(file_engine) = &evt.files() { let files = file_engine.files(); for file_name in files { sleep(std::time::Duration::from_secs(1)).await; diff --git a/examples/form.rs b/examples/form.rs index a7de142f3..897ffc710 100644 --- a/examples/form.rs +++ b/examples/form.rs @@ -14,8 +14,8 @@ fn app(cx: Scope) -> Element { div { h1 { "Form" } form { - onsubmit: move |ev| println!("Submitted {:?}", ev.values), - oninput: move |ev| println!("Input {:?}", ev.values), + onsubmit: move |ev| println!("Submitted {:?}", ev.values()), + oninput: move |ev| println!("Input {:?}", ev.values()), input { r#type: "text", name: "username" } input { r#type: "text", name: "full-name" } input { r#type: "password", name: "password" } diff --git a/examples/login_form.rs b/examples/login_form.rs index 5ee47e4b5..d7371dc50 100644 --- a/examples/login_form.rs +++ b/examples/login_form.rs @@ -13,8 +13,8 @@ fn app(cx: Scope) -> Element { let resp = reqwest::Client::new() .post("http://localhost:8080/login") .form(&[ - ("username", &evt.values["username"]), - ("password", &evt.values["password"]), + ("username", &evt.values()["username"]), + ("password", &evt.values()["password"]), ]) .send() .await; diff --git a/examples/shared_state.rs b/examples/shared_state.rs index d129f75d1..71345dfcb 100644 --- a/examples/shared_state.rs +++ b/examples/shared_state.rs @@ -65,7 +65,7 @@ fn DataEditor(cx: Scope, id: usize) -> Element { fn DataView(cx: Scope, id: usize) -> Element { let cool_data = use_shared_state::(cx).unwrap(); - let oninput = |e: FormEvent| cool_data.write().set(*id, e.value.clone()); + let oninput = |e: FormEvent| cool_data.write().set(*id, e.value()); let cool_data = cool_data.read(); let my_data = &cool_data.view(id).unwrap(); diff --git a/examples/textarea.rs b/examples/textarea.rs index df684aa85..62afc45bb 100644 --- a/examples/textarea.rs +++ b/examples/textarea.rs @@ -17,7 +17,7 @@ fn app(cx: Scope) -> Element { rows: "10", cols: "80", value: "{model}", - oninput: move |e| model.set(e.value.clone()), + oninput: move |e| model.set(e.value().clone()), } }) } diff --git a/examples/todomvc.rs b/examples/todomvc.rs index 4b25507a5..d5dff22e8 100644 --- a/examples/todomvc.rs +++ b/examples/todomvc.rs @@ -66,7 +66,7 @@ pub fn app(cx: Scope<()>) -> Element { value: "{draft}", autofocus: "true", oninput: move |evt| { - draft.set(evt.value.clone()); + draft.set(evt.value()); }, onkeydown: move |evt| { if evt.key() == Key::Enter && !draft.is_empty() { @@ -176,7 +176,7 @@ pub fn TodoEntry<'a>(cx: Scope<'a, TodoEntryProps<'a>>) -> Element { id: "cbg-{todo.id}", checked: "{todo.checked}", oninput: move |evt| { - cx.props.todos.make_mut()[&cx.props.id].checked = evt.value.parse().unwrap(); + cx.props.todos.make_mut()[&cx.props.id].checked = evt.value().parse().unwrap(); } } label { @@ -195,7 +195,7 @@ pub fn TodoEntry<'a>(cx: Scope<'a, TodoEntryProps<'a>>) -> Element { input { class: "edit", value: "{todo.contents}", - oninput: move |evt| cx.props.todos.make_mut()[&cx.props.id].contents = evt.value.clone(), + oninput: move |evt| cx.props.todos.make_mut()[&cx.props.id].contents = evt.value(), autofocus: "true", onfocusout: move |_| is_editing.set(false), onkeydown: move |evt| { diff --git a/examples/window_zoom.rs b/examples/window_zoom.rs index e45d71be2..3c4edbb90 100644 --- a/examples/window_zoom.rs +++ b/examples/window_zoom.rs @@ -14,7 +14,7 @@ fn app(cx: Scope) -> Element { r#type: "number", value: "{level}", oninput: |e| { - if let Ok(new_zoom) = e.value.parse::() { + if let Ok(new_zoom) = e.value().parse::() { level.set(new_zoom); window.webview.zoom(new_zoom); } diff --git a/examples/xss_safety.rs b/examples/xss_safety.rs index 5272d661b..73da2ff14 100644 --- a/examples/xss_safety.rs +++ b/examples/xss_safety.rs @@ -20,7 +20,7 @@ fn app(cx: Scope) -> Element { input { value: "{contents}", r#type: "text", - oninput: move |e| contents.set(e.value.clone()), + oninput: move |e| contents.set(e.value()), } } }) diff --git a/packages/cli/Cargo.toml b/packages/cli/Cargo.toml index a37798eee..8299a88a6 100644 --- a/packages/cli/Cargo.toml +++ b/packages/cli/Cargo.toml @@ -78,7 +78,7 @@ toml_edit = "0.19.11" # dioxus-rsx = "0.0.1" # bundling -tauri-bundler = { version = "1.2", features = ["native-tls-vendored"] } +tauri-bundler = { version = "=1.2", features = ["native-tls-vendored"] } tauri-utils = "1.3" dioxus-autofmt = { workspace = true } diff --git a/packages/core/tests/lifecycle.rs b/packages/core/tests/lifecycle.rs index 04f6bc3cf..37b966712 100644 --- a/packages/core/tests/lifecycle.rs +++ b/packages/core/tests/lifecycle.rs @@ -56,7 +56,14 @@ fn events_generate() { let mut dom = VirtualDom::new(app); _ = dom.rebuild(); - dom.handle_event("click", Rc::new(MouseData::default()), ElementId(1), true); + dom.handle_event( + "click", + Rc::new(PlatformEventData::new(Box::new(MouseData::new( + SerializedMouseData::default(), + )))), + ElementId(1), + true, + ); dom.mark_dirty(ScopeId(0)); let edits = dom.render_immediate(); diff --git a/packages/core/tests/miri_full_app.rs b/packages/core/tests/miri_full_app.rs index c1c6d52cc..93277b181 100644 --- a/packages/core/tests/miri_full_app.rs +++ b/packages/core/tests/miri_full_app.rs @@ -9,7 +9,14 @@ fn miri_rollover() { _ = dom.rebuild(); for _ in 0..3 { - dom.handle_event("click", Rc::new(MouseData::default()), ElementId(2), true); + dom.handle_event( + "click", + Rc::new(PlatformEventData::new(Box::new(MouseData::new( + SerializedMouseData::default(), + )))), + ElementId(2), + true, + ); dom.process_events(); _ = dom.render_immediate(); } diff --git a/packages/core/tests/suspense.rs b/packages/core/tests/suspense.rs index 7b2516447..abce7f8a6 100644 --- a/packages/core/tests/suspense.rs +++ b/packages/core/tests/suspense.rs @@ -36,7 +36,7 @@ fn suspended_child(cx: Scope) -> Element { cx.spawn(async move { val += 1; }); - return cx.suspend()?; + cx.suspend()?; } render!("child") diff --git a/packages/desktop/headless_tests/events.rs b/packages/desktop/headless_tests/events.rs index ac62cd37b..6765a8199 100644 --- a/packages/desktop/headless_tests/events.rs +++ b/packages/desktop/headless_tests/events.rs @@ -304,7 +304,7 @@ fn app(cx: Scope) -> Element { assert!(event.data.modifiers().is_empty()); assert_eq!(event.data.key().to_string(), "a"); assert_eq!(event.data.code().to_string(), "KeyA"); - assert_eq!(event.data.location, 0); + assert_eq!(event.data.location(), Location::Standard); assert!(event.data.is_auto_repeating()); recieved_events.modify(|x| *x + 1) @@ -317,7 +317,7 @@ fn app(cx: Scope) -> Element { assert!(event.data.modifiers().is_empty()); assert_eq!(event.data.key().to_string(), "a"); assert_eq!(event.data.code().to_string(), "KeyA"); - assert_eq!(event.data.location, 0); + assert_eq!(event.data.location(), Location::Standard); assert!(!event.data.is_auto_repeating()); recieved_events.modify(|x| *x + 1) @@ -330,7 +330,7 @@ fn app(cx: Scope) -> Element { assert!(event.data.modifiers().is_empty()); assert_eq!(event.data.key().to_string(), "a"); assert_eq!(event.data.code().to_string(), "KeyA"); - assert_eq!(event.data.location, 0); + assert_eq!(event.data.location(), Location::Standard); assert!(!event.data.is_auto_repeating()); recieved_events.modify(|x| *x + 1) diff --git a/packages/dioxus-tui/examples/widgets.rs b/packages/dioxus-tui/examples/widgets.rs index b5df35388..2d0a5bf72 100644 --- a/packages/dioxus-tui/examples/widgets.rs +++ b/packages/dioxus-tui/examples/widgets.rs @@ -18,7 +18,7 @@ fn app(cx: Scope) -> Element { justify_content: "center", input { - oninput: |data| if &data.value == "good"{ + oninput: |data| if &data.value()== "good"{ bg_green.set(true); } else{ bg_green.set(false); @@ -30,7 +30,7 @@ fn app(cx: Scope) -> Element { checked: "true", } input { - oninput: |data| if &data.value == "hello world"{ + oninput: |data| if &data.value()== "hello world"{ bg_green.set(true); } else{ bg_green.set(false); @@ -41,7 +41,7 @@ fn app(cx: Scope) -> Element { } input { oninput: |data| { - if (data.value.parse::().unwrap() - 40.0).abs() < 5.0 { + if (data.value().parse::().unwrap() - 40.0).abs() < 5.0 { bg_green.set(true); } else{ bg_green.set(false); @@ -55,7 +55,7 @@ fn app(cx: Scope) -> Element { } input { oninput: |data| { - if data.value == "10"{ + if data.value()== "10"{ bg_green.set(true); } else{ bg_green.set(false); @@ -68,7 +68,7 @@ fn app(cx: Scope) -> Element { } input { oninput: |data| { - if data.value == "hello world"{ + if data.value()== "hello world"{ bg_green.set(true); } else{ bg_green.set(false); diff --git a/packages/html/src/lib.rs b/packages/html/src/lib.rs index 55037b2dc..a39dceff2 100644 --- a/packages/html/src/lib.rs +++ b/packages/html/src/lib.rs @@ -46,5 +46,5 @@ pub mod prelude { pub use crate::eval::*; pub use crate::events::*; pub use crate::point_interaction::PointInteraction; - pub use keyboard_types::{self, Code, Key, Modifiers}; + pub use keyboard_types::{self, Code, Key, Location, Modifiers}; } diff --git a/packages/html/src/transit.rs b/packages/html/src/transit.rs index 8998b5fd7..4b97f8c05 100644 --- a/packages/html/src/transit.rs +++ b/packages/html/src/transit.rs @@ -225,7 +225,7 @@ impl EventData { fn test_back_and_forth() { let data = HtmlEvent { element: ElementId(0), - data: EventData::Mouse(SerializedMouseData::default().into()), + data: EventData::Mouse(SerializedMouseData::default()), name: "click".to_string(), bubbles: true, }; diff --git a/packages/router/examples/simple_routes.rs b/packages/router/examples/simple_routes.rs index 673658870..46dd26eaf 100644 --- a/packages/router/examples/simple_routes.rs +++ b/packages/router/examples/simple_routes.rs @@ -80,7 +80,7 @@ fn Route3(cx: Scope, dynamic: String) -> Element { render! { input { oninput: move |evt| { - *current_route_str.write() = evt.value.clone(); + *current_route_str.write() = evt.value(); }, value: "{current_route_str.read()}" }