@namespace DnsmasqWebUI.Components.EffectiveConfig
@if (ShowSearchBox) { }
@if (IsEditMode) { @if (PendingChangesCount > 0) { @PendingChangesCount change(s) } @if (ValidationErrorCount > 0 || ValidationWarningCount > 0) { @if (ValidationErrorCount > 0) { @ValidationErrorCount error(s) } @if (ValidationErrorCount > 0 && ValidationWarningCount > 0) { ยท } @if (ValidationWarningCount > 0) { @ValidationWarningCount warning(s) } } } else { }
@code { [Parameter] public bool ShowSearchBox { get; set; } = true; [Parameter] public string SearchTerm { get; set; } = ""; [Parameter] public EventCallback SearchTermChanged { get; set; } [Parameter] public bool IsEditMode { get; set; } [Parameter] public int PendingChangesCount { get; set; } [Parameter] public IReadOnlyList? ValidationSummary { get; set; } private int ValidationErrorCount => ValidationSummary?.Count(i => i.Severity == FieldIssueSeverity.Error) ?? 0; private int ValidationWarningCount => ValidationSummary?.Count(i => i.Severity == FieldIssueSeverity.Warning) ?? 0; private string ValidationErrorTooltip => ValidationSummary == null ? "" : string.Join("\n", ValidationSummary.Where(i => i.Severity == FieldIssueSeverity.Error).Select(i => i.Message)); private string ValidationWarningTooltip => ValidationSummary == null ? "" : string.Join("\n", ValidationSummary.Where(i => i.Severity == FieldIssueSeverity.Warning).Select(i => i.Message)); [Parameter] public bool AllSectionsExpanded { get; set; } [Parameter] public EventCallback OnExpandAll { get; set; } [Parameter] public EventCallback OnCollapseAll { get; set; } private async Task OnToggleExpandCollapse() { if (AllSectionsExpanded) await OnCollapseAll.InvokeAsync(); else await OnExpandAll.InvokeAsync(); } [Parameter] public EventCallback OnEnterEditMode { get; set; } [Parameter] public EventCallback OnExitEditModeWithConfirm { get; set; } [Parameter] public EventCallback OnOpenSaveModal { get; set; } private async Task OnSearchInput(ChangeEventArgs e) { await SearchTermChanged.InvokeAsync(e.Value?.ToString() ?? ""); } private async Task OnChangesLinkKeyDown(KeyboardEventArgs e) { if (e.Key == "Enter" || e.Key == " ") await OnOpenSaveModal.InvokeAsync(); } private async Task OnValidationLinkKeyDown(KeyboardEventArgs e) { if (e.Key == "Enter" || e.Key == " ") await OnOpenSaveModal.InvokeAsync(); } }