@@ -5,50 +5,50 @@ import {POST} from '../../modules/fetch.ts';
5
5
6
6
const { appSubUrl} = window . config ;
7
7
8
- function onSecurityProtocolChange ( ) {
9
- if ( Number ( document . querySelector ( '#security_protocol' ) ?. value ) > 0 ) {
8
+ function onSecurityProtocolChange ( ) : void {
9
+ if ( Number ( document . querySelector < HTMLInputElement > ( '#security_protocol' ) ?. value ) > 0 ) {
10
10
showElem ( '.has-tls' ) ;
11
11
} else {
12
12
hideElem ( '.has-tls' ) ;
13
13
}
14
14
}
15
15
16
- export function initAdminCommon ( ) {
16
+ export function initAdminCommon ( ) : void {
17
17
if ( ! document . querySelector ( '.page-content.admin' ) ) return ;
18
18
19
19
// check whether appUrl(ROOT_URL) is correct, if not, show an error message
20
20
checkAppUrl ( ) ;
21
21
22
22
// New user
23
23
if ( $ ( '.admin.new.user' ) . length > 0 || $ ( '.admin.edit.user' ) . length > 0 ) {
24
- document . querySelector ( '#login_type' ) ?. addEventListener ( 'change' , function ( ) {
25
- if ( this . value ?. substring ( 0 , 1 ) === '0' ) {
26
- document . querySelector ( '#user_name' ) ?. removeAttribute ( 'disabled' ) ;
27
- document . querySelector ( '#login_name' ) ?. removeAttribute ( 'required' ) ;
24
+ document . querySelector < HTMLInputElement > ( '#login_type' ) ?. addEventListener ( 'change' , function ( ) {
25
+ if ( this . value ?. startsWith ( '0' ) ) {
26
+ document . querySelector < HTMLInputElement > ( '#user_name' ) ?. removeAttribute ( 'disabled' ) ;
27
+ document . querySelector < HTMLInputElement > ( '#login_name' ) ?. removeAttribute ( 'required' ) ;
28
28
hideElem ( '.non-local' ) ;
29
29
showElem ( '.local' ) ;
30
- document . querySelector ( '#user_name' ) ?. focus ( ) ;
30
+ document . querySelector < HTMLInputElement > ( '#user_name' ) ?. focus ( ) ;
31
31
32
32
if ( this . getAttribute ( 'data-password' ) === 'required' ) {
33
33
document . querySelector ( '#password' ) ?. setAttribute ( 'required' , 'required' ) ;
34
34
}
35
35
} else {
36
- if ( document . querySelector ( '.admin.edit.user' ) ) {
37
- document . querySelector ( '#user_name' ) ?. setAttribute ( 'disabled' , 'disabled' ) ;
36
+ if ( document . querySelector < HTMLDivElement > ( '.admin.edit.user' ) ) {
37
+ document . querySelector < HTMLInputElement > ( '#user_name' ) ?. setAttribute ( 'disabled' , 'disabled' ) ;
38
38
}
39
- document . querySelector ( '#login_name' ) ?. setAttribute ( 'required' , 'required' ) ;
39
+ document . querySelector < HTMLInputElement > ( '#login_name' ) ?. setAttribute ( 'required' , 'required' ) ;
40
40
showElem ( '.non-local' ) ;
41
41
hideElem ( '.local' ) ;
42
- document . querySelector ( '#login_name' ) ?. focus ( ) ;
42
+ document . querySelector < HTMLInputElement > ( '#login_name' ) ?. focus ( ) ;
43
43
44
- document . querySelector ( '#password' ) ?. removeAttribute ( 'required' ) ;
44
+ document . querySelector < HTMLInputElement > ( '#password' ) ?. removeAttribute ( 'required' ) ;
45
45
}
46
46
} ) ;
47
47
}
48
48
49
49
function onUsePagedSearchChange ( ) {
50
- const searchPageSizeElements = document . querySelectorAll ( '.search-page-size' ) ;
51
- if ( document . querySelector ( '#use_paged_search' ) . checked ) {
50
+ const searchPageSizeElements = document . querySelectorAll < HTMLDivElement > ( '.search-page-size' ) ;
51
+ if ( document . querySelector < HTMLInputElement > ( '#use_paged_search' ) . checked ) {
52
52
showElem ( '.search-page-size' ) ;
53
53
for ( const el of searchPageSizeElements ) {
54
54
el . querySelector ( 'input' ) ?. setAttribute ( 'required' , 'required' ) ;
@@ -61,28 +61,28 @@ export function initAdminCommon() {
61
61
}
62
62
}
63
63
64
- function onOAuth2Change ( applyDefaultValues ) {
64
+ function onOAuth2Change ( applyDefaultValues : boolean ) {
65
65
hideElem ( '.open_id_connect_auto_discovery_url, .oauth2_use_custom_url' ) ;
66
- for ( const input of document . querySelectorAll ( '.open_id_connect_auto_discovery_url input[required]' ) ) {
66
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.open_id_connect_auto_discovery_url input[required]' ) ) {
67
67
input . removeAttribute ( 'required' ) ;
68
68
}
69
69
70
- const provider = document . querySelector ( '#oauth2_provider' ) . value ;
70
+ const provider = document . querySelector < HTMLInputElement > ( '#oauth2_provider' ) . value ;
71
71
switch ( provider ) {
72
72
case 'openidConnect' :
73
- document . querySelector ( '.open_id_connect_auto_discovery_url input' ) . setAttribute ( 'required' , 'required' ) ;
73
+ document . querySelector < HTMLInputElement > ( '.open_id_connect_auto_discovery_url input' ) . setAttribute ( 'required' , 'required' ) ;
74
74
showElem ( '.open_id_connect_auto_discovery_url' ) ;
75
75
break ;
76
76
default : {
77
- const elProviderCustomUrlSettings = document . querySelector ( `#${ provider } _customURLSettings` ) ;
77
+ const elProviderCustomUrlSettings = document . querySelector < HTMLInputElement > ( `#${ provider } _customURLSettings` ) ;
78
78
if ( ! elProviderCustomUrlSettings ) break ; // some providers do not have custom URL settings
79
79
const couldChangeCustomURLs = elProviderCustomUrlSettings . getAttribute ( 'data-available' ) === 'true' ;
80
80
const mustProvideCustomURLs = elProviderCustomUrlSettings . getAttribute ( 'data-required' ) === 'true' ;
81
81
if ( couldChangeCustomURLs ) {
82
82
showElem ( '.oauth2_use_custom_url' ) ; // show the checkbox
83
83
}
84
84
if ( mustProvideCustomURLs ) {
85
- document . querySelector ( '#oauth2_use_custom_url' ) . checked = true ; // make the checkbox checked
85
+ document . querySelector < HTMLInputElement > ( '#oauth2_use_custom_url' ) . checked = true ; // make the checkbox checked
86
86
}
87
87
break ;
88
88
}
@@ -91,17 +91,17 @@ export function initAdminCommon() {
91
91
}
92
92
93
93
function onOAuth2UseCustomURLChange ( applyDefaultValues ) {
94
- const provider = document . querySelector ( '#oauth2_provider' ) . value ;
94
+ const provider = document . querySelector < HTMLInputElement > ( '#oauth2_provider' ) . value ;
95
95
hideElem ( '.oauth2_use_custom_url_field' ) ;
96
- for ( const input of document . querySelectorAll ( '.oauth2_use_custom_url_field input[required]' ) ) {
96
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.oauth2_use_custom_url_field input[required]' ) ) {
97
97
input . removeAttribute ( 'required' ) ;
98
98
}
99
99
100
100
const elProviderCustomUrlSettings = document . querySelector ( `#${ provider } _customURLSettings` ) ;
101
- if ( elProviderCustomUrlSettings && document . querySelector ( '#oauth2_use_custom_url' ) . checked ) {
101
+ if ( elProviderCustomUrlSettings && document . querySelector < HTMLInputElement > ( '#oauth2_use_custom_url' ) . checked ) {
102
102
for ( const custom of [ 'token_url' , 'auth_url' , 'profile_url' , 'email_url' , 'tenant' ] ) {
103
103
if ( applyDefaultValues ) {
104
- document . querySelector ( `#oauth2_${ custom } ` ) . value = document . querySelector ( `#${ provider } _${ custom } ` ) . value ;
104
+ document . querySelector < HTMLInputElement > ( `#oauth2_${ custom } ` ) . value = document . querySelector < HTMLInputElement > ( `#${ provider } _${ custom } ` ) . value ;
105
105
}
106
106
const customInput = document . querySelector ( `#${ provider } _${ custom } ` ) ;
107
107
if ( customInput && customInput . getAttribute ( 'data-available' ) === 'true' ) {
@@ -115,58 +115,59 @@ export function initAdminCommon() {
115
115
}
116
116
117
117
function onEnableLdapGroupsChange ( ) {
118
- toggleElem ( document . querySelector ( '#ldap-group-options' ) , $ ( '.js-ldap-group-toggle' ) [ 0 ] . checked ) ;
118
+ const checked = document . querySelector < HTMLInputElement > ( '.js-ldap-group-toggle' ) ?. checked ;
119
+ toggleElem ( document . querySelector ( '#ldap-group-options' ) , checked ) ;
119
120
}
120
121
121
122
// New authentication
122
- if ( document . querySelector ( '.admin.new.authentication' ) ) {
123
- document . querySelector ( '#auth_type' ) ?. addEventListener ( 'change' , function ( ) {
123
+ if ( document . querySelector < HTMLDivElement > ( '.admin.new.authentication' ) ) {
124
+ document . querySelector < HTMLInputElement > ( '#auth_type' ) ?. addEventListener ( 'change' , function ( ) {
124
125
hideElem ( '.ldap, .dldap, .smtp, .pam, .oauth2, .has-tls, .search-page-size, .sspi' ) ;
125
126
126
- for ( const input of document . querySelectorAll ( '.ldap input[required], .binddnrequired input[required], .dldap input[required], .smtp input[required], .pam input[required], .oauth2 input[required], .has-tls input[required], .sspi input[required]' ) ) {
127
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.ldap input[required], .binddnrequired input[required], .dldap input[required], .smtp input[required], .pam input[required], .oauth2 input[required], .has-tls input[required], .sspi input[required]' ) ) {
127
128
input . removeAttribute ( 'required' ) ;
128
129
}
129
130
130
- document . querySelector ( '.binddnrequired' ) ?. classList . remove ( 'required' ) ;
131
+ document . querySelector < HTMLDivElement > ( '.binddnrequired' ) ?. classList . remove ( 'required' ) ;
131
132
132
133
const authType = this . value ;
133
134
switch ( authType ) {
134
135
case '2' : // LDAP
135
136
showElem ( '.ldap' ) ;
136
- for ( const input of document . querySelectorAll ( '.binddnrequired input, .ldap div.required:not(.dldap) input' ) ) {
137
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.binddnrequired input, .ldap div.required:not(.dldap) input' ) ) {
137
138
input . setAttribute ( 'required' , 'required' ) ;
138
139
}
139
140
document . querySelector ( '.binddnrequired' ) ?. classList . add ( 'required' ) ;
140
141
break ;
141
142
case '3' : // SMTP
142
143
showElem ( '.smtp' ) ;
143
144
showElem ( '.has-tls' ) ;
144
- for ( const input of document . querySelectorAll ( '.smtp div.required input, .has-tls' ) ) {
145
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.smtp div.required input, .has-tls' ) ) {
145
146
input . setAttribute ( 'required' , 'required' ) ;
146
147
}
147
148
break ;
148
149
case '4' : // PAM
149
150
showElem ( '.pam' ) ;
150
- for ( const input of document . querySelectorAll ( '.pam input' ) ) {
151
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.pam input' ) ) {
151
152
input . setAttribute ( 'required' , 'required' ) ;
152
153
}
153
154
break ;
154
155
case '5' : // LDAP
155
156
showElem ( '.dldap' ) ;
156
- for ( const input of document . querySelectorAll ( '.dldap div.required:not(.ldap) input' ) ) {
157
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.dldap div.required:not(.ldap) input' ) ) {
157
158
input . setAttribute ( 'required' , 'required' ) ;
158
159
}
159
160
break ;
160
161
case '6' : // OAuth2
161
162
showElem ( '.oauth2' ) ;
162
- for ( const input of document . querySelectorAll ( '.oauth2 div.required:not(.oauth2_use_custom_url,.oauth2_use_custom_url_field,.open_id_connect_auto_discovery_url) input' ) ) {
163
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.oauth2 div.required:not(.oauth2_use_custom_url,.oauth2_use_custom_url_field,.open_id_connect_auto_discovery_url) input' ) ) {
163
164
input . setAttribute ( 'required' , 'required' ) ;
164
165
}
165
166
onOAuth2Change ( true ) ;
166
167
break ;
167
168
case '7' : // SSPI
168
169
showElem ( '.sspi' ) ;
169
- for ( const input of document . querySelectorAll ( '.sspi div.required input' ) ) {
170
+ for ( const input of document . querySelectorAll < HTMLInputElement > ( '.sspi div.required input' ) ) {
170
171
input . setAttribute ( 'required' , 'required' ) ;
171
172
}
172
173
break ;
@@ -180,39 +181,39 @@ export function initAdminCommon() {
180
181
}
181
182
} ) ;
182
183
$ ( '#auth_type' ) . trigger ( 'change' ) ;
183
- document . querySelector ( '#security_protocol' ) ?. addEventListener ( 'change' , onSecurityProtocolChange ) ;
184
- document . querySelector ( '#use_paged_search' ) ?. addEventListener ( 'change' , onUsePagedSearchChange ) ;
185
- document . querySelector ( '#oauth2_provider' ) ?. addEventListener ( 'change' , ( ) => onOAuth2Change ( true ) ) ;
186
- document . querySelector ( '#oauth2_use_custom_url' ) ?. addEventListener ( 'change' , ( ) => onOAuth2UseCustomURLChange ( true ) ) ;
184
+ document . querySelector < HTMLInputElement > ( '#security_protocol' ) ?. addEventListener ( 'change' , onSecurityProtocolChange ) ;
185
+ document . querySelector < HTMLInputElement > ( '#use_paged_search' ) ?. addEventListener ( 'change' , onUsePagedSearchChange ) ;
186
+ document . querySelector < HTMLInputElement > ( '#oauth2_provider' ) ?. addEventListener ( 'change' , ( ) => onOAuth2Change ( true ) ) ;
187
+ document . querySelector < HTMLInputElement > ( '#oauth2_use_custom_url' ) ?. addEventListener ( 'change' , ( ) => onOAuth2UseCustomURLChange ( true ) ) ;
187
188
$ ( '.js-ldap-group-toggle' ) . on ( 'change' , onEnableLdapGroupsChange ) ;
188
189
}
189
190
// Edit authentication
190
- if ( document . querySelector ( '.admin.edit.authentication' ) ) {
191
- const authType = document . querySelector ( '#auth_type' ) ?. value ;
191
+ if ( document . querySelector < HTMLDivElement > ( '.admin.edit.authentication' ) ) {
192
+ const authType = document . querySelector < HTMLInputElement > ( '#auth_type' ) ?. value ;
192
193
if ( authType === '2' || authType === '5' ) {
193
- document . querySelector ( '#security_protocol' ) ?. addEventListener ( 'change' , onSecurityProtocolChange ) ;
194
+ document . querySelector < HTMLInputElement > ( '#security_protocol' ) ?. addEventListener ( 'change' , onSecurityProtocolChange ) ;
194
195
$ ( '.js-ldap-group-toggle' ) . on ( 'change' , onEnableLdapGroupsChange ) ;
195
196
onEnableLdapGroupsChange ( ) ;
196
197
if ( authType === '2' ) {
197
- document . querySelector ( '#use_paged_search' ) ?. addEventListener ( 'change' , onUsePagedSearchChange ) ;
198
+ document . querySelector < HTMLInputElement > ( '#use_paged_search' ) ?. addEventListener ( 'change' , onUsePagedSearchChange ) ;
198
199
}
199
200
} else if ( authType === '6' ) {
200
- document . querySelector ( '#oauth2_provider' ) ?. addEventListener ( 'change' , ( ) => onOAuth2Change ( true ) ) ;
201
- document . querySelector ( '#oauth2_use_custom_url' ) ?. addEventListener ( 'change' , ( ) => onOAuth2UseCustomURLChange ( false ) ) ;
201
+ document . querySelector < HTMLInputElement > ( '#oauth2_provider' ) ?. addEventListener ( 'change' , ( ) => onOAuth2Change ( true ) ) ;
202
+ document . querySelector < HTMLInputElement > ( '#oauth2_use_custom_url' ) ?. addEventListener ( 'change' , ( ) => onOAuth2UseCustomURLChange ( false ) ) ;
202
203
onOAuth2Change ( false ) ;
203
204
}
204
205
}
205
206
206
- if ( document . querySelector ( '.admin.authentication' ) ) {
207
+ if ( document . querySelector < HTMLDivElement > ( '.admin.authentication' ) ) {
207
208
$ ( '#auth_name' ) . on ( 'input' , function ( ) {
208
209
// appSubUrl is either empty or is a path that starts with `/` and doesn't have a trailing slash.
209
- document . querySelector ( '#oauth2-callback-url' ) . textContent = `${ window . location . origin } ${ appSubUrl } /user/oauth2/${ encodeURIComponent ( this . value ) } /callback` ;
210
+ document . querySelector ( '#oauth2-callback-url' ) . textContent = `${ window . location . origin } ${ appSubUrl } /user/oauth2/${ encodeURIComponent ( ( this as HTMLInputElement ) . value ) } /callback` ;
210
211
} ) . trigger ( 'input' ) ;
211
212
}
212
213
213
214
// Notice
214
- if ( document . querySelector ( '.admin.notice' ) ) {
215
- const detailModal = document . querySelector ( '#detail-modal' ) ;
215
+ if ( document . querySelector < HTMLDivElement > ( '.admin.notice' ) ) {
216
+ const detailModal = document . querySelector < HTMLDivElement > ( '#detail-modal' ) ;
216
217
217
218
// Attach view detail modals
218
219
$ ( '.view-detail' ) . on ( 'click' , function ( ) {
@@ -223,7 +224,7 @@ export function initAdminCommon() {
223
224
} ) ;
224
225
225
226
// Select actions
226
- const checkboxes = document . querySelectorAll ( '.select.table .ui.checkbox input' ) ;
227
+ const checkboxes = document . querySelectorAll < HTMLInputElement > ( '.select.table .ui.checkbox input' ) ;
227
228
228
229
$ ( '.select.action' ) . on ( 'click' , function ( ) {
229
230
switch ( $ ( this ) . data ( 'action' ) ) {
@@ -244,7 +245,7 @@ export function initAdminCommon() {
244
245
break ;
245
246
}
246
247
} ) ;
247
- document . querySelector ( '#delete-selection' ) ?. addEventListener ( 'click' , async function ( e ) {
248
+ document . querySelector < HTMLButtonElement > ( '#delete-selection' ) ?. addEventListener ( 'click' , async function ( e ) {
248
249
e . preventDefault ( ) ;
249
250
this . classList . add ( 'is-loading' , 'disabled' ) ;
250
251
const data = new FormData ( ) ;
0 commit comments