diff --git a/src/BaseSelect/index.tsx b/src/BaseSelect/index.tsx index 0389f623..825ccf77 100644 --- a/src/BaseSelect/index.tsx +++ b/src/BaseSelect/index.tsx @@ -460,6 +460,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 b404a9ed..55735564 100644 --- a/tests/Select.test.tsx +++ b/tests/Select.test.tsx @@ -2790,6 +2790,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 ( +