mirror of
https://github.com/adoyle0/thaw.git
synced 2025-02-08 19:03:09 -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 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
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Add table
Reference in a new issue