@@ -28,6 +28,7 @@ import {
2828 keyUp ,
2929 selectItem ,
3030 toggleOpen ,
31+ waitFakeTimer ,
3132} from './utils/common' ;
3233
3334describe ( 'Select.Basic' , ( ) => {
@@ -2367,4 +2368,53 @@ describe('Select.Basic', () => {
23672368 expect ( element [ 0 ] ) . not . toHaveClass ( 'rc-select-item-option-disabled' ) ;
23682369 expect ( element [ 1 ] ) . toHaveClass ( 'rc-select-item-option-disabled' ) ;
23692370 } ) ;
2371+
2372+ it ( 'release Enter key lock after customize input calls blur()' , async ( ) => {
2373+ let inputElem : HTMLInputElement | null = null ;
2374+ const onBlur = jest . fn ( ) ;
2375+ const Demo : React . FC = ( ) => {
2376+ const ref = React . useRef < HTMLInputElement > ( null ) ;
2377+ const onSelect = ( ) => {
2378+ ref . current ! . blur ( ) ;
2379+ fireEvent . blur ( ref . current ) ;
2380+ } ;
2381+ const getInputElement = ( ) => {
2382+ return < input ref = { ref } onBlur = { onBlur } /> ;
2383+ } ;
2384+ return (
2385+ < Select
2386+ options = { [ { value : 'aa' } , { value : 'bb' } ] }
2387+ onSelect = { onSelect }
2388+ mode = "combobox"
2389+ getInputElement = { getInputElement }
2390+ />
2391+ ) ;
2392+ } ;
2393+ const { container } = render ( < Demo /> ) ;
2394+ inputElem = container . querySelector ( 'input' ) ;
2395+ toggleOpen ( container ) ;
2396+ await waitFakeTimer ( ) ;
2397+ expectOpen ( container , true ) ;
2398+
2399+ keyDown ( inputElem ! , 40 ) ;
2400+ keyUp ( inputElem ! , 40 ) ;
2401+ keyDown ( inputElem ! , 13 ) ;
2402+
2403+ await waitFakeTimer ( ) ;
2404+ expect ( onBlur ) . toHaveBeenCalledTimes ( 1 ) ;
2405+ expectOpen ( container , false ) ;
2406+ expect ( inputElem . value ) . toEqual ( 'aa' ) ;
2407+
2408+ toggleOpen ( container ) ;
2409+ await waitFakeTimer ( ) ;
2410+ expectOpen ( container , true ) ;
2411+
2412+ keyDown ( inputElem ! , 40 ) ;
2413+ keyUp ( inputElem ! , 40 ) ;
2414+ keyDown ( inputElem ! , 13 ) ;
2415+
2416+ await waitFakeTimer ( ) ;
2417+ expect ( onBlur ) . toHaveBeenCalledTimes ( 2 ) ;
2418+ expect ( inputElem . value ) . toEqual ( 'bb' ) ;
2419+ } ) ;
23702420} ) ;
0 commit comments