Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,140 +1,143 @@
@namespace Bit.BlazorUI
@inherits BitComponentBase
@typeparam TItem

<CascadingValue Value="this" IsFixed="true">
<div style="display:none" hidden>@(Options ?? ChildContent)</div>
</CascadingValue>

@{
var _selectedItem = Sticky ? SelectedItem : null;
}
<div @ref="RootElement" @attributes="HtmlAttributes"
id="@_Id"
style="@StyleBuilder.Value"
class="@ClassBuilder.Value"
dir="@Dir?.ToString().ToLower()">
<button @onclick="() => HandleOnHeaderClick(_selectedItem)"
type="button"
tabindex="@(IsEnabled ? 0 : -1)"
aria-label="@AriaLabel"
aria-hidden="@AriaHidden"
aria-describedby="@AriaDescription"
style="@GetStyle(_selectedItem);@Styles?.OperatorButton"
class="bit-mnb-opb @GetClass(_selectedItem) @Classes?.OperatorButton">
@if (Sticky)
{
var template = GetTemplate(_selectedItem);
if (template is not null)
{
@template(_selectedItem!)
}
else if (ItemTemplate is not null)
{
@ItemTemplate(_selectedItem)
}
else
{
var icon = GetIcon(_selectedItem);
@if (icon is not null)
{
<i style="@Styles?.OperatorButtonIcon" class="@icon.GetCssClasses() @Classes?.OperatorButtonIcon" />
}
<span style="@Styles?.OperatorButtonText" class="bit-mnb-btx @Classes?.OperatorButtonText">
@GetText(_selectedItem)
</span>
}
}
else
{
var headerIcon = BitIconInfo.From(Icon, IconName);
@if (HeaderTemplate is not null)
{
@HeaderTemplate
}
else
{
@if (headerIcon is not null)
{
<i style="@Styles?.Icon" class="@headerIcon.GetCssClasses() @Classes?.Icon" />
}

@if (Text.HasValue())
{
<span style="@Styles?.Text" class="bit-mnb-btx @Classes?.Text">@Text</span>
}
}
}

@if (Split is false)
{
var chevronIcon = BitIconInfo.From(ChevronDownIcon, ChevronDownIconName ?? "ChevronRight bit-ico-r90");
<i style="@Styles?.ChevronDown" class="@chevronIcon?.GetCssClasses() @Classes?.ChevronDown" />
}
</button>

@if (Split)
{
<span style="@Styles?.Separator" class="bit-mnb-spb @Classes?.Separator"></span>

<button @onclick="OpenCallout"
type="button"
tabindex="@(IsEnabled ? 0 : -1)"
style="@Styles?.ChevronDownButton"
class="bit-mnb-chb @Classes?.ChevronDownButton">
@{
var chevronIcon = BitIconInfo.From(ChevronDownIcon, ChevronDownIconName ?? "ChevronRight bit-ico-r90");
}
<i style="@Styles?.ChevronDown" class="@chevronIcon?.GetCssClasses() @Classes?.ChevronDown" />
</button>
}
@namespace Bit.BlazorUI
@inherits BitComponentBase
@typeparam TItem

<CascadingValue Value="this" IsFixed="true">
<div style="display:none" hidden>@(Options ?? ChildContent)</div>
</CascadingValue>

@{
var _selectedItem = Sticky ? SelectedItem : null;
}
<div @ref="RootElement" @attributes="HtmlAttributes"
id="@_Id"
style="@StyleBuilder.Value"
class="@ClassBuilder.Value"
dir="@Dir?.ToString().ToLower()">
<button @onclick="() => HandleOnHeaderClick(_selectedItem)"
type="button"
tabindex="@(IsEnabled ? 0 : -1)"
aria-label="@AriaLabel"
aria-hidden="@AriaHidden"
aria-describedby="@AriaDescription"
style="@GetStyle(_selectedItem);@Styles?.OperatorButton"
class="bit-mnb-opb @GetClass(_selectedItem) @Classes?.OperatorButton"
aria-pressed="@(Toggle && Split ? IsToggled.ToString().ToLower() : null)">
@if (Sticky)
{
var template = GetTemplate(_selectedItem);
if (template is not null)
{
@template(_selectedItem!)
}
else if (ItemTemplate is not null)
{
@ItemTemplate(_selectedItem)
}
else
{
var icon = GetIcon(_selectedItem);
@if (NoIcon is false && icon is not null)
{
<i style="@Styles?.OperatorButtonIcon" class="@icon.GetCssClasses() @Classes?.OperatorButtonIcon" />
Comment thread
msynk marked this conversation as resolved.
}
<span style="@Styles?.OperatorButtonText" class="bit-mnb-btx @Classes?.OperatorButtonText">
@GetText(_selectedItem)
</span>
}
}
else
{
var headerIcon = BitIconInfo.From(Icon, IconName);
@if (HeaderTemplate is not null)
{
@HeaderTemplate
}
else
{
@if (NoIcon is false && headerIcon is not null)
{
<i style="@Styles?.Icon" class="@headerIcon.GetCssClasses() @Classes?.Icon" />
}

@if (Text.HasValue())
{
<span style="@Styles?.Text" class="bit-mnb-btx @Classes?.Text">@Text</span>
}
}
}

@if (Split is false)
{
var chevronIcon = BitIconInfo.From(ChevronDownIcon, ChevronDownIconName ?? "ChevronRight bit-ico-r90");
<i style="@Styles?.ChevronDown" class="@chevronIcon?.GetCssClasses() @Classes?.ChevronDown" />
}
</button>

@if (Split)
{
<span style="@Styles?.Separator" class="bit-mnb-spb @Classes?.Separator"></span>

<button @onclick="OpenCallout"
type="button"
tabindex="@(IsEnabled ? 0 : -1)"
style="@Styles?.ChevronDownButton"
class="bit-mnb-chb @Classes?.ChevronDownButton">
@{
var chevronIcon = BitIconInfo.From(ChevronDownIcon, ChevronDownIconName ?? "ChevronRight bit-ico-r90");
}
<i style="@Styles?.ChevronDown" class="@chevronIcon?.GetCssClasses() @Classes?.ChevronDown" />
</button>
}
</div>

<div @onclick="CloseCallout" @onclick:stopPropagation
style="display:@(IsOpen ? "block" : "none");@Styles?.Overlay"
<div @onclick="CloseCallout" @onclick:stopPropagation
style="display:@(IsOpen ? "block" : "none");@Styles?.Overlay"
id="@_overlayId"
class="bit-mnb-ovl @Classes?.Overlay"></div>
class="bit-mnb-ovl @Classes?.Overlay"></div>

<div id="@_calloutId"
style="@Styles?.Callout"
class="bit-mnb-cal @GetCalloutCss() @Classes?.Callout">
<ul role="presentation" style="@Styles?.CalloutContainer" class="bit-mnb-cul @Classes?.CalloutContainer">
Comment thread
msynk marked this conversation as resolved.
@foreach (var (item, idx) in _items.Select((item, idx) => (item, idx)))
{
var isSelected = item == SelectedItem;
if (Sticky && isSelected) continue;

<div id="@_calloutId"
style="@Styles?.Callout"
class="bit-mnb-cal @Classes?.Callout">
<ul role="presentation" style="@Styles?.CalloutContainer" class="bit-mnb-cul @Classes?.CalloutContainer">
@foreach (var (item, idx) in _items.Select((item, idx) => (item, idx)))
{
if (Sticky && item == SelectedItem) continue;

var template = GetTemplate(item);
var isEnabled = GetIsEnabled(item);
<li role="presentation" @key="@GetItemKey(item, idx.ToString())" style="@Styles?.ItemWrapper" class="@Classes?.ItemWrapper">
<button @onclick="() => HandleOnItemClick(item)" @onclick:stopPropagation
role="menuitem"
type="@_buttonType.GetValue()"
tabindex="@(isEnabled ? 0 : -1)"
disabled="@(isEnabled is false)"
aria-disabled="@(isEnabled is false)"
style="@GetStyle(item);@Styles?.ItemButton"
class="bit-mnb-itm @GetClass(item) @Classes?.ItemButton">
@if (template is not null)
{
@template(item)
}
else if (ItemTemplate is not null)
{
@ItemTemplate(item)
}
else
{
var itemIcon = GetIcon(item);
@if (itemIcon is not null)
{
<i style="@Styles?.ItemIcon" class="bit-mnb-iic @itemIcon.GetCssClasses() @Classes?.ItemIcon" />
}
<span style="@Styles?.ItemText" class="bit-mnb-btx @Classes?.ItemText">
@GetText(item)
</span>
}
</button>
</li>
}
</ul>
</div>
var template = GetTemplate(item);
var isEnabled = GetIsEnabled(item);

<li role="presentation" @key="@GetItemKey(item, idx.ToString())" style="@Styles?.ItemWrapper" class="@Classes?.ItemWrapper">
Comment thread
msynk marked this conversation as resolved.
<button @onclick="() => HandleOnItemClick(item)" @onclick:stopPropagation
role="menuitem"
type="@_buttonType.GetValue()"
tabindex="@(isEnabled ? 0 : -1)"
disabled="@(isEnabled is false)"
aria-disabled="@(isEnabled is false)"
style="@GetStyle(item);@Styles?.ItemButton"
class="bit-mnb-itm @GetClass(item) @Classes?.ItemButton">
@if (template is not null)
{
@template(item)
}
else if (ItemTemplate is not null)
{
@ItemTemplate(item)
}
else
{
var itemIcon = GetIcon(item);
@if (itemIcon is not null)
{
<i style="@Styles?.ItemIcon" class="bit-mnb-iic @itemIcon.GetCssClasses() @Classes?.ItemIcon" />
}
<span style="@Styles?.ItemText" class="bit-mnb-btx @Classes?.ItemText">
@GetText(item)
</span>
}
</button>
</li>
}
</ul>
</div>
Loading
Loading