Refactor UIComponent

Removed unnecessary Category tags.
Removed Tag property as it usually leads to component abuse.
Refactored class format.
pull/2/head
Matija Koželj 2 years ago
parent 08a8a5338f
commit f62c1f267e

@ -1,39 +1,25 @@
using Connected.Annotations; using Microsoft.AspNetCore.Components;
using Connected.Middleware;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Logging;
namespace Connected.Components; namespace Connected.Components;
public abstract class UIComponent : ComponentBase public abstract class UIComponent : ComponentBase
{ {
[Inject]
private ILoggerFactory LoggerFactory { get; set; }
[Inject]
private IComponentMiddlewareService? MiddlewareService { get; set; }
private ILogger _logger;
protected ILogger Logger => _logger ??= LoggerFactory.CreateLogger(GetType());
/// <summary> /// <summary>
/// User class names, separated by space. /// User class names, separated by space.
/// </summary> /// </summary>
[Parameter] [Parameter]
[Category(CategoryTypes.ComponentBase.Common)]
public string Class { get; set; } public string Class { get; set; }
/// <summary> /// <summary>
/// User styles, applied on top of the component's own classes and styles. /// User styles, applied on top of the component's own classes and styles.
/// </summary> /// </summary>
[Parameter] [Parameter]
[Category(CategoryTypes.ComponentBase.Common)]
public string Style { get; set; } public string Style { get; set; }
/// <summary> /// <summary>
/// Use Tag to attach any user data object to the component for your convenience. /// Use Tag to attach any user data object to the component for your convenience.
/// </summary> /// </summary>
[Parameter] [Parameter]
[Category(CategoryTypes.ComponentBase.Common)]
public object Tag { get; set; } public object Tag { get; set; }
/// <summary> /// <summary>
@ -41,22 +27,10 @@ public abstract class UIComponent : ComponentBase
/// They will be splatted onto the underlying HTML tag. /// They will be splatted onto the underlying HTML tag.
/// </summary> /// </summary>
[Parameter(CaptureUnmatchedValues = true)] [Parameter(CaptureUnmatchedValues = true)]
[Category(CategoryTypes.ComponentBase.Common)] public Dictionary<string, object> UserAttributes { get; set; } = new();
public Dictionary<string, object> UserAttributes { get; set; } = new Dictionary<string, object>();
/// <summary> /// <summary>
/// If the UserAttributes contain an ID make it accessible for WCAG labelling of input fields /// If the UserAttributes contain an ID make it accessible for WCAG labelling of input fields
/// </summary> /// </summary>
public string FieldId => (UserAttributes?.ContainsKey("id") == true ? UserAttributes["id"].ToString() : $"mudinput-{Guid.NewGuid()}"); public string FieldId => UserAttributes.TryGetValue("id", out var id) ? id.ToString() : $"input-{Guid.NewGuid()}";
protected Type ResolveComponent<TComponent>()
{
if (MiddlewareService is null)
return typeof(TComponent);
if (MiddlewareService.Select<TComponent>() is Type type)
return type;
return typeof(TComponent);
}
} }

Loading…
Cancel
Save