diff --git a/packages/lsd-react/src/components/Dropdown/Dropdown.tsx b/packages/lsd-react/src/components/Dropdown/Dropdown.tsx index b4fb2a0..da34aeb 100644 --- a/packages/lsd-react/src/components/Dropdown/Dropdown.tsx +++ b/packages/lsd-react/src/components/Dropdown/Dropdown.tsx @@ -59,8 +59,6 @@ export const Dropdown: React.FC & { const isControlled = isOpen !== undefined const [openState, setOpenState] = useState(false) - const open = isControlled ? isOpen : openState - const { select, isSelected, selected } = useSelect(options, value, { multi, onChange, @@ -80,13 +78,18 @@ export const Dropdown: React.FC & { const onTrigger = () => { if (disabled) return - handleToggle(!open) + handleToggle(!openState) } useEffect(() => { - if (disabled && open && !isControlled) setOpenState(false) + if (disabled && openState && !isControlled) setOpenState(false) }, [open, disabled, isControlled]) + // Handle the controlled version of the component: + useEffect(() => { + typeof isOpen !== 'undefined' && setOpenState(isOpen) + }, [isOpen]) + const buttonId = props?.id ?? (props.id || 'dropdown') + '-input' return ( @@ -100,7 +103,7 @@ export const Dropdown: React.FC & { dropdownClasses[size], error && dropdownClasses.error, disabled && dropdownClasses.disabled, - open && dropdownClasses.open, + openState && dropdownClasses.open, variant === 'outlined' ? dropdownClasses.outlined : dropdownClasses.outlinedBottom, @@ -137,7 +140,7 @@ export const Dropdown: React.FC & { )} - {open ? ( + {openState ? ( & { handleToggle(false)} size={size} genericFontFamily={props.genericFontFamily}