diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index c31ef07228b..ca6a6838750 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 10.3.1-beta03 + 10.3.1-beta04 diff --git a/src/BootstrapBlazor/Components/Step/Step.razor.cs b/src/BootstrapBlazor/Components/Step/Step.razor.cs index 63af8b7e789..54155ef0749 100644 --- a/src/BootstrapBlazor/Components/Step/Step.razor.cs +++ b/src/BootstrapBlazor/Components/Step/Step.razor.cs @@ -155,6 +155,21 @@ public async Task Next() return _currentStepIndex; } + /// + /// 设置当前步骤索引 + /// Set current step index value + /// + /// + public async Task SetStepIndex(int index) + { + _currentStepIndex = Math.Max(0, Math.Min(Items.Count, index)); + if (IsFinished && OnFinishedCallback != null) + { + await OnFinishedCallback(); + } + StateHasChanged(); + } + /// /// 重置步骤方法 /// Reset Step Method diff --git a/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs b/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs index 2b13f09d4f4..eca868bf690 100644 --- a/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs +++ b/src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs @@ -196,13 +196,13 @@ public partial class TreeView : IModelEqualityComparer public Func, Task>>>? OnExpandNodeAsync { get; set; } /// - /// + /// /// [Parameter] public Type CustomKeyAttribute { get; set; } = typeof(KeyAttribute); /// - /// + /// /// [Parameter] public Func? ModelEqualityComparer { get; set; } diff --git a/test/UnitTest/Components/StepTest.cs b/test/UnitTest/Components/StepTest.cs index 0b6275076a0..ad7770cdbc6 100644 --- a/test/UnitTest/Components/StepTest.cs +++ b/test/UnitTest/Components/StepTest.cs @@ -128,7 +128,7 @@ public void Step_Method() } [Fact] - public void FinishedTemplate_Ok() + public async Task FinishedTemplate_Ok() { bool finished = false; var cut = Context.Render(pb => @@ -143,8 +143,29 @@ public void FinishedTemplate_Ok() }); }); var step = cut.Instance; - cut.InvokeAsync(() => step.Next()); - cut.WaitForAssertion(() => cut.Contains("Finished-Template")); + await cut.InvokeAsync(() => step.Next()); + cut.Contains("Finished-Template"); + Assert.True(finished); + } + + [Fact] + public async Task SetStepIndex() + { + bool finished = false; + var cut = Context.Render(pb => + { + pb.Add(a => a.Items, GetStepItems); + pb.Add(a => a.StepIndex, 2); + pb.Add(a => a.OnFinishedCallback, () => + { + finished = true; + return Task.CompletedTask; + }); + }); + var step = cut.Instance; + await cut.InvokeAsync(() => step.SetStepIndex(1)); + Assert.False(finished); + await cut.InvokeAsync(() => step.SetStepIndex(3)); Assert.True(finished); }