1- import { hideElem , showElem , toggleElem } from '../utils/dom.ts' ;
1+ import { hideElem , querySingleVisibleElem , showElem , toggleElem } from '../utils/dom.ts' ;
22import { htmlEscape } from 'escape-goat' ;
33import { fomanticQuery } from '../modules/fomantic/base.ts' ;
44import { sanitizeRepoName } from './repo-common.ts' ;
55
66const { appSubUrl} = window . config ;
77
88function 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' ) ;
1012 const elRepoTemplateDropdown = form . querySelector < HTMLInputElement > ( '#repo_template_search' ) ;
1113 const inputRepoTemplate = form . querySelector < HTMLInputElement > ( '#repo_template' ) ;
1214 const elTemplateUnits = form . querySelector ( '#template_units' ) ;
@@ -19,11 +21,23 @@ function initRepoNewTemplateSearch(form: HTMLFormElement) {
1921 inputRepoTemplate . addEventListener ( 'change' , checkTemplate ) ;
2022 checkTemplate ( ) ;
2123
22- const $dropdown = fomanticQuery ( elRepoTemplateDropdown ) ;
24+ const $repoOwnerDropdown = fomanticQuery ( elRepoOwnerDropdown ) ;
25+ const $repoTemplateDropdown = fomanticQuery ( elRepoTemplateDropdown ) ;
2326 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' , {
2539 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 } ` ,
2741 onResponse ( response : any ) {
2842 const results = [ ] ;
2943 results . push ( { name : '' , value : '' } ) ; // empty item means not using template
@@ -33,14 +47,14 @@ function initRepoNewTemplateSearch(form: HTMLFormElement) {
3347 value : String ( tmplRepo . repository . id ) ,
3448 } ) ;
3549 }
36- $dropdown . fomanticExt . onResponseKeepSelectedItem ( $dropdown , inputRepoTemplate . value ) ;
50+ $repoTemplateDropdown . fomanticExt . onResponseKeepSelectedItem ( $repoTemplateDropdown , inputRepoTemplate . value ) ;
3751 return { results} ;
3852 } ,
3953 cache : false ,
4054 } ,
4155 } ) ;
4256 } ;
43- inputRepoOwnerUid . addEventListener ( 'change ', onChangeOwner ) ;
57+ $repoOwnerDropdown . dropdown ( 'setting' , 'onChange ', onChangeOwner ) ;
4458 onChangeOwner ( ) ;
4559}
4660
0 commit comments