@@ -798,17 +798,61 @@ function handleThemeButtonsBlur(e) {{
798
798
var active = document.activeElement;
799
799
var related = e.relatedTarget;
800
800
801
- if (active.id !== "themePicker " &&
801
+ if (active.id !== "theme-picker " &&
802
802
(!active.parentNode || active.parentNode.id !== "theme-choices") &&
803
803
(!related ||
804
- (related.id !== "themePicker " &&
804
+ (related.id !== "theme-picker " &&
805
805
(!related.parentNode || related.parentNode.id !== "theme-choices")))) {{
806
806
hideThemeButtonState();
807
807
}}
808
808
}}
809
809
810
+ function handleThemeKeyPress(e) {{
811
+ if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) {{ return; }}
812
+ if (!themePicker.parentNode.contains(e.target)) {{ return; }}
813
+ var active = document.activeElement;
814
+ switch (e.key) {{
815
+ case "ArrowUp":
816
+ e.preventDefault();
817
+ if (active.previousElementSibling && e.target.id !== "theme-picker") {{
818
+ active.previousElementSibling.focus();
819
+ }} else {{
820
+ showThemeButtonState();
821
+ themes.lastElementChild.focus();
822
+ }}
823
+ break;
824
+ case "ArrowDown":
825
+ e.preventDefault();
826
+ if (active.nextElementSibling && e.target.id !== "theme-picker") {{
827
+ active.nextElementSibling.focus();
828
+ }} else {{
829
+ showThemeButtonState();
830
+ themes.firstElementChild.focus();
831
+ }}
832
+ break;
833
+ case "Enter":
834
+ case "Return":
835
+ case "Space":
836
+ if (e.target.id === "theme-picker" && themes.style.display === "none") {{
837
+ e.preventDefault();
838
+ showThemeButtonState();
839
+ themes.firstElementChild.focus();
840
+ }}
841
+ break;
842
+ case "Home":
843
+ e.preventDefault();
844
+ themes.firstElementChild.focus();
845
+ break;
846
+ case "End":
847
+ e.preventDefault();
848
+ themes.lastElementChild.focus();
849
+ break;
850
+ }}
851
+ }};
852
+
810
853
themePicker.onclick = switchThemeButtonState;
811
854
themePicker.onblur = handleThemeButtonsBlur;
855
+ document.addEventListener("keydown", handleThemeKeyPress);
812
856
{}.forEach(function(item) {{
813
857
var but = document.createElement("button");
814
858
but.textContent = item;
0 commit comments