diff --git a/src/BaseSelect/index.tsx b/src/BaseSelect/index.tsx index a4569e5e..a15ad1a3 100644 --- a/src/BaseSelect/index.tsx +++ b/src/BaseSelect/index.tsx @@ -459,6 +459,9 @@ const BaseSelect = React.forwardRef((props, ref) React.useEffect(() => { // After onBlur is triggered, the focused does not need to be reset if (disabled) { + // A disabled input may not emit the keyup/blur event that releases this lock. + // Clear it here so a later interaction cannot inherit a stale Enter state. + keyLockRef.current = false; triggerOpen(false); setFocused(false); } diff --git a/tests/Select.test.tsx b/tests/Select.test.tsx index 4e6ccd69..a32c3ae1 100644 --- a/tests/Select.test.tsx +++ b/tests/Select.test.tsx @@ -2773,6 +2773,60 @@ describe('Select.Basic', () => { expect(inputElem.value).toEqual('bb'); }); + it('should clear the Enter key lock when disabled interrupts keyup', async () => { + const onChange = jest.fn(); + let enableSelect: () => void; + const options = [ + { value: 1, label: 'Gianfranco Pistoni' }, + { value: 2, label: 'Gianni Brugola' }, + { value: 3, label: 'Edoardo Bulloni' }, + ]; + + const Demo: React.FC = () => { + const [value, setValue] = React.useState(null); + const [disabled, setDisabled] = React.useState(false); + enableSelect = () => setDisabled(false); + + return ( +