Clone in a terminal:
Commit 351d7a2
Johan Mattsson - 2026-06-02T23:12:38+00:00
351d7a2a8e8c3b2aff8532dce12cdf1bb9c59160johan.mattsson.m@gmail.com

Pass values without serde if the argument is JsValue

Changed files (2)

Diff

diff --git a/examples/callbacks/Cargo.toml b/examples/callbacks/Cargo.tomlindex 44bf3f5..65b4129 100644--- a/examples/callbacks/Cargo.toml+++ b/examples/callbacks/Cargo.toml@@ -10,7 +10,7 @@ crate-type = ["cdylib"] wasm-bindgen = "0.2.122" kaja-web = { path = "../.." } js-sys = "0.3"-web-sys = { version = "0.3.99", features = ["Element", "HtmlElement", "NodeList", "CssStyleDeclaration"] }+web-sys = { version = "0.3.99", features = ["Element", "HtmlElement", "NodeList", "CssStyleDeclaration", "KeyboardEvent"] } gloo = "0.12" kaja-html-macro = "1.0.3" serde = { version = "1.0.228", features = ["derive"] }diff --git a/examples/callbacks/src/lib.rs b/examples/callbacks/src/lib.rsindex 8717b7c..761d52a 100644--- a/examples/callbacks/src/lib.rs+++ b/examples/callbacks/src/lib.rs@@ -1,5 +1,6 @@ use kaja_web::prelude::*; use serde::Deserialize;+use web_sys::KeyboardEvent;  #[derive(Deserialize)] pub struct Test1Data {@@ -27,6 +28,9 @@ fn update() {         <button onclick="asyncTest('run later');">             Test Async         </button>++        <br />+        <textarea onkeydown="processInput(event)">Key down events?</textarea>     }};      let result = inner_html("#main-view", counter.as_str());@@ -78,6 +82,18 @@ async fn async_test(message: String) {     set_color("black"); } +#[callback(processInput)]+fn edit_input(ev: JsValue) {+    let ev: KeyboardEvent = ev.unchecked_into();+    let key = ev.key();+    log!("edit_input: {:?}", key.clone());++    if key == "Tab" {+        log!("Tab pressed");+        ev.prevent_default();+    }+}+ #[wasm_bindgen(start)] pub fn init() {     std::panic::set_hook(Box::new(console_error_panic_hook::hook));

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112