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)
- {
-
-
- @if (MenuItem.MenuItem.Icon != null)
- {
- if (MenuItem.MenuItem.Icon.StartsWith("fa"))
- {
-
- }
- }
- @MenuItem.MenuItem.DisplayName
-
-
- }
+
}
else
{
-
-
- @if (customComponentType != null && typeof(ComponentBase).IsAssignableFrom(customComponentType))
- {
-
- }
- 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()