From bea8457c1d224fc12e2cb6e37a79fdcaf45edb50 Mon Sep 17 00:00:00 2001 From: Ed Clements Date: Fri, 9 Sep 2016 15:40:00 +0100 Subject: [PATCH 1/2] fix(ngAria): Prevent aria-invalid from being added to hidden inputs This fixes a error found using the Google Accessibility Developer Tools audit. Input fields of type hidden shouldn't have aria attributes. https://www.w3.org/TR/html-aria/#allowed-aria-roles-states-and-properties-1 --- src/ngAria/aria.js | 2 +- test/ngAria/ariaSpec.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ngAria/aria.js b/src/ngAria/aria.js index 6b97daa3d1c8..53c453335f25 100644 --- a/src/ngAria/aria.js +++ b/src/ngAria/aria.js @@ -225,7 +225,7 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) { .directive('ngModel', ['$aria', function($aria) { function shouldAttachAttr(attr, normalizedAttr, elem, allowBlacklistEls) { - return $aria.config(normalizedAttr) && !elem.attr(attr) && (allowBlacklistEls || !isNodeOneOf(elem, nodeBlackList)); + return $aria.config(normalizedAttr) && !elem.attr(attr) && (allowBlacklistEls || !isNodeOneOf(elem, nodeBlackList)) && elem.attr('type') !== 'hidden'; } function shouldAttachRole(role, elem) { diff --git a/test/ngAria/ariaSpec.js b/test/ngAria/ariaSpec.js index 9f7edaa2e9c0..117aeee674de 100644 --- a/test/ngAria/ariaSpec.js +++ b/test/ngAria/ariaSpec.js @@ -420,6 +420,11 @@ describe('$aria', function() { scope.$apply('txtInput=\'LTten\''); expect(element.attr('aria-invalid')).toBe('userSetValue'); }); + + it('should not attach if input is hidden', function() { + compileElement(''); + expect(element.attr('aria-invalid')).toBeUndefined(); + }); }); describe('aria-invalid when disabled', function() { From 63bc0a03ff038e405dda1886988b753f9266c74c Mon Sep 17 00:00:00 2001 From: edclements Date: Sun, 11 Sep 2016 12:25:29 +0100 Subject: [PATCH 2/2] fix(ngAria): clarify input type="hidden" spec --- test/ngAria/ariaSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ngAria/ariaSpec.js b/test/ngAria/ariaSpec.js index 117aeee674de..179e88050f42 100644 --- a/test/ngAria/ariaSpec.js +++ b/test/ngAria/ariaSpec.js @@ -421,7 +421,7 @@ describe('$aria', function() { expect(element.attr('aria-invalid')).toBe('userSetValue'); }); - it('should not attach if input is hidden', function() { + it('should not attach if input is type="hidden"', function() { compileElement(''); expect(element.attr('aria-invalid')).toBeUndefined(); });