diff --git a/src/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs b/src/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs index 5bab7144..a9fb10ad 100644 --- a/src/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs +++ b/src/CodeBeam.MudBlazor.Extensions/Components/ListExtended/MudListExtended.razor.cs @@ -1083,10 +1083,13 @@ protected async Task SearchChanged(string? searchString) { _searchString = searchString; - var items = CollectAllMudListItems(true); - foreach (var item in items) + if (ItemCollection == null) { - item.ApplySearch(IsMatch(item)); + var items = CollectAllMudListItems(true); + foreach (var item in items) + { + item.ApplySearch(IsMatch(item)); + } } await OnSearchStringChange.InvokeAsync(searchString); diff --git a/tests/CodeBeam.MudBlazor.Extensions.UnitTests/Components/ListExtendedTests.cs b/tests/CodeBeam.MudBlazor.Extensions.UnitTests/Components/ListExtendedTests.cs index 515503b3..60a83951 100644 --- a/tests/CodeBeam.MudBlazor.Extensions.UnitTests/Components/ListExtendedTests.cs +++ b/tests/CodeBeam.MudBlazor.Extensions.UnitTests/Components/ListExtendedTests.cs @@ -337,5 +337,31 @@ public void ListColorTest(Color color) var listItemClasses = comp.Find(".mud-selected-item"); listItemClasses.ClassList.Should().ContainInOrder(new[] { $"mud-{color.ToDescriptionString()}-text", $"mud-{color.ToDescriptionString()}-hover" }); } + + [Test] + public async Task List_SearchChanged_WithNullItemCollection() + { + var comp = Context.Render(); + var list = comp.FindComponent>().Instance; + + // Verify ItemCollection is null - items are defined in markup + list.ItemCollection.Should().BeNull(); + + // Verify initial items count from markup + var initialItems = comp.FindAll("div.mud-list-item-extended").Count; + initialItems.Should().Be(9); // 7 choices, 2 groups + + // Verify we can access items via GetItems() - this calls CollectAllMudListItems internally + var items = list.GetItems(); + items.Should().HaveCount(7); + + // Select an item to verify the list still works correctly + await comp.InvokeAsync(() => list.SelectedValue = 1); + comp.WaitForAssertion(() => list.SelectedItem?.Text.Should().Be("Sparkling Water")); + + // Verify all items are still accessible + var finalItems = comp.FindAll("div.mud-list-item-extended").Count; + finalItems.Should().Be(9); + } } -} +} \ No newline at end of file