@@ -2,8 +2,10 @@ import { debounce, CircularProgress } from '@mui/material';
22import React , { useCallback , useEffect } from 'react' ;
33import { ParameterSelectProps } from './ParameterSelect' ;
44import NeoField from '../../../component/field/Field' ;
5+ import { SelectionConfirmationButton } from './SelectionConfirmationButton' ;
56
67const FreeTextParameterSelectComponent = ( props : ParameterSelectProps ) => {
8+ const { setManual } = props ;
79 const setParameterTimeout =
810 props . settings && props . settings . setParameterTimeout ? props . settings . setParameterTimeout : 1000 ;
911 const defaultValue =
@@ -17,12 +19,32 @@ const FreeTextParameterSelectComponent = (props: ParameterSelectProps) => {
1719 const clearParameterOnFieldClear =
1820 props . settings && props . settings . clearParameterOnFieldClear ? props . settings . clearParameterOnFieldClear : false ;
1921 const [ running , setRunning ] = React . useState ( false ) ;
22+ const [ paramValueTemp , setParamValueTemp ] = React . useState ( null ) ;
23+
2024 const setParameterValue = ( value ) => {
2125 setRunning ( false ) ;
2226 props . setParameterValue ( value ) ;
2327 } ;
2428 const debouncedSetParameterValue = useCallback ( debounce ( setParameterValue , setParameterTimeout ) , [ ] ) ;
2529
30+ const manualHandleParameters = ( ) => {
31+ handleParameters ( paramValueTemp , false ) ;
32+ } ;
33+
34+ const handleParameters = ( value , manual = false ) => {
35+ setParamValueTemp ( value ) ;
36+
37+ if ( manual ) {
38+ return ;
39+ }
40+
41+ if ( value == null && clearParameterOnFieldClear ) {
42+ debouncedSetParameterValue ( defaultValue ) ;
43+ } else {
44+ debouncedSetParameterValue ( value ) ;
45+ }
46+ } ;
47+
2648 // If the user hasn't typed, and the parameter value mismatches the input value --> it was changed externally --> refresh the input value.
2749 if ( running == false && inputText !== props . parameterValue ) {
2850 setInputText ( props . parameterValue ) ;
@@ -42,13 +64,14 @@ const FreeTextParameterSelectComponent = (props: ParameterSelectProps) => {
4264 setRunning ( true ) ;
4365 setInputText ( newValue ) ;
4466
45- if ( newValue == null && clearParameterOnFieldClear ) {
46- debouncedSetParameterValue ( defaultValue ) ;
47- } else {
48- debouncedSetParameterValue ( newValue ) ;
49- }
67+ handleParameters ( newValue , setManual ) ;
5068 } }
5169 />
70+ { setManual ? (
71+ < SelectionConfirmationButton onClick = { ( ) => manualHandleParameters ( ) } key = { `selectionConfirmation` } />
72+ ) : (
73+ < > </ >
74+ ) }
5275 { running ? < CircularProgress size = { 26 } style = { { marginTop : '20px' , marginLeft : '5px' } } /> : < > </ > }
5376 </ div >
5477 ) ;
0 commit comments