patternfly_yew/components/menu/
variant.rs

1use super::*;
2use crate::prelude::*;
3use yew::{
4    prelude::*,
5    virtual_dom::{VChild, VComp},
6};
7
8#[derive(PartialEq, Clone)]
9pub struct MenuChildVariant {
10    props: MenuChild,
11}
12
13impl<CHILD> From<VChild<CHILD>> for MenuChildVariant
14where
15    CHILD: BaseComponent,
16    CHILD::Properties: Into<MenuChild> + Clone,
17{
18    fn from(vchild: VChild<CHILD>) -> Self {
19        Self {
20            props: (*vchild.props).clone().into(),
21        }
22    }
23}
24
25impl From<MenuChildVariant> for Html {
26    fn from(value: MenuChildVariant) -> Self {
27        match value.props {
28            MenuChild::Action(props) => VComp::new::<MenuAction>(props, None).into(),
29            MenuChild::Link(props) => VComp::new::<MenuLink>(props, None).into(),
30            MenuChild::Group(props) => VComp::new::<MenuGroup>(props, None).into(),
31            MenuChild::Loading(props) => VComp::new::<MenuLoading>(props, None).into(),
32            MenuChild::Divider(props) => VComp::new::<ListDivider>(props, None).into(),
33            MenuChild::Raw(props) => VComp::new::<Raw>(props, None).into(),
34        }
35    }
36}