Skip to content

Commit daf415e

Browse files
Damien BraillardDamienBraillard
authored andcommitted
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.
1 parent 6051e0e commit daf415e

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/CodeBeam.MudBlazor.Extensions.Code/Components/MudCodeViewer.razor.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Microsoft.AspNetCore.Components;
1+
using Microsoft.AspNetCore.Components;
22
using Microsoft.JSInterop;
33
using MudBlazor;
44
using MudBlazor.State;
@@ -23,6 +23,7 @@ public partial class MudCodeViewer : MudComponentBase
2323
private readonly ParameterState<string?> _code;
2424
private readonly ParameterState<bool> _showLineNumbers;
2525
private readonly ParameterState<bool> _wrap;
26+
private readonly ParameterState<bool> _editable;
2627
private readonly ParameterState<bool> _header;
2728
private readonly ParameterState<CodeLanguage> _language;
2829

@@ -42,6 +43,9 @@ public MudCodeViewer()
4243
_wrap = registerScope.RegisterParameter<bool>(nameof(Wrap))
4344
.WithParameter(() => Wrap)
4445
.WithChangeHandler(ParameterChanged);
46+
_editable = registerScope.RegisterParameter<bool>(nameof(Editable))
47+
.WithParameter(() => Editable)
48+
.WithChangeHandler(ParameterChanged);
4549
_header = registerScope.RegisterParameter<bool>(nameof(ShowHeader))
4650
.WithParameter(() => ShowHeader)
4751
.WithChangeHandler(ParameterChanged);
@@ -174,13 +178,13 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
174178
await RefreshAsync();
175179
}
176180

177-
if (Editable && !_tabEnabled)
181+
if (_editable.Value && !_tabEnabled)
178182
{
179183
await JS.InvokeVoidAsync("MudCode.enableTabIndent", _textAreaRef);
180184
_tabEnabled = true;
181185
}
182186

183-
if (!Editable)
187+
if (!_editable.Value)
184188
{
185189
_tabEnabled = false;
186190
}

0 commit comments

Comments
 (0)