From 03815857458b57bb00a5fe2579313e638a75c552 Mon Sep 17 00:00:00 2001 From: Sergio Date: Sat, 23 May 2026 16:46:04 +0000 Subject: [PATCH] gioser-web: fix graph node click callback, dispatch MouseEvent on tip - Graph callback now creates a web_sys::MouseEvent('click') and dispatches it on the corresponding .tip element. - The existing install_tip_clicks listener captures it and calls open_or_switch with proper coordinates. --- crates/apps/gioser-web/pkg/gioser_web_bg.wasm | Bin 536595 -> 536595 bytes crates/apps/gioser-web/src/lib.rs | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/apps/gioser-web/pkg/gioser_web_bg.wasm b/crates/apps/gioser-web/pkg/gioser_web_bg.wasm index 45c7ee684e3394eae475c965a8613465dd8d31a0..6dc08de1849accc80ab0c19e2f795efa339476c9 100644 GIT binary patch delta 35 rcmbRIKwF7M3lnr|&U3w4b@h+J5F9+x9c}*xdsG7C#Ts delta 35 rcmbRIKwF7M3lnr|&V^w4b@h+J5F9+x9c}*xdsG76T8> diff --git a/crates/apps/gioser-web/src/lib.rs b/crates/apps/gioser-web/src/lib.rs index edc8c3f..c84867e 100644 --- a/crates/apps/gioser-web/src/lib.rs +++ b/crates/apps/gioser-web/src/lib.rs @@ -357,8 +357,7 @@ impl AppState { ); wrapper.append_child(&label).ok(); content_clone.append_child(&wrapper).ok(); - // Callback: recibe 'camino' del nodo clickeado y dispara click - // en el tip correspondiente (simula apertura de página) + // Callback: recibe 'camino' del nodo clickeado y navega let cb: Box = Box::new(move |target| { // Mapa camino → elemento HTML let el = match target.as_str() { @@ -368,14 +367,15 @@ impl AppState { "uku" | "agua" => "uku", _ => "logos", }; + // Disparar evento click en el tip (el listener de + // install_tip_clicks lo captura y llama open_or_switch) if let Some(tip) = document_clone.query_selector( &format!(".tip[data-md][id='tip-{}']", el) ).ok().flatten() { - // Simular click real en el tip — la animación de - // expansión la maneja AppState::open_or_switch - let _ = tip.dispatch_event( - &web_sys::MouseEvent::new("click").unwrap() - ); + // Crear MouseEvent con coordenadas (necesario para + // que prevent_default y open_or_switch tengan contexto) + let ev = web_sys::MouseEvent::new("click").unwrap(); + let _ = tip.dispatch_event(&ev); } }); let mut graph = GraphWidget::new(