@@ -350,11 +350,11 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
350350 const triggerRef = React . useRef < RefTriggerProps > ( null ) ;
351351 const selectorRef = React . useRef < RefSelectorProps > ( null ) ;
352352 const listRef = React . useRef < RefOptionListProps > ( null ) ;
353- const blurRef = React . useRef < boolean > ( false ) ;
353+ // const blurRef = React.useRef<boolean>(false);
354354 const customDomRef = React . useRef < HTMLElement > ( null ) ;
355355
356356 /** Used for component focused management */
357- const [ mockFocused , setMockFocused , cancelSetMockFocused ] = useDelayReset ( ) ;
357+ const [ focused , setFocused ] = React . useState ( false ) ;
358358
359359 // =========================== Imperative ===========================
360360 React . useImperativeHandle ( ref , ( ) => ( {
@@ -502,16 +502,16 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
502502
503503 // ============================ Disabled ============================
504504 // Close dropdown & remove focus state when disabled change
505- // React.useEffect(() => {
506- // if (innerOpen && disabled) {
507- // setInnerOpen (false);
508- // }
505+ React . useEffect ( ( ) => {
506+ // if (mergedOpen && disabled) {
507+ // triggerOpen (false);
508+ // }
509509
510- // // After onBlur is triggered, the focused does not need to be reset
511- // if (disabled && !blurRef.current ) {
512- // setMockFocused (false);
513- // }
514- // }, [disabled]);
510+ // After onBlur is triggered, the focused does not need to be reset
511+ if ( disabled ) {
512+ setFocused ( false ) ;
513+ }
514+ } , [ disabled , mergedOpen ] ) ;
515515
516516 // ============================ Keyboard ============================
517517 /**
@@ -615,17 +615,15 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
615615 // const focusRef = React.useRef<boolean>(false);
616616
617617 const onInternalFocus : React . FocusEventHandler < HTMLElement > = ( event ) => {
618- // setMockFocused(true);
619- // if (!disabled) {
620- // if (onFocus && !focusRef.current) {
621- // onFocus(...args);
622- // }
623- // // `showAction` should handle `focus` if set
624- // if (showAction.includes('focus')) {
625- // triggerOpen(true);
626- // }
627- // }
628- // focusRef.current = true;
618+ setFocused ( true ) ;
619+
620+ if ( ! disabled ) {
621+ // `showAction` should handle `focus` if set
622+ if ( showAction . includes ( 'focus' ) ) {
623+ triggerOpen ( true ) ;
624+ }
625+ }
626+
629627 onFocus ?.( event ) ;
630628 } ;
631629
@@ -656,6 +654,8 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
656654 // };
657655
658656 const onInternalBlur : React . FocusEventHandler < HTMLElement > = ( event ) => {
657+ setFocused ( false ) ;
658+
659659 if ( mergedSearchValue ) {
660660 // `tags` mode should move `searchValue` into values
661661 if ( mode === 'tags' ) {
@@ -668,6 +668,7 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
668668 }
669669 }
670670
671+ triggerOpen ( false ) ;
671672 onBlur ?.( event ) ;
672673 } ;
673674
@@ -813,7 +814,7 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
813814
814815 // ============================= Select =============================
815816 const mergedClassName = clsx ( prefixCls , className , {
816- [ `${ prefixCls } -focused` ] : mockFocused ,
817+ [ `${ prefixCls } -focused` ] : focused ,
817818 [ `${ prefixCls } -multiple` ] : multiple ,
818819 [ `${ prefixCls } -single` ] : ! multiple ,
819820 [ `${ prefixCls } -allow-clear` ] : mergedAllowClear ,
@@ -968,7 +969,10 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
968969 ) ;
969970
970971 return (
971- < BaseSelectContext . Provider value = { baseSelectContext } > { renderNode } </ BaseSelectContext . Provider >
972+ < BaseSelectContext . Provider value = { baseSelectContext } >
973+ < Polite visible = { focused && ! mergedOpen } values = { displayValues } />
974+ { renderNode }
975+ </ BaseSelectContext . Provider >
972976 ) ;
973977} ) ;
974978
0 commit comments