@@ -43,6 +43,8 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => {
43
43
const helperText = props . settings && props . settings . helperText ? props . settings . helperText : '' ;
44
44
const clearParameterOnFieldClear =
45
45
props . settings && props . settings . clearParameterOnFieldClear ? props . settings . clearParameterOnFieldClear : false ;
46
+ const autoSelectFirstValue =
47
+ props . settings && props . settings . autoSelectFirstValue ? props . settings . autoSelectFirstValue : false ;
46
48
47
49
// index of the display value in the resulting extra records retrieved by the component when the user types. equals '1' for NeoDash 2.2.2 and later.
48
50
const displayValueRowIndex = props . compatibilityMode
@@ -190,6 +192,19 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => {
190
192
debouncedQueryCallback ( props . query , { input : `${ inputDisplayText } ` , ...allParameters } , setExtraRecords ) ;
191
193
}
192
194
} }
195
+ onBlur = { ( ) => {
196
+ // If the user loses focus of the selector, and nothing is selected
197
+ // We may want to auto-select the first value produced by the selector query (`autoSelectFirstValue == true`)
198
+ if ( autoSelectFirstValue && paramValueDisplayLocal == '' ) {
199
+ debouncedQueryCallback ( props . query , { input : '' , ...allParameters } , ( records ) => {
200
+ if ( records && records . length > 0 && records [ 0 ] && records [ 0 ] . _fields ) {
201
+ const values = records ?. map ( ( r ) => r ?. _fields ?. [ displayValueRowIndex ] || '(no data)' ) . sort ( ) ;
202
+ setExtraRecords ( records ) ;
203
+ propagateSelection ( undefined , values [ 0 ] ) ;
204
+ }
205
+ } ) ;
206
+ }
207
+ } }
193
208
value = { inputValue || '' }
194
209
onChange = { propagateSelection }
195
210
renderInput = { ( params ) => (
0 commit comments