Skip to content

Commit ad83ee5

Browse files
authored
SelectExtended Show Text Primarily on Chip (#162)
1 parent 50f0d22 commit ad83ee5

File tree

4 files changed

+42
-10
lines changed

4 files changed

+42
-10
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ protected internal void UpdateSelectedValue()
442442
}
443443

444444
SelectedValue = SelectedItem == null ? default(T) : SelectedItem.Value;
445-
SelectedValues = SelectedItems.Select(x => x.Value).ToHashSet(_comparer);
445+
SelectedValues = SelectedItems?.Select(x => x.Value).ToHashSet(_comparer);
446446
}
447447

448448
private T _selectedValue;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
@if (ValuePresenter == ValuePresenter.Chip)
3535
{
3636
<MudChipSet Class="d-flex flex-wrap mud-width-full" Style="row-gap: 4px" AllClosable="ChipCloseable" OnClose="ChipClosed">
37-
@foreach (var val in SelectedValues)
37+
@foreach (var item in Items?.Where(x => SelectedValues.Contains(x.Value)) ?? new List<MudSelectItemExtended<T>>())
3838
{
39-
<MudChip Class="@ChipClass" Text="@Converter.Set(val)" Color="@Color" Size="@ChipSize" Variant="@ChipVariant" />
39+
<MudChip Class="@ChipClass" Value="item.Value" Text="@(string.IsNullOrEmpty(item.Text) ? Converter.Set(item.Value) : item.Text)" Color="@Color" Size="@ChipSize" Variant="@ChipVariant" />
4040
}
4141
</MudChipSet>
4242
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using MudBlazor.Utilities;
1111
using MudBlazor.Utilities.Exceptions;
1212
using MudExtensions.Enums;
13+
using MudExtensions.Extensions;
1314
using static MudBlazor.CategoryTypes;
1415

1516
namespace MudExtensions
@@ -1101,7 +1102,7 @@ protected override bool HasValue(T value)
11011102

11021103
protected async Task ChipClosed(MudChip chip)
11031104
{
1104-
SelectedValues = SelectedValues.Where(x => x.Equals(Converter.Get(chip.Text)) == false);
1105+
SelectedValues = SelectedValues.Where(x => x.Equals(Converter.Get(chip.Value?.ToString())) == false);
11051106
await SelectedValuesChanged.InvokeAsync(SelectedValues);
11061107
}
11071108
}

ComponentViewer.Docs/Pages/Examples/SelectExtendedExample5.razor

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11

22
<MudGrid>
33
<MudItem xs="12" sm="8">
4-
<MudSelectExtended MultiSelectionTextFunc="@(_radioGroup?.SelectedOption == 1 ? new Func<List<string>, string>(GetMultiSelectionText) : null)" MultiSelection="true" ValuePresenter="_valuePresenter" @bind-Value="value" @bind-SelectedValues="options" T="string" Label="US States" AnchorOrigin="Origin.BottomCenter"
4+
<MudSelectExtended MultiSelectionTextFunc="@(_radioGroup?.SelectedOption == 1 ? new Func<List<int?>, string>(GetMultiSelectionText) : null)" MultiSelection="true" ValuePresenter="_valuePresenter" T="int?" @bind-Value="intValue" @bind-SelectedValues="intValues" Label="Complex Type" AnchorOrigin="Origin.BottomCenter"
5+
ChipCloseable="_chipCloseable" ChipSize="_chipSize" ChipVariant="_chipVariant">
6+
@foreach (var item in complexes)
7+
{
8+
<MudSelectItemExtended T="int?" Value="@item.Value" Text="@item.Text" />
9+
}
10+
</MudSelectExtended>
11+
12+
<MudSelectExtended MultiSelectionTextFunc="@(_radioGroup?.SelectedOption == 1 ? new Func<List<string>, string>(GetMultiSelectionText2) : null)" MultiSelection="true" ValuePresenter="_valuePresenter" @bind-Value="stringValue" @bind-SelectedValues="stringValues" T="string" Label="US States" AnchorOrigin="Origin.BottomCenter"
513
ChipCloseable="_chipCloseable" ChipSize="_chipSize" ChipVariant="_chipVariant">
614
@foreach (var state in states)
715
{
@@ -20,13 +28,13 @@
2028
<MudItem xs="6">
2129
<MudText Typo="Typo.subtitle2">Value:</MudText>
2230
<MudText Typo="Typo.subtitle2">"</MudText>
23-
<MudText Typo="Typo.body2" Class="pl-4">@value</MudText>
31+
<MudText Typo="Typo.body2" Class="pl-4">@stringValue</MudText>
2432
<MudText Typo="Typo.subtitle2">"</MudText>
2533
</MudItem>
2634
<MudItem xs="6">
2735
<MudText Typo="Typo.subtitle2">SelectedValues: HashSet&lt;string&gt;</MudText>
2836
<MudText Typo="Typo.subtitle2">{</MudText>
29-
<MudText Typo="Typo.body2" Class="pl-4">@(string.Join(", ", options.Select(x => $"\"{x}\"")))</MudText>
37+
<MudText Typo="Typo.body2" Class="pl-4">@(string.Join(", ", stringValues.Select(x => $"\"{x}\"")))</MudText>
3038
<MudText Typo="Typo.subtitle2">}</MudText>
3139
</MudItem>
3240
</MudGrid>
@@ -39,12 +47,30 @@
3947
@code {
4048
MudRadioGroup<int> _radioGroup;
4149
ValuePresenter _valuePresenter = ValuePresenter.Text;
42-
string value { get; set; } = "Nothing selected";
43-
IEnumerable<string> options { get; set; } = new HashSet<string>() { "Alaska", "California" };
50+
string stringValue { get; set; } = "Nothing selected";
51+
IEnumerable<string> stringValues { get; set; } = new HashSet<string>() { "Alaska", "California" };
52+
int? intValue;
53+
IEnumerable<int?> intValues { get; set; } = new HashSet<int?>() { 2, 3 };
4454
bool _chipCloseable = false;
4555
Variant _chipVariant = Variant.Filled;
4656
Size _chipSize = Size.Small;
4757

58+
public class Complex
59+
{
60+
public int? Value { get; set; }
61+
public string Text { get; set; }
62+
}
63+
64+
private Complex[] complexes =
65+
{
66+
new Complex() { Value = null, Text = "Null" },
67+
new Complex() { Value = 1, Text = "A"},
68+
new Complex() { Value = 2, Text = "B"},
69+
new Complex() { Value = 3, Text = "C"},
70+
new Complex() { Value = 4, Text = "D"},
71+
new Complex() { Value = 5, Text = "E"},
72+
};
73+
4874
private string[] states =
4975
{
5076
"Alabama", "Alaska", "American Samoa", "Arizona",
@@ -63,7 +89,12 @@
6389
"Washington", "West Virginia", "Wisconsin", "Wyoming",
6490
};
6591

66-
private string GetMultiSelectionText(List<string> selectedValues)
92+
private string GetMultiSelectionText(List<int?> selectedValues)
93+
{
94+
return $"{selectedValues?.Count} value{(selectedValues?.Count > 1 ? "s have" : " has")} been selected";
95+
}
96+
97+
private string GetMultiSelectionText2(List<string> selectedValues)
6798
{
6899
return $"{selectedValues.Count} state{(selectedValues.Count > 1 ? "s have" : " has")} been selected";
69100
}

0 commit comments

Comments
 (0)