Skip to content
This repository was archived by the owner on May 29, 2019. It is now read-only.

Commit defcbbb

Browse files
icfantvwesleycho
authored andcommitted
fix(dropdown): fix up arrow nav support
* add support for when user opens dropdown and then presses the up arrow key. Closes #4330 Fixes #4327
1 parent c7d669f commit defcbbb

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/dropdown/dropdown.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position'])
145145
}
146146
case (38): {
147147
if (!angular.isNumber(self.selectedOption)) {
148-
return;
148+
self.selectedOption = elems.length - 1;
149149
} else {
150150
self.selectedOption = self.selectedOption === 0 ?
151151
0 : self.selectedOption - 1;
@@ -292,16 +292,19 @@ angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position'])
292292
break;
293293
}
294294
case (38): { // Up
295-
dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ?
296-
0 : dropdownCtrl.selectedOption - 1;
295+
if (!angular.isNumber(dropdownCtrl.selectedOption)) {
296+
dropdownCtrl.selectedOption = elems.length - 1;
297+
} else {
298+
dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ?
299+
0 : dropdownCtrl.selectedOption - 1;
300+
}
297301
break;
298302
}
299303
}
300304
elems[dropdownCtrl.selectedOption].focus();
301305
}
302306
});
303307
}
304-
305308
};
306309
})
307310

src/dropdown/test/dropdown.spec.js

+10
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,16 @@ describe('dropdownToggle', function() {
587587
expect(isFocused(focusEl)).toBe(false);
588588
});
589589

590+
it('should focus last list element when up arrow pressed after dropdown toggled', function() {
591+
$document.find('body').append(element);
592+
clickDropdownToggle();
593+
triggerKeyDown($document, 38);
594+
595+
expect(element.hasClass(dropdownConfig.openClass)).toBe(true);
596+
var focusEl = element.find('ul').eq(0).find('a').eq(1);
597+
expect(isFocused(focusEl)).toBe(true);
598+
});
599+
590600
it('should not focus any list element when down arrow pressed if closed', function() {
591601
$document.find('body').append(element);
592602
triggerKeyDown($document, 40);

0 commit comments

Comments
 (0)