@@ -104,9 +104,10 @@ export const AutocompleteDropdown = memo<
104104 content,
105105 setContent,
106106 activeInputContainerRef,
107- controllerRef ,
107+ activeControllerRef ,
108108 direction = directionProp ,
109109 setDirection,
110+ controllerRefs,
110111 } = useContext ( AutocompleteDropdownContext )
111112 const themeName = useColorScheme ( ) || 'light'
112113 const styles = useMemo ( ( ) => getStyles ( themeName ) , [ themeName ] )
@@ -220,18 +221,32 @@ export const AutocompleteDropdown = memo<
220221 setSelectedItem ( item )
221222 } , [ ] )
222223
224+ useEffect ( ( ) => {
225+ if ( activeControllerRef ?. current ) {
226+ controllerRefs ?. current . push ( activeControllerRef ?. current )
227+ }
228+ // eslint-disable-next-line react-hooks/exhaustive-deps
229+ } , [ ] )
230+
231+ const closeAll = useCallback ( ( ) => {
232+ controllerRefs ?. current . forEach ( c => {
233+ c ?. blur ?.( )
234+ c ?. close ?.( )
235+ } )
236+ } , [ controllerRefs ] )
237+
223238 /** expose controller methods */
224239 useEffect ( ( ) => {
225- const methods = controllerRef ? { close, blur, open, toggle, clear, setInputText, setItem } : null
226- if ( controllerRef ) {
227- controllerRef . current = methods
240+ const methods = activeControllerRef ? { close, blur, open, toggle, clear, setInputText, setItem } : null
241+ if ( activeControllerRef ) {
242+ activeControllerRef . current = methods
228243 }
229244 if ( typeof controller === 'function' ) {
230245 controller ( methods )
231246 } else if ( controller ) {
232247 controller . current = methods
233248 }
234- } , [ blur , clear , close , controller , controllerRef , open , setInputText , setItem , toggle ] )
249+ } , [ blur , clear , close , controller , activeControllerRef , open , setInputText , setItem , toggle ] )
235250
236251 useEffect ( ( ) => {
237252 if ( selectedItem ) {
@@ -407,13 +422,14 @@ export const AutocompleteDropdown = memo<
407422
408423 const onPressOut = useCallback (
409424 ( e : GestureResponderEvent ) => {
425+ closeAll ( )
410426 if ( editable ) {
411427 inputRef ?. current ?. focus ( )
412428 } else {
413429 toggle ( )
414430 }
415431 } ,
416- [ editable , toggle ] ,
432+ [ closeAll , editable , toggle ] ,
417433 )
418434
419435 useEffect ( ( ) => {
0 commit comments