Files
2026-02-25 11:41:19 +01:00

103 lines
2.4 KiB
C#

using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Mvc.RazorPages;
using MP.SPEC.Data;
namespace MP.SPEC.Shared
{
public partial class NavMenu : IDisposable
{
#region Public Properties
[Parameter]
public EventCallback<bool> EC_compressUpdated { get; set; }
public List<MP.Data.DbModels.LinkMenuModel>? ElencoLink
{
get => MsgService.ElencoLink;
set => MsgService.ElencoLink = value;
}
#endregion Public Properties
#region Public Methods
public void Dispose()
{
MService.EA_PageUpdated -= OnPageUpdate;
}
public void OnPageUpdate()
{
InvokeAsync(() =>
{
StateHasChanged();
});
}
#endregion Public Methods
#region Protected Properties
protected string hideText { get => showText ? "" : "invisible"; }
[Inject]
protected MsgServiceSpec MService { get; set; } = null!;
[Inject]
protected MsgServiceSpec MsgService { get; set; } = null!;
protected bool showText { get; set; } = true;
#endregion Protected Properties
#region Protected Methods
/// <summary>
/// Verifica ruolo utente
/// </summary>
/// <param name="Ruolo"></param>
/// <returns></returns>
protected bool HasRole(string Ruolo)
{
return MsgService.HasRole(Ruolo);
}
protected override void OnInitialized()
{
ElencoLink = MDService.ElencoLink();
MService.EA_PageUpdated += OnPageUpdate;
}
protected void ToggleCompress()
{
showText = !showText;
EC_compressUpdated.InvokeAsync(showText);
}
#endregion Protected Methods
#region Private Fields
private bool collapseNavMenu = true;
private bool onlyIcon = false;
#endregion Private Fields
#region Private Properties
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private string? TextCss => onlyIcon ? "d-none" : "";
#endregion Private Properties
#region Private Methods
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
#endregion Private Methods
}
}