ContextMenu Renderer Finalized

This commit is contained in:
2025-08-10 00:04:55 -04:00
parent 6df6de098b
commit e832ccf07e
6 changed files with 97 additions and 75 deletions

View File

@@ -2,10 +2,7 @@ use dioxus::prelude::*;
use tonic::IntoRequest;
use crate::{
components::{
ContextMenuRenderer, MediaItem,
props::{ContextMenu, ContextMenuItem},
},
components::MediaItem,
rpc::{aoba::PageFilter, get_rpc_client},
};
@@ -49,41 +46,16 @@ pub fn MediaGrid(props: MediaGridProps) -> Element {
}
}));
let mut ct_renderer = use_context::<ContextMenuRenderer>();
let oncontext = move |event: Event<MouseData>| {
event.prevent_default();
let data = event.data();
let pos = data.coordinates().client();
let left = pos.x;
let top = pos.y;
ct_renderer.menu.set(Some(ContextMenu {
left: left,
top: top,
items: Some(vec![
ContextMenuItem {
name: "Details".to_string(),
..Default::default()
},
ContextMenuItem {
name: "Download".to_string(),
..Default::default()
},
ContextMenuItem {
name: "Delete".to_string(),
..Default::default()
},
]),
}));
};
match media_result.cloned() {
Some(value) => match value {
Ok(result) => rsx! {
div {
class: "mediaGrid",
// oncontextmenu: oncontext,
{result.items.iter().map(|itm| rsx!{
MediaItem { item: Some(itm.clone()), oncontextmenu: oncontext }
MediaItem {
item: itm.clone()
}
})},
}
},
@@ -100,7 +72,7 @@ pub fn MediaGrid(props: MediaGridProps) -> Element {
div{
class: "mediaGrid",
{(0..50).map(|_| rsx!{
MediaItem {}
MediaItem { }
})}
}
},