From 602e04af2801747e7a436496ed7cf5b6c18cf5e9 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sun, 11 May 2025 11:16:41 +0800 Subject: [PATCH 1/8] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=E9=94=AE?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Table/Table.razor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index 48e88a059e3..fd310392519 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -1055,7 +1055,7 @@ private async Task OnTableRenderAsync(bool firstRender) }, new { - Key = "align-left", + Key = "align-right", Icon = "fa-solid fa-align-right", Text = Localizer["AlignRightText"].Value, Tooltip = Localizer["AlignRightTooltipText"].Value From 89b2fd3f46e6822953ffd380026dc8a9b3256083 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 12:05:32 +0800 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20IsAutoScrollTo?= =?UTF-8?q?pWhenClickPage=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Table/Table.razor.Pagination.cs | 6 ++++++ .../Components/Table/Table.razor.cs | 6 ++++++ .../Components/Table/Table.razor.js | 14 ++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs index af397e41509..ab7b81d09dd 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs @@ -169,6 +169,12 @@ protected async Task OnPageLinkClick(int pageIndex) // 通知 SelectedRow 双向绑定集合改变 await OnSelectedRowsChanged(); + + // 通知 UI 滚动到顶端 + if(IsAutoScrollTopWhenClickPage) + { + await InvokeVoidAsync("scrollTop", Id); + } } } diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index 5708bea9159..dcdc5b106e5 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -759,6 +759,12 @@ public async Task ExpandDetailRow(TItem item) [Parameter] public Func, bool>? DisableEditButtonCallback { get; set; } + /// + /// 获得/设置 翻页时是否自动滚动到顶部 默认 false + /// + [Parameter] + public bool IsAutoScrollTopWhenClickPage { get; set; } + [CascadingParameter] private ContextMenuZone? ContextMenuZone { get; set; } diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.js b/src/BootstrapBlazor/Components/Table/Table.razor.js index c2b494acfe5..b51d67dadaf 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.js +++ b/src/BootstrapBlazor/Components/Table/Table.razor.js @@ -21,6 +21,20 @@ export function init(id, invoke, options) { reset(id) } +export function scrollTop(id) { + const table = Data.get(id) + if (table === null) { + return; + } + + const body = table.tables.length === 2 ? table.tables[1] : table.tables[0]; + body.parentElement.scrollTo({ + top: 0, + left: 0, + behavior: "smooth", + }); +} + export function reloadColumnWidth(tableName) { const key = `bb-table-column-width-${tableName}` return localStorage.getItem(key); From bac7f6b9ed35e393f19bd8a7e36275022986b7b7 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 12:09:30 +0800 Subject: [PATCH 3/8] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Samples/Table/TablesPages.razor | 4 ++-- src/BootstrapBlazor.Server/Locales/en-US.json | 2 +- src/BootstrapBlazor.Server/Locales/zh-CN.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/BootstrapBlazor.Server/Components/Samples/Table/TablesPages.razor b/src/BootstrapBlazor.Server/Components/Samples/Table/TablesPages.razor index 2a0769bbdb8..1079ab9a2d6 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/Table/TablesPages.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/Table/TablesPages.razor @@ -22,8 +22,8 @@ - +
diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index 01317eb2370..c4abe711650 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -78,7 +78,7 @@ "TablesPagePaginationTitle": "Pagination table", "TablesPagePaginationIntro": "Set IsPagination to display the pagination component", "TablesPageShowTopPaginationTitle": "Show on top", - "TablesPageShowTopPaginationIntro": "Set ShowTopPagination to true is the top display pagination component" + "TablesPageShowTopPaginationIntro": "Set ShowTopPagination to true is the top display pagination component. You can use IsAutoScrollTopWhenClickPage to control whether to automatically scroll to the top after turning the page. The default value is false to keep the scroll bar position" }, "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedColumn": { "TablesFixedColumnTitle": "Fixed column", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 591ef6a922d..c6e970577ea 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -78,7 +78,7 @@ "TablesPagePaginationTitle": "分页表格", "TablesPagePaginationIntro": "设置 IsPagination 显示分页组件", "TablesPageShowTopPaginationTitle": "显示在顶端", - "TablesPageShowTopPaginationIntro": "设置 ShowTopPaginationtrue 是顶端显示分页组件" + "TablesPageShowTopPaginationIntro": "设置 ShowTopPaginationtrue 是顶端显示分页组件,可通过 IsAutoScrollTopWhenClickPage 控制是否翻页后自动滚动到顶端,默认值为 false 保持滚动条位置" }, "BootstrapBlazor.Server.Components.Samples.Table.TablesFixedColumn": { "TablesFixedColumnTitle": "固定列功能", From 3ea5da3e2c290e5a6b968905d6c5cb4e1b514007 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 12:09:40 +0800 Subject: [PATCH 4/8] chore: bump vesion 9.6.4 --- 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 19b4dc87cca..35916bc0d1c 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.6.4-beta06 + 9.6.4 From 949b10e9887a4b0400ede4342dde66b1af7b4b9d Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 12:29:58 +0800 Subject: [PATCH 5/8] =?UTF-8?q?refactor:=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/TableTest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 7307b321c39..85df80af263 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -980,6 +980,7 @@ public async Task PageItemsSource_Ok() pb.Add(a => a.RenderMode, TableRenderMode.Table); pb.Add(a => a.PageItemsSource, [2, 4, 8]); pb.Add(a => a.IsPagination, true); + pb.Add(a => a.IsAutoScrollTopWhenClickPage, true); pb.Add(a => a.OnQueryAsync, OnQueryAsync(localizer)); pb.Add(a => a.TableColumns, foo => builder => { @@ -1058,7 +1059,7 @@ Task> MockOnQueryAsync(QueryPageOptions options) return Task.FromResult(new QueryData() { Items = items, - TotalCount = items.Count(), + TotalCount = 80, IsAdvanceSearch = true, IsFiltered = true, IsSearch = true, From 3e9f839ced037deb6e8447098373d2bc64124448 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 12:58:07 +0800 Subject: [PATCH 6/8] =?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/Table/Table.razor.Pagination.cs | 5 +++-- src/BootstrapBlazor/Components/Table/Table.razor.cs | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs index ab7b81d09dd..deb7e8e709b 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Pagination.cs @@ -148,6 +148,7 @@ public partial class Table } }; + private bool _shouldScrollTop = false; /// /// 点击页码调用此方法 /// @@ -171,9 +172,9 @@ protected async Task OnPageLinkClick(int pageIndex) await OnSelectedRowsChanged(); // 通知 UI 滚动到顶端 - if(IsAutoScrollTopWhenClickPage) + if (IsAutoScrollTopWhenClickPage) { - await InvokeVoidAsync("scrollTop", Id); + _shouldScrollTop = true; } } } diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.cs b/src/BootstrapBlazor/Components/Table/Table.razor.cs index dcdc5b106e5..c67b1afaaeb 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.cs @@ -1018,6 +1018,13 @@ protected override async Task OnAfterRenderAsync(bool firstRender) if (_isFilterTrigger) { _isFilterTrigger = false; + _shouldScrollTop = false; + await InvokeVoidAsync("scrollTo", Id); + } + + if(_shouldScrollTop) + { + _shouldScrollTop = false; await InvokeVoidAsync("scrollTo", Id); } From 438d0f79a8f18e2df35efda9d2aff28d873dfd06 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 12:58:14 +0800 Subject: [PATCH 7/8] =?UTF-8?q?refactor:=20=E5=90=88=E5=B9=B6=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Table/Table.razor.js | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.js b/src/BootstrapBlazor/Components/Table/Table.razor.js index b51d67dadaf..e5c8753bcf4 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.js +++ b/src/BootstrapBlazor/Components/Table/Table.razor.js @@ -21,20 +21,6 @@ export function init(id, invoke, options) { reset(id) } -export function scrollTop(id) { - const table = Data.get(id) - if (table === null) { - return; - } - - const body = table.tables.length === 2 ? table.tables[1] : table.tables[0]; - body.parentElement.scrollTo({ - top: 0, - left: 0, - behavior: "smooth", - }); -} - export function reloadColumnWidth(tableName) { const key = `bb-table-column-width-${tableName}` return localStorage.getItem(key); @@ -213,12 +199,16 @@ export function scroll(id, align, options = { behavior: 'smooth' }) { } } -export function scrollTo(id, x = 0, y = 0, options = { behavior: 'smooth' }) { +export function scrollTo(id) { const element = document.getElementById(id); if (element) { const scroll = element.querySelector('.scroll'); if (scroll) { - scroll.scrollTo(x, y, options); + scroll.scrollTo({ + top: 0, + left: 0, + behavior: "smooth", + }); } } } From e76b913ce5df5ae12e3c8dcb376b752660e5c215 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 22 May 2025 13:10:27 +0800 Subject: [PATCH 8/8] =?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/TableTest.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 85df80af263..3b23a460442 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -992,8 +992,9 @@ public async Task PageItemsSource_Ok() }); }); - var pager = cut.FindComponent(); - await cut.InvokeAsync(() => pager.Instance.OnPageLinkClick!.Invoke(2)); + var items = cut.FindAll(".page-link"); + await cut.InvokeAsync(() => items[2].Click()); + var activePage = cut.Find(".page-item.active"); Assert.Equal("2", activePage.TextContent); }