Refacoring namespaces #2
@ -1,12 +0,0 @@
|
||||
<Router AppAssembly="@typeof(App).Assembly">
|
||||
<Found Context="routeData">
|
||||
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
|
||||
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
|
||||
</Found>
|
||||
<NotFound>
|
||||
<PageTitle>Not found</PageTitle>
|
||||
<LayoutView Layout="@typeof(MainLayout)">
|
||||
<p role="alert">Sorry, there's nothing at this address.</p>
|
||||
</LayoutView>
|
||||
</NotFound>
|
||||
</Router>
|
@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
|
||||
<Project Sdk="Microsoft.NET.Sdk.Razor">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
@ -7,8 +7,8 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.0-rc.2.22476.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.0-rc.2.22476.2" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.0" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -1,11 +0,0 @@
|
||||
using Connected.Components.Showcase;
|
||||
using Microsoft.AspNetCore.Components.Web;
|
||||
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
|
||||
|
||||
var builder = WebAssemblyHostBuilder.CreateDefault(args);
|
||||
builder.RootComponents.Add<App>("#app");
|
||||
builder.RootComponents.Add<HeadOutlet>("head::after");
|
||||
|
||||
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
|
||||
|
||||
await builder.Build().RunAsync();
|
@ -4,33 +4,33 @@ namespace Connected.Components;
|
||||
|
||||
public abstract class UIComponent : ComponentBase
|
||||
{
|
||||
/// <summary>
|
||||
/// User class names, separated by space.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Class { get; set; }
|
||||
/// <summary>
|
||||
/// User class names, separated by space.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Class { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User styles, applied on top of the component's own classes and styles.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Style { get; set; }
|
||||
/// <summary>
|
||||
/// User styles, applied on top of the component's own classes and styles.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Style { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Use Tag to attach any user data object to the component for your convenience.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public object Tag { get; set; }
|
||||
/// <summary>
|
||||
/// Use Tag to attach any user data object to the component for your convenience.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public object Tag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// UserAttributes carries all attributes you add to the component that don't match any of its parameters.
|
||||
/// They will be splatted onto the underlying HTML tag.
|
||||
/// </summary>
|
||||
[Parameter(CaptureUnmatchedValues = true)]
|
||||
public Dictionary<string, object> UserAttributes { get; set; } = new();
|
||||
/// <summary>
|
||||
/// UserAttributes carries all attributes you add to the component that don't match any of its parameters.
|
||||
/// They will be splatted onto the underlying HTML tag.
|
||||
/// </summary>
|
||||
[Parameter(CaptureUnmatchedValues = true)]
|
||||
public Dictionary<string, object> UserAttributes { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// If the UserAttributes contain an ID make it accessible for WCAG labelling of input fields
|
||||
/// </summary>
|
||||
public string FieldId => UserAttributes.TryGetValue("id", out var id) ? id.ToString() : $"input-{Guid.NewGuid()}";
|
||||
/// <summary>
|
||||
/// If the UserAttributes contain an ID make it accessible for WCAG labelling of input fields
|
||||
/// </summary>
|
||||
public string FieldId => UserAttributes.TryGetValue("id", out var id) ? id.ToString() : $"input-{Guid.NewGuid()}";
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
@inherits LayoutComponentBase
|
||||
|
||||
<HeadContent>
|
||||
<link rel="stylesheet" href="_content/Connected.UI/Components.min.css" />
|
||||
<link rel="stylesheet" href="_content/Connected.UI/Styles.min.css" />
|
||||
</HeadContent>
|
||||
|
||||
|
||||
@Body
|
@ -1,42 +0,0 @@
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace Connected.Middleware;
|
||||
|
||||
internal class ComponentMiddlewareService : IComponentMiddlewareService
|
||||
{
|
||||
public ComponentMiddlewareService()
|
||||
{
|
||||
Middleware = new();
|
||||
}
|
||||
|
||||
private ConcurrentDictionary<string, List<Type>> Middleware { get; }
|
||||
|
||||
public void Add<TMiddleware, TComponent>()
|
||||
{
|
||||
var componentName = typeof(TComponent).FullName;
|
||||
|
||||
if (string.IsNullOrEmpty(componentName))
|
||||
throw new ArgumentException(null, nameof(TMiddleware));
|
||||
|
||||
if (Middleware.TryGetValue(componentName, out List<Type>? items))
|
||||
{
|
||||
//TODO: sort by priority so multiple inheritance would work
|
||||
items.Add(typeof(TMiddleware));
|
||||
}
|
||||
else
|
||||
Middleware.TryAdd(componentName, new List<Type> { typeof(TMiddleware) });
|
||||
}
|
||||
|
||||
public Type? Select<TComponent>()
|
||||
{
|
||||
var typeName = typeof(TComponent).FullName;
|
||||
|
||||
if (string.IsNullOrEmpty(typeName))
|
||||
throw new ArgumentException(null, nameof(TComponent));
|
||||
|
||||
if (Middleware.TryGetValue(typeName, out List<Type>? items) && items is not null && items.Any())
|
||||
return items[0];
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
namespace Connected.Middleware;
|
||||
|
||||
public interface IComponentMiddlewareService
|
||||
{
|
||||
void Add<TMiddleware, TComponent>();
|
||||
|
||||
Type? Select<TComponent>();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user