Skip to content

Commit f828fca

Browse files
authored
🆕 (ListItem): Add sub-component props to simplify usage (#608)
1 parent 47aef89 commit f828fca

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

‎src/Component/BlazorComponent/Components/List/BListItem.razor‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,51 @@
1717
}
1818
else
1919
{
20+
@GenAvatarCore(PrependAvatar)
21+
@GenIcon(PrependIcon)
22+
@GenContent()
23+
@GenIcon(AppendIcon)
24+
@GenAvatarCore(AppendAvatar)
2025
@ChildContent
2126
}
2227
</Element>
2328
</CascadingValue>
29+
30+
@code {
31+
32+
RenderFragment GenIcon(string? icon) => __builder =>
33+
{
34+
@if (!string.IsNullOrWhiteSpace(icon))
35+
{
36+
<BListItemIcon>
37+
<BIcon>@icon</BIcon>
38+
</BListItemIcon>
39+
}
40+
};
41+
42+
private RenderFragment GenAvatarCore(string? src) => __builder =>
43+
{
44+
@if (!string.IsNullOrWhiteSpace(src))
45+
{
46+
@GenAvatar(src)
47+
}
48+
};
49+
50+
protected virtual RenderFragment GenAvatar(string? src) => __builder => { };
51+
52+
RenderFragment GenContent() => __builder =>
53+
{
54+
if (HasBuiltInContent)
55+
{
56+
<BListItemContent>
57+
<BListItemTitle>
58+
@Title
59+
</BListItemTitle>
60+
<BListItemSubtitle>
61+
@Subtitle
62+
</BListItemSubtitle>
63+
</BListItemContent>
64+
}
65+
};
66+
67+
}

‎src/Component/BlazorComponent/Components/List/BListItem.razor.cs‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ public BListItem() : base(GroupType.ListItemGroup)
3535
[Parameter]
3636
public bool OnClickPreventDefault { get; set; }
3737

38+
[Parameter] [MasaApiParameter(ReleasedOn = "v1.5.0")] public string? Title { get; set; }
39+
40+
[Parameter] [MasaApiParameter(ReleasedOn = "v1.5.0")] public string? Subtitle { get; set; }
41+
42+
[Parameter] [MasaApiParameter(ReleasedOn = "v1.5.0")] public string? PrependIcon { get; set; }
43+
44+
[Parameter] [MasaApiParameter(ReleasedOn = "v1.5.0")] public string? PrependAvatar { get; set; }
45+
46+
[Parameter] [MasaApiParameter(ReleasedOn = "v1.5.0")] public string? AppendIcon { get; set; }
47+
48+
[Parameter] [MasaApiParameter(ReleasedOn = "v1.5.0")] public string? AppendAvatar { get; set; }
49+
3850
[Parameter]
3951
public bool Dark { get; set; }
4052

@@ -68,6 +80,8 @@ public bool IsDark
6880

6981
protected override bool IsRoutable => Href != null && List?.Routable is true;
7082

83+
private bool HasBuiltInContent => !string.IsNullOrWhiteSpace(Title) || !string.IsNullOrWhiteSpace(Subtitle);
84+
7185
protected override void OnParametersSet()
7286
{
7387
base.OnParametersSet();

0 commit comments

Comments
 (0)