+
@L("SenderWizard_RecentReceivers", "Zuletzt verwendete Empfänger")
+
+
@if (_isLoadingRecentSuggestions)
{
@@ -512,6 +518,7 @@
private string _receiverName = string.Empty;
private string _receiverEmail = string.Empty;
+ private string _receiverSuggestionFilterText = string.Empty;
private readonly List
_receivers = [];
private IEnumerable _receiverTags = [];
private readonly List _recentReceiverSuggestions = [];
@@ -611,6 +618,13 @@
return Task.CompletedTask;
}
+ private Task OnReceiverSuggestionFilterChanged(string? value)
+ {
+ _receiverSuggestionFilterText = value ?? string.Empty;
+ _validationMessage = null;
+ return Task.CompletedTask;
+ }
+
private Task OnEnvelopeTypeChanged(ChangeEventArgs args)
{
_validationMessage = null;
@@ -696,7 +710,10 @@
return [];
var handler = new ReceiverSuggestionFilterHandler(_recentReceiverSuggestions);
- var filtered = handler.Filter(_receiverName, _receiverEmail);
+ var filterText = _receiverSuggestionFilterText.Trim();
+ var filtered = string.IsNullOrWhiteSpace(filterText)
+ ? _recentReceiverSuggestions
+ : handler.Filter(filterText);
return filtered
.GroupBy(x => x.EmailAddress, StringComparer.OrdinalIgnoreCase)
@@ -1213,6 +1230,7 @@
_receiverName = string.Empty;
_receiverEmail = string.Empty;
+ _receiverSuggestionFilterText = string.Empty;
_receivers.Clear();
_receiverTags = [];
_recentReceiverSuggestions.Clear();
diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Components/Sender/ReceiverSuggestionFilter/ReceiverSuggestionFilterHandler.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Components/Sender/ReceiverSuggestionFilter/ReceiverSuggestionFilterHandler.cs
index 6f76e554..b8962631 100644
--- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Components/Sender/ReceiverSuggestionFilter/ReceiverSuggestionFilterHandler.cs
+++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Components/Sender/ReceiverSuggestionFilter/ReceiverSuggestionFilterHandler.cs
@@ -4,23 +4,19 @@ namespace EnvelopeGenerator.Server.Client.Components.Sender.ReceiverSuggestionFi
public class ReceiverSuggestionFilterHandler(IEnumerable suggestions)
{
- private readonly IReadOnlyList _entries = suggestions
+ private readonly IReadOnlyList _entries = [.. suggestions
.Where(x => !string.IsNullOrWhiteSpace(x.FullName) && !string.IsNullOrWhiteSpace(x.EmailAddress))
- .Select(x => new Entry(new ReceiverFilterCriteria(x.FullName, x.EmailAddress), x))
- .ToList();
+ .Select(x => new Entry(new ReceiverFilterCriteria(x.FullName, x.EmailAddress), x))];
private readonly record struct Entry(ReceiverFilterCriteria Criteria, RecentReceiverSuggestionDto Suggestion);
- public IEnumerable Filter(ReceiverFilterCriteria criteria)
+ public IEnumerable Filter(string query)
{
+ var normalizedQuery = new ReceiverFilterCriteria(query, query);
return _entries
- .Where(x => x.Criteria.Matches(criteria))
+ .Where(x =>
+ x.Criteria.FullName.Contains(normalizedQuery.FullName, StringComparison.Ordinal)
+ || x.Criteria.EmailAddress.Contains(normalizedQuery.EmailAddress, StringComparison.Ordinal))
.Select(x => x.Suggestion);
}
-
- public IEnumerable Filter(string fullName, string emailAddress)
- {
- var criteria = new ReceiverFilterCriteria(fullName, emailAddress);
- return Filter(criteria);
- }
}