@using System.ComponentModel.DataAnnotations @using RackPeek.Domain.Resources.SubResources @if (IsOpen) {
@(IsEdit ? "Modify Port" : "Add Port")
@foreach (var type in Nic.ValidNicTypes) { }
@if (IsEdit) { } else { }
} @code { [Parameter] public bool IsOpen { get; set; } [Parameter] public EventCallback IsOpenChanged { get; set; } [Parameter] public Port? Value { get; set; } [Parameter] public EventCallback OnSubmit { get; set; } [Parameter] public EventCallback OnDelete { get; set; } [Parameter] public string? TestIdPrefix { get; set; } private string BaseTestId => string.IsNullOrWhiteSpace(TestIdPrefix) ? "port-modal" : $"{TestIdPrefix}-port-modal"; private PortFormModel _model = new(); private bool IsEdit => Value is not null; protected override void OnParametersSet() { if (IsOpen) { _model = Value is null ? new PortFormModel() : new PortFormModel { Type = Value.Type, Speed = Value.Speed, Count = Value.Count }; } } private async Task HandleValidSubmit() { var port = new Port { Type = _model.Type, Speed = _model.Speed, Count = _model.Count }; await OnSubmit.InvokeAsync(port); await Close(); } private async Task HandleDelete() { if (Value is not null) { await OnDelete.InvokeAsync(Value); await Close(); } } private async Task Cancel() { await Close(); } private async Task Close() { _model = new PortFormModel(); await IsOpenChanged.InvokeAsync(false); } private class PortFormModel { [Required] public string? Type { get; set; } [Range(0, 400)] public double? Speed { get; set; } [Range(1, 256)] public int? Count { get; set; } } }