Skip to content

Commit af0e31e

Browse files
authored
MudCodeInput: Fix Crash when Initialize with Pre Defined Value (#627)
* MudCodeInput: Fix Crash when Initialize with Pre Defined Value * Change ToStringFast
1 parent 533f2ff commit af0e31e

2 files changed

Lines changed: 46 additions & 13 deletions

File tree

src/CodeBeam.MudBlazor.Extensions/Components/CodeInput/MudCodeInput.razor.cs

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,20 @@ public MudCodeInput()
3131
private readonly ParameterState<T?> _theValue;
3232
private readonly ParameterState<int> _count;
3333

34+
private bool _pendingSetValue;
35+
private T? _pendingValue;
3436
private async Task OnValueChanged()
3537
{
36-
await SetValueFromOutside(_theValue.Value);
38+
_pendingValue = _theValue.Value;
39+
40+
if (_rendered)
41+
{
42+
await SetValueFromOutside(_pendingValue);
43+
}
44+
else
45+
{
46+
_pendingSetValue = true;
47+
}
3748
}
3849

3950
private async Task OnCountChanged()
@@ -270,15 +281,31 @@ public async Task FocusPrevious()
270281
await _elementReferences[_lastFocusedIndex - 1].FocusAsync();
271282
}
272283

273-
/// <summary>
274-
///
275-
/// </summary>
284+
/// <inheritdoc />
276285
protected override void OnInitialized()
277286
{
278287
base.OnInitialized();
279288
SyncReferences();
280289
}
281290

291+
private bool _rendered = false;
292+
/// <inheritdoc />
293+
protected override async Task OnAfterRenderAsync(bool firstRender)
294+
{
295+
await base.OnAfterRenderAsync(firstRender);
296+
297+
if (firstRender)
298+
{
299+
_rendered = true;
300+
}
301+
302+
if (_pendingSetValue)
303+
{
304+
_pendingSetValue = false;
305+
await SetValueFromOutside(_pendingValue);
306+
}
307+
}
308+
282309
private void SyncReferences()
283310
{
284311
_elementReferences.Clear();
@@ -316,6 +343,9 @@ public async Task SetValue()
316343
/// <returns></returns>
317344
public async Task SetValueFromOutside(T? value)
318345
{
346+
if (!_rendered)
347+
return;
348+
319349
string? val = ConvertSet(value);
320350
if (_count.Value < val?.Length)
321351
{
@@ -324,6 +354,9 @@ public async Task SetValueFromOutside(T? value)
324354
await _theValue.SetValueAsync(base.ConvertGet(val));
325355
for (int i = 0; i < _count.Value; i++)
326356
{
357+
if (_elementReferences[i] == null)
358+
continue;
359+
327360
if (i < val?.Length)
328361
{
329362
await _elementReferences[i].SetText(val[i].ToString());

src/CodeBeam.MudBlazor.Extensions/Components/DateTimePicker/MudDateTimePicker.razor.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,12 @@ protected override string GetDayClasses(int month, DateTime day)
339339

340340
if (current?.Date == day.Date)
341341
return b.AddClass("mud-selected")
342-
.AddClass($"mud-theme-{Color.ToStringFast(true)}")
342+
.AddClass($"mud-theme-{Color.ToString().ToLowerInvariant()}")
343343
.Build();
344344

345345
if (day.Date == TimeProvider.GetLocalNow().Date)
346346
return b.AddClass("mud-current mud-button-outlined")
347-
.AddClass($"mud-button-outlined-{Color.ToStringFast(true)} mud-{Color.ToStringFast(true)}-text")
347+
.AddClass($"mud-button-outlined-{Color.ToString().ToLowerInvariant()} mud-{Color.ToString().ToLowerInvariant()}-text")
348348
.Build();
349349

350350
return b.Build();
@@ -711,12 +711,12 @@ private string GetNumberColor(int value)
711711

712712
if (h == value)
713713
{
714-
return $"mud-clock-number mud-theme-{Color.ToStringFast(true)}";
714+
return $"mud-clock-number mud-theme-{Color.ToString().ToLowerInvariant()}";
715715
}
716716
}
717717
else if (CurrentView == OpenTo.Minutes && _timeSet.Minute == value)
718718
{
719-
return $"mud-clock-number mud-theme-{Color.ToStringFast(true)}";
719+
return $"mud-clock-number mud-theme-{Color.ToString().ToLowerInvariant()}";
720720
}
721721

722722
return "mud-clock-number";
@@ -725,21 +725,21 @@ private string GetNumberColor(int value)
725725
private string GetClockPointerColor()
726726
{
727727
return PointerMoving
728-
? $"mud-picker-time-clock-pointer mud-{Color.ToStringFast(true)}"
729-
: $"mud-picker-time-clock-pointer mud-picker-time-clock-pointer-animation mud-{Color.ToStringFast(true)}";
728+
? $"mud-picker-time-clock-pointer mud-{Color.ToString().ToLowerInvariant()}"
729+
: $"mud-picker-time-clock-pointer mud-picker-time-clock-pointer-animation mud-{Color.ToString().ToLowerInvariant()}";
730730
}
731731

732732
private string GetClockPinColor()
733733
{
734-
return $"mud-picker-time-clock-pin mud-{Color.ToStringFast(true)}";
734+
return $"mud-picker-time-clock-pin mud-{Color.ToString().ToLowerInvariant()}";
735735
}
736736

737737
private string GetClockPointerThumbColor()
738738
{
739739
var deg = GetDeg();
740740
return deg % 30 == 0
741-
? $"mud-picker-time-clock-pointer-thumb mud-onclock-text mud-onclock-primary mud-{Color.ToStringFast(true)}"
742-
: $"mud-picker-time-clock-pointer-thumb mud-onclock-minute mud-{Color.ToStringFast(true)}-text";
741+
? $"mud-picker-time-clock-pointer-thumb mud-onclock-text mud-onclock-primary mud-{Color.ToString().ToLowerInvariant()}"
742+
: $"mud-picker-time-clock-pointer-thumb mud-onclock-minute mud-{Color.ToString().ToLowerInvariant()}-text";
743743
}
744744

745745
private static string GetTransform(double angle, double radius, double offsetX, double offsetY)

0 commit comments

Comments
 (0)