Skip to content

Commit 578c404

Browse files
authored
feat(GotoTop): add ScrollBehavior parameter (#4885)
* feat: 增加 ScrollIntoViewBehavior 参数 * refactor: 更改参数名称 * test: 增加单元测试 * chore: bump version 9.1.6-beta03 * test: 更新单元测试 * test: 更新单元测试 * test: 更新单元测试
1 parent 36aa43d commit 578c404

File tree

7 files changed

+36
-3
lines changed

7 files changed

+36
-3
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.1.6-beta02</Version>
4+
<Version>9.1.6-beta03</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/GoTop/GoTop.razor

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
@inherits BootstrapModuleComponentBase
33
@attribute [BootstrapModuleAutoLoader]
44

5-
<a @attributes="AdditionalAttributes" id="@Id" href="#" class="layout-gotop" data-bb-target="@Target" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="@TooltipText">
5+
<a @attributes="AdditionalAttributes" id="@Id" href="#" class="layout-gotop" data-bb-target="@Target" data-bb-behavior="@ScrollBehaviorString" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="@TooltipText">
66
<i class="@Icon"></i>
77
</a>

src/BootstrapBlazor/Components/GoTop/GoTop.razor.cs

+8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ public partial class GoTop
2424
[Parameter]
2525
public string? Target { get; set; }
2626

27+
/// <summary>
28+
/// 获得/设置 滚动行为 默认 ScrollIntoViewBehavior.Smooth
29+
/// </summary>
30+
[Parameter]
31+
public ScrollIntoViewBehavior ScrollBehavior { get; set; }
32+
2733
/// <summary>
2834
/// 获得/设置 鼠标悬停提示文字信息
2935
/// </summary>
@@ -39,6 +45,8 @@ public partial class GoTop
3945
[NotNull]
4046
private IIconTheme? IconTheme { get; set; }
4147

48+
private string? ScrollBehaviorString => ScrollBehavior == ScrollIntoViewBehavior.Smooth ? null : ScrollBehavior.ToString().ToLowerInvariant();
49+
4250
/// <summary>
4351
/// <inheritdoc/>
4452
/// </summary>

src/BootstrapBlazor/Components/GoTop/GoTop.razor.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ export function init(id, target) {
2222
e.preventDefault();
2323

2424
const target = el.getAttribute('data-bb-target');
25+
const behavior = el.getAttribute('data-bb-behavior') || 'smooth';
2526
const element = (target && document.querySelector(target)) || getScrollElement(el)
26-
element.scrollTop = 0
27+
element.scrollTo({ top: 0, left: 0, behavior: behavior });
2728
go.tip.hide()
2829
})
2930
}

test/UnitTest/Components/GoTopTest.cs

+17
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public void Target_Ok()
1717
pb.Add(c => c.Target, "#top");
1818
});
1919
Assert.Equal("#top", cut.Instance.Target);
20+
Assert.Contains("data-bb-target", cut.Markup);
2021
}
2122

2223
[Fact]
@@ -31,4 +32,20 @@ public void TooltipText_Ok()
3132
});
3233
Assert.Contains("TooltipText", cut.Markup);
3334
}
35+
36+
[Fact]
37+
public void Behavior_Ok()
38+
{
39+
var cut = Context.RenderComponent<GoTop>(pb =>
40+
{
41+
pb.Add(c => c.ScrollBehavior, ScrollIntoViewBehavior.Smooth);
42+
});
43+
Assert.DoesNotContain("data-bb-behavior", cut.Markup);
44+
45+
cut.SetParametersAndRender(pb =>
46+
{
47+
pb.Add(a => a.ScrollBehavior, ScrollIntoViewBehavior.Auto);
48+
});
49+
Assert.Contains("data-bb-behavior=\"auto\"", cut.Markup);
50+
}
3451
}

test/UnitTest/Components/LayoutTest.cs

+6
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,14 @@ public void ShowFooter_OK()
2020
{
2121
pb.Add(a => a.ShowFooter, true);
2222
pb.Add(a => a.Footer, CreateFooter());
23+
pb.Add(a => a.ShowGotoTop, true);
2324
});
2425
Assert.Contains("Footer", cut.Markup);
26+
cut.SetParametersAndRender(pb =>
27+
{
28+
pb.Add(a => a.IsFixedTabHeader, true);
29+
});
30+
cut.Contains("data-bb-target=\".tabs-body\"");
2531

2632
cut.SetParametersAndRender(pb => pb.Add(a => a.ShowFooter, false));
2733
cut.WaitForAssertion(() => Assert.DoesNotContain("Footer", cut.Markup));

test/UnitTest/Components/SelectTreeTest.cs

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public void Items_Ok()
1313
var cut = Context.RenderComponent<SelectTree<string>>(builder =>
1414
{
1515
builder.Add(p => p.ShowIcon, true);
16+
builder.Add(p => p.IsReset, false);
1617
builder.Add(p => p.ModelEqualityComparer, (s1, s2) => { return true; });
1718
builder.Add(p => p.OnExpandNodeAsync, (s) => { return Task.FromResult(new List<TreeViewItem<string>>().AsEnumerable()); });
1819
builder.Add(p => p.CustomKeyAttribute, typeof(string));

0 commit comments

Comments
 (0)