From ffc4ce2405bf427f68a4ae20747a770b9aa76ff2 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 15:38:42 +0800 Subject: [PATCH 1/9] =?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/Select/Select.razor.cs | 141 ++++++++---------- 1 file changed, 66 insertions(+), 75 deletions(-) diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.cs b/src/BootstrapBlazor/Components/Select/Select.razor.cs index ace96cecc2e..d9fe945d877 100644 --- a/src/BootstrapBlazor/Components/Select/Select.razor.cs +++ b/src/BootstrapBlazor/Components/Select/Select.razor.cs @@ -18,26 +18,13 @@ public partial class Select : ISelect, ILookup [NotNull] private SwalService? SwalService { get; set; } - private string? ClassString => CssBuilder.Default("select dropdown") - .AddClass("is-clearable", IsClearable) - .AddClassFromAttributes(AdditionalAttributes) - .Build(); - - private string? InputClassString => CssBuilder.Default("form-select form-control") - .AddClass($"border-{Color.ToDescriptionString()}", Color != Color.None && !IsDisabled && !IsValid.HasValue) - .AddClass($"border-success", IsValid.HasValue && IsValid.Value) - .AddClass($"border-danger", IsValid.HasValue && !IsValid.Value) - .AddClass(CssClass).AddClass(ValidCss) - .Build(); - - private string? ActiveItem(SelectedItem item) => CssBuilder.Default("dropdown-item") - .AddClass("active", item.Value == CurrentValueAsString) - .AddClass("disabled", item.IsDisabled) - .Build(); - - private readonly List _children = []; + [Inject] + [NotNull] + private IStringLocalizer>? Localizer { get; set; } - private string? ScrollIntoViewBehaviorString => ScrollIntoViewBehavior == ScrollIntoViewBehavior.Smooth ? null : ScrollIntoViewBehavior.ToDescriptionString(); + [Inject] + [NotNull] + private ILookupService? InjectLookupService { get; set; } /// /// Gets or sets the display template. Default is null. @@ -124,31 +111,35 @@ public partial class Select : ISelect, ILookup [Parameter] public string? DefaultVirtualizeItemText { get; set; } - /// - /// - /// - IEnumerable? ILookup.Lookup { get; set; } + IEnumerable? ILookup.Lookup { get => Items; set => Items = value; } + + StringComparison ILookup.LookupStringComparison { get => StringComparison; set => StringComparison = value; } /// /// /// - StringComparison ILookup.LookupStringComparison { get; set; } + protected override string? RetrieveId() => InputId; - [Inject] - [NotNull] - private IStringLocalizer>? Localizer { get; set; } + private string? ClassString => CssBuilder.Default("select dropdown") + .AddClass("is-clearable", IsClearable) + .AddClassFromAttributes(AdditionalAttributes) + .Build(); - /// - /// Gets or sets the injected lookup service instance. - /// - [Inject] - [NotNull] - private ILookupService? InjectLookupService { get; set; } + private string? InputClassString => CssBuilder.Default("form-select form-control") + .AddClass($"border-{Color.ToDescriptionString()}", Color != Color.None && !IsDisabled && !IsValid.HasValue) + .AddClass($"border-success", IsValid.HasValue && IsValid.Value) + .AddClass($"border-danger", IsValid.HasValue && !IsValid.Value) + .AddClass(CssClass).AddClass(ValidCss) + .Build(); - /// - /// - /// - protected override string? RetrieveId() => InputId; + private string? ActiveItem(SelectedItem item) => CssBuilder.Default("dropdown-item") + .AddClass("active", item.Value == CurrentValueAsString) + .AddClass("disabled", item.IsDisabled) + .Build(); + + private readonly List _children = []; + + private string? ScrollIntoViewBehaviorString => ScrollIntoViewBehavior == ScrollIntoViewBehavior.Smooth ? null : ScrollIntoViewBehavior.ToDescriptionString(); private string? InputId => $"{Id}_input"; @@ -169,44 +160,6 @@ private SelectedItem? SelectedRow } } - private SelectedItem? GetSelectedRow() - { - if (Value is null) - { - _lastSelectedValueString = ""; - _init = false; - return null; - } - - var item = IsVirtualize ? GetItemByVirtualized() : GetItemByRows(); - if (item != null) - { - if (_init && DisableItemChangedWhenFirstRender) - { - - } - else - { - _ = SelectedItemChanged(item); - _init = false; - } - } - return item; - } - - private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString()) : null; - - private SelectedItem GetItemByVirtualized() => new(CurrentValueAsString, _defaultVirtualizedItemText); - - private SelectedItem? GetItemByRows() - { - var item = GetItemWithEnumValue() - ?? Rows.Find(i => i.Value == CurrentValueAsString) - ?? Rows.Find(i => i.Active) - ?? Rows.FirstOrDefault(i => !i.IsDisabled); - return item; - } - /// /// /// @@ -440,4 +393,42 @@ private async Task OnChange(ChangeEventArgs args) } } } + + private SelectedItem? GetSelectedRow() + { + if (Value is null) + { + _lastSelectedValueString = ""; + _init = false; + return null; + } + + var item = IsVirtualize ? GetItemByVirtualized() : GetItemByRows(); + if (item != null) + { + if (_init && DisableItemChangedWhenFirstRender) + { + + } + else + { + _ = SelectedItemChanged(item); + _init = false; + } + } + return item; + } + + private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString()) : null; + + private SelectedItem GetItemByVirtualized() => new(CurrentValueAsString, _defaultVirtualizedItemText); + + private SelectedItem? GetItemByRows() + { + var item = GetItemWithEnumValue() + ?? Rows.Find(i => i.Value == CurrentValueAsString) + ?? Rows.Find(i => i.Active) + ?? Rows.FirstOrDefault(i => !i.IsDisabled); + return item; + } } From 016ce93a6dc849ea3c8ef740739fb5f3b08c7434 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 15:42:49 +0800 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20IsAutoClearSea?= =?UTF-8?q?rchTextWhenCollapsed=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Select/Select.razor.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.cs b/src/BootstrapBlazor/Components/Select/Select.razor.cs index d9fe945d877..077220e6ccc 100644 --- a/src/BootstrapBlazor/Components/Select/Select.razor.cs +++ b/src/BootstrapBlazor/Components/Select/Select.razor.cs @@ -111,6 +111,12 @@ public partial class Select : ISelect, ILookup [Parameter] public string? DefaultVirtualizeItemText { get; set; } + /// + /// Gets or sets whether auto clear the search text when dropdown closed. + /// + [Parameter] + public bool IsAutoClearSearchTextWhenCollapsed { get; set; } + IEnumerable? ILookup.Lookup { get => Items; set => Items = value; } StringComparison ILookup.LookupStringComparison { get => StringComparison; set => StringComparison = value; } From bf32cd410db04d973e0d10493ddc4feef4adb5bb Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:20:15 +0800 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20OnCollapsed=20?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Select/Select.razor.cs | 29 ++++++++++++++++++- .../Components/Select/Select.razor.js | 8 ++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.cs b/src/BootstrapBlazor/Components/Select/Select.razor.cs index 077220e6ccc..4f6f2434056 100644 --- a/src/BootstrapBlazor/Components/Select/Select.razor.cs +++ b/src/BootstrapBlazor/Components/Select/Select.razor.cs @@ -117,6 +117,12 @@ public partial class Select : ISelect, ILookup [Parameter] public bool IsAutoClearSearchTextWhenCollapsed { get; set; } + /// + /// Gets or sets the dropdown collapsed callback method. + /// + [Parameter] + public Func? OnCollapsed { get; set; } + IEnumerable? ILookup.Lookup { get => Items; set => Items = value; } StringComparison ILookup.LookupStringComparison { get => StringComparison; set => StringComparison = value; } @@ -267,9 +273,30 @@ private bool TryParseSelectItem(string value, [MaybeNullWhen(false)] out TValue protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, new { ConfirmMethodCallback = nameof(ConfirmSelectedItem), - SearchMethodCallback = nameof(TriggerOnSearch) + SearchMethodCallback = nameof(TriggerOnSearch), + TriggerCollapsed = (OnCollapsed != null || IsAutoClearSearchTextWhenCollapsed) ? nameof(TriggerCollapsed) : null }); + /// + /// Trigger event callback method. called by JavaScript. + /// + /// + [JSInvokable] + public async Task TriggerCollapsed() + { + if (OnCollapsed != null) + { + await OnCollapsed(); + } + + if (IsAutoClearSearchTextWhenCollapsed) + { + SearchText = string.Empty; + _itemsCache = null; + StateHasChanged(); + } + } + /// /// /// diff --git a/src/BootstrapBlazor/Components/Select/Select.razor.js b/src/BootstrapBlazor/Components/Select/Select.razor.js index 3731aafcb19..af61156b497 100644 --- a/src/BootstrapBlazor/Components/Select/Select.razor.js +++ b/src/BootstrapBlazor/Components/Select/Select.razor.js @@ -10,7 +10,13 @@ export function init(id, invoke, options) { } const search = el.querySelector(".search-text") - const popover = Popover.init(el) + const popover = Popover.init(el, { + hideCallback: () => { + if (options.triggerCollapsed) { + invoke.invokeMethodAsync(options.triggerCollapsed); + } + } + }); const input = el.querySelector(`#${id}_input`); const select = { el, invoke, options, From cb6d258da8638f0ac3d16d9c457cf8e3b9a86ed6 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:20:29 +0800 Subject: [PATCH 4/9] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=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/SelectTest.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/UnitTest/Components/SelectTest.cs b/test/UnitTest/Components/SelectTest.cs index 180d5f63dd7..afe846e4f9d 100644 --- a/test/UnitTest/Components/SelectTest.cs +++ b/test/UnitTest/Components/SelectTest.cs @@ -428,6 +428,17 @@ public void Color_Ok() Assert.Contains("border-danger", cut.Markup); } + [Fact] + public async Task OnCollapsed_Ok() + { + var collapsed = false; + var cut = Context.RenderComponent>(pb => + { + pb.Add(a => a.OnCollapsed, () => { collapsed = true; return Task.CompletedTask; }); + }); + await cut.InvokeAsync(() => cut.Instance.TriggerCollapsed()); + Assert.True(collapsed); + } [Fact] public void Validate_Ok() { From 342653c0a31b9961df1a8401dfc6e5619097ea42 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:25:49 +0800 Subject: [PATCH 5/9] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=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/SelectTest.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/UnitTest/Components/SelectTest.cs b/test/UnitTest/Components/SelectTest.cs index afe846e4f9d..5cd20702bb6 100644 --- a/test/UnitTest/Components/SelectTest.cs +++ b/test/UnitTest/Components/SelectTest.cs @@ -439,6 +439,23 @@ public async Task OnCollapsed_Ok() await cut.InvokeAsync(() => cut.Instance.TriggerCollapsed()); Assert.True(collapsed); } + + [Fact] + public async Task IsAutoClearSearchTextWhenCollapsed_Ok() + { + var cut = Context.RenderComponent>(pb => + { + pb.Add(a => a.ShowSearch, true); + pb.Add(a => a.IsAutoClearSearchTextWhenCollapsed, true); + }); + + await cut.InvokeAsync(() => cut.Instance.TriggerOnSearch("123")); + cut.Contains("value=\"123\""); + + await cut.InvokeAsync(() => cut.Instance.TriggerCollapsed()); + cut.Contains("value=\"\""); + } + [Fact] public void Validate_Ok() { From 38dd769f993d4f7bfb4d27dd51c6b6d6e71d0a57 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:29:35 +0800 Subject: [PATCH 6/9] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor.Server/Locales/en-US.json | 2 +- src/BootstrapBlazor.Server/Locales/zh-CN.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index c0a3000adce..4711b22a530 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -3211,7 +3211,7 @@ "SelectsCustomTemplateTitle": "Custom option templates", "SelectsCustomTemplateIntro": "By setting the ItemTemplate you can customize the option rendering style", "SelectsShowSearchTitle": "Drop-down box with search box", - "SelectsShowSearchIntro": "Controls whether the search box is displayed by setting the ShowSearch property, which is not displayed by default false", + "SelectsShowSearchIntro": "Controls whether the search box is displayed by setting the ShowSearch property, which is not displayed by default false. You can set the IsAutoClearSearchTextWhenCollapsed parameter to control whether the text in the search box is automatically cleared after the drop-down box is collapsed. The default value is false.", "SelectsConfirmSelectTitle": "Drop-down box with confirmation", "SelectsConfirmSelectIntro": "Block changes to the current value by setting the OnBeforeSelectedItemChange delegate.", "SelectsTimeZoneTitle": "Timezone", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index d32ba236160..9e792d378ec 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -3211,7 +3211,7 @@ "SelectsCustomTemplateTitle": "自定义选项模板", "SelectsCustomTemplateIntro": "通过设置 ItemTemplate 可以自定义选项渲染样式", "SelectsShowSearchTitle": "带搜索框的下拉框", - "SelectsShowSearchIntro": "通过设置 ShowSearch 属性控制是否显示搜索框,默认为 false 不显示搜索框", + "SelectsShowSearchIntro": "通过设置 ShowSearch 属性控制是否显示搜索框,默认为 false 不显示搜索框,可以通过设置 IsAutoClearSearchTextWhenCollapsed 参数控制下拉框收起后是否自动清空搜索框内文字,默认值为 false 不清空", "SelectsConfirmSelectTitle": "带确认的下拉框", "SelectsConfirmSelectIntro": "通过设置 OnBeforeSelectedItemChange 委托,阻止当前值的改变", "SelectsTimeZoneTitle": "时区下拉框", From 8da024f8cc4733508ce098edfef2a58371378085 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:30:38 +0800 Subject: [PATCH 7/9] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor.Server/Locales/en-US.json | 2 +- src/BootstrapBlazor.Server/Locales/zh-CN.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index 4711b22a530..7138dc8e9d4 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -3211,7 +3211,7 @@ "SelectsCustomTemplateTitle": "Custom option templates", "SelectsCustomTemplateIntro": "By setting the ItemTemplate you can customize the option rendering style", "SelectsShowSearchTitle": "Drop-down box with search box", - "SelectsShowSearchIntro": "Controls whether the search box is displayed by setting the ShowSearch property, which is not displayed by default false. You can set the IsAutoClearSearchTextWhenCollapsed parameter to control whether the text in the search box is automatically cleared after the drop-down box is collapsed. The default value is false.", + "SelectsShowSearchIntro": "Controls whether the search box is displayed by setting the ShowSearch property, which is not displayed by default false. You can set the IsAutoClearSearchTextWhenCollapsed parameter to control whether the text in the search box is automatically cleared after the drop-down box is collapsed. The default value is false.", "SelectsConfirmSelectTitle": "Drop-down box with confirmation", "SelectsConfirmSelectIntro": "Block changes to the current value by setting the OnBeforeSelectedItemChange delegate.", "SelectsTimeZoneTitle": "Timezone", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 9e792d378ec..1a410d58467 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -3211,7 +3211,7 @@ "SelectsCustomTemplateTitle": "自定义选项模板", "SelectsCustomTemplateIntro": "通过设置 ItemTemplate 可以自定义选项渲染样式", "SelectsShowSearchTitle": "带搜索框的下拉框", - "SelectsShowSearchIntro": "通过设置 ShowSearch 属性控制是否显示搜索框,默认为 false 不显示搜索框,可以通过设置 IsAutoClearSearchTextWhenCollapsed 参数控制下拉框收起后是否自动清空搜索框内文字,默认值为 false 不清空", + "SelectsShowSearchIntro": "通过设置 ShowSearch 属性控制是否显示搜索框,默认为 false 不显示搜索框,可以通过设置 IsAutoClearSearchTextWhenCollapsed 参数控制下拉框收起后是否自动清空搜索框内文字,默认值为 false 不清空", "SelectsConfirmSelectTitle": "带确认的下拉框", "SelectsConfirmSelectIntro": "通过设置 OnBeforeSelectedItemChange 委托,阻止当前值的改变", "SelectsTimeZoneTitle": "时区下拉框", From b2a7d76b99383bf3a4c7f20f516b7803eb070992 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:32:33 +0800 Subject: [PATCH 8/9] =?UTF-8?q?doc:=20=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Samples/Selects.razor.cs | 8 ++++++++ src/BootstrapBlazor.Server/Locales/en-US.json | 1 + src/BootstrapBlazor.Server/Locales/zh-CN.json | 1 + 3 files changed, 10 insertions(+) diff --git a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs index 4c2eb39bbdf..342b2117f46 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/Selects.razor.cs @@ -321,6 +321,14 @@ private AttributeItem[] GetAttributes() => DefaultValue = "false" }, new() + { + Name = "IsAutoClearSearchTextWhenCollapsed", + Description = Localizer["SelectsIsAutoClearSearchTextWhenCollapsed"], + Type = "bool", + ValueList = "true|false", + DefaultValue = "false" + }, + new() { Name = "DisplayText", Description = Localizer["SelectsDisplayText"], diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index 7138dc8e9d4..04a5dd1a7cc 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -3221,6 +3221,7 @@ "SwalFooter": "Click Confirm to change the option value and select Cancel to leave the value unchanged", "SelectsShowLabel": "Whether to display the front label", "SelectsShowSearch": "Whether to display the search box", + "SelectsIsAutoClearSearchTextWhenCollapsed": "Whether to automatically clear the search bar when the drop-down box is collapsed", "SelectsDisplayText": "The front label displays text", "SelectsClass": "Style", "SelectsColor": "Color", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 1a410d58467..c5478c69f93 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -3221,6 +3221,7 @@ "SwalFooter": "点击确认改变选项值,选择取消后值不变", "SelectsShowLabel": "是否显示前置标签", "SelectsShowSearch": "是否显示搜索框", + "SelectsIsAutoClearSearchTextWhenCollapsed": "下拉框收起时是否自动清空搜索栏", "SelectsDisplayText": "前置标签显示文本", "SelectsClass": "样式", "SelectsColor": "颜色", From 4e73c33280f161901ea6124c0530b9ff631b8046 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 14 May 2025 16:33:18 +0800 Subject: [PATCH 9/9] chore: bump version 9.6.2-beta06 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 44b52dd7b2e..1ba7569b506 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.6.2-beta05 + 9.6.2-beta06