-
Notifications
You must be signed in to change notification settings - Fork 308
Expand file tree
/
Copy pathMainLayout.razor
More file actions
56 lines (48 loc) · 1.68 KB
/
MainLayout.razor
File metadata and controls
56 lines (48 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@inherits LayoutComponentBase
@using CleanArchitecture.Blazor.Server.UI.Services.JsInterop
@using CleanArchitecture.Blazor.Server.UI.Themes
@implements IDisposable
@inject LayoutService LayoutService
<PageTitle>@ApplicationSettings.AppName</PageTitle>
<MudRTLProvider RightToLeft="@LayoutService.IsRTL">
<MudThemeProvider />
<MudPopoverProvider />
<MudDialogProvider />
<MudSnackbarProvider />
<MudThemeProvider @ref="@_mudThemeProvider" Theme="@LayoutService.CurrentTheme" IsDarkMode="@LayoutService.IsDarkMode" IsDarkModeChanged="@LayoutService.SetDarkMode" />
@Body
</MudRTLProvider>
@code
{
private MudThemeProvider _mudThemeProvider = null!;
private bool _defaultDarkMode;
public void Dispose()
{
LayoutService.MajorUpdateOccured -= LayoutServiceOnMajorUpdateOccured;
GC.SuppressFinalize(this);
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
await ApplyUserPreferences();
StateHasChanged();
}
}
private async Task ApplyUserPreferences()
{
_defaultDarkMode = await _mudThemeProvider.GetSystemDarkModeAsync();
await LayoutService.ApplyUserPreferences(_defaultDarkMode);
}
protected override Task OnInitializedAsync()
{
LayoutService.MajorUpdateOccured += LayoutServiceOnMajorUpdateOccured;
LayoutService.SetBaseTheme(Theme.ApplicationTheme());
return base.OnInitializedAsync();
}
private void LayoutServiceOnMajorUpdateOccured(object? sender, EventArgs e)
{
InvokeAsync(() => StateHasChanged());
}
}