File tree 1 file changed +36
-0
lines changed
1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -246,6 +246,42 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position'])
246
246
} ;
247
247
} )
248
248
249
+ . directive ( 'keyboardNav' , function ( ) {
250
+ return {
251
+ restrict : 'A' ,
252
+ require : '?^dropdown' ,
253
+ link : function ( scope , element , attrs , dropdownCtrl ) {
254
+
255
+ element . bind ( 'keydown' , function ( e ) {
256
+
257
+ e . preventDefault ( ) ;
258
+ e . stopPropagation ( ) ;
259
+
260
+ var elems = angular . element ( element ) . find ( 'a' ) ;
261
+ switch ( e . keyCode ) {
262
+ case ( 40 ) : // Down
263
+ {
264
+
265
+ if ( ! angular . isNumber ( dropdownCtrl . selectedOption ) ) {
266
+ dropdownCtrl . selectedOption = 0 ;
267
+ } else {
268
+ dropdownCtrl . selectedOption = ( dropdownCtrl . selectedOption === elems . length - 1 ? dropdownCtrl . selectedOption : dropdownCtrl . selectedOption + 1 ) ;
269
+ }
270
+
271
+ }
272
+ break ;
273
+ case ( 38 ) : // Up
274
+ {
275
+ dropdownCtrl . selectedOption = ( dropdownCtrl . selectedOption === 0 ? 0 : dropdownCtrl . selectedOption - 1 ) ;
276
+ }
277
+ break ;
278
+ }
279
+ elems [ dropdownCtrl . selectedOption ] . focus ( ) ;
280
+ } ) ;
281
+ }
282
+ } ;
283
+ } )
284
+
249
285
. directive ( 'dropdownToggle' , function ( ) {
250
286
return {
251
287
require : '?^dropdown' ,
You can’t perform that action at this time.
0 commit comments