leptos_bootstrap/v5/
modal.rs

1use leptos::prelude::*;
2
3#[component]
4pub fn Modal<'a>(#[prop(optional, into)] class: &'a str, children: Children) -> impl IntoView {
5    let class = format!("modal {}", class);
6    view! {
7        <div class=class tabindex="-1">
8            <div class="modal-dialog">
9                <div class="modal-content">{children()}</div>
10            </div>
11        </div>
12    }
13}
14
15#[component]
16pub fn ModalHeader<'a>(
17    #[prop(optional, into)] class: &'a str,
18    children: Children,
19) -> impl IntoView {
20    let class = format!("modal-header {}", class);
21    view! {
22        <div class=class>
23            <h5 class="modal-title">{children()}</h5>
24            <button
25                type="button"
26                class="btn-close"
27                data-bs-dismiss="modal"
28                aria-label="Close"
29            ></button>
30        </div>
31    }
32}
33
34#[component]
35pub fn ModalBody<'a>(#[prop(optional, into)] class: &'a str, children: Children) -> impl IntoView {
36    let class = format!("modal-body {}", class);
37    view! { <div class=class>{children()}</div> }
38}
39
40#[component]
41pub fn ModalFooter<'a>(
42    #[prop(optional, into)] class: &'a str,
43    children: Children,
44) -> impl IntoView {
45    let class = format!("modal-footer {}", class);
46    view! { <div class=class>{children()}</div> }
47}