Skip to content

Commit 2abfb68

Browse files
authored
feat(Console): update OnClear support async (#6325)
* refactor: 代码格式化 * refactor: 更改 Func 类型支持异步 * refactor: 更改为私有属性 * doc: 更新示例 * test: 更新单元测试
1 parent a8c8dc7 commit 2abfb68

File tree

4 files changed

+21
-12
lines changed

4 files changed

+21
-12
lines changed

src/BootstrapBlazor.Server/Components/Samples/Consoles.razor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ public sealed partial class Consoles
1919
/// <summary>
2020
/// OnClear
2121
/// </summary>
22-
private void OnClear() => Messages.Clear();
22+
private Task OnClear()
23+
{
24+
Messages.Clear();
25+
return Task.CompletedTask;
26+
}
2327

2428
/// <summary>
2529
/// GetColor

src/BootstrapBlazor/Components/Console/Console.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@
4747
}
4848
@if (OnClear != null)
4949
{
50-
<Button Text="@ClearButtonText" Icon="@ClearButtonIcon" Color="@ClearButtonColor" OnClick="ClearConsole" class="console-clear" />
50+
<Button Text="@ClearButtonText" Icon="@ClearButtonIcon" Color="@ClearButtonColor"
51+
OnClick="OnClearConsole" class="console-clear"></Button>
5152
}
5253
</div>
5354
}

src/BootstrapBlazor/Components/Console/Console.razor.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public partial class Console
121121
/// 获得/设置 清空委托方法
122122
/// </summary>
123123
[Parameter]
124-
public Action? OnClear { get; set; }
124+
public Func<Task>? OnClear { get; set; }
125125

126126
/// <summary>
127127
/// 获得/设置 组件高度 默认为 126px;
@@ -150,7 +150,7 @@ public partial class Console
150150
/// <summary>
151151
/// 获得 是否显示 Footer
152152
/// </summary>
153-
protected bool ShowFooter => OnClear != null || ShowAutoScroll || FooterTemplate != null;
153+
private bool ShowFooter => OnClear != null || ShowAutoScroll || FooterTemplate != null;
154154

155155
[Inject]
156156
[NotNull]
@@ -194,8 +194,11 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
194194
/// <summary>
195195
/// 清空控制台消息方法
196196
/// </summary>
197-
public void ClearConsole()
197+
public async Task OnClearConsole()
198198
{
199-
OnClear?.Invoke();
199+
if (OnClear != null)
200+
{
201+
await OnClear();
202+
}
200203
}
201204
}

test/UnitTest/Components/ConsoleTest.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void Items_OK()
5252
}
5353

5454
[Fact]
55-
public void OnClear_OK()
55+
public async Task OnClear_OK()
5656
{
5757
var clearClicked = false;
5858
var cut = Context.RenderComponent<Console>(builder =>
@@ -66,13 +66,14 @@ public void OnClear_OK()
6666
Assert.False(clearClicked);
6767

6868
// 实例触发 OnClear 方法
69-
cut.Instance.ClearConsole();
69+
await cut.Instance.OnClearConsole();
7070

7171
cut.SetParametersAndRender(pb =>
7272
{
73-
pb.Add(a => a.OnClear, new Action(() =>
73+
pb.Add(a => a.OnClear, new Func<Task>(() =>
7474
{
7575
clearClicked = true;
76+
return Task.CompletedTask;
7677
}));
7778
});
7879
cut.Find(".btn-secondary").Click();
@@ -88,7 +89,7 @@ public void ClearButtonText_OK()
8889
{
8990
new() { Message = "Test1" }, new() { Message = "Test2" }
9091
});
91-
builder.Add(a => a.OnClear, new Action(() => { }));
92+
builder.Add(a => a.OnClear, () => Task.CompletedTask);
9293
builder.Add(a => a.ClearButtonText, "Console Clear");
9394
});
9495

@@ -104,7 +105,7 @@ public void OnClearButtonText_OK()
104105
{
105106
new() { Message = "Test1" }, new() { Message = "Test2" }
106107
});
107-
builder.Add(a => a.OnClear, new Action(() => { }));
108+
builder.Add(a => a.OnClear, () => Task.CompletedTask);
108109
builder.Add(a => a.ClearButtonIcon, "fa-solid fa-xmark");
109110
});
110111

@@ -121,7 +122,7 @@ public void ClearButtonColor_OK()
121122
{
122123
new() { Message = "Test1" }, new() { Message = "Test2" }
123124
});
124-
builder.Add(a => a.OnClear, new Action(() => { }));
125+
builder.Add(a => a.OnClear, () => Task.CompletedTask);
125126
builder.Add(a => a.ClearButtonColor, Color.Primary);
126127
});
127128

0 commit comments

Comments
 (0)