diff --git a/frontend/src/Components/Form/NumberInput.js b/frontend/src/Components/Form/NumberInput.js index 454aad997..cac274d95 100644 --- a/frontend/src/Components/Form/NumberInput.js +++ b/frontend/src/Components/Form/NumberInput.js @@ -41,7 +41,7 @@ class NumberInput extends Component { componentDidUpdate(prevProps, prevState) { const { value } = this.props; - if (value !== prevProps.value && !this.state.isFocused) { + if (!isNaN(value) && value !== prevProps.value && !this.state.isFocused) { this.setState({ value: value == null ? '' : value.toString() }); diff --git a/frontend/src/Helpers/Props/inputTypes.js b/frontend/src/Helpers/Props/inputTypes.js index d26d08616..6c4564341 100644 --- a/frontend/src/Helpers/Props/inputTypes.js +++ b/frontend/src/Helpers/Props/inputTypes.js @@ -10,6 +10,7 @@ export const INFO = 'info'; export const MOVIE_MONITORED_SELECT = 'movieMonitoredSelect'; export const CATEGORY_SELECT = 'newznabCategorySelect'; export const DOWNLOAD_CLIENT_SELECT = 'downloadClientSelect'; +export const FLOAT = 'float'; export const NUMBER = 'number'; export const OAUTH = 'oauth'; export const PASSWORD = 'password'; @@ -35,6 +36,7 @@ export const all = [ INFO, MOVIE_MONITORED_SELECT, CATEGORY_SELECT, + FLOAT, NUMBER, OAUTH, PASSWORD, diff --git a/src/Prowlarr.Http/ClientSchema/Field.cs b/src/Prowlarr.Http/ClientSchema/Field.cs index 0ef510ca6..7ceed1ae9 100644 --- a/src/Prowlarr.Http/ClientSchema/Field.cs +++ b/src/Prowlarr.Http/ClientSchema/Field.cs @@ -21,6 +21,7 @@ namespace Prowlarr.Http.ClientSchema public string Section { get; set; } public string Hidden { get; set; } public string Placeholder { get; set; } + public bool IsFloat { get; set; } public Field Clone() { diff --git a/src/Prowlarr.Http/ClientSchema/SchemaBuilder.cs b/src/Prowlarr.Http/ClientSchema/SchemaBuilder.cs index a6866af52..171c9db04 100644 --- a/src/Prowlarr.Http/ClientSchema/SchemaBuilder.cs +++ b/src/Prowlarr.Http/ClientSchema/SchemaBuilder.cs @@ -125,6 +125,11 @@ namespace Prowlarr.Http.ClientSchema field.Hidden = fieldAttribute.Hidden.ToString().FirstCharToLower(); } + if (fieldAttribute.Type is FieldType.Number && propertyInfo.PropertyType == typeof(double)) + { + field.IsFloat = true; + } + var valueConverter = GetValueConverter(propertyInfo.PropertyType); result.Add(new FieldMapping