1- import { DOWN_ARROW , LEFT_ARROW , RIGHT_ARROW , TAB , UP_ARROW } from '@angular/cdk/keycodes' ;
1+ import { DOWN_ARROW , END , HOME , LEFT_ARROW , RIGHT_ARROW , TAB , UP_ARROW } from '@angular/cdk/keycodes' ;
22import { createKeyboardEvent } from '@angular/cdk/testing/private' ;
33import { QueryList } from '@angular/core' ;
44import { fakeAsync , tick } from '@angular/core/testing' ;
@@ -51,6 +51,8 @@ describe('Key managers', () => {
5151 leftArrow : KeyboardEvent ,
5252 rightArrow : KeyboardEvent ,
5353 tab : KeyboardEvent ,
54+ home : KeyboardEvent ,
55+ end : KeyboardEvent ,
5456 unsupported : KeyboardEvent
5557 } ;
5658
@@ -62,6 +64,8 @@ describe('Key managers', () => {
6264 leftArrow : createKeyboardEvent ( 'keydown' , LEFT_ARROW ) ,
6365 rightArrow : createKeyboardEvent ( 'keydown' , RIGHT_ARROW ) ,
6466 tab : createKeyboardEvent ( 'keydown' , TAB ) ,
67+ home : createKeyboardEvent ( 'keydown' , HOME ) ,
68+ end : createKeyboardEvent ( 'keydown' , END ) ,
6569 unsupported : createKeyboardEvent ( 'keydown' , 192 ) // corresponds to the tilde character (~)
6670 } ;
6771 } ) ;
@@ -195,6 +199,30 @@ describe('Key managers', () => {
195199 expect ( fakeKeyEvents . downArrow . defaultPrevented ) . toBe ( false ) ;
196200 } ) ;
197201
202+ describe ( 'withHomeAndEnd' , ( ) => {
203+ beforeEach ( ( ) => {
204+ keyManager . withHomeAndEnd ( ) ;
205+ } ) ;
206+
207+ it ( 'should focus the first item when Home is pressed' , ( ) => {
208+ keyManager . setActiveItem ( 1 ) ;
209+ expect ( keyManager . activeItemIndex ) . toBe ( 1 ) ;
210+
211+ keyManager . onKeydown ( fakeKeyEvents . home ) ;
212+
213+ expect ( keyManager . activeItemIndex ) . toBe ( 0 ) ;
214+ } ) ;
215+
216+ it ( 'should focus the last item when End is pressed' , ( ) => {
217+ keyManager . setActiveItem ( 0 ) ;
218+ expect ( keyManager . activeItemIndex ) . toBe ( 0 ) ;
219+
220+ keyManager . onKeydown ( fakeKeyEvents . end ) ;
221+
222+ expect ( keyManager . activeItemIndex ) . toBe ( itemList . items . length - 1 ) ;
223+ } )
224+ } ) ;
225+
198226 describe ( 'with `vertical` direction' , function ( this : KeyEventTestContext ) {
199227 beforeEach ( ( ) => {
200228 keyManager . withVerticalOrientation ( ) ;
0 commit comments