refactor: Message component

This commit is contained in:
luoxiao 2024-03-29 17:18:32 +08:00 committed by luoxiaozero
parent 6cc68ba398
commit 63564e814d
3 changed files with 15 additions and 33 deletions

View file

@ -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<Uuid, ()>,
) -> 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! { <Message id closable=options.closable content variant on_close=on_internal_after_leave/> }
}

View file

@ -1,4 +1,4 @@
use super::{message_environment::MessageEnvironment, MessageVariant}; use super::{Message, MessageVariant};
use leptos::*; use leptos::*;
use std::time::Duration; use std::time::Duration;
use thaw_components::Teleport; use thaw_components::Teleport;
@ -58,9 +58,9 @@ pub fn MessageProvider(
key=|message| message.0 key=|message| message.0
children=move |message| { children=move |message| {
view! { view! {
<MessageEnvironment <Message
message message
on_internal_after_leave=handle_after_leave on_close=handle_after_leave
/> />
} }
} }

View file

@ -1,4 +1,3 @@
mod message_environment;
mod message_provider; mod message_provider;
mod theme; mod theme;
@ -36,13 +35,18 @@ impl MessageVariant {
} }
#[component] #[component]
pub(crate) fn Message( fn Message(message: MessageType, #[prop(into)] on_close: Callback<Uuid, ()>) -> impl IntoView {
variant: MessageVariant, let (id, content, variant, MessageOptions { duration, closable }) = message;
content: String,
closable: bool, if !duration.is_zero() {
id: Uuid, set_timeout(
#[prop(into)] on_close: Callback<Uuid, ()>, move || {
) -> impl IntoView { on_close.call(id);
},
duration,
);
}
let theme = use_theme(Theme::light); let theme = use_theme(Theme::light);
let css_vars = create_memo(move |_| { let css_vars = create_memo(move |_| {
let mut css_vars = String::new(); let mut css_vars = String::new();