Skip to content
Merged
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);
}
}