@@ -11,7 +11,7 @@ import '../assets/index.less';
11
11
import Trigger from '../index' ;
12
12
import './basic.less' ;
13
13
import async from 'async' ;
14
- import { saveRef } from '../src/utils' ;
14
+ import { saveRef , keyboardEvent } from '../src/utils' ;
15
15
16
16
const Simulate = TestUtils . Simulate ;
17
17
const scryRenderedDOMComponentsWithClass = TestUtils . scryRenderedDOMComponentsWithClass ;
@@ -895,4 +895,64 @@ describe('rc-trigger', function main() {
895
895
expect ( domNode . className ) . to . be ( 'target className-in-trigger-1 className-in-trigger-2' ) ;
896
896
} ) ;
897
897
} ) ;
898
+
899
+ describe ( 'keyboard' , ( ) => {
900
+ let visible ;
901
+ const onChange = ( value ) => {
902
+ visible = value ;
903
+ } ;
904
+
905
+ it ( 'esc key works if keyboard=true ' , ( ) => {
906
+ const trigger = ReactDOM . render (
907
+ < Trigger
908
+ keyboard
909
+ popup = { < div /> }
910
+ action = { [ 'click' ] }
911
+ popupAlign = { placementAlignMap . right }
912
+ onPopupVisibleChange = { onChange }
913
+ >
914
+ < div > click</ div >
915
+ </ Trigger > ,
916
+ div
917
+ ) ;
918
+ const domNode = ReactDOM . findDOMNode ( trigger ) ;
919
+
920
+ // click trigger and show popup
921
+ Simulate . click ( domNode ) ;
922
+ expect ( visible ) . to . be ( true ) ;
923
+
924
+ // click escape
925
+ const event = keyboardEvent ( 'keydown' , { key : 'Escape' , keyCode : 27 } ) ;
926
+ document . dispatchEvent ( event ) ;
927
+
928
+ // assert that popup hidden
929
+ expect ( visible ) . to . be ( false ) ;
930
+ } ) ;
931
+
932
+ it ( 'esc key doesn\'t work if keyboard=false ' , ( ) => {
933
+ const trigger = ReactDOM . render (
934
+ < Trigger
935
+ popup = { < div /> }
936
+ action = { [ 'click' ] }
937
+ popupAlign = { placementAlignMap . right }
938
+ onPopupVisibleChange = { onChange }
939
+ >
940
+ < div > click</ div >
941
+ </ Trigger > ,
942
+ div
943
+ ) ;
944
+ const domNode = ReactDOM . findDOMNode ( trigger ) ;
945
+
946
+ // click trigger and show popup
947
+ Simulate . click ( domNode ) ;
948
+ expect ( visible ) . to . be ( true ) ;
949
+
950
+ // click escape
951
+ const event = keyboardEvent ( 'keydown' , { key : 'Escape' , keyCode : 27 } ) ;
952
+ document . dispatchEvent ( event ) ;
953
+
954
+ // assert that popup still visible
955
+ expect ( visible ) . to . be ( true ) ;
956
+ } ) ;
957
+ } ) ;
898
958
} ) ;
0 commit comments