mirror of
https://github.com/adoyle0/thaw.git
synced 2025-02-02 08:34:15 -05:00
refactor: Message component
This commit is contained in:
parent
6cc68ba398
commit
63564e814d
3 changed files with 15 additions and 33 deletions
|
@ -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/> }
|
||||
}
|
|
@ -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
|
||||
/>
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue