Skip to content

Commit 1b9c28a

Browse files
j4587698ArgoZhang
andauthored
feat(Mask): add OnCloseAsync cascade parameter (#6609)
* Mask增加OnCloseAsync回调 * doc: 支持多语言 * test: 增加单元测试 * Revert "test: 增加单元测试" This reverts commit 1716203. * test: 更新单元测试 --------- Co-authored-by: Argo Zhang <[email protected]>
1 parent 948a9b9 commit 1b9c28a

File tree

9 files changed

+55
-3
lines changed

9 files changed

+55
-3
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<div class="mask-dialog-demo row">
2+
<div class="col-12">
3+
<h3>MaskDemo</h3>
4+
</div>
5+
<div class="col-12">
6+
<DialogCloseButton></DialogCloseButton>
7+
</div>
8+
</div>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.mask-dialog-demo {
2+
background-color: var(--bs-body-bg);
3+
border-radius: var(--bs-border-radius);
4+
padding: 1rem;
5+
}

src/BootstrapBlazor.Server/Components/Samples/Masks.razor

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@
2727
<Mask @ref="CustomMask1"></Mask>
2828
<Mask @ref="CustomMask2"></Mask>
2929
</DemoBlock>
30+
31+
<DemoBlock Title="@Localizer["MaskCloseTitle"]" Introduction="@Localizer["MaskCloseIntro"]">
32+
<Button Text="Show" OnClick="ShowCloseMask"></Button>
33+
</DemoBlock>

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,12 @@ await MaskService.Show(new MaskOption()
5656
await MaskService.Close(CustomMask1);
5757
await MaskService.Close(CustomMask2);
5858
}
59+
60+
private async Task ShowCloseMask()
61+
{
62+
await MaskService.Show(new MaskOption()
63+
{
64+
ChildContent = BootstrapDynamicComponent.CreateComponent<MaskDemo>().Render()
65+
});
66+
}
5967
}

src/BootstrapBlazor.Server/Locales/en-US.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,9 @@
453453
"MaskContainerIntro": "Specify the mask position by setting the <code>MaskOption</code> parameter <code>ContainerId</code>",
454454
"MultipleMaskContainerTitle": "Multiple Mask",
455455
"MultipleMaskContainerIntro": "By customizing the <code>Mask</code> component, you can mask multiple parts of a web page.",
456-
"MultipleMaskContainerDesc": "Set the <code>Mask</code> component in the component. When calling the <code>Show</code> instance method of <code>MaskService</code>, specify the <code>Mask</code> instance as the second parameter."
456+
"MultipleMaskContainerDesc": "Set the <code>Mask</code> component in the component. When calling the <code>Show</code> instance method of <code>MaskService</code>, specify the <code>Mask</code> instance as the second parameter.",
457+
"MaskCloseTitle": "Close By Code",
458+
"MaskCloseIntro": "Close the popup by using the <code>DialogCloseButton</code> component or cascade parameters"
457459
},
458460
"BootstrapBlazor.Server.Components.Samples.Messages": {
459461
"MessagesTitle": "Message prompt",

src/BootstrapBlazor.Server/Locales/zh-CN.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,10 @@
453453
"MaskContainerIntro": "通过设置 <code>MaskOption</code> 参数 <code>ContainerId</code> 指定遮罩出现位置",
454454
"MultipleMaskContainerTitle": "多遮罩",
455455
"MultipleMaskContainerIntro": "通过自定义设置 <code>Mask</code> 组件可实现网页内多个局部进行遮罩操作",
456-
"MultipleMaskContainerDesc": "组件内自己设置 <code>Mask</code> 组件,调用 <code>MaskService</code> 实例方法 <code>Show</code> 时,通过第二个参数指定 <code>Mask</code> 实例即可"
456+
"MultipleMaskContainerDesc": "组件内自己设置 <code>Mask</code> 组件,调用 <code>MaskService</code> 实例方法 <code>Show</code> 时,通过第二个参数指定 <code>Mask</code> 实例即可",
457+
"MaskCloseTitle": "代码关闭弹窗",
458+
"MaskCloseIntro": "通过使用 <code>DialogCloseButton</code> 组件或者级联参数关闭弹窗"
459+
457460
},
458461
"BootstrapBlazor.Server.Components.Samples.Messages": {
459462
"MessagesTitle": "Message 消息提示",

src/BootstrapBlazor/Components/Mask/Mask.razor

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
@if (_options is { ChildContent: not null })
1010
{
1111
<div class="bb-mask-content">
12-
@_options.ChildContent
12+
<CascadingValue Value="CloseAsync" IsFixed="true">
13+
@_options.ChildContent
14+
</CascadingValue>
1315
</div>
1416
}
1517
</div>

src/BootstrapBlazor/Components/Mask/Mask.razor.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,9 @@ private Task Show(MaskOption? option)
5858
StateHasChanged();
5959
return Task.CompletedTask;
6060
}
61+
62+
private Task CloseAsync()
63+
{
64+
return Show(null);
65+
}
6166
}

test/UnitTest/Services/MaskServiceTest.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ public async Task Show_Component()
9292
});
9393
var button = cut.Find("button");
9494
await cut.InvokeAsync(() => button.Click());
95+
96+
var com = cut.FindComponent<MockComponent>();
97+
var result = await cut.InvokeAsync(com.Instance.Test);
98+
Assert.True(result);
9599
}
96100

97101
[Fact]
@@ -114,6 +118,17 @@ public async Task Show_Type()
114118

115119
class MockComponent : ComponentBase
116120
{
121+
[CascadingParameter]
122+
private Func<Task>? OnCloseAsync { get; set; }
123+
124+
public async Task<bool> Test()
125+
{
126+
if (OnCloseAsync != null)
127+
{
128+
await OnCloseAsync();
129+
}
117130

131+
return OnCloseAsync != null;
132+
}
118133
}
119134
}

0 commit comments

Comments
 (0)