From 2ac82ae60b6ea0f3d7542f4f33199cbd5557c065 Mon Sep 17 00:00:00 2001 From: Henry Zimmerman Date: Tue, 10 Dec 2019 20:16:25 -0500 Subject: [PATCH 1/6] Add children field to props --- src/components/mod.rs | 7 +++++-- src/components/router_button.rs | 1 + src/components/router_link.rs | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/mod.rs b/src/components/mod.rs index 23a0be0..5880290 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -6,20 +6,23 @@ mod router_button; mod router_link; -use yew::Properties; +use yew::{Properties, Children}; pub use self::{router_button::RouterButton, router_link::RouterLink}; use crate::RouterState; /// Properties for `RouterButton` and `RouterLink`. -#[derive(Properties, Default, Clone, Debug, PartialEq)] +#[derive(Properties, Default, Debug)] pub struct Props RouterState<'de>> { /// The route that will be set when the component is clicked. pub link: String, /// The state to set when changing the route. pub state: Option, + #[deprecated(note = "Use children field instead to use nested html")] /// The text to display. pub text: String, + /// Html inside the component. + pub children: Children, /// Disable the component. pub disabled: bool, /// Classes to be added to component. diff --git a/src/components/router_button.rs b/src/components/router_button.rs index 261752c..2d0413d 100644 --- a/src/components/router_button.rs +++ b/src/components/router_button.rs @@ -57,6 +57,7 @@ impl RouterState<'de>> Component for RouterButton { disabled=self.props.disabled, > {&self.props.text} + {self.props.children.iter().collect::()} } } diff --git a/src/components/router_link.rs b/src/components/router_link.rs index 185f50f..4c2a8e1 100644 --- a/src/components/router_link.rs +++ b/src/components/router_link.rs @@ -64,6 +64,7 @@ impl RouterState<'de>> Component for RouterLink { href=target, > {&self.props.text} + {self.props.children.iter().collect::()} } } From 44d0825ad8dda14f6c9a3aaac0f3d7942ec4a4ce Mon Sep 17 00:00:00 2001 From: Henry Zimmerman Date: Tue, 10 Dec 2019 20:37:41 -0500 Subject: [PATCH 2/6] fix examples --- examples/guide/src/guide.rs | 4 ++-- examples/router_component/src/a_component.rs | 14 ++++++-------- examples/router_component/src/main.rs | 14 +++++++------- src/components/mod.rs | 3 ++- src/components/router_button.rs | 5 ++++- src/components/router_link.rs | 5 ++++- 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/examples/guide/src/guide.rs b/examples/guide/src/guide.rs index 1ed32fe..8c366ec 100644 --- a/examples/guide/src/guide.rs +++ b/examples/guide/src/guide.rs @@ -100,13 +100,13 @@ fn render_page_list_item(props: PageProps, route: &Route) -> Html { log::debug!("Found an active"); return html! {
  • - + {&props.title}
  • }; } else { return html! {
  • - + {&props.title}
  • }; } diff --git a/examples/router_component/src/a_component.rs b/examples/router_component/src/a_component.rs index 21be181..66ba710 100644 --- a/examples/router_component/src/a_component.rs +++ b/examples/router_component/src/a_component.rs @@ -36,14 +36,12 @@ impl Component for AModel {
    { "I am the A component"}
    - - + + {"Go to a/c"} + + + {"Go to a/d (route does not exist)"} +
    { diff --git a/examples/router_component/src/main.rs b/examples/router_component/src/main.rs index 1c1e139..7b1b2d2 100644 --- a/examples/router_component/src/main.rs +++ b/examples/router_component/src/main.rs @@ -43,13 +43,13 @@ impl Component for Model { html! {
    diff --git a/src/components/mod.rs b/src/components/mod.rs index 5880290..db0ea71 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -11,6 +11,7 @@ use yew::{Properties, Children}; pub use self::{router_button::RouterButton, router_link::RouterLink}; use crate::RouterState; +// TODO This should also be PartialEq and Clone. Its blocked on Children not supporting that. /// Properties for `RouterButton` and `RouterLink`. #[derive(Properties, Default, Debug)] pub struct Props RouterState<'de>> { @@ -18,7 +19,7 @@ pub struct Props RouterState<'de>> { pub link: String, /// The state to set when changing the route. pub state: Option, - #[deprecated(note = "Use children field instead to use nested html")] + #[deprecated(note = "Use children field instead (nested html)")] /// The text to display. pub text: String, /// Html inside the component. diff --git a/src/components/router_button.rs b/src/components/router_button.rs index 2d0413d..c1b2f54 100644 --- a/src/components/router_button.rs +++ b/src/components/router_button.rs @@ -56,7 +56,10 @@ impl RouterState<'de>> Component for RouterButton { onclick=cb(|_| Msg::Clicked), disabled=self.props.disabled, > - {&self.props.text} + { + #[allow(deprecated)] + &self.props.text + } {self.props.children.iter().collect::()} } diff --git a/src/components/router_link.rs b/src/components/router_link.rs index 4c2a8e1..8fc1ac8 100644 --- a/src/components/router_link.rs +++ b/src/components/router_link.rs @@ -63,7 +63,10 @@ impl RouterState<'de>> Component for RouterLink { disabled=self.props.disabled, href=target, > - {&self.props.text} + { + #[allow(deprecated)] + &self.props.text + } {self.props.children.iter().collect::()} } From 35dea0f2dc2476435c6545c827c15f93079da08d Mon Sep 17 00:00:00 2001 From: Henry Zimmerman Date: Tue, 10 Dec 2019 20:43:54 -0500 Subject: [PATCH 3/6] rename the RouterLink to RouterAnchor --- examples/guide/src/guide.rs | 4 ++-- examples/router_component/src/main.rs | 2 +- src/alias.rs | 10 ++++++++++ src/components/mod.rs | 3 ++- src/components/router_link.rs | 12 +++++++++--- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/examples/guide/src/guide.rs b/examples/guide/src/guide.rs index 8c366ec..403e598 100644 --- a/examples/guide/src/guide.rs +++ b/examples/guide/src/guide.rs @@ -100,13 +100,13 @@ fn render_page_list_item(props: PageProps, route: &Route) -> Html { log::debug!("Found an active"); return html! {
  • - {&props.title} + {&props.title}
  • }; } else { return html! {
  • - {&props.title} + {&props.title}
  • }; } diff --git a/examples/router_component/src/main.rs b/examples/router_component/src/main.rs index 7b1b2d2..77f5711 100644 --- a/examples/router_component/src/main.rs +++ b/examples/router_component/src/main.rs @@ -44,7 +44,7 @@ impl Component for Model {