From 3c69df455c097b686e0ea5ce6cf06ef17f96484b Mon Sep 17 00:00:00 2001 From: Vicky Date: Thu, 25 Jan 2024 15:41:31 +0800 Subject: [PATCH] =?UTF-8?q?TreeView=20=E5=A2=9E=E5=8A=A0DisableCanExpand?= =?UTF-8?q?=20=E5=92=8C=20IsDisabled=20=E5=B1=9E=E6=80=A7=20DisableCanExpa?= =?UTF-8?q?nd=20=3D=20true=E6=97=B6=E5=80=99=20,=20=E5=BD=93=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=A2=AB=E7=A6=81=E7=94=A8=E4=BD=BF=E7=94=A8=E4=BB=8D?= =?UTF-8?q?=E7=84=B6=E5=8F=AF=E4=BB=A5=E8=A2=AB=E5=B1=95=E5=BC=80=E6=88=96?= =?UTF-8?q?=E6=94=B6=E7=BC=A9,=20=E9=BB=98=E8=AE=A4=E4=B8=BAfalse=20TreeVi?= =?UTF-8?q?ew.IsDisabled=20=3D=20true=E6=97=B6=E5=80=99,=20=E6=95=B4?= =?UTF-8?q?=E4=B8=AATreeView=E9=83=BD=E8=A2=AB=E7=A6=81=E7=94=A8,=20=20?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BAfalse=20=E6=96=87=E6=A1=A3=E5=92=8C?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E4=B9=9F=E6=9B=B4=E6=96=B0=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Samples/TreeViews.razor | 6 ++++- .../Components/Samples/TreeViews.razor.cs | 18 +++++++++++++ src/BootstrapBlazor.Server/Locales/en-US.json | 4 ++- src/BootstrapBlazor.Server/Locales/zh-CN.json | 4 ++- .../Components/TreeView/TreeView.razor | 2 +- .../Components/TreeView/TreeView.razor.cs | 26 ++++++++++++++----- 6 files changed, 49 insertions(+), 11 deletions(-) diff --git a/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor b/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor index 5f8889ffe..1877a59d3 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor @@ -58,7 +58,11 @@ Introduction="@Localizer["TreeViewTreeDisableIntro"]" Name="TreeDisable">
@((MarkupString)Localizer["TreeViewTreeDisableDescription"].Value)
- +
+ + +
+ > Items { get; set; } = TreeFoo.GetTreeItems(); @@ -295,6 +297,22 @@ public sealed partial class TreeViews Type = "Func", ValueList = " — ", DefaultValue = " — " + }, + new() + { + Name = nameof(TreeView.IsDisabled), + Description = "Disable tree view", + Type = "bool", + ValueList = "true|false", + DefaultValue = "false" + }, + new() + { + Name = nameof(TreeView.DisableCanExpand), + Description = "Whether to expand when the control node is disabled", + Type = "bool", + ValueList = "true|false", + DefaultValue = "false" } ]; diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index b01391bfa..9fd2b7da7 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -663,7 +663,9 @@ "TreeViewSetActiveTitle": "Set Active Node", "TreeViewSetActiveIntro": "Set the currently active node by calling the SetActiveItem method", "TreeViewSetActiveDisplayText": "Current Active Node", - "TreeViewsAttribute": "TreeItem property" + "TreeViewsAttribute": "TreeItem property", + "TreeViewsDisableWholeTreeView": "Whole TreeView disable", + "TreeViewsWhetherToExpandWhenDisable": "Whether to expand when the control node is disabled" }, "BootstrapBlazor.Server.Components.Samples.Trees": { "TreeIntro": "

Obsolete,The TreeView provides more functions", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 786e3f09e..12aef4b60 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -663,7 +663,9 @@ "TreeViewSetActiveTitle": "设置激活节点", "TreeViewSetActiveIntro": "通过调用 SetActiveItem 方法设置当前激活节点", "TreeViewSetActiveDisplayText": "当前激活节点", - "TreeViewsAttribute": "TreeItem 属性" + "TreeViewsAttribute": "TreeItem 属性", + "TreeViewsDisableWholeTreeView": "是否禁用整个TreeView", + "TreeViewsWhetherToExpandWhenDisable": "禁用时候是否可以展开或折叠子节点" }, "BootstrapBlazor.Server.Components.Samples.Trees": { "TreeIntro": "

本组件已弃用,请使用新组件 TreeView 提供更多功能", diff --git a/src/BootstrapBlazor/Components/TreeView/TreeView.razor b/src/BootstrapBlazor/Components/TreeView/TreeView.razor index d4538b4f2..0a46dab98 100644 --- a/src/BootstrapBlazor/Components/TreeView/TreeView.razor +++ b/src/BootstrapBlazor/Components/TreeView/TreeView.razor @@ -43,7 +43,7 @@ else @if (ShowCheckbox) { - } diff --git a/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs b/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs index d6c946bd0..7659866c4 100644 --- a/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs +++ b/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs @@ -34,7 +34,7 @@ public partial class TreeView : IModelEqualityComparer /// /// /// - private static string? GetIconClassString(TreeViewItem item) => CssBuilder.Default("tree-icon") + private string? GetIconClassString(TreeViewItem item) => CssBuilder.Default("tree-icon") .AddClass(item.Icon) .AddClass(item.ExpandIcon, item.IsExpand && !string.IsNullOrEmpty(item.ExpandIcon)) .Build(); @@ -57,7 +57,7 @@ public partial class TreeView : IModelEqualityComparer /// private string? GetItemClassString(TreeViewItem item) => CssBuilder.Default("tree-item") .AddClass("active", ActiveItem == item) - .AddClass("disabled", item.IsDisabled) + .AddClass("disabled", !DisableCanExpand && (IsDisabled || item.IsDisabled)) .Build(); ///

@@ -65,23 +65,35 @@ public partial class TreeView : IModelEqualityComparer /// /// /// - private static string? GetTreeClassString(TreeViewItem item) => CssBuilder.Default("tree-ul") + private string? GetTreeClassString(TreeViewItem item) => CssBuilder.Default("tree-ul") .AddClass("show", item.IsExpand) .Build(); - private static string? GetNodeClassString(TreeViewItem item) => CssBuilder.Default("tree-node") - .AddClass("disabled", item.IsDisabled) + private string? GetNodeClassString(TreeViewItem item) => CssBuilder.Default("tree-node") + .AddClass("disabled", !DisableCanExpand && (IsDisabled || item.IsDisabled)) .Build(); - private static bool TriggerNodeArrow(TreeViewItem item) => !item.IsDisabled && (item.HasChildren || item.Items.Any()); + private bool TriggerNodeArrow(TreeViewItem item) => (DisableCanExpand || !(IsDisabled || item.IsDisabled)) && (item.HasChildren || item.Items.Any()); - private static bool TriggerNodeLabel(TreeViewItem item) => !item.IsDisabled; + private bool TriggerNodeLabel(TreeViewItem item) => !(IsDisabled || item.IsDisabled); /// /// 获得/设置 选中节点 默认 null /// private TreeViewItem? ActiveItem { get; set; } + /// + /// 是否整个TreeView禁用 默认 false + /// + [Parameter] + public bool IsDisabled { get; set; } = false; + + /// + /// 当Disable时候是否允许展开折叠节点 默认 false + /// + [Parameter] + public bool DisableCanExpand { get; set; } = false; + /// /// 获得/设置 是否为手风琴效果 默认为 false /// -- Gitee