1
- import { hideElem , showElem , toggleElem } from '../utils/dom.ts' ;
1
+ import { hideElem , querySingleVisibleElem , showElem , toggleElem } from '../utils/dom.ts' ;
2
2
import { htmlEscape } from 'escape-goat' ;
3
3
import { fomanticQuery } from '../modules/fomantic/base.ts' ;
4
4
import { sanitizeRepoName } from './repo-common.ts' ;
5
5
6
6
const { appSubUrl} = window . config ;
7
7
8
8
function initRepoNewTemplateSearch ( form : HTMLFormElement ) {
9
- const inputRepoOwnerUid = form . querySelector < HTMLInputElement > ( '#uid' ) ;
9
+ const elSubmitButton = querySingleVisibleElem < HTMLInputElement > ( form , '.ui.primary.button' ) ;
10
+ const elCreateRepoErrorMessage = form . querySelector ( '#create-repo-error-message' ) ;
11
+ const elRepoOwnerDropdown = form . querySelector ( '#repo_owner_dropdown' ) ;
10
12
const elRepoTemplateDropdown = form . querySelector < HTMLInputElement > ( '#repo_template_search' ) ;
11
13
const inputRepoTemplate = form . querySelector < HTMLInputElement > ( '#repo_template' ) ;
12
14
const elTemplateUnits = form . querySelector ( '#template_units' ) ;
@@ -19,11 +21,23 @@ function initRepoNewTemplateSearch(form: HTMLFormElement) {
19
21
inputRepoTemplate . addEventListener ( 'change' , checkTemplate ) ;
20
22
checkTemplate ( ) ;
21
23
22
- const $dropdown = fomanticQuery ( elRepoTemplateDropdown ) ;
24
+ const $repoOwnerDropdown = fomanticQuery ( elRepoOwnerDropdown ) ;
25
+ const $repoTemplateDropdown = fomanticQuery ( elRepoTemplateDropdown ) ;
23
26
const onChangeOwner = function ( ) {
24
- $dropdown . dropdown ( 'setting' , {
27
+ const ownerId = $repoOwnerDropdown . dropdown ( 'get value' ) ;
28
+ const $ownerItem = $repoOwnerDropdown . dropdown ( 'get item' , ownerId ) ;
29
+ hideElem ( elCreateRepoErrorMessage ) ;
30
+ elSubmitButton . disabled = false ;
31
+ if ( $ownerItem ?. length ) {
32
+ const elOwnerItem = $ownerItem [ 0 ] ;
33
+ elCreateRepoErrorMessage . textContent = elOwnerItem . getAttribute ( 'data-create-repo-disallowed-prompt' ) ?? '' ;
34
+ const hasError = Boolean ( elCreateRepoErrorMessage . textContent ) ;
35
+ toggleElem ( elCreateRepoErrorMessage , hasError ) ;
36
+ elSubmitButton . disabled = hasError ;
37
+ }
38
+ $repoTemplateDropdown . dropdown ( 'setting' , {
25
39
apiSettings : {
26
- url : `${ appSubUrl } /repo/search?q={query}&template=true&priority_owner_id=${ inputRepoOwnerUid . value } ` ,
40
+ url : `${ appSubUrl } /repo/search?q={query}&template=true&priority_owner_id=${ ownerId } ` ,
27
41
onResponse ( response : any ) {
28
42
const results = [ ] ;
29
43
results . push ( { name : '' , value : '' } ) ; // empty item means not using template
@@ -33,14 +47,14 @@ function initRepoNewTemplateSearch(form: HTMLFormElement) {
33
47
value : String ( tmplRepo . repository . id ) ,
34
48
} ) ;
35
49
}
36
- $dropdown . fomanticExt . onResponseKeepSelectedItem ( $dropdown , inputRepoTemplate . value ) ;
50
+ $repoTemplateDropdown . fomanticExt . onResponseKeepSelectedItem ( $repoTemplateDropdown , inputRepoTemplate . value ) ;
37
51
return { results} ;
38
52
} ,
39
53
cache : false ,
40
54
} ,
41
55
} ) ;
42
56
} ;
43
- inputRepoOwnerUid . addEventListener ( 'change ', onChangeOwner ) ;
57
+ $repoOwnerDropdown . dropdown ( 'setting' , 'onChange ', onChangeOwner ) ;
44
58
onChangeOwner ( ) ;
45
59
}
46
60
0 commit comments