Skip to content

Commit 6f78e01

Browse files
Merge branch 'dotnetcore:main' into main
2 parents 613fdf0 + f81d400 commit 6f78e01

6 files changed

Lines changed: 51 additions & 23 deletions

File tree

src/BootstrapBlazor/Components/BaseComponents/DynamicElement.cs

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
9797

9898
if (IsTriggerClick())
9999
{
100-
builder.AddAttribute(2, "onclick", EventCallback.Factory.Create<MouseEventArgs>(this, e => OnClick!()));
100+
builder.AddAttribute(2, "onclick", EventCallback.Factory.Create<MouseEventArgs>(this, OnTriggerClick));
101101
}
102102

103103
if (IsTriggerDoubleClick())
104104
{
105-
builder.AddAttribute(3, "ondblclick", EventCallback.Factory.Create<MouseEventArgs>(this, e => OnDoubleClick!()));
105+
builder.AddAttribute(3, "ondblclick", EventCallback.Factory.Create<MouseEventArgs>(this, OnTriggerDoubleClick));
106106
}
107107

108108
if (IsTriggerClick() || IsTriggerDoubleClick())
@@ -111,9 +111,9 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
111111
builder.AddEventStopPropagationAttribute(5, "onclick", StopPropagation);
112112
}
113113

114-
if (TriggerContextMenu && OnContextMenu != null)
114+
if (IsTriggerContextMenu())
115115
{
116-
builder.AddAttribute(6, "oncontextmenu", EventCallback.Factory.Create<MouseEventArgs>(this, e => OnContextMenu(e)));
116+
builder.AddAttribute(6, "oncontextmenu", EventCallback.Factory.Create<MouseEventArgs>(this, OnTriggerContextMenu));
117117
builder.AddEventPreventDefaultAttribute(7, "oncontextmenu", true);
118118
}
119119

@@ -123,8 +123,35 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
123123
{
124124
builder.CloseElement();
125125
}
126+
}
127+
128+
private bool IsTriggerClick() => TriggerClick && OnClick != null;
129+
130+
private bool IsTriggerDoubleClick() => TriggerDoubleClick && OnDoubleClick != null;
131+
132+
private bool IsTriggerContextMenu() => TriggerContextMenu && OnContextMenu != null;
133+
134+
private async Task OnTriggerClick()
135+
{
136+
if (OnClick != null)
137+
{
138+
await OnClick();
139+
}
140+
}
126141

127-
bool IsTriggerClick() => TriggerClick && OnClick != null;
128-
bool IsTriggerDoubleClick() => TriggerDoubleClick && OnDoubleClick != null;
142+
private async Task OnTriggerDoubleClick()
143+
{
144+
if (OnDoubleClick != null)
145+
{
146+
await OnDoubleClick();
147+
}
148+
}
149+
150+
private async Task OnTriggerContextMenu(MouseEventArgs e)
151+
{
152+
if (OnContextMenu != null)
153+
{
154+
await OnContextMenu(e);
155+
}
129156
}
130157
}

src/BootstrapBlazor/Components/ErrorLogger/ErrorLogger.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public class ErrorLogger : ComponentBase, IErrorLogger
2222
/// <inheritdoc/>
2323
/// </summary>
2424
[Parameter]
25-
public bool EnableErrorLogger { get; set; } = true;
25+
public bool? EnableErrorLogger { get; set; }
2626

2727
/// <summary>
2828
/// <inheritdoc/>
2929
/// </summary>
3030
[Parameter]
31-
public bool ShowToast { get; set; } = true;
31+
public bool? ShowToast { get; set; }
3232

3333
/// <summary>
3434
/// <inheritdoc/>
@@ -62,9 +62,17 @@ public class ErrorLogger : ComponentBase, IErrorLogger
6262
[Parameter]
6363
public Func<ErrorLogger, Task>? OnInitializedCallback { get; set; }
6464

65+
[Inject]
66+
[NotNull]
67+
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }
68+
6569
[NotNull]
6670
private BootstrapBlazorErrorBoundary? _errorBoundary = default;
6771

72+
private bool _enableErrorLogger => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger;
73+
74+
private bool _showToast => ShowToast ?? Options.CurrentValue.ShowErrorLoggerToast;
75+
6876
/// <summary>
6977
/// <inheritdoc/>
7078
/// </summary>
@@ -102,13 +110,13 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
102110
builder.CloseComponent();
103111
}
104112

105-
private RenderFragment? RenderContent => EnableErrorLogger ? RenderError : ChildContent;
113+
private RenderFragment? RenderContent => _enableErrorLogger ? RenderError : ChildContent;
106114

107115
private RenderFragment RenderError => builder =>
108116
{
109117
builder.OpenComponent<BootstrapBlazorErrorBoundary>(0);
110118
builder.AddAttribute(1, nameof(BootstrapBlazorErrorBoundary.OnErrorHandleAsync), OnErrorHandleAsync);
111-
builder.AddAttribute(2, nameof(BootstrapBlazorErrorBoundary.ShowToast), ShowToast);
119+
builder.AddAttribute(2, nameof(BootstrapBlazorErrorBoundary.ShowToast), _showToast);
112120
builder.AddAttribute(3, nameof(BootstrapBlazorErrorBoundary.ToastTitle), ToastTitle);
113121
builder.AddAttribute(4, nameof(BootstrapBlazorErrorBoundary.ErrorContent), ErrorContent);
114122
builder.AddAttribute(5, nameof(BootstrapBlazorErrorBoundary.ChildContent), ChildContent);

src/BootstrapBlazor/Components/ErrorLogger/IErrorLogger.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ namespace BootstrapBlazor.Components;
1111
public interface IErrorLogger
1212
{
1313
/// <summary>
14-
/// 获得/设置 是否开启全局异常捕获 默认 true
14+
/// 获得/设置 是否开启全局异常捕获 默认 null 使用全局配置 <see cref="BootstrapBlazorOptions.EnableErrorLogger"/> 值
1515
/// </summary>
16-
bool EnableErrorLogger { get; set; }
16+
bool? EnableErrorLogger { get; set; }
1717

1818
/// <summary>
1919
/// 获得/设置 自定义 Error 处理方法 默认 null
@@ -23,9 +23,9 @@ public interface IErrorLogger
2323
Task HandlerExceptionAsync(Exception ex);
2424

2525
/// <summary>
26-
/// 获得 是否显示 Error 提示弹窗 默认 true 显示
26+
/// 获得 是否显示 Error 提示弹窗 默认 null 使用全局配置 <see cref="BootstrapBlazorOptions.ShowErrorLoggerToast"/> 值
2727
/// </summary>
28-
bool ShowToast { get; }
28+
bool? ShowToast { get; }
2929

3030
/// <summary>
3131
/// 获得 Error Toast 弹窗标题 默认读取资源文件内容

src/BootstrapBlazor/Components/Layout/Layout.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
}
127127
else
128128
{
129-
<ErrorLogger EnableErrorLogger="@_enableErrorLoggerValue" ShowToast="@_showToast" ToastTitle="@ErrorLoggerToastTitle"
129+
<ErrorLogger EnableErrorLogger="@EnableErrorLogger" ShowToast="@ShowErrorLoggerToast" ToastTitle="@ErrorLoggerToastTitle"
130130
OnErrorHandleAsync="OnErrorHandleAsync" OnInitializedCallback="OnErrorLoggerInitialized">
131131
@HandlerMain()
132132
</ErrorLogger>

src/BootstrapBlazor/Components/Layout/Layout.razor.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,6 @@ public partial class Layout : IHandlerException, ITabHeader
483483
[CascadingParameter]
484484
private Task<AuthenticationState>? AuthenticationStateTask { get; set; }
485485

486-
[Inject]
487-
[NotNull]
488-
private IOptionsMonitor<BootstrapBlazorOptions>? Options { get; set; }
489-
490486
[Inject, NotNull]
491487
private IServiceProvider? ServiceProvider { get; set; }
492488

@@ -499,10 +495,6 @@ public partial class Layout : IHandlerException, ITabHeader
499495

500496
private ITabHeader? TabHeader => ShowTabInHeader ? this : null;
501497

502-
private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options.CurrentValue.EnableErrorLogger;
503-
504-
private bool _showToast => ShowErrorLoggerToast ?? Options.CurrentValue.ShowErrorLoggerToast;
505-
506498
/// <summary>
507499
/// <inheritdoc/>
508500
/// </summary>

test/UnitTest/Components/LayoutTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ public void IHandlerException_Ok()
535535
pb.Add(a => a.EnableErrorLogger, true);
536536
pb.AddChildContent<Layout>(pb =>
537537
{
538+
pb.Add(a => a.EnableErrorLogger, true);
538539
// 按钮触发异常
539540
pb.Add(a => a.Main, new RenderFragment(builder =>
540541
{

0 commit comments

Comments
 (0)