impulse_thaw/message_bar/
message_bar_actions.rs1use super::{MessageBarInjection, MessageBarLayout};
2use crate::ButtonSizeInjection;
3use leptos::{context::Provider, either::Either, prelude::*};
4use thaw_components::OptionComp;
5
6#[component]
7pub fn MessageBarActions(
8 #[prop(optional)] message_bar_container_action: Option<MessageBarContainerAction>,
9 children: Children,
10) -> impl IntoView {
11 let layout = MessageBarInjection::expect_context().layout;
12
13 if layout == MessageBarLayout::Multiline {
14 Either::Left(view! {
15 <Provider value=ButtonSizeInjection(crate::ButtonSize::Small)>
16 <OptionComp value=message_bar_container_action.map(|a| a.children) let:children>
17 <div class="thaw-message-bar-actions__container-action">{children()}</div>
18 </OptionComp>
19 <div class="thaw-message-bar-actions">{children()}</div>
20 </Provider>
21 })
22 } else {
23 Either::Right(view! {
24 <Provider value=ButtonSizeInjection(crate::ButtonSize::Small)>
25 <div class="thaw-message-bar-actions">{children()}</div>
26 <OptionComp value=message_bar_container_action.map(|a| a.children) let:children>
27 <div class="thaw-message-bar-actions__container-action">{children()}</div>
28 </OptionComp>
29 </Provider>
30 })
31 }
32}
33
34#[slot]
35pub struct MessageBarContainerAction {
36 children: Children,
37}