@@ -15,15 +15,23 @@ class FakeQueryList<T> extends QueryList<T> {
15
15
}
16
16
}
17
17
18
- const DOWN_ARROW_EVENT = { keyCode : DOWN_ARROW } as KeyboardEvent ;
19
- const UP_ARROW_EVENT = { keyCode : UP_ARROW } as KeyboardEvent ;
20
- const TAB_EVENT = { keyCode : TAB } as KeyboardEvent ;
21
- const HOME_EVENT = { keyCode : HOME } as KeyboardEvent ;
22
- const END_EVENT = { keyCode : END } as KeyboardEvent ;
18
+ class FakeEvent {
19
+ defaultPrevented : boolean = false ;
20
+ constructor ( public keyCode : number ) { }
21
+ preventDefault ( ) {
22
+ this . defaultPrevented = true ;
23
+ }
24
+ }
25
+
23
26
24
27
describe ( 'ListKeyManager' , ( ) => {
25
28
let keyManager : ListKeyManager ;
26
29
let itemList : FakeQueryList < FakeFocusable > ;
30
+ let DOWN_ARROW_EVENT : KeyboardEvent ;
31
+ let UP_ARROW_EVENT : KeyboardEvent ;
32
+ let TAB_EVENT : KeyboardEvent ;
33
+ let HOME_EVENT : KeyboardEvent ;
34
+ let END_EVENT : KeyboardEvent ;
27
35
28
36
beforeEach ( ( ) => {
29
37
itemList = new FakeQueryList < FakeFocusable > ( ) ;
@@ -35,6 +43,12 @@ describe('ListKeyManager', () => {
35
43
36
44
keyManager = new ListKeyManager ( itemList ) ;
37
45
46
+ DOWN_ARROW_EVENT = new FakeEvent ( DOWN_ARROW ) as KeyboardEvent ;
47
+ UP_ARROW_EVENT = new FakeEvent ( UP_ARROW ) as KeyboardEvent ;
48
+ TAB_EVENT = new FakeEvent ( TAB ) as KeyboardEvent ;
49
+ HOME_EVENT = new FakeEvent ( HOME ) as KeyboardEvent ;
50
+ END_EVENT = new FakeEvent ( END ) as KeyboardEvent ;
51
+
38
52
// first item is already focused
39
53
keyManager . focusFirstItem ( ) ;
40
54
@@ -166,6 +180,22 @@ describe('ListKeyManager', () => {
166
180
expect ( tabOutEmitted ) . toBe ( true ) ;
167
181
} ) ;
168
182
183
+ it ( 'should prevent the default keyboard action' , ( ) => {
184
+ expect ( DOWN_ARROW_EVENT . defaultPrevented ) . toBe ( false ) ;
185
+
186
+ keyManager . onKeydown ( DOWN_ARROW_EVENT ) ;
187
+
188
+ expect ( DOWN_ARROW_EVENT . defaultPrevented ) . toBe ( true ) ;
189
+ } ) ;
190
+
191
+ it ( 'should not prevent the default keyboard action when pressing tab' , ( ) => {
192
+ expect ( TAB_EVENT . defaultPrevented ) . toBe ( false ) ;
193
+
194
+ keyManager . onKeydown ( TAB_EVENT ) ;
195
+
196
+ expect ( TAB_EVENT . defaultPrevented ) . toBe ( false ) ;
197
+ } ) ;
198
+
169
199
} ) ;
170
200
171
201
describe ( 'programmatic focus' , ( ) => {
0 commit comments