Skip to content

Commit

Permalink
feat(BootstrapLabelSetting): add BootstrapLabelSetting component (#5274)
Browse files Browse the repository at this point in the history
* feat: 增加 AddStyle 方法

* test: 增加单元测试

* refactor: use AddStyle method

* doc: 重构代码

* refactor: 重构代码

* Revert "refactor: 重构代码"

This reverts commit 37653dc.

* feat: 增加 BootstrapLabelSetting 组件

* feat: 增加 LabelWidth 参数

* feat: 实现 LabelWidth 逻辑

* test: 增加单元测试
  • Loading branch information
ArgoZhang authored Feb 2, 2025
1 parent 3c07dff commit c33eb02
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/BootstrapBlazor/Components/Label/BootstrapLabel.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public partial class BootstrapLabel
[Parameter]
public int? LabelWidth { get; set; }

[CascadingParameter]
private BootstrapLabelSetting? Setting { get; set; }

private bool _showTooltip;

private string? ClassString => CssBuilder.Default("form-label")
Expand All @@ -52,5 +55,8 @@ protected override void OnParametersSet()
_showTooltip = ShowLabelTooltip.Value;
}
Value ??= "";

// 获得级联参数的 LabelWidth
LabelWidth ??= Setting?.LabelWidth;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@namespace BootstrapBlazor.Components

<CascadingValue Value="this" IsFixed="true">
@ChildContent
</CascadingValue>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the Apache 2.0 License
// See the LICENSE file in the project root for more information.
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone

namespace BootstrapBlazor.Components;

/// <summary>
/// BootstrapLabelSetting 组件类
/// </summary>
public partial class BootstrapLabelSetting
{
/// <summary>
/// 获得/设置 子组件
/// </summary>
[Parameter]
public RenderFragment? ChildContent { get; set; }

/// <summary>
/// 获得/设置 标签宽度 默认 null 未设置使用全局设置 <code>--bb-row-label-width</code> 值
/// </summary>
[Parameter]
public int? LabelWidth { get; set; }
}
40 changes: 40 additions & 0 deletions test/UnitTest/Components/BootstrapLabelTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the Apache 2.0 License
// See the LICENSE file in the project root for more information.
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone

namespace UnitTest.Components;

public class BootstrapLabelTest : BootstrapBlazorTestBase
{
[Fact]
public void BootstrapLabelSetting_LabelWidth_Ok()
{
var cut = Context.RenderComponent<BootstrapLabelSetting>(pb =>
{
pb.Add(a => a.LabelWidth, 120);
pb.AddChildContent<BootstrapLabel>();
});
Assert.Equal("<label class=\"form-label\" style=\"--bb-row-label-width: 120px;\"></label>", cut.Markup);

var label = cut.FindComponent<BootstrapLabel>();
label.SetParametersAndRender(pb =>
{
pb.Add(a => a.LabelWidth, 80);
});
Assert.Equal("<label class=\"form-label\" style=\"--bb-row-label-width: 80px;\"></label>", cut.Markup);
}

[Fact]
public void LabelWidth_Ok()
{
var cut = Context.RenderComponent<BootstrapLabel>();
Assert.Equal("<label class=\"form-label\"></label>", cut.Markup);

cut.SetParametersAndRender(pb =>
{
pb.Add(a => a.LabelWidth, 120);
});
Assert.Equal("<label class=\"form-label\" style=\"--bb-row-label-width: 120px;\"></label>", cut.Markup);
}
}

0 comments on commit c33eb02

Please sign in to comment.