Skip to content

Commit d10a562

Browse files
committed
Blazor Server App - BlazorTransitionableRoute implementation
1 parent ec36bb8 commit d10a562

File tree

5 files changed

+58
-1
lines changed

5 files changed

+58
-1
lines changed

demo/aspnetcore6.0/v4/BlazorTransitionableRouteDemoServer/App.razor

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
<CascadingAuthenticationState>
22
<Router AppAssembly="@typeof(App).Assembly">
33
<Found Context="routeData">
4-
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
4+
<LayoutView Layout="@typeof(MainLayout)">
5+
<TransitionableRoutePrimary RouteData="@routeData" ForgetStateOnTransition="true">
6+
<TransitionableRouteView DefaultLayout="@typeof(MyViewLayout)" />
7+
</TransitionableRoutePrimary>
8+
<TransitionableRouteSecondary RouteData="@routeData" ForgetStateOnTransition="true">
9+
<TransitionableRouteView DefaultLayout="@typeof(MyViewLayout)" />
10+
</TransitionableRouteSecondary>
11+
</LayoutView>
512
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
613
</Found>
714
<NotFound>

demo/aspnetcore6.0/v4/BlazorTransitionableRouteDemoServer/Pages/_Layout.cshtml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
1212
<link href="css/site.css" rel="stylesheet" />
1313
<link href="BlazorTransitionableRouteDemoServer.styles.css" rel="stylesheet" />
14+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.0.0/animate.min.css" />
1415
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
1516
</head>
1617
<body>

demo/aspnetcore6.0/v4/BlazorTransitionableRouteDemoServer/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
2222
builder.Services.AddSingleton<WeatherForecastService>();
2323

24+
builder.Services.AddScoped<BlazorTransitionableRoute.IRouteTransitionInvoker, BlazorTransitionableRoute.DefaultRouteTransitionInvoker>();
25+
2426
var app = builder.Build();
2527

2628
// Configure the HTTP request pipeline.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
@inherits TransitionableLayoutComponent
3+
@using BlazorTransitionableRouteDemoServer.Pages
4+
5+
<div class="transition @transitioningClass @(Transition.IntoView ? "transitioned" : "transitioned_behind")">
6+
@Body
7+
</div>
8+
9+
<style>
10+
.transition {
11+
position: absolute;
12+
}
13+
.transitioned {
14+
z-index: 1;
15+
}
16+
.transitioned_behind {
17+
z-index: 0;
18+
}
19+
</style>
20+
21+
@code {
22+
private string transitioningClass => Transition.FirstRender
23+
? "" : $"animate__{transitioningEffect()} animate__faster animate__animated";
24+
25+
private string transitioningEffect()
26+
{
27+
if (customTransitions.TryGetValue((TransitionType.fromType, TransitionType.toType), out var custom))
28+
{
29+
return Transition.IntoView ? custom.effectIn : custom.effectOut;
30+
}
31+
else
32+
{
33+
var effect = Transition.IntoView ? "fadeIn" : "fadeOut";
34+
var direction = Transition.Backwards ? "Up" : "Down";
35+
return effect + direction;
36+
}
37+
}
38+
39+
private Dictionary<(Type from, Type to), (string effectOut, string effectIn)> customTransitions =
40+
new Dictionary<(Type from, Type to), (string effectOut, string effectIn)>
41+
{
42+
{ (typeof(FetchData), typeof(WeatherDetail)), ( "fadeOutLeft", "fadeInRight" ) },
43+
{ (typeof(WeatherDetail), typeof(FetchData)), ( "fadeOutRight", "fadeInLeft" ) }
44+
};
45+
}

demo/aspnetcore6.0/v4/BlazorTransitionableRouteDemoServer/_Imports.razor

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@
88
@using Microsoft.JSInterop
99
@using BlazorTransitionableRouteDemoServer
1010
@using BlazorTransitionableRouteDemoServer.Shared
11+
12+
@using BlazorTransitionableRoute

0 commit comments

Comments
 (0)