@@ -27,6 +27,7 @@ import {
2727 toRefs ,
2828 watch ,
2929 watchEffect ,
30+ ref ,
3031} from 'vue' ;
3132import type { CSSProperties , ExtractPropTypes , PropType } from 'vue' ;
3233import PropTypes from '../_util/vue-types' ;
@@ -280,6 +281,7 @@ export default defineComponent({
280281 const triggerRef = shallowRef < RefTriggerProps > ( null ) ;
281282 const selectorRef = shallowRef < RefSelectorProps > ( null ) ;
282283 const listRef = shallowRef < RefOptionListProps > ( null ) ;
284+ const blurRef = ref < boolean > ( false ) ;
283285
284286 /** Used for component focused management */
285287 const [ mockFocused , setMockFocused , cancelSetMockFocused ] = useDelayReset ( ) ;
@@ -339,10 +341,10 @@ export default defineComponent({
339341 const onToggleOpen = ( newOpen ?: boolean ) => {
340342 const nextOpen = newOpen !== undefined ? newOpen : ! mergedOpen . value ;
341343
342- if ( innerOpen . value !== nextOpen && ! props . disabled ) {
344+ if ( ! props . disabled ) {
343345 setInnerOpen ( nextOpen ) ;
344- if ( props . onDropdownVisibleChange ) {
345- props . onDropdownVisibleChange ( nextOpen ) ;
346+ if ( mergedOpen . value !== nextOpen ) {
347+ props . onDropdownVisibleChange && props . onDropdownVisibleChange ( nextOpen ) ;
346348 }
347349 }
348350 } ;
@@ -413,6 +415,9 @@ export default defineComponent({
413415 if ( innerOpen . value && ! ! props . disabled ) {
414416 setInnerOpen ( false ) ;
415417 }
418+ if ( props . disabled && ! blurRef . value ) {
419+ setMockFocused ( false ) ;
420+ }
416421 } ,
417422 { immediate : true } ,
418423 ) ;
@@ -524,9 +529,12 @@ export default defineComponent({
524529 } ;
525530
526531 const onContainerBlur : FocusEventHandler = ( ...args ) => {
532+ blurRef . value = true ;
533+
527534 setMockFocused ( false , ( ) => {
528535 focusRef . value = false ;
529- onToggleOpen ( false ) ;
536+ blurRef . value = false ;
537+ //onToggleOpen(false);
530538 } ) ;
531539
532540 if ( props . disabled ) {
0 commit comments