HxAutosuggest #

Component for single item selection with dynamic suggestions (based on typed characters).

HxAutosuggest component is similar to HxSearchBox component, but it is designed to be used in forms.

  • HxAutosuggest supports validation,
  • HxAutosuggest supports Value-binding to model,
  • HxAutosuggest supports HxFormState,
  • HxAutosuggest does not support free-text query.

Basic usage #

Selected employee ID: 1

@inject IDemoDataService DemoDataService

<HxAutosuggest Label="Employee"
			   Placeholder="Start typing to search by name"
			   TItem="EmployeeDto"
			   TValue="int?"
			   @bind-Value="@selectedEmployeeId"
			   DataProvider="ProvideSuggestions"
			   ValueSelector="employee => employee.Id"
			   TextSelector="employee => employee.Name"
			   ItemFromValueResolver="ResolveAutosuggestItemFromValue">
	<EmptyTemplate>
		<span class="p-2">Couldn't find any matching employee</span>
	</EmptyTemplate>
</HxAutosuggest>

<p class="mt-3">Selected employee ID: @selectedEmployeeId</p>

@code
{
	private int? selectedEmployeeId = 1;

	private async Task<AutosuggestDataProviderResult<EmployeeDto>> ProvideSuggestions(AutosuggestDataProviderRequest request)
	{
		var matchingEmployees = await DemoDataService.FindEmployeesByNameAsync(request.UserInput, limitCount: 10, request.CancellationToken);

		return new AutosuggestDataProviderResult<EmployeeDto> { Data = matchingEmployees };
	}

	private async Task<EmployeeDto> ResolveAutosuggestItemFromValue(int? value)
	{
		if (value is null)
		{
			return null;
		}

		return await DemoDataService.GetEmployeeByIdAsync(value.Value);
	}
}

Initial suggestions #

You can provide initial suggestions to the user by setting the MinimumLength="0". This is useful when you want to display some suggestions to the user before he starts typing.

Selected employee ID:

API #

Parameters #

Name Type Description
AdditionalAttributes IReadOnlyDictionary<string, object> A collection of additional attributes that will be applied to the created element.
ChipTemplate RenderFragment Chip template.
ClearIcon IconBase Icon displayed in input on selection clear button when item is selected.
CssClass string Custom CSS class to render with wrapping div.
DataProvider AutosuggestDataProviderDelegate<TItem> Method (delegate) which provides data of the suggestions.
Delay int? Debounce delay in milliseconds.
DisplayName string Gets or sets the display name for this field.
This value is used when generating error messages when the input value fails to parse correctly.
EmptyTemplate RenderFragment Template to display when items are empty.
Enabled bool? When null (default), the Enabled value is received from cascading FormState. When value is false, input is rendered as disabled. To set multiple controls as disabled use HxFormState.
GenerateChip bool When true, HxChipGenerator is used to generate chip item(s). Default is true.
Hint string Hint to render after input as form-text.
HintTemplate RenderFragment Hint to render after input as form-text.
InputCssClass string Custom CSS class to render with the input element.
InputGroupEndTemplate RenderFragment Input-group at the end of the input.
Hides the search icon when used!
InputGroupEndText string Input-group at the end of the input.
Hides the search icon when used!
InputGroupStartTemplate RenderFragment Input-group at the beginning of the input.
InputGroupStartText string Input-group at the beginning of the input.
InputSize InputSize? Size of the input.
ItemFromValueResolver Func<TValue, Task<TItem>> Returns corresponding item for (selected) Value.
ItemTemplate RenderFragment<TItem> Template to display item. When not set, TextSelector is used.
Label string Label text.
LabelCssClass string Custom CSS class to render with the label.
LabelTemplate RenderFragment Label content.
LabelType LabelType? Label type.
MinimumLength int? Minimal number of characters to start suggesting.
Placeholder string Short hint displayed in the input field before the user enters a value.
SearchIcon IconBase Icon displayed in input when no item is selected.
Settings AutosuggestSettings Set of settings to be applied to the component instance (overrides HxAutosuggest.Defaults, overridden by individual parameters).
TextSelector Func<TItem, string> Selects text to display from item. When not set ToString() is used.
ValidationMessageMode ValidationMessageMode? Specifies how the validation message should be displayed.
Default is ValidationMessageMode.Regular, you can override application-wide default for all inputs in HxInputBase.Defaults.
Value TValue Value of the input. This should be used with two-way binding.
ValueChanged EventCallback<TValue> A callback that updates the bound value.
ValueExpression Expression<Func<TValue>> An expression that identifies the bound value.
ValueSelector Func<TItem, TValue> Selects value from item. Not required when TValue is same as TItem.

Methods #

Method Returns Description
FocusAsync() ValueTask Gives focus to the input element.

Static properties #

Property Type Description
Defaults AutosuggestSettings Application-wide defaults for the HxAutosuggest and derived components.

CSS variables #

Name Description Default
--hx-autosuggest-input-close-icon-opacity Opacity of the close icon. .25
--hx-autosuggest-item-highlighted-background-color When HxAutosuggest.HighlightFirstSuggestion is true, then the first item receives this background color. var(--bs-tertiary-bg)
--hx-autosuggest-dropdown-menu-height Maximum height of results dropdown menu. 300px
--hx-autosuggest-dropdown-menu-width Width of results dropdown menu. 100%
An unhandled error has occurred. Reload 🗙