mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-12-05 13:37:35 +08:00
ea061850ec
* fix(module:select): multiple select & tags & tokenization fix performance optimizations add PrefixIcon keep focus on selected item * fix(module:select): on clear button make first active * docs(module:select): reflect changes
143 lines
8.6 KiB
C#
143 lines
8.6 KiB
C#
@using AntDesign.Internal
|
|
@using AntDesign.Select.Internal
|
|
@namespace AntDesign
|
|
@inherits AntInputComponentBase<TItemValue>
|
|
@typeparam TItemValue
|
|
@typeparam TItem
|
|
|
|
<CascadingValue Value="this" IsFixed="true">
|
|
<CascadingValue Value=@("ant-select-dropdown") Name="PrefixCls">
|
|
<div class="@ClassMapper.Class" style="@Style" id="@Id" tabindex="-1" @ref="Ref">
|
|
<OverlayTrigger @ref="@_dropDown"
|
|
Visible="Open"
|
|
Disabled="Disabled"
|
|
Trigger="new[] { TriggerType.Click }"
|
|
HiddenMode
|
|
OnMouseEnter="@(() => { OnMouseEnter?.Invoke(); })"
|
|
OnMouseLeave="@(() => { OnMouseLeave?.Invoke(); })"
|
|
OnVisibleChange="@OnOverlayVisibleChangeAsync"
|
|
PopupContainerSelector="@PopupContainerSelector"
|
|
OverlayEnterCls="slide-up-enter slide-up-enter-active slide-up"
|
|
OverlayLeaveCls="slide-up-leave slide-up-leave-active slide-up">
|
|
<Overlay>
|
|
<div style="@_dropdownStyle">
|
|
@if (SelectOptions != null)
|
|
{
|
|
<div class="" style="max-height: @PopupContainerMaxHeight; overflow-y: auto;">
|
|
<div>
|
|
<div class="" role="listbox" style="display: flex; flex-direction: column;">
|
|
@if (CustomTagSelectOptionItem != null)
|
|
{
|
|
<CascadingValue Value="@ItemTemplate" Name="ItemTemplate">
|
|
<CascadingValue Value="@CustomTagSelectOptionItem" Name="Model">
|
|
<SelectOption
|
|
@key="@CustomTagSelectOptionItem.InternalId"
|
|
TItemValue="TItemValue"
|
|
TItem="TItem">
|
|
</SelectOption>
|
|
</CascadingValue>
|
|
</CascadingValue>
|
|
}
|
|
@SelectOptions
|
|
@if (AddedTags != null)
|
|
{
|
|
foreach (var selectOption in AddedTags)
|
|
{
|
|
<CascadingValue Value="@ItemTemplate" Name="ItemTemplate">
|
|
<CascadingValue Value="@selectOption" Name="Model">
|
|
<SelectOption
|
|
@key="@selectOption.InternalId"
|
|
TItemValue="TItemValue"
|
|
TItem="TItem">
|
|
</SelectOption>
|
|
</CascadingValue>
|
|
</CascadingValue>
|
|
}
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
else if (SelectOptions == null)
|
|
{
|
|
<div class="" style="max-height: @PopupContainerMaxHeight; overflow-y: auto;">
|
|
<div>
|
|
<div class="" role="listbox" style="display: flex; flex-direction: column;">
|
|
@{
|
|
@if (!IsGroupingEnabled)
|
|
{
|
|
foreach (var selectOption in SortedSelectOptionItems)
|
|
{
|
|
<CascadingValue Value="@ItemTemplate" Name="ItemTemplate">
|
|
<CascadingValue Value="@selectOption.InternalId" Name="InternalId">
|
|
<SelectOption
|
|
@key="@selectOption.InternalId"
|
|
TItemValue="TItemValue"
|
|
TItem="TItem">
|
|
</SelectOption>
|
|
</CascadingValue>
|
|
</CascadingValue>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<CascadingValue Value="@ItemTemplate" Name="ItemTemplate">
|
|
<SelectOptionGroup TItemValue="TItemValue" TItem="TItem"></SelectOptionGroup>
|
|
</CascadingValue>
|
|
}
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
@if (AllOptionsHidden())
|
|
{
|
|
<div role="listbox" id="@(Id)_list" class="@ClassPrefix-item-empty">
|
|
@if (NotFoundContent != null)
|
|
{
|
|
@NotFoundContent
|
|
}
|
|
else
|
|
{
|
|
<Empty Simple Small/>
|
|
}
|
|
</div>
|
|
}
|
|
|
|
@if (DropdownRender != null)
|
|
{
|
|
@DropdownRender(default)
|
|
}
|
|
</div>
|
|
</Overlay>
|
|
<Unbound>
|
|
<CascadingValue Value="this" Name=@("ParentSelect") IsFixed="true">
|
|
<CascadingValue Value="@LabelTemplate" Name="ParentLabelTemplate">
|
|
<CascadingValue Value="@ShowSearchIcon" Name="ShowSearchIcon">
|
|
<CascadingValue Value="@ShowArrowIcon" Name="ShowArrowIcon">
|
|
<SelectContent Prefix="@ClassPrefix"
|
|
RefBack="@context"
|
|
@ref="_selectContent"
|
|
TItemValue="TItemValue"
|
|
TItem="TItem"
|
|
SearchValue="@_searchValue"
|
|
IsOverlayShow="@_dropDown.IsOverlayShow()"
|
|
OnInput="@OnInputAsync"
|
|
OnKeyUp="@OnKeyUpAsync"
|
|
OnKeyDown="@OnKeyDownAsync"
|
|
OnFocus="@OnInputFocusAsync"
|
|
OnBlur="@OnInputBlurAsync"
|
|
OnClearClick="@OnInputClearClickAsync"
|
|
OnRemoveSelected="@OnRemoveSelectedAsync"
|
|
Placeholder="@Placeholder"
|
|
ShowPlaceholder="@ShowPlaceholder"/>
|
|
</CascadingValue>
|
|
</CascadingValue>
|
|
</CascadingValue>
|
|
</CascadingValue>
|
|
</Unbound>
|
|
</OverlayTrigger>
|
|
</div>
|
|
</CascadingValue>
|
|
</CascadingValue>
|