Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 7a87dda

Browse files
committed
fix(radio): no longer prevents events from nested elements
closes #2960
1 parent 462da45 commit 7a87dda

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/components/radioButton/radio-button.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,17 @@ function mdRadioGroupDirective($mdUtil, $mdConstant, $mdTheming, $timeout) {
9595
*/
9696
function keydownListener(ev) {
9797
var keyCode = ev.which || ev.keyCode;
98-
switch(keyCode) {
98+
99+
// Only listen to events that we originated ourselves
100+
// so that we don't trigger on things like arrow keys in
101+
// inputs.
102+
103+
if (keyCode != $mdConstant.KEY_CODE.ENTER &&
104+
ev.currentTarget != ev.target) {
105+
return;
106+
}
107+
108+
switch (keyCode) {
99109
case $mdConstant.KEY_CODE.LEFT_ARROW:
100110
case $mdConstant.KEY_CODE.UP_ARROW:
101111
ev.preventDefault();
@@ -117,6 +127,7 @@ function mdRadioGroupDirective($mdUtil, $mdConstant, $mdTheming, $timeout) {
117127
}
118128
break;
119129
}
130+
120131
}
121132
}
122133

src/components/radioButton/radio-button.spec.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ describe('radioButton', function() {
106106
var rbGroupElement = element.eq(0);
107107
rbGroupElement.triggerHandler({
108108
type: 'keydown',
109-
keyCode: $mdConstant.KEY_CODE.RIGHT_ARROW
109+
keyCode: $mdConstant.KEY_CODE.RIGHT_ARROW,
110+
currentTarget: rbGroupElement[0],
111+
target: rbGroupElement[0]
110112
});
111113

112114
expect($rootScope.color).toEqual('green');
@@ -143,7 +145,9 @@ describe('radioButton', function() {
143145
element.triggerHandler('mousedown');
144146
element.triggerHandler({
145147
type: 'keydown',
146-
keyCode: $mdConstant.KEY_CODE.DOWN_ARROW
148+
keyCode: $mdConstant.KEY_CODE.DOWN_ARROW,
149+
currentTarget: element[0],
150+
target: element[0]
147151
});
148152
expect(element[0]).toHaveClass('md-focused');
149153
}));
@@ -257,6 +261,8 @@ describe('radioButton', function() {
257261
function rightArrow() {
258262
rbGroupElement.triggerHandler({
259263
type: 'keydown',
264+
target: rbGroupElement[0],
265+
currentTarget: rbGroupElement[0],
260266
keyCode: $mdConstant.KEY_CODE.RIGHT_ARROW
261267
});
262268
}

0 commit comments

Comments
 (0)