use std::marker::PhantomData;
use yew::prelude::*;
use yew_router::prelude::*;
#[derive(Properties, Clone, PartialEq, Debug)]
pub struct NavLinkProps<R: Routable + PartialEq + Clone + 'static> {
pub to: R,
pub children: Children,
#[prop_or(false)]
pub partial: bool,
#[prop_or("nav-link")]
pub class: &'static str,
#[prop_or("active")]
pub active_class: &'static str,
#[prop_or_default]
pub(crate) _marker: PhantomData<R>
}
#[cfg(test)]
mod tests {
use super::*;
#[derive(Clone, PartialEq, Debug, Routable)]
enum TestRoute {
#[at("/")]
Home
}
#[test]
fn props_equality() {
let props1: NavLinkProps<TestRoute> = NavLinkProps {
to: TestRoute::Home,
children: Children::default(),
partial: false,
class: "nav-link",
active_class: "active",
_marker: PhantomData
};
let props2 = props1.clone();
assert_eq!(props1, props2);
}
}