diff --git a/src/BootstrapBlazor.Server/Components/Components/MaskDemo.razor b/src/BootstrapBlazor.Server/Components/Components/MaskDemo.razor new file mode 100644 index 00000000000..26d61c3bc63 --- /dev/null +++ b/src/BootstrapBlazor.Server/Components/Components/MaskDemo.razor @@ -0,0 +1,8 @@ +
+
+

MaskDemo

+
+
+ +
+
diff --git a/src/BootstrapBlazor.Server/Components/Components/MaskDemo.razor.css b/src/BootstrapBlazor.Server/Components/Components/MaskDemo.razor.css new file mode 100644 index 00000000000..e27e761f8d0 --- /dev/null +++ b/src/BootstrapBlazor.Server/Components/Components/MaskDemo.razor.css @@ -0,0 +1,5 @@ +.mask-dialog-demo { + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); + padding: 1rem; +} diff --git a/src/BootstrapBlazor.Server/Components/Samples/Masks.razor b/src/BootstrapBlazor.Server/Components/Samples/Masks.razor index d535a720d0f..627504bd0fd 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Masks.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/Masks.razor @@ -27,3 +27,7 @@ + + + + diff --git a/src/BootstrapBlazor.Server/Components/Samples/Masks.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Masks.razor.cs index 76abdd4d6e2..819f1a90d97 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Masks.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Masks.razor.cs @@ -56,4 +56,12 @@ await MaskService.Show(new MaskOption() await MaskService.Close(CustomMask1); await MaskService.Close(CustomMask2); } + + private async Task ShowCloseMask() + { + await MaskService.Show(new MaskOption() + { + ChildContent = BootstrapDynamicComponent.CreateComponent().Render() + }); + } } diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index ff02ed9722e..bad1a1235da 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -453,7 +453,9 @@ "MaskContainerIntro": "Specify the mask position by setting the MaskOption parameter ContainerId", "MultipleMaskContainerTitle": "Multiple Mask", "MultipleMaskContainerIntro": "By customizing the Mask component, you can mask multiple parts of a web page.", - "MultipleMaskContainerDesc": "Set the Mask component in the component. When calling the Show instance method of MaskService, specify the Mask instance as the second parameter." + "MultipleMaskContainerDesc": "Set the Mask component in the component. When calling the Show instance method of MaskService, specify the Mask instance as the second parameter.", + "MaskCloseTitle": "Close By Code", + "MaskCloseIntro": "Close the popup by using the DialogCloseButton component or cascade parameters" }, "BootstrapBlazor.Server.Components.Samples.Messages": { "MessagesTitle": "Message prompt", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index aaabe294bf2..6520118edc3 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -453,7 +453,10 @@ "MaskContainerIntro": "通过设置 MaskOption 参数 ContainerId 指定遮罩出现位置", "MultipleMaskContainerTitle": "多遮罩", "MultipleMaskContainerIntro": "通过自定义设置 Mask 组件可实现网页内多个局部进行遮罩操作", - "MultipleMaskContainerDesc": "组件内自己设置 Mask 组件,调用 MaskService 实例方法 Show 时,通过第二个参数指定 Mask 实例即可" + "MultipleMaskContainerDesc": "组件内自己设置 Mask 组件,调用 MaskService 实例方法 Show 时,通过第二个参数指定 Mask 实例即可", + "MaskCloseTitle": "代码关闭弹窗", + "MaskCloseIntro": "通过使用 DialogCloseButton 组件或者级联参数关闭弹窗" + }, "BootstrapBlazor.Server.Components.Samples.Messages": { "MessagesTitle": "Message 消息提示", diff --git a/src/BootstrapBlazor/Components/Mask/Mask.razor b/src/BootstrapBlazor/Components/Mask/Mask.razor index 11571b9233a..a273b6dda1e 100644 --- a/src/BootstrapBlazor/Components/Mask/Mask.razor +++ b/src/BootstrapBlazor/Components/Mask/Mask.razor @@ -9,7 +9,9 @@ @if (_options is { ChildContent: not null }) {
- @_options.ChildContent + + @_options.ChildContent +
} diff --git a/src/BootstrapBlazor/Components/Mask/Mask.razor.cs b/src/BootstrapBlazor/Components/Mask/Mask.razor.cs index c2d5d0fe0cc..2d41b845588 100644 --- a/src/BootstrapBlazor/Components/Mask/Mask.razor.cs +++ b/src/BootstrapBlazor/Components/Mask/Mask.razor.cs @@ -58,4 +58,9 @@ private Task Show(MaskOption? option) StateHasChanged(); return Task.CompletedTask; } + + private Task CloseAsync() + { + return Show(null); + } } diff --git a/test/UnitTest/Services/MaskServiceTest.cs b/test/UnitTest/Services/MaskServiceTest.cs index db39d184e2b..09afc0b8101 100644 --- a/test/UnitTest/Services/MaskServiceTest.cs +++ b/test/UnitTest/Services/MaskServiceTest.cs @@ -92,6 +92,10 @@ public async Task Show_Component() }); var button = cut.Find("button"); await cut.InvokeAsync(() => button.Click()); + + var com = cut.FindComponent(); + var result = await cut.InvokeAsync(com.Instance.Test); + Assert.True(result); } [Fact] @@ -114,6 +118,17 @@ public async Task Show_Type() class MockComponent : ComponentBase { + [CascadingParameter] + private Func? OnCloseAsync { get; set; } + + public async Task Test() + { + if (OnCloseAsync != null) + { + await OnCloseAsync(); + } + return OnCloseAsync != null; + } } }