You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
@using Volo.Abp
|
|
@implements IDisposable
|
|
@inject IComponentBundleManager BundleManager
|
|
@inject PersistentComponentState PersistentComponentState
|
|
|
|
@if (StyleFiles != null)
|
|
{
|
|
foreach (var file in StyleFiles)
|
|
{
|
|
<link rel="stylesheet" href="@file" />
|
|
}
|
|
}
|
|
|
|
@code {
|
|
[Parameter]
|
|
public List<string>? WebAssemblyStyleFiles { get; set; }
|
|
|
|
[Parameter]
|
|
public string? BundleName { get; set; }
|
|
|
|
private List<string>? StyleFiles { get; set; }
|
|
|
|
private PersistingComponentStateSubscription persistingSubscription;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if (BundleName == null)
|
|
{
|
|
throw new AbpException("The BundleName parameter of the AbpStyles component can not be null!");
|
|
}
|
|
|
|
persistingSubscription = PersistentComponentState.RegisterOnPersisting(PersistStyleFiles);
|
|
|
|
if (PersistentComponentState.TryTakeFromJson<List<string>>(nameof(StyleFiles), out var restoredStyleFiles))
|
|
{
|
|
StyleFiles = restoredStyleFiles;
|
|
}
|
|
else
|
|
{
|
|
StyleFiles = (await BundleManager.GetStyleBundleFilesAsync(BundleName!)).ToList();
|
|
}
|
|
|
|
if (OperatingSystem.IsBrowser() && WebAssemblyStyleFiles != null)
|
|
{
|
|
StyleFiles?.AddRange(WebAssemblyStyleFiles);
|
|
}
|
|
}
|
|
|
|
private Task PersistStyleFiles()
|
|
{
|
|
PersistentComponentState.PersistAsJson(nameof(StyleFiles), StyleFiles);
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public void Dispose() => persistingSubscription.Dispose();
|
|
}
|