@@ -135,6 +135,9 @@ private async Task OnClickItem(string val)
135
135
[ JSInvokable ]
136
136
public override async Task TriggerFilter ( string val )
137
137
{
138
+ // Store the current input value to prevent it from being overwritten
139
+ var currentInputValue = val ;
140
+
138
141
if ( OnCustomFilter != null )
139
142
{
140
143
var items = await OnCustomFilter ( val ) ;
@@ -152,12 +155,20 @@ public override async Task TriggerFilter(string val)
152
155
: Items . Where ( s => s . StartsWith ( val , comparison ) ) ;
153
156
_filterItems = [ .. items ] ;
154
157
}
155
-
158
+
156
159
if ( DisplayCount != null )
157
160
{
158
161
_filterItems = [ .. _filterItems . Take ( DisplayCount . Value ) ] ;
159
162
}
160
- await TriggerChange ( val ) ;
163
+
164
+ // Use currentInputValue here instead of potentially stale val
165
+ CurrentValue = currentInputValue ;
166
+
167
+ // Only trigger StateHasChanged if no binding is present
168
+ if ( ! ValueChanged . HasDelegate )
169
+ {
170
+ StateHasChanged ( ) ;
171
+ }
161
172
}
162
173
163
174
/// <summary>
@@ -167,10 +178,15 @@ public override async Task TriggerFilter(string val)
167
178
[ JSInvokable ]
168
179
public override Task TriggerChange ( string val )
169
180
{
170
- CurrentValue = val ;
171
- if ( ! ValueChanged . HasDelegate )
181
+ // Only update CurrentValue if the value has actually changed
182
+ // This prevents overwriting the user's input
183
+ if ( CurrentValue != val )
172
184
{
173
- StateHasChanged ( ) ;
185
+ CurrentValue = val ;
186
+ if ( ! ValueChanged . HasDelegate )
187
+ {
188
+ StateHasChanged ( ) ;
189
+ }
174
190
}
175
191
return Task . CompletedTask ;
176
192
}
0 commit comments