@@ -43,6 +43,8 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => {
4343 const helperText = props . settings && props . settings . helperText ? props . settings . helperText : '' ;
4444 const clearParameterOnFieldClear =
4545 props . settings && props . settings . clearParameterOnFieldClear ? props . settings . clearParameterOnFieldClear : false ;
46+ const autoSelectFirstValue =
47+ props . settings && props . settings . autoSelectFirstValue ? props . settings . autoSelectFirstValue : false ;
4648
4749 // 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.
4850 const displayValueRowIndex = props . compatibilityMode
@@ -190,6 +192,19 @@ const NodePropertyParameterSelectComponent = (props: ParameterSelectProps) => {
190192 debouncedQueryCallback ( props . query , { input : `${ inputDisplayText } ` , ...allParameters } , setExtraRecords ) ;
191193 }
192194 } }
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+ } }
193208 value = { inputValue || '' }
194209 onChange = { propagateSelection }
195210 renderInput = { ( params ) => (
0 commit comments