From 85d650a8f5ee75642285b6bb9fa9505ad6dd74af Mon Sep 17 00:00:00 2001 From: Florian Schmidt Date: Tue, 14 Jul 2026 14:22:15 +0200 Subject: [PATCH] Fix: enable global interactivity so dialogs/selects actually work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Editing a meter (any admin dialog, select dropdown, snackbar, dark-mode toggle) did nothing: pages declared @rendermode InteractiveServer individually, but MainLayout — which hosts MudDialogProvider/MudPopoverProvider/MudSnackbarProvider — was rendered by , which was static. Inline MudDialogs and MudSelect popovers render through those providers, so with the providers non-interactive no dialog could ever open. Set the render mode on and in App.razor (global interactivity) and removed the now-redundant per-page @rendermode declarations (they would otherwise throw "parent already has a render mode"). Why it slipped through: the integration render tests only issue a GET (static prerender), which never exercises the SignalR circuit. Verified this fix with a real headless-browser run (Playwright): the meter edit dialog opens and the "Sub-meter of (upstream meters)" multi-select opens with options — proving the layout providers are now interactive. 116 tests still green. Claude-Session: https://claude.ai/code/session_01Lz2RqAsnQhetqWNoCDfexK --- src/App/Components/App.razor | 4 ++-- src/App/Components/Pages/Admin/Categories.razor | 1 - src/App/Components/Pages/Admin/Connectors.razor | 1 - src/App/Components/Pages/Admin/EnergyTypes.razor | 1 - src/App/Components/Pages/Admin/Settings.razor | 1 - src/App/Components/Pages/Admin/Tariffs.razor | 1 - src/App/Components/Pages/Consumables.razor | 1 - src/App/Components/Pages/Dashboard.razor | 1 - src/App/Components/Pages/EnergyView.razor | 1 - src/App/Components/Pages/Import.razor | 1 - src/App/Components/Pages/MeterDetail.razor | 1 - src/App/Components/Pages/Meters.razor | 1 - src/App/Components/Pages/Solar.razor | 1 - src/App/Components/Pages/Trends.razor | 1 - 14 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/App/Components/App.razor b/src/App/Components/App.razor index 61bf5ac..8d802ac 100644 --- a/src/App/Components/App.razor +++ b/src/App/Components/App.razor @@ -10,11 +10,11 @@ - + - + diff --git a/src/App/Components/Pages/Admin/Categories.razor b/src/App/Components/Pages/Admin/Categories.razor index 8c92cb0..a6f564f 100644 --- a/src/App/Components/Pages/Admin/Categories.razor +++ b/src/App/Components/Pages/Admin/Categories.razor @@ -1,5 +1,4 @@ @page "/admin/categories" -@rendermode InteractiveServer @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory @inject ISnackbar Snackbar @inject IDialogService DialogService diff --git a/src/App/Components/Pages/Admin/Connectors.razor b/src/App/Components/Pages/Admin/Connectors.razor index f768a60..b76ca20 100644 --- a/src/App/Components/Pages/Admin/Connectors.razor +++ b/src/App/Components/Pages/Admin/Connectors.razor @@ -1,5 +1,4 @@ @page "/admin/connectors" -@rendermode InteractiveServer @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory @inject MeterVault.Infrastructure.Ingestion.HaConnectionTester HaTester @inject ISnackbar Snackbar diff --git a/src/App/Components/Pages/Admin/EnergyTypes.razor b/src/App/Components/Pages/Admin/EnergyTypes.razor index 4dee006..4945042 100644 --- a/src/App/Components/Pages/Admin/EnergyTypes.razor +++ b/src/App/Components/Pages/Admin/EnergyTypes.razor @@ -1,5 +1,4 @@ @page "/admin/energy-types" -@rendermode InteractiveServer @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory @inject ISnackbar Snackbar @inject IDialogService DialogService diff --git a/src/App/Components/Pages/Admin/Settings.razor b/src/App/Components/Pages/Admin/Settings.razor index f8b5158..b01987f 100644 --- a/src/App/Components/Pages/Admin/Settings.razor +++ b/src/App/Components/Pages/Admin/Settings.razor @@ -1,5 +1,4 @@ @page "/admin/settings" -@rendermode InteractiveServer @inject Microsoft.Extensions.Options.IOptions Options @using MudBlazor diff --git a/src/App/Components/Pages/Admin/Tariffs.razor b/src/App/Components/Pages/Admin/Tariffs.razor index 089458f..af641ca 100644 --- a/src/App/Components/Pages/Admin/Tariffs.razor +++ b/src/App/Components/Pages/Admin/Tariffs.razor @@ -1,5 +1,4 @@ @page "/admin/tariffs" -@rendermode InteractiveServer @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory @inject ISnackbar Snackbar @inject IDialogService DialogService diff --git a/src/App/Components/Pages/Consumables.razor b/src/App/Components/Pages/Consumables.razor index 44a8254..71724ba 100644 --- a/src/App/Components/Pages/Consumables.razor +++ b/src/App/Components/Pages/Consumables.razor @@ -1,5 +1,4 @@ @page "/consumables" -@rendermode InteractiveServer @inject ConsumableService ConsumablesSvc @using MudBlazor diff --git a/src/App/Components/Pages/Dashboard.razor b/src/App/Components/Pages/Dashboard.razor index 5b50dde..66d1aca 100644 --- a/src/App/Components/Pages/Dashboard.razor +++ b/src/App/Components/Pages/Dashboard.razor @@ -1,5 +1,4 @@ @page "/" -@rendermode InteractiveServer @inject DashboardService Dash MeterVault — Overview diff --git a/src/App/Components/Pages/EnergyView.razor b/src/App/Components/Pages/EnergyView.razor index 4f9e561..85f4998 100644 --- a/src/App/Components/Pages/EnergyView.razor +++ b/src/App/Components/Pages/EnergyView.razor @@ -1,5 +1,4 @@ @page "/energy/{Id:int}" -@rendermode InteractiveServer @inject FlowService Flow @inject MeterVault.Infrastructure.Costing.CostService Costs @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory diff --git a/src/App/Components/Pages/Import.razor b/src/App/Components/Pages/Import.razor index c75d7d0..9c30ab6 100644 --- a/src/App/Components/Pages/Import.razor +++ b/src/App/Components/Pages/Import.razor @@ -1,5 +1,4 @@ @page "/import" -@rendermode InteractiveServer @inject MeterVault.Infrastructure.Import.ReferenceDataImporter ReferenceImporter @inject MeterVault.Infrastructure.Import.CsvImporter CsvImporter @inject ISnackbar Snackbar diff --git a/src/App/Components/Pages/MeterDetail.razor b/src/App/Components/Pages/MeterDetail.razor index 4e9b466..1d00847 100644 --- a/src/App/Components/Pages/MeterDetail.razor +++ b/src/App/Components/Pages/MeterDetail.razor @@ -1,5 +1,4 @@ @page "/meters/{Id:int}" -@rendermode InteractiveServer @inject MeterDetailService Details @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory @inject ISnackbar Snackbar diff --git a/src/App/Components/Pages/Meters.razor b/src/App/Components/Pages/Meters.razor index d105937..cb57018 100644 --- a/src/App/Components/Pages/Meters.razor +++ b/src/App/Components/Pages/Meters.razor @@ -1,5 +1,4 @@ @page "/meters" -@rendermode InteractiveServer @inject Microsoft.EntityFrameworkCore.IDbContextFactory DbFactory @inject MeterVault.Core.Normalization.INormalizationEngine Engine @inject ISnackbar Snackbar diff --git a/src/App/Components/Pages/Solar.razor b/src/App/Components/Pages/Solar.razor index 699dfab..76f77e7 100644 --- a/src/App/Components/Pages/Solar.razor +++ b/src/App/Components/Pages/Solar.razor @@ -1,5 +1,4 @@ @page "/solar" -@rendermode InteractiveServer @inject SolarService SolarSvc @using MudBlazor diff --git a/src/App/Components/Pages/Trends.razor b/src/App/Components/Pages/Trends.razor index 6c2d042..c2304d0 100644 --- a/src/App/Components/Pages/Trends.razor +++ b/src/App/Components/Pages/Trends.razor @@ -1,5 +1,4 @@ @page "/trends" -@rendermode InteractiveServer @inject DashboardService Dash MeterVault — Trends