Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(BootstrapLabelSetting): add BootstrapLabelSetting component #5274

Merged
merged 11 commits into from
Feb 2, 2025
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);
}
}