AcaMate_Web/Program/Views/Academy/Common/TopNavAcademy.razor.cs
2025-07-03 21:16:55 +09:00

62 lines
1.8 KiB
C#

using System.ComponentModel;
using Front.Program.ViewModels;
using Front.Program.Services;
using Microsoft.AspNetCore.Components;
using System.Net.Http.Json;
using System.Runtime.InteropServices.JavaScript;
using System.Text.Json;
using Front.Program.Models;
namespace Front.Program.Views.Academy.Common;
public partial class TopNavAcademy : ComponentBase, IDisposable
{
[Inject] UserStateService UserStateService { get; set; } = default!;
[Inject] NavigationManager NavigationManager { get; set; } = default!;
protected bool isOpen = false;
protected bool isAcademyDropdownOpen = false;
// 계산된 속성으로 변경
protected Models.SimpleAcademy[] academyItems => UserStateService.academyItems;
protected string currentAcademyName => UserStateService.CurrentAcademy?.name ?? "학원을 선택하세요";
protected override void OnInitialized()
{
UserStateService.PropertyChanged += OnUserStateServicePropertyChanged;
}
public void Dispose()
{
UserStateService.PropertyChanged -= OnUserStateServicePropertyChanged;
}
private void OnUserStateServicePropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(UserStateService.CurrentAcademy))
{
StateHasChanged();
}
}
protected void ToggleAcademyDropdown() {
isAcademyDropdownOpen = !isAcademyDropdownOpen;
}
private void SelectAcademy(SimpleAcademy academy)
{
UserStateService.CurrentAcademy = academy; // 현재 선택된 학원 업데이트
isAcademyDropdownOpen = false;
NavigationManager.NavigateTo($"/am/main?bid={academy.bid}");
}
private void OnClickOutside()
{
if (isAcademyDropdownOpen) isAcademyDropdownOpen = false;
StateHasChanged();
}
}