using DnsmasqWebUI.Models.Client.Abstractions; namespace DnsmasqWebUI.Models.Client; /// /// Min/max bounded integer field with optional clamping on set. /// public sealed class ClientSettingsMinMaxField : ClientSettingsField { public int Min { get; } public int Max { get; } public string Unit { get; } public bool AllowClamp { get; } public ClientSettingsMinMaxField(string displayName, int min, int max, string unit = "seconds", bool allowClamp = true) : base(displayName) { Min = min; Max = max; Unit = unit; AllowClamp = allowClamp; } public override string? Validate(int value) { if (value < Min || value > Max) return $"{DisplayName} must be between {Min} and {Max} {Unit}. You entered {value}."; return null; } protected override int CoerceValue(int value) => AllowClamp ? Math.Clamp(value, Min, Max) : value; }