diff --git a/dyesub-tool/index.html b/dyesub-tool/index.html index c84ca76..a8e7770 100644 --- a/dyesub-tool/index.html +++ b/dyesub-tool/index.html @@ -5,6 +5,7 @@ dyesub-tool +
diff --git a/dyesub-tool/src/main.rs b/dyesub-tool/src/main.rs index e756c60..fe7e7f1 100644 --- a/dyesub-tool/src/main.rs +++ b/dyesub-tool/src/main.rs @@ -3,12 +3,12 @@ mod render; pub mod svg; +use class_list::class_list; use derive_more::From; use leptos::{ev::SubmitEvent, html::Input, *}; use strum_macros::IntoStaticStr; use wasm_bindgen::{JsCast, JsValue}; use web_sys::File; -use class_list::class_list; #[derive(Clone)] struct ResultMessageData { @@ -35,12 +35,24 @@ enum Colorway { #[component] fn ResultMessage(cx: Scope, message: ReadSignal>) -> impl IntoView { - move || message().map(|ResultMessageData { title, message, colorway }| view! { cx, -
>::into(colorway)]> -

{title}

-

{message}

-
- }) + let (open, set_open) = create_signal(cx, true); + create_effect(cx, move |_| { + message.track(); + set_open(true); + }); + move || { + view! { cx, + + {move || message().map(|ResultMessageData { title, message, colorway }| view! { cx, +
>::into(colorway)] style="position: relative"> + {title} + +

{message}

+
+ })} +
+ } + } } #[derive(From, IntoStaticStr)] @@ -94,8 +106,7 @@ fn KeyboardFromFile( let file_input = create_node_ref::(cx); let (file, set_file) = create_signal(cx, Option::::None); let (result_message, set_result_message) = create_signal(cx, Option::::None); - let on_submit = move |e: SubmitEvent| { - e.prevent_default(); + let on_submit = move || { spawn_local(async move { match read_kle_from_file(&file).await { Ok(keyboard) => { @@ -109,34 +120,35 @@ fn KeyboardFromFile( })); set_keyboard(Some(keyboard)); } - Err(err) => set_result_message(Some(ResultMessageData { - message: view! { cx, - { - err.to_string() + Err(err) => { + set_result_message(Some(ResultMessageData { + message: view! { cx, + { + err.to_string() + } } - } - .into_view(cx), - title: >::into(err).to_string(), - colorway: Colorway::Bad, - })), + .into_view(cx), + title: >::into(err).to_string(), + colorway: Colorway::Bad, + })); + file_input().unwrap().set_value(""); + } } }); }; view! { cx,

"Load KLE JSON from file"

-
+ - - -
} }