using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using MudBlazor; using MudBlazor.Utilities; namespace Lantean.QBTMud.Components.UI { public partial class CustomNavLink { [Parameter] public bool Active { get; set; } [Parameter] public bool Disabled { get; set; } [Parameter] public string? Class { get; set; } [Parameter] public bool DisableRipple { get; set; } /// /// Icon to use if set. /// [Parameter] public string? Icon { get; set; } /// /// The color of the icon. It supports the theme colors, default value uses the themes drawer icon color. /// [Parameter] public Color IconColor { get; set; } = Color.Default; [Parameter] public string? Target { get; set; } [Parameter] public EventCallback OnClick { get; set; } [Parameter] public EventCallback OnLongPress { get; set; } [Parameter] public EventCallback OnContextMenu { get; set; } [Parameter] public RenderFragment? ChildContent { get; set; } [Parameter] public RenderFragment? ContextMenu { get; set; } protected string Classname => new CssBuilder("mud-nav-item") .AddClass($"mud-ripple", !DisableRipple && !Disabled) .AddClass(Class) .Build(); protected string LinkClassname => new CssBuilder("mud-nav-link") .AddClass($"mud-nav-link-disabled", Disabled) .AddClass("active", Active) .AddClass("unselectable", OnLongPress.HasDelegate || OnContextMenu.HasDelegate) .Build(); protected string IconClassname => new CssBuilder("mud-nav-link-icon") .AddClass($"mud-nav-link-icon-default", IconColor == Color.Default) .Build(); protected async Task OnClickHandler(MouseEventArgs ev) { if (Disabled) { return; } await OnClick.InvokeAsync(ev); } protected Task OnLongPressInternal(LongPressEventArgs e) { return OnLongPress.InvokeAsync(e); } protected Task OnContextMenuInternal(MouseEventArgs e) { return OnContextMenu.InvokeAsync(e); } } }