impulse_thaw/dialog/
dialog_surface.rs

1use super::dialog::DialogInjection;
2use leptos::prelude::*;
3use thaw_components::CSSTransition;
4use thaw_utils::class_list;
5
6#[component]
7pub fn DialogSurface(
8    #[prop(optional, into)] class: MaybeProp<String>,
9    children: Children,
10) -> impl IntoView {
11    let dialog = DialogInjection::expect_context();
12
13    view! {
14        <CSSTransition
15            appear=dialog.open.get_untracked()
16            show=dialog.open.signal()
17            name="fade-in-scale-up-transition"
18        >
19            <div class=class_list!["thaw-dialog-surface", class] role="dialog" aria-modal="true">
20                {children()}
21            </div>
22        </CSSTransition>
23    }
24}