@@ -54,28 +54,46 @@ for (var i = 0; i < toggleLinks.length; i++) {
54
54
}
55
55
56
56
function toggle ( ) {
57
- var target = document . querySelector ( '[data-namespacecontent="' + this . dataset . namespacetarget + '"]' ) ;
58
- var caret = this . getElementsByClassName ( 'caret' ) [ 0 ] ;
57
+ toggleSection ( this . dataset . namespacetarget ) ;
58
+ }
59
+
60
+ function toggleSection ( id , yn ) {
61
+ var target = document . querySelector ( '[data-namespacecontent="' + id + '"]' ) ;
62
+ if ( ! target ) {
63
+ return ;
64
+ }
59
65
var klass = 'section-nested' ;
60
- if ( target . classList . contains ( klass ) ) {
66
+ yn = typeof yn === 'boolean' ? yn : target . classList . contains ( klass ) ;
67
+ if ( yn ) {
61
68
target . classList . remove ( klass ) ;
62
- caret . innerHTML = '+' ;
63
69
} else {
64
70
target . classList . add ( klass ) ;
65
- caret . innerHTML = '-' ;
66
71
}
67
72
}
68
73
69
- function showHashTarget ( targetId ) {
70
- var hashTarget = document . getElementById ( targetId ) ;
71
- // new target is hidden
72
- if ( hashTarget && hashTarget . offsetHeight === 0 &&
73
- hashTarget . parentNode . parentNode . classList . contains ( 'display-none' ) ) {
74
- hashTarget . parentNode . parentNode . classList . remove ( 'display-none' ) ;
74
+ var items = document . getElementsByClassName ( 'toggle-sibling' ) ;
75
+ for ( var j = 0 ; j < items . length ; j ++ ) {
76
+ items [ j ] . addEventListener ( 'click' , toggleSibling ) ;
77
+ }
78
+
79
+ function toggleSibling ( ) {
80
+ var stepSibling = this . parentNode . getElementsByClassName ( 'toggle-target' ) [ 0 ] ;
81
+ var icon = this . getElementsByClassName ( 'icon' ) [ 0 ] ;
82
+ var klass = 'display-none' ;
83
+ if ( stepSibling . classList . contains ( klass ) ) {
84
+ stepSibling . classList . remove ( klass ) ;
85
+ icon . innerHTML = '▾' ;
86
+ } else {
87
+ stepSibling . classList . add ( klass ) ;
88
+ icon . innerHTML = '▸' ;
75
89
}
76
90
}
77
91
78
- window . addEventListener ( 'hashchange' , function ( ) {
92
+ function showHashTarget ( targetId ) {
93
+ toggleSection ( targetId , false ) ;
94
+ }
95
+
96
+ window . addEventListener ( 'hashchange' , function ( ) {
79
97
showHashTarget ( location . hash . substring ( 1 ) ) ;
80
98
} ) ;
81
99
0 commit comments