Skip to content

Commit a997c8b

Browse files
authored
Fix Clear Button Show on ReadOnly Components (#620)
1 parent c865ac5 commit a997c8b

File tree

7 files changed

+33
-18
lines changed

7 files changed

+33
-18
lines changed

docs/CodeBeam.MudBlazor.Extensions.Docs.Wasm/wwwroot/CodeBeam.MudBlazor.Extensions.xml

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/CodeBeam.MudBlazor.Extensions/Components/ComboBox/MudComboBox.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@inject IKeyInterceptorService KeyInterceptorService
88
@inject IScrollManagerExtended ScrollManagerExtended
99

10-
<CascadingValue Name="Standalone" Value="false" IsFixed="true">
10+
<CascadingValue Name="SubscribeToParentForm" Value="false" IsFixed="true">
1111
<CascadingValue Value="@this" IsFixed="true">
1212
<div class="mud-select-extended" id="@_elementId">
1313
<MudInputControl Label="@Label" Variant="@Variant" HelperText="@HelperText" HelperTextOnFocus="@HelperTextOnFocus" FullWidth="@FullWidth" Margin="@Margin" Class="@Classname" Style="@Style"
@@ -22,7 +22,7 @@
2222
Underline="@Underline"
2323
HasAdornmentStart="@(AdornmentStart != null)" HasAdornmentEnd="@(AdornmentEnd != null)"
2424
Disabled="@GetDisabledState()" ReadOnly="@GetReadOnlyState()" Error="@ErrorState.Value" ErrorId="@ErrorIdState.Value"
25-
Clearable="@Clearable" ForceClearable="@(Clearable && HasValue(ReadValue))" OnClearButtonClick="@ClearButtonClickHandlerAsync"
25+
Clearable="@(Clearable && !GetReadOnlyState())" ForceClearable="@ForceClearable" OnClearButtonClick="@ClearButtonClickHandlerAsync"
2626
MaxLength="@MaxLength" @attributes="UserAttributes" OnBlur="@HandleOnBlur" ShrinkLabel="@(HasValue(ReadValue) || AdornmentStart != null || _isOpen || ShrinkLabel)">
2727

2828
<AdornmentStart>

src/CodeBeam.MudBlazor.Extensions/Components/ComboBox/MudComboBox.razor.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,13 @@ protected internal void SetSearchString(T value)
379379
//[Category(CategoryTypes.List.Behavior)]
380380
//public bool Virtualize { get; set; }
381381

382+
/// <summary>
383+
/// If true, clear button forced to show even on readonly or disabled ComboBox.
384+
/// </summary>
385+
[Parameter]
386+
[Category(CategoryTypes.List.Behavior)]
387+
public bool ForceClearable { get; set; }
388+
382389
/// <summary>
383390
/// If true, chips has close button and remove from SelectedValues when pressed the close button.
384391
/// </summary>
@@ -757,6 +764,7 @@ protected override void OnInitialized()
757764
bool _oldShowCheckbox = true;
758765
bool _oldBordered;
759766
Dense _oldDense = Dense.Standard;
767+
bool _oldReadonly;
760768
/// <summary>
761769
///
762770
/// </summary>
@@ -765,14 +773,16 @@ protected override void OnParametersSet()
765773
base.OnParametersSet();
766774
if (_oldShowCheckbox != ShowCheckbox ||
767775
_oldBordered != Bordered ||
768-
_oldDense != Dense)
776+
_oldDense != Dense ||
777+
_oldReadonly != ReadOnly)
769778
{
770779
ForceRenderItems();
771780
}
772781
_oldShowCheckbox = ShowCheckbox;
773782
_oldBordered = Bordered;
774783
_oldDense = Dense;
775784
_allSelected = GetAllSelectedState();
785+
_oldReadonly = ReadOnly;
776786
}
777787

778788
bool _firstRendered = false;

src/CodeBeam.MudBlazor.Extensions/Components/InputExtended/MudInputExtended.razor.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -316,35 +316,29 @@ public override ValueTask SelectRangeAsync(int pos1, int pos2)
316316

317317
private Size GetButtonSize() => Margin == Margin.Dense ? Size.Small : Size.Medium;
318318

319-
//private bool _showClearable;
320-
321319
private void UpdateClearable(object? value)
322320
{
323321
var showClearable = HasValue((T?)value);
324322
if (Clearable != showClearable)
325323
Clearable = showClearable;
326324
}
327325

328-
//private bool GetClearable() => Clearable && ((ReadValue is string stringValue && !string.IsNullOrWhiteSpace(stringValue)) || (ReadValue is not string && ReadValue is not null));
329-
330326
private bool ShowClearButton()
331327
{
332328
if (GetDisabledState())
333329
{
334330
return false;
335331
}
336332

337-
if (!Clearable)
333+
if (SubscribeToParentForm && GetReadOnlyState())
338334
{
339335
return false;
340336
}
341337

342-
// TODO: Add SubscribeToParentForm and GetReadOnlyState from MudBaseInput when Mud 9 released, it's currently internal
343-
// Select extended is currently hardcoded readonly true, do not uncomment
344-
//if (ReadOnly)
345-
//{
346-
// return false;
347-
//}
338+
if (!Clearable)
339+
{
340+
return false;
341+
}
348342

349343
return HasValue(ReadValue);
350344
}

src/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
@typeparam T
33
@inherits MudBaseInputExtended<T>
44

5-
<CascadingValue Name="Standalone" Value="false" IsFixed="true">
5+
<CascadingValue Name="SubscribeToParentForm" Value="false" IsFixed="true">
66
<CascadingValue Value="@this" IsFixed="true">
77
<div class="mud-select-extended" style="@(Disabled ? "pointer-events: none" : null)" id="@_elementId">
88
<MudInputControl
@@ -29,7 +29,7 @@
2929
HasAdornmentStart="@(AdornmentStart != null)" HasAdornmentEnd="true"
3030
Value="@(Strict && !IsValueInList ? null : ReadText)" Underline="@Underline"
3131
Disabled="@GetDisabledState()" ReadOnly="true" Error="@ErrorState.Value" ErrorId="@ErrorIdState.Value"
32-
Clearable="@Clearable" OnClearButtonClick="(async (e) => await SelectClearButtonClickHandlerAsync(e))"
32+
Clearable="@(Clearable && !GetReadOnlyState())" OnClearButtonClick="(async (e) => await SelectClearButtonClickHandlerAsync(e))"
3333
@attributes="UserAttributes" OnBlur="@OnLostFocus" ShrinkLabel="@(AdornmentStart != null || ShrinkLabel)" Typo="@Typo"
3434
ShowVisualiser="true" DataVisualiserStyle="min-height: 1.1876em; padding-right: 0px;">
3535

src/CodeBeam.MudBlazor.Extensions/Components/TextFieldExtended/MudTextFieldExtended.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
KeyDownPreventDefault="KeyDownPreventDefault"
5454
KeyUpPreventDefault="KeyUpPreventDefault"
5555
HideSpinButtons="true"
56-
Clearable="@Clearable"
56+
Clearable="@ShowClearButton()"
5757
OnClearButtonClick="@OnClearButtonClick"
5858
Pattern="@Pattern"
5959
AutoSize="AutoSize"

src/CodeBeam.MudBlazor.Extensions/Components/TextFieldExtended/MudTextFieldExtended.razor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,12 @@ public IMask? Mask
217217
// return base.SetTextAsync(text, updateValue);
218218
//}
219219

220+
private bool ShowClearButton()
221+
{
222+
if (SubscribeToParentForm)
223+
return Clearable && !GetReadOnlyState() && !GetDisabledState();
224+
return Clearable && !GetDisabledState();
225+
}
220226
private async Task OnMaskedValueChanged(string s)
221227
{
222228
await SetTextAndUpdateValueAsync(s, false);

0 commit comments

Comments
 (0)