diff --git a/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs b/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs index 9735e365..ff24e599 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs +++ b/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs @@ -442,7 +442,7 @@ protected internal void UpdateSelectedValue() } SelectedValue = SelectedItem == null ? default(T) : SelectedItem.Value; - SelectedValues = SelectedItems.Select(x => x.Value).ToHashSet(_comparer); + SelectedValues = SelectedItems?.Select(x => x.Value).ToHashSet(_comparer); } private T _selectedValue; diff --git a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor index 07f41053..6bf1a139 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor +++ b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor @@ -34,9 +34,9 @@ @if (ValuePresenter == ValuePresenter.Chip) { - @foreach (var val in SelectedValues) + @foreach (var item in Items?.Where(x => SelectedValues.Contains(x.Value)) ?? new List>()) { - + } } diff --git a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs index 5a28cff3..4767293a 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs +++ b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs @@ -10,6 +10,7 @@ using MudBlazor.Utilities; using MudBlazor.Utilities.Exceptions; using MudExtensions.Enums; +using MudExtensions.Extensions; using static MudBlazor.CategoryTypes; namespace MudExtensions @@ -1101,7 +1102,7 @@ protected override bool HasValue(T value) protected async Task ChipClosed(MudChip chip) { - SelectedValues = SelectedValues.Where(x => x.Equals(Converter.Get(chip.Text)) == false); + SelectedValues = SelectedValues.Where(x => x.Equals(Converter.Get(chip.Value?.ToString())) == false); await SelectedValuesChanged.InvokeAsync(SelectedValues); } } diff --git a/ComponentViewer.Docs/Pages/Examples/SelectExtendedExample5.razor b/ComponentViewer.Docs/Pages/Examples/SelectExtendedExample5.razor index 63364dcb..bb50aca1 100644 --- a/ComponentViewer.Docs/Pages/Examples/SelectExtendedExample5.razor +++ b/ComponentViewer.Docs/Pages/Examples/SelectExtendedExample5.razor @@ -1,7 +1,15 @@  - + @foreach (var item in complexes) + { + + } + + + @foreach (var state in states) { @@ -20,13 +28,13 @@ Value: " - @value + @stringValue " SelectedValues: HashSet<string> { - @(string.Join(", ", options.Select(x => $"\"{x}\""))) + @(string.Join(", ", stringValues.Select(x => $"\"{x}\""))) } @@ -39,12 +47,30 @@ @code { MudRadioGroup _radioGroup; ValuePresenter _valuePresenter = ValuePresenter.Text; - string value { get; set; } = "Nothing selected"; - IEnumerable options { get; set; } = new HashSet() { "Alaska", "California" }; + string stringValue { get; set; } = "Nothing selected"; + IEnumerable stringValues { get; set; } = new HashSet() { "Alaska", "California" }; + int? intValue; + IEnumerable intValues { get; set; } = new HashSet() { 2, 3 }; bool _chipCloseable = false; Variant _chipVariant = Variant.Filled; Size _chipSize = Size.Small; + public class Complex + { + public int? Value { get; set; } + public string Text { get; set; } + } + + private Complex[] complexes = + { + new Complex() { Value = null, Text = "Null" }, + new Complex() { Value = 1, Text = "A"}, + new Complex() { Value = 2, Text = "B"}, + new Complex() { Value = 3, Text = "C"}, + new Complex() { Value = 4, Text = "D"}, + new Complex() { Value = 5, Text = "E"}, + }; + private string[] states = { "Alabama", "Alaska", "American Samoa", "Arizona", @@ -63,7 +89,12 @@ "Washington", "West Virginia", "Wisconsin", "Wyoming", }; - private string GetMultiSelectionText(List selectedValues) + private string GetMultiSelectionText(List selectedValues) + { + return $"{selectedValues?.Count} value{(selectedValues?.Count > 1 ? "s have" : " has")} been selected"; + } + + private string GetMultiSelectionText2(List selectedValues) { return $"{selectedValues.Count} state{(selectedValues.Count > 1 ? "s have" : " has")} been selected"; }