1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use dominator::{html, Dom};
use futures_signals::signal::SignalExt;

#[component(render_fn = card)]
pub struct Card {
    #[signal]
    pub child: Dom,
}

#[inline]
pub fn card(props: impl CardPropsTrait + 'static) -> Dom {
    let CardProps { child, apply } = props.take();

    html!("div", {
        .class("dmat-card")
        .apply_if(apply.is_some(), |dom| dom.apply(apply.unwrap()))
        .apply_if(child.is_some(), |d| d.child_signal(child.unwrap().map(Some)))
    })
}