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 std::time::Duration;
use thaw_components::Teleport;
@ -58,9 +58,9 @@ pub fn MessageProvider(
key=|message| message.0
children=move |message| {
view! {
<MessageEnvironment
<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 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<Uuid, ()>,
) -> impl IntoView {
fn Message(message: MessageType, #[prop(into)] on_close: Callback<Uuid, ()>) -> 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();