Compare commits
3 Commits
v1.8.2
...
fix-aria-click
| Author | SHA1 | Date | |
|---|---|---|---|
| 30ab202fa7 | |||
| 190bc1d52b | |||
| 4be80aefa2 |
+6
-2
@@ -389,8 +389,12 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
||||
var keyCode = event.which || event.keyCode;
|
||||
|
||||
if (keyCode === 13 || keyCode === 32) {
|
||||
// Prevent the default browser behavior (e.g. scrolling when pressing spacebar).
|
||||
event.preventDefault();
|
||||
// If the event is triggered on a non-interactive element ...
|
||||
if (nodeBlackList.indexOf(event.target.nodeName) === -1) {
|
||||
// ... prevent the default browser behavior (e.g. scrolling when pressing spacebar)
|
||||
// See https://github.com/angular/angular.js/issues/16664
|
||||
event.preventDefault();
|
||||
}
|
||||
scope.$apply(callback);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
/* globals nodeBlackList false */
|
||||
|
||||
describe('$aria', function() {
|
||||
var scope, $compile, element;
|
||||
|
||||
@@ -952,6 +954,33 @@ describe('$aria', function() {
|
||||
expect(clickEvents).toEqual(['div(true)', 'li(true)', 'div(true)', 'li(true)']);
|
||||
});
|
||||
|
||||
they('should not prevent default keyboard action if an interactive $type element' +
|
||||
'is nested inside ng-click', nodeBlackList, function(elementType) {
|
||||
function createHTML(type) {
|
||||
return '<' + type + '></' + type + '>';
|
||||
}
|
||||
|
||||
compileElement(
|
||||
'<section>' +
|
||||
'<div ng-click="onClick($event)">' + createHTML(elementType) + '</div>' +
|
||||
'</section>');
|
||||
|
||||
var divElement = element.find('div');
|
||||
var interactiveElement = element.find(elementType);
|
||||
|
||||
// Use browserTrigger because it supports event bubbling
|
||||
// 13 Enter
|
||||
browserTrigger(interactiveElement, 'keydown', {cancelable: true, bubbles: true, keyCode: 13});
|
||||
expect(clickEvents).toEqual([elementType.toLowerCase() + '(false)']);
|
||||
|
||||
clickEvents = [];
|
||||
|
||||
// 32 Space
|
||||
browserTrigger(interactiveElement, 'keydown', {cancelable: true, bubbles: true, keyCode: 32});
|
||||
expect(clickEvents).toEqual([elementType.toLowerCase() + '(false)']);
|
||||
}
|
||||
);
|
||||
|
||||
it('should trigger a click in browsers that provide `event.which` instead of `event.keyCode`',
|
||||
function() {
|
||||
compileElement(
|
||||
|
||||
Reference in New Issue
Block a user