Skip to content

Commit 87b836c

Browse files
committed
feat: 禁用标签页允许弹出右键菜单
1 parent bfd0dce commit 87b836c

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/BootstrapBlazor/Components/Tab/Tab.razor

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,10 @@ else
188188
@RenderTabItemContent(item)
189189
</CascadingValue>;
190190

191-
RenderFragment RenderDisabledHeaderItem(TabItem item) =>
191+
RenderFragment RenderDisabledHeaderItem(TabItem item) =>
192192
@<div @key="@item" class="@GetItemWrapClassString(item)">
193-
<div role="tab" class="@GetClassString(item)">
193+
<div role="tab" class="@GetClassString(item)"
194+
@oncontextmenu="e => OnContextMenu(e, item)" @oncontextmenu:preventDefault="IsPreventDefault">
194195
@RenderHeaderItemContent(item)
195196
</div>
196197
@if (TabStyle == TabStyle.Chrome)

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,12 @@ public partial class Tab : IHandlerException
400400
/// </summary>
401401
[Parameter]
402402
public string? ContextMenuCloseAllIcon { get; set; }
403+
404+
/// <summary>
405+
/// Gets or sets before popup context menu callback. Default is null.
406+
/// </summary>
407+
[Parameter]
408+
public Func<TabItem, Task<bool>>? OnBeforeShowContextMenu { get; set; }
403409

404410
[CascadingParameter]
405411
private Layout? Layout { get; set; }
@@ -1070,9 +1076,18 @@ private Task OnCloseAll(ContextMenuItem item, object? context)
10701076

10711077
private async Task OnContextMenu(MouseEventArgs e, TabItem item)
10721078
{
1073-
if (_contextMenuZone != null && item is { Closable: true })
1079+
if (_contextMenuZone != null)
10741080
{
1075-
await _contextMenuZone.OnContextMenu(e, item);
1081+
var show = true;
1082+
if (OnBeforeShowContextMenu != null)
1083+
{
1084+
show = await OnBeforeShowContextMenu(item);
1085+
}
1086+
1087+
if (show)
1088+
{
1089+
await _contextMenuZone.OnContextMenu(e, item);
1090+
}
10761091
}
10771092
}
10781093

0 commit comments

Comments
 (0)