Skip to content

Commit e7cc51b

Browse files
committed
feat: 移除 IDropdownItem 接口
1 parent 17dc844 commit e7cc51b

File tree

5 files changed

+48
-39
lines changed

5 files changed

+48
-39
lines changed

src/BootstrapBlazor/Components/Dropdown/Dropdown.razor

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,36 @@
6363
<RenderTemplate>
6464
@foreach(var item in _items)
6565
{
66-
if (item is DropdownDivider)
67-
{
68-
<Divider></Divider>
69-
}
70-
else if (item is DropdownItem t)
71-
{
72-
var disabled = GetItemTriggerClick(t);
73-
<DynamicElement @key="t" class="@GetItemClassString(disabled)"
74-
TriggerClick="!disabled" OnClick="() => OnClickItem(t)">
75-
<i class="@GetItemIconString(t)"></i>
76-
<span>@t.Text</span>
77-
</DynamicElement>
78-
}
79-
}
66+
switch (item)
67+
{
68+
case DropdownDivider:
69+
<Divider></Divider>
70+
break;
71+
case DropdownItem t:
72+
{
73+
var disabled = GetItemTriggerClick(t);
74+
if (t.ChildContent != null)
75+
{
76+
<div class="@GetItemClassString(disabled)">
77+
@t.ChildContent
78+
</div>
79+
}
80+
else
81+
{
82+
<DynamicElement @key="t" class="@GetItemClassString(disabled)"
83+
TriggerClick="!disabled" OnClick="() => OnClickItem(t)">
84+
<i class="@GetItemIconString(t)"></i>
85+
<span>@t.Text</span>
86+
</DynamicElement>
87+
}
88+
89+
break;
90+
}
91+
default:
92+
<DynamicComponent Type="item.GetType()"></DynamicComponent>
93+
break;
94+
}
95+
}
8096
</RenderTemplate>
8197
}
8298
</div>

src/BootstrapBlazor/Components/Dropdown/Dropdown.razor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public partial class Dropdown<TValue>
205205
/// </summary>
206206
private bool _isAsyncLoading;
207207

208-
private readonly List<IDropdownItem> _items = [];
208+
private readonly List<ComponentBase> _items = [];
209209

210210
/// <summary>
211211
/// OnParametersSet 方法

src/BootstrapBlazor/Components/Dropdown/DropdownDivider.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ namespace BootstrapBlazor.Components;
1010
/// <summary>
1111
/// DropdownDivider 组件
1212
/// </summary>
13-
public class DropdownDivider : Divider, IDropdownItem, IDisposable
13+
public class DropdownDivider : Divider, IDisposable
1414
{
1515
[CascadingParameter]
1616
[NotNull]
17-
private List<IDropdownItem>? Items { get; set; }
17+
private List<ComponentBase>? Items { get; set; }
1818

1919
/// <summary>
2020
/// <inheritdoc/>
@@ -32,21 +32,21 @@ protected override void OnInitialized()
3232
/// <param name="builder"></param>
3333
protected override void BuildRenderTree(RenderTreeBuilder builder) { }
3434

35-
private bool disposedValue;
35+
private bool _disposedValue;
3636

3737
/// <summary>
3838
/// 释放资源方法
3939
/// </summary>
4040
/// <param name="disposing"></param>
4141
protected virtual void Dispose(bool disposing)
4242
{
43-
if (!disposedValue)
43+
if (!_disposedValue)
4444
{
4545
if (disposing)
4646
{
4747
Items.Remove(this);
4848
}
49-
disposedValue = true;
49+
_disposedValue = true;
5050
}
5151
}
5252

src/BootstrapBlazor/Components/Dropdown/DropdownItem.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace BootstrapBlazor.Components;
88
/// <summary>
99
/// DropdownItem 组件
1010
/// </summary>
11-
public class DropdownItem : ComponentBase, IDropdownItem, IDisposable
11+
public class DropdownItem : ComponentBase, IDisposable
1212
{
1313
/// <summary>
1414
/// 获得/设置 显示文本
@@ -40,9 +40,15 @@ public class DropdownItem : ComponentBase, IDropdownItem, IDisposable
4040
[Parameter]
4141
public Func<Task>? OnClick { get; set; }
4242

43+
/// <summary>
44+
/// 获得/设置 组件内容
45+
/// </summary>
46+
[Parameter]
47+
public RenderFragment? ChildContent { get; set; }
48+
4349
[CascadingParameter]
4450
[NotNull]
45-
private List<IDropdownItem>? Items { get; set; }
51+
private List<ComponentBase>? Items { get; set; }
4652

4753
/// <summary>
4854
/// <inheritdoc/>
@@ -54,21 +60,22 @@ protected override void OnInitialized()
5460
Items.Add(this);
5561
}
5662

57-
private bool disposedValue;
63+
private bool _disposedValue;
5864

5965
/// <summary>
6066
/// 释放资源方法
6167
/// </summary>
6268
/// <param name="disposing"></param>
6369
protected virtual void Dispose(bool disposing)
6470
{
65-
if (!disposedValue)
71+
if (!_disposedValue)
6672
{
6773
if (disposing)
6874
{
6975
Items.Remove(this);
7076
}
71-
disposedValue = true;
77+
78+
_disposedValue = true;
7279
}
7380
}
7481

src/BootstrapBlazor/Components/Dropdown/IDropdownItem.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)