diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor index 3b1cdc1d4d..32de8507cb 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor @@ -1,62 +1,67 @@ -@using Volo.Abp.UI.Navigation +@using Volo.Abp.UI.Navigation @{ - var elementId = MenuItem.MenuItem.ElementId ?? "MenuItem_" + MenuItem.MenuItem.Name.Replace(".", "_"); - var cssClass = string.IsNullOrEmpty(MenuItem.MenuItem.CssClass) ? string.Empty : MenuItem.MenuItem.CssClass; - var disabled = MenuItem.MenuItem.IsDisabled ? "disabled" : string.Empty; - var url = MenuItem.MenuItem.Url == null ? "#" : MenuItem.MenuItem.Url.TrimStart('/', '~'); - var customComponentType = MenuItem.MenuItem.GetComponentTypeOrDefault(); + var customComponentType = MenuItem.GetComponentTypeOrDefault(); } -@if (MenuItem.MenuItem.IsLeaf) + +@if (customComponentType != null && typeof(ComponentBase).IsAssignableFrom(customComponentType)) { - if (customComponentType != null && typeof(ComponentBase).IsAssignableFrom(customComponentType)) - { - - } - else if (MenuItem.MenuItem.Url != null) - { - - } + } else { - + else + { + var itemUrl = item.Url == null ? "#" : item.Url.TrimStart('/', '~'); + + @if (item.Icon != null) + { + + } + + @item.DisplayName + + + } + } + + } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor.cs index fc1c0a2da4..ea448c3b7d 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor.cs +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor.cs @@ -1,23 +1,20 @@ using System; +using Blazorise; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Routing; -using Volo.Abp.AspNetCore.Components.Web.Theming.Layout; +using Volo.Abp.UI.Navigation; namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; public partial class FirstLevelNavMenuItem : IDisposable { - [Inject] - private NavigationManager NavigationManager { get; set; } - - [Inject] - protected PageLayout PageLayout { get; set; } - [Parameter] - public MenuViewModel Menu { get; set; } + public ApplicationMenuItem MenuItem { get; set; } = default!; - [Parameter] - public MenuItemViewModel MenuItem { get; set; } + private Dropdown _dropdown; + + [Inject] + private NavigationManager NavigationManager { get; set; } protected override void OnInitialized() { @@ -26,13 +23,7 @@ public partial class FirstLevelNavMenuItem : IDisposable protected virtual void OnLocationChanged(object sender, LocationChangedEventArgs e) { - Menu.CloseAll(); - Menu.InvokeStateChanged(); - } - - protected virtual void ToggleMenu() - { - Menu.ToggleOpen(MenuItem); + _dropdown?.Hide(); } public virtual void Dispose() diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainMenuProvider.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainMenuProvider.cs deleted file mode 100644 index c8d63792d9..0000000000 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainMenuProvider.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.UI.Navigation; - -namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; - -public class MainMenuProvider : IScopedDependency -{ - private readonly IMenuManager _menuManager; - - public MainMenuProvider(IMenuManager menuManager) - { - _menuManager = menuManager; - } - - public virtual async Task GetMenuAsync() - { - var menu = await _menuManager.GetMainMenuAsync(); - var result = new MenuViewModel - { - Menu = menu, - Items = menu.Items.Select(CreateMenuItemViewModel).ToList() - }; - result.SetParents(); - return result; - } - - private MenuItemViewModel CreateMenuItemViewModel(ApplicationMenuItem applicationMenuItem) - { - var viewModel = new MenuItemViewModel - { - MenuItem = applicationMenuItem, - }; - - viewModel.Items = new List(); - - foreach (var item in applicationMenuItem.Items) - { - viewModel.Items.Add(CreateMenuItemViewModel(item)); - } - - return viewModel; - } -} diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MenuItemViewModel.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MenuItemViewModel.cs deleted file mode 100644 index 0c31d6dfe5..0000000000 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MenuItemViewModel.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Collections.Generic; -using JetBrains.Annotations; -using Volo.Abp.UI.Navigation; - -namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; - -public class MenuItemViewModel -{ - public ApplicationMenuItem MenuItem { get; set; } - - public IList Items { get; set; } - - public bool IsOpen { get; set; } - - [CanBeNull] - public MenuItemViewModel Parent { get; set; } - - public void Open() - { - Parent?.Open(); - IsOpen = true; - } - - public void Close() - { - foreach (var childItem in Items) - { - childItem.Close(); - } - - IsOpen = false; - } - - public void SetParents([CanBeNull] MenuItemViewModel parent) - { - Parent = parent; - - foreach (var childItem in Items) - { - childItem.SetParents(this); - } - } -} diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MenuViewModel.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MenuViewModel.cs deleted file mode 100644 index 28e9a19d6d..0000000000 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MenuViewModel.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using Volo.Abp.UI.Navigation; - -namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; - -public class MenuViewModel -{ - public ApplicationMenu Menu { get; set; } - - public List Items { get; set; } - - public EventHandler StateChanged; - - public void SetParents() - { - foreach (var item in Items) - { - item.SetParents(null); - } - } - - public void ToggleOpen(MenuItemViewModel menuItem) - { - if (menuItem.IsOpen) - { - menuItem.Close(); - } - else - { - CloseAll(); - menuItem.Open(); - } - - StateChanged.InvokeSafely(this); - } - - public void CloseAll() - { - foreach (var item in Items) - { - item.Close(); - } - } - - public void InvokeStateChanged() - { - StateChanged.InvokeSafely(this); - } -} diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor index f0d03be25e..b35ec8ba2e 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor @@ -2,6 +2,6 @@ { foreach (var menuItem in Menu.Items) { - + } } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor.cs index a6999173d5..5b9c07ad44 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor.cs +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor.cs @@ -11,39 +11,27 @@ namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; public partial class NavMenu : IDisposable { [Inject] - protected MainMenuProvider MainMenuProvider { get; set; } + protected IMenuManager MenuManager { get; set; } [Inject] protected ApplicationConfigurationChangedService ApplicationConfigurationChangedService { get; set; } - protected MenuViewModel Menu { get; set; } + protected ApplicationMenu Menu { get; set; } protected async override Task OnInitializedAsync() { - Menu = await MainMenuProvider.GetMenuAsync(); - Menu.StateChanged += Menu_StateChanged; + Menu = await MenuManager.GetMainMenuAsync(); ApplicationConfigurationChangedService.Changed += ApplicationConfigurationChanged; } - private void Menu_StateChanged(object sender, EventArgs e) - { - InvokeAsync(StateHasChanged); - } - private async void ApplicationConfigurationChanged() { - Menu.StateChanged -= Menu_StateChanged; - Menu = await MainMenuProvider.GetMenuAsync(); - Menu.StateChanged += Menu_StateChanged; + Menu = await MenuManager.GetMainMenuAsync(); await InvokeAsync(StateHasChanged); } public void Dispose() { - if (Menu != null) - { - Menu.StateChanged -= Menu_StateChanged; - } ApplicationConfigurationChangedService.Changed -= ApplicationConfigurationChanged; } } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor index 08f4f72090..2e6f783556 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor @@ -1,55 +1,48 @@ -@using Volo.Abp.UI.Navigation +@using Volo.Abp.UI.Navigation @{ - var elementId = MenuItem.MenuItem.ElementId ?? "MenuItem_" + MenuItem.MenuItem.Name.Replace(".", "_"); - var cssClass = string.IsNullOrEmpty(MenuItem.MenuItem.CssClass) ? string.Empty : MenuItem.MenuItem.CssClass; - var disabled = MenuItem.MenuItem.IsDisabled ? "disabled" : string.Empty; - var url = MenuItem.MenuItem.Url == null ? "#" : MenuItem.MenuItem.Url.TrimStart('/', '~'); - var customComponentType = MenuItem.MenuItem.GetComponentTypeOrDefault(); + var customComponentType = MenuItem.GetComponentTypeOrDefault(); } -@if (MenuItem.MenuItem.IsLeaf) + +@if (customComponentType != null && typeof(ComponentBase).IsAssignableFrom(customComponentType)) { - if (customComponentType != null && typeof(ComponentBase).IsAssignableFrom(customComponentType)) - { - - } - else if (MenuItem.MenuItem.Url != null) - { - - @if (MenuItem.MenuItem.Icon != null) - { - - } - - @MenuItem.MenuItem.DisplayName - - - } + } else { - + + } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor.cs index d835082390..b188b764ed 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor.cs +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor.cs @@ -1,23 +1,23 @@ using System; +using Blazorise; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Routing; -using Volo.Abp.AspNetCore.Components.Web.Theming.Layout; +using Volo.Abp.UI.Navigation; namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; public partial class SecondLevelNavMenuItem : IDisposable { - [Inject] - private NavigationManager NavigationManager { get; set; } - - [Inject] - protected PageLayout PageLayout { get; set; } - [Parameter] - public MenuViewModel Menu { get; set; } + public ApplicationMenuItem MenuItem { get; set; } = default!; [Parameter] - public MenuItemViewModel MenuItem { get; set; } + public Dropdown ParentDropdown { get; set; } = default!; + + private Dropdown _dropdown; + + [Inject] + private NavigationManager NavigationManager { get; set; } protected override void OnInitialized() { @@ -26,13 +26,8 @@ public partial class SecondLevelNavMenuItem : IDisposable protected virtual void OnLocationChanged(object sender, LocationChangedEventArgs e) { - Menu.CloseAll(); - Menu.InvokeStateChanged(); - } - - protected virtual void ToggleMenu() - { - Menu.ToggleOpen(MenuItem); + ParentDropdown?.Hide(); + _dropdown?.Hide(); } public virtual void Dispose()