Skip to content

Commit ec6cac0

Browse files
committed
feat: 增加 showTooltip 参数
1 parent c006d10 commit ec6cac0

File tree

1 file changed

+70
-49
lines changed

1 file changed

+70
-49
lines changed

src/BootstrapBlazor/Utils/Utility.cs

Lines changed: 70 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,11 @@ internal static IEnumerable<ITableColumn> OrderFunc(this List<ITableColumn> cols
391391
/// <summary>
392392
/// RenderTreeBuilder 扩展方法 通过 IEditorItem 与 model 创建 Display 组件
393393
/// </summary>
394-
/// <param name="builder"></param>
395-
/// <param name="item"></param>
396-
/// <param name="model"></param>
397-
public static void CreateDisplayByFieldType(this RenderTreeBuilder builder, IEditorItem item, object model)
394+
/// <param name="builder"><see cref="RenderTreeBuilder"/> 实例</param>
395+
/// <param name="item"><see cref="IEditorItem"/> 实例</param>
396+
/// <param name="model">当前模型对象实例</param>
397+
/// <param name="showTooltip">如果是 <see cref="Display{TValue}"/> 组件时是否显示提示栏 默认 false</param>
398+
public static void CreateDisplayByFieldType(this RenderTreeBuilder builder, IEditorItem item, object model, bool showTooltip = false)
398399
{
399400
var fieldType = item.PropertyType;
400401
var fieldName = item.GetFieldName();
@@ -403,60 +404,80 @@ public static void CreateDisplayByFieldType(this RenderTreeBuilder builder, IEdi
403404
var type = (Nullable.GetUnderlyingType(fieldType) ?? fieldType);
404405
if (type == typeof(bool) || fieldValue?.GetType() == typeof(bool))
405406
{
406-
builder.OpenComponent<Switch>(0);
407-
builder.AddAttribute(10, nameof(Switch.Value), fieldValue);
408-
builder.AddAttribute(20, nameof(Switch.IsDisabled), true);
409-
builder.AddAttribute(30, nameof(Switch.DisplayText), displayName);
410-
builder.AddAttribute(40, nameof(Switch.ShowLabelTooltip), item.ShowLabelTooltip);
411-
if (item is ITableColumn col)
412-
{
413-
builder.AddAttribute(50, "class", col.CssClass);
414-
}
415-
builder.AddMultipleAttributes(60, item.ComponentParameters);
407+
builder.RenderSwitch(item, fieldValue, displayName);
416408
}
417409
else if (item.ComponentType == typeof(Textarea) || item.Rows > 0)
418410
{
419-
builder.OpenComponent(0, typeof(Textarea));
420-
builder.AddAttribute(10, nameof(Textarea.DisplayText), displayName);
421-
builder.AddAttribute(20, nameof(Textarea.Value), fieldValue);
422-
builder.AddAttribute(30, nameof(Textarea.ShowLabelTooltip), item.ShowLabelTooltip);
423-
builder.AddAttribute(40, "readonly", true);
424-
if (item.Rows > 0)
425-
{
426-
builder.AddAttribute(50, "rows", item.Rows);
427-
}
428-
if (item is ITableColumn col)
429-
{
430-
builder.AddAttribute(60, "class", col.CssClass);
431-
}
432-
builder.AddMultipleAttributes(70, item.ComponentParameters);
411+
builder.RenderTextarea(item, fieldValue, displayName);
433412
}
434413
else
435414
{
436-
builder.OpenComponent(0, typeof(Display<>).MakeGenericType(fieldType));
437-
builder.AddAttribute(10, nameof(Display<>.DisplayText), displayName);
438-
builder.AddAttribute(20, nameof(Display<>.Value), fieldValue);
439-
builder.AddAttribute(30, nameof(Display<>.Lookup), item.Lookup);
440-
builder.AddAttribute(30, nameof(Display<>.LookupService), item.LookupService);
441-
builder.AddAttribute(40, nameof(Display<>.LookupServiceKey), item.LookupServiceKey);
442-
builder.AddAttribute(50, nameof(Display<>.LookupServiceData), item.LookupServiceData);
443-
builder.AddAttribute(60, nameof(Display<>.LookupStringComparison), item.LookupStringComparison);
444-
builder.AddAttribute(65, nameof(Display<>.ShowLabelTooltip), item.ShowLabelTooltip);
445-
if (item is ITableColumn col)
415+
builder.RenderDisplay(item, fieldType, fieldValue, displayName, showTooltip);
416+
}
417+
}
418+
419+
private static void RenderTextarea(this RenderTreeBuilder builder, IEditorItem item, object? fieldValue, string? displayName)
420+
{
421+
builder.OpenComponent(0, typeof(Textarea));
422+
builder.AddAttribute(10, nameof(Textarea.DisplayText), displayName);
423+
builder.AddAttribute(20, nameof(Textarea.Value), fieldValue);
424+
builder.AddAttribute(30, nameof(Textarea.ShowLabelTooltip), item.ShowLabelTooltip);
425+
builder.AddAttribute(40, "readonly", true);
426+
427+
if (item.Rows > 0)
428+
{
429+
builder.AddAttribute(50, "rows", item.Rows);
430+
}
431+
if (item is ITableColumn col)
432+
{
433+
builder.AddAttribute(60, "class", col.CssClass);
434+
}
435+
builder.AddMultipleAttributes(70, item.ComponentParameters);
436+
builder.CloseComponent();
437+
}
438+
439+
private static void RenderSwitch(this RenderTreeBuilder builder, IEditorItem item, object? fieldValue, string? displayName)
440+
{
441+
builder.OpenComponent<Switch>(0);
442+
builder.AddAttribute(10, nameof(Switch.Value), fieldValue);
443+
builder.AddAttribute(20, nameof(Switch.IsDisabled), true);
444+
builder.AddAttribute(30, nameof(Switch.DisplayText), displayName);
445+
builder.AddAttribute(40, nameof(Switch.ShowLabelTooltip), item.ShowLabelTooltip);
446+
447+
if (item is ITableColumn col)
448+
{
449+
builder.AddAttribute(50, "class", col.CssClass);
450+
}
451+
builder.AddMultipleAttributes(60, item.ComponentParameters);
452+
builder.CloseComponent();
453+
}
454+
455+
private static void RenderDisplay(this RenderTreeBuilder builder, IEditorItem item, Type fieldType, object? fieldValue, string? displayName, bool showTooltip)
456+
{
457+
builder.OpenComponent(0, typeof(Display<>).MakeGenericType(fieldType));
458+
builder.AddAttribute(10, nameof(Display<>.DisplayText), displayName);
459+
builder.AddAttribute(20, nameof(Display<>.Value), fieldValue);
460+
builder.AddAttribute(30, nameof(Display<>.Lookup), item.Lookup);
461+
builder.AddAttribute(30, nameof(Display<>.LookupService), item.LookupService);
462+
builder.AddAttribute(40, nameof(Display<>.LookupServiceKey), item.LookupServiceKey);
463+
builder.AddAttribute(50, nameof(Display<>.LookupServiceData), item.LookupServiceData);
464+
builder.AddAttribute(60, nameof(Display<>.LookupStringComparison), item.LookupStringComparison);
465+
builder.AddAttribute(65, nameof(Display<>.ShowLabelTooltip), item.ShowLabelTooltip);
466+
builder.AddAttribute(66, nameof(Display<>.ShowTooltip), showTooltip);
467+
468+
if (item is ITableColumn col)
469+
{
470+
if (col.Formatter != null)
446471
{
447-
if (col.Formatter != null)
448-
{
449-
builder.AddAttribute(70, nameof(Display<>.FormatterAsync), CacheManager.GetFormatterInvoker(fieldType, col.Formatter));
450-
}
451-
else if (!string.IsNullOrEmpty(col.FormatString))
452-
{
453-
builder.AddAttribute(80, nameof(Display<>.FormatString), col.FormatString);
454-
}
455-
builder.AddAttribute(90, "class", col.CssClass);
472+
builder.AddAttribute(70, nameof(Display<>.FormatterAsync), CacheManager.GetFormatterInvoker(fieldType, col.Formatter));
473+
}
474+
else if (!string.IsNullOrEmpty(col.FormatString))
475+
{
476+
builder.AddAttribute(80, nameof(Display<>.FormatString), col.FormatString);
456477
}
457-
builder.AddMultipleAttributes(100, item.ComponentParameters);
478+
builder.AddAttribute(90, "class", col.CssClass);
458479
}
459-
480+
builder.AddMultipleAttributes(100, item.ComponentParameters);
460481
builder.CloseComponent();
461482
}
462483

0 commit comments

Comments
 (0)