Files
btcpayserver/BTCPayServer.Abstractions/TagHelpers/LayoutMenuItemTagHelper.cs

23 lines
922 B
C#

using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace BTCPayServer.Abstractions.TagHelpers;
[HtmlTargetElement(Attributes = "[layout-menu-item]")]
public class LayoutMenuItemTagHelper : TagHelper
{
private const string ActivePageKey = "ActivePage";
private const string ActiveClass = "active";
[ViewContext]
public ViewContext ViewContext { get; set; }
public string LayoutMenuItem { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.Attributes.Add("id", $"menu-item-{LayoutMenuItem}");
var viewData = ViewContext.ViewData;
var match = viewData.ContainsKey(ActivePageKey) && viewData[ActivePageKey]?.ToString() == LayoutMenuItem;
output.Attributes.Add("class", $"menu-item nav-link {(match ? ActiveClass : "")}");
}
}