mirror of
https://github.com/alexhopeoconnor/dnsmasq-webui.git
synced 2026-10-03 22:12:00 +10:00
- Move Client/Http, Services, Parsers under Infrastructure/ (Client, Services, Parsers) - Move config helpers (DnsmasqConfKeys, DnsmasqOptionTooltips, DnsmasqFileEncoding, EffectiveConfigFieldBuilder) to Infrastructure/Helpers/Config; ApiJsonOptions to Helpers/Http - Move Configuration types (ApplicationOptions, DnsmasqOptions, DnsmasqOptionsValidator) to Models/Config - Merge Models/Status and Models/EffectiveConfig into Models/Dnsmasq and Models/Dnsmasq/EffectiveConfig - Move Client/Models and Client/Services to Models/Client and Infrastructure/Services - Move ConfigSetSnapshot, HostsSnapshot, ProcessRunResult, ManagedConfigContent from Infrastructure/Services/Abstractions to Models/Contracts - Update all namespaces and usings; tests pass
34 lines
1.5 KiB
Plaintext
34 lines
1.5 KiB
Plaintext
@namespace DnsmasqWebUI.Components.Dnsmasq.EffectiveConfig
|
|
@using DnsmasqWebUI.Models.Dnsmasq
|
|
|
|
<CascadingValue Value="DisplayMode">
|
|
<div class="ec-section @(IsOpen ? "ec-section-open" : "")">
|
|
<button type="button" class="ec-section-header" @onclick="ToggleSection" aria-expanded="@IsOpen">
|
|
<span class="ec-section-title fw-bold">@Title</span>
|
|
<i class="bi @(IsOpen ? "bi-chevron-down" : "bi-chevron-right") ec-section-chevron" aria-hidden="true"></i>
|
|
</button>
|
|
<div class="collapse @(IsOpen ? "show" : "")">
|
|
<div class="ec-section-body">
|
|
<ul class="list-unstyled mb-0">
|
|
@foreach (var f in Descriptors)
|
|
{
|
|
<EffectiveConfigFieldDisplay Descriptor="@f" />
|
|
}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</CascadingValue>
|
|
|
|
@code {
|
|
[Parameter] public string SectionId { get; set; } = "";
|
|
[Parameter] public string Title { get; set; } = "";
|
|
[Parameter] public IReadOnlyList<EffectiveConfigFieldDescriptor> Descriptors { get; set; } = null!;
|
|
[Parameter] public bool IsOpen { get; set; }
|
|
[Parameter] public EventCallback<string> OnToggle { get; set; }
|
|
/// <summary>Cascaded from EffectiveConfigSection. View = read-only; Edit = editable (future).</summary>
|
|
[Parameter] public EffectiveConfigDisplayMode DisplayMode { get; set; } = EffectiveConfigDisplayMode.View;
|
|
|
|
private async Task ToggleSection() => await OnToggle.InvokeAsync(SectionId);
|
|
}
|