@using ErsatzTV.Application.ProgramSchedules @using NaturalSort.Extension @implements IDisposable @inject IMediator Mediator
@foreach (ProgramScheduleViewModel schedule in _schedules) { @schedule.Name } Cancel Add To Schedule
@code { private readonly CancellationTokenSource _cts = new(); [CascadingParameter] IMudDialogInstance MudDialog { get; set; } [Parameter] public string EntityType { get; set; } [Parameter] public string EntityName { get; set; } [Parameter] public string DetailText { get; set; } [Parameter] public string DetailHighlight { get; set; } private List _schedules; private ProgramScheduleViewModel _selectedSchedule; public void Dispose() { _cts.Cancel(); _cts.Dispose(); } protected override async Task OnParametersSetAsync() => _schedules = await Mediator.Send(new GetAllProgramSchedules(), _cts.Token) .Map(list => list.OrderBy(vm => vm.Name, new NaturalSortComparer(StringComparison.CurrentCultureIgnoreCase)).ToList()); private string FormatText() => $"Select the schedule to add the {EntityType} {EntityName}"; private void Submit() => MudDialog.Close(DialogResult.Ok(_selectedSchedule)); private void Cancel() => MudDialog.Cancel(); private void OnKeyDown(KeyboardEventArgs e) { if (e.Code is "Enter" or "NumpadEnter") { Submit(); } } }