[yew-devel] [PATCH yew-widget-toolkit 05/11] touch: material app: allow pass through of page animation style

Shannon Sterz s.sterz at proxmox.com
Fri Jun 27 15:37:05 CEST 2025


On Fri Jun 27, 2025 at 2:08 PM CEST, Dominik Csapak wrote:
> to the page stack. Otherwise it's impossible to set the animation style
> for a material app.
>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  src/touch/material_app.rs | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/src/touch/material_app.rs b/src/touch/material_app.rs
> index d9ea2a0..6d7ac54 100644
> --- a/src/touch/material_app.rs
> +++ b/src/touch/material_app.rs
> @@ -13,7 +13,7 @@ use pwt_macros::builder;
>
>  use crate::prelude::*;
>  use crate::state::{NavigationContainer, SharedState, SharedStateObserver};
> -use crate::touch::{SnackBarController, SnackBarManager};
> +use crate::touch::{PageAnimationStyle, SnackBarController, SnackBarManager};
>  use crate::widget::{Container, ThemeLoader};
>
>  use super::{PageStack, SideDialog, SideDialogController, SideDialogLocation};
> @@ -207,6 +207,11 @@ pub struct MaterialApp {
>      #[builder(IntoPropValue, into_prop_value)]
>      #[prop_or_default]
>      pub history: Option<AnyHistory>,

could we implement `Default` on `PageAnimationStyle` here and remove the
`Option`? that would also clean up the code below a bit. or is there a
reason not to do that?

> +
> +    /// Page animation style used when switching between pages
> +    #[builder(IntoPropValue, into_prop_value)]
> +    #[prop_or_default]
> +    pub page_animation: Option<PageAnimationStyle>,
>  }
>
>  impl MaterialApp {
> @@ -372,7 +377,10 @@ impl Component for PwtMaterialApp {
>
>          let app = Container::new()
>              .class("pwt-viewport")
> -            .with_child(PageStack::new(page_stack))
> +            .with_child(
> +                PageStack::new(page_stack)
> +                    .animation_style(props.page_animation.unwrap_or(PageAnimationStyle::Push)),
> +            )
>              .with_child(
>                  SnackBarManager::new()
>                      .controller(self.snackbar_controller.clone())





More information about the yew-devel mailing list