diff --git a/ui/v2.5/src/components/List/Filters/NumberFilter.tsx b/ui/v2.5/src/components/List/Filters/NumberFilter.tsx index d636b5fbd..c25ff9814 100644 --- a/ui/v2.5/src/components/List/Filters/NumberFilter.tsx +++ b/ui/v2.5/src/components/List/Filters/NumberFilter.tsx @@ -1,4 +1,4 @@ -import React, { useRef } from "react"; +import React from "react"; import { Form } from "react-bootstrap"; import { useIntl } from "react-intl"; import { CriterionModifier } from "../../../core/generated-graphql"; @@ -16,18 +16,15 @@ export const NumberFilter: React.FC = ({ }) => { const intl = useIntl(); - const valueStage = useRef(criterion.value); - function onChanged( event: React.ChangeEvent, property: "value" | "value2" ) { - const value = parseInt(event.target.value, 10); - valueStage.current[property] = !Number.isNaN(value) ? value : 0; - } + const numericValue = parseInt(event.target.value, 10); + const valueCopy = { ...criterion.value }; - function onBlurInput() { - onValueChanged(valueStage.current); + valueCopy[property] = !Number.isNaN(numericValue) ? numericValue : 0; + onValueChanged(valueCopy); } let equalsControl: JSX.Element | null = null; @@ -43,8 +40,7 @@ export const NumberFilter: React.FC = ({ onChange={(e: React.ChangeEvent) => onChanged(e, "value") } - onBlur={onBlurInput} - defaultValue={criterion.value?.value ?? ""} + value={criterion.value?.value ?? ""} placeholder={intl.formatMessage({ id: "criterion.value" })} /> @@ -65,8 +61,7 @@ export const NumberFilter: React.FC = ({ onChange={(e: React.ChangeEvent) => onChanged(e, "value") } - onBlur={onBlurInput} - defaultValue={criterion.value?.value ?? ""} + value={criterion.value?.value ?? ""} placeholder={intl.formatMessage({ id: "criterion.greater_than" })} /> @@ -92,8 +87,7 @@ export const NumberFilter: React.FC = ({ : "value2" ) } - onBlur={onBlurInput} - defaultValue={ + value={ (criterion.modifier === CriterionModifier.LessThan ? criterion.value?.value : criterion.value?.value2) ?? ""