File tree Expand file tree Collapse file tree 3 files changed +48
-1
lines changed Expand file tree Collapse file tree 3 files changed +48
-1
lines changed Original file line number Diff line number Diff line change @@ -627,7 +627,8 @@ export default function generateSelector<
627
627
628
628
// ============================== Open ==============================
629
629
const [ innerOpen , setInnerOpen ] = React . useState < boolean > ( defaultOpen ) ;
630
- let mergedOpen : boolean = open !== undefined ? open : innerOpen ;
630
+ let mergedOpen : boolean =
631
+ ! disabled && ( open !== undefined ? open : innerOpen ) ;
631
632
632
633
// Not trigger `open` in `combobox` when `notFoundContent` is empty
633
634
const emptyListContent = ! notFoundContent && ! displayOptions . length ;
@@ -713,6 +714,13 @@ export default function generateSelector<
713
714
return ret ;
714
715
} ;
715
716
717
+ // Close dropdown when disabled change
718
+ React . useEffect ( ( ) => {
719
+ if ( innerOpen && ! ! disabled ) {
720
+ setInnerOpen ( false ) ;
721
+ }
722
+ } , [ disabled ] ) ;
723
+
716
724
// Close will clean up single mode search text
717
725
React . useEffect ( ( ) => {
718
726
if ( ! mergedOpen && ! isMultiple && mode !== 'combobox' ) {
Original file line number Diff line number Diff line change @@ -1457,4 +1457,42 @@ describe('Select.Basic', () => {
1457
1457
wrapper . update ( ) ;
1458
1458
expect ( wrapper . find ( '.rc-select-selection-item' ) ) . toHaveLength ( 0 ) ;
1459
1459
} ) ;
1460
+
1461
+ describe ( 'disabled on open' , ( ) => {
1462
+ it ( 'should not show dropdown when oepn and disabled' , ( ) => {
1463
+ const wrapper = mount (
1464
+ < Select open disabled >
1465
+ < Option value = "1" > 1</ Option >
1466
+ < Option value = "2" > 2</ Option >
1467
+ </ Select > ,
1468
+ ) ;
1469
+ expectOpen ( wrapper , false ) ;
1470
+ } ) ;
1471
+
1472
+ it ( 'should close dropdown when disabled after open' , ( ) => {
1473
+ const wrapper = mount (
1474
+ < Select >
1475
+ < Option value = "1" > 1</ Option >
1476
+ < Option value = "2" > 2</ Option >
1477
+ </ Select > ,
1478
+ ) ;
1479
+ toggleOpen ( wrapper ) ;
1480
+ expectOpen ( wrapper , true ) ;
1481
+ wrapper . setProps ( { disabled : true } ) ;
1482
+ expectOpen ( wrapper , false ) ;
1483
+ } ) ;
1484
+
1485
+ it ( 'should not open dropdown after remove disabled' , ( ) => {
1486
+ const wrapper = mount (
1487
+ < Select >
1488
+ < Option value = "1" > 1</ Option >
1489
+ < Option value = "2" > 2</ Option >
1490
+ </ Select > ,
1491
+ ) ;
1492
+ toggleOpen ( wrapper ) ;
1493
+ wrapper . setProps ( { disabled : true } ) ;
1494
+ wrapper . setProps ( { disabled : false } ) ;
1495
+ expectOpen ( wrapper , false ) ;
1496
+ } ) ;
1497
+ } ) ;
1460
1498
} ) ;
Original file line number Diff line number Diff line change @@ -400,6 +400,7 @@ exports[`Select.Basic render renders disabled select correctly 1`] = `
400
400
aria-activedescendant = " undefined_list_0"
401
401
aria-autocomplete = " list"
402
402
aria-controls = " undefined_list"
403
+ aria-expanded = " false"
403
404
aria-haspopup = " listbox"
404
405
aria-owns = " undefined_list"
405
406
autocomplete = " off"
You can’t perform that action at this time.
0 commit comments