@using System.Globalization
@code {
///
/// Actual bind value
///
[Parameter]
public double Value { get; set; }
///
/// Event for value changed
///
[Parameter]
public EventCallback ValueChanged { get; set; }
///
/// Number of decimal places to display
///
[Parameter]
public int Decimals { get; set; } = 3;
///
/// Step increment
///
[Parameter]
public double Step { get; set; } = 0.001;
///
/// Minimum value
///
[Parameter]
public double? Min { get; set; }
///
/// Maximum value
///
[Parameter]
public double? 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 (double.TryParse(e.Value?.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out var parsed))
{
var rounded = Math.Round(parsed, Decimals);
Value = rounded;
await ValueChanged.InvokeAsync(rounded);
}
}
}