From 010832fce788f6090fc9595f931eb97297e5ce38 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:33:48 +0000 Subject: [PATCH] feat: replace search expansion panels with always-visible filters on list pages Co-authored-by: kbeaugrand <9513635+kbeaugrand@users.noreply.github.com> --- .../Concentrators/ConcentratorSearch.razor | 57 ++++---- .../DeviceModels/DeviceModelSearch.razor | 26 ++-- .../EdgeModels/EdgeModelSearch.razor | 24 ++- .../Pages/Devices/DeviceListPage.razor | 137 +++++++++--------- .../EdgeDevices/EdgeDeviceListPage.razor | 118 ++++++++------- .../Pages/Devices/DevicesListPageTests.cs | 2 - 6 files changed, 167 insertions(+), 197 deletions(-) diff --git a/src/IoTHub.Portal.Client/Components/Concentrators/ConcentratorSearch.razor b/src/IoTHub.Portal.Client/Components/Concentrators/ConcentratorSearch.razor index c794db00b..16dadc519 100644 --- a/src/IoTHub.Portal.Client/Components/Concentrators/ConcentratorSearch.razor +++ b/src/IoTHub.Portal.Client/Components/Concentrators/ConcentratorSearch.razor @@ -1,36 +1,29 @@ - - - - - - - - - Status - - - Enabled - - - Disabled - - - All - - - + + + + + + + Status + + + Enabled - - - - Search - Reset - - - - - - + + Disabled + + + All + + + + + + + Search + Reset + + @code { [Parameter] diff --git a/src/IoTHub.Portal.Client/Components/DeviceModels/DeviceModelSearch.razor b/src/IoTHub.Portal.Client/Components/DeviceModels/DeviceModelSearch.razor index 255ba1d97..ad66fa995 100644 --- a/src/IoTHub.Portal.Client/Components/DeviceModels/DeviceModelSearch.razor +++ b/src/IoTHub.Portal.Client/Components/DeviceModels/DeviceModelSearch.razor @@ -1,19 +1,13 @@ - - - - - - - - - Search - Reset - - - - - - + + + + + + + Search + Reset + + @code { [Parameter] diff --git a/src/IoTHub.Portal.Client/Components/EdgeModels/EdgeModelSearch.razor b/src/IoTHub.Portal.Client/Components/EdgeModels/EdgeModelSearch.razor index f6a35e137..491597628 100644 --- a/src/IoTHub.Portal.Client/Components/EdgeModels/EdgeModelSearch.razor +++ b/src/IoTHub.Portal.Client/Components/EdgeModels/EdgeModelSearch.razor @@ -1,18 +1,12 @@ - - - - - - - - Search - Reset - - - - - - + + + + + + Search + Reset + + @code { [Parameter] diff --git a/src/IoTHub.Portal.Client/Pages/Devices/DeviceListPage.razor b/src/IoTHub.Portal.Client/Pages/Devices/DeviceListPage.razor index abef6509a..e94a44764 100644 --- a/src/IoTHub.Portal.Client/Pages/Devices/DeviceListPage.razor +++ b/src/IoTHub.Portal.Client/Pages/Devices/DeviceListPage.razor @@ -15,85 +15,80 @@ - - - + + + + + @foreach (DeviceTagDto tag in TagList) + { + if (tag.Searchable) + { - + - @foreach (DeviceTagDto tag in TagList) + } + } + + + + @foreach (var label in labels) { - if (tag.Searchable) - { - - - - } + + + } - - - - @foreach (var label in labels) - { - - - - } - - - - - this.Model) - Variant="Variant.Outlined" - ToStringFunc="@(x => x?.Name)" - ResetValueOnEmptyText=true - Immediate=true - Clearable=true - CoerceText=true - CoerceValue=false> - - @context.Name - - @((!string.IsNullOrEmpty(@context.Description) && @context.Description.Length > 100) ? @context.Description.Substring(0, 100) + "..." : @context.Description) - - - - - - - Status - - - Enabled - - - Disabled - - - All - - - + + + + + this.Model) + Variant="Variant.Outlined" + ToStringFunc="@(x => x?.Name)" + ResetValueOnEmptyText=true + Immediate=true + Clearable=true + CoerceText=true + CoerceValue=false> + + @context.Name + + @((!string.IsNullOrEmpty(@context.Description) && @context.Description.Length > 100) ? @context.Description.Substring(0, 100) + "..." : @context.Description) + + + + + + + Status + + + Enabled + + + Disabled - + + All + + - - Search - Reset - + + - + + Search + Reset + - - + diff --git a/src/IoTHub.Portal.Client/Pages/EdgeDevices/EdgeDeviceListPage.razor b/src/IoTHub.Portal.Client/Pages/EdgeDevices/EdgeDeviceListPage.razor index 7294380cf..85cbeffd0 100644 --- a/src/IoTHub.Portal.Client/Pages/EdgeDevices/EdgeDeviceListPage.razor +++ b/src/IoTHub.Portal.Client/Pages/EdgeDevices/EdgeDeviceListPage.razor @@ -12,70 +12,66 @@ - - - - - - - - - - @foreach (var label in labels) - { - - - - } - - - - - this.edgeModel) - Variant="Variant.Outlined" - ToStringFunc="@(x => x?.Name)" - ResetValueOnEmptyText=true - Immediate=true - Clearable=true - CoerceText=true - CoerceValue=false> - - @context.Name - - @((!string.IsNullOrEmpty(@context.Description) && @context.Description.Length > 100) ? @context.Description.Substring(0, 100) + "..." : @context.Description) - - - + + + + + + + + @foreach (var label in labels) + { + + + + } + + + + + this.edgeModel) + Variant="Variant.Outlined" + ToStringFunc="@(x => x?.Name)" + ResetValueOnEmptyText=true + Immediate=true + Clearable=true + CoerceText=true + CoerceValue=false> + + @context.Name + + @((!string.IsNullOrEmpty(@context.Description) && @context.Description.Length > 100) ? @context.Description.Substring(0, 100) + "..." : @context.Description) + + + + + + Status + + + Connected - - Status - - - Connected - - - Disconnected - - - All - - + + Disconnected - - Search - Reset + + All - - - + + + + Search + Reset + + diff --git a/src/IoTHub.Portal.Tests.Unit/Client/Pages/Devices/DevicesListPageTests.cs b/src/IoTHub.Portal.Tests.Unit/Client/Pages/Devices/DevicesListPageTests.cs index 25ff62c8c..35a0a36e5 100644 --- a/src/IoTHub.Portal.Tests.Unit/Client/Pages/Devices/DevicesListPageTests.cs +++ b/src/IoTHub.Portal.Tests.Unit/Client/Pages/Devices/DevicesListPageTests.cs @@ -61,8 +61,6 @@ public void DeviceListPageRendersCorrectly() cut.WaitForAssertion(() => cut.Markup.Should().NotContain("Loading...")); // Assert - cut.WaitForAssertion(() => cut.Find(".mud-expansion-panels .mud-expand-panel .mud-expand-panel-header .mud-expand-panel-text").TextContent.Should().Be("Search panel")); - cut.WaitForAssertion(() => cut.Find(".mud-expansion-panels .mud-expand-panel").ClassList.Should().NotContain("Search panel should be collapsed")); cut.WaitForAssertion(() => cut.FindAll("table tbody tr").Count.Should().Be(1)); cut.WaitForAssertion(() => MockRepository.VerifyAll()); }