@using System.Globalization @code { /// /// Actual bind value /// [Parameter] public decimal Value { get; set; } /// /// Event for value changed /// [Parameter] public EventCallback ValueChanged { get; set; } /// /// Numero di cifre decimali gestite /// [Parameter] public int Decimals { get; set; } = 3; /// /// Step incremento /// [Parameter] public decimal Step { get; set; } = 0.001M; /// /// Valore minimo ammesso /// [Parameter] public decimal? Min { get; set; } /// /// Valore massimo ammesso /// [Parameter] public decimal? Max { get; set; } /// /// CssClass for input component /// [Parameter] public string CssClass { get; set; } = string.Empty; private string FormattedValue => Value.ToString($"F{Decimals}", CultureInfo.InvariantCulture); private async Task OnChange(ChangeEventArgs e) { if (decimal.TryParse(e.Value?.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out var parsed)) { var rounded = Math.Round(parsed, Decimals); Value = rounded; await ValueChanged.InvokeAsync(rounded); } } }