From b0f68f82881a29e9b5174ed160e8e9f71ca1dcd7 Mon Sep 17 00:00:00 2001 From: capdiem Date: Mon, 8 Jan 2024 13:38:57 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20refactor:=20improve=20the=20perform?= =?UTF-8?q?ance=20(#680)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExpansionAppWrapper.razor | 167 ++++++++++++++---- .../ExpansionAppWrapper.razor.cs | 28 +++ .../ExpansionNavWrapper.razor | 107 ----------- .../ExpansionNavWrapper.razor.cs | 70 -------- .../GlobalNavigations/GlobalNavigation.razor | 7 +- src/Masa.Stack.Components/wwwroot/css/app.css | 87 +++++++-- 6 files changed, 240 insertions(+), 226 deletions(-) delete mode 100644 src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor delete mode 100644 src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor.cs diff --git a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor b/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor index b3b78021..ead22fc5 100644 --- a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor +++ b/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor @@ -3,42 +3,141 @@ @{ var disableAppOper = Value.MetaData.Situation == ExpansionMenuSituation.Preview || Value.MetaData.Situation == ExpansionMenuSituation.Favorite; + var indeterminate = Value.State == ExpansionMenuState.Indeterminate; + var appSelected = Value.State == ExpansionMenuState.Selected; } -
- -
- - @Value.Name - - @if (!disableAppOper) +
+
+ + @Value.Name + + @if (!disableAppOper) + { + + + var icon = appSelected ? "mdi-check" : (indeterminate ? "mdi-minus-box" : "mdi-checkbox-blank-outline"); + + + + } +
+
+ @foreach (var navGroup in Value.Children) + { + + } +
+
+ +@code { + + private RenderFragment RenderNestNav(ExpansionMenu menu) => __builder => + { + @RenderNav(menu) + + if (menu.Children.Count != 0) + { + foreach (var child in menu.Children) { - - - var indeterminate = Value.State == ExpansionMenuState.Indeterminate; - var appSelected = Value.State == ExpansionMenuState.Selected; - if (!context.Hover && indeterminate) - { - mdi-minus-box - } -
- @T("SelectAll") - -
+ @RenderNestNav(child) } -
-
-
- @foreach (var nav in Value.Children) + } + }; + + private RenderFragment RenderNav(ExpansionMenu menu) => __builder => { - -
+ }; + +} diff --git a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor.cs b/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor.cs index 381ae54c..18f99172 100644 --- a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor.cs +++ b/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionAppWrapper.razor.cs @@ -15,4 +15,32 @@ private async Task ItemOperClick() { await OnItemOperClick.InvokeAsync(Value); } + + private static string GetClass(ExpansionMenu menu) + { + var css = new string[3]; + css[0] = "clear-before-opacity"; + + switch (menu.GetNavDeep()) + { + case 0: + css[1] = "neutral-text-regular-secondary font-14-bold"; + css[2] = "nav-item"; + break; + case 1: + css[1] = "neutral-text-secondary font-14"; + css[2] = "sub-nav-item"; + break; + case 2: + css[1] = "neutral-text-secondary font-14"; + css[2] = "action-item"; + break; + default: + css[1] = "neutral-text-secondary font-14"; + css[2] = "action-item2"; + break; + } + + return string.Join(" ", css); + } } diff --git a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor b/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor deleted file mode 100644 index e7b1ffec..00000000 --- a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor +++ /dev/null @@ -1,107 +0,0 @@ -@namespace Masa.Stack.Components.Shared.GlobalNavigations -@inherits MasaComponentBase - -@{ - var indeterminate = Value.State == ExpansionMenuState.Indeterminate; - var selected = Value.State == ExpansionMenuState.Selected; - var isFavorite = Value.State == ExpansionMenuState.Favorite; -} - -
- - @if (Value.Type == ExpansionMenuType.Nav) - { - -
-
- @DT(Value.Name) -
- -
- @if (context.Hover) - { - @if (Value.MetaData.Situation == ExpansionMenuSituation.Authorization) - { - - } - else if (Value.MetaData.Situation == ExpansionMenuSituation.Favorite) - { - - mdi-star - - } - } - else if (!context.Hover && Value.MetaData.Situation != ExpansionMenuSituation.Preview) - { - switch (Value.State) - { - case ExpansionMenuState.Selected: - mdi-check - break; - case ExpansionMenuState.Impersonal: - mdi-close - break; - case ExpansionMenuState.Indeterminate: - mdi-minus-box - break; - case ExpansionMenuState.Favorite: - mdi-star - break; - } - } -
-
-
- } - else if (Value.Type == ExpansionMenuType.Element) - { -
-
-
- @DT(Value.Name) -
- - @if (!Value.Disabled) - { -
- -
- @if (!context.Hover) - { - switch (Value.State) - { - case ExpansionMenuState.Selected: - mdi-check - break; - case ExpansionMenuState.Impersonal: - mdi-close - break; - } - } - } -
-
- } -
- - @if (Value.GetNavDeep() == 0 && Value.Children.Any(child => !child.Hidden)) - { -
- } -
- - -@foreach (var child in Value.Children) -{ - -} diff --git a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor.cs b/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor.cs deleted file mode 100644 index b64d5567..00000000 --- a/src/Masa.Stack.Components/Shared/GlobalNavigations/ExpansionNavWrapper.razor.cs +++ /dev/null @@ -1,70 +0,0 @@ -namespace Masa.Stack.Components.Shared.GlobalNavigations; - -public partial class ExpansionNavWrapper : MasaComponentBase -{ - [Parameter] - public ExpansionMenu Value { get; set; } = null!; - - [Parameter] - public EventCallback OnItemClick { get; set; } - - [Parameter] - public EventCallback OnItemOperClick { get; set; } - - private string GetClass(bool hover) - { - var css = new string[4]; - css[0] = "clear-before-opacity"; - - switch (Value.GetNavDeep()) - { - case 0: - css[1] = "neutral-text-regular-secondary font-14-bold"; - css[2] = "nav-item"; - css[3] = hover ? "font-14-bold neutral-text-hell fill-hover" : ""; - break; - case 1: - css[1] = "neutral-text-secondary font-14"; - css[2] = "sub-nav-item"; - css[3] = hover ? "btn neutral-text-emphasis fill-hover" : ""; - break; - default: - css[1] = "neutral-text-secondary font-14"; - css[2] = "action-item"; - css[3] = hover ? "btn neutral-text-emphasis fill-hover" : ""; - break; - } - - return string.Join(" ", css); - } - - private string GetActiveClass() - { - switch (Value.GetNavDeep()) - { - case 1: - return "neutral-text-hell"; - case 2: - case 3: - return "neutral-text-emphasis"; - default: - return string.Empty; - } - } - - private async Task ItemClick() - { - if (OnItemClick.HasDelegate) - { - await OnItemClick.InvokeAsync(Value); - } - } - - private async Task ItemOperClick() - { - if (OnItemOperClick.HasDelegate) - { - await OnItemOperClick.InvokeAsync(Value); - } - } -} diff --git a/src/Masa.Stack.Components/Shared/GlobalNavigations/GlobalNavigation.razor b/src/Masa.Stack.Components/Shared/GlobalNavigations/GlobalNavigation.razor index 248811c8..b6d11d6c 100644 --- a/src/Masa.Stack.Components/Shared/GlobalNavigations/GlobalNavigation.razor +++ b/src/Masa.Stack.Components/Shared/GlobalNavigations/GlobalNavigation.razor @@ -105,11 +105,8 @@