@using System.ComponentModel.DataAnnotations @using RackPeek.Domain.Resources.Models @if (IsOpen) {
@(IsEdit ? "Modify RAM" : "Add RAM")
} @code { [Parameter] public bool IsOpen { get; set; } [Parameter] public EventCallback IsOpenChanged { get; set; } [Parameter] public Ram? Value { get; set; } [Parameter] public EventCallback OnSubmit { get; set; } private RamFormModel _model = new(); private bool IsEdit => Value is not null; protected override void OnParametersSet() { if (IsOpen) { _model = Value is null ? new RamFormModel() : new RamFormModel { Size = Value.Size, Mts = Value.Mts }; } } private async Task HandleValidSubmit() { var ram = new Ram { Size = _model.Size, Mts = _model.Mts }; await OnSubmit.InvokeAsync(ram); await Close(); } private async Task Cancel() { await Close(); } private async Task Close() { _model = new RamFormModel(); await IsOpenChanged.InvokeAsync(false); } private class RamFormModel { // Both are intentionally nullable and optional [Range(1, 1024)] public int? Size { get; set; } [Range(1, 10000)] public int? Mts { get; set; } } }