From 63564e814d0120e24f7f3d234818454050542f2a Mon Sep 17 00:00:00 2001 From: luoxiao Date: Fri, 29 Mar 2024 17:18:32 +0800 Subject: [PATCH] refactor: Message component --- thaw/src/message/message_environment.rs | 22 ---------------------- thaw/src/message/message_provider.rs | 6 +++--- thaw/src/message/mod.rs | 20 ++++++++++++-------- 3 files changed, 15 insertions(+), 33 deletions(-) delete mode 100644 thaw/src/message/message_environment.rs diff --git a/thaw/src/message/message_environment.rs b/thaw/src/message/message_environment.rs deleted file mode 100644 index b866d60..0000000 --- a/thaw/src/message/message_environment.rs +++ /dev/null @@ -1,22 +0,0 @@ -use super::{message_provider::MessageType, Message}; -use leptos::*; -use uuid::Uuid; - -#[component] -pub fn MessageEnvironment( - message: MessageType, - #[prop(into)] on_internal_after_leave: Callback, -) -> impl IntoView { - let (id, content, variant, options) = message; - - if !options.duration.is_zero() { - set_timeout( - move || { - on_internal_after_leave.call(id); - }, - options.duration, - ); - } - - view! { } -} diff --git a/thaw/src/message/message_provider.rs b/thaw/src/message/message_provider.rs index f4865d6..b469d75 100644 --- a/thaw/src/message/message_provider.rs +++ b/thaw/src/message/message_provider.rs @@ -1,4 +1,4 @@ -use super::{message_environment::MessageEnvironment, MessageVariant}; +use super::{Message, MessageVariant}; use leptos::*; use std::time::Duration; use thaw_components::Teleport; @@ -58,9 +58,9 @@ pub fn MessageProvider( key=|message| message.0 children=move |message| { view! { - } } diff --git a/thaw/src/message/mod.rs b/thaw/src/message/mod.rs index 39b71be..4f87071 100644 --- a/thaw/src/message/mod.rs +++ b/thaw/src/message/mod.rs @@ -1,4 +1,3 @@ -mod message_environment; mod message_provider; mod theme; @@ -36,13 +35,18 @@ impl MessageVariant { } #[component] -pub(crate) fn Message( - variant: MessageVariant, - content: String, - closable: bool, - id: Uuid, - #[prop(into)] on_close: Callback, -) -> impl IntoView { +fn Message(message: MessageType, #[prop(into)] on_close: Callback) -> impl IntoView { + let (id, content, variant, MessageOptions { duration, closable }) = message; + + if !duration.is_zero() { + set_timeout( + move || { + on_close.call(id); + }, + duration, + ); + } + let theme = use_theme(Theme::light); let css_vars = create_memo(move |_| { let mut css_vars = String::new();