diff --git a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs index 8723209c53..ffbb62ba04 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs @@ -184,6 +184,7 @@ namespace Volo.Abp.BlazoriseUI protected TUpdateViewModel EditingEntity; protected Modal CreateModal; protected Modal EditModal; + protected List BreadcrumbItems = new List(2); protected string CreatePolicyName { get; set; } protected string UpdatePolicyName { get; set; } @@ -239,6 +240,7 @@ namespace Volo.Abp.BlazoriseUI protected override async Task OnInitializedAsync() { + await SetBreadcrumbItemsAsync(); await SetPermissionsAsync(); await GetEntitiesAsync(); } @@ -438,5 +440,10 @@ namespace Volo.Abp.BlazoriseUI await AuthorizationService.CheckAsync(policyName); } + + protected virtual ValueTask SetBreadcrumbItemsAsync() + { + return ValueTask.CompletedTask; + } } } diff --git a/framework/src/Volo.Abp.BlazoriseUI/BreadcrumbItem.cs b/framework/src/Volo.Abp.BlazoriseUI/BreadcrumbItem.cs new file mode 100644 index 0000000000..36417e122a --- /dev/null +++ b/framework/src/Volo.Abp.BlazoriseUI/BreadcrumbItem.cs @@ -0,0 +1,20 @@ +using Blazorise; + +namespace Volo.Abp.BlazoriseUI +{ + public class BreadcrumbItem + { + public string Text { get; set; } + + public object Icon { get; set; } + + public string Url { get; set; } + + public BreadcrumbItem(string text, string url = null, object icon = null) + { + Text = text; + Url = url; + Icon = icon; + } + } +} diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/PageHeader.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/PageHeader.razor new file mode 100644 index 0000000000..4a569cfe95 --- /dev/null +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/PageHeader.razor @@ -0,0 +1,37 @@ + + +

@Title

+
+ @if (BreadcrumbItems.Any()) + { + + + @if (BreadcrumbShowHome) + { + + + + + + } + @foreach (var item in BreadcrumbItems) + { + + + @if (item.Icon != null) + { + + } + @item.Text + + + } + + + } + + + @ChildContent + + +
\ No newline at end of file diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/PageHeader.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/PageHeader.razor.cs new file mode 100644 index 0000000000..90e4b0f0c7 --- /dev/null +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/PageHeader.razor.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using Blazorise; +using Microsoft.AspNetCore.Components; + +namespace Volo.Abp.BlazoriseUI.Components +{ + public partial class PageHeader : ComponentBase + { + [Parameter] + public string Title { get; set; } + + [Parameter] + public bool BreadcrumbShowHome { get; set; } = true; + + [Parameter] + public bool BreadcrumbShowCurrent { get; set; } = true; + + [Parameter] + public RenderFragment ChildContent { get; set; } + + [Parameter] + public List BreadcrumbItems { get; set; } + + public PageHeader() + { + BreadcrumbItems = new List(); + } + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor index 8f5285ff98..ce854161ef 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor @@ -1,26 +1,9 @@ @page "/setting-management" -@using Microsoft.Extensions.Localization -@using Volo.Abp.SettingManagement.Localization -@inject IStringLocalizer L @inherits SettingManagementBase - @* ************************* PAGE HEADER ************************* *@ -
-
-

@L["Settings"]

-
-
- -
-
-
- -
-
-
+ + + @@ -39,7 +22,7 @@

@group.DisplayName

- + @{ SettingItemRenders.Add(builder => { @@ -47,7 +30,7 @@ builder.CloseComponent(); }); } - + @SettingItemRenders.Last()
} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs index 3d41afd05f..3c4775fd02 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor.cs @@ -3,7 +3,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; +using Volo.Abp.BlazoriseUI; +using Volo.Abp.SettingManagement.Localization; namespace Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement { @@ -11,18 +14,21 @@ namespace Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement { [Inject] protected IServiceProvider ServiceProvider { get; set; } - + protected SettingComponentCreationContext SettingComponentCreationContext { get; set; } [Inject] protected IOptions _options { get; set; } + [Inject] + protected IStringLocalizer L { get; set; } protected SettingManagementComponentOptions Options => _options.Value; - + protected List SettingItemRenders { get; set; } = new List(); protected string SelectedGroup; - + protected List BreadcrumbItems = new List(); + protected override async Task OnInitializedAsync() { SettingComponentCreationContext = new SettingComponentCreationContext(ServiceProvider); @@ -31,10 +37,11 @@ namespace Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement { await contributor.ConfigureAsync(SettingComponentCreationContext); } - + SettingItemRenders.Clear(); SelectedGroup = GetNormalizedString(SettingComponentCreationContext.Groups.First().Id); + BreadcrumbItems.Add(new BreadcrumbItem(L["Settings"])); } protected string GetNormalizedString(string value) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor index 4685ac9893..de520acc22 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/_Imports.razor @@ -1,5 +1,6 @@ @using Microsoft.AspNetCore.Components.Web @using Volo.Abp.AspNetCore.Components.WebAssembly @using Volo.Abp.BlazoriseUI +@using Volo.Abp.BlazoriseUI.Components @using Blazorise @using Blazorise.DataGrid \ No newline at end of file