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 EC_compressUpdated { get; set; } public List? 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 /// /// Verifica ruolo utente /// /// /// 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 } }