@@ -5,50 +5,50 @@ import {POST} from '../../modules/fetch.ts';
55
66const  { appSubUrl}  =  window . config ; 
77
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 )  { 
1010    showElem ( '.has-tls' ) ; 
1111  }  else  { 
1212    hideElem ( '.has-tls' ) ; 
1313  } 
1414} 
1515
16- export  function  initAdminCommon ( )  { 
16+ export  function  initAdminCommon ( ) :  void { 
1717  if  ( ! document . querySelector ( '.page-content.admin' ) )  return ; 
1818
1919  // check whether appUrl(ROOT_URL) is correct, if not, show an error message 
2020  checkAppUrl ( ) ; 
2121
2222  // New user 
2323  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' ) ; 
2828        hideElem ( '.non-local' ) ; 
2929        showElem ( '.local' ) ; 
30-         document . querySelector ( '#user_name' ) ?. focus ( ) ; 
30+         document . querySelector < HTMLInputElement > ( '#user_name' ) ?. focus ( ) ; 
3131
3232        if  ( this . getAttribute ( 'data-password' )  ===  'required' )  { 
3333          document . querySelector ( '#password' ) ?. setAttribute ( 'required' ,  'required' ) ; 
3434        } 
3535      }  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' ) ; 
3838        } 
39-         document . querySelector ( '#login_name' ) ?. setAttribute ( 'required' ,  'required' ) ; 
39+         document . querySelector < HTMLInputElement > ( '#login_name' ) ?. setAttribute ( 'required' ,  'required' ) ; 
4040        showElem ( '.non-local' ) ; 
4141        hideElem ( '.local' ) ; 
42-         document . querySelector ( '#login_name' ) ?. focus ( ) ; 
42+         document . querySelector < HTMLInputElement > ( '#login_name' ) ?. focus ( ) ; 
4343
44-         document . querySelector ( '#password' ) ?. removeAttribute ( 'required' ) ; 
44+         document . querySelector < HTMLInputElement > ( '#password' ) ?. removeAttribute ( 'required' ) ; 
4545      } 
4646    } ) ; 
4747  } 
4848
4949  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 )  { 
5252      showElem ( '.search-page-size' ) ; 
5353      for  ( const  el  of  searchPageSizeElements )  { 
5454        el . querySelector ( 'input' ) ?. setAttribute ( 'required' ,  'required' ) ; 
@@ -61,28 +61,28 @@ export function initAdminCommon() {
6161    } 
6262  } 
6363
64-   function  onOAuth2Change ( applyDefaultValues )  { 
64+   function  onOAuth2Change ( applyDefaultValues :  boolean )  { 
6565    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]' ) )  { 
6767      input . removeAttribute ( 'required' ) ; 
6868    } 
6969
70-     const  provider  =  document . querySelector ( '#oauth2_provider' ) . value ; 
70+     const  provider  =  document . querySelector < HTMLInputElement > ( '#oauth2_provider' ) . value ; 
7171    switch  ( provider )  { 
7272      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' ) ; 
7474        showElem ( '.open_id_connect_auto_discovery_url' ) ; 
7575        break ; 
7676      default : { 
77-         const  elProviderCustomUrlSettings  =  document . querySelector ( `#${ provider }  ) ; 
77+         const  elProviderCustomUrlSettings  =  document . querySelector < HTMLInputElement > ( `#${ provider }  ) ; 
7878        if  ( ! elProviderCustomUrlSettings )  break ;  // some providers do not have custom URL settings 
7979        const  couldChangeCustomURLs  =  elProviderCustomUrlSettings . getAttribute ( 'data-available' )  ===  'true' ; 
8080        const  mustProvideCustomURLs  =  elProviderCustomUrlSettings . getAttribute ( 'data-required' )  ===  'true' ; 
8181        if  ( couldChangeCustomURLs )  { 
8282          showElem ( '.oauth2_use_custom_url' ) ;  // show the checkbox 
8383        } 
8484        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 
8686        } 
8787        break ; 
8888      } 
@@ -91,17 +91,17 @@ export function initAdminCommon() {
9191  } 
9292
9393  function  onOAuth2UseCustomURLChange ( applyDefaultValues )  { 
94-     const  provider  =  document . querySelector ( '#oauth2_provider' ) . value ; 
94+     const  provider  =  document . querySelector < HTMLInputElement > ( '#oauth2_provider' ) . value ; 
9595    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]' ) )  { 
9797      input . removeAttribute ( 'required' ) ; 
9898    } 
9999
100100    const  elProviderCustomUrlSettings  =  document . querySelector ( `#${ provider }  ) ; 
101-     if  ( elProviderCustomUrlSettings  &&  document . querySelector ( '#oauth2_use_custom_url' ) . checked )  { 
101+     if  ( elProviderCustomUrlSettings  &&  document . querySelector < HTMLInputElement > ( '#oauth2_use_custom_url' ) . checked )  { 
102102      for  ( const  custom  of  [ 'token_url' ,  'auth_url' ,  'profile_url' ,  'email_url' ,  'tenant' ] )  { 
103103        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 ; 
105105        } 
106106        const  customInput  =  document . querySelector ( `#${ provider } ${ custom }  ) ; 
107107        if  ( customInput  &&  customInput . getAttribute ( 'data-available' )  ===  'true' )  { 
@@ -115,58 +115,59 @@ export function initAdminCommon() {
115115  } 
116116
117117  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 ) ; 
119120  } 
120121
121122  // 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  ( )  { 
124125      hideElem ( '.ldap, .dldap, .smtp, .pam, .oauth2, .has-tls, .search-page-size, .sspi' ) ; 
125126
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]' ) )  { 
127128        input . removeAttribute ( 'required' ) ; 
128129      } 
129130
130-       document . querySelector ( '.binddnrequired' ) ?. classList . remove ( 'required' ) ; 
131+       document . querySelector < HTMLDivElement > ( '.binddnrequired' ) ?. classList . remove ( 'required' ) ; 
131132
132133      const  authType  =  this . value ; 
133134      switch  ( authType )  { 
134135        case  '2' : // LDAP 
135136          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' ) )  { 
137138            input . setAttribute ( 'required' ,  'required' ) ; 
138139          } 
139140          document . querySelector ( '.binddnrequired' ) ?. classList . add ( 'required' ) ; 
140141          break ; 
141142        case  '3' : // SMTP 
142143          showElem ( '.smtp' ) ; 
143144          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' ) )  { 
145146            input . setAttribute ( 'required' ,  'required' ) ; 
146147          } 
147148          break ; 
148149        case  '4' : // PAM 
149150          showElem ( '.pam' ) ; 
150-           for  ( const  input  of  document . querySelectorAll ( '.pam input' ) )  { 
151+           for  ( const  input  of  document . querySelectorAll < HTMLInputElement > ( '.pam input' ) )  { 
151152            input . setAttribute ( 'required' ,  'required' ) ; 
152153          } 
153154          break ; 
154155        case  '5' : // LDAP 
155156          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' ) )  { 
157158            input . setAttribute ( 'required' ,  'required' ) ; 
158159          } 
159160          break ; 
160161        case  '6' : // OAuth2 
161162          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' ) )  { 
163164            input . setAttribute ( 'required' ,  'required' ) ; 
164165          } 
165166          onOAuth2Change ( true ) ; 
166167          break ; 
167168        case  '7' : // SSPI 
168169          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' ) )  { 
170171            input . setAttribute ( 'required' ,  'required' ) ; 
171172          } 
172173          break ; 
@@ -180,39 +181,39 @@ export function initAdminCommon() {
180181      } 
181182    } ) ; 
182183    $ ( '#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 ) ) ; 
187188    $ ( '.js-ldap-group-toggle' ) . on ( 'change' ,  onEnableLdapGroupsChange ) ; 
188189  } 
189190  // 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 ; 
192193    if  ( authType  ===  '2'  ||  authType  ===  '5' )  { 
193-       document . querySelector ( '#security_protocol' ) ?. addEventListener ( 'change' ,  onSecurityProtocolChange ) ; 
194+       document . querySelector < HTMLInputElement > ( '#security_protocol' ) ?. addEventListener ( 'change' ,  onSecurityProtocolChange ) ; 
194195      $ ( '.js-ldap-group-toggle' ) . on ( 'change' ,  onEnableLdapGroupsChange ) ; 
195196      onEnableLdapGroupsChange ( ) ; 
196197      if  ( authType  ===  '2' )  { 
197-         document . querySelector ( '#use_paged_search' ) ?. addEventListener ( 'change' ,  onUsePagedSearchChange ) ; 
198+         document . querySelector < HTMLInputElement > ( '#use_paged_search' ) ?. addEventListener ( 'change' ,  onUsePagedSearchChange ) ; 
198199      } 
199200    }  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 ) ) ; 
202203      onOAuth2Change ( false ) ; 
203204    } 
204205  } 
205206
206-   if  ( document . querySelector ( '.admin.authentication' ) )  { 
207+   if  ( document . querySelector < HTMLDivElement > ( '.admin.authentication' ) )  { 
207208    $ ( '#auth_name' ) . on ( 'input' ,  function  ( )  { 
208209      // 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 } ${ encodeURIComponent ( this . value ) }  ; 
210+       document . querySelector ( '#oauth2-callback-url' ) . textContent  =  `${ window . location . origin } ${ appSubUrl } ${ encodeURIComponent ( ( this   as   HTMLInputElement ) . value ) }  ; 
210211    } ) . trigger ( 'input' ) ; 
211212  } 
212213
213214  // 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' ) ; 
216217
217218    // Attach view detail modals 
218219    $ ( '.view-detail' ) . on ( 'click' ,  function  ( )  { 
@@ -223,7 +224,7 @@ export function initAdminCommon() {
223224    } ) ; 
224225
225226    // Select actions 
226-     const  checkboxes  =  document . querySelectorAll ( '.select.table .ui.checkbox input' ) ; 
227+     const  checkboxes  =  document . querySelectorAll < HTMLInputElement > ( '.select.table .ui.checkbox input' ) ; 
227228
228229    $ ( '.select.action' ) . on ( 'click' ,  function  ( )  { 
229230      switch  ( $ ( this ) . data ( 'action' ) )  { 
@@ -244,7 +245,7 @@ export function initAdminCommon() {
244245          break ; 
245246      } 
246247    } ) ; 
247-     document . querySelector ( '#delete-selection' ) ?. addEventListener ( 'click' ,  async  function  ( e )  { 
248+     document . querySelector < HTMLButtonElement > ( '#delete-selection' ) ?. addEventListener ( 'click' ,  async  function  ( e )  { 
248249      e . preventDefault ( ) ; 
249250      this . classList . add ( 'is-loading' ,  'disabled' ) ; 
250251      const  data  =  new  FormData ( ) ; 
0 commit comments