Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions src/MudBlazor.ThemeManager/Components/MudThemeManager.razor
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,21 @@
<MudDrawer @bind-Open:get="_openState.Value" @bind-Open:set="_openState.SetValueAsync" Anchor="Anchor.End" Elevation="25" Variant="@DrawerVariant.Temporary" Overlay="false" Width="312px">
<div class="pt-4 px-4">
<MudText Typo="Typo.h6">Theme Presets</MudText>
<MudSelect T="string" @bind-Value="@ThemePresets" Disabled="true" Underline="false">
<MudSelectItem Value="@("Not Implemented")" />
</MudSelect>
@if (Presets is null)
{
<MudSelect T="string" @bind-Value="@ThemePresets" Disabled="true" Underline="false">
<MudSelectItem Value="@("Not Implemented")" />
</MudSelect>
}
else
{
<MudSelect T="ThemeManagerTheme" Value="Theme" ValueChanged="OnPresetSelectedAsync" Underline="false">
@foreach (var preset in Presets)
{
<MudSelectItem Value="@preset">@(preset.Name ?? "(unnamed)")</MudSelectItem>
}
</MudSelect>
}
</div>
<MudDivider Class="my-2" />
<div class="pt-2 px-4">
Expand Down
22 changes: 21 additions & 1 deletion src/MudBlazor.ThemeManager/Components/MudThemeManager.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public partial class MudThemeManager : ComponentBaseWithState
private Palette? _currentPaletteDark;
private Palette _currentPalette;
private MudTheme? _customTheme;
private ThemeManagerTheme? _previousTheme;

public MudThemeManager()
{
Expand Down Expand Up @@ -45,14 +46,30 @@ public MudThemeManager()
[Parameter]
public ColorPickerView ColorPickerView { get; set; } = ColorPickerView.Spectrum;

[Parameter]
public IEnumerable<ThemeManagerTheme>? Presets { get; set; }

[Parameter]
public EventCallback<ThemeManagerTheme> PresetSelected { get; set; }

[Parameter]
public EventCallback<ThemeManagerTheme> ThemeChanged { get; set; }

protected override void OnInitialized()
{
base.OnInitialized();
SyncWithTheme();
}

if (Theme is null)
protected override void OnParametersSet()
{
base.OnParametersSet();
SyncWithTheme();
}

private void SyncWithTheme()
{
if (Theme is null || ReferenceEquals(Theme, _previousTheme))
{
return;
}
Expand All @@ -61,8 +78,11 @@ protected override void OnInitialized()
_currentPaletteLight = Theme.Theme.PaletteLight.DeepClone();
_currentPaletteDark = Theme.Theme.PaletteDark.DeepClone();
_currentPalette = GetPalette();
_previousTheme = Theme;
}

private Task OnPresetSelectedAsync(ThemeManagerTheme value) => PresetSelected.InvokeAsync(value);

public Task UpdatePalette(ThemeUpdatedValue value)
{
UpdateCustomTheme();
Expand Down
2 changes: 2 additions & 0 deletions src/MudBlazor.ThemeManager/Models/ThemeManagerTheme.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

public class ThemeManagerTheme
{
public string? Name { get; set; }

public MudTheme Theme { get; set; } = new();

public bool RTL { get; set; }
Expand Down