@@ -15,41 +15,45 @@ function quote_attr(str) {
15
15
return '"' + str . replace ( '"' , '\\"' ) + '"' ;
16
16
}
17
17
18
- function build_version_select ( release ) {
19
- let buf = [ '<select id="version_select">' ] ;
20
- const major_minor = release . split ( "." ) . slice ( 0 , 2 ) . join ( "." ) ;
21
-
22
- Object . entries ( all_versions ) . forEach ( function ( [ version , title ] ) {
18
+ const _create_version_select = ( release ) => {
19
+ const major_minor = release . split ( '.' ) . slice ( 0 , 2 ) . join ( '.' ) ;
20
+ const select = document . createElement ( 'select' ) ;
21
+ select . className = 'version-select' ;
22
+
23
+ for ( const [ version , title ] in all_versions ) {
24
+ const option = document . createElement ( 'option' ) ;
25
+ option . value = version ;
23
26
if ( version === major_minor ) {
24
- buf . push ( '<option value=' + quote_attr ( version ) + ' selected="selected">' + release + '</option>' ) ;
27
+ option . text = release ;
28
+ option . selected = true ;
25
29
} else {
26
- buf . push ( '< option value=' + quote_attr ( version ) + '>' + title + '</option>' ) ;
30
+ option . text = title ;
27
31
}
28
- } ) ;
29
-
30
- buf . push ( '</select>' ) ;
31
- return buf . join ( '' ) ;
32
- }
32
+ select . add ( option ) ;
33
+ }
33
34
34
- function build_language_select ( current_language ) {
35
- let buf = [ '<select id="language_select">' ] ;
35
+ return select ;
36
+ } ;
36
37
37
- Object . entries ( all_languages ) . forEach ( function ( [ language , title ] ) {
38
- if ( language === current_language ) {
39
- buf . push ( '<option value="' + language + '" selected="selected">' + title + '</option>' ) ;
40
- } else {
41
- buf . push ( '<option value="' + language + '">' + title + '</option>' ) ;
42
- }
43
- } ) ;
38
+ const _create_language_select = ( current_language ) => {
44
39
if ( ! ( current_language in all_languages ) ) {
45
- // In case we're browsing a language that is not yet in all_languages.
46
- buf . push ( '<option value="' + current_language + '" selected="selected">' +
47
- current_language + '</option>' ) ;
48
- all_languages [ current_language ] = current_language ;
40
+ // In case we are browsing a language that is not yet in all_languages.
41
+ all_languages [ current_language ] = current_language ;
49
42
}
50
- buf . push ( '</select>' ) ;
51
- return buf . join ( '' ) ;
52
- }
43
+
44
+ const select = document . createElement ( 'select' ) ;
45
+ select . className = 'language-select' ;
46
+
47
+ for ( const [ language , title ] in all_languages ) {
48
+ const option = document . createElement ( 'option' ) ;
49
+ option . value = language ;
50
+ option . text = title ;
51
+ if ( language === current_language ) option . selected = true ;
52
+ select . add ( option ) ;
53
+ }
54
+
55
+ return select ;
56
+ } ;
53
57
54
58
<
E864
div class="diff-text-inner">function navigate_to_first_existing ( urls ) {
55
59
// Navigate to the first existing URL in urls.
@@ -134,21 +138,23 @@ const _initialise_switchers = () => {
134
138
const language_segment = language_segment_from_url ( ) ;
135
139
const current_language = language_segment . replace ( / \/ + $ / g, '' ) || 'en' ;
136
140
137
- const version_select = build_version_select ( DOCUMENTATION_OPTIONS . VERSION ) ;
138
- document . querySelectorAll ( '.version_switcher_placeholder' ) . forEach ( ( placeholder ) => {
139
- placeholder . innerHTML = version_select ;
140
-
141
- let selectElement = placeholder . querySelector ( 'select' ) ;
142
- selectElement . addEventListener ( 'change' , on_version_switch ) ;
143
- } ) ;
144
-
145
- const language_select = build_language_select ( current_language ) ;
146
- document . querySelectorAll ( '.language_switcher_placeholder' ) . forEach ( ( placeholder ) => {
147
- placeholder . innerHTML = language_select ;
141
+ const version_select = _create_version_select ( DOCUMENTATION_OPTIONS . VERSION ) ;
142
+ document
143
+ . querySelectorAll ( '.version_switcher_placeholder' )
144
+ . forEach ( ( placeholder ) => {
145
+ const s = version_select . cloneNode ( true ) ;
146
+ s . addEventListener ( 'change' , on_version_switch ) ;
147
+ placeholder . append ( s ) ;
148
+ } ) ;
148
149
149
- let selectElement = placeholder . querySelector ( 'select' ) ;
150
- selectElement . addEventListener ( 'change' , on_language_switch ) ;
151
- } ) ;
150
+ const language_select = _create_language_select ( current_language ) ;
151
+ document
152
+ . querySelectorAll ( '.language_switcher_placeholder' )
153
+ . forEach ( ( placeholder ) => {
154
+ const s = language_select . cloneNode ( true ) ;
155
+ s . addEventListener ( 'change' , on_language_switch ) ;
156
+ placeholder . append ( s ) ;
157
+ } ) ;
152
158
} ;
153
159
154
160
if ( document . readyState !== 'loading' ) {
0 commit comments