From 5f73702b2e634f1af392c0ffb3839f4d077f74ad Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 19:58:59 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20AutoClose=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/DateTimePicker/DateTimePicker.razor.cs | 2 +- .../Components/DateTimeRange/DateTimeRange.razor.cs | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor.cs index 2915963cb..d8259f64c 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/DateTimePicker.razor.cs @@ -131,7 +131,7 @@ public sealed partial class DateTimePicker public Func? OnDateTimeChanged { get; set; } /// - /// 获得/设置 是否点击确认关闭弹窗 默认 false + /// 获得/设置 是否点击日期后自动关闭弹窗 默认 false /// [Parameter] public bool AutoClose { get; set; } diff --git a/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs b/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs index 0945e7979..7f0a1dc6a 100644 --- a/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs @@ -61,6 +61,12 @@ public partial class DateTimeRange [NotNull] private string? DateFormat { get; set; } + /// + /// 获得/设置 是否点击快捷侧边栏自动关闭弹窗 默认 false + /// + [Parameter] + public bool AutoCloseClickSideBar { get; set; } + /// /// 获得/设置 清空按钮文字 /// @@ -239,6 +245,11 @@ public partial class DateTimeRange StartValue = item.StartDateTime; EndValue = StartValue.AddMonths(1); await ClickConfirmButton(); + + if (AutoCloseClickSideBar) + { + await JSRuntime.InvokeVoidAsync(identifier: "bb.Popover.invoke", $"#{Id}", "hide"); + } } /// -- Gitee From a44267307fb1b24dde3b9cc3065d03d8db1c42c9 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 19:59:08 +0800 Subject: [PATCH 2/7] =?UTF-8?q?doc:=20=E5=A2=9E=E5=8A=A0=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Samples/DateTimePickers.razor | 10 +++++----- .../Samples/DateTimeRanges.razor | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/BootstrapBlazor.Shared/Samples/DateTimePickers.razor b/src/BootstrapBlazor.Shared/Samples/DateTimePickers.razor index 8bee2a2c7..ab80e29b7 100644 --- a/src/BootstrapBlazor.Shared/Samples/DateTimePickers.razor +++ b/src/BootstrapBlazor.Shared/Samples/DateTimePickers.razor @@ -50,7 +50,7 @@ -
+
@@ -101,7 +101,7 @@

@((MarkupString)Localizer["P3"].Value)

@((MarkupString)Localizer["P4"].Value)

-
+
@@ -120,7 +120,7 @@ -
+
@@ -128,7 +128,7 @@ -
+
@@ -137,7 +137,7 @@ -
+
diff --git a/src/BootstrapBlazor.Shared/Samples/DateTimeRanges.razor b/src/BootstrapBlazor.Shared/Samples/DateTimeRanges.razor index c778f06de..b289876c4 100644 --- a/src/BootstrapBlazor.Shared/Samples/DateTimeRanges.razor +++ b/src/BootstrapBlazor.Shared/Samples/DateTimeRanges.razor @@ -75,6 +75,14 @@ + +
+
+ +
+
+
+ -- Gitee From f097e87ddbc1f90dfd57369f72b2bd29f0de18dc Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 20:02:09 +0800 Subject: [PATCH 3/7] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/DateTimeRangeTest.cs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/test/UnitTest/Components/DateTimeRangeTest.cs b/test/UnitTest/Components/DateTimeRangeTest.cs index c8c312a96..93571f876 100644 --- a/test/UnitTest/Components/DateTimeRangeTest.cs +++ b/test/UnitTest/Components/DateTimeRangeTest.cs @@ -67,18 +67,6 @@ public class DateTimeRangeTest : BootstrapBlazorTestBase cut.Contains($"data-bs-placement=\"{Placement.Top.ToDescriptionString()}\""); } - [Fact] - public void IsShown_Ok() - { - var cut = Context.RenderComponent(builder => - { - builder.Add(a => a.Value, new DateTimeRangeValue { Start = DateTime.Now, End = DateTime.Now.AddDays(30) }); - builder.Add(a => a.IsShown, true); - }); - - Assert.Contains("d-none", cut.Markup); - } - [Fact] public void AllowNull_Ok() { -- Gitee From 9030762092683d750ec53f4e27fe50d7e29aeb0c Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 20:26:41 +0800 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/DateTimeRange/DateTimeRange.razor.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs b/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs index 7f0a1dc6a..27d4ad409 100644 --- a/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimeRange/DateTimeRange.razor.cs @@ -272,9 +272,9 @@ public partial class DateTimeRange { await ValueChanged.InvokeAsync(Value); } - if (IsNeedValidate && FieldIdentifier != null) + if (IsNeedValidate && EditContext != null && FieldIdentifier != null) { - EditContext?.NotifyFieldChanged(FieldIdentifier.Value); + EditContext.NotifyFieldChanged(FieldIdentifier.Value); } } @@ -327,9 +327,9 @@ public partial class DateTimeRange await ValueChanged.InvokeAsync(Value); } - if (IsNeedValidate && FieldIdentifier != null) + if (IsNeedValidate && EditContext != null && FieldIdentifier != null) { - EditContext?.NotifyFieldChanged(FieldIdentifier.Value); + EditContext.NotifyFieldChanged(FieldIdentifier.Value); } } -- Gitee From f9947945435b0049483c4de2c200cb95318cd080 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 20:26:49 +0800 Subject: [PATCH 5/7] =?UTF-8?q?test:=20=E8=A1=A5=E5=85=85=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/DateTimeRangeTest.cs | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/test/UnitTest/Components/DateTimeRangeTest.cs b/test/UnitTest/Components/DateTimeRangeTest.cs index 93571f876..0563055a3 100644 --- a/test/UnitTest/Components/DateTimeRangeTest.cs +++ b/test/UnitTest/Components/DateTimeRangeTest.cs @@ -103,14 +103,18 @@ public class DateTimeRangeTest : BootstrapBlazorTestBase { builder.Add(a => a.Value, new DateTimeRangeValue { Start = DateTime.Now, End = DateTime.Now.AddDays(30) }); builder.Add(a => a.ShowSidebar, true); + builder.Add(a => a.AutoCloseClickSideBar, true); builder.Add(a => a.SidebarItems, new DateTimeRangeSidebarItem[] { new DateTimeRangeSidebarItem(){ Text = "Test" } }); }); - var text = cut.Find(".picker-panel-sidebar").TextContent; + var item = cut.Find(".sidebar-item > div"); + var text = item.TextContent; Assert.Equal("Test", text); + + cut.InvokeAsync(() => item.Click()); } [Fact] @@ -256,6 +260,47 @@ public class DateTimeRangeTest : BootstrapBlazorTestBase validate = cut.Instance.Validate(); }); Assert.False(validate); + + var range = cut.FindComponent(); + var clear = range.Find(".is-clear"); + await cut.InvokeAsync(() => clear.Click()); + + range.SetParametersAndRender(pb => + { + pb.Add(a => a.IsDisabled, true); + pb.Add(a => a.AllowNull, true); + }); + await cut.InvokeAsync(() => clear.Click()); + } + + [Fact] + public async Task InValidateForm_Confirm() + { + var foo = new Dummy + { + Value = new DateTimeRangeValue() + }; + var cut = Context.RenderComponent(pb => + { + pb.Add(a => a.ValidateAllProperties, true); + pb.Add(a => a.Model, foo); + pb.AddChildContent(pb => + { + pb.Add(a => a.AllowNull, false); + pb.Add(a => a.Value, foo.Value); + pb.Add(a => a.ValueExpression, Utility.GenerateValueExpression(foo, nameof(Dummy.Value), typeof(DateTimeRangeValue))); + }); + }); + + var range = cut.FindComponent(); + var confirm = range.Find(".is-confirm"); + await cut.InvokeAsync(() => confirm.Click()); + + range.SetParametersAndRender(pb => + { + pb.Add(a => a.IsDisabled, true); + }); + await cut.InvokeAsync(() => confirm.Click()); } [Fact] -- Gitee From e8ed9f9df6bc88f6346ef70cc061a1e6890805d7 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 20:35:05 +0800 Subject: [PATCH 6/7] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=20IsShown=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DateTimePicker/DatePickerBody.razor.cs | 6 ------ test/UnitTest/Components/DateTimePickerTest.cs | 14 -------------- 2 files changed, 20 deletions(-) diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs index 5d2baefc7..e4df14623 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs @@ -205,12 +205,6 @@ public sealed partial class DatePickerBody [NotNull] public string? DatePlaceHolder { get; set; } - /// - /// 获得/设置 是否显示本组件默认为 false 不显示 - /// - [Parameter] - public bool IsShown { get; set; } - /// /// 获得/设置 是否允许为空 默认 false 不允许为空 /// diff --git a/test/UnitTest/Components/DateTimePickerTest.cs b/test/UnitTest/Components/DateTimePickerTest.cs index ff9e9750e..d389a5f9a 100644 --- a/test/UnitTest/Components/DateTimePickerTest.cs +++ b/test/UnitTest/Components/DateTimePickerTest.cs @@ -335,20 +335,6 @@ public class DateTimePickerTest : BootstrapBlazorTestBase }); } - [Fact] - public void IsShown_Ok() - { - var cut = Context.RenderComponent(builder => - { - builder.Add(a => a.Value, DateTime.Now); - builder.Add(a => a.IsShown, true); - }); - - var value = cut.Find(".picker-panel").ClassList.Contains("d-none"); - - Assert.False(value); - } - [Fact] public void ShowFooter_Ok() { -- Gitee From ef47242dab480efd580e70a59d0fc74ef95534e3 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Sun, 25 Sep 2022 20:39:38 +0800 Subject: [PATCH 7/7] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/DateTimePicker/DatePickerBody.razor | 2 +- .../Components/DateTimePicker/DatePickerBody.razor.cs | 4 ++++ .../Components/DateTimePicker/DatePickerCell.razor | 2 +- .../Components/DateTimePicker/DatePickerCell.razor.cs | 4 ++++ .../Components/DateTimePicker/TimePickerBody.razor | 2 +- .../Components/DateTimePicker/TimePickerBody.razor.cs | 2 +- .../Components/DateTimePicker/TimePickerCell.razor | 2 +- .../Components/DateTimePicker/TimePickerCell.razor.cs | 4 ++++ 8 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor index e05b868d7..3f4e145b2 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor @@ -1,7 +1,7 @@ @namespace BootstrapBlazor.Components @inherits BootstrapComponentBase -
+
@if (ShowSidebar) { diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs index e4df14623..fd0059834 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerBody.razor.cs @@ -45,6 +45,10 @@ public sealed partial class DatePickerBody ///
private bool ShowTimePicker { get; set; } + private string? ClassString => CssBuilder.Default("picker-panel") + .AddClassFromAttributes(AdditionalAttributes) + .Build(); + /// /// 获得/设置 日期样式 /// diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor index 89be97d14..8d01607d2 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor @@ -1,4 +1,4 @@ @namespace BootstrapBlazor.Components @inherits BootstrapComponentBase -@Text +@Text diff --git a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor.cs index ad0e6e7ff..5a30fdfc2 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/DatePickerCell.razor.cs @@ -9,6 +9,10 @@ namespace BootstrapBlazor.Components; /// public sealed partial class DatePickerCell { + private string? ClassString => CssBuilder.Default("cell") + .AddClassFromAttributes(AdditionalAttributes) + .Build(); + /// /// 获得/设置 日期 /// diff --git a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor index 1e9a3255d..ad8dde544 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor +++ b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor @@ -1,7 +1,7 @@ @namespace BootstrapBlazor.Components @inherits BootstrapComponentBase -
+
diff --git a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor.cs index 53e36ff82..4859cd933 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerBody.razor.cs @@ -24,7 +24,7 @@ public sealed partial class TimePickerBody /// /// 获得/设置 样式 /// - private string? ClassName => CssBuilder.Default("time-panel") + private string? ClassString => CssBuilder.Default("time-panel") .AddClassFromAttributes(AdditionalAttributes) .Build(); diff --git a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor index a04b59a56..7c8ef29b1 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor +++ b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor @@ -1,7 +1,7 @@ @namespace BootstrapBlazor.Components @inherits BootstrapComponentBase -
+
diff --git a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor.cs b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor.cs index 97bc2de56..acc8b324a 100644 --- a/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor.cs +++ b/src/BootstrapBlazor/Components/DateTimePicker/TimePickerCell.razor.cs @@ -11,6 +11,10 @@ public partial class TimePickerCell : IDisposable { private ElementReference TimeCellElement { get; set; } + private string? ClassString => CssBuilder.Default("time-spinner-wrapper is-arrow") + .AddClassFromAttributes(AdditionalAttributes) + .Build(); + /// /// 获得 当前样式名称 /// -- Gitee