Lyo.Config.Web.Components
1.0.11
dotnet add package Lyo.Config.Web.Components --version 1.0.11
NuGet\Install-Package Lyo.Config.Web.Components -Version 1.0.11
<PackageReference Include="Lyo.Config.Web.Components" Version="1.0.11" />
<PackageVersion Include="Lyo.Config.Web.Components" Version="1.0.11" />
<PackageReference Include="Lyo.Config.Web.Components" />
paket add Lyo.Config.Web.Components --version 1.0.11
#r "nuget: Lyo.Config.Web.Components, 1.0.11"
#:package Lyo.Config.Web.Components@1.0.11
#addin nuget:?package=Lyo.Config.Web.Components&version=1.0.11
#tool nuget:?package=Lyo.Config.Web.Components&version=1.0.11
Lyo.Config.Web.Components
Blazor / MudBlazor dashboard for Lyo.Config. Add ConfigManagement to a host page for definitions, resolved per-entity values, definition history, and value history.
Components take IConfigStore as a parameter for writes. Optional IApiClient enables LyoDataGridProjected over Config.Api / TestApi query routes. There is no AddXxx DI registration and no IEncryptionService in this package — the client sends plaintext plus IsEncrypted; the API encrypts at rest.
Targets interactive Blazor on net10.0.
Examples
How a host wires this up
@inject IConfigStore Store
@inject IApiClient ApiClient
<ConfigManagement Store="Store" ApiClient="ApiClient" InitialSubjectEntityType="App" InitialSubjectEntityId="gateway:local" />
Architecture
flowchart LR
UI[ConfigManagement tabs] --> Store[IConfigStore]
UI --> Query[IApiClient query grids]
Store -->|ConfigApiStore HTTP| API[Config.Api / TestApi]
API --> Encrypt[IEncryptionService]
API --> PG[config schema]
Top-level entry point
@using Lyo.Config.Web.Components
<ConfigManagement Store="Store" />
| Parameter | Notes |
|---|---|
Store |
Required IConfigStore. Hosts inject the store and pass it in. |
ApiClient |
Optional IApiClient. When set, the definitions tab uses LyoDataGridProjected on Config/Definition (search/filter/sort/export). Bulk delete still calls IConfigStore.DeleteDefinitionAsync. |
InitialSubjectEntityType |
Toolbar prefill. Defaults to App (AppConfigEntity.AppEntityType). |
InitialSubjectEntityId |
Toolbar prefill for the entity instance (string; app routes use kind:id). |
ConfigManagement owns subject entity type/id (Apply to load) and renders tabbed MudTabs: Definitions, Resolved, Definition history, Value history. GetDefinitionsAsync requires an entity type; bindings and LoadConfigAsync also need an id. There is no list-all-definitions API.
Component catalog
| Component | Role |
|---|---|
ConfigManagement |
Toolbar + tabbed dashboard shell. |
ConfigDefinitionGrid |
LyoDataGridProjected when IApiClient is set (filter Key / ForValueType / IsRequired / IsEncrypted, export, store-backed bulk delete). Fallback MudTable over IConfigStore. History opens definition history. Required / Encrypted / Has default chips. |
ConfigDefinitionView |
LyoDialogPresets.Medium + LyoForm. Type dropdown from ClrTypeInfo.All plus Custom FullName (Enum also asks for the concrete FullName). Encrypted switch (flag only). Optional default via ConfigValueEditor. Compact definition history with revert. |
ConfigResolvedView |
LoadConfigAsync merge for type+id. Source chips: Overridden / Using default / Missing. Edit binding, reset to default, clear binding; History jumps to Value history when a binding exists. |
ConfigBindingView |
Medium binding editor. Encrypted inherits from the definition (client still only sends plaintext). Compact value history with revert. |
ConfigValueEditor |
Typed Mud inputs from ClrTypeInfo.EditorKind; JsonEditor<JsonNode> for JSON documents, collections, binary, and custom types. Password-style input when Encrypted. No type-name field (the definition owns ForValueType). |
ConfigDefinitionRevisionList |
Newest-first metadata revisions for a selected definition. Revert copies that snapshot and appends a new revision. |
ConfigRevisionList |
Newest-first value revisions for a selected binding. Revert copies that snapshot and appends a new revision. Empty until the first binding save. |
ConfigColorHelper |
Chip colors for required/optional and Binding/Default/Missing. Rendering goes through LyoChip. |
Store calls
SaveDefinitionAsync/SaveBindingAsync(..., tenantId: null).DeleteDefinitionAsync— confirm in UI; PostgreSQL cascades bindings and revisions.DeleteBindingAsync—InvalidOperationExceptionwhenIsRequiredand there is no default is shown as a snackbar.LoadConfigAsync— required-missing is shown as a warning; fallback rows still let you edit bindings.GetDefinitionRevisionsAsync/RevertDefinitionToRevisionAsync— definition history.GetBindingRevisionsAsync/RevertBindingToRevisionAsync— value history; revert is auditable (new revision appended).
Shared UI
Reuse LyoDialog / LyoDialogPresets.Medium, LyoForm / LyoFormInput, LyoIdField, LyoChip / LyoChips, LyoTimestamp, LyoTruncatedText, and JsonEditor. Status chips go in TitleChips, not TitleContent. Pass optional IApiClient for LyoDataGridProjected on definition query routes. Do not register IEncryptionService in this package.
See also
Lyo.Config.IConfigStore, records,AppConfigEntity.Lyo.Config.Postgres.AddPostgresConfigStoreFromConfiguration.Lyo.TestGateway./configworkbench viaConfigApiStoreover TestApi (API encrypts).
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Api.Client(direct, lyo)Lyo.Config(direct, lyo)Lyo.Web.Components(direct, lyo)Lyo.Web.Components.Export(direct, lyo)Lyo.Web.Components.Export.Csv(direct, lyo)Lyo.Web.Components.Export.Xlsx(direct, lyo)MudBlazor9.3(direct, third-party)Lyo.Api.Models(transitive, lyo)Lyo.Cache(transitive, lyo)Lyo.Common(transitive, lyo)Lyo.Compression(transitive, lyo)Lyo.DataTable.Models(transitive, lyo)Lyo.DateAndTime(transitive, lyo)Lyo.Diagnostic(transitive, lyo)Lyo.Encryption(transitive, lyo)Lyo.EntityReference.Models(transitive, lyo)Lyo.Exceptions(transitive, lyo)Lyo.Hashing(transitive, lyo)Lyo.Health(transitive, lyo)Lyo.IO.Temp(transitive, lyo)Lyo.KeyStore(transitive, lyo)Lyo.Metrics(transitive, lyo)Lyo.PackageMetadata(transitive, lyo)Lyo.Query(transitive, lyo)Lyo.Query.Models(transitive, lyo)Lyo.Result(transitive, lyo)Lyo.Streams(transitive, lyo)Lyo.Validation(transitive, lyo)Blazored.LocalStorage4.5.0(transitive, third-party)BouncyCastle.Cryptography2.6.2(transitive, third-party, netstandard2.0)EasyCompressor2.1.0(transitive, third-party)Konscious.Security.Cryptography.Argon21.3.1(transitive, third-party)Microsoft.Bcl.AsyncInterfaces10.0.5(transitive, microsoft, netstandard2.0)Microsoft.Extensions.Caching.Memory10.0.5(transitive, microsoft)Microsoft.Extensions.Configuration.Binder10.0.5(transitive, microsoft)Microsoft.Extensions.DependencyInjection10.0.5(transitive, microsoft)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5(transitive, microsoft, net10.0, netstandard2.0)Microsoft.Extensions.Hosting.Abstractions10.0.5(transitive, microsoft)Microsoft.Extensions.Http10.0.5(transitive, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5(transitive, microsoft)Microsoft.Extensions.Options.ConfigurationExtensions10.0.5(transitive, microsoft)System.Buffers4.6.1(transitive, microsoft, netstandard2.0)System.ComponentModel.Annotations5.0.0(transitive, microsoft)System.IO.Hashing10.0.5(transitive, microsoft, net10.0)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)System.Threading.Tasks.Extensions4.6.3(transitive, microsoft, netstandard2.0)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Lyo.Api.Client (>= 1.0.11)
- Lyo.Config (>= 1.0.11)
- Lyo.Web.Components (>= 1.0.11)
- Lyo.Web.Components.Export (>= 1.0.11)
- Lyo.Web.Components.Export.Csv (>= 1.0.11)
- Lyo.Web.Components.Export.Xlsx (>= 1.0.11)
- MudBlazor (>= 9.3.0 && < 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.