feat(theme): StatusPill widget
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
@* Components/StatusPill.razor *@
|
||||
<span class="chip @ChipClass">@ChildContent</span>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired] public StatusState State { get; set; }
|
||||
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||
|
||||
private string ChipClass => State switch
|
||||
{
|
||||
StatusState.Ok => "chip-ok",
|
||||
StatusState.Warn => "chip-warn",
|
||||
StatusState.Bad => "chip-bad",
|
||||
StatusState.Info => "chip-info",
|
||||
_ => "chip-idle",
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
namespace ZB.MOM.WW.Theme;
|
||||
|
||||
public enum StatusState { Ok, Warn, Bad, Idle, Info }
|
||||
@@ -2,3 +2,4 @@
|
||||
@using Microsoft.AspNetCore.Components.Routing
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using ZB.MOM.WW.Theme
|
||||
@using ZB.MOM.WW.Theme.Components
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
namespace ZB.MOM.WW.Theme.Tests;
|
||||
|
||||
public class StatusPillTests : TestContext
|
||||
{
|
||||
[Theory]
|
||||
[InlineData(StatusState.Ok, "chip-ok")]
|
||||
[InlineData(StatusState.Warn, "chip-warn")]
|
||||
[InlineData(StatusState.Bad, "chip-bad")]
|
||||
[InlineData(StatusState.Idle, "chip-idle")]
|
||||
[InlineData(StatusState.Info, "chip-info")]
|
||||
public void Maps_state_to_chip_class(StatusState state, string expected)
|
||||
{
|
||||
var cut = RenderComponent<StatusPill>(p => p
|
||||
.Add(x => x.State, state)
|
||||
.AddChildContent("Connected"));
|
||||
var span = cut.Find("span");
|
||||
Assert.Contains("chip", span.ClassList);
|
||||
Assert.Contains(expected, span.ClassList);
|
||||
Assert.Equal("Connected", span.TextContent.Trim());
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
global using Bunit;
|
||||
global using Xunit;
|
||||
global using ZB.MOM.WW.Theme;
|
||||
global using ZB.MOM.WW.Theme.Components;
|
||||
|
||||
Reference in New Issue
Block a user