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