Calendar (WIP)

This commit is contained in:
Greg Burri 2025-01-29 14:37:25 +01:00
parent 9d3f9e9c60
commit 79a0aeb1b8
24 changed files with 613 additions and 231 deletions

View file

@ -6,17 +6,13 @@ use crate::{
utils::{by_id, selector_and_clone, SelectorExt},
};
pub enum DialogContent<'a, T>
where
T: Fn(&Element),
{
Text(&'a str),
CloneFromElement(&'a str, T),
pub async fn show(element_selector: &str) -> bool {
show_and_initialize(element_selector, async |_| {}).await
}
pub async fn show<T>(content: DialogContent<'_, T>) -> bool
pub async fn show_and_initialize<T>(element_selector: &str, initializer: T) -> bool
where
T: Fn(&Element),
T: AsyncFn(Element),
{
let dialog: HtmlDialogElement = by_id("modal-dialog");
@ -25,15 +21,10 @@ where
let content_element = dialog.selector::<Element>(".content");
match content {
DialogContent::Text(message) => content_element.set_inner_html(message),
DialogContent::CloneFromElement(element_selector, initilizer) => {
let element: Element = selector_and_clone(element_selector);
content_element.set_inner_html("");
content_element.append_child(&element).unwrap();
initilizer(&element);
}
}
let element: Element = selector_and_clone(element_selector);
content_element.set_inner_html("");
content_element.append_child(&element).unwrap();
initializer(element).await;
dialog.show_modal().unwrap();