ant-design-blazor/components/cascader/Cascader.razor

67 lines
3.5 KiB
C#

@namespace AntDesign
@inherits AntInputComponentBase<string>
<div style="@Style">
<span class="ant-cascader-picker @_pickerSizeClass" tabindex="1" @onclick="InputOnToggle" @onblur="CascaderOnBlur" @onmouseover="InputOnMouseOver" @onmouseout="InputOnMouseOut">
<span class="ant-cascader-picker-label"></span>
<input autocomplete="off" tabindex="-1" placeholder="@PlaceHolder" class="ant-input ant-cascader-input @_inputSizeClass" readonly="@Readonly" type="text" value="@_displayText">
@if (string.IsNullOrWhiteSpace(Value) || !ShowClearIcon)
{
<Icon Type="down" Class="@($"ant-cascader-picker-arrow {(ToggleState ? "ant-cascader-picker-arrow-expand" : string.Empty)}")" />
}
else
{
<Icon Type="close-circle" Class="ant-cascader-picker-clear" OnClick="ClearSelected" StopPropagation />
}
</span>
@if (ToggleState && _nodelist != null && _nodelist.Any())
{
<div class="ant-cascader-menus ant-cascader-menus-placement-bottomLeft" tabindex="-1" @onblur="CascaderOnBlur">
<div @onmouseover="NodesOnMouseOver" @onmouseout="NodesOnMouseOut">
<ul class="ant-cascader-menu">
@foreach (CascaderNode nd in _nodelist)
{
bool isActive = _renderNodes.Where(n => n.Label == nd.Label).Any();
string activeClass = isActive ? "ant-cascader-menu-item-active" : string.Empty;
<li class="ant-cascader-menu-item ant-cascader-menu-item-expand @activeClass @(nd.Disabled ? "ant-cascader-menu-item-disabled" : string.Empty)" title="@nd.Label" role="menuitem"
@onclick="@(e => NodeOnClick(nd))" @onmouseover="@(e => NodeOnMouseOver(nd))">
@nd.Label
@if (nd.HasChildren)
{
<span class="ant-cascader-menu-item-expand-icon">
<Icon Type="right" />
</span>
}
</li>
}
</ul>
@foreach (CascaderNode node in _renderNodes)
{
if (node.HasChildren)
{
<ul class="ant-cascader-menu">
@foreach (CascaderNode m in node.Children)
{
bool isActive = _renderNodes.Where(n => n.Label == m.Label).Any();
string activeClass = isActive ? "ant-cascader-menu-item-active" : string.Empty;
<li class="ant-cascader-menu-item ant-cascader-menu-item-expand @activeClass @(m.Disabled ? "ant-cascader-menu-item-disabled" : string.Empty)" title="@m.Label" role="menuitem"
@onclick="@(e => NodeOnClick(m))" @onmouseover="@(e => NodeOnMouseOver(m))">
@m.Label
@if (m.HasChildren)
{
<span class="ant-cascader-menu-item-expand-icon">
<Icon Type="right" />
</span>
}
</li>
}
</ul>
}
}
</div>
</div>
}
</div>