Skip to content

Commit ec62fae

Browse files
committed
SelectExtended: Option to Add Null Value into ItemCollection and Fix Disabled Visual
1 parent 58aee83 commit ec62fae

File tree

6 files changed

+95
-13
lines changed

6 files changed

+95
-13
lines changed

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

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
@namespace MudExtensions.Docs.Examples
22

3-
<div class="d-flex gap-8">
4-
<MudSelectExtended T="string" Label="RenderFragment Based">
5-
<MudSelectItemExtended Value="@("Foo")" Text="Foo" />
6-
<MudSelectItemExtended Value="@("Bar")" Text="Bar" />
7-
<MudSelectItemExtended Value="@("Fizz")" Text="Fizz" />
8-
<MudSelectItemExtended Value="@("Buzz")" Text="Buzz" />
9-
</MudSelectExtended>
3+
<MudGrid>
4+
<MudItem xs="12" sm="8">
5+
<MudStack>
6+
<MudSelectExtended T="string" Label="RenderFragment Based" Disabled="_disabled">
7+
<MudSelectItemExtended Value="@("Foo")" Text="Foo" />
8+
<MudSelectItemExtended Value="@("Bar")" Text="Bar" />
9+
<MudSelectItemExtended Value="@("Fizz")" Text="Fizz" />
10+
<MudSelectItemExtended Value="@("Buzz")" Text="Buzz" />
11+
</MudSelectExtended>
12+
<MudSelectExtended T="string" Label="Data Based" ItemCollection="_collection" Disabled="_disabled" />
13+
<MudSelectExtended T="string" Label="Data Based" ItemCollection="_collection" Disabled="_disabled" AddNullItem="true" AddedNullItemText="@_nullItemText" />
14+
</MudStack>
15+
</MudItem>
1016

11-
<MudSelectExtended T="string" Label="Data Based" ItemCollection="_collection" />
12-
</div>
17+
<MudItem xs="12" sm="4">
18+
<MudStack>
19+
<MudSwitchM3 @bind-Value="_disabled" Color="Color.Secondary" Label="Disabled" />
20+
<MudTextField @bind-Value="_nullItemText" Label="Null Item Text" Variant="Variant.Outlined" />
21+
</MudStack>
22+
</MudItem>
23+
</MudGrid>
1324

1425
@code {
15-
string[] _collection = new string[] { "Foo", "Bar", "Fizz", "Buzz" };
26+
private bool _disabled = false;
27+
private string[] _collection = new string[] { "Foo", "Bar", "Fizz", "Buzz" };
28+
private string? _nullItemText = "None";
1629
}

CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@
4141
<MudDivider />
4242
}
4343
}
44+
@if (AddNullItem)
45+
{
46+
@if (MudSelectExtended != null)
47+
{
48+
<MudSelectItemExtended Value="default(T)" Text="@AddedNullItemText" />
49+
}
50+
else
51+
{
52+
<MudListItemExtended Value="default(T)" Text="@AddedNullItemText" />
53+
}
54+
}
4455
<MudVirtualize Enabled="@Virtualize" Items="GetSearchedItems()" Context="item" OverscanCount="@OverscanCount">
4556
@if (MudSelectExtended != null)
4657
{

CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,19 @@ public bool MultiSelection
396396
/// </summary>
397397
[Parameter] public EventCallback<ListItemClickEventArgs<T?>> OnDoubleClick { get; set; }
398398

399+
/// <summary>
400+
/// If true, a null item will be added to the list (Only for ItemCollection).
401+
/// </summary>
402+
[Parameter]
403+
public bool AddNullItem { get; set; }
404+
405+
/// <summary>
406+
/// Gets or sets the text displayed for a null item that has been added.
407+
/// </summary>
408+
[Parameter]
409+
public string? AddedNullItemText { get; set; } = "None";
410+
411+
399412
#endregion
400413

401414

@@ -740,6 +753,19 @@ protected override void OnInitialized()
740753
/// </summary>
741754
protected override void OnParametersSet()
742755
{
756+
//if (ItemCollection != null)
757+
//{
758+
// var list = ItemCollection.ToList();
759+
760+
// if (PopulateOptions == ItemPopulateOptions.AddNullItem)
761+
// {
762+
// if (!list.Contains(default(T)))
763+
// list.Insert(0, default(T)); // null item
764+
// }
765+
766+
// ItemCollection = list;
767+
//}
768+
743769
base.OnParametersSet();
744770
ParametersChanged?.Invoke();
745771
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<CascadingValue Name="Standalone" Value="false" IsFixed="true">
66
<CascadingValue Value="@this" IsFixed="true">
7-
<div class="mud-select-extended" id="@_elementId">
7+
<div class="mud-select-extended" style="@(Disabled ? "pointer-events: none" : null)" id="@_elementId">
88
<MudInputControl Label="@Label" Variant="@Variant" HelperText="@HelperText" HelperTextOnFocus="@HelperTextOnFocus" FullWidth="@FullWidth" Margin="@Margin" Class="@Classname" Style="@Style"
99
Error="@Error" ErrorText="@ErrorText" ErrorId="@ErrorId" Disabled="@Disabled" @onclick="@ToggleMenu" Required="@Required" ForId="@FieldId">
1010
<InputContent>
@@ -126,7 +126,7 @@
126126
<MudListExtended @ref="@_list" T="T" @bind-SelectedValue="@Value" Style="@($"overflow-y:auto; max-height: {MaxHeight}px")" @bind-SelectedValues="@SelectedValues" @bind-SelectedItem="@SelectedListItem" @bind-SelectedItems="@SelectedListItems"
127127
Clickable="true" Color="@Color" Dense="@Dense" ItemCollection="@ItemCollection" Virtualize="@Virtualize" Padding="@EnablePopoverPadding" EnableSelectedItemStyle="@EnableSelectedItemStyle"
128128
MultiSelection="@MultiSelection" MultiSelectionComponent="@MultiSelectionComponent" MultiSelectionAlign="@MultiSelectionAlign" SelectAll="@SelectAll" SelectAllPosition="@SelectAllPosition" SelectAllText="@SelectAllText"
129-
CheckedIcon="@CheckedIcon" UncheckedIcon="@UncheckedIcon" IndeterminateIcon="@IndeterminateIcon" SelectValueOnTab="@SelectValueOnTab" Comparer="@Comparer"
129+
CheckedIcon="@CheckedIcon" UncheckedIcon="@UncheckedIcon" IndeterminateIcon="@IndeterminateIcon" SelectValueOnTab="@SelectValueOnTab" Comparer="@Comparer" AddNullItem="@AddNullItem" AddedNullItemText="@AddedNullItemText"
130130
ItemTemplate="@ItemTemplate" ItemSelectedTemplate="@ItemSelectedTemplate" ItemDisabledTemplate="@ItemDisabledTemplate" SearchBox="@SearchBox" SearchBoxAutoFocus="@SearchBoxAutoFocus" SearchFunc="@SearchFunc" SearchBoxPlaceholder="@SearchBoxPlaceholder"
131131
SearchBoxClearable="@SearchBoxClearable" SearchBoxVariant="@SearchBoxVariant" SearchBoxAdornment="SearchBoxAdornment" ToStringFunc="@ToStringFunc" OnSearchStringChange="@OnSearchStringChange">
132132
@ChildContent
@@ -151,7 +151,7 @@
151151
<MudListExtended T="T" @bind-SelectedValue="@Value" @bind-SelectedValues="@SelectedValues" @bind-SelectedItem="@SelectedListItem" @bind-SelectedItems="@SelectedListItems"
152152
Clickable="true" Color="@Color" Dense="@Dense" ItemCollection="@ItemCollection" Virtualize="@Virtualize" Padding="@EnablePopoverPadding" EnableSelectedItemStyle="@EnableSelectedItemStyle"
153153
MultiSelection="@MultiSelection" MultiSelectionComponent="@MultiSelectionComponent" MultiSelectionAlign="@MultiSelectionAlign" SelectAll="@SelectAll" SelectAllPosition="@SelectAllPosition" SelectAllText="@SelectAllText"
154-
CheckedIcon="@CheckedIcon" UncheckedIcon="@UncheckedIcon" IndeterminateIcon="@IndeterminateIcon" SelectValueOnTab="@SelectValueOnTab" Comparer="@Comparer"
154+
CheckedIcon="@CheckedIcon" UncheckedIcon="@UncheckedIcon" IndeterminateIcon="@IndeterminateIcon" SelectValueOnTab="@SelectValueOnTab" Comparer="@Comparer" AddNullItem="@AddNullItem" AddedNullItemText="@AddedNullItemText"
155155
ItemTemplate="@ItemTemplate" ItemSelectedTemplate="@ItemSelectedTemplate" ItemDisabledTemplate="@ItemDisabledTemplate" SearchBox="@SearchBox" SearchBoxAutoFocus="@SearchBoxAutoFocus" SearchFunc="@SearchFunc" SearchBoxPlaceholder="@SearchBoxPlaceholder"
156156
SearchBoxClearable="@SearchBoxClearable" SearchBoxVariant="@SearchBoxVariant" SearchBoxAdornment="SearchBoxAdornment" ToStringFunc="@ToStringFunc" OnSearchStringChange="@OnSearchStringChange">
157157
@ChildContent

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,18 @@ public IEqualityComparer<T?>? Comparer
522522
}
523523
}
524524

525+
/// <summary>
526+
/// If true, a null item will be added to the list (Only for ItemCollection).
527+
/// </summary>
528+
[Parameter]
529+
public bool AddNullItem { get; set; }
530+
531+
/// <summary>
532+
/// Gets or sets the text displayed for a null item that has been added.
533+
/// </summary>
534+
[Parameter]
535+
public string? AddedNullItemText { get; set; } = "None";
536+
525537
#endregion
526538

527539

0 commit comments

Comments
 (0)