|
1 | 1 | 'use strict';
|
2 | 2 |
|
| 3 | +/* globals nodeBlackList false */ |
| 4 | + |
3 | 5 | describe('$aria', function() {
|
4 | 6 | var scope, $compile, element;
|
5 | 7 |
|
@@ -952,6 +954,33 @@ describe('$aria', function() {
|
952 | 954 | expect(clickEvents).toEqual(['div(true)', 'li(true)', 'div(true)', 'li(true)']);
|
953 | 955 | });
|
954 | 956 |
|
| 957 | + they('should not prevent default keyboard action if an interactive $type element' + |
| 958 | + 'is nested inside ng-click', nodeBlackList, function(elementType) { |
| 959 | + function createHTML(type) { |
| 960 | + return '<' + type + '></' + type + '>'; |
| 961 | + } |
| 962 | + |
| 963 | + compileElement( |
| 964 | + '<section>' + |
| 965 | + '<div ng-click="onClick($event)">' + createHTML(elementType) + '</div>' + |
| 966 | + '</section>'); |
| 967 | + |
| 968 | + var divElement = element.find('div'); |
| 969 | + var interactiveElement = element.find(elementType); |
| 970 | + |
| 971 | + // Use browserTrigger because it supports event bubbling |
| 972 | + // 13 Enter |
| 973 | + browserTrigger(interactiveElement, 'keydown', {cancelable: true, bubbles: true, keyCode: 13}); |
| 974 | + expect(clickEvents).toEqual([elementType.toLowerCase() + '(false)']); |
| 975 | + |
| 976 | + clickEvents = []; |
| 977 | + |
| 978 | + // 32 Space |
| 979 | + browserTrigger(interactiveElement, 'keydown', {cancelable: true, bubbles: true, keyCode: 32}); |
| 980 | + expect(clickEvents).toEqual([elementType.toLowerCase() + '(false)']); |
| 981 | + } |
| 982 | + ); |
| 983 | + |
955 | 984 | it('should trigger a click in browsers that provide `event.which` instead of `event.keyCode`',
|
956 | 985 | function() {
|
957 | 986 | compileElement(
|
|
0 commit comments