summaryrefslogtreecommitdiffstats
path: root/extensions/BugModal/web
diff options
context:
space:
mode:
authorDavid Lawrence <dkl@mozilla.com>2017-02-17 18:08:17 +0100
committerDavid Lawrence <dkl@mozilla.com>2017-02-17 18:08:17 +0100
commite184203da9763fc5d7c9363b7ebb950b07c7c3da (patch)
tree1886ff7e9238e79b8d5f1bfdd7f5bdcdf2909584 /extensions/BugModal/web
parentd0cc4c7d97a6a7e058de90a0b8269587758f085b (diff)
downloadbugzilla-e184203da9763fc5d7c9363b7ebb950b07c7c3da.tar.gz
bugzilla-e184203da9763fc5d7c9363b7ebb950b07c7c3da.tar.xz
Bug 1280397 - [a11y] Make the component, product, and other latches accessible
Diffstat (limited to 'extensions/BugModal/web')
-rw-r--r--extensions/BugModal/web/bug_modal.js81
1 files changed, 56 insertions, 25 deletions
diff --git a/extensions/BugModal/web/bug_modal.js b/extensions/BugModal/web/bug_modal.js
index 8d908873e..25a9d1a73 100644
--- a/extensions/BugModal/web/bug_modal.js
+++ b/extensions/BugModal/web/bug_modal.js
@@ -163,20 +163,38 @@ $(function() {
// product/component info
$('.spin-toggle, #product-latch, #component-latch')
.click(function(event) {
- event.preventDefault();
- var latch = $($(event.target).data('latch'));
- var el_for = $($(event.target).data('for'));
-
- if (latch.data('expanded')) {
- latch.data('expanded', false).html('&#9656;');
- el_for.hide();
- }
- else {
- latch.data('expanded', true).html('&#9662;');
- el_for.show();
+ spin_toggle(event);
+ }).keydown(function(event) {
+ // allow space or enter to toggle visibility
+ if (event.keyCode == 13 || event.keyCode == 32) {
+ spin_toggle(event);
}
});
+ function spin_toggle(event) {
+ event.preventDefault();
+ var type = $(event.target).data('for');
+ var latch = $('#' + type + '-latch');
+ var name = $('#' + type + '-name');
+ var info = $('#' + type + '-info');
+ var label = latch.attr('aria-label');
+
+ if (latch.data('expanded')) {
+ label = label.replace(/^hide/, 'show');
+ latch.data('expanded', false).html('&#9656;');
+ latch.attr('aria-expanded', false);
+ info.hide();
+ }
+ else {
+ label = label.replace(/^show/, 'hide');
+ latch.data('expanded', true).html('&#9662;');
+ latch.attr('aria-expanded', true);
+ info.show();
+ }
+ latch.attr('aria-label', label);
+ name.attr('title', label);
+ }
+
// cc list
function ccListLoading() {
@@ -230,24 +248,37 @@ $(function() {
$('#cc-summary').addClass('cc-loadable');
$('#cc-latch, #cc-summary')
.click(function(event) {
- event.preventDefault();
- var latch = $('#cc-latch');
-
- if (latch.data('expanded')) {
- latch.data('expanded', false).html('&#9656;');
- $('#cc-list').hide();
- }
- else {
- latch.data('expanded', true).html('&#9662;');
- $('#cc-list').show();
- if (!latch.data('fetched')) {
- ccListLoading();
- ccListUpdate();
- }
+ cc_toggle(event);
+ }).keydown(function(event) {
+ // allow space or enter to toggle visibility
+ if (event.keyCode == 13 || event.keyCode == 32) {
+ cc_toggle(event);
}
});
}
+ function cc_toggle(event) {
+ event.preventDefault();
+ var latch = $('#cc-latch');
+ var label = latch.attr('aria-label');
+ if (latch.data('expanded')) {
+ label = label.replace(/^hide/, 'show');
+ latch.data('expanded', false).html('&#9656;');
+ $('#cc-list').hide();
+ }
+ else {
+ latch.data('expanded', true).html('&#9662;');
+ label = label.replace(/^show/, 'hide');
+ $('#cc-list').show();
+ if (!latch.data('fetched')) {
+ ccListLoading();
+ ccListUpdate();
+ }
+ }
+ latch.attr('aria-label', label);
+ $('#cc-summary').attr('aria-label', label);
+ }
+
// copy summary to clipboard
function clipboardSummary() {