From daf415ee2123c044dc9a8231e4fba109df260301 Mon Sep 17 00:00:00 2001 From: Damien Braillard Date: Mon, 17 Aug 2026 10:11:40 +0200 Subject: [PATCH] fix: syntax highlighting lost when toggling `Editable` on `MudCodeViewer` When the `Editable` parameter changes, syntax highlighting is lost until the text is modified. This happens because no parameter scope is registered for `Editable`, so `ParameterChanged` is never invoked on change. As a result, the `MudCode.highlight` JS function isn't called after the DOM updates, leaving the code unhighlighted. I ran into this in my project; it's also reported in #628. The fix registers `Editable` in the parameter scope, the same way as `Code`, `ShowLineNumbers`, etc. This ensures `ParameterChanged` fires when `Editable` changes, triggering `MudCode.highlight` to re-highlight the code after the DOM update. --- .../Components/MudCodeViewer.razor.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/CodeBeam.MudBlazor.Extensions.Code/Components/MudCodeViewer.razor.cs b/src/CodeBeam.MudBlazor.Extensions.Code/Components/MudCodeViewer.razor.cs index e7d26d7f..55927d11 100644 --- a/src/CodeBeam.MudBlazor.Extensions.Code/Components/MudCodeViewer.razor.cs +++ b/src/CodeBeam.MudBlazor.Extensions.Code/Components/MudCodeViewer.razor.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MudBlazor; using MudBlazor.State; @@ -23,6 +23,7 @@ public partial class MudCodeViewer : MudComponentBase private readonly ParameterState _code; private readonly ParameterState _showLineNumbers; private readonly ParameterState _wrap; + private readonly ParameterState _editable; private readonly ParameterState _header; private readonly ParameterState _language; @@ -42,6 +43,9 @@ public MudCodeViewer() _wrap = registerScope.RegisterParameter(nameof(Wrap)) .WithParameter(() => Wrap) .WithChangeHandler(ParameterChanged); + _editable = registerScope.RegisterParameter(nameof(Editable)) + .WithParameter(() => Editable) + .WithChangeHandler(ParameterChanged); _header = registerScope.RegisterParameter(nameof(ShowHeader)) .WithParameter(() => ShowHeader) .WithChangeHandler(ParameterChanged); @@ -174,13 +178,13 @@ protected override async Task OnAfterRenderAsync(bool firstRender) await RefreshAsync(); } - if (Editable && !_tabEnabled) + if (_editable.Value && !_tabEnabled) { await JS.InvokeVoidAsync("MudCode.enableTabIndent", _textAreaRef); _tabEnabled = true; } - if (!Editable) + if (!_editable.Value) { _tabEnabled = false; }