@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);
}
}
}