@using System.ComponentModel.DataAnnotations @using RackPeek.Domain.Resources.SubResources @if (IsOpen) {
@(IsEdit ? "Modify Drive" : "Add Drive")
@foreach (var type in Drive.ValidDriveTypes) { }
@if (IsEdit) { } else { }
} @code { [Parameter] public bool IsOpen { get; set; } [Parameter] public EventCallback IsOpenChanged { get; set; } [Parameter] public Drive? 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) ? "drive-modal" : $"{TestIdPrefix}-drive-modal"; private DriveFormModel _model = new(); private bool IsEdit => Value is not null; protected override void OnParametersSet() { if (IsOpen) { _model = Value is null ? new DriveFormModel() : new DriveFormModel { Type = Value.Type, Size = Value.Size }; } } private async Task HandleValidSubmit() { var drive = new Drive { Type = _model.Type, Size = _model.Size }; await OnSubmit.InvokeAsync(drive); 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 DriveFormModel(); await IsOpenChanged.InvokeAsync(false); } private class DriveFormModel { [Required] public string? Type { get; set; } [Range(1, 1024 * 1024)] public int? Size { get; set; } } }