Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: options.js

Issue 29323156: Issue 2410 - Improved accessibility of dialogs in options page (Closed)
Left Patch Set: Rebased to f8e3e591fcbb Created Sept. 24, 2015, 10:37 a.m.
Right Patch Set: Created Oct. 2, 2015, 2:11 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « options.html ('k') | skin/options.css » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2015 Eyeo GmbH 3 * Copyright (C) 2006-2015 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 { 490 {
491 case "Escape": 491 case "Escape":
492 closeDialog(); 492 closeDialog();
493 break; 493 break;
494 case "Tab": 494 case "Tab":
495 if (e.shiftKey) 495 if (e.shiftKey)
496 { 496 {
497 if (e.target.classList.contains("focus-first")) 497 if (e.target.classList.contains("focus-first"))
498 { 498 {
499 e.preventDefault(); 499 e.preventDefault();
500 document.querySelector("#dialog .focus-last").focus(); 500 this.querySelector(".focus-last").focus();
saroyanm 2015/10/01 16:31:40 you already has the dialog element, I think you ca
Thomas Greiner 2015/10/02 10:27:28 Done.
501 } 501 }
502 } 502 }
503 else if (e.target.classList.contains("focus-last")) 503 else if (e.target.classList.contains("focus-last"))
504 { 504 {
505 e.preventDefault(); 505 e.preventDefault();
506 document.querySelector("#dialog .focus-first").focus(); 506 this.querySelector(".focus-first").focus();
507 } 507 }
508 break; 508 break;
509 } 509 }
510 }, false); 510 }, false);
511 } 511 }
512 512
513 var focusedBeforeDialog = null; 513 var focusedBeforeDialog = null;
514 function openDialog(name) 514 function openDialog(name)
515 { 515 {
516 var dialog = E("dialog"); 516 var dialog = E("dialog");
517 dialog.setAttribute("aria-hidden", false); 517 dialog.setAttribute("aria-hidden", false);
518 dialog.setAttribute("aria-labelledby", "dialog-title-" + name); 518 dialog.setAttribute("aria-labelledby", "dialog-title-" + name);
519 document.body.setAttribute("data-dialog", name); 519 document.body.setAttribute("data-dialog", name);
520 520
521 var defaultAction = document.querySelector("#dialog-content-" + name 521 var defaultFocus = document.querySelector("#dialog-content-" + name
saroyanm 2015/10/01 16:31:40 what about naming this defaultFocus or initialFocu
Thomas Greiner 2015/10/02 10:27:29 Done.
522 + " .default-action"); 522 + " .default-focus");
523 if (!defaultAction) 523 if (!defaultFocus)
524 defaultAction = document.querySelector("#dialog .focus-first"); 524 defaultFocus = dialog.querySelector(".focus-first");
saroyanm 2015/10/01 16:31:40 I think here you also can use dialog element "dial
Thomas Greiner 2015/10/02 10:27:29 Done.
525 focusedBeforeDialog = document.activeElement; 525 focusedBeforeDialog = document.activeElement;
526 defaultAction.focus(); 526 defaultFocus.focus();
527 } 527 }
528 528
529 function closeDialog() 529 function closeDialog()
530 { 530 {
531 var dialog = E("dialog"); 531 var dialog = E("dialog");
532 dialog.setAttribute("aria-hidden", true); 532 dialog.setAttribute("aria-hidden", true);
533 dialog.removeAttribute("aria-labelledby"); 533 dialog.removeAttribute("aria-labelledby");
534 document.body.removeAttribute("data-dialog"); 534 document.body.removeAttribute("data-dialog");
535 focusedBeforeDialog.focus(); 535 focusedBeforeDialog.focus();
536 } 536 }
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 filter: ["added", "loaded", "removed"] 792 filter: ["added", "loaded", "removed"]
793 }); 793 });
794 ext.backgroundPage.sendMessage( 794 ext.backgroundPage.sendMessage(
795 { 795 {
796 type: "subscriptions.listen", 796 type: "subscriptions.listen",
797 filter: ["added", "disabled", "homepage", "removed", "title"] 797 filter: ["added", "disabled", "homepage", "removed", "title"]
798 }); 798 });
799 799
800 window.addEventListener("DOMContentLoaded", onDOMLoaded, false); 800 window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
801 })(); 801 })();
LEFTRIGHT

Powered by Google App Engine
This is Rietveld