diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewAccordionModel.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewAccordionModel.razor
deleted file mode 100644
index 5af8793f806b37887a8c96fb1b93645cf1d12830..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewAccordionModel.razor
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-@code {
- private static List> GetAccordionItems()
- {
- var ret = TreeFoo.GetTreeItems();
- ret[1].Items[0].HasChildren = true;
- return ret;
- }
-
- private static async Task>> OnExpandNodeAsync(TreeViewItem node)
- {
- await Task.Delay(800);
- var item = node.Value;
- return new TreeViewItem[]
- {
- new TreeViewItem(new TreeFoo() { Id = $"{item.Id}-101", ParentId = item.Id })
- {
- Text = "懒加载子节点1",
- HasChildren = true
- },
- new TreeViewItem(new TreeFoo(){ Id = $"{item.Id}-102", ParentId = item.Id })
- {
- Text = "懒加载子节点2"
- }
- };
- }
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewCheckbox.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewCheckbox.razor
deleted file mode 100644
index 0bb2c180e22852a4be48c0e0e1f963eee89111ff..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewCheckbox.razor
+++ /dev/null
@@ -1,54 +0,0 @@
-@inject IStringLocalizer Localizer
-
-
-
-
-
-@code {
- [NotNull]
- private ConsoleLogger? Logger { get; set; }
-
- private bool AutoCheckChildren { get; set; }
-
- private bool AutoCheckParent { get; set; }
-
- private void OnRefresh()
- {
- CheckedItems = GetCheckedItems();
- }
-
- private List> CheckedItems { get; set; } = GetCheckedItems();
-
- private static List> GetCheckedItems()
- {
- var ret = TreeFoo.GetTreeItems();
- ret[1].IsActive = true;
- ret[1].Items[1].CheckedState = CheckboxState.Checked;
- return ret;
- }
-
- private bool IsReset { get; set; }
-
- private List ResetItems { get; } = new List()
- {
- new("True", "Reset"),
- new("False", "Keep")
- };
-
- private Task OnTreeItemChecked(List> items)
- {
- Logger.Log($"当前共选中{items.Count}项");
- return Task.CompletedTask;
- }
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewCheckedItems.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewCheckedItems.razor
deleted file mode 100644
index 56ba13493d9cbeca71ca434a07266e50eaf31090..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewCheckedItems.razor
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-@code {
- [NotNull]
- private ConsoleLogger? Logger { get; set; }
-
- private List> Items { get; set; } = TreeFoo.GetTreeItems();
-
- private Task OnTreeItemChecked(List> items)
- {
- Logger.Log($"当前共选中{items.Count}项");
- return Task.CompletedTask;
- }
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewDefauleExpand.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewDefauleExpand.razor
deleted file mode 100644
index ff7b7ab0061254f9b5d38365e1876c1b454fd552..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewDefauleExpand.razor
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-@code {
- private List> ExpandItems { get; set; } = GetExpandItems();
-
- private static List> GetExpandItems()
- {
- var ret = TreeFoo.GetTreeItems();
- ret[1].IsExpand = true;
- return ret;
- }
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewNormal.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewNormal.razor
deleted file mode 100644
index 050a7222ac2a6d536582a99a6d3b4637a7c1854b..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewNormal.razor
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-@code {
- [NotNull]
- private ConsoleLogger? Logger { get; set; }
-
- private Task OnTreeItemClick(TreeViewItem item)
- {
- Logger.Log($"TreeItem: {item.Text} clicked");
- return Task.CompletedTask;
- }
-
- private List> Items { get; set; } = TreeFoo.GetTreeItems();
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewShowSkeleton.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewShowSkeleton.razor
deleted file mode 100644
index ca67df5ced18e2c6d123db1539c4562318bf77a0..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewShowSkeleton.razor
+++ /dev/null
@@ -1,35 +0,0 @@
-@inject IStringLocalizer Localizer
-
-
-
-
-@code {
- private List>? AsyncItems { get; set; }
-
- private async Task OnLoadAsyncItems()
- {
- AsyncItems = null;
- await Task.Delay(2000);
- AsyncItems = TreeFoo.GetTreeItems();
- AsyncItems[2].Text = "延时加载";
- AsyncItems[2].HasChildren = true;
- }
-
- private static async Task>> OnExpandNodeAsync(TreeViewItem node)
- {
- await Task.Delay(800);
- var item = node.Value;
- return new TreeViewItem[]
- {
- new TreeViewItem(new TreeFoo() { Id = $"{item.Id}-101", ParentId = item.Id })
- {
- Text = "懒加载子节点1",
- HasChildren = true
- },
- new TreeViewItem(new TreeFoo(){ Id = $"{item.Id}-102", ParentId = item.Id })
- {
- Text = "懒加载子节点2"
- }
- };
- }
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewTreeClickExpand.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewTreeClickExpand.razor
deleted file mode 100644
index 820e48d6fb56aae887c0f059e9c3d1e0ce438452..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewTreeClickExpand.razor
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-@code {
- private List> Items { get; set; } = TreeFoo.GetTreeItems();
-}
diff --git a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewTreeCustomNode.razor b/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewTreeCustomNode.razor
deleted file mode 100644
index 414dd633ffa413189e7994f8eb2c22ccfa230de7..0000000000000000000000000000000000000000
--- a/src/BootstrapBlazor.Shared/Demos/TreeViews/TreeViewTreeCustomNode.razor
+++ /dev/null
@@ -1,46 +0,0 @@
-@using Microsoft.AspNetCore.Components.Rendering
-
-
-@code {
- private static List> GetTemplateItems()
- {
- var ret = TreeFoo.GetTreeItems();
- ret[0].Template = foo => BootstrapDynamicComponent.CreateComponent(new Dictionary()
- {
- [nameof(CustomerTreeItem.Foo)] = foo
- }).Render();
- return ret;
- }
-
- private class CustomerTreeItem : ComponentBase
- {
- [Inject]
- [NotNull]
- private ToastService? ToastService { get; set; }
-
- [Parameter]
- [NotNull]
- public TreeFoo? Foo { get; set; }
-
- ///
- /// BuildRenderTree
- ///
- ///
- protected override void BuildRenderTree(RenderTreeBuilder builder)
- {
- builder.OpenElement(3, "span");
- builder.AddAttribute(4, "class", "me-3");
- builder.AddContent(5, Foo.Text);
- builder.CloseElement();
-
- builder.OpenComponent
+
+
+
+
- @((MarkupString)Localizer["TreeViewTreeDisableDescription"].Value)
+ Name="TreeDisable">
+ @((MarkupString)Localizer["TreeViewTreeDisableDescription"].Value)
+
+
- @((MarkupString)Localizer["TreeViewAccordionModelDescription"].Value)
+ Name="AccordionModel">
+ @((MarkupString)Localizer["TreeViewAccordionModelDescription"].Value)
+
-
-
- @((MarkupString)Localizer["TreeViewDefauleExpandDescription"].Value)
+
+
+
+ @((MarkupString)Localizer["TreeViewDefaultExpandDescription"].Value)
+
+
-
+ Name="TreeDisplayIcon">
+
@((MarkupString)Localizer["TreeViewTreeDisplayIconDescription"].Value)
+
+
-
+ Name="TreeClickExpand">
+
@((MarkupString)Localizer["TreeViewTreeClickExpandDescription"].Value)
+
+
- @((MarkupString)Localizer["TreeViewTreeValidationFormDescription"].Value)
+ Name="TreeValidationForm">
+ @((MarkupString)Localizer["TreeViewTreeValidationFormDescription"].Value)
+
+
+
+
-
+ Name="TreeLazyLoading">
+
@((MarkupString)Localizer["TreeViewTreeLazyLoadingDescription"].Value)
+
+
+ Name="TreeCustomNode">
+
+
+ Name="TreeNodeColor">
+
+
+ Name="CheckedItems">
+
+
+
+ Name="ShowSkeleton">
+
+
diff --git a/src/BootstrapBlazor.Shared/Samples/TreeViews.razor.cs b/src/BootstrapBlazor.Shared/Samples/TreeViews.razor.cs
index c6a6b86d617fd5acdeaa908914899c6fdb51f42b..05512df48040a0d3f6b4038f1a0549182db0fdcc 100644
--- a/src/BootstrapBlazor.Shared/Samples/TreeViews.razor.cs
+++ b/src/BootstrapBlazor.Shared/Samples/TreeViews.razor.cs
@@ -2,6 +2,9 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
+using Microsoft.AspNetCore.Components.Rendering;
+using Microsoft.AspNetCore.Components.Web;
+
namespace BootstrapBlazor.Shared.Samples;
///
@@ -9,6 +12,191 @@ namespace BootstrapBlazor.Shared.Samples;
///
public sealed partial class TreeViews
{
+ [NotNull]
+ private ConsoleLogger? Logger1 { get; set; }
+
+ [NotNull]
+ private ConsoleLogger? Logger2 { get; set; }
+
+ [NotNull]
+ private ConsoleLogger? Logger3 { get; set; }
+
+ private List> Items { get; set; } = TreeFoo.GetTreeItems();
+
+ private bool AutoCheckChildren { get; set; }
+
+ private bool AutoCheckParent { get; set; }
+
+ private List> DisabledItems { get; set; } = GetDisabledItems();
+
+ private List> ExpandItems { get; set; } = GetExpandItems();
+
+ private List> CheckedItems { get; set; } = GetCheckedItems();
+
+ private static List> GetIconItems() => TreeFoo.GetTreeItems();
+
+ private List> GetClickExpandItems { get; set; } = TreeFoo.GetTreeItems();
+
+ private List> GetFormItems { get; set; } = TreeFoo.GetTreeItems();
+
+ private List> CheckedItems2 { get; set; } = TreeFoo.GetTreeItems();
+
+ private List>? AsyncItems { get; set; }
+
+ private Foo Model => Foo.Generate(LocalizerFoo);
+
+ private Task OnTreeItemClick(TreeViewItem item)
+ {
+ Logger1.Log($"TreeItem: {item.Text} clicked");
+ return Task.CompletedTask;
+ }
+
+ private void OnRefresh()
+ {
+ CheckedItems = GetCheckedItems();
+ }
+
+ private static List> GetCheckedItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[1].IsActive = true;
+ ret[1].Items[1].CheckedState = CheckboxState.Checked;
+ return ret;
+ }
+
+ private bool IsReset { get; set; }
+
+ private List ResetItems { get; } = new List()
+ {
+ new("True", "Reset"),
+ new("False", "Keep")
+ };
+
+ private Task OnTreeItemChecked(List> items)
+ {
+ Logger2.Log($"当前共选中{items.Count}项");
+ return Task.CompletedTask;
+ }
+
+ private static List> GetDisabledItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[1].Items[1].IsDisabled = true;
+ return ret;
+ }
+
+ private static List> GetAccordionItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[1].Items[0].HasChildren = true;
+ return ret;
+ }
+
+ private static async Task>> OnExpandNodeAsync(TreeViewItem node)
+ {
+ await Task.Delay(800);
+ var item = node.Value;
+ return new TreeViewItem[]
+ {
+ new TreeViewItem(new TreeFoo() { Id = $"{item.Id}-101", ParentId = item.Id })
+ {
+ Text = "懒加载子节点1",
+ HasChildren = true
+ },
+ new TreeViewItem(new TreeFoo(){ Id = $"{item.Id}-102", ParentId = item.Id })
+ {
+ Text = "懒加载子节点2"
+ }
+ };
+ }
+
+ private static List> GetExpandItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[1].IsExpand = true;
+ return ret;
+ }
+
+ private Task OnFormTreeItemClick(TreeViewItem item)
+ {
+ return Task.CompletedTask;
+ }
+
+ private static List> GetLazyItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[1].Items[0].IsExpand = true;
+ ret[2].Text = "懒加载延时";
+ ret[2].HasChildren = true;
+ return ret;
+ }
+
+ private static List> GetTemplateItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[0].Template = foo => BootstrapDynamicComponent.CreateComponent(new Dictionary()
+ {
+ [nameof(CustomerTreeItem.Foo)] = foo
+ }).Render();
+ return ret;
+ }
+
+ private static List> GetColorItems()
+ {
+ var ret = TreeFoo.GetTreeItems();
+ ret[0].CssClass = "text-primary";
+ ret[1].CssClass = "text-success";
+ ret[2].CssClass = "text-danger";
+ return ret;
+ }
+
+ private Task OnTreeItemChecked2(List> items)
+ {
+ Logger3.Log($"当前共选中{items.Count}项");
+ return Task.CompletedTask;
+ }
+
+ private async Task OnLoadAsyncItems()
+ {
+ AsyncItems = null;
+ await Task.Delay(2000);
+ AsyncItems = TreeFoo.GetTreeItems();
+ AsyncItems[2].Text = "延时加载";
+ AsyncItems[2].HasChildren = true;
+ }
+
+ private class CustomerTreeItem : ComponentBase
+ {
+ [Inject]
+ [NotNull]
+ private ToastService? ToastService { get; set; }
+
+ [Parameter]
+ [NotNull]
+ public TreeFoo? Foo { get; set; }
+
+ ///
+ /// BuildRenderTree
+ ///
+ ///
+ protected override void BuildRenderTree(RenderTreeBuilder builder)
+ {
+ builder.OpenElement(3, "span");
+ builder.AddAttribute(4, "class", "me-3");
+ builder.AddContent(5, Foo.Text);
+ builder.CloseElement();
+
+ builder.OpenComponent