dioxus_leaflet/components/
popup.rs1use crate::{PopupOptions, interop, types::Id};
2use dioxus::prelude::*;
3use dioxus_logger::tracing::error;
4use std::rc::Rc;
5
6#[component]
7pub fn Popup(
8 #[props(default = PopupOptions::default())] options: PopupOptions,
9
10 children: Element,
11) -> Element {
12 let id: Rc<Id> = use_context();
13 let id = Id::popup(&id, dioxus_core::current_scope_id().0);
14 let class = options.class_name.clone();
15
16 let id2 = id.clone();
17 use_effect(move || {
18 let id = id2.clone();
19 let opts = options.clone();
20 spawn(async move {
21 if let Err(e) = interop::update_popup(&id, &opts).await {
22 error!("{e}");
23 }
24 });
25 });
26
27 rsx!(
28 div {
29 id: "dioxus-leaflet-{id}",
30 class: "dioxus-leaflet-popup-content {class.as_ref().map(|c| c.as_str()).unwrap_or(\"\")}",
31 {children}
32 }
33 )
34}