@@ -15,7 +15,11 @@ function makeHeading(elem, level) {
1515 elem . setAttribute ( "aria-level" , level ) ;
1616}
1717
18- function tweak ( target ) {
18+ function onSelectMenuItemChanged ( target ) {
19+ target . setAttribute ( "aria-checked" , target . classList . contains ( "selected" ) ? "true" : "false" ) ;
20+ }
21+
22+ function onNodeAdded ( target ) {
1923 var elem ;
2024 var res = document . location . href . match ( / g i t h u b .c o m \/ [ ^ \/ ] + \/ [ ^ \/ ] + \/ ( [ ^ \/ ] + ) ( \/ ? ) / ) ;
2125 if ( [ "issues" , "pull" ] . indexOf ( res [ 1 ] ) >= 0 && res [ 2 ] == "/" ) {
@@ -33,6 +37,20 @@ function tweak(target) {
3337 if ( elem = target . querySelector ( ".commit-title" ) )
3438 makeHeading ( elem , 2 ) ;
3539 }
40+
41+ // Site-wide stuff.
42+ for ( elem of target . querySelectorAll ( ".select-menu-item" ) ) {
43+ elem . setAttribute ( "role" , "menuitem" ) ;
44+ onSelectMenuItemChanged ( elem ) ;
45+ }
46+ }
47+
48+ function onClassModified ( target ) {
49+ var classes = target . classList ;
50+ if ( ! classes )
51+ return ;
52+ if ( classes . contains ( "select-menu-item" ) )
53+ onSelectMenuItemChanged ( target ) ;
3654}
3755
3856var observer = new MutationObserver ( function ( mutations ) {
@@ -42,15 +60,19 @@ var observer = new MutationObserver(function(mutations) {
4260 for ( var node of mutation . addedNodes ) {
4361 if ( node . nodeType != Node . ELEMENT_NODE )
4462 continue ;
45- tweak ( node ) ;
63+ onNodeAdded ( node ) ;
4664 }
65+ } else if ( mutation . type === "attributes" ) {
66+ if ( mutation . attributeName == "class" )
67+ onClassModified ( mutation . target ) ;
4768 }
4869 } catch ( e ) {
4970 // Catch exceptions for individual mutations so other mutations are still handled.
5071 GM_log ( "Exception while handling mutation: " + e ) ;
5172 }
5273 }
5374} ) ;
54- observer . observe ( document , { childList : true , subtree : true } ) ;
75+ observer . observe ( document , { childList : true , attributes : true ,
76+ subtree : true , attributeFilter : [ "class" ] } ) ;
5577
56- tweak ( document ) ;
78+ onNodeAdded ( document ) ;
0 commit comments