Skip to content

Commit 6816b57

Browse files
committed
refactor: 调整禁用逻辑禁用后不允许 active 样式
1 parent e1c5b40 commit 6816b57

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

src/BootstrapBlazor/Components/Tab/Tab.razor

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -127,23 +127,15 @@ else
127127
RenderFragment RenderChromeDisabledHeader(TabItem item) =>
128128
@<div @key="@item" class="@GetItemWrapClassString(item)">
129129
<div role="tab" class="@GetClassString(item)">
130-
@if (!string.IsNullOrEmpty(item.Icon))
131-
{
132-
<i class="@GetIconClassString(item.Icon)"></i>
133-
}
134-
<span class="tabs-item-text">@item.Text</span>
130+
@RenderHeaderContent(item)
135131
</div>
136132
<i class="tab-corner tab-corner-left"></i>
137133
<i class="tab-corner tab-corner-right"></i>
138134
</div>;
139135

140136
RenderFragment RenderDefaultDisabledHeader(TabItem item) =>
141137
@<div @key="item" role="tab" class="@GetClassString(item)">
142-
@if (!string.IsNullOrEmpty(item.Icon))
143-
{
144-
<i class="@GetIconClassString(item.Icon)"></i>
145-
}
146-
<span class="tabs-item-text">@item.Text</span>
138+
@RenderHeaderContent(item)
147139
</div>;
148140

149141
RenderFragment RenderChromeHeader(TabItem item) =>
@@ -167,15 +159,18 @@ else
167159
<i class="@GetIconClassString(item.Icon)"></i>
168160
}
169161
<span class="tabs-item-text">@item.Text</span>
170-
@if (ShowFullScreen && item.ShowFullScreen)
171-
{
172-
<FullScreenButton TargetId="@GetIdByTabItem(item)"></FullScreenButton>
173-
}
174-
@if (ShowClose && item.Closable)
162+
@if (!item.IsDisabled)
175163
{
176-
<span class="tabs-item-close" @onclick:stopPropagation @onclick:preventDefault @onclick="() => RemoveTab(item)">
177-
<i class="@CloseIcon"></i>
178-
</span>
164+
@if (ShowFullScreen && item.ShowFullScreen)
165+
{
166+
<FullScreenButton TargetId="@GetIdByTabItem(item)"></FullScreenButton>
167+
}
168+
@if (ShowClose && item.Closable)
169+
{
170+
<span class="tabs-item-close" @onclick:stopPropagation @onclick:preventDefault @onclick="() => RemoveTab(item)">
171+
<i class="@CloseIcon"></i>
172+
</span>
173+
}
179174
}
180175
</div>;
181176
}

src/BootstrapBlazor/Components/Tab/Tab.razor.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ public partial class Tab : IHandlerException
2424
.AddClass("extend", ShouldShowExtendButtons())
2525
.Build();
2626

27-
private string? GetItemWrapClassString(TabItem item) => CssBuilder.Default("tabs-item-wrap")
28-
.AddClass("active", item.IsActive)
27+
private static string? GetItemWrapClassString(TabItem item) => CssBuilder.Default("tabs-item-wrap")
28+
.AddClass("active", item.IsActive && !item.IsDisabled)
2929
.Build();
3030

3131
private string? GetClassString(TabItem item) => CssBuilder.Default("tabs-item")
32-
.AddClass("active", item.IsActive)
32+
.AddClass("active", item.IsActive && !item.IsDisabled)
3333
.AddClass("disabled", item.IsDisabled)
3434
.AddClass(item.CssClass)
3535
.AddClass("is-closeable", ShowClose)
@@ -793,6 +793,14 @@ private void ActiveTabItem(TabItem item)
793793
public void SetDisabledItem(TabItem item, bool disabled)
794794
{
795795
item.SetDisabledWithoutRender(disabled);
796+
if (disabled)
797+
{
798+
item.SetActive(false);
799+
}
800+
if (TabItems.Any(i => i.IsActive) == false)
801+
{
802+
TabItems.Where(i => !i.IsDisabled).FirstOrDefault()?.SetActive(true);
803+
}
796804
StateHasChanged();
797805
}
798806

0 commit comments

Comments
 (0)