From 41126be7b7a2bbade4ab4355ebac2c5d31fcd60c Mon Sep 17 00:00:00 2001 From: nilsk Date: Fri, 13 Mar 2026 02:01:44 +0100 Subject: [PATCH] fixed final bugs --- .../Components/DynamicAssistantDropdown.razor | 5 +-- .../DynamicAssistantDropdown.razor.cs | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor index 8723138f..35ad27cf 100644 --- a/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor +++ b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor @@ -6,6 +6,7 @@ T="string" SelectedValues="@this.SelectedValues" SelectedValuesChanged="@this.OnSelectedValuesChanged" + MultiSelectionTextFunc="@this.GetMultiSelectionText" Label="@this.Label" HelperText="@this.HelperText" Placeholder="@this.Default.Display" @@ -18,7 +19,7 @@ MultiSelection="@true" SelectAll="@this.HasSelectAll" SelectAllText="@this.SelectAllText"> - @foreach (var item in Items) + @foreach (var item in this.GetRenderedItems()) { @item.Display @@ -41,7 +42,7 @@ AdornmentColor="@this.IconColor" Variant="@this.Variant" Margin="Margin.Normal"> - @foreach (var item in Items) + @foreach (var item in this.GetRenderedItems()) { @item.Display diff --git a/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs index df59aa3c..86c485ae 100644 --- a/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs +++ b/app/MindWork AI Studio/Components/DynamicAssistantDropdown.razor.cs @@ -71,6 +71,38 @@ namespace AIStudio.Components await this.SelectedValuesChanged.InvokeAsync(updatedValues); } + private List GetRenderedItems() + { + var items = this.Items ?? []; + if (string.IsNullOrWhiteSpace(this.Default.Value)) + return items; + + if (items.Any(item => string.Equals(item.Value, this.Default.Value, StringComparison.Ordinal))) + return items; + + return [this.Default, .. items]; + } + + private string GetMultiSelectionText(List? selectedValues) + { + if (selectedValues is null || selectedValues.Count == 0) + return this.Default.Display; + + var labels = selectedValues + .Where(value => !string.IsNullOrWhiteSpace(value)) + .Select(value => this.ResolveDisplayText(value!)) + .Where(value => !string.IsNullOrWhiteSpace(value)) + .ToList(); + + return labels.Count == 0 ? this.Default.Display : string.Join(", ", labels); + } + + private string ResolveDisplayText(string value) + { + var item = this.GetRenderedItems().FirstOrDefault(item => string.Equals(item.Value, value, StringComparison.Ordinal)); + return item?.Display ?? value; + } + private string MergeClasses(string custom, string fallback) { var trimmedCustom = custom?.Trim() ?? string.Empty;