@@ -30,7 +30,7 @@ import {
3030 useInteractions ,
3131 useRole ,
3232} from '@floating-ui/react' ;
33- import { FC , ReactElement , ReactNode , useState } from 'react' ;
33+ import { FC , ReactElement , ReactNode , useEffect , useState } from 'react' ;
3434import useStyles from './BaseLanguageSwitcher.styles' ;
3535import useTheme from '../../../contexts/Theme/useTheme' ;
3636import Check from '../../primitives/Icons/Check' ;
@@ -109,6 +109,13 @@ const BaseLanguageSwitcher: FC<BaseLanguageSwitcherProps> = ({
109109 const { theme, colorScheme} = useTheme ( ) ;
110110 const styles : Record < string , string > = useStyles ( theme , colorScheme ) ;
111111 const [ isOpen , setIsOpen ] = useState ( false ) ;
112+ const hasMultipleLanguages : boolean = languages . length > 1 ;
113+
114+ useEffect ( ( ) => {
115+ if ( ! hasMultipleLanguages && isOpen ) {
116+ setIsOpen ( false ) ;
117+ }
118+ } , [ hasMultipleLanguages , isOpen ] ) ;
112119
113120 const { refs, floatingStyles, context} = useFloating ( {
114121 middleware : [ offset ( 4 ) , flip ( ) , shift ( ) ] ,
@@ -117,9 +124,9 @@ const BaseLanguageSwitcher: FC<BaseLanguageSwitcherProps> = ({
117124 whileElementsMounted : autoUpdate ,
118125 } ) ;
119126
120- const click : ReturnType < typeof useClick > = useClick ( context ) ;
121- const dismiss : ReturnType < typeof useDismiss > = useDismiss ( context ) ;
122- const role : ReturnType < typeof useRole > = useRole ( context , { role : 'listbox' } ) ;
127+ const click : ReturnType < typeof useClick > = useClick ( context , { enabled : hasMultipleLanguages } ) ;
128+ const dismiss : ReturnType < typeof useDismiss > = useDismiss ( context , { enabled : hasMultipleLanguages } ) ;
129+ const role : ReturnType < typeof useRole > = useRole ( context , { enabled : hasMultipleLanguages , role : 'listbox' } ) ;
123130 const { getReferenceProps, getFloatingProps} = useInteractions ( [ click , dismiss , role ] ) ;
124131
125132 const currentOption : LanguageOption | undefined = languages . find ( ( l : LanguageOption ) => l . code === currentLanguage ) ;
@@ -149,10 +156,10 @@ const BaseLanguageSwitcher: FC<BaseLanguageSwitcherProps> = ({
149156 >
150157 { currentOption && < span className = { styles [ 'triggerEmoji' ] } > { currentOption . emoji } </ span > }
151158 < span className = { styles [ 'triggerLabel' ] } > { currentOption ?. displayName ?? currentLanguage } </ span >
152- < ChevronDown />
159+ { hasMultipleLanguages && < ChevronDown /> }
153160 </ button >
154161
155- { isOpen && (
162+ { isOpen && hasMultipleLanguages && (
156163 < FloatingPortal >
157164 < FloatingFocusManager context = { context } modal = { false } >
158165 < div
0 commit comments