You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
5.2 KiB
96 lines
5.2 KiB
2 years ago
|
@namespace Connected.Components
|
||
|
@inherits InputBase<T>
|
||
|
@typeparam T
|
||
|
|
||
|
<CascadingValue Name="SubscribeToParentForm" Value="false" IsFixed="true">
|
||
|
<div class="@AutocompleteClassList">
|
||
|
<InputControl Label="@Label" Variant="@Variant" HelperText="@HelperText" HelperTextOnFocus="@HelperTextOnFocus" FullWidth="@FullWidth" Margin="@Margin" Class="@ClassList()" Style="@Style"
|
||
|
Error="@Error" ErrorText="@ErrorText" Disabled="@Disabled" @onclick="@ToggleMenu" Required="@Required" ForId="@FieldId">
|
||
|
<InputContent>
|
||
|
<Input @ref="_elementReference" @key="_elementKey" InputType="InputType.Text"
|
||
|
Class="select-input" Margin="@Margin"
|
||
|
Variant="@Variant"
|
||
|
TextUpdateSuppression="@TextUpdateSuppression"
|
||
|
Value="@Text" DisableUnderLine="@DisableUnderLine"
|
||
|
Disabled="@Disabled" ReadOnly="@ReadOnly" Error="@Error"
|
||
|
OnAdornmentClick="@OnAdornmentClick" AdornmentIcon="@CurrentIcon" Adornment="@Adornment" AdornmentColor="@AdornmentColor" IconSize="@IconSize" AdornmentText="@AdornmentText"
|
||
|
Clearable="@Clearable" OnClearButtonClick="@OnClearButtonClick"
|
||
|
@attributes="UserAttributes"
|
||
|
TextChanged="OnTextChanged" OnBlur="OnInputBlurred"
|
||
|
OnKeyDown="@this.OnInputKeyDown"
|
||
|
OnKeyUp="@this.OnInputKeyUp" autocomplete=@("disabled-"+Guid.NewGuid()) KeyUpPreventDefault="KeyUpPreventDefault"
|
||
|
Placeholder="@Placeholder" Immediate="true"
|
||
|
InputMode="@InputMode" Pattern="@Pattern"
|
||
|
T="string" />
|
||
|
|
||
|
@if (ShowProgressIndicator && IsLoading)
|
||
|
{
|
||
|
@if (ProgressIndicatorTemplate is not null)
|
||
|
{
|
||
|
@ProgressIndicatorTemplate
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
<div class="@CircularProgressClassList">
|
||
|
<ProgressCircular Color="ProgressIndicatorColor" Indeterminate="true" Size="Size.Small"/>
|
||
|
</div>
|
||
|
}
|
||
|
}
|
||
|
|
||
|
<Popover Open="@IsOpen" MaxHeight="@MaxHeight" AnchorOrigin="@AnchorOrigin" TransformOrigin="@TransformOrigin" Class="@PopoverClass" RelativeWidth="true">
|
||
|
@if(ProgressIndicatorInPopoverTemplate != null && IsLoading)
|
||
|
{
|
||
|
@ProgressIndicatorInPopoverTemplate
|
||
|
}
|
||
|
else if (_items != null && _items.Length != 0)
|
||
|
{
|
||
|
<List Clickable="true" Dense="@Dense">
|
||
|
@for (var index = 0; index < _items.Length; index++)
|
||
|
{
|
||
|
var item = _items[index];
|
||
|
bool is_selected = index == _selectedListItemIndex;
|
||
|
bool is_disabled = !_enabledItemIndices.Contains(index);
|
||
|
<ListItem @key="@item" id="@GetListItemId(index)" Disabled="@(is_disabled)" OnClick="@(async() => await ListItemOnClick(item))" OnClickHandlerPreventDefault="true" Class="@(is_selected ? "selected-item primary-text primary-hover" : "")">
|
||
|
@if (ItemTemplate == null)
|
||
|
{
|
||
|
@GetItemString(item)
|
||
|
}
|
||
|
else if (is_disabled && ItemDisabledTemplate is not null)
|
||
|
{
|
||
|
@ItemDisabledTemplate(item)
|
||
|
}
|
||
|
else if (is_selected)
|
||
|
{
|
||
|
@if (ItemSelectedTemplate is null)
|
||
|
@ItemTemplate(item)
|
||
|
else
|
||
|
@ItemSelectedTemplate(item)
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
@ItemTemplate(item)
|
||
|
}
|
||
|
</ListItem>
|
||
|
}
|
||
|
@if (MoreItemsTemplate is not null && _itemsReturned > MaxItems)
|
||
|
{
|
||
|
<div class="pa-1">
|
||
|
@MoreItemsTemplate
|
||
|
</div>
|
||
|
}
|
||
|
</List>
|
||
|
}
|
||
|
else if (NoItemsTemplate is not null)
|
||
|
{
|
||
|
<div class="pa-1">
|
||
|
@NoItemsTemplate
|
||
|
</div>
|
||
|
}
|
||
|
</Popover>
|
||
|
</InputContent>
|
||
|
</InputControl>
|
||
|
</div>
|
||
|
</CascadingValue>
|
||
|
|
||
|
<Overlay Visible="IsOpen" OnClick="@ToggleMenu" @ontouchstart="@ToggleMenu" LockScroll="false" />
|