diff --git a/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor b/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor index 790764a4..c93d9a91 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor +++ b/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor @@ -32,7 +32,7 @@ { } - diff --git a/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs b/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs index 4c6982cf..00856f75 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs +++ b/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs @@ -1,13 +1,11 @@ -using System.Data; -using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using MudBlazor; using MudBlazor.Services; using MudBlazor.Utilities; using MudExtensions.Enums; using MudExtensions.Services; -using static MudBlazor.CategoryTypes; -using static MudBlazor.Colors; +using System.Data; namespace MudExtensions { @@ -199,6 +197,11 @@ public Func ToStringFunc [Category(CategoryTypes.List.Behavior)] public string SearchBoxPlaceholder { get; set; } + /// + /// Fired when the search value changes. + /// + [Parameter] public EventCallback OnSearchStringChange { get; set; } + /// /// Allows virtualization. Only work if ItemCollection parameter is not null. /// @@ -929,6 +932,12 @@ protected void HandleOnScroll() } } + protected async Task SearchChanged(string searchString) + { + _searchString = searchString; + await OnSearchStringChange.InvokeAsync(searchString); + } + #endregion diff --git a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor index 4bf6e85a..f8b99b95 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor +++ b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor @@ -109,7 +109,8 @@ Clickable="true" Color="@Color" Dense="@Dense" ItemCollection="@ItemCollection" Virtualize="@Virtualize" DisablePadding="@DisablePopoverPadding" DisableSelectedItemStyle="@DisableSelectedItemStyle" MultiSelection="@MultiSelection" MultiSelectionComponent="@MultiSelectionComponent" MultiSelectionAlign="@MultiSelectionAlign" SelectAll="@SelectAll" SelectAllPosition="@SelectAllPosition" SelectAllText="@SelectAllText" CheckedIcon="@CheckedIcon" UncheckedIcon="@UncheckedIcon" IndeterminateIcon="@IndeterminateIcon" SelectValueOnTab="@SelectValueOnTab" Comparer="@Comparer" - ItemTemplate="@ItemTemplate" ItemSelectedTemplate="@ItemSelectedTemplate" ItemDisabledTemplate="@ItemDisabledTemplate" SearchBox="@SearchBox" SearchBoxAutoFocus="@SearchBoxAutoFocus" SearchFunc="@SearchFunc" SearchBoxPlaceholder="@SearchBoxPlaceholder" SearchBoxClearable="@SearchBoxClearable" SearchBoxVariant="@SearchBoxVariant" SearchBoxAdornment="SearchBoxAdornment" ToStringFunc="@ToStringFunc"> + ItemTemplate="@ItemTemplate" ItemSelectedTemplate="@ItemSelectedTemplate" ItemDisabledTemplate="@ItemDisabledTemplate" SearchBox="@SearchBox" SearchBoxAutoFocus="@SearchBoxAutoFocus" SearchFunc="@SearchFunc" SearchBoxPlaceholder="@SearchBoxPlaceholder" + SearchBoxClearable="@SearchBoxClearable" SearchBoxVariant="@SearchBoxVariant" SearchBoxAdornment="SearchBoxAdornment" ToStringFunc="@ToStringFunc" OnSearchStringChange="@OnSearchStringChange"> @ChildContent @@ -126,7 +127,8 @@ Clickable="true" Color="@Color" Dense="@Dense" ItemCollection="@ItemCollection" Virtualize="@Virtualize" DisablePadding="@DisablePopoverPadding" DisableSelectedItemStyle="@DisableSelectedItemStyle" MultiSelection="@MultiSelection" MultiSelectionComponent="@MultiSelectionComponent" MultiSelectionAlign="@MultiSelectionAlign" SelectAll="@SelectAll" SelectAllPosition="@SelectAllPosition" SelectAllText="@SelectAllText" CheckedIcon="@CheckedIcon" UncheckedIcon="@UncheckedIcon" IndeterminateIcon="@IndeterminateIcon" SelectValueOnTab="@SelectValueOnTab" Comparer="@Comparer" - ItemTemplate="@ItemTemplate" ItemSelectedTemplate="@ItemSelectedTemplate" ItemDisabledTemplate="@ItemDisabledTemplate" SearchBox="@SearchBox" SearchBoxAutoFocus="@SearchBoxAutoFocus" SearchFunc="@SearchFunc" SearchBoxPlaceholder="@SearchBoxPlaceholder" SearchBoxClearable="@SearchBoxClearable" SearchBoxVariant="@SearchBoxVariant" SearchBoxAdornment="SearchBoxAdornment" ToStringFunc="@ToStringFunc"> + ItemTemplate="@ItemTemplate" ItemSelectedTemplate="@ItemSelectedTemplate" ItemDisabledTemplate="@ItemDisabledTemplate" SearchBox="@SearchBox" SearchBoxAutoFocus="@SearchBoxAutoFocus" SearchFunc="@SearchFunc" SearchBoxPlaceholder="@SearchBoxPlaceholder" + SearchBoxClearable="@SearchBoxClearable" SearchBoxVariant="@SearchBoxVariant" SearchBoxAdornment="SearchBoxAdornment" ToStringFunc="@ToStringFunc" OnSearchStringChange="@OnSearchStringChange"> @ChildContent diff --git a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs index ba815bfc..af309620 100644 --- a/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs +++ b/CodeBeam.MudBlazor.Extensions/Components/SelectExtended/MudSelectExtended.razor.cs @@ -1,17 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using MudBlazor; using MudBlazor.Services; using MudBlazor.Utilities; using MudBlazor.Utilities.Exceptions; using MudExtensions.Enums; -using MudExtensions.Extensions; -using static MudBlazor.CategoryTypes; +using System.Diagnostics.CodeAnalysis; namespace MudExtensions { @@ -378,6 +372,13 @@ public bool Dense [Category(CategoryTypes.List.Behavior)] public Adornment SearchBoxAdornment { get; set; } = Adornment.End; + /// + /// Fired when the search value changes. + /// + [Parameter] + [Category(CategoryTypes.FormComponent.Behavior)] + public EventCallback OnSearchStringChange { get; set; } + /// /// If true, prevent scrolling while dropdown is open. /// @@ -612,7 +613,7 @@ protected override Task UpdateValuePropertyAsync(bool updateText) { // For MultiSelection of non-string T's we don't update the Value!!! //if (typeof(T) == typeof(string) || !MultiSelection) - base.UpdateValuePropertyAsync(updateText).AndForget(); + base.UpdateValuePropertyAsync(updateText).AndForget(); return Task.CompletedTask; } @@ -971,7 +972,7 @@ public async Task SelectOption(object obj) //await SelectedValuesChanged.InvokeAsync(SelectedValues); //if (MultiSelection && typeof(T) == typeof(string)) - //await SetValueAsync((T)(object)Text, updateText: false); + //await SetValueAsync((T)(object)Text, updateText: false); await InvokeAsync(StateHasChanged); } @@ -1136,7 +1137,7 @@ protected async Task ChipClosed(MudChip chip) return; } //SelectedValues = SelectedValues.Where(x => Converter.Set(x)?.ToString() != chip.Value?.ToString()); - SelectedValues = SelectedValues.Where(x => x.Equals(chip.Value) == false); + SelectedValues = SelectedValues.Where(x => x.Equals(chip.Value) == false); await SelectedValuesChanged.InvokeAsync(SelectedValues); } }